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.