前のページ|次のページ

SASマクロ警告メッセージ

本セクションでは、マクロの使用時に報告される可能性のある警告メッセージと、それらの解決方法を紹介します。警告を解決できない場合、SASテクニカルサポートにお問い合わせください。
Warning:シンボリック参照valueを展開していません。
原因
解法
参照されているマクロ変数が見つかりません。
置き換えの前にマクロ変数を定義する必要があります。
マクロ変数のスペルが間違っています。
マクロ変数名のスペルを確認してください。
特定のマクロのローカルマクロ変数が、そのマクロの外部でグローバルに使用されています。
そのマクロ変数を%GLOBALステートメントに追加します。または、CALL SYMPUTを使用している場合、第3引数が'g'であるCALL SYMPUTXを使用します。例:
call symputx(‘macro_variable’,
symbolic_reference_value,’g’);
マクロ変数が、CALL SYMPUTルーチンと同じステップで使用されています。
CALL SYMPUTにより作成されたマクロ変数を置換する前に、RUNステートメントのようなステップ境界に到達する必要があります。
マクロの置換は、マクロ変数がCALL SYMPUTルーチンまたはINTO句を使用して作成された場合にマクロ内で発生します。マクロがCALL EXECUTEルーチンで呼び出されています。
そのマクロ呼出しに対して%NRSTR関数を適用します。例:
call execute(‘%nrstr(%macro_name
(‘||variable1||’))’);
これにより置換が遅延されます。
マクロ変数の末尾にテキストを追加するときに、ピリオドの区切り文字を付け忘れています。
マクロ変数の後にテキストが続く場合、そのマクロ変数名の後にピリオドが必要となります。例:
%let var=abc; 
%put &var.def;
このコードを実行すると、abcdefが出力されます。
Warning:マクロvalueの呼び出しを展開できません。
原因
解法
マクロ名にスペルミスがあります。
マクロ名のスペルを確認してください。
MAUTOSOURCEシステムオプションを無効にしています。
自動呼出しマクロを呼び出す場合、MAUTOSOURCEシステムオプションを有効にする必要があります。
MAUTOSOURCEシステムオプションは有効だが、SASAUTOS=システムオプションで不正なパス名を指定しています。
SASAUTOS=システムオプションには、マクロの場所を表す正確なパスを含める必要があります。
SASAUTOS=システムオプションに指定されたパスに対するアクセス権を持っていない状態で、自動呼出し機能を使おうとしました。
当該ディレクトリに対する読み取りまたは書き込みアクセス権を持っていることを確認します。
マクロ名とファイル名に異なる名前を割り当てている状態で、自動呼出し機能を使おうとしました。
自動呼出しマクロを使用する場合、マクロ名とファイル名が正確に一致している必要があります。
自動呼び出し機能を使用しているが、ファイル名に.sas拡張子を付けていません。
自動呼出しマクロを使用する場合、そのマクロを含んでいるファイルには.sas拡張子を付ける必要があります。
ファイル名に大文字小文字が混在している状態で自動呼出し機能を使おうとしました。
UNIX環境で自動呼出しマクロを使用する場合、ファイル名はすべて小文字でなければなりません。
マクロがコンパイル済みではありません。
マクロ呼出しの前に、そのマクロの定義をコンパイルする必要があります。
Warning:マクロ定義valueの%MENDステートメントの余分なテキストは無視されます。
原因
解法
%MENDステートメント内の名前が、%MACROステートメント内の名前と一致しません。
%MENDステートメント内の名前は、%MACROステートメント内の名前と一致する必要があります。
%MENDステートメントでセミコロンが欠落しています。
%MENDステートメントの末尾にセミコロンを付ける必要があります。
Warning:引数value(マクロ関数value)は範囲外です。
原因
解法
最初のvalueは、問題の原因となった引数の位置を表します。2番目のvalueは、使用された関数を表します。この引数が、許可された範囲よりも小さいかまたはそれよりも大きい値になっています。
この引数が必要な範囲内にあることを確認します。例:
%put %scan(a b c,0); 
0は、許可された範囲よりも小さい値です。
%put %substr(abc,4,1);
4は、第1引数の長さを超えています。
Warning:%MENDステートメント(マクロvalue)が指定されていません。
原因
解法
閉じられていないコメントが原因で、%MENDステートメントが見えなくなっています。
コメントで、すべての/**/に対応していること、およびすべての%**がそれぞれに対応するセミコロンを持っていることを確認します。SASを対話的に実行している場合、問題を修正した後にSASセッションの再起動が必要となる場合もあります。または、問題を修正した後で、次のコードを実行します。
;*%mend;*);*';*";**/;run;
%MENDステートメントの前にセミコロンが欠落しています。
%MENDステートメントの前に記述されているセミコロンを必要とするすべてのステートメントの末尾にセミコロンがあることを確認します。
%MENDステートメントの前に、対になっていない引用符が存在しています。
すべての二重引用符および一重引用符が対応する引用符を持つことを確認します。
%MENDステートメントがありません。
すべての%MACROステートメントには、対応する%MENDステートメントが必要となります。
Warning:#value:@valueで定義したフィールドが#value:@value-valueで定義したフィールドと重なり合っています。
原因
解法
#は印刷開始行を、@は印刷開始列をそれぞれ表します。行番号または列番号が前の範囲に重なり合っているようなフィールドが%WINDOWステートメント内に存在しています。例:
#5 @5 ‘test’ #5 @4 ‘test2’
testtest2は両方とも行5から始まります。ただし、testは列5から始まり、このワードを印刷するには4つのスペースが必要となります。一方、test2は列4から始まり、このワードを印刷するには5つのスペースが必要となります。このため、test2の印刷はtestの印刷と重なり合うことになります。
行および列の各範囲が、前のフィールドエントリと重なり合わないことを確認します。各フィールドで印刷されるテキストの長さに注意してください。
Warning:ソースレベルのAUTOCALLが見つからないか、またはオープンできません。AUTOCALLを中止して、OPTION NOMAUTOSOURCEをセットしました。AUTOCALLを再度使用するには、OPTION MAUTOSOURCEを使用してください。
原因
解法
SASAUTOS=システムオプションにおけるすべてのライブラリ指定が無効であるかまたは存在していません。
SASAUTOS=システムオプションで指定された場所が有効であり存在していることを確認します。MAUTOSOURCEシステムオプションとMRECALLシステムオプションを使用します。
Warning:マクロ関数%SYSGETの引数はシステム変数ではありません。
原因
解法
%SYSGET関数内で使用されている値は、有効化環境変数として認識されません。
その値のスペルをチェックし、その値がお使いのオペレーティングシステムにおける有効な環境変数であることを確認します。
%SYSGET関数に渡される値が引用符で囲まれています。
値を囲んでいる引用符を削除します。マクロ関数内では引用符は必要ありません。
Warning:NOMACROオプションによりRESOLVE機能は使用されません。
原因
解法
SASの起動時にNOMACROオプションが設定されています。
マクロ機能の任意の部分を使用するためには、SASシステムの起動時にMACROオプションを設定する必要があります。
Warning:value. SASMACRカタログを読み取り専用でオープンしました。
原因
解法
valueは、SASMACRカタログに関連付けられているライブラリ参照名を表します。SASMSTORE=システムオプションは、SASMACRカタログに読み取り専用属性が設定されているようなライブラリ参照名を指しています。
SAS 9.1.3 Service Pack 2以降では、コンパイル済みマクロカタログが、最初に読み込み専用で開かれます。セッションで初めてコンパイル済みマクロの実行を試みる場合、このライブラリがロックなしで開かれます。このライブラリは、セッションが終了するか、または同セッションでマクロの追加や更新が行われるまで、同じ状態のままとなります。このため、上記の警告は生成されなくなります。SAS 9.1.3より前のリリースでは、この警告を抑制するには、Sasmacrカタログへの書き込みアクセス権を設定するシステムコマンドを使用する必要があります。
Warning:DMSコマンドラインから%%INPUTステートメントを実行できません。
原因
解法
%INPUTステートメントを含んでいるコマンドが、DMSコマンドライン上で発行されました。
%INPUTステートメントは対話型ラインモードセッション内でのみ有効です。または、ウィンドウ環境セッション時にProgram Editorウィンドウ内でサブミットできます。
Warning:SYSFUNCまたは%%QSYSFUNCマクロ関数で参照されている引数value(関数value)は数値ではありません。
原因
解法
最初のvalueは、問題の原因となった引数の位置を表します。2番目のvalueは、使用された関数を表します。この引数が、許可された範囲よりも小さいかまたはそれよりも大きい値になっています。
この引数が必要な範囲内にあることを確認します。例:
%put %sysfunc(scan(a b c,0));
0は、許可された範囲よりも小さい値です。
%put %sysfunc(substr(abc,4,1)); 
4は、第1引数の長さを超えています。
Warning:%THEN句とvalueの間にセミコロンが欠損していると仮定します。
原因
解法
%THENステートメントの後に指定されたアクションにセミコロンが欠落しています。
%THENステートメントの後に続くアクションの末尾にセミコロンを追加します。例:
%let var=;
%macro test;
%if 1=1 %then &var   ← missing semicolon
%mend test;
Warning:valueのマクロ変数の削除に失敗しました。変数がありません。
原因
解法
%SYMDELステートメント内で参照されているマクロ変数は存在しません。
%SYMDELステートメントにNOWARNオプションを追加します。例:
%symdel aa / nowarn;
%SYMDELステートメント内で参照されているマクロ変数の先頭にアンパサンドが付けられています。
%SYMDELステートメントでは、先頭にアンパサンドが付いていないマクロ変数名を指定する必要があります。
Warning:%SYMDELステートメントの余分なテキストは無視されます。
原因
解法
%SYMDELステートメント内に、フォワードスラッシュの後にテキストが続いています。
フォワードスラッシュの後に続く有効な引数はNOWARNのみです。
Warning:SYMDELルーチンの第2引数の余分なテキストは無視されます。
原因
解法
カンマに続いて、NOWARN引数以外のテキストが指定されています。
カンマの後に続く第2引数として有効な値はNOWARNだけです。
Warning:マクロvalueはSAS System valueはでコンパイルされています。現在のSAS Systemバージョンはvalueです。このマクロは正しく実行されない可能性があります。 このメッセージの表示を避けるには、マクロをSAS System valueで再コンパイルしてください。
原因
解法
マクロがコンパイルされたSASシステムのリリースとは別のリリース上で当該マクロを呼び出そうとしました。
新しいSASリリースにマクロのソースコードを移動した後、そこでそのマクロをコンパイルします。
SASMACRカタログが、別のオペレーティングシステムやSASシステムの別のリリースに移動されています。
コンパイル済みマクロは、異なるオペレーティングシステム間やSASシステムの異なるリリース間で移動できません。特定のマクロを別のオペレーティングシステムやSASシステムの別のリリースでも使用できるようにするには、SASMACRカタログ内に含まれているマクロのソースコードを新しい場所に移動し、当該マクロをそこでコンパイルする必要があります。
Warning:テキスト式valueはマクロ変数valueへの再帰的参照を含んでいます。マクロ変数にヌル値が割り当てられます。マクロ変数にヌル値が割り当てられます。
原因
解法
例えば元々マクロ変数が存在していない場合、マクロ変数が自身に設定されます。
%let a=&a;
%LETステートメントよりも前に&aが存在していない場合、この警告が生成されます。
マクロ変数をそれ自身に設定する前に、そのマクロ変数が存在していることを確認します。
%global a; 
%let a=&a;
Warning:%SYSMSTORECLEARステートメントの余分なテキストは無視されます。
原因
解法
%SYSMSTORECLEARステートメントの後にテキストが続いています。
そのテキストを削除し、%SYSMSTORECLEARステートメントとそれに続くセミコロンの間に何も記述されていないことを確認します。
Warning:%SYSMACDELETEコールの余分な引数テキストは無視されました:value
原因
解法
フォワードスラッシュに続いて、NOWARN引数以外のテキストが指定されています。
フォワードスラッシュの後に続く有効な引数はNOWARNのみです。
%SYSMACDELETEステートメント内で、マクロ名の先頭にパーセント記号が付けられています。
%SYSMACDELETEステートメントでは、先頭にパーセント記号が付いていないマクロ変数名を指定する必要があります。
Warning:MCOVERAGEオプションが設定されていますが、MCOVERAGELOC=が指定されていません。
Warning:カバレッジデータの生成が中断され、OPTION NOCOVERAGEが設定されました。MCOVERAGELOCオプションに使用されているファイル参照名の割り当ては解除されました。 カバレッジデータを再度生成するには、OPTIONS MCOVERAGEとMCOVERAGELOCを設定します。
原因
解法
MCOVERAGEシステムオプションが設定されているにもかかわらず、MCOVERAGELOC=システムオプションで場所が指定されていません。
MCOVERAGELOC=システムオプションで有効な場所を指定します。再度、 MCOVERAGE=オプションを指定する必要があります。
MCOVERAGELOC=システムオプションが、存在しない場所を指しています。
MCOVERAGELOC=システムオプションで指定されたパスが存在しており有効であることを確認します。再度、 MCOVERAGE=オプションを指定する必要があります。
Warning:valueのマクロ定義の削除に失敗しました。マクロ定義が見つかりません。
原因
解法
%SYSMACDELETEステートメント内で参照されているマクロ名は存在しません。
%SYSMACDELETEステートメントにNOWARN引数を追加します。例:
%sysmacdelete abc / nowarn;
Warning:マクロvalueはENCODING=valueでコンパイルされました。このセッションはENCODING=valueで実行されています。
原因
解法
呼び出そうとしたマクロは、そのマクロを呼び出そうとしたマシンで設定されているENCODING=システムオプションとは異なる設定を持つシステム上でコンパイルされています。
ENCODING=システムオプションの値が、当該マクロをコンパイルしたシステムと同じシステムに設定されていることを確認します。
前のページ|次のページ|ページの先頭へ