Page History
...
- When a compiled RDML function (e.g.: FUNCA) is running and executes a CALL command like this:
CALL PROCESS(TEST) FUNCTION(FUNCB)
to invoke another RDML function called FUNCB, what actually happens is this:
...
- Include the command FUNCTION OPTIONS(*DIRECT) into FUNCB (note that is FUNCB) then recompile it. This simply specifies that FUNCB is eligible for direct mode invocation and it will not affect FUNCB in any way.
- Change the call command in FUNCA to be like this:
...
CALL PROCESS(*DIRECT) FUNCTION(FUNCB)
then recompile FUNCA. This indicates that function FUNCB should be called in direct mode, rather than via its process controller named TEST.
...
- FUNCB cannot use any "sideways" control commands like TRANSFER because in this structure it does not have its process controller (TEST) available to handle the request for it. It should always be terminated by a CANCEL/MENU function key or command, an EXIT function key or command, or by a RETURN command.
...
- The introduction of the CALL PROCESS(*DIRECT) option has now made high volume calls possible, this was previously not recommended IN LANSA. When implementing high volume calls to other functions the size of the exchange list should be considered. In these circumstances a large number of fields on the exchange list may cause a performance overhead.
Investigate the option of passing data structures (CALL....PASS_DS(#dddddd)) between functions instead of using the exchange option.
- The introduction of the CALL PROCESS(*DIRECT) option has now made high volume calls possible, this was previously not recommended IN LANSA. When implementing high volume calls to other functions the size of the exchange list should be considered. In these circumstances a large number of fields on the exchange list may cause a performance overhead.
| Calling a User Program |
|---|
- The parameters passed to the called program or process can be a field name, an alphanumeric literal, a numeric literal, a system variable or a process parameter.
- If special value *LIBL was nominated as the library containing the program then the program should be in one of the libraries in the user's library list at the time the function is executed.
...