Hi,
I took a deeper look at this.
If I understand correctly, your scenario is this:
MyService (EGL Service) -> Calls -> PGMA (non-EGL).
If this is correct, when I generated the service and used PARMFORM=CICSOSLINK and LINKTYPE=DYNAMIC, then the parms are not passed via a Channel. The are passed as "using" variables which means the receiving program would need to expect the EIB, the Commarea, and then the record (or fields) that are being passed in its Procedure Division. See the code below:
Since the service DOES use channels as the vehicle to send parms to it, I would expect an ASSIGN to still return a value, but the called non-EGL program does not need to deal with it if I understand things correctly.
Generated code for call statement to non-EGL program passing "myrec".
* EGL *9* Call "PGMA"(myrec);
MOVE "PGMA" TO EZEPROGM
PERFORM EZESETUP-CALL
MOVE 9 TO EZEAPP-PRC-NUM
SET EZERTS-CALL-CICSOSLINK TO TRUE
SET EZERTS-DYNAMIC-CALL TO TRUE
MOVE EIBCALEN TO EZEWRK-TALLY0
MOVE EZEWRK-TALLY TO EIBCALEN
CALL EZEPROGM
USING DFHEIBLK DFHCOMMAREA (1: EIBCALEN) MYREC-6
ON EXCEPTION
MOVE EZEWRK-TALLY0 TO EIBCALEN
MOVE "00000001" TO EZERT8
MOVE 9 TO EZERTS-PRC-NUM
MOVE "CALLPROGRAM-FFGAA" TO EZERTS-PRC-NAME
PERFORM EZE-THROW-INV-EXCEPTION
END-CALL
markevans