AS400のCLとは|CALL・SBMJOB・MONMSG・CPF0000の読み方

CL保守でよく確認するCALL、SBMJOB、MONMSG、CPF0000を中心に、ジョブログとライブラリリストを見ながら処理の流れを確認する手順を整理しています。

AS400 / IBM i のCLは、コマンドを順番に実行して、RPGプログラムの呼び出し、バッチ投入、ファイルの一時的な切り替え、エラー時の処理を制御するための言語です。CLだけで業務処理のすべてを書くというより、RPGやコマンドをつなぐ「運用と制御の入口」として使われることが多いです。

この記事では、CL保守でよく出るCALL、SBMJOB、MONMSG、OVRDBF、DLTOVR、ライブラリリスト、ジョブログ確認を、初心者でも実務で追える順番で整理します。

CLで見る全体像

見る場所意味保守で見るポイント
PGM / ENDPGMCLプログラムの開始と終了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のライブラリとオブジェクト もあわせて確認すると、保守調査のつながりが見えやすくなります。