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


前へ 次へ 目次 索引


16.5.2 バッチ・ジョブへのデータの受け渡し

バッチ・ジョブの省略時の入力ストリーム(SYS$INPUT)は,実行中のコマンド・プロシージャです。独立プロセスがバッチ・ジョブを実行しているため,(会話形式で実行するコマンド・プロシージャの場合のように)SYS$INPUT をターミナルに再定義することはできません。バッチ・ジョブに入力を渡すには,次のいずれかの方法を使用します。

1 つのジョブの中ではそれぞれのコマンド・プロシージャに別々のパラメータは指定できません。別々のパラメータを渡す必要がある場合には,それぞれのコマンド・プロシージャに対して SUBMIT コマンドを使用します。

次の例では,データ行がイメージ AVERAGE.EXE に渡されます。


$! Execute AVERAGE.EXE 
$ RUN AVERAGE 
647 
899 
532 
401 
$ EXIT 

次の例では,SYS$INPUT はファイルとして一時的に定義されます。


$ DEFINE/USER_MODE SYS$INPUT STATS.DAT 
$ RUN AVERAGE 
$ EXIT 

次の例では,ファイル EMPLOYEES.DAT のパラメータがコマンド・プロシージャ CHECKS.DAT に渡されます。


$ SUBMIT/PARAMETERS=(DISK1:[PAYROLL]EMPLOYEES.DAT)CHECKS
Job CHECKS(queue SYS$BATCH, entry 209)started on SYS$BATCH

注意

SHOW QUEUE/FULL コマンドは,バッチ・キューの中のジョブについての完全な情報を表示します。この中には,プロシージャに渡すパラメータも含まれるため,バッチ・ジョブにはパスワードなどの機密情報は渡さないでください。

16.5.3 バッチ・ジョブ出力の制御

省略時の設定では,ログ・ファイルはバッチ・ジョブの中の最初のコマンド・プロシージャと同じ名前を持ち,ファイル・タイプは .LOG になります。システムは,バッチ・ジョブからの出力を 1 分おきにログ・ファイルに書き込みます。これとは異なる時間間隔を指定するには,コマンド・プロシージャに SET OUTPUT_RATE コマンドを指定します。

システムがログ・ファイルに書き込みを行っているときに,EDT エディタを使用してログ・ファイルを読み込もうとすると,ファイルが別のユーザによってロックされていることを示すメッセージが出されます。この場合は,数秒待ってから,もう一度読み込んでください。ただし,EVE エディタを使用すると,同じ状況でもバッチ・ジョブのログ・ファイルを読み込めます。EDIT/TPU/READ_ONLY とログ・ファイルの名前を指定すれば,EVE コマンドを使用してログ・ファイルの中を参照でき,ファイルを変更しても,その内容はセーブされません。/READ_ONLY 修飾子を指定せずに,何らかの方法でログ・ファイルを変更すると,バッチ・ジョブは終了します。

バッチ・ジョブはユーザのユーザ名でログインし,そのユーザのパーソナル・ログイン・コマンド・プロシージャを実行するプロセスなので,バッチ・ジョブからの出力にはパーソナル・ログイン・コマンド・プロシージャの内容も含まれます。バッチ・ジョブからの出力には,バッチ・ジョブ・ログ・ファイルに書き込まれたすべての情報(コマンド・プロシージャ出力,エラー・メッセージなど)と完全なログアウト・メッセージも含まれています。パーソナル・ログイン・コマンド・プロシージャがバッチ・ログ・ファイルに書き込まれないようにするには,パーソナル・ログイン・コマンド・プロシージャの始めに次のコマンドを追加します。


$ IF F$MODE().EQS. "BATCH" THEN SET NOVERIFY

省略時の設定では,ログ・ファイル名は,ジョブをキューに登録したときの名前になります。また,省略時の設定では,ログ・ファイルは,ファイル・タイプ .LOG を持ち,ログイン時の省略時の値によって指定されたデバイスとディレクトリを想定します。ジョブをキューに登録するときに別のログ・ファイル名を指定するには,SUBMIT コマンドに /LOG_NAME 修飾子を使用します。

