GOTOlabel-reference[OTHERWISE];
代替形式:GOTO の代わりに GO TO を使用できます。
省略形:OTHERWISE の代わりに OTHER を使用できます。
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;
説明
GOTO 文は、現在のプロシージャまたは別のアクティブなプロシージャ内のラベル付きの文に制御を移します。
ラベル値がラベル変数またはラベル値関数である場合、その値は、現在のプロシージャ ブロックまたは包含するプロシージャ ブロック内の文を指定するものでなければなりません。この値には、当該のブロックの Nock アクティブ化に属するスタック フレームも指定する必要があります。
制御が移される文が現在のブロック内にない場合、現在のブロックのアクティブ化は終了し、それ以前のすべてのブロックのアクティブ化も終了して、当該の文を含むブロックに戻ります。現在の状態は、そのブロックがアクティブ化されている状態になり、制御はその文に移ります。
OTHERWISE オプションは、添え字付き GOTO 文でのみ使用できます。添え字付き GOTO 文は、添え字付きのラベルに制御を移す文として定義されます。
GOTO 文において無効な添え字付きラベルが参照されている場合、一般にはエラーと見なされます。たとえば、次の 2 番目の例における ALABEL ( 1 ) は配列の未定義のメンバーであり、ALABEL ( 3 ) は配列の境界の外にあるメンバーです。
ただし、参照される要素がラベル定数の配列の有効なメンバーではない場合、OTHERWISE オプションを使用して GOTO 文に続く文に制御を渡すことができます。
ラベル値の詳細については、「データ型」の章の「ラベル データ」を参照してください。