AS400ライブラリの確認方法|仕組みとオブジェクト管理を初心者向けに解説

AS400 / IBM i では、プログラム、ファイル、ジョブ記述、出力キューなど多くのものがオブジェクトとして管理されます。そして、それらを入れておく場所がライブラリです。Windowsのフォルダに近い説明をされることもありますが、IBM iではライブラリリストの順序が実行結果に大きく影響します。

ライブラリやオブジェクトを学ぶ前にシステム全体の役割を整理したい場合は、AS400とは何かを初心者向けに解説した記事 を先に読むと理解しやすくなります。

ライブラリとオブジェクトの基本

WRKLIBでライブラリーを一覧表示した画面
WRKLIBの画面です。ライブラリー名の横に属性(PROD)とテキストが並びます。ここから12番でオブジェクトの処理へ、8番でライブラリー記述の表示へ進めます。画像のライブラリー名は伏せてあります。
用語意味保守で見ること
ライブラリオブジェクトを管理する入れ物本番、検証、開発、退避の区別
オブジェクトプログラム、ファイル、キューなどの管理単位種類、所有者、権限、更新日時
*LIBLライブラリリストから探す指定同名オブジェクトの解決順序
QTEMPジョブごとの一時ライブラリ一時ファイル、作業用データ
QGPL共通利用されやすいライブラリ安易に置かれた共有オブジェクト

*LIBLが危ない理由

CALL PGM(MYPGM) のようにライブラリを省略すると、IBM iはライブラリリストの順にオブジェクトを探します。本番と検証でライブラリリストの順序が違うと、同じCLやRPGでも別のプログラムやファイルを参照することがあります。

DSPLIBL

上は現在スレッドのライブラリリストを表示するコマンドです。別の稼働ジョブは対象を指定してWRKJOB等で確認します。CALL PGM(MYPGM)CALL PGM(PRODLIB/MYPGM) は名前解決の違いを示す例であり、参照専用の確認コマンドではありません。実行すると業務データ更新などが起こり得るため、本番で試さないでください。

確認コマンド

コマンド確認内容使う場面
DSPLIBL現在スレッドのライブラリリスト*LIBL参照の解決順を見る
WRKOBJオブジェクト一覧同名オブジェクトを探す
DSPOBJDオブジェクト詳細作成日時、更新日時、所有者、タイプ
WRKLIBライブラリ一覧環境別ライブラリの確認
WRKOBJLCKオブジェクトロック更新待ち、削除不可、バッチ停止時

保守でよくある事故

  • 検証ライブラリを見ているつもりで本番ライブラリを参照する
  • 同名プログラムが複数あり、古い方が先に解決される
  • QTEMP(ジョブ専用の一時ライブラリ)に作った一時ファイルがジョブ終了で消える
  • QGPLに置かれた共通オブジェクトを誰が使っているか分からない
  • 権限不足をプログラム不具合と勘違いする

RPG・CL・ジョブログとの関係

RPGでファイルを開けない、CLでCALL先が見つからない、バッチで権限エラーになる場合、ライブラリとオブジェクトの確認が必要です。調査時は CLのライブラリリスト確認RPGのファイル確認ジョブログ確認 をセットで見ると早く切り分けできます。

ライブラリ確認を研修で扱うとき

ライブラリとオブジェクトは、AS400 / IBM i の保守で最初につまずきやすい部分です。*LIBL、QTEMP、本番ライブラリ、検証ライブラリ、同名オブジェクトの優先順位を理解しないままRPGやCLを読むと、原因ではない場所を追い続けてしまいます。

ライブラリ確認は本番・検証・退避の取り違え防止にも効く

AS400 / IBM iの保守で怖いのは、コマンド自体を間違えることだけではありません。どのライブラリの、どのオブジェクトを見ているのかを取り違えると、正しい調査をしているつもりでも、本番とは違う結果を見てしまうことがあります。

確認観点見落とすと起きること関連する確認
*LIBL想定外のライブラリにある同名オブジェクトを参照するCLの読み方
本番/検証ライブラリ検証環境を見て本番判断してしまう本番確認の基本
オブジェクト属性プログラム、ファイル、DSPFなどの種類を誤認するコマンド逆引き
ジョブログ実行時にどのライブラリを見たか追えないCPFエラーとジョブログ

