質問
SPSSマクロが値を返すことができるとは思わないので、次のような値を割り当てる代わりに VIXL3 = !getLastAvail target=VIX level=3
私はこのようなことをする必要があると考えました:
/* computes last available entry of target at given level */
define !compLastAvail(name !Tokens(1) /target !Tokens(1) /level !Tokens(1))
compute tmpid= $casenum.
dataset copy tmpset1.
select if not miss(!target).
compute !name= lag(!target, !level).
match files /file= * /file= tmpset1 /by tmpid.
exec.
delete variables tmpid.
dataset close tmpset1.
!enddefine.
/* compute last values */
!compLastAvail name="VIXCL3" target=VIXC level=3.
compute !name = ...
問題がある場所です。
これはどのように適切に行う必要がありますか?上記の返品:
>Error # 4285 in column 9. Text: VIXCL3
>Incorrect variable name: either the name is more than 64 characters, or it is
>not defined by a previous command.
>Execution of this command stops.
解決
トークンをマクロに渡すと、文字通り解釈されます。したがって、指定するとき
!compLastAvail name="VIXCL3"
対応するものに渡されます compute
声明として "VIXCL3"
, 、引用符のない単なる変数名の代わりに(例: VIXCL3
).
他の2つの一般的なアドバイス。
コマンドを行う場合
set mprint on
マクロを実行する前に、トークンがマクロにどのように渡されるかがわかります。この例では、その一歩を踏み出した場合、問題のある声明とエラーメッセージが表示されることがわかりました。トークンで見積マークを使用することがあります。
!QUOTE
と!UNQUOTE
便利です。
所属していません StackOverflow