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 referenceCEEA4COB 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 contentCEEA4CB2 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 valueCEEA4CB3 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 RCEEA4CB4 Parameter passing returning R