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