日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS
ドキュメント・ライブラリ

タイトルページ
目次
まえがき
リファレンス・セクション
    ≫ コマンド一覧
    ≫ レキシカル関数
付録 A:廃止されたコマンド
付録 B:DCL整数表現の範囲を超える数値の処理
索引
PDF    Vol.1   Vol.2
OpenVMS ホーム

HP OpenVMS
DCL ディクショナリ


目次 索引




コマンド・プロシージャ内で実行されているコマンドまたはプログラムが,エラーを検出した場合,または CTRL/Y によって割り込まれた場合に,実行される動作を定義します。コマンド・インタプリタが,エラー・チェックまたは CTRL/Y による割り込みを行う場合にだけ,実行されます。省略時の設定では,これらは行われています。 ON コマンドは,コマンド・プロシージャの内部でだけ使用することができます。

形式

ON 条件   THEN   [$] コマンド


パラメータ



条件

エラーの重大度レベルまたは CTRL/Y による割り込みを指定します。次のいずれかのキーワードを使用します。これらは 1 文字以上の文字に短縮できます。

WARNING 警告レベルのステータス($SEVERITY = 0)
ERROR エラー・レベルのステータス($SEVERITY = 2)
SEVERE_ERROR エラー・レベルのステータス($SEVERITY = 4)
CONTROL_Y SYS$INPUT での CTRL/Y の入力

省略時のエラー条件は,ON ERROR THEN EXIT です。

コマンド

実行する DCL コマンド行を指定します。コマンド行の前にドル記号 ($) を指定することもできます。

エラー条件を条件パラメータとして指定した場合は,指定した重大度レベルのエラー,またはそれ以上のエラーが発生するお,指定された動作が実行されます。


説明

コマンド・プロシージャの実行中,コマンド・インタプリタは,実行される各コマンドまたはプログラムから返される条件コードをチェックします。 ON コマンドを使用すると,コマンド・インタプリタがチェックの結果に基づいて行うべき手順を確立できます。

システムは,条件コードをグローバル・シンボル $STATUS に入れます。条件コードの重大度は,$STATUS の下位 3 ビットで表されます。この重大度は,グローバル・シンボル $SEVERITY でも表されます。重大度の値についての詳細は,EXIT コマンドの説明を参照してください。

ON コマンドの動作がエラーの重大度を指定する場合,コマンド・インタプリタは,指定された重大度以上のレベルで,エラーに対する ON コマンドの動作を実行します。たとえば,次のコマンドは,警告,エラー,または重大エラーの発生時に,プロシージャを終了させます。

$ ON WARNING THEN EXIT 

省略時の動作は,次のとおりです。

$ ON ERROR THEN EXIT 

つまり,コマンド・インタプリタは,警告の発生時は続行し,エラーまたは重大エラーの発生時は EXIT コマンドを実行します。重大度を指定する ON コマンド動作は,一度だけ実行されます。 ON コマンド動作が行われると,省略時の ON 動作が再設定されます。省略時の ON 動作には,例外があります。 CALL,GOSUB,または GOTO コマンドを使用して現在のコマンド・プロシージャに存在しないラベルを指定すると,コマンド・プロシージャは警告メッセージを出して終了します。

ON コマンドで指定された動作は,コマンドが実行されるコマンド・プロシージャ内だけに適用されます。したがって,別のプロシージャを呼び出すプロシージャで ON コマンドを実行する場合, ON コマンド動作はネストしたプロシージャには適用されません。どのコマンド・プロシージャ・レベルで実行される ON コマンドも,別のレベルのプロシージャのエラー状態処理には影響しません。

ON コマンドでエラー・チェックを禁止するには,SET NOON コマンドを使用します。エラー・チェックを許可するには,SET ON コマンドを使用するか, ON コマンドを入力します。

