2016-08-22 19 views
1

私はエンタープライズガイドの(名前+日付+時刻)のパラメータを持つ小さなプログラマを作成しようとしています。 - パラメータデータ入力引数にマクロ変数を使用する

data &WhatLib..&WhatTable%str(_)&SYSDATE.%sysfunc(tranwrd(%str(&SYSTIME.),:,_)) ; 
set &WhatLib..&WhatTable ; 
run; 

WhatLib(デフォルト値work)WhatTable(デフォルト値_PRODSAVAIL):ここではコードです。

first version of code result

私はマクロ変数の値を確認するために、いくつかの複数の文字列を追加しました::まあ、私はスクリーンショットでは、その結果、取得

%put &WhatLib..&WhatTable%str(_)&SYSDATE.%sysfunc(tranwrd(%str(&SYSTIME.),:,_)); 
%put &WhatLib..&WhatTable; 

をし、その結果をログに記録された:

work._PRODSAVAIL_22AUG1613_28

work._PRODSAVAIL

その後、私はマクロdefenitionにこのコードをラップ:

%macro TEST(); 
... 
<--same code--> 
... 
%mend TEST; 

%TEST(); 

しかし、結果は同じでした。 私が気付かなかったエラーや機能を指定した場合、私は感謝します。

答えて

2

%STR(_)が問題を引き起こしています。 %STR()マクロ機能に_を入れる必要はありません。アンダースコアはデータセットの名前の一部です。

%SYSFUNC()TIME()DATE()は実際の日時を使用することをお勧めします。 SASの開始日時ではない:

data &WhatLib..&WhatTable._%sysfunc(date(),date9.)_%sysfunc(tranwrd(%sysfunc(time(),hhmm5.),:,_)); 
    set &WhatLib..&WhatTable; 
run; 
関連する問題