COBOL
For COBOL to use z/OS® parameter passing, use the USING BY REFERENCE phrase for CALL and PROCEDURE DIVISION statements:
77 X PIC S9(9) BINARY VALUE 32767.
77 Y PIC X(4) VALUE 'PRM2'.
77 Z POINTER.
SET Z TO ADDRESS OF Y.
CALL 'SUB1' USING BY REFERENCE X,Y,Z
Figure 1. Parameter passing
by reference
To pass a pointer to a copy of the parameters in COBOL, use the USING BY CONTENT phrase.
77 X PIC S9(9) BINARY VALUE 32767.
77 Y PIC X(4) VALUE 'PRM2'.
77 Z POINTER.
SET Z TO ADDRESS OF Y.
CALL 'SUB1' USING BY CONTENT X,Y,Z
Figure 2. Parameter passing
by content
To pass a parameter value directly in the parameter list in COBOL, as C does, use the USING BY VALUE phrase.
77 X PIC S9(9) BINARY VALUE 32767.
77 Y PIC X(4) VALUE 'PRM2'.
77 z POINTER.
SET Z TO ADDRESS OF Y.
CALL 'SUB1' USING BY VALUE X,Y,Z
Figure 3. Parameter passing
by value
To pass and/or receive a function value in COBOL, as C does, use the RETURNING phrase. The returned function value is accessed using register 15, so the COBOL RETURN-CODE special register cannot be used.
77 X PIC S9(9) BINARY VALUE 32767.
77 Y PIC X(4) VALUE 'PRM2'.
77 R PIC S9(9) BINARY
SET Z TO ADDRESS of Y.
CALL 'SUB1' USING BY VLUE X,Y RETURNING R
Figure 4. Parameter passing
returning R