I have a question about how to pass an argument that is intended to contain quotes into a program for use in an if statement.
When I run that code, the output is:
What I am trying to produce is:
I also tried
How can I correctly pass and evaluate this string with embedded quotes within the if statement in my Stata program? I'd like to keep the argument in the format var == "value" and not simply pass the intended value only, so that I can modify the if statement clause flexibly (e.g., test_program "zipcode == 12345 | gender == "Male"").
Thanks for any advice!
Code:
clear input str6 gender str2 state zipcode "Male" "WA" 12345 "Female" "VA" 54321 end capture program drop test_program program define test_program args condition disp "`condition'" if `condition' { di "`condition' is true" } else { di "`condition' is false" } end test_program "zipcode == 12345" test_program "gender == "Male""
. test_program "zipcode == 12345"
zipcode == 12345
zipcode == 12345 is true
. test_program "gender == "Male""
gender ==
invalid syntax
zipcode == 12345
zipcode == 12345 is true
. test_program "gender == "Male""
gender ==
invalid syntax
. test_program "gender == "Male""
gender == "Male"
gender == "Male" is true
gender == "Male"
gender == "Male" is true
. test_program `"gender == "Male""'
gender == Male"" invalid name
gender == Male"" invalid name
. test_program "gender == `""'Male`""'"
gender ==
invalid syntax
gender ==
invalid syntax
. test_program `"gender == `""'Male`""''
gender == `'Male`''
gender == `'Male`'' is false
gender == `'Male`''
gender == `'Male`'' is false
Thanks for any advice!
Comment