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


OpenVMS マニュアル


 

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

タイトルページ
目次
まえがき
第 1 章:OpenVMS オペレーティング・システムの概要
第 2 章:DCL を使用したシステムとの会話
第 3 章:ファイル情報の格納
第 4 章:ディレクトリ・ファイルの編成
第 5 章:拡張ファイル指定
第 6 章:ディスクとテープ・ドライブの使用方法
第 7 章:Mail を使用して他のユーザと通信する
第 8 章:EVE エディタによるテキスト・ファイルの編集
第 9 章:ファイルのソートとマージ
第 10 章:資源へのアクセスの制御
第 11 章:デバイスとファイルの論理名定義
第 12 章:シンボル,コマンド,式の定義
第 13 章:コマンド・プロシージャの概要
第 14 章:DCL での拡張プログラミング
第 15 章:レキシカル関数を使用しての情報の取得と処理
第 16 章:プロセスとバッチ・ジョブ
付録 A :文字セット
付録 B :コマンド・プロシージャの例
用語集
索引
PDF
OpenVMS ホーム
OpenVMS

OpenVMS
ユーザーズ・マニュアル


目次 索引

次の例では,修飾子を使用して,出力を SYS$OUTPUT に送信する方法を示しています。

$ FORTRAN/LIST=SYS$OUTPUT  BIGCOMP 
$ LINK/MAP=SYS$OUTPUT/FULL BIGCOMP 

バッチ・ジョブの中でこれらのコマンドが実行されると,コンパイラとリンカからの出力ファイルは直接ログ・ファイルに書き込まれます。

16.5.4 バッチ・ジョブ属性の変更

ジョブをキューに登録しても,ジョブの実行開始前であれば, SET ENTRY または SETQUEUE/ENTRY コマンドと一緒に適切な修飾子を使用すれば,ジョブに関連する属性を変更できます。

次の例では,バッチ・ジョブをバッチ・キューに保留した状態で,バッチ・ジョブの名前を変更するために使用できる 2 種類の方法を示しています。

$ SET QUEUE/ENTRY=209/NAME=NEW_NAME SYS$BATCH

$ SET ENTRY 209 /NAME=NEW_NAME

どちらのコマンドも,ジョブ番号 209 の名前を NEW_NAME に変更します。

SET ENTRY または SET QUEUE/ENTRY コマンドで変更できる内容の一部を次に示します。修飾子の完全なリストは,『OpenVMS DCL ディクショナリ』を参照してください。 SUBMIT コマンドで指定できるほとんどの修飾子が SET ENTRY と SET QUEUE/ENTRY コマンドでも使用できます。

次のような変更を加えることができます。

  • ジョブの実行開始を遅らせる。
    ジョブを実行できるようになる時間を指定するには /AFTER 修飾子を,明示的に解放するまでジョブを保留するには /HOLD 修飾子を使用する。

  • ジョブを解放する。
    /HOLD または /AFTER 修飾子でキューに登録されたジョブを解放するには, /NOHOLD または /RELEASE 修飾子を使用する。

  • ジョブを別のキューへ移動する。
    ジョブを実行するキューを変更するには,/REQUEUE 修飾子を使用する。

  • 実行属性を変更する。
    ワーキング・セットの省略時の値,ワーキング・セットの超過値,ワーキング・セットのサイズ,ジョブ・スケジューリング優先順位, CPU 時間制限などの実行属性を変更する。

  • ジョブに渡すパラメータを変更する。
    パラメータを変更するには,/PARAMETERS 修飾子を使用する。



16.5.5 SUBMIT コマンド修飾子

バッチ・ジョブの特性を制御するために SUBMIT コマンドに対して指定できる修飾子は次のとおりです。省略時のワーキング・セット,ワーキング・セットの超過値,ワーキング・セット・サイズ,ジョブ・スケジューリング優先順位, CPU 時間制限など,実行属性も指定できます。

/AFTER
バッチ・ジョブを実行できるようになる時間を指定する。ジョブは,指定された時間になるまでバッチ・キューに留まる。ユーザがジョブを明示的に解放するまでキューの中に保留するには, /HOLD 修飾子を使用する。保留されているジョブを解放するには, SET ENTRY/RELEASE コマンドを使用する。
/NAME
バッチ・ジョブの名前を指定する。これを指定しないと,ジョブ名の省略時の値は,ジョブの中の最初の (または唯一の) コマンド・プロシージャのファイル名になる。
/NOTE
SHOW QUEUE/FULL コマンドを実行した結果に表示されるメッセージ文字列を指定する。ジョブについての情報をオペレータやシステム管理者に伝達できるようになる。
/NOTIFY
ジョブの完了を通知するように要求する。バッチ・ジョブの実行が終了すると,システムはメッセージをターミナルに送信する。
/PARAMETERS
パラメータをバッチ・ジョブに渡す。
/NOPRINTER または /KEEP
バッチ・ジョブ・ログ・ファイルをセーブする。
/QUEUE
バッチ・ジョブを SYS$BATCH 以外のキューに送信する。リモート・ノードにあるコマンド・プロシージャを実行するには,/REMOTE 修飾子を使用する。このとき,ジョブはリモート・ノードの SYS$BATCH に送信される。
/RESTART
ジョブの実行中にシステムに障害が生じた場合に,ユーザがジョブを再開できるようにする。
/RETAIN
バッチ・ジョブが完了してもバッチ・ジョブをキューの中に残す。ジョブの完了状態を調べるには,SHOW QUEUE または SHOW ENTRY コマンドを使用する。


