GO TOステートメント
指定したステートメントラベルにプログラム実行を移動します。RETURNステートメントが後に続く場合、DATAステップの先頭に実行を戻します。
該当要素: |
DATAステップ |
カテゴリ: |
制御 |
種類: |
実行可能 |
別名: |
GOTO |
構文
引数
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
;