****************************************************************** * Purpose: This interactive program will check a VIN entered and * display whether it is valid. ****************************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. VIN. DATA DIVISION. WORKING-STORAGE SECTION. 77 WS-VIN PIC X(17). 77 WS-VIN-LEN PIC 9(2) VALUE 0. 77 WS-VIN-FIRST-CHAR PIC X(1). 77 WS-VIN-TENTH-CHAR PIC X(1). 77 WS-VIN-LAST-SIX-CHAR PIC X(6). PROCEDURE DIVISION. FIRST-PARA. DISPLAY 'This program validates VIN.'. DISPLAY 'Enter VIN to validate:'. ACCEPT WS-VIN FROM CONSOLE. DISPLAY "Entered VIN:"WS-VIN. *INSPECT BY CHARACTER BEFORE SPACE* INSPECT WS-VIN TALLYING WS-VIN-LEN FOR ALL CHARACTERS DISPLAY "VIN LENGTH: "WS-VIN-LEN. IF WS-VIN-LEN = 17 THEN MOVE WS-VIN(1:1) TO WS-VIN-FIRST-CHAR IF WS-VIN-FIRST-CHAR = '1' OR WS-VIN-FIRST-CHAR = '5' OR WS-VIN-FIRST-CHAR = '7' OR WS-VIN-FIRST-CHAR = 'F' OR WS-VIN-FIRST-CHAR = 'J' OR WS-VIN-FIRST-CHAR = 'T' OR WS-VIN-FIRST-CHAR = 'X' OR WS-VIN-FIRST-CHAR = 'Z' MOVE WS-VIN(10:1) TO WS-VIN-TENTH-CHAR IF WS-VIN-TENTH-CHAR NOT = 'K' OR WS-VIN-TENTH-CHAR NOT = 'M' OR WS-VIN-TENTH-CHAR NOT = 'R' OR WS-VIN-TENTH-CHAR NOT = 'V' OR WS-VIN-TENTH-CHAR NOT = 'Z' MOVE WS-VIN(12:6) TO WS-VIN-LAST-SIX-CHAR *IS NUMERIC WILL CHECK WHETHER VARIABLE NUMERIC OR NOT* IF WS-VIN-LAST-SIX-CHAR NUMERIC THEN DISPLAY 'VIN OK' ELSE DISPLAY 'Last six character not numeric.' END-IF ELSE DISPLAY 'Wrong tenth character' END-IF ELSE DISPLAY 'Wrong first character' END-IF ELSE DISPLAY 'Wrong length of VIN' END-IF. PERFORM UNTIL WS-VIN = 'EXIT' END-PERFORM. STOP RUN. END PROGRAM VIN.