AS/400展望台

ジョブログはどこに?



グレッグ・フィックス著


ジョブログは障害のデバッグを実行したり、プログラムが仕様通りに実行されていることを確かめたり、ジョブに何が起きたかを調べたりするのに有効なツールです。しかし有効であるがゆえに、システム上で集められたジョブログすべての処理や管理が複雑になる場合もあります。V5R4の新しいWork with Job Logs(WRKJOBLOG)コマンドは、こうしたタスクの処理を容易にします。このコマンドを使用すれば、システム上で保留中のジョブログやスプールされているジョブログを、今までとは異なる方法で検索、表示、削除することができます。

保留状態にあるジョブのログについては特に目新しいことはありません。V5R4の新しいJob Log Output(LOGOUTPUT)ジョブ属性により、ジョブログの生成方法が決まります。*PNDは、LOGOUTPUT属性が取りうる値の1つで、ジョブの完了時にジョブログをスプールファイルに書き込む操作を遅らせるようシステムに指示します。その後、LOGOUTPUT(*PND)属性が付いたジョブのステータスは、LOGOUTPUT(*JOBEND)またはLOGOUTPUT(*JOBLOGSVR)属性が付いたジョブのジョブログが生成されたときにOUTQではなくJOBLOG PENDINGとなり、ジョブはこのどちらかのステータスに無期限にとどまることができます。保留中のジョブログの書き込みはスプールされているジョブログとはアクセスの方法も異なり、この両者に対して動作する単一のインタフェースはありません(少なくともWRKJOBLOGコマンドが導入されるまではありませんでした)。

WRKJOBLOGコマンドはV5R4のインタフェースで、スプールされている(WRKJOBLOGの出力中で*SPL状態にあるもの)または完了したジョブに対して保留中(WRKJOBLOGの出力中で*PND状態にあるもの)のどちらかの状態のジョブログに対して動作します。本稿ではこのコマンドと制御パラメータの詳細について説明します。

WRKJOBLOGの入力パラメータ
WRKJOBLOGコマンドに関連したパラメータとそのデフォルト値を図1に示します。WRKJOBLOGコマンドは、デフォルトではその日に終了した全てのジョブに対して保留中のジョブログの一覧を表示します。表示するジョブログの一覧の作成に使用するパラメータは、ジョブログ状態、時間、ジョブ名の3つです。

ジョブログ状態  ジョブログ状態はJob Log State(JOBLOGSTT)パラメータで指定します。一覧を作成するとき*PENDINGと*SPOOLEDのいずれかまたは両方を指定することができます。

時間  このパラメータはジョブログの選択に使用する時間を設定します。ジョブの完了に伴って作成された保留中のジョブログやスプールされているジョブログについては、ジョブが完了した日時になります。スプールされている他のジョブログについては、スプールされているジョブログが作成された日時になります。指定された開始時刻から終了時刻まで(両端含む)のジョブログが日時の昇順に表示されます。

ジョブ名 条件に適合したジョブの名前を使用してジョブを選択することもできます。選択基準として、全てのジョブのジョブログ、一般名で選択された全てのジョブのジョブログ、特定のジョブのジョブログを使用して、表示する一覧を作成します。

上記の3つのパラメータにより入力の柔軟性が高まり、一覧表示するジョブログのサイズを管理可能な大きさに縮小し、目的とするジョブログをピンポイントで指定することができます。

Work with Job Logsコマンドの結果の表示
WRKJOBLOGコマンドが実行されると、コマンドの選択基準に適合したジョブログの一覧が表示されます。本稿では、12個のSubmit Job(SBMJOB)コマンドを実行し、JOB01〜JOB12のそれぞれに対して異なるジョブ名(JOBパラメータ)を指定しました。たとえば1番目のコマンドは以下のようになります。

SBMJOB   CMD(CALL PGM(LIB/TSTCL))
       JOB(JOB01)
       LOG(4 0 *SECLVL)
       LOGOUTPUT(*PND)


LOGパラメータの値によりジョブ・メッセージ情報が保持されます。LOGOUTPUTパラメータの値により、ジョブが完了したときに保留されたジョブログが作成されます。サブミットされた各々のジョブの中でTest CLプログラム(TSTCL)が以下のみを実行します。

DSPJOBLOG   OUTPUT(*PRINT)
DLYJOB     DLY(2)

CLプログラムは、サブミットされたジョブに対して(完了したジョブのログではなく)スプールされたジョブログを作成し、2秒間待つことによってジョブの完了保留ジョブログの作成を遅らせています。

次のWRKJOBLOGコマンドはサブミットされたジョブによって生成されたすべてのジョブを集めます。

WRKJOBLOG JOBLOGSTT(*PENDING *SPOOLED)
       JOB(JOB*)


SBMJOBコマンドで生成された保留中のジョブログとスプールされたジョブログの一覧を図2に示します。JOB01〜JOB06の固有の各ジョブ名は、2つの一覧エントリにまとめられます。1つ目のエントリはDisplay Job Log(DSPJOBLOG)コマンドからのスプールされたジョブ・ログ(*SPL状態)で、2つ目のエントリはジョブが完了したときに自動的に生成される保留されたジョブログ(*PND状態)です。

