COBOL. Interactive VIN Validation Program VINs or Vehicle Identification Numbers
ID: 3837948 • Letter: C
Question
COBOL. Interactive VIN Validation Program VINs or Vehicle Identification Numbers are important identifiers. For example, they may enable police to determine the owner of a recovered stolen vehicle. However, the VIN must be a valid one. Write an interactive program that will check a VIN enteredfrom the keyboard and display whether it is valid. The program must indicate why the VIN is invalid and must continue to validate VINs until the user indicates that there are no more VINs to validate. The characteristics of each VIN record are as follows:
1. 17 characters long.
2. The first character must be either 1, 5, 7, F, J, T, X, or Z.
3. The tenth character must be a digit or a letter other than K, M, R, V, or Z.
4. The last six characters must be numeric.
Here's my code and it does not compile:
IDENTIFICATION DIVISION.
PROGRAM-ID. VALIDATE-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.
PERFORM
DISPLAY 'This program validates VIN.'.
DISPLAY 'Enter VIN to validate:'.
ACCEPT WS-VIN FROM CONSOLE.
DISPLAY "Entered VIN:"WS-VIN.
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
IF function TEST-NUMVAL(WS-VIN-LAST-SIX-CHAR) equal zero 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.
UNTIL WS-VIN = 'EXIT'.
STOP RUN.
Explanation / Answer
IDENTIFICATION DIVISION.
PROGRAM-ID. SELNSCRIPT.
AUTHOR. ********************.
DATE-WRITTEN. JUL 2017.
ENVIRONMENT DIVISION.
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).
*----------------------------------------------------------------
* P R O C E D U R E D I V I S I O N
*----------------------------------------------------------------
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 CHARACTERS
BEFORE ' '.
DISPLAY "Entered VIN:".
DISPLAY 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 IS NUMERIC THEN
DISPLAY 'VIN OK'
ELSE
DISPLAY 'Last six character not numeric.'
END-IF
ELSE
DISPLAY Wrong tenth character'
END-IF
ELSE
ELSE
DISPLAY 'Wrong first character'
END-IF
ELSE
DISPLAY 'Wrong length of VIN'
END-IF
UNTIL WS-VIN = 'EXIT'.
STOP RUN.
Output:
Enter VIN to validate:
123456789k123456
Entered VIN:123456789k123456
Wrong length of VIN
Enter VIN to validate:
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.