ジョブがバッチ・ジョブ・キューに登録されていれば, SHOW ENTRY コマンドまたは SHOW QUEUE コマンドを使用してジョブの状態を監視できます。キューの中にジョブが存在しない場合には,次のメッセージが表示されます。

$  SHOW QUEUE BOSTON_BATCH
Batch queue BOSTON_BATCH, on BOSTON::

ジョブに関する完全な情報を表示するには, SHOW ENTRY または SHOW QUEUE コマンドに /FULL 修飾子を指定します。キューの中の他のジョブの状態を表示するには, SHOW QUEUE/ALL コマンドを使用します。

次の例では,エントリ番号 999 が表示されます。

$ SUBMIT EXCHAN.DAT 
Job EXCHAN (queue SYS$BATCH entry 999) started on SYS$BATCH 
$ SHOW ENTRY 999 
 
  Entry  Jobname         Username     Blocks  Status 
  -----  -------         --------     ------  ------ 
    999  EXCHAN          BLASS             3  Executing 
         On batch queue SYS$BATCH 

$ SUBMIT/NOPRINTER/PARAMETER=STATS.DAT UPDATE 
Job UPDATE (queue SYS$BATCH entry 1080) started on BOSTON_BATCH 
$ SHOW QUEUE BOSTON_BATCH 
Batch queue BOSTON_BATCH on BOSTON:: 
 
  Entry  Jobname         Username     Blocks  Status 
  -----  -------         --------     ------  ------ 
   1080  UPDATE          ODONNELL         36  Executing 

次の例では,/FULL 修飾子が指定されているため,BOSTON_BATCH に関する統計情報と,ジョブ番号 999 に関連する属性が表示されます。

$ SHOW ENTRY/FULL 999 
 
  Entry  Jobname         Username     Blocks  Status 
  -----  -------         --------     ------  ------ 
    999  EXCHAN          BLASS             3  Executing 
         On batch queue BOSTON_BATCH 
         Submitted 11-DEC-1999 13:12 /PRIORITY=100 
         WRKD:[BLASS]EXCHAN.DAT;3 

$ SHOW QUEUE/FULL BOSTON_BATCH 
Batch queue BOSTON_BATCH, on BOSTON:: 
    /BASE_PRIORITY=3 /JOB_LIMIT=5 /OWNER=[EXEC] /PROTECTION=(S:E,O:D,G:R,W:W) 
 
  Entry  Jobname         Username     Blocks  Status 
  -----  -------         --------     ------  ------ 
   1080  UPDATE          ODONNELL         36  Executing 
    Submitted 11-DEC-1999 10:46 /KEEP /PARAM=("STATS.DAT") /NOPRINTER /PRIO=4 
    _BOSTON$DQA2:[ODONNELL]TEMP.COM;1 (executing) 

次の例では,SHOW QUEUE/ALL コマンドを使用して, BOSTON_BATCH キュー内のすべてのジョブを表示します。

$ SHOW QUEUE/ALL BOSTON_BATCH 
Batch queue BOSTON_BATCH on BOSTON:: 
 
  Entry  Jobname         Username             Status 
  -----  -------         --------             ------ 
    923  no privilege                         Executing 
    939  no privilege                         Holding until 11-DEC-1999 19:00 
   1080  UPDATE          ODONNELL             Executing 

特権ユーザの場合を除いて,自分のアカウントでキューに登録されたジョブの情報しか表示されないことに注意してください。

16.5.7 バッチ・ジョブの削除と終了

バッチ・ジョブは,実行前でも実行中でも削除できます。保留中またはすでにバッチ・キューで実行されている項目を削除するには, DELETE/ENTRY コマンドを使用します。自分がキューに登録しなかったジョブを削除するには,特別な特権が必要です。 DELETE/ENTRY コマンドの結果としてジョブが終了した場合は,ログ・ファイルは印刷されず,ディレクトリからも削除されません。

DELETE/ENTRY コマンドを使用してジョブを終了した場合は,オペレーティング・システムの通常のジョブ終了アクティビティが先取りされるため,異常終了として扱われます。この結果,バッチ・ジョブ・ログには,ジョブ時間と会計情報を要約した標準ログアウト・メッセージは収められません。ただし,明示的に EXIT コマンドまたは STOP コマンドを出して終了した場合やこのいずれかのコマンドを (現在の ON 状態の結果として) 暗黙に実行して終了した場合には,正常終了とみなされます。正常終了後,オペレーティング・システムは,正しいランダウンおよび会計情報プロシージャを実行します。