WRKJOBLOGの結果は典型的なWork withパネルで表示され、オプション、一覧エリア、使用可能なファンクション・キーの3つの主要なセクションで構成されます。

オプション ジョブログのエントリのOption(Opt)カラムには4つのオプションのうちの1つを入力することができます。最も頻繁に使用されるオプションは5=Displayと4=Deleteです。

オプション5を選択すると、システムはDSPJOBLOGコマンドを使用して保留中のジョブ・ログを自動的に表示するか、またはスプールされているジョブログに対してDisplay Spooled File(DSPSPLF)コマンドを発行してスプールファイルを自動的に表示します。保留中のジョブログ(状態カラムが*PNDとなっているもの)は、一覧が表示されている間にスプールされているジョブログに遷移することもあります。オプション5はこのような状況でも動作しますが、出力されるフォーマットは所望のDSPJOBLOGコマンドのフォーマットではなくDSPSPLFコマンドのフォーマットとなります。遷移した場合の詳細については後述します。

オプション4はジョブログを削除します。[Enter]キーを押すと、このオプションを選択したか否かの確認を求められ、確認してからジョブログが削除されます。システムはRemove Pending Job Log(QWTRMVJL) APIを使用して保留中のジョブログを削除し、Delete Spooled File(DLTSPLF)コマンドを使用してスプールされているジョブログを削除します。一覧を表示している間に保留中のジョブログがスプールされているジョブログに遷移した場合でもこのオプションは動作し、ジョブログ要求を実行します。

一覧エリア 一覧エリアには各ジョブログのエントリと複数のカラムに対して1つの行が割り当てられています。主なカラムとしては日付、時刻、状態があります。

ジョブが完了すると、生成されたジョブログがジョブの完了日付と時刻を表示します。ここで示した例では、ジョブログは固有の各ジョブに対して*PNDエントリとなっています。DSPJOBLOGコマンドで生成されたジョブログなど、スプールされているその他のジョブログについては、そのスプールファイルが作成された日時が表示されます。ここで示した例では、ジョブログは固有の各ジョブに対して*SPLエントリとなっていて、完了したジョブログよりも2秒早い時刻が付けられています。

ファンクション・キー
 WRKJOBLOG表示一覧を表示している間に完了したジョブは、たとえ選択基準に適合していたとしても、自動的に一覧に表示されるわけではありません。F5=Refreshキーを押して一覧を更新すると、こうしたジョブも一覧に追加されます。

ファンクション・キーを使用して、ジョブログの一覧の管理および操作ができます。選択基準に照らし合わせた結果、ジョブログのエントリが数千件になってしまった場合、F17キーとF18キーを使用して一覧の最初のページと最後のページを切り替えることができます。

一覧の中に埋もれている特定のジョブログを探し出したい場合は、F14=FindキーとF15=Repeatキーを使用してカラム中の特定のデータを検索することができます。F14キーを使用してジョブ名JOB05のエントリを検索した結果を図3に示します。ここではStringフィールドにJOB05と入力し、Columnフィールドに*JOBと入力してから[Enter]キーを押しています。Jobカラムが検索条件に合致した最初のエントリが、一覧の先頭に表示されていた「文字列を探す」に代わって表示されます(図4)。F15キーを押すことで、先ほど入力した条件と同じ条件で検索を繰り返し、次に条件に合致したエントリが一覧の先頭に移動します。図4に示す、次に合致した検索結果は、Stateカラムの値が*PNDである次の一覧エントリです。

ジョブとジョブログの遷移
ジョブやジョブログが、ある状態から別の状態に遷移したときにステータスが変化します。ジョブはアクティブな状態にあるときはACTIVEステータスにあり、ジョブが終了するとJOBLOG PENDINGまたはOUTQステータスに変化します。ジョブログはジョブがアクティブな状態にある間に生成されてジョブ・メッセージが溜まっていき、ジョブ終了時に保持されるかスプールファイルに書き出されます。ジョブログは保留状態からスプールされている状態に遷移することができますが、スプールされている状態から保留状態へは遷移できません。完了したジョブに対するスプールされているジョブログは、そのジョブから切り離すことができ、そのジョブをシステムから削除することができます。

SBMJOBコマンドには、Message Logging(LOG)、Job Log Output(LOGOUTPUT)、Spooled File Action(SPLFACN)の3つのパラメータがあり、ジョブとジョブログの遷移を制御しています。

メッセージ・ロギング LOGパラメータはジョブが完了したときにジョブログを保持するかどうかを制御します。 LOGパラメータの3番目の要素のデフォルト値は*NOLISTで、ジョブが正常に終了したときにジョブログを保持しないことを意味します。ここで示す例では、このパラメータにLOG(4 0 *SECLVL)を設定し、ジョブが完了したときにジョブログが確実に保持されるようにしています。