バッチ・ジョブ・ログ・ファイルには,SYS$OUTPUT と SYS$ERROR へのすべての出力が収められます。また,省略時の設定では,コマンド・プロシージャで実行されるすべてのコマンド行も収められます。コマンド行が印刷されないようにするには,コマンド・プロシージャの中で SET NOVERIFY コマンドまたは F$VERIFY レキシカル関数のいずれかを使用します。ジョブが完了すると,システムは(長いシステム・ログアウト・メッセージ形式を使用して)ジョブ終了情報をログ・ファイルに書き込みます。

SET VERIFY コマンドが有効な場合には,SET PREFIX コマンドを使用してそれぞれのコマンド行を時刻印字すれば,それぞれのコマンド行が実行される正確な時間を知ることもできます。

バッチ・ジョブを正しく実行できない場合には,ログ・ファイルを調べて,コマンド・プロシージャに障害が生じたポイントと障害を引き起こしたエラー状態を判別します。

ログ・ファイルのセーブ

ログ・ファイルをセーブするには,/KEEP または /NOPRINTER 修飾子を使用します。/KEEP 修飾子は印刷後にログ・ファイルをセーブし,/NOPRINTER 修飾子はログ・ファイルを印刷せずにセーブします。いずれの修飾子も指定しないと,省略時のアクションがとられて,ログ・ファイルは省略時の印刷キューである SYS$PRINT に登録され,印刷後は削除されます。/KEEP 修飾子と /NORPINTER 修飾子は,ログ・ファイルを省略時のログイン・ディレクトリにセーブします。ログ・ファイルはバッチ・ジョブの中の最初のコマンド・プロシージャと同じ名前を持ち,ファイル・タイプは .LOG です。別のファイル名やディレクトリ名,またはその両方を指定するには,/LOG_FILE修飾子を使用します。ログ・ファイルのファイル指定を変更してセーブするには,/LOG_FILE に加えて,/KEEP または /NOPRINTER のいずれかを指定しなければなりません。

次の例では,ログ・ファイルが DISK2:[JONES.RESULTS]UPDATE.LOG という名前のファイルにセーブされます。


$ SUBMIT/LOG_FILE=DISK2:[JONES.RESULTS]/NOPRINTER -
_$ DISK2:[JONES.RESULTS]UPDATE

ログ・ファイルの読み込み

TYPE コマンドを使用すると,ログ・ファイルを読み込んでバッチ・ジョブがどの程度完了したかを判別できます。ただし,システムがログ・ファイルに書き込みを行っているときにログ・ファイルを表示しようとすると,ファイルが別のユーザによってロックされていることを示すメッセージが出されます。この場合には,数秒待ってから,もう一度試してください。

バッチ・ジョブ・ログにすべてのコマンド出力を指定する

通常,プログラムをコンパイルしたりリンクしたり実行したりするバッチ・ジョブ・コマンド・プロシージャは,コンパイラ・リストやリンカ・マップなどの印刷済みの出力を生成します。このようなファイルの印刷済みコピーを生成するには,バッチ・ジョブ・コマンド・プロシージャにファイルを印刷するのに必要な PRINT コマンドを指定します。

バッチ・ジョブ・ログに,コンパイラまたはリンカ出力ファイルの印刷済みリストを含む,コマンド・プロシージャからのすべての出力を収めたい場合には,次のいずれかを実行します。

このコマンド・プロシージャの処理が終了すると,バッチ・ジョブ・ログ,コンパイラ・リスト,リンカ・マップの 3 つの出力リストが生成されます。


$ FORTRAN/LIST BIGCOMP 
$ PRINT BIGCOMP.LIS 
$ LINK/MAP/FULL BIGCOMP 
$ PRINT BIGCOMP.MAP 

次の例では,修飾子を使用して,出力を 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 コマンドでも使用できます。

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

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 コマンドを使用する。

16.5.6 バッチ・キューの中のジョブの表示

ジョブがバッチ・ジョブ・キューに登録されていれば,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


前へ 次へ 目次 索引