CL保守でよく確認するCALL、SBMJOB、MONMSG、CPF0000を中心に、ジョブログとライブラリリストを見ながら処理の流れを確認する手順を整理しています。
AS400 / IBM i のCLは、コマンドを順番に実行して、RPGプログラムの呼び出し、バッチ投入、ファイルの一時的な切り替え、エラー時の処理を制御するための言語です。CLだけで業務処理のすべてを書くというより、RPGやコマンドをつなぐ「運用と制御の入口」として使われることが多いです。
この記事では、CL保守でよく出るCALL、SBMJOB、MONMSG、OVRDBF、DLTOVR、ライブラリリスト、ジョブログ確認を、初心者でも実務で追える順番で整理します。
CLで見る全体像
| 見る場所 | 意味 | 保守で見るポイント |
|---|---|---|
| PGM / ENDPGM | CLプログラムの開始と終了 | PARMで受け取る値があるか確認する |
| DCL | 変数定義 | 型、桁数、初期値を確認する |
| CHGVAR | 変数への代入 | 日付、ゼロ埋め、文字連結を確認する |
| IF / DO / ENDDO | 条件分岐 | どの条件で後続処理へ進むかを見る |
| CALL | 別プログラムを呼び出す | RPG側の更新やパラメータを確認する |
| SBMJOB | 別ジョブとして投入する | 投入後すぐ戻るため、完了確認が別途必要 |
| MONMSG | メッセージ発生時の処理 | エラーを握りつぶしていないか見る |
| OVRDBF / DLTOVR | ファイル参照先の一時変更と解除 | 解除漏れ、対象ファイル違いに注意する |
CALLとSBMJOBの違い
CALL は、その場で別プログラムを呼び出して、基本的には処理が戻るまで待ちます。画面処理や前後関係が重要な処理でよく使われます。一方、SBMJOB はジョブキューへ投入し、バッチジョブとして別に実行させます。CL側は投入した時点で次へ進むため、後続処理が「バッチ完了後」を前提にしていないか確認が必要です。
PGM PARM(&ORDNO) DCL VAR(&ORDNO) TYPE(*CHAR) LEN(10) CALL PGM(ORDERLIB/ORDRPG) PARM(&ORDNO) ENDPGM
SBMJOB CMD(CALL PGM(ORDERLIB/ORDRPG)) +
JOB(ORDUPD) JOBQ(QBATCH)
MONMSGの読み方
MONMSG は、CLで発生したメッセージを監視して、エラー時の処理を指定する命令です。保守で特に注意したいのは、CPF0000 のような広い指定で何でも拾い、そのまま処理を続けてしまう書き方です。エラーを通知して止めるのか、代替処理へ進めるのか、ログだけ残してよいのかを確認します。
CLRPFM FILE(WORKLIB/WORKPF)
MONMSG MSGID(CPF0000) EXEC(DO)
SNDPGMMSG MSG('前処理でエラー。ジョブログを確認してください。')
RETURN
ENDDO
MONMSG は置く位置も重要です。直前のコマンドだけを監視しているのか、プログラム全体のメッセージを監視しているのかで意味が変わります。特定のエラーだけを処理したい場合は、環境のジョブログで実際のメッセージIDを確認し、必要以上に広い指定にしない方が安全です。
OVRDBFとDLTOVR
OVRDBF は、プログラムが参照するファイルを一時的に別のファイルやメンバーへ切り替える時に使われます。テスト用ファイル、ワークファイル、特定メンバーの指定などで使われます。便利ですが、どの範囲に効いているかを誤ると、本番データを見ているつもりで別ファイルを見ていた、という事故につながります。
OVRDBF FILE(ORDERPF) TOFILE(TESTLIB/ORDERPF) CALL PGM(ORDERLIB/ORDRPG) DLTOVR FILE(ORDERPF)
DLTOVR はオーバーライドの解除です。CLの途中でエラーになった時も解除される設計になっているか、同じジョブ内の後続処理に影響しないかを確認します。
ライブラリリストを確認する
CLでは、プログラム名やファイル名をライブラリ省略で書くことがあります。その場合、実際にどのオブジェクトが使われるかはライブラリリストに依存します。本番、検証、開発で同じCLを動かしても、ライブラリリストが違えば参照先が変わります。
| コマンド | 見ること | 注意点 |
|---|---|---|
| DSPLIBL | 現在のライブラリリスト | 本番/検証/開発の順序差を見る |
| ADDLIBLE | ライブラリ追加 | 同名オブジェクトの解決順序が変わる |
| CHGLIBL | ライブラリリスト変更 | 後続処理全体へ影響する |
| CALL PGM(LIB/PGM) | 明示ライブラリ指定 | 環境固定になっていないか確認する |
| CALL PGM(PGM) | *LIBL参照 | 実行時のライブラリリスト確認が必須 |
CL保守で危ない見落とし
- SBMJOBで投入しただけで、完了したと思ってしまう
- MONMSG CPF0000でエラーを広く拾い、異常を見逃す
- OVRDBFの解除漏れで、後続処理の参照先が変わる
- *LIBL参照なのに、実行時のライブラリリストを確認していない
- CALL先のRPGで実際の更新が行われている
- 本番固有のライブラリ名やジョブキュー名を検証環境でそのまま使う
ジョブログで確認すること
CLの障害調査では、CLソースとジョブログを必ずセットで見ます。どのコマンドで止まったのか、MONMSGで拾われたのか、CALL先のRPGでエラーになったのか、SBMJOBで投入された別ジョブ側で失敗しているのかを分けます。ジョブログの基本は AS400のジョブログ確認手順 も参考にしてください。
法人内でCLを引き継ぐ時にそろえる確認順
CLは、単体の命令を覚えるだけではなく、RPGやバッチ処理、ファイル指定、エラー処理をつなぐための流れとして読むと理解しやすくなります。社内で引き継ぐ場合は、担当者ごとに見ている場所がずれないように、最初に確認順をそろえておくことが重要です。
| 確認する場所 | 見るポイント | 関連する確認 |
|---|---|---|
| CALL | どのRPGや別CLを呼び出しているか。前後のパラメータが業務条件になっていないか。 | RPG入門 |
| SBMJOB | どのJOBQ、JOBD、ユーザー、ライブラリリストで実行されるか。 | バッチ処理の確認手順 |
| MONMSG | どのエラーを握っているか。CPF0000で広く拾いすぎていないか。 | CPFエラーとジョブログ確認 |
| OVRDBF / DLTOVR | 実際に参照するファイルやメンバーが途中で変わっていないか。 | OVRDBFの確認 |
| 社内教育 | 読む順番、触ってはいけない範囲、調査メモの残し方をそろえる。 | AS400 / IBM i Codex実戦研修 |
特にCLは「少し直すだけ」に見えても、夜間バッチや帳票、データ抽出の入口になっていることがあります。研修では、ソースを読むだけでなく、ジョブログ、ジョブ属性、ライブラリリスト、ファイル指定を同じ画面で確認しながら、どこまでが安全な調査で、どこからが変更作業になるのかを分けて考えると実務に近くなります。
CLは「処理の流れ」を引き継ぐために読む
CLは、RPGのように業務ロジックを細かく書くというより、ジョブの流れ、呼び出し順、ファイル操作、メッセージ処理、異常時の分岐をつなぐ役割で使われることが多いです。保守引き継ぎでは、CLを読むことで「どの処理が、どの順番で動いているか」を把握しやすくなります。
| CLで見る場所 | 確認する意味 | 注意点 |
|---|---|---|
| CALL | どのプログラムを呼んでいるか | 前後のパラメータ、戻り値、異常時処理も見る |
| OVRDBF | 実行時に参照ファイルを差し替えていないか | 本番とテストで動きが違う原因になりやすい |
| MONMSG | エラー時にどう逃がしているか | 握りつぶしになっていないか確認する |
| SBMJOB | 別ジョブへ投げていないか | ジョブログが別ジョブ側に残ることがある |
| SNDPGMMSG | 利用者や運用者へ何を通知しているか | MSGWやQSYSOPR対応とつながることがある |
CLを読むときは、コマンド名だけでなく「このCLが失敗したら、どこに証跡が残るか」まで見ると保守で使える知識になります。社内教育でCL、RPG、ジョブログをつなげて教えたい場合は、AS400 / IBM i Codex研修の内容・料金を確認してください。
CLは「業務処理の流れ」を読む入口になる
CLは、画面やバッチから呼ばれる処理の流れをつなぐ役割を持ちます。RPGの中身だけを見ても、どの順番で呼ばれたのか、どのファイルを差し替えたのか、異常時にどこへ分岐したのかが分からないことがあります。現場調査では、CLを先に見ることで全体の入口をつかめます。
| CLで見る観点 | 確認する内容 | 関連する調査 |
|---|---|---|
| 呼び出し順 | CALL、SBMJOB、RUNQRYなどの流れ | どの処理が先に動いたかを整理する |
| ファイル指定 | OVRDBF、DLTOVR、ライブラリ指定 | OVRDBFの確認 |
| 異常時処理 | MONMSG、エラー時の分岐 | ジョブログと合わせて原因を見る |
| バッチ実行 | JOBQ、SBSD、JOBD | ジョブスケジュール確認 |
若手教育や引き継ぎでは、CLの各命令を暗記するより、処理全体の地図として読めるようにする方が実務に直結します。CL、ジョブログ、RPGをつなげて説明できると、障害調査や影響調査の精度が上がります。
まとめ
AS400 / IBM i のCL保守では、CALL、SBMJOB、MONMSG、OVRDBF、DLTOVR、ライブラリリストを中心に見ると、処理の流れを追いやすくなります。CLは業務ロジックそのものというより、RPGやコマンドを動かす制御役です。だからこそ、呼び出し先、投入先、エラー時の分岐、実行環境をセットで確認することが重要です。
CLから呼ばれるRPG側の読み方は AS400のRPG保守ポイント、ライブラリやオブジェクトの基本は AS400のライブラリとオブジェクト もあわせて確認すると、保守調査のつながりが見えやすくなります。
