parmForm in callLink element
The parmForm property of the callLink element of the linkage options part specifies the format of call parameters. The parmForm property affects the generation of the calling program. For COBOL programs in a CICS® environment, this property also affects the generation of the called program.
- The pgmName property refers to the generated program or to a CICS-based program called by the generated program.
- The type property is localCall or remoteCall:
- If the type is localCall, the valid parmForm values (as described later) are CHANNEL, CICSOSLINK, COMMDATA, COMMPTR (the default), and OSLINK (the default for z/OS® batch)
- If the type is remoteCall, the valid parmForm values are CHANNEL, CICSOSLINK, COMMDATA (the default), (if you are referring to a COBOL program called from Java™ code) COMMPTR, and OSLINK.
- The pgmName property refers to a CICS-based program that is called by the program being generated; and
- The type property is ejbCall or remoteCall; in either case, the valid parmForm values (as described later) are CHANNEL, COMMDATA (the default) and COMMPTR.
- The pgmName property refers to a generated COBOL program that is called by way of the Java™ wrapper; and
- The type property is ejbcall or remoteCall; in either of those cases the valid parmForm values (as described later) are CHANNEL, COMMDATA (the default) or COMMPTR.
- CHANNEL
For the CHANNEL parameter format, containers are passed in a channel. A channel is a set of containers that function like parameters for passing data between CICS® programs. No COMMAREA is passed in the CHANNEL parameter format.
When an EGL generated program passes a channel to a called program, the channel has the same name as the called program. However, when an EGL called program receives a channel, the program uses a CICS® API call to retrieve the name of the channel that was passed.
The containers are named EGL-PARM-1 through EGL-PARM-n, where the maximum value of n is 30.
For example, if you pass three parameters of type INT, Record (33,000 bytes), and EGL STRING, the channel will include three containers, as shown in the following table:
Table 1. Example containers and parameters Container name Value in container EGL-PARM-1 4 bytes representing the INT EGL-PARM-2 33,000 bytes representing the record EGL-PARM-3 4 bytes representing the pointer to the STRING (the called program must be EGL) - CICSOSLINK
- Specifies that the standard COBOL parameter-passing conventions
are in effect, with the called program expecting pointers to data.
The CICS® EIB and COMMAREA are
always passed as the first two arguments, which are followed by the
program-specific arguments. Use of CICSOSLINK requires the following settings:
- The type property is localCall or remoteCall
- The linkType property is STATIC or DYNAMIC
- COMMDATA
- Specifies that the caller places business data (rather than pointers
to data) in the COMMAREA.
Each argument value is moved to the buffer adjoining the previous value without regard for boundary alignment.
COMMDATA is the default value if the type property is remoteCall or ejbCall.
- COMMPTR
- Specifies that the caller acts as follows:
- Places a series of 4-byte pointers in the COMMAREA, one pointer per argument passed
- Sets the high-order bit of the last pointer to 1
COMMPTR is the default value if the value of the type property is localCall.
- OSLINK
- Specifies that the standard COBOL parameter-passing conventions
are in effect, with the called program expecting pointers to data,
but without the CICS® EIB or
COMMAREA. OSLINK is valid only when you are generating a COBOL program. Use of OSLINK requires the following settings:
- The type property is localCall or remoteCall
- The linkType property is STATIC or DYNAMIC