ライブラリとオブジェクトは、AS400の基礎でありながら、障害調査、改修影響、権限確認、引き継ぎのすべてに関わります。若手や兼任担当へ教える時は、用語説明だけでなく「どのライブラリを見ているかを毎回確認する」習慣までセットにすると、現場での事故を減らしやすくなります。

DSPLIBLで確認すること

DSPLIBLでライブラリー・リストを表示した画面
DSPLIBLの画面です。上からQSYS、QSYS2、QHLPSYS、QUSRSYSがSYSタイプ、QGPLとQTEMPがUSRタイプで並んでいます。OPTに5を入れるとそのライブラリーの中のオブジェクトを表示できます。自社のライブラリーは、この一覧のどこに、どの順番で入っているかを確認します。
確認意味
ライブラリの順番*LIBL指定時にどのライブラリが優先されるかを見る
本番ライブラリ本番作業で正しい環境を見ているか確認する
検証・開発ライブラリテスト中に本番を参照していないか見る
QTEMP一時オブジェクトや中間ファイルの影響を考える
QGPLなど共通ライブラリ共通オブジェクトの参照を確認する

本番作業前の使い方

  • 作業前にDSPLIBLで現在のライブラリリストを見る
  • 対象プログラムやファイルをWRKOBJで確認する
  • 本番ライブラリと検証ライブラリの名前を声に出して確認する
  • *LIBL指定で意図しないオブジェクトを参照しないか確認する
  • 確認記録に接続先、ユーザー、対象ライブラリを残す

現場で多い使い方

  • プログラムが見つからない時に、対象ライブラリへ存在するか確認する
  • 同じ名前のプログラムが本番と検証の両方にないか確認する
  • ファイル変更後に、正しいライブラリへ反映されているか確認する
  • ジョブログに「オブジェクトが見つからない」と出た時に対象を探す
  • *LIBL指定で想定外のオブジェクトを参照していないか確認する

CPF2105や見つからない系の切り分け

CPF2105のような見つからない系のメッセージでは、オブジェクト名だけでなく、ライブラリ、ライブラリリスト、オブジェクトタイプ、権限を確認します。*LIBL指定で実行している場合は、ジョブごとのライブラリリストが原因になることがあります。

ライブラリリストの確認は AS400ライブラリの確認方法、CPF系全体は AS400メッセージID・エラーコード索引 を確認してください。

調査メモに残す内容

  • 対象オブジェクト名、ライブラリ名、オブジェクトタイプ
  • DSPOBJDで見た所有者、作成日、変更日
  • WRKOBJで見えた同名オブジェクトの有無
  • 実行ジョブ、実行ユーザー、ライブラリリスト
  • 直前の変更、リストア、コンパイル、ライブラリ切替

AS400のオブジェクト調査は、名前だけを見ると迷いやすくなります。DSPOBJD、WRKOBJ、DSPLIBL、ジョブログを組み合わせて、どの環境の何を見ているかをそろえることが近道です。

まとめ

AS400 / IBM i の保守では、ライブラリとオブジェクトの理解が土台になります。特に*LIBL、QTEMP、同名オブジェクト、権限、ロックは障害原因になりやすいため、ソースを見る前に実行環境を確認する習慣が大切です。

対話処理だけ成功する時のライブラリ確認例

同じプログラムが対話処理では動き、バッチでは別のファイルを参照する場合、オブジェクト名だけでなくライブラリリストの順序を比較します。

確認点確認内容判断
オブジェクト名前、種類、所在ライブラリを確認する同名の*FILEや*PGMを取り違えていないかを見る
ライブラリリスト対話ジョブとバッチジョブの現在ライブラリとユーザー部を比べる先に見つかる同名オブジェクトが違わないか判断する
参照方法一時確認ではライブラリ修飾名で対象を明確にする恒久対応はジョブ記述と配置ルールを見直す

原因調査のためにライブラリリストを変更する場合は、変更前の順序を記録し、影響するジョブを限定します。確認できた事実と恒久対応を分けて残すと、別環境での再発を防ぎやすくなります。