1

データセット (DATA01) の存在をチェックする単純なマクロがあります。

%GLOBAL base_exists;
%MACRO does_base_exist();
  %IF %SYSFUNC(exist(DATA_01)) %THEN
    %LET base_exists= 1;
  %ELSE %LET base_exists= 0;

%MEND;

%does_base_exist();

%PUT Base exist check is &base_exists 

上記のコードは、メイン プロセスの前に実行されるプログラムに示されています。出力メッセージは次のとおりです。

"Base exist check is 1"

&base_exists が 1 の場合にのみ実行するように、メイン プロセスに条件を設定しました (これはそうです)。何らかの理由で、メイン プロセスが失敗し続け、&base_exists が存在しないというメッセージが表示されます。

私が間違っていることについてのアイデアはありますか?私は EG を初めて使用し、BASE SAS での作業に慣れています。

更新: わかりやすくするために、エラー &base_exists に「s」を追加しました。

4

2 に答える 2

4

必要に応じて、これをさらに単純化できます。マクロも必要ありません。必要なのは、オープン コードの次の行だけです。

%let base_exists = %sysfunc(exist(DATA_01));

関数は値を返す01ifステートメントは必要ありません。マクロは必要ないため%global、オープン コードで定義されたマクロは自動的にグローバルになるため、ステートメントも必要ありません。

于 2015-04-09T14:47:00.077 に答える