変更コードによるビルドとプロモート

アーキテクチャー定義を使用して、 特定の変更または変更のグループに関連した パーツを識別することもできます。 これは、CCODE ステートメントの使用により いずれのアーキテクチャー・メンバーにも行うことができます。 アーキテクチャー定義の通常の内容に加えて、 そのようなアーキテクチャー・メンバーは 変更コードと組み込みフラグを伴う CCODE キーワードのリストを 含んでいます。 そのようなアーキテクチャー定義の例を示します。

     * ARCHDEF FOR PACKAGE PKG00001
     CCODE  POY66045 INCLUDE   * Include changes for problem POY66045
     CCODE  POY66615 INCL      * Include changes for problem POY66615
     INCL   SCLM     ARCHDEF   * SCLM ARCHDEF
 
変更コードについて SCLM の強制的な規則はありません。 唯一の制約は、最大限 8 文字ということです。 SCLM が変更コードを判別するには、埋め込まれたブランクを含む変更コード、 または最初の文字が A-Z、0-9、@、#、$ 以外の変更コードは区切り文字で囲む必要があります。 区切り文字は、上記に指定したもの以外の文字にします。 いくつかの例を示します。
     CCODE A                  * this includes change code A
     CCODE ,A B C,  E         * this excludes change code A B C
     CCODE /AB/     IN        * this includes change code AB
     CCODE 'A B'    EX        * this excludes change code A B
     CCODE 1"       EXCLUDE   * this excludes change code 1"
 

組み込みフラグの有効値は、INCLUDE または EXCLUDE です。 デフォルト値は INCLUDE です。 INCLUDE 値は、指定の変更のみ が 組み込まれていることを示します。 EXCLUDE 値は、 指定の変更以外 のすべてが組み込まれていることを示します。 下記のテーブルは、 変更コードによる SCLM のビルドとプロモートを 例証するものです。

表 1. 変更コードによる SLCM のビルドとプロモートの条件
MEMBER CHANGE CODE CCODE CCODEX INCLUDE CCODE CCODEX EXCLUDE
CCODEX あり 任意
CCODEY 任意 あり
no change code (変更コードなし) 任意 あり

複数の CCODE ステートメントをアーキテクチャー定義で指定できます。 組み込みフラグ値がすべてのステートメントで同じでない場合、 エラー・メッセージが出されます。 重複 CCODE ステートメントは無視されます。 変更コードと組み込みフラグが同じ値で解決する CCODE ステートメントは、 重複と見なされます。 例えば、下記の CCODE ステートメントは重複です。

     CCODE 1
     CCODE '1 ' INCLUDE
 

キーワード CCODE および COPY を 同じアーキテクチャー定義で使用することはできません。 キーワード COPY によりアーキテクチャー定義の実際のコピーが初めに 挿入されるため、 COPY ステートメントが参照するアーキテクチャー定義 も CCODE ステートメントがあってはなりません。 変更コードにより COPY ステートメントを含むアーキテクチャー定義をビルドするには、 CCODE ステートメントと元アーキテクチャー定義の組み込み (INCL) を含む 新しいアーキテクチャー定義を作成します。

パッケージの概念 (変更のグループ) は、 アーキテクチャー定義で複数のキーワード CCODE を指定する能力により サポートされています。 これらのアーキテクチャー定義のさらに簡単な識別と保守の方法として、 ARCHDEF 言語を使用して PACKAGE と呼ばれる TYPE を定義して、 パッケージ ID あるいは変更コードを 各メンバーの名前として使用することができます。 あるいは、単一のアーキテクチャー・メンバーを定義して、 そのメンバーの変更コード値を、変更コードによりビルドまたはプロンプトごとに 更新することができます。

