CL コマンドのデフォルト変更

コマンド・パラメーターのデフォルト値を変更するには、コマンドのデフォルト変更 (CHGCMDDFT) コマンドを使用します。

コマンド・パラメーターには、新規デフォルト値に変更する既存のデフォルト値が備わっている必要があります。 変更するコマンドは、IBM 提供のコマンドとユーザー作成のコマンドのどちらでも構いません。 IBM 提供のコマンドのデフォルト値を変更する場合には注意が必要です。 デフォルトを変更する際の推奨事項は、次のとおりです。

  1. 変更するコマンドが IBM 提供のコマンドの場合には、複製オブジェクト作成 (CRTDUPOBJ) コマンドを使用して、変更するコマンドの複製をユーザー・ライブラリーに作成してください。 こうすることにより、システムの他のユーザーは、 必要な場合には IBM 提供のデフォルト値を使用できます。

    システム・ライブラリー・リスト変更 (CHGSYSLIBL) コマンドを用いて、ユーザー・ライブラリーを QSYS またはその他のすべてのシステム提供のライブラリーより前に移してください。 これによってユーザーは、ライブラリー修飾子を指定せずに、 変更されたコマンドを使用できるようになります。

    システム全体の規模で必要なコマンドに変更を加える場合は、 ユーザー・ライブラリー内で変更を行います。 そして、そのユーザー・ライブラリー名が QSYS より前にくるように、QSYSLIBL システム値に追加しなければなりません。 変更されたコマンドはシステム全体で使用されます。 IBM 提供のデフォルト値を使用するアプリケーション・プログラムを実行する必要がある場合には、 CHGSYSLIBL コマンドを使用します。 このことを行うと、影響を受けるコマンドの特殊ライブラリー修飾またはライブラリー修飾を除去することができます。

  2. ライセンス・プログラムの新しいリリースを導入する場合には、 そのライセンス・プログラムに対する IBM 提供のコマンドはすべて、 システム内部で新しいリリースによって置き換えられます。 新しいリリースを導入した時点で CL プログラムを使用してコマンドに変更を加える必要があります。 このようにして、CL プログラムを実行して、 新しいコマンドの複製を作成して新しいキーワードを組み込み、 コマンドのデフォルト値を変更することができます。

    IBM 提供のコマンドに新しいキーワードが追加されている場合には、 前のリリースのコマンドの複写は正しく実行できないことがあります。

    次に示すのは、古いバージョンを削除して新しい変更されたコマンドを作成するために使用する CL プログラムの例です。

    注: コーディング例を使用すると、コードに関するライセンス情報および特記事項の条件に同意したものとみなされます。
    PGM
    DLTCMD USRQSYS/SIGNOFF
    CRTDUPOBJ OBJ(SIGNOFF) FROMLIB(QSYS) OBJTYPE(*CMD) +
              TOLIB(USRQSYS) NEWOBJ(*SAME)
    CHGCMDDFT CMD(USRQSYS/SIGNOFF) NEWDFT('LOG(*LIST)')
     .
     .
    変更する各コマンドに対して DLTCMD、CRTDUPOBJ、および
    CHGCMDDFT を繰り返します
     .
     
     .
    ENDPGM

新しいリリースを導入するときに、使用する CL コマンドのデフォルト値に対して加える変更をトラックすることができます。 変更をトラックするには、出口点 QIBM_QCA_RTV_COMMAND 用の出口プログラムを登録してください。 出口プログラムは、CHGCMDDFT コマンドを実行するときに呼び出されます。出口プログラムに渡されるパラメーターの 1 つに、実行されているコマンド・ストリングがあります。 コマンド・ストリングをソース・ファイルに保管してから、ソース・ファイルを CL プログラムにコンパイルすることができます。 最後に、このプログラムを使用して、前のリリースの使用中にコマンドのデフォルト値に対して加えた変更を再作成します。

以下のステップを使用して、CHGCMDDFT コマンドの NEWDFT コマンド・ストリングを組み立てることができます。この例では USRQSYS/CRTCLPGM コマンドが使用されています。

  1. 以下のコマンドによって、変更したいコマンドの複製をユーザー・ライブラリーに作成します。
    CRTDUPOBJ OBJ(CRTCLPGM) FROMLIB(QSYS) OBJTYPE(*CMD) +
              TOLIB(USRQSYS)  NEWOBJ(*SAME)
  2. 変更したいコマンドの名前を原始ステートメント入力ユーティリティー (SEU) で参照されるソース・ファイルに入れます。
  3. F4 キーを押して、コマンドのプロンプターを呼び出します。
  4. 変更したいキーワードの新しいデフォルト値を入力します。 この例では、AUT(*EXCLUDE) および TEXT('Isn''t this nice text') を入力します。
  5. 必須キーワードにはデフォルト値を指定することはできません。 ただし、コマンド・ストリングをソース・ファイルに入れるには、各必須キーワードに対して有効な値を指定しなければなりません。 ここでは、PGM パラメーターに PGM1 を指定しています。
  6. 実行キーを押して、コマンド・ストリングをソース・ファイルに入れます。 次のようなコマンド・ストリングが戻されます。
    USRQSYS/CRTCLPGM PGM(PGM1) AUT(*EXCLUDE) +
    TEXT('Isn''t this nice text')
  7. コマンド・ストリングから必須キーワードを除去します。
    USRQSYS/CRTCLPGM  AUT(*EXCLUDE) +
    TEXT('Isn''t this nice text')

    変更できるのは、既存のデフォルト値を備えたパラメーター、要素、 または修飾子だけである点に注意してください。 既存のデフォルト値がないパラメーター、要素、または修飾子に値を指定しても、デフォルト値は変更されません。

  8. 次の例で示すように、CHGCMDDFT コマンドを先頭に入れてください。
    CHGCMDDFT USRQSYS/CRTCLPGM AUT(*EXCLUDE) +
    TEXT('Isn''t this nice text')
  9. NEWDFT キーワードに対する入力は、 次の例で示すように引用符で囲まなければなりません。
    CHGCMDDFT USRQSYS/CRTCLPGM 'AUT(*EXCLUDE) +
    TEXT('Isn''t this nice text')'
  10. NEWDFT の値の一部として単一引用符が使用されているので、 正しく実行するには各引用符をさらに二重にしなければなりません。
    CHGCMDDFT USRQSYS/CRTCLPGM 'AUT(*EXCLUDE) +
    TEXT(''Isn''''t this nice text'')'
  11. F4 キーを押してコマンド・プロンプターを呼び出し、 次に F11 キーを押してキーワードのプロンプトを要求すると、次に示すような画面が表示されます。
    コマンド  . . . . . . . . . . . . . :   CMD         >   CRTCLPGM
      ライブラリー  . . . . . . . . . . :                   USRQSYS
    新しい省略時パラメーター・ストリング:   NEWDFT      >   'AUT(*EXCLUDE)
    TEXT(''Isn''''t this nice text'')'
  12. 実行キーを押すと、CHGCMDDFT コマンド・ストリングは次のようになります。
    CHGCMDDFT CMD(USRQSYS/CRTCLPGM) NEWDFT('AUT(*EXCLUDE) +
              TEXT(''Isn''''t  this nice text'')')
  13. F3 キーを押して SEU を終了し、 この CL プログラムまたは CL プロシージャーを作成し、実行してください。
  14. USRQSYS/CRTCLPGM は、AUT のデフォルト値として *EXCLUDE および TEXT のデフォルト値として 'Isn''t this nice text' を持つことになります。