メニューボタン
サポートチーム便り2019.01.24

IBM i(AS/400)のライブラリーリストって何ですか?

Question

システム担当としてIBMi(AS/400)を管理、使用することとなりました。バッチ処理をしようとプログラムを投入しましたが、エラーとなって処理ができませんでした。対話で実行すると、正常に完了します。先輩に「ライブラリーリストが悪いんじゃないの」と言われました。ライブラリーリストって何ですか、どのようなものになりますでしょうか。

Answer

簡単なようで、一言では言い表すことが難しいものかも知れません。 メーカーのナレッジセンターには以下のように解説されています。

ライブラリー・リスト https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_73/rbam6/ulibl.htm

「システムは、ライブラリー・リストを使用してオブジェクトを見つけます。」「ライブラリー・リストは、 次の 4 つの部分から成り立っています。」

・システム部分 ← システム値のQSYSLIBL(ライブラリー・リストのシステム部分)

・プロダクト(実行)ライブラリー ←プロダクト・ライブラリー (例えば、QRPG など) はシステムにより管理され、 必要に応じてライブラリーリスト内のプロダクト・ライブラリーとして確保されている位置に入れられます。

・現行ライブラリー

・ユーザ部分 ← システム値のQUSRLIBL(ライブラリー・リストのユーザー部分)

この表現から、処理を実行する時には必要とするオブジェクトはライブラリーリストの中の ライブラリーに存在していないとなりません。

対話で処理をしている時に自分自身のライブラリーリストがどのような状態かを確認するには DSPLIBL(ライブラリー・リスト表示)コマンドで可能です。

hint01

DSPLIBLをした時にSYSとあれば、先ほどの「システム部分」、PRDは「プロダクト」、 CURは「現行ライブラリー」、最後にUSRであれば、「ユーザ部分」となります。

該当のオブジェクトが存在するか、WRKOBJコマンドで確認してください。 このとき、ライブラリーを指定しない場合デフォルトが*LIBLになっていますので、ライブラリーリストに存在していないと表示されません。

*LIBL:現行スレッドのライブラリー・リスト内のすべてのライブラリーが表示されます。 もし、表示されない場合は、どのライブラリーにあるか、WRKOBJと入力し、F4でプロンプトを 出し、「ライブラリー」を「*LIBL」から「*ALL」に変更後、実行してどのライブラリーに存在しているかを 確認し、該当のライブラリーをライブラリーリストに追加する必要があります。

hint01

ライブラリー・リストの変更 https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_73/rbam6/chglibl.htm

上記のナレッジを読むと、「ジョブ投入 (SBMJOB) ・・・・」の解説も出ていますのでご参照ください。

今回のご質問の、対話では問題がなくバッチでは失敗すると言うところに関しては、 対話の時のいわゆるサインオンした時に、初期プログラム(または手動で変更)で、 ライブラリーリストを変更しているが、バッチの時にライブラリーリストを変更(追加)していないことが考えられます。

1日も早く、ライブラリーリストの概念や設定方法を勉強し、先輩に負けないように頑張ってください。

by けやきのじぃじ

あわせて読みたい記事

PAGE TOP