Example 1: Consider the 2 following RDML programs that ask a user to input an order number and then print the order line details:
GROUP_BY NAME(#ORDERDET) FIELDS(#ORDNUM #CUSTNUM #DATEDUE #ORDLIN #PRODUCT #QUANTITY #PRICE) REQUEST FIELDS(#ORDNUM) L1: FETCH FIELDS(#ORDERDET) FROM_FILE(ORDHDR) WITH_KEY(#ORDNUM) NOT_FOUND(L1) ISSUE_MSG(*YES) SELECT FIELDS(#ORDERDET) FROM_FILE(ORDLIN) WITH_KEY(#ORDNUM) UPRINT FIELDS(#ORDERDET) ENDSELECT GOTO L1 |
and:
GROUP_BY NAME(#ORDERDET) FIELDS(#ORDNUM #CUSTNUM #DATEDUE #ORDLIN #PRODUCT #QUANTITY #PRICE) REQUEST FIELDS(#ORDNUM) L1: FETCH FIELDS(#ORDERDET) FROM_FILE(ORDHDR) WITH_KEY(#ORDNUM) NOT_FOUND(L1) ISSUE_MSG(*YES) SELECT FIELDS(#ORDERDET) FROM_FILE(ORDLIN) WITH_KEY(#ORDNUM) UPRINT FIELDS(#ORDERDET) ENDSELECT ENDPRINT GOTO L1 |
Note that both programs are almost identical. They both request that an order number be input, retrieve the order header details and then print all associated order line details.
The difference is in the ENDPRINT command.
The first program waits until the user uses the EXIT or MENU function key on the REQUEST command before an ENDPRINT command is automatically executed as the function ends. Thus all the orders requested have been printed into one print / spool file.
In the second program an ENDPRINT is executed after each order has been printed. This causes the print / spool file to be closed. A new one will be automatically opened when the next UPRINT command (if any) is executed. Thus each order is placed into a separate print / spool file.