I have a program CALL that fails with a 4038 abend and I can't see why. The call is dynamic, using a variable that contains the program name. The called program clean compiles. I tried changing both to use EXEC CICS LINK instead and this worked OK, so the program is obviously acceptable to CICS in that format. I just can't see why it should fail when called. Yes, it does use GOBACK.
I'm certain that it's the call itself and not the called program, because an inserted TRACEID statement (first line) is never executed.
After some more digging, I found that an IGZ module failed to load. It seems that this module is AMODE=31 and my called program was AMODE=24. I recompiled using AMODE=31 and the call then worked. It seems LE doesn't like the mix, so even though CICS could load the program, LE couldn't.