日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル

OpenVMS マニュアル


HP OpenVMS
DCL ディクショナリ


目次 索引



コマンド・プロシージャ・レベルを変更せずに,制御をコマンド・プロシージャ内のラベルが付けられたサブルーチンに渡します。

形式

GOSUB ラベル


パラメータ



ラベル

コマンド行の最初の項目として, 1 文字から 255 文字までの英数字のラベルを指定します。ラベルの中にブランクを含むことはできません。 GOSUB コマンドの実行後,制御は指定されたラベルのあとのコマンドに渡されます。

ラベルは,現在のコマンド・プロシージャの中で, GOSUB ステートメントの前でもあとでもかまいません。コマンド・プロシージャ内でラベルを使用する場合には,最後にコロンを指定しなければなりません。ラベルが重複している場合,最も最近読まれたラベルへ飛びます。


説明

ラベルで指定されたサブルーチンへ制御を移すには,コマンド・プロシージャで GOSUB コマンドを使用します。コマンド・ストリームをランダム・アクセス・デバイス ( つまりディスク・デバイス ) から読み取っていないと,GOSUB コマンドは動作しません。

RETURN コマンドは,GOSUB サブルーチン・プロシージャを終了させ, GOSUB 文の呼び出しの次のコマンドへ制御を移します。 RETURN コマンドは,省略可能な状態値を受け付けます。

GOSUB コマンドでは,新しいプロシージャ・レベルは生成されません。したがって,これを "ローカルの" サブルーチン呼び出しと呼びます。現在のコマンド・プロシージャ・レベルで定義されたラベルとローカル・シンボルは,GOSUB コマンドで呼び出されたサブルーチンで使用できます。GOSUB コマンドは,プロシージャ・レベル当り,最高 16 レベルまでネストできます。

コマンド・インタプリタは,ラベルを検出すると,ラベル・テーブルにラベルを入れます。このテーブルは,ローカル・シンボル・テーブルで使用できる領域から割り当てられます。コマンド・インタプリタがすでにテーブルに存在しているラベルを検出すると,既存の定義が新しい定義で置き換えられます。したがって,重複ラベルを使用すると,制御は常に DCL が最後に読み取ったラベルに移ります。次の規則が適用されます。

  • GOSUB コマンドの前と後に重複ラベルがある場合,制御はコマンドの前にあるラベルに移ります。

  • すべての重複ラベルが GOSUB コマンドより前にある場合,制御は,最新のラベル,つまり GOSUB コマンドに最も近いラベルに移ります。

  • すべての重複ラベルが GOSUB コマンドより後にある場合,制御は, GOSUB コマンドに最も近いラベルに移ります。

現在のコマンド・プロシージャにラベルが存在しない場合,プロシージャは続行できないため,強制終了します。

ラベルに使用できる領域のサイズには,制限があることに注意してください。コマンド・プロシージャが多くのシンボルを使用し,多くのラベルがある場合,コマンド・インタプリタのテーブル領域が不足し,エラー・メッセージが出ることがあります。


#1
$! 
$! GOSUB.COM 
$! 
$ SHOW TIME 
$ GOSUB TEST1 
$ WRITE SYS$OUTPUT "success completion" 
$ EXIT 
$! 
$! TEST1 GOSUB definition 
$! 
$ TEST1: 
$     WRITE SYS$OUTPUT "This is GOSUB level 1." 
$     GOSUB TEST2 
$     RETURN %X1 
$! 
$! TEST2 GOSUB definition 
$! 
$ TEST2: 
$     WRITE SYS$OUTPUT "This is GOSUB level 2." 
$     GOSUB TEST3 
$     RETURN 
$! 
$! TEST3 GOSUB definition 
$! 
$ TEST3: 
$     WRITE SYS$OUTPUT "This is GOSUB level 3." 
$     RETURN 
 

このコマンド・プロシージャは,ラベルを付けられたサブルーチンへ制御を移すための GOSUB コマンドの使い方を示します。 GOSUB コマンドは TEST1にラベルを付けたサブルーチンに制御を移動します。プロシージャは,サブルーチン TEST1 でコマンドを実行し,サブルーチン TEST2 へ分岐します。その後,プロシージャは,サブルーチン TEST2 でコマンドを実行し,サブルーチン TEST3 へ分岐します。それぞれのサブルーチンは RETURN コマンドによって終了します。 TEST3 が実行された後, RETURN コマンドはそれぞれの呼出し GOSUB ステートメントに後続するコマンドラインへ制御を返します。この時点で,プロシージャはうまく実行されています。


目次 索引

プライバシー ご利用条件・免責事項