This example shows how a CL program or procedure can be written to display and control a menu.
This example shows a CL procedure, ORD040C, that controls the displaying of the order department general menu and determines which high-level language (HLL) procedure to call based on the option selected from the menu. The procedure shows the menu at the display station.
Order Dept General Menu 1 Inquire into customer file 2 Inquire into item file 3 Customer name search 4 Inquire into orders for a customer 5 Inquire into an existing order 6 Order entry 98 End of menu Option:
The DDS for the display file ORD040C looks like this:
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
A* MENU ORDO4OCD ORDER DEPT GENERAL MENU
A
A R MENU TEXT('General Menu')
A 1 2'Order Dept General Menu'
A 3 3'1 Inquire into customer file'
A 4 3'2 Inquire into item file'
A 5 3'3 Customer name search'
A 6 3'4 Inquire into orders for a custom+
A er'
A 7 3'5 Inquire into existing order'
A 8 3'6 Order Entry'
A 9 2'98 End of menu'
A 11 2'Option'
A RESP 2Y001 11 10VALUES(1 2 3 4 5 6 98)
A DSPATR(MDT)
A
A
The source procedure for ORD040C looks like this.
PGM /* ORD040C Order Dept General Menu */
DCLF FILE(ORD040CD)
START: SNDRCVF RCDFMT(MENU)
SELECT
WHEN (&RESP=1) THEN(CALLPRC CUS210) /* Customer inquiry */
WHEN (&RESP=2) THEN(CALLPRC ITM210) /* Item inquiry */
WHEN (&RESP=3) THEN(CALLPRC CUS220) /* Cust name search */
WHEN (&RESP=4) THEN(CALLPRC ORD215) /* Orders by cust */
WHEN (&RESP=5) THEN(CALLPRC ORD220) /* Existing order */
WHEN (&RESP=6) THEN(CALLPRC ORD410C) /* Order entry */
WHEN (&RESP=98) THEN(RETURN) /* End of Menu */
ENDSELECT
GOTO START
ENDPGM
The DCLF command indicates which file contains the field attributes the system needs to format the order department general menu when the Send/Receive File (SNDRCVF) command is processed. The system automatically declares a variable for each field in the record format in the specified file if that record format is used in an Send File (SNDF), Receive File (RCVF), or Send/Receive File (SNDRCVF) command. The variable name for each field automatically declared is an ampersand (&) followed by the field name. For example, the variable name of the response field RESP in ORD040C is &RESP.
Other notes on the operation of this menu: