にマクロに変数を介して値を渡すかは、ここに私のコードはどのように私は、SAS
%macro redemptions1(startdate, enddate, sd, ed, sunday1, sunday2);
data _null_;
%put &startdate;
run;
%mend redemptions1;
data _null_;
format tday date9.;
format sd date9.;
format ed date9.;
tday=today();
if weekday(tday) = 1 then do; ed = intnx('day',tday,-9); sd = intnx('day',tday,-15);end;
if weekday(tday) = 2 then do; ed = intnx('day',tday,-3); sd = intnx('day',tday,-9);end;
if weekday(tday) = 3 then do; ed = intnx('day',tday,-4); sd = intnx('day',tday,-10);end;
if weekday(tday) = 4 then do; ed = intnx('day',tday,-5); sd = intnx('day',tday,-11);end;
if weekday(tday) = 5 then do; ed = intnx('day',tday,-6); sd = intnx('day',tday,-12);end;
if weekday(tday) = 6 then do; ed = intnx('day',tday,-7); sd = intnx('day',tday,-13);end;
if weekday(tday) = 7 then do; ed = intnx('day',tday,-8); sd = intnx('day',tday,-14);end;
startdate = (year(sd) - 1900) * 10000 + month(sd) * 100 + day(sd);
enddate = (year(ed) - 1900) * 10000 + month(ed) * 100 + day(ed);
sunday1 = year(intnx('day',sd,-6))*10000+month(intnx('day',sd,-6))*100+day(intnx('day',sd,-6));
sunday2 = year(intnx('day',sd,1))*10000+month(intnx('day',sd,1))*100+day(intnx('day',sd,1));
%redemptions1(startdate,enddate,sd,ed,sunday1,sunday2);
run;
で終了日など、redemeptions1マクロちょうど版画「STARTDATE」の代わりに実際に印刷startdateの値変数に含まれる値を印刷するにはどうすればよいですか?
ありがとうございます!
あなたのお返事ありがとうございます。私は上記のアプローチを試して、それは変数が初期化されていないと言います。私はマクロを使ってcallを実行してstartdateを実行しようとしましたが、 "変数が初期化されていません"というエラーが表示されました。 W.r.tの日付、はい私はデータセットがそれを要求するので、その特定のフォーマットを探しています。 – bhavya
「変数は初期化されていません」とは何ですか? CALL EXECUTEがデータステップの一部であることを確認してください。つまり、最後の実行前です。マクロでは、 'data _null_;'を削除できます。と '実行; '%put 'ステートメントはそのままにしておきますが、他のメッセージは期待しません。 CALL EXECUTEの2行バージョンを試して、 'put myCall =;'を追加してください。何が実行されているかを確認するための行。オプションの設定MPRINT SYMBOLGENは、問題の診断にも役立ちます。 –
Chrisさん、ありがとうございました。 – bhavya