GOTO

目的

現在のプロシージャまたは別のアクティブなプロシージャ内のラベル付きの文に制御を移します。

構文

GOTOlabel-reference[OTHERWISE];

代替形式:GOTO の代わりに GO TO を使用できます。

省略形:OTHERWISE の代わりに OTHER を使用できます。

パラメーター

label-reference
ラベル値を示します。

説明

GOTO 文は、現在のプロシージャまたは別のアクティブなプロシージャ内のラベル付きの文に制御を移します。

ラベル値がラベル変数またはラベル値関数である場合、その値は、現在のプロシージャ ブロックまたは包含するプロシージャ ブロック内の文を指定するものでなければなりません。この値には、当該のブロックの Nock アクティブ化に属するスタック フレームも指定する必要があります。

制御が移される文が現在のブロック内にない場合、現在のブロックのアクティブ化は終了し、それ以前のすべてのブロックのアクティブ化も終了して、当該の文を含むブロックに戻ります。現在の状態は、そのブロックがアクティブ化されている状態になり、制御はその文に移ります。

OTHERWISE オプションは、添え字付き GOTO 文でのみ使用できます。添え字付き GOTO 文は、添え字付きのラベルに制御を移す文として定義されます。

GOTO 文において無効な添え字付きラベルが参照されている場合、一般にはエラーと見なされます。たとえば、次の 2 番目の例における ALABEL ( 1 ) は配列の未定義のメンバーであり、ALABEL ( 3 ) は配列の境界の外にあるメンバーです。

ただし、参照される要素がラベル定数の配列の有効なメンバーではない場合、OTHERWISE オプションを使用して GOTO 文に続く文に制御を渡すことができます。

ラベル値の詳細については、「データ型」の章の「ラベル データ」を参照してください。

GOTO L;
GOTO CASE(K); 
GO TO L;

次の例には、ALABEL という添え字付きラベル定数の配列が含まれています。GOTO 文により、添え字付きラベル ALABEL (2) に付随する文に制御が移されます。

ALABEL(0): STATEMENT; 
ALABEL(2): STATEMENT;
   X = 2; GOTO ALABEL( X );

次のプログラム サンプルは、3 行目にの添え字付き GOTO 文で添え字として使用される変数を示しています。参照 ALABEL ( I ) が有効でない場合、OTHERWISE オプションによって、4 行目の PUT LIST 文に制御が直接渡されます。

NEXT: GET LIST (I);
   GOTO ALABEL (I) OTHERWISE; 
   PUT LIST( "INVALID");
   GOTO NEXT;

ALABEL( 1 ):
   .
   .
   .
GOTO NEXT;

ALABEL( 2 ):
   .
   .
   .
GOTO NEXT;

制約事項

なし。