次のコマンドは SYS$BATCH のなかでジョブ・エントリ 210 を削除しています。

$ DELETE/ENTRY=210 SYS$BATCH



16.5.8 バッチ・ジョブの再開

バッチ・ジョブの実行中にシステムが異常終了した場合には,ジョブは完了しません。システムが回復してキューが再開されると,実行中のジョブは強制終了され,キューの中の次のジョブが実行されます。ただし,バッチ・ジョブをキューに登録するときに /RESTART 修飾子を指定しておけば,ジョブが終了する前にシステムがクラッシュしても,システムが復旧した後,そのジョブは再実行されます。

省略時の設定では,バッチ・ジョブは最初の行から再実行されます。コマンド・プロシージャにシンボルを追加すれば,別の場所から実行を再開できますが,これについては 第 13 章第 14 章 を参照してください。

システム・クラッシュ後のジョブの再開に加えて,ジョブを明示的に終了した後でもジョブを再開できます。ジョブを終了した後,同じキューまたは別のキューでジョブを再開するには,STOP/QUEUE/REQUEUE/ENTRY コマンドを使用します。

この例に示したコマンドは,SYS$BATCH のジョブ 212 を停止し, SYS$BATCH に再登録します。

$ STOP/QUEUE/REQUEUE/ENTRY=212 SYS$BATCH

このコマンドを入力するには,ジョブ 212 が SUBMIT コマンドに /RESTART 修飾子を指定して登録されていなければなりません。バッチ・ジョブを 2 度目に実行する場合,システムは,グローバル・シンボル BATCH$RESTART を使用してどこからジョブの実行を開始するかを判別します。

16.5.9 バッチ・ジョブ実行の同期化

コマンド・プロシージャの中で SYNCHRONIZE コマンドと WAIT コマンドを使用すれば,プロシージャを待ち状態に置くことができます。SYNNCHRONIZE コマンドを指定すると,プロシージャは指定されたジョブが完了するのを待ちますが, WAIT コマンドを指定すると,指定された時間が経過するのを待ちます。

SYNCHRONIZE コマンドでジョブ名を指定する場合は,同期化するジョブがユーザ名と対応している必要があります。通常ジョブは,そのジョブをキューに登録するプロセスのユーザ名と対応しています。異なるユーザ用のジョブを同期化するには, SYNCHRONIZE コマンドに /ENTRY 修飾子を付けて,ジョブ・エントリ番号を指定しなければなりません。

たとえば,2 つのジョブを同時にキューに登録して共同作業を行う場合,一方のジョブには次のコマンドを指定できます。

$ SYNCHRONIZE BATCH25 

このコマンドを実行すると,ジョブ名 BATCH25 を持つジョブの実行が完了するまで,コマンド・プロシージャの実行を継続できません。

この SYNCHRONIZE コマンドは,ジョブ 454 が完了するまで,現在のコマンド・プロシージャを待ち状態に置きます。

$ SYNCHRONIZE/ENTRY=454

図 16-1 は,並行して実行するためにキューに登録されたが,正しく実行するためには同期化しなければならないコマンド・プロシージャの例です。それぞれのプロシージャが大きなソース・プログラムをコンパイルします。

図 16-1 バッチ・ジョブ実行の同期化


例を確認するときは,次のことに注意してください。

  1. それぞれの SUBMIT コマンドで 2 つのジョブをキューに登録することが要求されている。最初のプロセスが作成される。

  2. FORTRAN コマンドの実行後,SYNCHRONIZE コマンドが実行される。ジョブ 315 が現在のジョブまたは待ち状態のジョブの場合には,ジョブ 314 は次のコマンドを実行しない。

  3. ジョブ 315 の実行が完了すると,ジョブ 314 は次のコマンドを実行する。



16.5.10 WAIT コマンドの使用方法

WAIT コマンドは,コマンド・プロシージャがディスクやテープ・ドライブなどの共用システム資源へアクセスしなければならない場合に便利です。

次の例は,テープ・ドライブの割り当てを要求するプロシージャです

$ TRY: 
$      ALLOCATE DM: RK: 
$      IF $STATUS THEN GOTO OKAY 
$      WAIT 00:05 
$      GOTO TRY 
$ OKAY: 
$ REQUEST/REPLY/TO=DISKS - 
     "Please mount BACK_UP_GMB on ''F$TRNLNM("RK")'" 
   .
   .
   .

WAIT コマンドが正常に終了しないと,プロシージャは待ち状態になります。 5 分後に,要求を再試行します。

ALLOCATE 要求の後の IF コマンドは,$STATUS の値をチェックします。 $STATUS の値が正常終了を示している場合には,コマンド・プロシージャは継続されますが,そうでない場合には, WAIT コマンドが実行されます。WAIT コマンドは,5 分の時間間隔を指定しています。 5 分待機した後,次のコマンド GOTO が実行され,要求が繰り返されます。このプロシージャは,正常終了するまで,またはバッチ・ジョブが削除されるか終了されるまで,ループを繰り返し,デバイスを割り当てようとします。


目次 索引

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