Interlanguage Calls

When passing or receiving data from a program or procedure written in another language, it is important to know whether the other language supports the same parameter passing methods and the same data types as ILE RPG. Table 37 shows the different parameter passing methods allowed by ILE RPG and, where applicable, how they would be coded in the other the ILE languages. The table also includes the OPM RPG/400® compiler for comparison.

Table 37. RPG Parameter Passing Methods
Passing By Reference
ILE RPG – prototype
 D  proc      PR
 D    parm            1A
 C        CALLP  proc(fld)
ILE C
void proc(char *parm);
proc(&fld);
ILE COBOL
CALL PROCEDURE "PROC" USING BY REFERENCE PARM
RPG – non-prototyped
 C        CALL   'PROC'
 C        PARM                  FLD
ILE CL
 CALL PROC (&FLD)
Passing By Value
ILE RPG – prototype
 D  proc      PR
 D    parm            1A   VALUE
 C        CALLP  proc('a')
ILE C
void proc(char parm);
proc('a');
ILE COBOL
CALL PROCEDURE "PROC" USING BY VALUE PARM
RPG – non-prototyped N/A
ILE CL
N/A
Passing By Read-Only Reference
ILE RPG – prototype
 D  proc      PR
 D    parm            1A     CONST
 C        CALLP  proc(fld)
ILE C
void proc(const char *parm);
proc(&fld);
ILE COBOL N/A1
RPG – non-prototyped N/A
ILE CL
N/A
Notes:
  1. Do not confuse passing by read-only reference with COBOL's passing BY CONTENT. In RPG terms, to pass Fld1 by content, you would code:
         C                   PARM      Fld1          TEMP

    Fld1 is protected from being changed, but TEMP is not. There is no expectation that the parameter will not be changed.

For information on the data types supported by different HLLs, consult the appropriate language manual.



[ Top of Page | Previous Page | Next Page | Contents | Index ]