The following code fragment constructs a menu that consists of two submenus and displays it, first saving any existing menu:
78 ID-NEW VALUE 101. 78 ID-OPEN VALUE 102. 78 ID-SAVE VALUE 103. 78 ID-SAVE-AS VALUE 104. 78 ID-EXIT VALUE 105. 78 ID-SAVE-SET VALUE 201. 78 ID-PASSWORD VALUE 202. 77 OLD-MENU PIC S9(9) COMP-4. 77 MAIN-MENU PIC S9(9) COMP-4. 77 SUBMENU PIC S9(9) COMP-4. BUILD-MENU. * Create two empty menus and save their menu handles CALL "W$MENU" USING WMENU-NEW. MOVE RETURN-CODE TO MAIN-MENU. CALL "W$MENU" USING WMENU-NEW. MOVE RETURN-CODE TO SUBMENU. IF MAIN-MENU = ZERO OR SUBMENU = ZERO GO TO BUILD-MENU-EXIT. * Build "File" submenu CALL "W$MENU" USING WMENU-ADD, SUBMENU, 0, 0, "&New", ID-NEW. CALL "W$MENU" USING WMENU-ADD, SUBMENU, 0, 0, "&Open...",ID-OPEN. CALL "W$MENU" USING WMENU-ADD, SUBMENU, 0, W-DISABLED, "&Save", ID-SAVE. CALL "W$MENU" USING WMENU-ADD, SUBMENU, 0, W-DISABLED, "Save &As...", ID-SAVE-AS. CALL "W$MENU" USING WMENU-ADD, SUBMENU, 0, W-SEPARATOR. CALL "W$MENU" USING WMENU-ADD, SUBMENU, 0, 0, "E&xit", ID-EXIT. * Attach "File" submenu to main menu CALL "W$MENU" USING WMENU-ADD, MAIN-MENU, 0, 0, "&File", 0, SUBMENU. * When finished with the "File" submenu, make another * submenu and populate it. CALL "W$MENU" USING WMENU-NEW. MOVE RETURN-CODE TO SUBMENU. IF SUBMENU = ZERO GO TO BUILD-MENU-EXIT. CALL "W$MENU" USING WMENU-ADD, SUBMENU, 0, W-CHECKED, "&Save Settings on Exit", ID-SAVE-SET. CALL "W$MENU" USING WMENU-ADD, SUBMENU, 0, 0, "&Password Protect", ID-PASSWORD. * Attach "Options" submenu CALL "W$MENU" USING WMENU-ADD, MAIN-MENU, 0, 0, "&Options", 0, SUBMENU. * Save current menu and display new one. CALL "W$MENU" USING WMENU-GET-MENU. MOVE RETURN-CODE TO OLD-MENU. CALL "W$MENU" USING WMENU-SHOW, MAIN-MENU.
Further on in the program, you may want to remove the check mark on the Save Settings on Exit menu item. The following line of code would do that:
CALL "W$MENU" USING WMENU-CHECK, ID-SAVE-SET, W-UNCHECKED.
When it came time to remove this menu and restore the old one, you could use the following code:
CALL "W$MENU" USING WMENU-SHOW, OLD-MENU. CALL "W$MENU" USING WMENU-DESTROY, MAIN-MENU.