配布後スクリプトの実行を有効にする方法

コンテンツ
ce18jp
コンテンツ
CA Endevor® Software Change Manager
 管理者は、パッケージ配布プロセスの完了前または完了後に、リモートの配布先でスクリプトと呼ばれるカスタム ジョブ ステップを条件付きで実行する配布後スクリプト機能を有効にすることができます。
以下の図は、配布後スクリプト機能を有効にする方法を示しています。
How to Enable Post-Ship Script Execution
How to Enable Post-Ship Script Execution
配布後スクリプトの実行を有効にするには、以下の手順に従います。
  1. C1DEFLTS テーブルを設定します。これには、C1DEFLTS テーブルの確認、および必要に応じたテーブルの更新が含まれます。
  2. GENERATE または MOVE プロセッサを更新し、スクリプトを作成するステップを追加します。
  3. スクリプト ファイルが含まれるデータ セットのマッピング ルールを定義します。スクリプト データ セットに対して、マッピング ルールのリモートの配布先を (SCRIPT-FILE) として定義します。
  4. (オプション)配布先設定メンバを作成し、各パッケージ配布先に対して一意のシンボル名および値を定義します。このメンバは、スクリプト データ セットに追加されたメンバの配布先に一意のシンボルを使用する場合にのみ必要です。
配布後スクリプト機能の概要については、このビデオを参照してください。

配布後スクリプト用の C1DEFLTS の設定
配布後スクリプト機能を有効にするには、C1DEFLTS テーブルが特定の要件を満たしている必要があります。
以下の手順に従います。
  1. C1DEFLTS テーブルを確認し、RJCLROOT パラメータが ICPY または FCPY のいずれかに設定されていることを確認します。このオプションが省略されている場合は、値に RJCLROOT=ICPY を挿入します。RJCLROOT パラメータの詳細については、「リモート ジョブ ストリーム(C1DEFLTS)」を参照してください。
  2. (オプション)配布先スクリプトのシンボルを使用する場合は、以下のように C1DEFLTS テーブルを更新します。
    1. DESTCFGMBR= パラメータを使用して、C1DEFLTS に対して配布先設定メンバの名前を定義します。値を指定しない場合は、デフォルトで NULL になります。
    2. C1DEFLTS テーブルを確認し、有効な PARMLIB データ セットが存在することを確認します。
  3. C1DEFLTS テーブルを再アセンブルします。
配布後スクリプト用のプロセッサの更新
配布後スクリプト機能を有効にするには、プロセッサを更新してスクリプト出力データ セットを作成するステップを追加する必要があります。
以下の手順に従います。
  1. GENERATE または MOVE プロセッサを更新し、サイトの要件に基づいて、必要なリモート スクリプト構文を作成するために必要な追加の手順を挿入します。
  2. パッケージ処理がバックアウト レコードを作成してスクリプト ファイルを追跡できるようにするため、MONITOR キーワードおよび BACKOUT キーワードがスクリプト データ セットで指定されていることを確認します。
