セミコロン4つはSTREAMプロシジャの終了を示しています。これはDATALINES4ステートメントと同様です。
今回の場合、FILEステートメントはデフォルトで追加ではなく置き換えであるため
STREAMプロシジャで記述した箇所が上書きされてしまっています。これは
FILEステートメントにMODオプションを指定することで追加するようにできます。
※FROM句にデータセット名を指定する必要があると思います。
file file lrecl=9999 stopover mod;
もしくは以下のように先にPUTステートメントによる出力を外部ファイルに出力しておき
STREAMプロシジャ内で%INCLUDEステートメントを用いて呼び出してもいいと思います。
filename tmp1 temp;
data _null_;
set id_list;
file tmp1 lrecl=9999 stopover;
if _n_ = 1 then tmp = cats("'", x1, "'");
else tmp = cats(",'", x1, "'");
put tmp;
run;
filename file "c:\temp\id_sql.txt";
proc stream outfile=file resetdelim="goto";
begin select * from test goto NEWLINE;
where x1 in (
goto;
%include tmp1;
);
;;;;