Selecting the high-performance option (HPO)

The high-performance option (HPO) is for users whose top priority is to optimize terminal response times and maximize transaction throughput. HPO improves performance by reducing the transaction path length; that is, the number of instructions required to service each request.

Use of HPO potentially allows CICS® application programs to bypass all z/OS® integrity controls. If you decide to use HPO, ensure that the application programs used on your CICS system meet your own installation's integrity requirements. The code to support the SNA authorized path feature of HPO, which is the improved path through SNA, is in CICS.

Defining DFHHPSVC to z/OS

Define the DFHHPSVC module to z/OS as a Type 6 SVC. The default HPO SVC number defined in the DFHSIT module is 215.

To change the default Type 6 SVC number:
  1. Define the new number to z/OS. See Installing the CICS SVCs.
  2. Define the new number to CICS by using the SRBSVC system initialization parameter.

If you are not using HPO, do not load the DFHHPSVC module into the z/OS nucleus. You choose to use HPO explicitly by coding HPO=YES in the system initialization table.

Loading module DFHHPSVC

Before you can use HPO, ensure that the HPO SVC module is included in the z/OS nucleus.

Use one of the following methods:
  • Copy the DFHHPSVC module into SYS1.NUCLEUS, renaming it to IGC215 or the appropriate name if you are not using the default, and specify it on an INCLUDE statement in the NUCLSTxx member of the SYS1.PARMLIB library. You must also specify the name of the NUCLSTxx member on the NUCLST statement of the LOADxx member of the SYS1.PARMLIB library. The NUCLSTxx method provides you with greater flexibility in customizing the z/OS nucleus than the NMLDEF method described in the second method.

    For further information about coding a NUCLSTxx member and about a comparison with the NMLDEF macro, see the z/OS MVS Initialization and Tuning Guide.

  • Copy the DFHHPSVC module into SYS1.NUCLEUS and specify it in a nucleus module list (NML) for CICS, created using the NMLDEF macro shown in the sample job. This NML selects the CICS members in SYS1.NUCLEUS that are to be loaded into the z/OS nucleus, and eliminates the requirement for the z/OS nucleus to be re-link-edited for the DFHHPSVC module or any other module in the z/OS nucleus. For information about coding an NMLDEF macro, see z/OS MVS Programming: Authorized Assembler Services Reference (Volume 3).

    The sample job stream (see Figure 1) loads the CICS Type 6 SVC into the z/OS nucleus.

    Figure 1. Sample job stream for loading CICS Type 6 SVC into z/OS nucleus
    //LOADSVC   JOB 'accounting info',MSGCLASS=A,CLASS=A
    //NMLDEF    EXEC ASMHCL
    //C.SYSIN    DD *
    IEANCnnn NMLDEF NUCL=DFHHPSVC
    //L.SYSLMOD DD DSN=SYS1.NUCLEUS,UNIT=3380,DISP=OLD
    //L.SYSIN DD *
      NAME IEANCnnn    1 
    /*
    //

     1  nnn is the number of the CICS NML, in the range 001 through 256. Choose the value of nnn to be unique in your z/OS nucleus.

Removing existing DFHHPSVC modules from the z/OS nucleus

If you have a version of the DFHHPSVC module from an earlier release of CICS already installed in your z/OS nucleus, you do not have to replace it with the latest version. Versions of the DFHHPSVC module from earlier releases of CICS are compatible with the current release. The version of the DFHHPSVC module from the current release of CICS is compatible with earlier releases of CICS.

You cannot use the EXCLUDE statement to exclude a CSECT that was previously linked into IEANUC01 by the linkage editor. However, you can remove a link-edited version of the DFHHPSVC module from the z/OS nucleus by running a link-edit job to replace the existing version of the nucleus with one that does not contain the module to be removed, in one of the following ways:
  • If the existing nucleus-resident DFHHPSVC module is known to SMP/E, use the SMP/E UCLIN statement to remove the module entry.
  • You must link-edit the nucleus module, IEANUC0x, with the scatter (SCTR) attribute. If you do not do this, z/OS enters a non-restartable wait state at system initialization.

Figure 2 is a sample JCL to exclude DFHHPSVC from IEANUC01.

Figure 2. Sample JCL for excluding DFHHPSVC from IEANUC01
//CLNNUC   EXEC PGM=LINKEDIT,PARM='LIST,LET,NCAL,XREF,SCTR'
//SYSPRINT DD  SYSOUT=*
//SYSUT1   DD  UNIT=SYSDA,SPACE=(TRK,(10,10))
//SYSLMOD  DD  DISP=SHR,DSN=SYS1.NUCLEUS
//SYSLIN   DD *
      REPLACE DFHHPSVC
      INCLUDE SYSLMOD(IEANUC01)
      NAME IEANUC01(R)

For more information about binder options, see Binder options in z/OS Program Management User's Guide and Reference.