スクリプト データ セットの内容を容易に判断できるように、スクリプト データ セットに名前を付けます。スクリプト データ セットの最後の修飾子は、モデル制御ステートメントを作成するときに使用されます。そのため、さまざまなタイプのスクリプト処理を判別できるように、適切な名前を選択してください。たとえば、CICS フェーズイン リクエストに CICSNEWC、または DB2 バインド リクエストに DB2BIND などの適切な名前を付けます。配布時に置き換える配布先固有シンボルは、プロセッサによって作成されるスクリプト ファイル内に存在する
必要があります
例: 配布後スクリプトを実行する CICS NEW COPY スクリプトの作成
以下に、パッケージでプロセッサが実行された場合に CICS フェーズイン リクエストを作成するコード サンプルを示します。この例の &CICSREGN シンボルは、配布時に置き換えられます。
//***************************************************************
//* CREATE CICS NEW COPY SCRIPT                                                 
//***************************************************************
//PKGCHK   IF &C1PKGID NE "" THEN   * ONLY IF PACKAGE EXEC 
//SCRIPCP  EXEC PGM=IEBGENER,MAXRC=0                                    
//SYSPRINT DD SYSOUT=*                                                  
//SYSIN    DD DUMMY                                                     
//SYSUT2   DD DISP=SHR,MONITOR=&MONITOR,FOOTPRNT=CREATE,         
//         DSN=&DSPREFIX.CICSNEWC(&C1ELEMENT)                                           
//SYSUT1   DD DATA,DLM=##
/*VS,'F 
&CICSREGN
,CEMT SET PRO(&C1ELEMENT),PHASEIN'
##                                               
//PKGCHKX ENDIF 
配布後スクリプト データ セットのマッピング ルールの定義
スクリプトが含まれるプロセッサ出力ファイル用のデータ セット マッピング ルールを定義します。
以下の手順に従います。
  1. スクリプト データ セット名と一致するように、ホスト データ セット名フィールドのマスクを指定します。
  2. 次に示されているキーワードを正確に使用して、リモート データセット名フィールドの値を指定します: (SCRIPT-FILE)。
    必須の丸かっこ、およびダッシュは、データ セット名として有効な文字ではないため、この値がデータ セット名と間違えられることはありません。
注:
マッピング ルールの定義の詳細については、「マッピング ルールの作成」を参照してください。
例: スクリプト ファイルのマッピング ルール
最後の修飾子が CICSNEWC のスクリプト データ セットのマッピング ルールを作成するには、以下に示すようにホスト データセット名およびリモート データセット名を定義します。
HOST DATASET NAME   ===> *.*.*.CICSNEWC  
      maps to                                        
REMOTE DATASET NAME ===> (SCRIPT-FILE)               
注:
この例は、「配布後スクリプト用のプロセッサの更新」に示す例で作成された CICS NEW COPY スクリプトのマッピング ルールを作成します。
注:
スクリプト ファイルがマッピング ルールによって識別されると、DSN マッピング選択リストのステータス列にスクリプトが表示されます。
配布先設定ファイルの作成
プロセッサによって作成されたスクリプト ファイル内の配布先に基づいて値に解決されるシンボルを使用する場合は、配布先設定ファイルを作成する必要があります。配布先設定メンバには、パッケージ配布の実行時に読み取りおよび解析され、ターゲット配布先のシンボルを解決するためにスクリプト データ セット メンバで使用できる配布先に一意のシンボルを作成するステートメントが含まれます。置き換えが正しく行われるためには、これらのシンボルがプロセッサによってスクリプト データセット メンバ内に作成されている
必要があります
以下の手順に従います。
  1. 配布先設定ファイルを作成し、各パッケージ配布先に一意のシンボル名および値を定義します。
    以下の構文を使用して、各配布先のシンボル名と値を定義します。
    >>--  DESTination 'destid'  ---------------------------> 
      +<----<----<----<----<----<----<----<----<----<---+
    --+-->  SYMbol 'symbol-name' VALue 'symbol-value' -- - ->
    --->  .  ---------------------------------------------><
    このステートメントを各配布先に対して繰り返し、シンボルと値の組み合わせを各ステートメント内で必要に応じて何度も定義できます。シンボルをコード化する場合は(少なくとも 1 つ必要)、値もコード化する必要があります。シンボルに NULL 値をコード化するには、VALUE キーワードの後に連続した 2 つの単一引用符を使用します。
  2. 配布先設定メンバを PARMLIB に追加します。
  3. 配布先によって異なる情報を表すシンボルを、必要に応じてスクリプト データ セット メンバに含めます。
    重要:
    シンボルの置換によって、行がオーバーフローして、構文エラーが発生する可能性があります。
    シンボルの最大長を考慮するか、適切な構文を生成するシンボルの部分文字列を使用します。シンボルの部分文字列の構文の詳細については、「
    Extended Processors Guide
    」を参照してください。または、パスやファイル名など、長いシンボルを置換する必要がある場合は、可変長ブロック(RECFM=VB)スクリプト ファイルの使用を検討します。
注:
配布先設定メンバの内容は、表示オプション メニューから表示できます。また、構文エラーもこのメニューで確認できます。配布先設定メンバの名前は、C1DEFLTS のサイト情報パネルのパラメータ ライブラリ情報セクションに表示されます。スクリプト ファイルがマッピング ルールによって識別されると、DSN マッピング選択リストのステータス列にスクリプトが表示されます。右側にスクロールすると、スクリプトの実行ステータスが返され、配布ステータス ビューに表示されます。
例: 配布後スクリプトの配布先設定ファイル
この配布先設定ファイルの例は、ターゲットの配布先に応じて、シンボル CICSREGN にさまざまな値を定義します。
DESTINATION CA31XCM                                                                                          
    SYMBOL 'CICSREGN' VALUE 'CICS31DN'
    SYMBOL 'DB2SYS'   VALUE 'DBS31DN'  .  
DESTINATION CA11LOC                                                                                          
    SYMBOL 'CICSREGN' VALUE 'CICS11PR'
    SYMBOL 'DB2SYS'   VALUE 'DB2S11DN'  .                                                      
注:
この例は、「配布後スクリプト用のプロセッサの更新」に示す例で作成された CICS NEW COPY スクリプトの CICSREGN シンボルを作成します。
モデル スクリプト ステップの作成
独自のスクリプトを作成するか、サイトの要件に応じて配布 JCL モデル(CSIQOPTN ライブラリの #RJNDVRA および #RJNDVRB)を編集することによって、モデル スクリプト ジョブ ステップをカスタマイズできます。これらのモデルには、リモート ジョブのジョブ ステップが含まれています。このジョブ ステップは、配布にスクリプト データ セットが含まれているかどうかに基づいて、ジョブがパッケージ出力をターゲット データ セットへコピーする前またはコピーした後に実行されます。
条件付き実行を有効にする場合、シンボルは各スクリプト データ セットを表します。シンボルは、ホスト データ セット名の最後の修飾子に基づいており、文字 ZZ が先頭に付けられます(たとえば、データ セット BST.USER12.CICSNEWC では &ZZCICSNEWC になります)。シンボルの値は、スクリプト データ セットのリモート ステージング データ セット名です。
シンボルは、@IF ステートメントおよび @IFNOT ステートメントを使用して、パッケージ配布モデル制御メンバ内で確認できます。したがって、スクリプト ジョブ ステップは、データ セットのシンボルを解決してスクリプト データ セットが配布に存在するかどうかを判定することで、条件に応じてリモート ジョブ ステップに生成することができます。
例: CICS NEW COPY の配布後スクリプト ステップのモデル
このモデル コードは、CSIQOPTN ライブラリの #RJNDVRA として配布されます。このコード サンプルは、データ セットがリモート ターゲットにコピーされた後に CICS NEW COPY を実行します。スクリプト ファイルは、PDS/ライブラリ メンバとして、スクリプトを作成したメンバごとに 1 つ転送され、多くのスクリプト ファイルに転送される可能性があります。
@REM ************************************************************
@REM * THESE STEPS WILL EXECUTE AFTER THE COPY TO THE REMOTE TGT     
@REM ************************************************************ 
//* START #RJNDVRA                                                       
@IF &ZZCICSNEWC                                                          
//* START SCRIPT CICS NEW COPY                                                       
//ASCRIPT1 EXEC PGM=<YourNewCopyUtil>         
//SCRIPTIN DD   DISP=SHR,                                                
//         DSN=&ZZCICSNEWC
   ...
   <insert your site specific JCL here...>
   ...                                               
//* END   SCRIPT 1                                                       
@ENDIF
例: PDS をシーケンシャル ファイルに フラット化する配布後スクリプト ステップのモデル
このモデルは、CSIQOPTN ライブラリの #RJNDVRB として配布されます。このコード サンプルは、PDS をシーケンシャル ファイルに フラット化します。(この例には変更された区切り線が含まれます。)処理のためにシーケンシャル入力が必要な場合は、独自のユーティリティまたは標準的な IBM ユーティリティを使用して、この例に示すようにライブラリ構造を
フラット化
する必要がある場合があります。
@REM ************************************************************
@REM * THESE STEPS provide a sample FLATTEN process
@REM ************************************************************                                                                  
@IF &ZZSCRIPTFB                                                                                                      
//***************************************************************
//* THIS SCRIPT WILL TAKE A PDS & CREATE A FLAT (SEQUENTIAL) FILE     
//* FROM ITS MEMBERS USING STANDARD IBM UTILITIES.                      
//*                                                                     //***************************************************************
//*                                                                     
//SCR010   EXEC PGM=IDCAMS     * FIRST CLEAN UP TEMP MEMBERS                                             
//SYSPRINT DD   SYSOUT=*                                                
//SYSIN    DD   *                                                       
  DEL &ZZSCRIPTFB.P                                                     
  DEL &ZZSCRIPTFB.S                                                     
  SET MAXCC = 0                                                         
//*                                                                     
//SCR020   EXEC PGM=IEBPTPCH   * THEN PUNCH OUT ALL MEMBERS             
//SYSPRINT DD   SYSOUT=*                                                
//SYSUT1   DD   DISP=SHR,                                               
//         DSN=&ZZSCRIPTFB                                              
//SYSUT2   DD   DISP=(,CATLG),                                          
//         DSN=&ZZSCRIPTFB.P,                                           
//         SPACE=(CYL,(1,1),RLSE),                                      
//         UNIT=SYSDA,                                                  
//         DCB=(RECFM=FBA,LRECL=81)                                     
//SYSIN    DD  *                                                        
 PUNCH TYPORG=PO                                                        
//*                                                                     
//SCR030   EXEC PGM=SORT       * USE SORT TO STRIP OFF LEADING                       
//SYSOUT   DD   SYSOUT=*       * PUNCH CONTROL CHARACTERS          
//SYSPRINT DD   SYSOUT=*       * AND REPLACE MEMBER CARDS                                          
//SYSUDUMP DD   SYSOUT=*                                                
//REPORT1  DD   SYSOUT=*                                                
//SORTIN   DD   DISP=SHR,                                               
//         DSN=&ZZSCRIPTFB.P                                            
//SORTOUT  DD   DSN=&ZZSCRIPTFB.S,                                      
//         DISP=(,CATLG),                                               
//         UNIT=SYSDA,                                                  
//         SPACE=(CYL,(1,1)),                                           
//         DCB=(RECFM=FB,LRECL=80)                                      
//SORTWK01 DD  UNIT=DISK,SPACE=(CYL,(5,5))                   
//SORTWK02 DD  UNIT=DISK,SPACE=(CYL,(5,5))                   
//SORTWK03 DD  UNIT=DISK,SPACE=(CYL,(5,5))                   
//SYSIN    DD  *                                             
  SORT FIELDS=COPY                                           
  INREC  IFTHEN=(WHEN=(2,13,CH,EQ,C'MEMBER NAME  '),         
           BUILD=(C'./ ADD NAME=',15,8)),                    
         IFTHEN=(WHEN=NONE,BUILD=(1:2,80))                   
//*                                                          
//* END SCRIPT 1                                             
@ENDIF                                                       
@IFNOT &ZZSCRIPTFB                                           
//* START SCRIPT - THIS STEP WILL RUN IF THERE IS NO SCRIPT FILE                                           
//BSCRIPT1 EXEC PGM=IEFBR14,COND=((0,LE),ONLY) NO SCRIPT STEP
//* END SCRIPT 1                                             
@ENDIF