0 LIKES LikeUnLike
I am writing a COBOL program that loads a tax table array and calculates a monthly take-home pay... I am getting a read error upon loading... the code looks like this. 200-LOAD-TAX-TABLE. PERFORM VARYING X1 FROM 1 BY 1 UNTIL X1 > 20 READ TAX-TABLE-FILE <--------------- ERROR MOVE TAX-TABLE-REC TO TAX-ENTERIES (X1) END-PERFORM.here is my entire code... IDENTIFICATION DIVISION. PROGRAM-ID. CHAPTER12. ENVIRONMENT DIVISION. FILE-CONTROL. SELECT TAX-TABLE-FILE ASSIGN TO 'CH1202.TAB' ORGANIZATION IS LINE SEQUENTIAL. SELECT SALARY-FILE ASSIGN TO 'Ch1202.DAT' ORGANIZATION IS LINE SEQUENTIAL. SELECT SALARY-REPORT ASSIGN TO 'SALARY.OUT' ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD TAX-TABLE-FILE. 01 TAX-TABLE-REC. 05 I-MAX-TAX-INCOME PIC 9(6). 05 I-FEDERAL-TAX PIC V999. 05 I-STATE-TAX PIC V999. FD SALARY-FILE. 01 SALARY-FILE-REC. 05 EMPLOYEE-NO PIC X(5). 05 EMPLOYEE-NAME PIC X(20). 05 PIC X(4). 05 ANNUAL-SALARY PIC 9(3)V99. 05 PIC X(9). 05 NO-OF-DEPENDENTS PIC 99. 05 PIC X(34). FD SALARY-REPORT. 01 SALARY-REPORT-REC PIC X(80). WORKING-STORAGE SECTION. 01 ARE-THERE-MORE-RECORDS PIC X(3) VALUE 'YES'. 01 TAX-TABLE. 05 TAX-ENTERIES OCCURS 20 TIMES INDEXED BY X1. 10 MAX-TAX-INCOME PIC 9(6). 10 FEDERAL-TAX PIC V999. 10 STATE-TAX PIC V999. 01 WS-DATE. 05 WS-YEAR PIC 9999. 05 WS-MONTH PIC 99. 05 WS-DAY PIC 99. *01 WS-PAGE-CTR PIC 99 VALUE SPACES. 01 STANDARD-DEDUCTION PIC 99999V99. 01 DEPENDENT-DEDUCTION PIC 99999V99. 01 FICA PIC 99999V99. 01 TAXABLE-INCOME PIC 99999V99. 01 ANNUAL-TAKE-HOME-PAY PIC 99999V99. 01 MAIN-HEADER. 05 PIC X(12) VALUE SPACES. 05 PIC X(21) VALUE 'MONTHLY SALARY REPORT'. 05 PIC X(3) VALUE SPACES. 05 OUT-MONTH PIC 99. 05 PIC X VALUE '/'. 05 OUT-DAY PIC 99. 05 PIC X VALUE '/'. 05 OUT-YEAR PIC 9999. 05 PIC X(3) VALUE SPACES. 05 PIC X(4) VALUE 'PAGE'. 05 PIC X VALUE SPACES. 05 PAGE-OUT PIC 99. 01 HEADER-2. 05 PIC X(4) VALUE SPACES. 05 PIC X(8) VALUE 'EMPLOYEE'. 05 PIC X(19) VALUE SPACES. 05 PIC X(17) VALUE 'MONTHLY TAKE-HOME'. 01 HEADER-3. 05 PIC X(6) VALUE SPACES. 05 PIC X(4) VALUE 'NAME'. 05 PIC X(28) VALUE SPACES. 05 PIC X(3) VALUE 'PAY'. 01 DETAIL-LINE. 05 EMPLOYEE-NAME-OUT PIC X(20). 05 PIC X(11) VALUE SPACES. 05 MONTHLY-TAKE-HOME-PAY PIC $ZZ,ZZZ.99. PROCEDURE DIVISION. 100-MAIN-MODULE. OPEN INPUT TAX-TABLE-FILE SALARY-FILE OUTPUT SALARY-REPORT MOVE FUNCTION CURRENT-DATE TO WS-DATE MOVE WS-YEAR TO OUT-YEAR MOVE WS-MONTH TO OUT-MONTH MOVE WS-DAY TO OUT-DAY PERFORM 200-LOAD-TAX-TABLE PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO ' READ SALARY-FILE AT END MOVE 'NO ' TO ARE-THERE-MORE-RECORDS NOT AT END PERFORM 300-CALC-RTN END-READ END-PERFORM CLOSE TAX-TABLE-FILE SALARY-FILE SALARY-REPORT STOP RUN. 200-LOAD-TAX-TABLE. PERFORM VARYING X1 FROM 1 BY 1 UNTIL X1 > 20 READ TAX-TABLE-FILE MOVE TAX-TABLE-REC TO TAX-ENTERIES (X1) END-PERFORM. 300-CALC-RTN. IF ANNUAL-SALARY < 10000 COMPUTE STANDARD-DEDUCTION = ANNUAL-SALARY * 1.1 END-IF COMPUTE DEPENDENT-DEDUCTION = 2000 * NO-OF-DEPENDENTS IF ANNUAL-SALARY < 84900 COMPUTE FICA = 1.62 * ANNUAL-SALARY END-IF COMPUTE FICA = 1.145 * ANNUAL-SALARY COMPUTE TAXABLE-INCOME = ANNUAL-SALARY - STANDARD-DEDUCTION - DEPENDENT-DEDUCTION SET X1 TO 1 SEARCH TAX-ENTERIES WHEN TAXABLE-INCOME = MAX-TAX-INCOME(X1) COMPUTE ANNUAL-TAKE-HOME-PAY = ANNUAL-SALARY - (STATE-TAX (X1) * TAXABLE-INCOME) - (FEDERAL-TAX (X1) * TAXABLE- - INCOME) - FICA END-SEARCH COMPUTE MONTHLY-TAKE-HOME-PAY = ANNUAL-TAKE-HOME-PAY / 12 WRITE SALARY-REPORT-REC FROM MAIN-HEADER WRITE SALARY-REPORT-REC FROM HEADER-2 WRITE SALARY-REPORT-REC FROM HEADER-3 MOVE EMPLOYEE-NAME TO EMPLOYEE-NAME-OUT WRITE SALARY-REPORT-REC FROM DETAIL-LINE.
Tags: arrays, cobol, Help
Report (0) (0) | 12 years, 8 month(s) ago
Latest activity: 14 years, 4 month(s) ago. This question has 1 answers.