AS400 / IBM i の保守で CPF4101 が出た時は、「ファイルが無い」と決めつける前に、どのジョブが、どのライブラリリストで、どのファイル名を探したのかを確認します。同じ名前のファイルが本番、検証、退避ライブラリにある現場では、単純な存在確認だけでは原因を外すことがあります。
この記事では、受注バッチでCPF4101が出たケースを想定し、現場で見る順番を実例として整理します。
想定する状況
| 項目 | 例 |
|---|---|
| 発生処理 | 夜間の受注更新バッチ |
| 症状 | ジョブが異常終了し、ジョブログにCPF4101が出ている |
| 対象 | RPGプログラムが参照する注文ファイル |
| 最初に疑うこと | ファイル未存在、ライブラリリスト違い、OVRDBF、メンバー違い、前後メッセージに出るCPF9802などの権限関連、またはロック関連の異常 |
最初にジョブログを見る
まず WRKJOB や DSPJOBLOG で対象ジョブのジョブログを開きます。最後の異常終了メッセージだけでなく、CPF4101の前後に出ているプログラム名、ファイル名、ライブラリ名を確認します。
DSPJOBLOG WRKJOB JOB(123456/USER/ORDUPD)
確認する順番
| 順番 | 確認 | 理由 |
|---|---|---|
| 1 | ジョブログのCPF4101行 | 対象ファイル名、ライブラリ名、プログラム名を拾う |
| 2 | DSPLIBL | *LIBLで探している場合、参照順を確認する |
| 3 | WRKOBJ | 同名ファイルがどのライブラリにあるか確認する |
| 4 | DSPFD / DSPFFD | PF/LF、メンバー、フィールド定義を見る |
| 5 | CLのOVRDBF | 参照先を一時変更していないか確認する |
| 6 | RPGのF仕様書 | RPGがどの外部記述ファイル名で開こうとしているか確認する |
よくある原因
- 検証ライブラリでは存在するが、本番ライブラリには存在しない
- ライブラリリストの順序が想定と違う
- CLの
OVRDBFで別ファイルへ向けている - 夜間バッチ用ユーザーだけ権限やライブラリリストが違う
- 物理ファイルではなく論理ファイルを探している
やってはいけない対応
原因が分からないまま、似た名前のファイルを本番ライブラリへコピーしたり、ライブラリリストをその場で変更したりするのは危険です。後続バッチや別プログラムが同じファイル名を参照している場合、別の障害を作ることがあります。
関連して読む記事
ジョブログの基本は AS400のジョブログ確認手順、ライブラリ確認は ライブラリとオブジェクト、PF/LFの確認は 物理ファイルと論理ファイル を参照してください。
CPF4101は「ファイルがない」だけでなく、ライブラリ順序まで確認する
CPF4101はファイルが存在しない時に出る代表的なメッセージですが、実際の原因は「本当にオブジェクトがない」だけではありません。ジョブのライブラリリスト、実行ユーザー、テスト環境と本番環境の差、前処理で作成される一時ファイルの有無まで見る必要があります。
| 見る順番 | 確認内容 | 判断のポイント |
|---|---|---|
| 1. メッセージ詳細 | 対象ファイル名、ライブラリ名、実行プログラムを確認する | ファイル名だけで判断しない |
| 2. ライブラリリスト | 実行時のLIBLに対象ライブラリが入っているか確認する | ライブラリリスト確認 |
| 3. オブジェクト存在 | 対象ファイルが本当に存在するか、権限で見えないだけではないかを見る | オブジェクトとライブラリ |
| 4. 前処理 | 一時ファイルやワークファイルを作る処理が正常終了しているか確認する | 直前ジョブのジョブログを見る |
| 5. 教育・引き継ぎ | 同じ調査順を若手や後任が再現できる形にする | 研修内容を見る |
調査メモには、エラーになったファイル名だけでなく、ジョブ名、ユーザー、ライブラリリスト、直前に実行したメニューやバッチ名を残しておくと再発時に役立ちます。AS400の障害対応では、メッセージIDと実行環境をセットで見ることが大切です。
まとめ
CPF4101は、ファイルそのものが無い場合だけでなく、ライブラリリスト、OVRDBF、メンバー違い、PF/LFの取り違えでも発生します。権限関連はCPF9802など前後メッセージを分けて確認します。ジョブログから対象を拾い、DSPLIBL、WRKOBJ、DSPFD、CL、RPGの順で確認すると、原因を外しにくくなります。
