Steps for installing the CICS-ICSF attachment facility

  1. If ICSF was previously installed in an environment without the CICS-ICSF Attachment Facility (i.e., without being linked with the CICS SDFHLOAD data set), the ICSF system programmer will need to relink the ICSF TRUE, CSFATRUE, and the ICSF enabling routine, CSFATREN. This would be the case if, for example, (a) the DDDEF entries for ICSF do not have the SDFHLOAD DDDEF pointing to the CICS SDFHLOAD data set but instead have it pointing to an empty data set, or (b) z/OS (and hence ICSF) was installed using a ServerPac.
    To relink the ICSF modules, first manually update the ICSF DDDEF for SDFHLOAD to point to the CICS SDFHLOAD data set. (Refer to ICSF sample CSFDDDEF shipped in SAMPLIB.) Then submit a job to relink the ICSF modules. This is an example of job control language for the relink.
    //STEP01        EXEC PGM=IEWL,
    //   PARM='LIST,XREF,LET,DCBS,AMODE(31),RMODE(24)'
    //SYSLMOD   DD DISP=SHR,DSN=yyy.SCSFSTUB   (the ICSF load library)
    //SYSLIB    DD DISP=SHR,DSN=xxxxxx.SDFHLOAD
    //SDFHLOAD  DD DISP=SHR,DSN=xxxxxx.SDFHLOAD
    //SCSFMOD0  DD DISP=SHR,DSN=yyy.SCSFMOD0   (the ICSF load library)
    //SYSUT1    DD UNIT=SYSDA,SPACE=(CYL,(10,10))
    //SYSPRINT  DD SYSOUT=*
    //SYSLIN    DD *
           INCLUDE SDFHLOAD(DFHEAI)
           REPLACE CSFDHEAI(DFHEAI),CSF0EAI
           INCLUDE SCSFMOD0(CSFATREN)
             ENTRY DFHEAI
         NAME CSFATREN(R)
           INCLUDE SDFHLOAD(DFHEAI)
           REPLACE CSFDHEAI(DFHEAI),CSF0EAI
           INCLUDE SCSFMOD0(CSFATRUE)
             ENTRY DFHEAI
         NAME CSFATRUE(R)
    /*
  2. Include the ICSF load module data set in the CICS startup job control language as shown in this example.
    //DFHRPL    DD DISP=SHR,DSN=xxxxx.SDFHLOAD
    //          DD DISP=SHR,DSN=yyy.SCSFSTUB (ICSF callable service stubs)
    //          DD DISP=SHR,DSN=yyy.SIEALNKE (ICSF shared libraries)
    //          DD ...
    ...
    //SYSIN     DD DISP=SHR,DSN=xxxxx.SYSIN(DFH$SIPx)
    ...
    In the previous sample code, DFH$SIPx includes the entry:
    PLTPI=yy,
  3. Customize the Program Load Table (PLT), to include the ICSF enabling routine CSFATREN in second stage initialization.

    This is an example input deck for compiling a PLT for automatic enablement of the CICS-ICSF link. This is ASM code. Assemble it with the CICS macro library, but without the CICS translator.

    //SYSIN DD *
    *
    * List of programs to be executed sequentially during system
    * initialization.  Required system initialization parm: PLTPI=yy
    * DFHPLTCS should be defined in the CSD by CEDA or DFHCSDUP job
    *
    DFHPLT TYPE=INITIAL,SUFFIX=yy
    *
    * -------- Second stage of initialization -----------------
    *
    DFHPLT TYPE=ENTRY,PROGRAM=CSFATREN  (Run enable of CSFATRUE)
    *
    * ---------- Delimiter between Stages 2 and 3 ------------
    *
    DFHPLT TYPE=ENTRY,PROGRAM=DFHDELIM
    *
    * --------- Third stage of initialization -----------------
    * (none)
    *
    DFHPLT TYPE=FINAL
    END
    /*

    The previous code is an example only. Your CICS administrator can use it as a guide in customizing the PLT. For more information about coding the PLT, refer to CICS Transaction Server for z/OS, Version 5 Release 1.

  4. Link edit the PLT with these controls:
    INCLUDE OBJLIB(DFHPLTyy)
    NAME    DFHPLTyy(R)
  5. The CICS administrator should customize the system CSD to include:
    • CSFATRUE
    • CSFATREN
    • A PLT to indicate that initialization is to call CSFATREN to enable the ICSF TRUE, CSFATRUE
    This is an example of the job control language and input. In this example, xxxxx represents the local CICS prefix, and zzzzzzzz represents the PLT entry that was compiled previously.
    //UPDATE  JOB  ...
    //*- - - - - - - - - - - - - - - - - - - - -
    //DEFINES EXEC PGM=DFHCSDUP,REGION=2M
    //STEPLIB   DD DISP=SHR,DSN=xxxxxx.SDFHLOAD
    //          DD DISP=SHR,DSN=zzzzzzzz
    //DFHCSD    DD DISP=SHR,DSN=xxxxxx.DFHCSD
    //SYSPRINT  DD SYSOUT=A
    //SYSIN     DD *
    *
    DEFINE PROGRAM(CSFATREN) GROUP(ICSF)
                             DESCRIPTION(TRUE enablement routine)
                             LANGUAGE(ASSEMBLER)
    *
    DEFINE PROGRAM(CSFATRUE) GROUP(ICSF)
                             DESCRIPTION(ICSF interface TRUE)
                             LANGUAGE(ASSEMBLER)
                             CONCURRENCY(THREADSAFE)
                             API(OPENAPI)
    *
    DEFINE PROGRAM(DFHPLTyy) GROUP(ICSF)
                             DESCRIPTION(PLT Program Init for CSFATRUE)
                             LANGUAGE(ASSEMBLER)
    The PLT in the example runs the program CSFATREN during CICS initialization. CSFATREN automatically enables the ICSF TRUE, CSFATRUE. If CICS is already started, use a CICS Command Level Interpreter Transaction (CECI) to enable CSFATRUE. To do this, go into CECI and issue this statement:
    ENABLE PROGRAM('CSFATRUE') TALENGTH(250) LINKEDITMODE START
    You can also do this in a single step with this statement:
    CECI ENABLE PROGRAM('CSFATRUE') TALENGTH(250) LINKEDITMODE START
  6. If you have any existing CICS applications which invoke any of the ICSF services in the Wait List, then these applications must be re-linked with the current ICSF stubs.