Sie müssen nicht "damit umgehen", das ist das Schöne daran.
D TestProc1 Pr 32000a
D TestProcV7 Pr 32000a RTNPARM
myResults = TestProc1();
myResults = TesProcV7();
Der Aufruf der Prozedur wird unabhängig davon, ob RTNPARM angegeben ist oder nicht, gleich codiert.
Es ist nicht der Standard (dh implizit) wie es bei v7 hinzugefügt wurde. Außerdem ist es nur schneller, wenn der zurückgegebene Wert größer als 16 Bytes ist.
Plus, wenn die aufgerufene Prozedur optionale Parameter hat, müssen Sie sie in der aufgerufenen Prozedur ein wenig anders behandeln.
Gegeben
D MyProc PI LikeDS(myResult)
D Compulsory 20a
D Optional 10a Options(*NoPass)
Alte Art und Weise:
If %Parms > 1;
DoStuff();
EndIf;
Neuer Weg
If %ParmNum(Optional) <= %Parms;
DoStuff();
EndIf;
Weitere Details und Beispiele oben von Large Subprocedure Return Values: V7 Brings Relief