file
文は実行文とみなされる(したがって際に虚偽の陳述if
の後ろに実行すべきではない)、それは本当に全く真実ではないですが。 SASはコンパイル中にfile
文を見て、書き込み先のファイルを作成する必要があることを知っているので、ややコンパイル時です。それはここで起こっていることです - SASは、コンパイラの活動の結果としてファイル(この場合は電子メール)を作成し、実際には何も投入しませんが、終わりにはまだ電子メールを持っています。
同じことが他のファイルで発生 - そのように:
data _null_;
set sashelp.class;
if 0 then do;
file "c:\temp\test_non_zero.txt";
put name $;
end;
run;
空白のファイルがそのコードによって作成されます。
条件付きで電子メールを送信する必要がある場合は、電子メールコードをマクロにラップし、そのマクロをcall execute
などを使用してデータセットから呼び出すことをおすすめします。ように:
%macro write_email(parameters);
data _null_;
file sendit email
to=("[email protected]")
subject="Some Subject Line";
run;
%mend write_email;
data _null_;
set TestTable;
if 0 then do;
call execute('%write_email(parameters)');
end;
run;
出典
2016-05-05 21:32:52
Joe
私はあなたが0に1を比較することによって、何をしようとしてわからないんだけど、多くの言語は、そのような2つのリテラル定数を比較扱えないでしょう。 – TriskalJM
私はそこに置いても、いつも電子メールを送信するので、私はそれを使ってテストしていました。 –
@TriskalJM SASはその構造で問題ありません。 (私はより短い 'if 0'を使いますが、' if 1 = 0'はうまくいきます。) – Joe