PROC SQL と既存のマクロ変数の値を使用して、SAS データ セットに行を挿入しようとしていますが、標準の構文エラー メッセージが表示されます。失敗するコードの例を次に示します。
%let viewname=MKTVIEWS.imei_ref;
%let xrc=0;
%let xmsg= ;
proc sql;
create table results (viewname char(40), xrc numeric, xmsg char(200));
insert into results (viewname, xrc, xmsg)
values ( %str(%')&viewname%str(%')
, &xrc
, %str(%')%superq(xmsg)%str(%') );
quit;
エラーメッセージは次のとおりです。
ERROR 22-322: Syntax error, expecting one of the following: a quoted string,
a numeric constant, a datetime constant, a missing value, +, -, MISSING, NULL,
USER.
2 つの文字マクロ変数なしでプログラムを実行すると、問題なく動作します。
proc sql;
create table results (viewname char(40), xrc numeric, xmsg char(200));
insert into results (viewname, xrc, xmsg)
values ( 'MKTVIEWS.imei_ref'
, &xrc
, '' );
quit;
明らかに、マクロの引用などについて何かが欠けています。これらの呼び出しを埋め込んで引用符で囲まれた文字列を作成するのではなく、一時的なマクロ変数を使用してみ%STR
ましたが、それもうまくいきませんでした。