Running application programs in the RDSAs

Programs that are eligible to reside above 16MB, and are read-only, can reside in the CICS® extended read-only DSA (ERDSA). Therefore, to be eligible for the ERDSA, programs must be:

Programs that are not eligible to reside above 16MB, and are read-only, can reside in the CICS read-only DSA (RDSA) below 16MB. Therefore, to be eligible for the RDSA, programs must be:

Note:
When you are running CICS with RENTPGM=PROTECT specified as a system initialization parameter, the RDSAs are allocated from key-0 read-only storage.

Programs link-edited with RENT and RMODE(ANY) are automatically loaded by CICS into the ERDSA.

ERDSA requirements for the specific languages are described as follows.

Assembler

If you want CICS to load your assembler programs in the ERDSA, assemble and link-edit them with the following options:

  1. The RENT assembler option
  2. The link-edit RENT attribute
  3. The RMODE(ANY) residency mode
Note:
If you specify these options, ensure that the program is truly read-only (that is, does not modify itself in any way--for example, by writing to static storage), otherwise storage exceptions occur. The program must also be written to 31-bit addressing standards. See the CICS Problem Determination Guide for some possible causes of storage protection exceptions in programs resident in the ERDSA.

The CICS-supplied procedure, DFHEITAL, has a LNKPARM parameter that specifies the XREF and LIST options only. To link-edit an ERDSA-eligible program, override LNKPARM from the calling job, specifying the RENT and RMODE(ANY) options in addition to any others you require.

For example:

//ASMPROG  JOB 1,user_name,MSGCLASS=A,CLASS=A,NOTIFY=userid
//EITAL    EXEC DFHEITAL,
           .
           (other parameters as necessary)
           .
//         LNKPARM='LIST,XREF,RMODE(ANY),RENT'
Note:
The CICS EXEC interface module for assembler programs (DFHEAI) specifies AMODE(ANY) and RMODE(ANY). However, because the assembler defaults your application to AMODE(24) and RMODE(24), the resulting load module also becomes AMODE(24) and RMODE(24).

If you want your application program link-edited as AMODE(31) and RMODE(ANY), you are recommended to use appropriate statements in your assembler program. For example:

MYPROG    CSECT
MYPROG    AMODE 31
MYPROG    RMODE ANY

There are two ways of setting AMODE and RMODE:

When using the binder, you may see unexpected warning messages about conflicting AMODE and RMODE specifications.

C and C/++

If you want CICS to load your C and C++ programs into the ERDSA, compile and link-edit them with:

  1. The RENT compiler option.

The CICS-supplied procedures DFHYITDL Start of changeor DFHYITFLEnd of change (for C) and DFHYITEL Start of changeor DFHYITGLEnd of change (for C++) have a LNKPARM parameter that specifies a number of link-edit options. To link-edit an ERDSA-eligible program, override this parameter from the calling job, and add RENT to the other options you require. You do not need to add the RMODE(ANY ) option, because the CICS EXEC interface module for C (DFHELII) is link-edited with AMODE(31) and RMODE(ANY). Therefore, your program is link-edited as AMODE(31) and RMODE(ANY) automatically when you include the CICS EXEC interface stub, see The CICS-supplied interface modules.

The following sample job statements show the LNKPARM parameter with the RENT option added:

//CPROG    JOB 1,user_name,MSGCLASS=A,CLASS=A,NOTIFY=userid
//YITDL    EXEC DFHYITDL,
           .
           (other parameters as necessary)
           .
//         LNKPARM='LIST,MAP,LET,XREF,RENT'

COBOL

If you use the integrated CICS translator then the compile requires the RENT compiler option, so no CBL card needs to be added during translation. COBOL programs that use a separate translation step are automatically eligible for the ERDSA, because:

You also need to specify the reentrant attribute to link-edit. The CICS-supplied procedure, DFHYITVL, has a LNKPARM parameter that specifies a number of link-edit options. To link-edit an ERDSA-eligible program, override this parameter from the calling job, and add RENT to any other options you require. For example:

//COBPROG  JOB 1,user_name,MSGCLASS=A,CLASS=A,NOTIFY=userid
//YITVL    EXEC DFHYITVL,
           .
           (other parameters as necessary)
           .
//         LNKPARM='LIST,XREF,RENT'

PL/I

CICS PL/I programs are generally eligible for the ERDSA, provided they do not change static storage. The following requirements are enforced, either by CICS or PL/I:

You also need to specify the reentrant attribute to the link-edit. The CICS-supplied procedure, DFHYITPL, has a LNKPARM parameter that specifies a number of link-edit options. To link-edit an ERDSA-eligible program, override this parameter from the calling job, and add RENT to any other options you require. For example:

//PLIPROG  JOB 1,user_name,MSGCLASS=A,CLASS=A,NOTIFY=userid
//YITPL    EXEC DFHYITPL,
           .
           (other parameters as necessary)
           .
//         LNKPARM='LIST,XREF,RENT'
Note:
Do not specify the RENT attribute on the link-edit step unless you have ensured the program is truly read-only (and does not, for example, write to static storage), otherwise storage exceptions will occur. See the CICS Problem Determination Guide for some possible causes of storage protection exceptions in programs resident in the ERDSA.
[[ Contents Previous Page | Next Page Index ]]