私はSASを初めて使用し、単純なIf-Then-elseをいつ使用すべきか、%IF-%THEN-%ELSEをいつ使用すべきかを判断するのに苦労しています。以下のサンプルコードとして:
%let inFile = %scan(&sysparm, 1, " ");
%macro read_data(infile);
data want;
infile "&infile" LRECL=1000;
retain fdate;
if _n_ = 1 then do;
input Agency $ Status $ Num $ fdate sdate;
end;
else do;
%if fdate < 20130428 %then
input
@1 poolno $6.
@7 factor 9.8 @;
%else
input
@1 rectype $1
@3 poolno $6.
@9 factor 9.8 @;
@18 pfactor 9.8;
output;
end;
drop Agency Status Num sdate;
run;
proc print data=want;
run;
%mend read_data;
%read_data(&inFile);
最初の行(ヘッダー)を取得し、パラメーターfdateを取得しようとしています。このパラメーターの値に基づいて、後続の入力行を異なる方法で解析しています。ただし、2番目の入力部分のみが実行されるため(常に出力でパラメーター'rectype'を取得するため)、これは機能しないようです。
私が間違っているかもしれないこととして何か提案はありますか?