1

OpenVMS DCLコマンドは次のようHELP ON EXAMPLEに表示します。

オン

   1.$ ON SEVERE_ERROR THEN CONTINUE

     A command procedure that contains this statement continues
     to execute normally when a warning or error occurs during
     execution. When a severe error occurs, the ON statement signals
     the procedure to execute the next statement anyway. Once
     the statement has been executed as a result of the severe
     error condition, the default action (ON ERROR THEN EXIT) is
     reinstated.

ヘルプによると、どちら[-]x.for[-]y.for存在しない場合、最後の 2 行は実行されません。

$ on error then $ continue
$ rename [-]x.for []
$ rename [-]y.for []
$ type *.for

スクリプトの各行の間にステートメントをON ERROR配置せずに、最初の行のように処理を設定する方法はありますか?ON ERROR

4

1 に答える 1

4

ON ERROR が発生した場合は、再確立する必要があります。ファイルが存在するかどうかわからないようです。そのため、最初に失敗したコマンドの後に ON ERROR を再確立する必要があります。

次のように、サブルーチンでこれを行うことができます。

$ on error then $ gosub on_error
$ rename [-]x.for []
$ rename [-]y.for []
$ on error then $ exit
$ type *.for
$ exit
$
$ on_error:
$ on error then $ gosub on_error
$ return

また、エラー チェック (SET NOON) を無効にして、これを別の方法で処理することもできます。

$ set noon
$ rename [-]x.for []
$ rename [-]y.for []
$ set on
$ type *.for

またはサーバー エラーのみのエラー処理を確立する (ON SEVERE_ERROR):

$ on severe_error then $ exit
$ rename [-]x.for []
$ rename [-]y.for []
$ on error then $ exit
$ type *.for
于 2014-12-12T13:02:15.977 に答える