GOSUB ステートメント

構文

GOSUB statement.label [ : ]
GO SUB statement.label [ : ]

説明

GOSUB ステートメントを使用すると、プログラム制御を statement.label で参照される内部サブルーチンに転送できます。コロン ( : ) は、プログラム行の先頭の非数値ステートメント・ラベルの後に必要ですが、GOSUB ステートメントではオプションです。

GOSUB ステートメントで参照される内部サブルーチンの終わりにある RETURN ステートメントを使用すると、プログラム制御を GOSUB ステートメントに続くステートメントに転送できます。

内部サブルーチンの末尾の RETURN TO ステートメントは、制御を GOSUB ステートメントに続く行ではなくプログラム内の位置に渡します。この場合、statement.label を使用して、ターゲット位置を参照します。

GOSUB の実行時にアクティブな GOSUB または CALL は、すべてアクティブなままとなり、エラーが発生するおそれもあるので、RETURN TO ステートメントは慎重に使用しください。

プログラムは、サブルーチンを何回でも呼び出すことができます。 あるサブルーチンを別のサブルーチンから呼び出すことも可能です。このプロセスをサブルーチンのネスト処理と呼びます。 最大で 256 個の GOSUB 呼び出しをネストできます。

サブルーチンは、プログラムの任意の場所で呼び出せますが、メインプログラムからの識別が可能でなければなりません。サブルーチンへの不注意な入力を回避するには、サブルーチンのまわりでプログラム制御を指示する STOP ステートメント、END ステートメント、または GOTO ステートメントをサブルーチンの前に置きます。

VAR='ABKL1234'
FOR X=1 TO LEN(VAR)
   Y=VAR[X,1]
   GOSUB 100
NEXT X
STOP
100*
IF Y MATCHES '1N' THEN RETURN TO 200
PRINT 'ALPHA CHARACTER IN POSITION ',X
RETURN
200*
PRINT 'NUMERIC CHARACTER IN POSITION ',X
STOP

次のプログラム出力が得られます。

ALPHA CHARACTER IN POSITION  1
ALPHA CHARACTER IN POSITION  2
ALPHA CHARACTER IN POSITION  3
ALPHA CHARACTER IN POSITION  4
NUMERIC CHARACTER IN POSITION          5