前のページ|次のページ

%GOTOステートメント

指定したラベルにマクロ処理を分岐させます。

種類: マクロステートメント
別名: %GO TO
制限事項: マクロ定義でのみ使用可能
参照項目: %labelステートメント

構文

%GOTO label;

必須引数

label

実行の分岐先にしたいラベル名を指定するか、またはそのようなラベルを生成するテキスト式を指定します。%GOTOステートメント内でラベルを生成するテキスト式のことを、計算される%GOTOの分岐先と呼びます。 (脚注 1)

次の例は、labelの使い方を示すものです。
  • %goto findit;  /* branch to the label FINDIT */
  • %goto &home;   /* branch to the label that is */
                   /* the value of the macro variable HOME */
    注意:
    %GOTOステートメント内のラベル名の前にはパーセント記号(%)を付けません。
    %GOTOステートメントの構文では、ラベル名の前に%を含めません。%を使用した場合、マクロプロセッサはラベルを生成するために、その名前のマクロを呼び出そうとします。

詳細

%GOTOステートメントによる分岐には2つの制限事項があります。1つ目の制限は、%GOTOステートメントのターゲットとなるラベルが現在のマクロ内に存在していなければならないことです。%GOTOステートメントでは、別のマクロ内のラベルへは分岐できません。2つ目の制限は、%GOTOステートメントは、現在実行されていない反復%DOループ、%DO %UNTILループ、%DO %WHILEループ内のポイントへの分岐は実行できないことです。

例: 大きいマクロにExitを指定する

%GOTOステートメントは、大きなマクロで、エラーが発生した場合の出口(Exit)を提供したい場合に便利です。
%macro check(parm);
   %local status;
   %if &parm= %then %do;
       %put ERROR:  You must supply a parameter to macro CHECK.;
       %goto exit;
   %end;
   more macro statements that test for error conditions 
   %if &status > 0 %then %do;
       %put ERROR:  File is empty.;
       %goto exit;
   %end;
   more macro statements that generate text 
   %put Check completed successfully.;
%exit: %mend check;
脚注 1:計算される%GOTOの分岐先は%や&を含んでおり、ラベルに置き換えられます。[戻る]
前のページ|次のページ|ページの先頭へ