PROGRAM 10
IDENTIFICATION DIVISION.
PROGRAM-ID. PROJ10.
AUTHOR. ANTHONY F. ORTIZ.
***********************************
* DEPARTMENT OF MOTOR VECHICLES *
***********************************
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT LICENSE-FILE ASSIGN TO DISK "LICENSE.DAT"
ORGANIZATION IS INDEXED
RECORD KEY IS IN-LICENSE-PLATE
ACCESS IS RANDOM.
DATA DIVISION.
FILE SECTION.
FD LICENSE-FILE LABEL RECORD IS STANDARD.
01 IN-RECORD.
02 IN-LICENSE-PLATE PIC X(7).
02 IN-OWNER-NAME PIC X(20).
02 IN-MAKE-VEHICLE PIC X(8).
02 IN-STYLE-VEHICLE PIC X(8).
02 IN-COLOR-VEHICLE PIC X(8).
WORKING-STORAGE SECTION.
01 PROGRAM-INDICATORS.
02 ERROR-FLAG PIC 9(1) VALUE ZERO.
01 PROGRAM-VARIABLES.
02 INPUT-VARIABLES.
03 IN-CHOICE PIC X(1) VALUE SPACES.
03 IN-ANYCHAR PIC X(1) VALUE SPACES.
02 OUTPUT-VARIABLES.
03 OUT-LICENSE-PLATE PIC X(7) VALUE SPACES.
03 OUT-OWNER-NAME PIC X(20) VALUE SPACES.
03 OUT-MAKE-VEHICLE PIC X(8) VALUE SPACES.
03 OUT-STYLE-VEHICLE PIC X(8) VALUE SPACES.
03 OUT-COLOR-VEHICLE PIC X(8) VALUE SPACES.
01 PROGRAM-CONSTANTS.
02 INVALID-CHOICE PIC X(1) VALUE '7'.
02 ERROR-MESSAGE PIC X(38)
VALUE 'ERROR, THIS RECORD IS NOT IN THE FILE.'.
PROCEDURE DIVISION.
MAIN-LINE.
PERFORM OPEN-FILES.
PERFORM GET-SELECTION UNTIL IN-CHOICE = '6'.
PERFORM CLOSE-FILES.
DISPLAY " " LINE 1 COL 1 WITH BLANK SCREEN.
STOP RUN.
OPEN-FILES.
OPEN I-O LICENSE-FILE.
GET-SELECTION.
PERFORM MAKE-SURE-IT-PAUSES-FOR-INPUT.
PERFORM PRINT-MENU UNTIL IN-CHOICE = '1' OR
IN-CHOICE = '2' OR
IN-CHOICE = '3' OR
IN-CHOICE = '4' OR
IN-CHOICE = '5' OR
IN-CHOICE = '6'.
IF IN-CHOICE = '1'
PERFORM INITIALIZE-IN-LICENSE-PLATE
PERFORM INQUIRE-SINGLE-LICENSE-PLATE THRU END-INQUIRE
UNTIL IN-LICENSE-PLATE = SPACES
ELSE
IF IN-CHOICE = '2'
PERFORM INQUIRE-RANGE-LICENSE-PLATE
ELSE
IF IN-CHOICE = '3'
PERFORM ADD-LICENSE-PLATE
ELSE
IF IN-CHOICE = '4'
PERFORM CHANGE-LICENSE-PLATE
ELSE
IF IN-CHOICE = '5'
PERFORM DELETE-LICENSE-PLATE.
MAKE-SURE-IT-PAUSES-FOR-INPUT.
MOVE INVALID-CHOICE TO IN-CHOICE.
PRINT-MENU.
DISPLAY "DEPARTMENT OF MOTOR VEHICLES"
LINE 1 COL 1 WITH BLANK SCREEN.
DISPLAY "1. INQUIRE SINGLE LICENSE PLATE DATA."
LINE 3 COL 5.
DISPLAY "2. INQUIRE RANGE OF LICENSE PLATE DATA."
LINE 4 COL 5.
DISPLAY "3. ADD LICENSE PLATE DATA."
LINE 5 COL 5.
DISPLAY "4. CHANGE LICENSE PLATE DATA."
LINE 6 COL 5.
DISPLAY "5. DELETE LICENSE PLATE DATA."
LINE 7 COL 5.
DISPLAY "6. TERMINATE THE PROGRAM."
LINE 8 COL 5.
DISPLAY "PRESS ENTER KEY TO CONTINUE. "
LINE 10 COL 1.
ACCEPT IN-CHOICE LINE 10 COL 30.
IF IN-CHOICE < '1' OR IN-CHOICE > '6'
DISPLAY " " LINE 10 COL 30 WITH BEEP.
INITIALIZE-IN-LICENSE-PLATE.
MOVE HIGH-VALUE TO IN-LICENSE-PLATE.
INQUIRE-SINGLE-LICENSE-PLATE.
DISPLAY "ENTER A 7 CHARACTER LICENSE PLATE. "
LINE 1 COL 1 WITH BLANK SCREEN.
DISPLAY "PRESS ENTER KEY (ONLY) TO CONTINUE."
LINE 3 COL 1.
PERFORM INITIALIZE-IN-RECORD.
ACCEPT IN-LICENSE-PLATE LINE 1 COL 36.
IF IN-LICENSE-PLATE = SPACES GO TO END-INQUIRE.
PERFORM READ-FILE.
IF ERROR-FLAG = 1
PERFORM MOVE-IN-OUT
PERFORM DISPLAY-RECORD
PERFORM PRESS-ENTER-KEY
ELSE
PERFORM PRINT-ERROR-MESSAGE
PERFORM PRESS-ENTER-KEY.
END-INQUIRE.
EXIT.
INITIALIZE-IN-RECORD.
MOVE SPACES TO IN-RECORD.
READ-FILE.
PERFORM INITIALIZE-ERROR-FLAG.
READ LICENSE-FILE INVALID MOVE 2 TO ERROR-FLAG.
INITIALIZE-ERROR-FLAG.
MOVE 1 TO ERROR-FLAG.
MOVE-IN-OUT.
MOVE IN-LICENSE-PLATE TO OUT-LICENSE-PLATE.
MOVE IN-OWNER-NAME TO OUT-OWNER-NAME.
MOVE IN-MAKE-VEHICLE TO OUT-MAKE-VEHICLE.
MOVE IN-COLOR-VEHICLE TO OUT-COLOR-VEHICLE.
MOVE IN-STYLE-VEHICLE TO OUT-STYLE-VEHICLE.
DISPLAY-RECORD.
DISPLAY "LICENSE PLATE: "
LINE 1 COL 1 WITH BLANK SCREEN.
DISPLAY "OWNER'S NAME: "
LINE 3 COL 1.
DISPLAY "MAKE OF VEHICLE: "
LINE 5 COL 1.
DISPLAY "COLOR OF VEHICLE: "
LINE 7 COL 1.
DISPLAY "STYLE OF VEHICLE: "
LINE 9 COL 1.
DISPLAY OUT-LICENSE-PLATE
LINE 1 COL 19.
DISPLAY OUT-OWNER-NAME
LINE 3 COL 19.
DISPLAY OUT-MAKE-VEHICLE
LINE 5 COL 19.
DISPLAY OUT-COLOR-VEHICLE
LINE 7 COL 19.
DISPLAY OUT-STYLE-VEHICLE
LINE 9 COL 19.
PRESS-ENTER-KEY.
DISPLAY "PRESS ENTER KEY TO CONTINUE ..... "
LINE 11 COL 1.
ACCEPT IN-ANYCHAR.
PRINT-ERROR-MESSAGE.
DISPLAY ERROR-MESSAGE LINE 1 COL 1 WITH BLANK SCREEN.
INQUIRE-RANGE-LICENSE-PLATE.
DISPLAY "THIS PROCEDURE IS STILL UNDER CONSTRUCTION."
LINE 1 COL 1 WITH BLANK SCREEN.
PERFORM PRESS-ENTER-KEY.
ADD-LICENSE-PLATE.
DISPLAY "THIS PROCEDURE IS STILL UNDER CONSTRUCTION."
LINE 1 COL 1 WITH BLANK SCREEN.
PERFORM PRESS-ENTER-KEY.
CHANGE-LICENSE-PLATE.
DISPLAY "THIS PROCEDURE IS STILL UNDER CONSTRUCTION."
LINE 1 COL 1 WITH BLANK SCREEN.
PERFORM PRESS-ENTER-KEY.
DELETE-LICENSE-PLATE.
DISPLAY "THIS PROCEDURE IS STILL UNDER CONSTRUCTION."
LINE 1 COL 1 WITH BLANK SCREEN.
PERFORM PRESS-ENTER-KEY.
CLOSE-FILES.
CLOSE LICENSE-FILE.
* DATA FILE: LICENSE.DAT, LICENSE.IDX (NOT TEXT FILES) *
* OUTFILE: PROG10.OUT *
DEPARTMENT OF MOTOR VEHICLES
1. INQUIRE SINGLE LICENSE PLATE DATA.
2. INQUIRE RANGE OF LICENSE PLATE DATA.
3. ADD LICENSE PLATE DATA.
4. CHANGE LICENSE PLATE DATA.
5. DELETE LICENSE PLATE DATA.
6. TERMINATE THE PROGRAM.
PRESS ENTER KEY TO CONTINUE. 6
BACK TO CIS165 PAGE.