ON コマンドには,コマンド・プロシージャの実行中に発生する Ctrl/Y 割り込み用のアクション・ルーチンを定義する方法も提供されています。省略時の Ctrl/Y の動作では, Ctrl/Y コマンド・レベルでコマンド入力を求めるプロンプトが表示されます。 Ctrl/Y コマンド・レベルは,DCLコマンドを入力できる特殊なコマンド・レベルです。コマンド・インタプリタ内で実行されるコマンドを入力する場合は, CONTINUE コマンドでプロシージャの実行を再開できます。コマンド・インタプリタ内で実行されるコマンドの一覧については,『OpenVMS ユーザーズ・マニュアル』を参照してください。

他の DCL コマンドを入力すると,コマンド・インタプリタは,コマンド・レベル 0 に戻り,コマンドで起動されるイメージを実行します。終了ハンドラを含むイメージの実行中にコマンド・プロシージャに割り込みをかけると,新しいコマンド (イメージ) を実行する前に終了ハンドラを実行できます。ただし,Ctrl/Y を押してコマンド・プロシージャに割り込みをかけてから STOP コマンドを入力すると,割り込まれたイメージで宣言された終了ハンドラは実行されません。

ON コマンドを使用すると,Ctrl/Y割り込みの省略時の動作を変更できます。 Ctrl/Y 動作の省略時の動作を変更した場合, Ctrl/Y 割り込みの実行は,自動的には Ctrl/Y 動作の省略時に再設定されません。 Ctrl/Y動作は,次のいずれかが起きるまで有効です。

  • プロシージャが終了する (EXIT コマンドまたは STOP コマンドの結果,または省略時のエラー状態処理動作の結果)。

  • 別の ON CONTROL_Y コマンドを実行する。

  • プロシージャが,SET NOCONTROL=Y コマンドを実行する。

Ctrl/Y 動作は,アクティブなコマンド・レベルごとに指定できます。現在実行中のコマンド・レベルに指定された Ctrl/Y 動作で,前のレベルに指定された動作が上書きされます。

  注意
ON CONTROL_Y コマンドおよび SET NOCONTROL=Y コマンドは,特殊なアプリケーション用のコマンドです。一般に,Ctrl/Y 割り込みは,禁止にしないでください。たとえば,Ctrl/Y 割り込みを禁止にするプロシージャが制御不能ループに入ると,端末からプロシージャを停止させることができなくなります。


#1
$ ON SEVERE_ERROR THEN CONTINUE 

この実行文がコマンド・プロシージャ内で実行された後で,警告,エラー,または重大なエラーが発生した場合には,プロシージャの実行が継続されます。回復不可能な重大なエラーが発生した結果として,この実行文が 1 度実行されると,省略時設定の動作(ON ERROR THEN EXIT)に戻ります。

#2
$ ON ERROR THEN GOTO BYPASS 
$ RUN A 
$ RUN B 
   .
   .
   .
$ EXIT 
$ BYPASS: 
$      RUN C 
 

プログラム A,またはプログラム B が,エラーまたは重大なエラーを示す状態コードを返した場合には,制御は BYPASS というラベルの実行文に移り,プログラム C が実行されます。

#3
$ ON WARNING THEN EXIT 
   .
   .
   .
$ SET NOON 
$ RUN [SSTEST]LIBRA 
$ SET ON 
   .
   .
   .
 

この ON コマンドは警告,エラー,または重大なエラーが発生した場合に,プロシージャを終了させることを指定しています。その後,SET NOON コマンドは,RUN コマンドが実行される前に,エラー・チェックを禁止します。したがって,LIBRA.EXE というプログラムからどの状態コードが戻されても,プロシージャは処理を継続します。次の SET ON コマンドはエラー・チェックを再び有効にし,最新の ON 条件を再設定します。

#4
$ ON CONTROL_Y THEN GOTO CTRL_EXIT 
   .
   .
   .
$ CTRL_EXIT: 
$ CLOSE INFILE 
$ CLOSE OUTFILE 
$ EXIT 
 

ON コマンドで,プロシージャの実行中に Ctrl/Y が押された場合には,ラベル CTRL_EXIT へ制御を移すように指定しています。 CTRL_EXIT では,後処理 (この例の場合は,ファイルのクローズ) を実行します。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.