Guest_imported
New member
- Jan 1, 1970
- 0
Can someone please take a look at the code below and tell me if I am even using sub-programs correctly? I am not quite sure why my program is not working. I am just a beginner and the code below is just parts of the source code. Thanks!!!
SUB PROGRAM:
INDENTIFICATION DIVISION.
AUTHOR-ID. VALSSN.
DATA DIVISION.
LINKAGE SECTION.
01 DATA-RECORDS.
05 DATA-NAME PIC X(20).
05 DATA-SSN PIC 9(9).
01 VALIDATION-RESULTS PIC 99.
88 NON-NUMERIC-SSN VALUE 21.
88 NO-SSN-PRESENT VALUE 22.
88 SSNISVALID VALUE 20.
PROCEDURE DIVISION USING DATA-RECORDS, VALIDATION-RESULTS.
0000-MAIN.
EVALUTATE TRUE
WHEN DATA-SSN = SPACES
SET NO-SSN-PRESENT TO TRUE.
WHEN DATA-SSN NOT NUMERIC
SET NON-NUMERIC-SSN TO TRUE.
WHEN OTHER
SET SSNISVALID TO TRUE.
END-EVALUATE.
DRIVER PROGRAM:
INDENTIFICATION DIVISION.
AUTHOR-ID. MAIN.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT DATA-FILE ASSIGN TO IFILE.
SELECT VALID-FILE ASSIGN TO OFILE.
SELECT ERROR-FILE ASSIGN TO OFILE2.
DATA DIVISION.
FD DATA-FILE
RECORDING MODE IS F
RECORD CONTAINS 56 CHARACTERS
DATA RECORD IS DATA-RECORDS.
01 DATA-RECORDS.
05 DATA-NAME PIC X(20).
05 DATA-SSN PIC 9(9).
WORKING-STORAGE SECTION.
01 VALIDATION-RESULTS PIC 99.
88 NON-NUMERIC-SSN VALUE 21.
88 NO-SSN-PRESENT VALUE 22.
88 SSNISVALID VALUE 20.
PROCEDURE DIVISION.
//THERE IS OF COURSE OTHER STUFF IN HERE, BUT THIS IS THE CALL
CALL 'VALSSN' USING BY CONTENT DATA-RECORDS
BY REFERENCE VALIDATION-RESULTS.
0510-WRITE-RECORDS.
EVALUATE TRUE
WHEN NON-NUMERIC-SSN
MOVE E-NON-NUMERIC-SSN TO ERR-MESSAGE
MOVE DATA-SSN TO ERR-CONTENTS
PERFORM 0520-WRITE-ERROR-LINE
WHEN NO-SSN-PRESENT
MOVE E-NO-SSN-PRESENT TO ERR-MESSAGE
MOVE SPACES TO ERR-CONTENTS
PERFORM 0520-WRITE-ERROR-LINE
WHEN OTHER PERFORM 0530-WRITE-VALID-LINE
END-EVALUATE.
//BLAH BLAH
SUB PROGRAM:
INDENTIFICATION DIVISION.
AUTHOR-ID. VALSSN.
DATA DIVISION.
LINKAGE SECTION.
01 DATA-RECORDS.
05 DATA-NAME PIC X(20).
05 DATA-SSN PIC 9(9).
01 VALIDATION-RESULTS PIC 99.
88 NON-NUMERIC-SSN VALUE 21.
88 NO-SSN-PRESENT VALUE 22.
88 SSNISVALID VALUE 20.
PROCEDURE DIVISION USING DATA-RECORDS, VALIDATION-RESULTS.
0000-MAIN.
EVALUTATE TRUE
WHEN DATA-SSN = SPACES
SET NO-SSN-PRESENT TO TRUE.
WHEN DATA-SSN NOT NUMERIC
SET NON-NUMERIC-SSN TO TRUE.
WHEN OTHER
SET SSNISVALID TO TRUE.
END-EVALUATE.
DRIVER PROGRAM:
INDENTIFICATION DIVISION.
AUTHOR-ID. MAIN.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT DATA-FILE ASSIGN TO IFILE.
SELECT VALID-FILE ASSIGN TO OFILE.
SELECT ERROR-FILE ASSIGN TO OFILE2.
DATA DIVISION.
FD DATA-FILE
RECORDING MODE IS F
RECORD CONTAINS 56 CHARACTERS
DATA RECORD IS DATA-RECORDS.
01 DATA-RECORDS.
05 DATA-NAME PIC X(20).
05 DATA-SSN PIC 9(9).
WORKING-STORAGE SECTION.
01 VALIDATION-RESULTS PIC 99.
88 NON-NUMERIC-SSN VALUE 21.
88 NO-SSN-PRESENT VALUE 22.
88 SSNISVALID VALUE 20.
PROCEDURE DIVISION.
//THERE IS OF COURSE OTHER STUFF IN HERE, BUT THIS IS THE CALL
CALL 'VALSSN' USING BY CONTENT DATA-RECORDS
BY REFERENCE VALIDATION-RESULTS.
0510-WRITE-RECORDS.
EVALUATE TRUE
WHEN NON-NUMERIC-SSN
MOVE E-NON-NUMERIC-SSN TO ERR-MESSAGE
MOVE DATA-SSN TO ERR-CONTENTS
PERFORM 0520-WRITE-ERROR-LINE
WHEN NO-SSN-PRESENT
MOVE E-NO-SSN-PRESENT TO ERR-MESSAGE
MOVE SPACES TO ERR-CONTENTS
PERFORM 0520-WRITE-ERROR-LINE
WHEN OTHER PERFORM 0530-WRITE-VALID-LINE
END-EVALUATE.
//BLAH BLAH