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.
If you are generating a COBOL program,
parmForm is
applicable when both the following conditions are true:
- 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.
If you are generating a Java program,
parmForm is
applicable in this situation:
- 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.
If you are generating a Java wrapper,
parmForm is
applicable in the following case:
- 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.
Select a value from this list:
- 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 parametersContainer 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