アーキテクチャー定義にビルドまたはプロモートへの入力として 指定して表示された CCODE ステートメントのみを 処理します。 他のすべての CCODE ステートメントは無視されます。 例えば、 アーキテクチャー定義 ISPF、PDF、SCLM、および ISPFSUB があるとします。 これらのアーキテクチャー定義は、下記のステートメントを含みます。

     * ARCHITECTURE DEFINITION MEMBER ISPF
     INCL  ISPFSUB ARCHDEF
     INCL  PDF     ARCHDEF
     INCL  SCLM    ARCHDEF
     CCODE A       INCLUDE
 
     * ARCHITECTURE DEFINITION MEMBER ISPFSUB
     CCODE D       INCLUDE
 
     * ARCHITECTURE DEFINITION MEMBER PDF
     CCODE B       INCLUDE
 
     * ARCHITECTURE DEFINITION MEMBER SCLM
     CCODE C       INCLUDE
 

ISPF アーキテクチャー定義のビルドの際、 変更コード A を持つメンバーのみがビルド・グループから組み込まれます。 変更コード B、C、D を組み込む CCODE ステートメントは、 このビルドについては処理されませんが、 その理由は、組み込み済みのアーキテクチャー定義に検出できるからです。

ビルドとプロモートの検証段階の間、 SCLM は特定のグループでビルドまたはプロモートの有効範囲のメンバーの 変更コード・リストを検索します。 メンバーが有効範囲にあり、 変更コードが変更コード・リストに表示されれば (EXCLUDE 指定の場合は表示されない) 、 組み込まれます。 その他の場合、 SCLM は次のグループからメンバー検索を続行します。 変更コードは、アーキテクチャー定義を含めて SCLM 制御下 で PDS データ・セットに格納されたすべての編集可能メンバーについて処理されます。 組み込み済みメンバーのデータ・セットに IOTYPE=I, KEYREF=SINC が割り振られた場合、 変更コードの処理が行われます。 データ・セットに KEYREF が SREF また は CREF を割り振られた組み込み済みメンバーは、 変更コードによる処理を受けません。 SREF および CREF 割り振り参照の 組み込みの処理は、下記のとおりです。

  1. FLMINCLS マクロを追加して、所要タイプを参照する。
  2. FLMALLOC マクロを変更して、KEYREF=SINC を使用する。
  3. INCLS パラメーターを FLMALLOC マクロに追加して、 FLMINCLS マクロを参照する。

ビルドまたはプロンプトへの入力として指定された アーキテクチャー定義は、 変更コードにかかわらず、常に処理されます。 変更コードは、ビルドまたはプロモートのグループについてのみ有効です。 有効範囲で、このグループより上位に検出されたメンバーは、 変更コードにかかわらず組み込まれます。 指定された変更がメンバーの変更コード・リストに表れても、 最終変更でなく、INCLUDE 指定である場合には、 警告メッセージが出されます。

メンバーへの各変更は、次に取りかかる前に 行ってください。 それが不可能な場合は、 単一のメンバーに作用する複数の変更の ビルドまたはプロモートを同時に行ってください。 例えば、メンバー A、B、C があると します。変更 1 はメンバー A と B に作用し、変更 2 はメンバー A と C に作用します。 両方の変更がメンバー A に作用するため、片方の変更のみの組み込みの場合は、 変更が非同期になります。 変更コード 1 と 2 のビルドとプロモートは、同時に行うべきです。

動的組み込みを含むアプリケーションを変更コードでビルドするためには、 まず、変更コードなしのビルドを行うことが必要です。 そうでない場合、 組み込みの欠落のためにビルドが失敗する場合があります。

変更コードによるプロモートの前に、必ず同じアーキテクチャー定義の正常なビルドを 行うことが必要です。 変更コードによるプロモートの完了時に、 アプリケーションをより上位のグループで再作成します。 変更コードを使用して、アーキテクチャー報告書ユーティリティーを CCODE ステートメントを含むアーキテクチャー定義に対して実行する場合に、 報告書入力グループで検出されたメンバーをアーキテクチャー報告書に組み込むかどうかを 判別します。 また、データベース内容ユーティリティーは CCODE ステートメントに 指定された変更コードを使用せずに、メンバーを報告書または 調整済み出力に表示するかどうかを判別します。