7.6.3 CALL Examples
Example 1: Call a program named INVOICE in library PRODLIB and pass two parameters, invoice number and inquiry date as literals.
CALL PGM(PRODLIB/INVOICE) PARM('INV123' '010187')
Example 2: Call program PUTBATCH passing the fields #BATCH, #ORDER and the current date (which is obtained from system variable *DATE).
CALL PGM(PUTBATCH) PARM(#BATCH #ORDER *DATE)
Example 3: Call LANSA process ORDERS and request that the process main menu be displayed to allow the user to choose the desired function. If the user uses the MENU key to exit from process ORDERS continue processing in this function at the next RDML command:
CALL PROCESS(ORDERS) FUNCTION(*MENU) MENU_USED(*NEXT)
Example 4: Call LANSA process ORDERS and request that the function HEADER be directly invoked without displaying the process main menu. If the user uses the MENU or EXIT keys to exit from function HEADER, continue processing in this function at the next RDML command:
CALL PROCESS(ORDERS) FUNCTION(HEADER)
EXIT_USED(*NEXT) MENU_USED(*NEXT)
Example 5: Do the same thing as example 4, but use a direct call to function HEADER:
CALL PROCESS(*DIRECT) FUNCTION(HEADER)
EXIT_USED(*NEXT) MENU_USED(*NEXT)
Example 6: Pass data structure DATAFILE into function(ORDER):
This requires a file called DATAFILE to be defined to LANSA. The real fields on this file can be passed as a data structure to another function. A dummy field on the end of the data structure would avoid the need to recompile each called function receiving the data structure each time fields are added within the data structure. As long as the length of the data structure remains consistent, the called function would not need to be recompiled (unless the existing fields are changed in length, position or type within the data structure).
CALL PROCESS(*DIRECT) FUNCTION(ORDER) PASS_DS(DATAFILE)
Example 7: Pass working list #ORDLINE to function(ORDER):
CALL PROCESS(*DIRECT) FUNCTION(ORDER) PASS_LST(#ORDLINE)
DEF_LIST NAME(#ORDLINE) FIELDS(#ORDLIN #PRODUCT #QUANTITY #PRICE) TYPE(*WORKING)
The contents of working list #ORDLINE can now be referenced by function ORDER.
Example 8: Call WEBROUTINE ORDER:
CALL WEBROUTINE(ORDER)
Values of any fields and lists specified FOR(*INPUT) on the ORDER WEBROUTINE will be passed to it.
Example 9: Call WEBROUTINE ORDER in ORDERS WAM:
CALL WEBROUTINE(#ORDERS.ORDER)
Values of any fields and lists specified FOR(*INPUT) on the ORDER WEBROUTINE will be passed to it.
Example 10: Provide the name of a WEBROUTINE to call from a field:
#WEBRTN := 'ORDERS.ORDER'
CALL WEBROUTINE(*EVALUATE #WEBRTN)