前のページ|次のページ

GO TOステートメント

指定したステートメントラベルにプログラム実行を移動します。RETURNステートメントが後に続く場合、DATAステップの先頭に実行を戻します。

該当要素: DATAステップ
カテゴリ: 制御
種類: 実行可能
別名: GOTO

構文

GO TO label;

引数

label

GO TOの移動先となるステートメントラベルを指定します。移動先は同じDATAステップ内になければなりません。label引数は必ず指定する必要があります。

比較

GO TO ステートメントとLINKステートメントと同じような動きをします。GO TOステートメントはRETURNステートメントを指定せずに使用できますが、通常、LINKステートメントではRETURNステートメントを明示的に指定して使用します。GO TOステートメントとLINKステートメントでは、後に続くRETURNステートメントのアクションが異なります。LINKステートメントの後にRETURNステートメントを指定する場合は、LINKステートメントの直後のステートメントに実行を戻します。GO TOステートメントの後にRETURNステートメントを指定し、GO TOステートメントの前にLINKステートメントがない場合は、DATAステップの先頭に実行を戻します。このとき、GO TOステートメントの前にLINKステートメントがある場合は、LINKステートメントの直後の最初のステートメントから実行を続けます。
GO TOステートメントは、DO-ENDおよびIF-THEN/ELSEのプログラムロジックに置き換えることができます。

例: GO TOステートメントでRETURNステートメントを使用する

次に示すGO TOステートメントを使用します。
  • この例では、条件が真になる場合、GO TOステートメントはADDという名前のラベルに移動し、そこから実行を続けます。条件が偽になる場合、PUTステートメントを実行し、GO TOラベルに指定されているステートメントを実行します。
    data info;   
       input x;
       if 1<=x<=5 then go to add;
       put x=;
       add: sumx+x;
       datalines;
    7
    6
    323
    ;
    各DATAステップの最後に暗示的なRETURNステートメントが含まれているため、合計ステートメントを実行すると、プログラムの実行はDATAステップの先頭に戻されます。そのため、DATAステップの最後に明示的なRETURNステートメントを指定する必要はありません。
  • 条件が偽になるオブザベーションに対して合計ステートメントを実行しない場合は、コードを変更し、次のように明示的なRETURNステートメントを指定します。
    data info;
       input x;
       if 1<=x<=5 then go to add;
       put x=;
       return;    
          /* SUM statement not executed */
          /* if x<1 or x>5              */
       add: sumx+x;
       datalines;
    7
    6
    323
    ;

関連項目:

前のページ|次のページ|ページの先頭へ