前のページ|次のページ

DATAステップおよびマクロ機能でのSAS言語関数の使用

マクロ関数%SYSFUNCおよび%QSYSFUNCは、SAS言語関数、およびSAS/TOOLKITソフトウェアを使用して記述した関数を呼び出して、マクロ機能のテキストを生成できます。%SYSFUNCと%QSYSFUNCには、次の違いがあります。%QSYSFUNCは特殊文字とニーモニックをマスクしますが、%SYSFUNCはそれらをマスクしません。これらの関数の詳細については、%SYSFUNC関数と%QSYSFUNC関数を参照してください。
%SYSFUNCの引数は、1つのSAS言語関数と、オプションの出力形式です。次の例を参照してください。
%sysfunc(date(),worddate.)
%sysfunc(attrn(&dsid,NOBS))
%SYSFUNC内でSAS言語関数をネストすることはできません。ただし、次のステートメントのように、SAS言語関数を呼び出す%SYSFUNC関数をネストすることはできます。
%sysfunc(compress(%sysfunc(getoption(sasautos)),%str(%)%(%')))
この例では、COMPRESS関数を使用して、SASAUTOS=システムオプションの値から、左かっこ、右かっこ、および一重引用符を除去した結果を返します。%STR関数が使用され、一致しないかっこと引用符にパーセント記号(%)のマークが付けられていることに注意してください。
%SYSFUNC内のSAS言語関数の引数は、すべてカンマで区切る必要があります。OFというワードで始まる引数リストは使用できません。
%SYSFUNCはマクロ関数であるため、SAS言語関数で行うように、文字値を引用符で囲む必要はありません。たとえば、OPEN関数を単独で使用する場合、引数を引用符で囲みますが、OPEN関数を%SYSFUNC内で使用する場合、引数に引用符は不要です。
次の例は、関数を単独で使用する場合と%SYSFUNC内で使用する場合を比較しています。
  • dsid = open("Sasuser.Houses","i");
  • dsid = open("&mydata","&mode");
  • %let dsid = %sysfunc(open(sasuser.houses,i));
  • %let dsid = %sysfunc(open(&mydata,&mode));
%SYSFUNC%QSYSFUNCを使用して、DATAステップのすべてのSAS関数を呼び出すことができます(ただし、%SYSFUNC関数および%QSYSFUNC関数で使用できないSAS関数に示されたSAS関数を除きます)。マクロ機能では、%SYSFUNCによって呼び出されたSAS言語関数は、最大で32000の長さの値を返すことができます。ただし、DATAステップ内では、戻り値の長さはデータセットの文字変数の長さに制限されます。
%SYSCALLマクロステートメントを使用すると、SAS言語のCALLルーチンをマクロプロセッサで使用できます。これについては、マクロステートメントで説明されています。
前のページ|次のページ|ページの先頭へ