日本-日本語

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

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

タイトルページ
目次
まえがき
第 1 章:リファレンス・セクション
付録 A:廃止されたコマンド
索引
PDF    Vol.1   Vol.2
OpenVMS ホーム

HP OpenVMS
DCL ディクショナリ


目次 索引




制御をコマンド・プロシージャ内のラベルが付けられたステートメントに渡します。

形式

GOTO ラベル


パラメータ



ラベル

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

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


説明

プロシージャ内の次の行ではない行に制御を移すには,コマンド・プロシージャで GOTO コマンドを使用します。ラベルは,現在のコマンド・プロシージャの GOTO 文の前でも後でも使用できます。コマンド・ストリームがランダム・アクセス装置 ( つまりディスク装置 ) から読み取られていない場合,GOTO コマンドは動作しません。

GOTO コマンドのターゲット・ラベルが別の IF-THEN-ELSE 構造内にある場合は,エラー・メッセージ (DCL-W-USGOTO) が返されます。

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

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

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

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

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

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


#1

$ IF P1 .EQS. "HELP" THEN GOTO TELL 
$ IF P1 .EQS. "" THEN GOTO TELL 
   . 
   . 
   . 
$ EXIT 
$ TELL: 
$ TYPE SYS$INPUT 
To use this procedure, you must enter a value for P1. 
   . 
   . 
   . 
$ EXIT 

この例では,IF コマンドはプロシージャに渡された最初のパラメータを調べます。このパラメータが HELP という文字列の場合,あるいはパラメータが指定されていない場合には,GOTO コマンドが実行され,制御は TELL というラベルの行に移ります。それ以外の場合には,プロシージャは EXIT コマンドが検出されるまで実行を継続します。 TELL というラベルでは,TYPE コマンドがプロシージャの使用方法を示す入力ストリームのデータを表示します。

#2

$ ON ERROR THEN GOTO CHECK 
   . 
   . 
   . 
$ EXIT 
$ CHECK:  ! Error handling routine 
   . 
   . 
   . 
$ END: 
$ EXIT 

ON コマンドは,エラー処理ルーチンを設定します。そのあと,コマンド・プロシージャ内で実行されるコマンドあるいはプロシージャが,エラーまたは重大なエラーを報告した場合には,GOTO コマンドは,制御を CHECK というラベルに移します。


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項