We have a Natural / CICS program that calls external modules written in C.
If all the calls are done inside one terminal I/O the program works correctly but if more than one terminal /O is needed then the external modules are unloaded and the calls fail as the initialisation that was done in the external DLLs is lost.
Is there a way to keep the DLLs resident between the calls or is this a CICS limitation?
Only way is to run session in conversational mode, i.e. PSEUDO=OFF.
problem is that the LE enclave is terminated over a pseudo-conversational screen I/O. So Natural has to reload all external LE programs (this includes all 3GL programs) via CEEFETCH, to re-setup the LE enclave for all relevant programming languages according to their atributes. In other words: a CICS LOAD HOLD for a 3GL program does not help; CICS LOAD HOLD would well keep the program in storage, but the LE enclave is brandnew again.