ジョブログの出力
  LOGOUTPUTパラメータには3つの特別な値があります。 *JOBENDはジョブ終了時にジョブログのスプールファイルを生成します。*JOBLOGSVRはジョブ終了後にサーバージョブを使用してジョブログのスプールファイルを生成します。*PNDはジョブログの情報を保持しますが、ジョブログの生成は保留します(ジョブログのスプールファイルを生成しません)。

スプールファイルのアクション SPLFACNパラメータには2つの特別な値があります。*KEEPはジョブのスプールファイルのいずれか(ジョブログを含む)がシステム上にある場合、そのジョブをシステム上に残します。*DETACHはスプールファイルをジョブから切り離し、ジョブをシステムから削除します。ジョブが完了したときにジョブの属性がLOGOUTPUT(*PND)およびSPLFACN(*DETACH)に設定されている場合、保留中のジョブログとジョブはシステム上に残ります。保留中のジョブログがスプールされている状態に遷移した場合、そのジョブログは切り離され、ジョブもシステムから削除されます。

下に示す例ではSBMJOBコマンドを実行しています。

SBMJOB   CMD(DLYJOB DLY(1))
        JOB(PND2SPL)
        LOG(4 0 *SECLVL)
        LOGOUTPUT(*PND)
        SPLFACN(*KEEP)


例1:ジョブログの*PNDから*SPLへの遷移 保留されたジョブログを残した完了ジョブに対しては、ジョブログの状態はChange Job(CHGJOB)コマンドを使用してスプールファイルの状態に遷移させることができます。遷移させるには、PND2SPLのジョブに対してオプション12=Work with jobを選択し(図5)、オプション40を使用して*JOBENDまたは*JOBLOGSVRをLOGOUTPUTパラメータに指定してジョブを変更します。[Enter]キーを押すとWork with Job Logs表示に戻ります。

一覧表示は更新されず、保留中のジョブログ(*PND)1つが表示されたままです。実際は、そのエントリはスプールファイル内にあります。オプション5を選択してこのエントリを表示する場合、その出力はDSPJOBLOGコマンドではなくDSPSPLFコマンドによってフォーマットされます。F5キーを使用してステータスを更新すると、図6に示すように状態カラムには*SPLと表示されます。

例2:ジョブの削除(スプールファイルの分離) 別の遷移の例でスプールファイルを分離してみます。最初の例と同じように、オプション12を入力してジョブを処理します。次にオプション40を入力してSPLFACNパラメータに*DETACHという値を指定してジョブを変更します。[Enter]キーを押すとWork with Job Logs表示に戻ります。

スプールファイルがジョブから分離されるので、そのジョブは必要なくなりシステムから削除されます。その結果、オプション12を使用してもう一度そのジョブを処理しようとすると、ジョブは見つかりませんというメッセージが表示されます(図7の画面の一番下)。F5キーを押すとエントリは残り、メッセージは消えます。

例3:ジョブログとジョブの削除 この例では、最初の例と同じジョブログ一覧を使用します。 オプション12を使用してPND2SPLというジョブを処理し(図5)、次にオプション41を選択してLOGLMTパラメータに0を指定してジョブを終了させます。[Enter]キーを押すとWork with Job Logs表示に戻ります。

(更新を行わずに)オプション5またはオプション12を選択すると、ジョブが見つかりませんというメッセージが表示されます。F5キーを押すとそのエントリは消えて、空の一覧が表示されます。完了したジョブに対してLOGLMT(0)が発行され、そのジョブログがまだスプールファイルに書き出されていない場合、LOGOUTPUTジョブ属性の値に関係なくそのジョブログは削除されます。ジョブに対してスプールされている出力が存在しない場合もジョブは削除されます。

この例では、ジョブの保留されたジョブログに対してユーザーが別にWRKJOBLOGを起動してオプション4=Deleteを選択するか、QWTRMVJL APIを使用してそのジョブログを削除したときの動作も示しています。

さあ、WRKJOBLOGコマンドを使いましょう
WRKJOBLOGコマンドは、完了したジョブの保留中のジョブログやスプールされたジョブログを管理するのに理想的なコマンドです。このコマンドは、一覧の中から目的とするジョブを選択、検索、表示、削除する便利な機能を提供します。ジョブとジョブログの遷移に対する意識を高め理解を深めることで、WRKJOBLOGが生成した一覧を使用する際に予期せぬメッセージが表示されても対応できるようになります。ジョブログに管理されてはいけません。V5R4のWRKJOBLOGコマンドでジョブログを管理してください。

グレッグ・フィックスはIBMに勤務し、i5/OSのソフトウェア・エンジニアとして作業管理の分野を担当しています。同氏はオペレーティング・システム・ソフトウェアの開発に19年にわたって従事しており、WRKJOBLOGコマンドの開発者でもあります。余談ですが、同氏はビリヤードのプロとしても20年以上のキャリアがあり、1993年には世界ランキング9位の実績があります。



↑このページのトップへ
TOPPAGE

BELLDATA, Inc. Copyright reserved.