ライブラリー・リストの変更

ライブラリー・リストをさまざまな方法で変更することができます。

ジョブを実行する場合に、 ライブラリー・リスト項目追加 (ADDLIBLE) コマンドによるライブラリー・リストへの項目の追加、 ライブラリー・リスト項目除去 (RMVLIBLE) コマンドによるライブラリー・リストからの項目の除去、 あるいは ライブラリー・リストの変更 (CHGLIBL) コマンドや ライブラリー・リストの編集 (EDTLIBL) コマンドによる ライブラリー・リスト内のライブラリーの変更などを行うことができます。 これらのコマンドはライブラリー・リストのユーザー部分を変更するためのもので、 システム部分を変更することはできません。

現行ライブラリーは、 現行ライブラリー変更 (CHGCURLIB) コマンド または CHGLIBL コマンドを使用して変更または追加することができます。 現行ライブラリーは、サインオン時にユーザーのユーザー・プロファイルにより、 またはジョブ投入 (SBMJOB) コマンドを使用して変更することができます。 プロダクト・ライブラリーは、CL コマンドを用いて追加することはできません。 これらのライブラリーは、 それを使用するコマンドまたはメニューが実行される時点でシステムにより追加されます。 プロダクト・ライブラリーは CL コマンドによって変更することはできませんが、 ライブラリー・リスト変更 (QLICHGLL) API によって変更することができます。

上記の各コマンドを使用した場合に、ライブラリー・リストに対する変更が行われるのは、 そのコマンドを実行するジョブに対してだけであり、 その変更が有効なのはそのジョブが実行されている間、 またはジョブのライブラリー・リストを再度変更するまでの間だけです。 これらのコマンドを使用してライブラリー・リストを変更する場合には、 コマンドの実行時に対象のライブラリーが存在していなければなりません。 ご使用のジョブのライブラリー・リストにあるライブラリーは、削除できません。 別のジョブのライブラリー・リストにある場合でも、 ライブラリー検索リストでライブラリーをロックするようにシステム値 QLIBLCKLVL が設定されていると、削除できません。

ジョブが開始されると、ジョブ記述に指定されている値または ジョブ投入 (SBMJOB) コマンドに指定されている値に基づいて、 ライブラリー・リストのユーザー部分が決定されます。 *SYSVAL という値を指定することもできます。 この値を指定すると、システム値 QUSRLIBL に指定されているライブラリーが ライブラリー・リストのユーザー部分になります。 バッチ・ジョブ (BCHJOB) コマンドまたは ジョブ投入 (SBMJOB) コマンドの両方にライブラリー名を指定した場合には、 ジョブ記述およびシステム値 QUSRLIBL に指定されているライブラリーはどちらも、BCHJOB コマンドまたは SBMJOB コマンドに指定したライブラリー名により一時変更されます。

QUSRLIBL に指定されているライブラリー・リストのユーザー部分が、 個々のジョブにおける種々のコマンドにより一時変更される場合の順序は次のとおりです。

ライブラリー・リストの変更のたびに CHGLIBL コマンドを入力する代わりに、 このコマンドを次のように CL プログラムに入れておくこともできます。

PGM  /* SETLIBL - Set library list */
CHGLIBL LIBL(APPDEVLIB QGPL QTEMP)
ENDPGM

通常、このライブラリー・リストを使用して処理を実行する場合には、 プログラムを毎回呼び出す代わりに、初期プログラムを作成してライブラリー・リストを設定することができます。

PGM  /* Initial program for QPGMR */
CHGLIBL LIBL(APPDEVLIB QGPL QTEMP)
TFRCTL PGM(QPGMMENU)
ENDPGM

このプログラムを作成し、それを適用するユーザー・プロファイルを変更して、 新しい初期プログラムを指定しなければなりません。 このプログラムから QPGMMENU プログラムに制御が移り、 プログラマー・メニューが表示されます。

場合によっては、 初期プログラムに指定したライブラリー・リストにライブラリーを追加する必要が生じることもありますが、 その場合は ADDLIBLE コマンドを使用して、 必要なライブラリーをライブラリー・リストに追加することができます。 例えば、次のコマンドを使用すると、 ライブラリー JONES がライブラリー・リストの末尾に追加されます。

ADDLIBLE LIB(JONES) POSITION(*LAST)

ジョブの一部で別のライブラリー・リストが必要になる場合には、 現行のライブラリー・リストを保管し、 後でそれを復元するための次のような CL プログラムを作成することができます。

       PGM
       DCL &LIBL *CHAR 2750
       DCL &CMD *CHAR 2760
(1)    RTVJOBA USRLIBL(&LIBL)
(2)    CHGLIBL (QGPL QTEMP)
       .
       .
       .
(3)    CHGVAR &CMD ('CHGLIBL (' *CAT &LIBL *TCAT ')')
(4)    CALL QCMDEXC (&CMD 2760)
       .
       .
       .
       ENDPGM
(1)
ライブラリー・リストを保管するためのコマンド。 ライブラリー・リストは変数 &LIBL に保管されます。 各ライブラリー名は 10 バイトを占め (必要に応じて右側にブランクが埋め込まれる)、 ライブラリー名の間にはブランクが挿入されます。
(2)
このコマンドにより、 後続の機能での必要性に合わせてライブラリー・リストが変更されます。
(3)
変数変更 (CHGVAR) コマンドは、CHGLIBL コマンドを変数 &CMD の値として組み立てます。
(4)
QCMDEXC が呼び出されて変数 &CMD のコマンド・ストリングを処理します。 CALL コマンドでは結合を行うことができないので、QCMDEXC を呼び出す前に、CHGVAR コマンドが必要になります。