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,但它們都是內置命令。 –