z/OS バッチおよび CICS 用に 1 回生成

z/OS® バッチ用に生成する場合、準備済みロード・モジュールが z/OS バッチまたは CICS® で実行されるようにすることができます。生成では、実行時に適切な EGL モジュールが選択されるように、DUALMODE シンボリック・パラメーターを使用する必要があります。

以下に、その他の考慮事項を示します。
  • コードを CICS で実行している場合、トランザクションは、DUALMODE を使用しない EGL CICS メインプログラム、または非生成 CICS プログラムによって開始される必要があります。その後、DUALMODE を使用する EGL 呼び出し先プログラムまたは EGL ライブラリー、z/OS CICS 用に生成された EGL プログラム、または非生成プログラムのいずれかの種類のコードを、ユーザーのロジックで呼び出すことができます。
  • DUALMODE を使用するプログラムでは CICS ストレージ保護の使用が許可されますが、ファイル入出力は許可されません。
  • 生成されたプログラムの準備時に、CICS ロード・モジュールのために追加のリンク・エディットを行う場合は、SQL I/O がサポートされます。リンク・エディットによって、DSNELI という名前のバッチ DB2® インターフェース・モジュールが、DSNCLI という名前の必須の CICS DB2 インターフェース・モジュールで置き換えられます。
DB2 にアクセスしていて、DB2 インターフェース・モジュールを置き換える必要がある場合、リンク・エディット・パーツを作成し、z/OS バッチ生成に使用するビルド記述子からそのパーツを参照することができます。リンク・エディット・パーツは、開始位置が列 2 である各行にテキストがあり、次のようになります。
 ENTRY %EZEALIAS%
 REPLACE DSNELI
 INCLUDE INPUT(%EZEALIAS%)
 INCLUDE SYSLIB(DSNCLI) 
 NAME %EZEALIAS%(R)

そのリンク・エディット・パーツを追加して参照すると、z/OS バッチ用の FDABCL および FDAPCL ビルド・スクリプトにある再リンク・ステップが実行されます。ただし、次のようにビルド・スクリプトを変更する必要があります。

  • DB2 にアクセスしないプログラムを準備する FDABCL ビルド・スクリプトに移動して、既存の再リンク (L2) ステップをすべて置き換えます。
    //X  IF &HASLKG..EQ.YES 
    //L2 EXEC PGM=IEFBR14 
    //EZELKG    DD  CCUEXT=LKG,DISP=(NEW,DELETE), 
    //    UNIT=SYSDA,SPACE=(TRK,(10,10)),      
    //    DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200) 
    //X ENDIF                                     

    この変更により、非 DB2 プログラムに対して再リンクが行われなくなります。

  • DB2 にアクセスするプログラムを準備する FDAPCL ビルド・スクリプトに移動します。このスクリプトで、次に示されているように、ターゲット CICS ロード・ライブラリーと INPUT ファイルを参照します。
    //X  IF &HASLKG..EQ.YES 
    //L2        EXEC PGM=IEWL,REGION=&RGN, 
    //   PARM='RENT,REUS,LIST,XREF,MAP,AMODE(&AMODE),RMODE(&RMODE)' 
    //SELALMD  DD  DISP=SHR,DSN=&ELA..SELALMD
    //         DD  DISP=SHR,DSN=&ELA..SELAMOD2
    //SYSLIB   DD  DISP=SHR,DSN=&DFHLOAD
    //         DD  DISP=SHR,DSN=&DSNLOAD 
    //SYSLIN    DD  CCUEXT=LKG,DISP=(NEW,DELETE),
    //    UNIT=SYSDA,SPACE=(TRK,(10,10)),
    //    DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200) 
    //*   
    //* SYSLMOD CHANGED TO SPECIFY TARGET CICS LOAD LIBRARY 
    //* 
    //SYSLMOD  DD  DISP=SHR,DSN=&CGHLQ..ZOSCICS.LOAD
    //SYSPRINT DD  CCUEXT=&CCUEXTL,DISP=(NEW,DELETE),
    //    UNIT=VIO,SPACE=(TRK,(30,10)), 
    //    DCB=(RECFM=FB,LRECL=121,BLKSIZE=1210)
    //SYSUT1   DD  SPACE=(1024,(&WSPC,&WSPC)),UNIT=VIO  
    //*PROVIDE ANY CUSTOM DD STATEMENTS HERE
    //* 
    //* INPUT REFERENCES OUTPUT FILE FROM PREVIOUS LINK STEP  
    //* 
    //INPUT    DD  DISP=SHR,DSN=&CGHLQ..&SYSTEM..LOAD
    //X    ENDIF 
    //