2
我创建了下列程序,它不能很好地与字符串表达式配合使用。我一直无法找出正确的调整来添加我的语法定义以使其按预期工作。自定义程序 - 调试语法
我觉得这个东西很小,但是我还没有把它弄清楚。或者,引用一些有用的东西也将被赞赏。
包括程序和一些产生相同错误的虚拟代码。
谢谢!
cap program drop repl_conf
program define repl_conf
syntax varlist =exp [if]
qui count `if'
if r(N) ==0 {
di as err "NO MATCHES -- NO REPLACE"
exit 9
}
else {
noi dis "SUCCESSFUL REPLACE of >=1 OBS -- " r(N) " OBS replaced"
qui replace `varlist' `exp' `if'
}
end
sysuse auto, clear
repl_conf length=999 if length==233
repl_conf make="ZZZ" if make=="AMC Concord"
type mismatch
r(109);
我认为这里的'exp'只能是一个带数字结果的表达式。当提供一个字符串结果时,你的程序不会传递'syntax'语句。 –
我想你需要使用'gettoken'来逐个剥离命令行中的令牌。 –
这似乎是一个不幸的功能。 'replace'和'gen'都使用字符串或数字'exp's,但它们都是内置命令。 –