Im folgenden Beispiel ruft das Makro ein Programm auf und übergibt mehrere Parameter. Nach dem Makro wird die in RPG und CL geschriebene Quelle für das Programm aufgelistet. Das aufgerufene Programm akzeptiert zwei ganzzahlige Parameter. Es kopiert den ersten Parameter (den Eingabeparameter) in den zweiten Parameter (den Ausgabeparameter).
Makro:
%define ilepgm = "/QSYS.LIB/NETDATADEV.LIB/TDCCLI01.PGM"
%define out1 = "0"
%FUNCTION(DTW_DIRECTCALL) dcFunction(IN INT inp1,
OUT INT outp2)
{ %EXEC { $(ilepgm) %} %}
%HTML(REPORT){
@dcFunction("123", out1)
The value of out1 is: "$(out1)"
%}
ILE-RPG-Programm:
DINP1 S 10I00 DOUTP2 S 10I00 C* C *ENTRY PLIST C PARM INP1 C PARM OUTP2 C* C Z-ADD INP1 OUTP2 C* C SETON LR
CL-Programm:
PGM PARM(&INP1; &OUTP2;)
DCL VAR(&INP1;) TYPE(*CHAR) LEN(4)
DCL VAR(&OUTP2;) TYPE(*CHAR) LEN(4)
CHGVAR VAR(&OUTP2;) VALUE(&INP1;)
ENDPGM