GO TO ステートメントは、手続き部のある部分から別の部分へ制御を移します。 GO TO ステートメントには、次のような種類があります。
無条件 GO TO ステートメントは、プロシージャー名に識別された段落またはセクションの最初のステートメントに制御を移します。ただし、ALTER ステートメントによって GO TO ステートメントが変更されていた場合はこの限りではありません (ALTER ステートメントを参照)。
| フォーマット 1: 無条件 |
|---|
|
無条件 GO TO ステートメントが一連の命令ステートメントの先頭または途中に指定されていると、 その後のステートメントが実行されません。
段落が ALTER ステートメントによって参照されている場合、その段落は無条件 GO TO ステートメントまたは変更された GO TO ステートメントに続く段落名である必要があります。
条件付き GO TO ステートメントは、 ID-1 によって参照されるデータ項目の値に応じて、複数のプロシージャーのうちの 1 つのプロシージャーに制御を移します。
| フォーマット 2: 条件 |
|---|
|
1 を指定すると、プロシージャー名-1 の最初のオカレンスによって指名されたプロシージャーの最初のステートメントに制御が移ります。
2 を指定すると、プロシージャー名-1 の 2 番目のオカレンスによって指名されたプロシージャーの最初のステートメントに制御が移ります。以下同様です。
ID の値が、1 から n (n はこの GO TO ステートメント中で指定されているプロシージャー名の個数) の範囲以外の値である場合、制御の移動は起きません。 その代わり、制御は、正規の実行シーケンスの次のステートメントに渡されます。
変更される GO TO ステートメントは、ALTER ステートメント中に指定された段落の最初のステートメントに制御を移します。
変更される GO TO ステートメントは、以下のものには指定できません。
変更される GO TO ステートメントが入った段落を参照している ALTER ステートメントが実行されていないと、 この GO TO ステートメントを実行することはできません。それ以外の場合、GO TO ステートメントは CONTINUE ステートメントと同じように機能します。
| フォーマット 3: 変更 |
|---|
|
ALTER ステートメントがある段落を参照している場合、その段落は無条件 GO TO ステートメントまたは変更される GO TO ステートメントを後に付けた段落名のみで構成することもできます。
GO TO MORE-LABELS は構文チェックされますが、プログラムの実行には何の影響も及ぼしません。
| フォーマット 4: MORE-LABELS |
|---|
|