IDENTIFICATION DIVISION. PROGRAM-ID. UIF300. AUTHOR. R. Poynter. INSTALLATION. FLEETWOOD ENTERPRISES, INC. DATE-WRITTEN. 8-MAR-84. ****************************************************************************** * * PROGRAM FUNCTIONS: User Interface Main Program. This program will * allow a user to run an application either from * a menu or by entering a valid transaction name. * The application may run either interactively as a * subprocess or be submitted as a batch job, by * design. In some cases the user will be allowed * to select whether the application will be run as * a batch job or interactively. In addition, each * user will have a menu tailored to his job function, * and will not have access to transactions which * are not specifically authorized for him. * * PROGRAM OPTIONS: None. * * PROGRAM MODIFICATIONS: * * AUTHOR B. Wallis * DATE 30-Oct-84 * VERSION 1-B * * PROGRAM CHANGES: * 1) Take the GIVING clause out of the call to UIF310. * 2) Take out all references to UTL580. * 3) Bring it up to standards (e.g., fix paragraph names) * ****************************************************************************** ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. VAX-11. OBJECT-COMPUTER. VAX-11. SPECIAL-NAMES. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT UIF-MASTER-FILE ASSIGN TO "UIF_MASTER" ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS MASTER-PRIMARY-KEY. SELECT UIF-USERNAME-FILE ASSIGN TO "UIF_USERNAME" ORGANIZATION IS INDEXED ACCESS MODE IS RANDOM RECORD KEY IS USER-USERNAME ALTERNATE RECORD KEY IS USER-GENERIC-NAME. / DATA DIVISION. FILE SECTION. FD UIF-MASTER-FILE. COPY "CDD_UIF.MASTER_RECORD" FROM DICTIONARY. FD UIF-USERNAME-FILE. COPY "CDD_UIF.USERNAME_RECORD" FROM DICTIONARY. / WORKING-STORAGE SECTION. 01 PROG-ID PIC X(09) VALUE "UIF300-1B". COPY "CDD_UIF.SWITCH_RECORD" FROM DICTIONARY. 01 WS-MASTER_RECORD. 05 WS-MASTER_PRIMARY_KEY. 10 WS-MASTER_RECORD_NAME PIC X(9). 10 WS-MASTER_RECORD_TYPE PIC X. 05 WS-MASTER-RECORD-ACCESS-COUNT PIC S9(4) COMP. 05 WS-MASTER_TRANSACTION. 10 WS-MASTER_TRANSACTION_DESC PIC X(60). 10 FILLER PIC X(202). 05 WS-MASTER_MENU REDEFINES WS-MASTER_TRANSACTION. 10 WS-MASTER_MENU_TITLE PIC X(20). 10 WS-MASTER_MENU_DESCRIPTION PIC X(60). 10 WS-MASTER_MENU_NODE_CNT PIC S9(4) COMP. 10 WS-MASTER_MENU_NODE PIC X(9) OCCURS 20 TIMES. 01 WS-USER-RECORD. 05 WS-USERNAME PIC X(12) VALUE SPACES. 05 WS-TOP-LEVEL-MENU-NAME PIC X(09) VALUE SPACES. 01 SUBROUTINE-RETURN-STATUS PIC S9(9) COMP. 01 IMAGE-NAME PIC X(06) VALUE "UIF300". 01 ERROR-TYPE PIC X(1). 88 FATAL-ERROR VALUE "F". 88 NO-ERROR VALUE "S". / PROCEDURE DIVISION. ******************************************************************************* INITIALIZATION SECTION. ******************************************************************************* 000-INIT. OPEN INPUT UIF-MASTER-FILE. OPEN INPUT UIF-USERNAME-FILE. SET FIRST-TIME TO TRUE. SET NO-INVALID-KEY TO TRUE. SET NO-ERROR TO TRUE. INITIALIZE WS-MASTER-RECORD. CALL "UTL560" USING WS-USERNAME GIVING SUBROUTINE-RETURN-STATUS. IF SUBROUTINE-RETURN-STATUS IS SUCCESS GO TO MAIN. SET FATAL-ERROR TO TRUE. DISPLAY IMAGE-NAME," - ",ERROR-TYPE, " ERROR GETTING USER NAME - CONTACT DP IMMEDIATELY.". GO TO CLOSING. / ******************************************************************************* MAIN SECTION. ******************************************************************************* 100-START. PERFORM 200-READ-USER-FILE THRU 200-READ-USER-FILE-EXIT. CLOSE UIF-USERNAME-FILE. IF INVALID-KEY SET FATAL-ERROR TO TRUE DISPLAY "UIF300 - F - USER NOT IN USER FILE. CONTACT DP." GO TO 900-CLOSE. PERFORM 300-READ-MASTER-FILE THRU 300-READ-MASTER-FILE-EXIT. CLOSE UIF-MASTER-FILE. IF INVALID-KEY SET FATAL-ERROR TO TRUE DISPLAY "UIF300 - F - ERROR READING UIF-MASTER. CONTACT DP." GO TO 900-CLOSE. 100-MAIN. CALL "UIF310" USING WS-MASTER-RECORD, WS-USER-RECORD,EXIT-SW. IF DONE GO TO 900-CLOSE. MOVE MASTER-RECORD TO WS-MASTER-RECORD. SET FIRST-TIME TO TRUE. GO TO 100-MAIN. / ******************************************************************************* SUBROUTINE SECTION. ******************************************************************************* 200-READ-USER-FILE. MOVE WS-USERNAME TO USER-USERNAME. READ UIF-USERNAME-FILE RECORD INVALID KEY SET INVALID-KEY TO TRUE. IF INVALID-KEY GO TO 200-READ-USER-FILE-EXIT. MOVE USER-GENERIC-NAME TO WS-USERNAME. MOVE USER-TOP-LEVEL-MENU-NAME TO WS-TOP-LEVEL-MENU-NAME. 200-READ-USER-FILE-EXIT. EXIT. 300-READ-MASTER-FILE. MOVE WS-TOP-LEVEL-MENU-NAME TO MASTER-RECORD-NAME. START UIF-MASTER-FILE KEY IS NOT < MASTER-RECORD-NAME INVALID KEY SET INVALID-KEY TO TRUE. IF INVALID-KEY GO TO 300-READ-MASTER-FILE-EXIT. READ UIF-MASTER-FILE NEXT RECORD INTO WS-MASTER-RECORD AT END GO TO 300-READ-MASTER-FILE-EXIT. 300-READ-MASTER-FILE-EXIT. EXIT. / ******************************************************************************* CLOSING SECTION. ******************************************************************************* 900-CLOSE. CALL "UTL550" USING PROG-ID, ERROR-TYPE. STOP RUN.