Vielleicht kann dies von euch einer nachvollziehen und ggf. einen Fehler an die IBM melden:
Fehlerbeschreibung V7R3:

// Deklaration
dcl-pr MyProc1 varchar(500);
Parm1 varchar(100) const;
Parm2 varchar(200) const options(*omit);
end-pr;

dcl-pr MyProc2 varchar(500);
Parm1 varchar(100) const;
Parm2 varchar(200) const options(*omit);
end-pr;

//Aufruf
MyProc1('Parameter1':'Parameter2');

// Verarbeitung (frag mich nicht warum, der Kunde macht es leider so)
dcl-proc MyProc1;
dcl-pi MyProc1 varchar(500);
Parm1 varchar(100) const;
Parm2 varchar(200) const options(*omit);
end-pi;
dcl-s RetVal varchar(500);

RetVal = MyProc2(Parm1:Parm2);
// Verarbeitung
:
// 2. Aufruf
RetVal = MyProc2(Parm1);

end-proc;

dcl-proc MyProc2;
dcl-pi MyProc1 varchar(500);
Parm1 varchar(100) const;
Parm2 varchar(200) const options(*omit);
end-pi;

// beim 2. Aufruf ist der Parameter nicht mehr NULL!!!
if %addr(Parm2) = *null;
endif;
end-proc;

Ich denke mal, dass bei *OMIT, falls es die letzten Parameter sind, die %parms() abzufragen sind sonst gibts Schrott.