PROGRAM 6
IDENTIFICATION DIVISION.
PROGRAM-ID. PROJECT6.
AUTHOR. ANTHONY F. ORTIZ.
***************************************************
* THIS PROGRAM CREATES A TRAFFIC TICKET REPORT. *
***************************************************
ENVIRONMENT DIVISION.
FILE-CONTROL.
SELECT IN-FILE ASSIGN TO DISK "A:\FIVE.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT OUT-FILE ASSIGN TO PRINTER.
DATA DIVISION.
FILE SECTION.
FD IN-FILE LABEL RECORD IS STANDARD.
01 IN-RECORD.
02 IN-MOTORIST-NAME PIC X(20).
02 FILLER PIC X(4).
02 IN-VIOLATION-CODE PIC X(1).
02 IN-MOTORIST-CODE PIC X(1).
02 FILLER PIC X(7).
02 IN-FINE-AMOUNT PIC 9(3)V99.
02 FILLER PIC X(2).
FD OUT-FILE.
01 OUT-BUFFER PIC X(80).
WORKING-STORAGE SECTION.
01 IN-DATE.
02 IN-YEAR PIC 99.
02 IN-MONTH PIC 99.
02 IN-DAY PIC 99.
01 OUT-RECORD.
02 OUT-MOTORIST-NAME PIC X(20).
02 FILLER PIC X(2).
02 OUT-VIOLATION-TYPE PIC X(11).
02 FILLER PIC X(3).
02 OUT-MOTORIST-ACTION PIC X(11).
02 FILLER PIC X(3).
02 VALID-FINE-AMOUNT.
03 OUT-FINE-AMOUNT PIC $ZZZ.99.
03 FILLER PIC X(2).
02 INVALID-FINE-AMOUNT REDEFINES VALID-FINE-AMOUNT
PIC X(9).
02 FILLER PIC X(3).
02 OUT-ERROR-MESSAGE PIC X(20).
01 HEADER-LINE1.
02 OUT-MONTH PIC 99.
02 FILLER PIC X VALUE '/'.
02 OUT-DAY PIC 99.
02 FILLER PIC X VALUE '/'.
02 OUT-YEAR PIC 99.
02 FILLER PIC X(28) VALUE SPACES.
02 FILLER PIC X(11) VALUE 'EDIT REPORT'.
02 FILLER PIC X(24) VALUE SPACES.
02 FILLER PIC X(5) VALUE 'PAGE '.
02 OUT-PAGE-COUNTER PIC ZZ9.
01 HEADER-LINE2.
02 FILLER PIC X(5) VALUE SPACES.
02 FILLER PIC X(8) VALUE 'MOTORIST'.
02 FILLER PIC X(10) VALUE SPACES.
02 FILLER PIC X(9) VALUE 'VIOLATION'.
02 FILLER PIC X(5) VALUE SPACES.
02 FILLER PIC X(8) VALUE 'MOTORIST'.
02 FILLER PIC X(7) VALUE SPACES.
02 FILLER PIC X(4) VALUE 'FINE'.
02 FILLER PIC X(11) VALUE SPACES.
02 FILLER PIC X(5) VALUE 'ERROR'.
01 HEADER-LINE3.
02 FILLER PIC X(7) VALUE SPACES.
02 FILLER PIC X(4) VALUE 'NAME'.
02 FILLER PIC X(15) VALUE SPACES.
02 FILLER PIC X(4) VALUE 'TYPE'.
02 FILLER PIC X(8) VALUE SPACES.
02 FILLER PIC X(6) VALUE 'ACTION'.
02 FILLER PIC X(7) VALUE SPACES.
02 FILLER PIC X(6) VALUE 'AMOUNT'.
02 FILLER PIC X(10) VALUE SPACES.
02 FILLER PIC X(7) VALUE 'MESSAGE'.
01 TOTAL-LINE1.
02 OUT-TOTAL-RECORDS PIC ZZ9.
02 FILLER PIC X(7) VALUE ' TOTAL '.
02 FILLER PIC X(7) VALUE 'RECORDS'.
01 TOTAL-LINE2.
02 OUT-TOTAL-ERRORS PIC ZZ9.
02 FILLER PIC X(9) VALUE ' RECORDS '.
02 FILLER PIC X(8) VALUE 'IN ERROR'.
01 PROGRAM-INDICATOR.
02 EOF-SWITCH PIC X(3) VALUE 'NO '.
01 OTHER-VARIABLES.
02 PAGE-COUNTER PIC 9(3) VALUE 1.
02 ERROR-SWITCH PIC 9(1) VALUE ZERO.
02 TOTAL-RECORDS PIC 9(3) VALUE ZERO.
02 TOTAL-ERRORS PIC 9(3) VALUE ZERO.
02 COUNTER PIC 9(2) VALUE ZERO.
PROCEDURE DIVISION.
MAIN-LINE.
PERFORM OPEN-FILES.
PERFORM READ-RECORD.
IF EOF-SWITCH = 'NO '
PERFORM GET-DATE.
PERFORM PRINT-HEADER-LINES
PERFORM PROCESS-RECORD UNTIL EOF-SWITCH = 'YES'
PERFORM PRINT-TOTAL-LINES.
PERFORM CLOSE-FILES.
STOP RUN.
OPEN-FILES.
OPEN INPUT IN-FILE OUTPUT OUT-FILE.
READ-RECORD.
READ IN-FILE AT END MOVE 'YES' TO EOF-SWITCH.
GET-DATE.
ACCEPT IN-DATE FROM DATE.
MOVE IN-MONTH TO OUT-MONTH.
MOVE IN-DAY TO OUT-DAY.
MOVE IN-YEAR TO OUT-YEAR.
PRINT-HEADER-LINES.
MOVE PAGE-COUNTER TO OUT-PAGE-COUNTER.
WRITE OUT-BUFFER FROM HEADER-LINE1 AFTER ADVANCING PAGE.
WRITE OUT-BUFFER FROM HEADER-LINE2 AFTER ADVANCING 2 LINES.
WRITE OUT-BUFFER FROM HEADER-LINE3 AFTER ADVANCING 1 LINES.
PROCESS-RECORD.
PERFORM MOVE-IN-TO-OUT.
PERFORM WRITE-RECORD.
PERFORM READ-RECORD.
MOVE-IN-TO-OUT.
IF IN-MOTORIST-NAME = SPACES
MOVE '*MISSING MOTORIST*' TO OUT-MOTORIST-NAME
COMPUTE ERROR-SWITCH = 1
ELSE
MOVE IN-MOTORIST-NAME TO OUT-MOTORIST-NAME.
IF IN-VIOLATION-CODE = 'M'
MOVE 'MOVING' TO OUT-VIOLATION-TYPE
IF IN-MOTORIST-CODE = 'A' OR IN-MOTORIST-CODE = 'D'
MOVE 'COURT' TO OUT-MOTORIST-ACTION
ELSE
MOVE '*INVALID*' TO OUT-MOTORIST-ACTION
COMPUTE ERROR-SWITCH = 1
ELSE
IF IN-VIOLATION-CODE = 'N'
MOVE 'NON-MOVING' TO OUT-VIOLATION-TYPE
MOVE 'PAY BY MAIL' TO OUT-MOTORIST-ACTION
ELSE
MOVE '*INVALID*' TO OUT-VIOLATION-TYPE
COMPUTE ERROR-SWITCH = 1.
IF IN-FINE-AMOUNT > 400.00 OR IN-FINE-AMOUNT < 0.0
OR IN-FINE-AMOUNT IS NOT NUMERIC
MOVE '*INVALID*' TO INVALID-FINE-AMOUNT
COMPUTE ERROR-SWITCH = 1
ELSE
MOVE ' ' TO INVALID-FINE-AMOUNT
MOVE IN-FINE-AMOUNT TO OUT-FINE-AMOUNT.
IF ERROR-SWITCH = 1
MOVE '*ERROR IN RECORD*' TO OUT-ERROR-MESSAGE
COMPUTE TOTAL-ERRORS = TOTAL-ERRORS + 1
COMPUTE ERROR-SWITCH = 0
ELSE
MOVE ' ' TO OUT-ERROR-MESSAGE.
PERFORM CALCULATE-COUNTER.
COMPUTE TOTAL-RECORDS = TOTAL-RECORDS + 1.
CALCULATE-COUNTER.
COMPUTE COUNTER = COUNTER + 1.
IF COUNTER = 28
COMPUTE COUNTER = 0
COMPUTE PAGE-COUNTER = PAGE-COUNTER + 1
PERFORM PRINT-HEADER-LINES.
WRITE-RECORD.
WRITE OUT-BUFFER FROM OUT-RECORD AFTER ADVANCING 2 LINES.
PRINT-TOTAL-LINES.
MOVE TOTAL-RECORDS TO OUT-TOTAL-RECORDS.
MOVE TOTAL-ERRORS TO OUT-TOTAL-ERRORS.
WRITE OUT-BUFFER FROM TOTAL-LINE1 AFTER ADVANCING 2 LINES.
WRITE OUT-BUFFER FROM TOTAL-LINE2 AFTER ADVANCING 1 LINES.
CLOSE-FILES.
CLOSE IN-FILE OUT-FILE.
* OUTFILE: FIVE.DAT *
ARMSTEAD, WALTER A103MDBM11ALA2500015
BADGER, KENNETY B204N PM12NCA0750010
MABP21FAX300001X
BAILEY, HOWARD B310MDBX1X A2750014
BOSTICK,RAY B350 32MGR1000007
BROWN, DONALD C401M PCX1MGR1500019
CHIPMAN, DARRELL C453N BC21FMA 13
DEERING, EARL D489N BM21NEA0800011
TRESSER,TOM D005X X 21APA0950007
FRIZZLE, ALLEN D010MAPP12ALR3000013
GUTIERREZ, JOSE D152N PP2XNXA4750009
HEIMBACK, DAVID E161N B 11MC 1000017
E011MDPM23FXA3100014
HERNANDEZ, DAVE E110N BPX1FAA045001X
JENSEN, KENNETY E332 12AXA0800013
KIRBY, STANLEY F357MAPM12NEA3000015
LANDSCHOTT, CYNTHIA F409MDPC21 A3M40012
LLOYD, ELLEN G519N BC4AMXR06500
LOSINSKI, GEORGE G403MABM1XMGA3000007
MARION, LAWRENCE 997 2XAP 070005
H MDPPX1NCA3750009
MARTIN, PHILLIP H191MABX21FMR3000011
MCGINNIS, LEANNE H231N PP24FAA5500016
MICALSKI, CHARLES H304N P 21FMA1000014
MOSHER, SUSIE H357MDBP12APA3500014
MUELLER, DAVID H493N PM11APR0500010
O'CONNER, PETER 501MABC21NCR3000011
I610N PP3XNEA0750013
O'CONNELL, STEVEN I630M PM12MCA1000017
PEACOCK, HARRIETT I650MDBMXXX 2C00012
PEREZ, BRUCE I719N PM23MGA035001X
PORRETT, JULIE I800 11ALA2900014
RAYMO, ARNOLD J100N B 21N R5000013
ROGERS, ANNE J135N PC21FAA1200014
SASS, JOHNATHAN K109MABP21MCX3000010
SHAMALY, GREG K121N PP12NEA 09
MDPP11FMR3750016
SMITH, ALLEN K130M BC12MGA2300013
STOCKWELL, BARBARA L001N BM21A 0350016
STONE, BRENDA L103MAPM24X A3000014
THOMPSON, EDWARD L527N BPX M A0700012
THOMAS, CHARLES L693X X 11F R0800013
TIBEDEAU, RALPH M006MDPP21NEA6000012
TRACTOR, JAMES M110N BC12ALA0600011
ULLENBRUCH, MICHAEL M239MAPM2XAPA1X00007
WAGNER, BRENDA M459N BM11APX0900012
WALKER, TONY N019MDPP21NCR3750008
WESTBROOK, CAROLYN N101MABP51FMR3000016
YAGER, CHUCK N201N PM21NCA0600013
ZVANOVEC, ALVIN N333N PP14ALA0550014
* OUTFILE: PROG6.OUT *
03/05/99 EDIT REPORT PAGE 1
MOTORIST VIOLATION MOTORIST FINE ERROR
NAME TYPE ACTION AMOUNT MESSAGE
ARMSTEAD, WALTER MOVING COURT $250.00
BADGER, KENNETY NON-MOVING PAY BY MAIL $ 75.00
*MISSING MOTORIST* MOVING COURT $300.00 *ERROR IN RECORD*
BAILEY, HOWARD MOVING COURT $275.00
BOSTICK, RAY *INVALID* COURT $100.00 *ERROR IN RECORD*
BROWN, DONALD MOVING *INVALID* $150.00 *ERROR IN RECORD*
CHIPMAN, DARRELL NON-MOVING PAY BY MAIL *INVALID* *ERROR IN RECORD*
DEERING, EARL NON-MOVING PAY BY MAIL $ 80.00
TRESSER, TOM *INVALID* PAY BY MAIL $ 95.00 *ERROR IN RECORD*
FRIZZLE, ALLEN MOVING COURT $300.00
GUTIERREZ, JOSE NON-MOVING PAY BY MAIL *INVALID* *ERROR IN RECORD*
HEIMBACK, DAVID NON-MOVING PAY BY MAIL $100.00
*MISSING MOTORIST* MOVING COURT $310.00 *ERROR IN RECORD*
HERNANDEZ, DAVE NON-MOVING PAY BY MAIL $ 45.00
JENSEN, KENNETY *INVALID* PAY BY MAIL $ 80.00 *ERROR IN RECORD*
KIRBY, STANLEY MOVING COURT $300.00
LANDSCHOTT, CYNTHIA MOVING COURT *INVALID* *ERROR IN RECORD*
LLOYD, ELLEN NON-MOVING PAY BY MAIL $ 65.00
LOSINSKI, GEORGE MOVING COURT $300.00
MARION, LAWRENCE *INVALID* COURT $ 70.00 *ERROR IN RECORD*
*MISSING MOTORIST* MOVING COURT $375.00 *ERROR IN RECORD*
MARTIN, PHILLIP MOVING COURT $300.00
MCGINNIS, LEANNE NON-MOVING PAY BY MAIL *INVALID* *ERROR IN RECORD*
MICALSKI, CHARLES NON-MOVING PAY BY MAIL $100.00
MOSHER, SUSIE MOVING COURT $350.00
MUELLER, DAVID NON-MOVING PAY BY MAIL $ 50.00
O'CONNER, PETER MOVING COURT $300.00
03/05/99 EDIT REPORT PAGE 2
MOTORIST VIOLATION MOTORIST FINE ERROR
NAME TYPE ACTION AMOUNT MESSAGE
*MISSING MOTORIST* NON-MOVING PAY BY MAIL $ 75.00 *ERROR IN RECORD*
O'CONNELL, STEVEN MOVING *INVALID* $100.00 *ERROR IN RECORD*
PEACOCK, HARRIETT MOVING COURT *INVALID* *ERROR IN RECORD*
PEREZ, BRUCE NON-MOVING PAY BY MAIL $ 35.00
PORRETT, JULIE *INVALID* PAY BY MAIL $290.00 *ERROR IN RECORD*
RAYMO, ARNOLD NON-MOVING PAY BY MAIL *INVALID* *ERROR IN RECORD*
ROGERS, ANNE NON-MOVING PAY BY MAIL $120.00
SASS, JOHNATHAN MOVING COURT $300.00
SHAMALY, GREG NON-MOVING PAY BY MAIL *INVALID* *ERROR IN RECORD*
*MISSING MOTORIST* MOVING COURT $375.00 *ERROR IN RECORD*
SMITH, ALLEN MOVING *INVALID* $230.00 *ERROR IN RECORD*
STOCKWELL, BARBARA NON-MOVING PAY BY MAIL $ 35.00
STONE, BRENDA MOVING COURT $300.00
THOMPSON, EDWARD NON-MOVING PAY BY MAIL $ 70.00
THOMAS, CHARLES *INVALID* PAY BY MAIL $ 80.00 *ERROR IN RECORD*
TIBEDEAU, RALPH MOVING COURT *INVALID* *ERROR IN RECORD*
TRACTOR, JAMES NON-MOVING PAY BY MAIL $ 60.00
ULLENBRUCH, MICHAEL MOVING COURT *INVALID* *ERROR IN RECORD*
WAGNER, BRENDA NON-MOVING PAY BY MAIL $ 90.00
WALKER, TONY MOVING COURT $375.00
WESTBROOK, CAROLYN MOVING COURT $300.00
YAGER, CHUCK NON-MOVING PAY BY MAIL $ 60.00
ZVANOVEC, ALVIN NON-MOVING PAY BY MAIL $ 55.00
50 TOTAL RECORDS
23 RECORDS IN ERROR
BACK TO CIS165 PAGE.