|
From: | rathin |
Subject: | [open-cobol-list] PLEASE HELP new to coboL PROGRAMMING |
Date: | Mon, 20 Dec 2010 17:49:43 +0530 |
ENVIRONMENT DIVISION. CONFIGURATION SECTION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT TAX-TABLE-FILE ASSIGN TO "INPUT-FILE" ORGANIZATION IS LINE SEQUENTIAL. SELECT SALARY-FILE ASSIGN TO "INPUT-FILE" ORGANIZATION IS LINE SEQUENTIAL. SELECT SALARY-REPORT ASSIGN TO "OUTPUT-FILE" ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. * FD TAX-TABLE-FILE LABEL RECORDS ARE STANDARD. 01 TAX-TABLE-REC. 05 T-MAX-TAX-INCOME PIC 9(06). 05 T-FED-TAX PIC V9(3). 05 T-STATE-TAX PIC V9(3). 05 PIC X(68). FD SALARY-FILE LABEL RECORDS ARE STANDARD. 01 SALARY-FILE-REC. 05 EMPLOYEE-NO PIC 9(05). 05 EMPLOYEE-NAME PIC X(20). 05 PIC X(03). 05 ANNUAL-SALARY PIC 9(05). 05 PIC X(08). 05 NO-DEPENDENTS PIC 9(01). 05 PIC X(38). FD SALARY-REPORT RECORD CONTAINS 80 CHARACTERS. 01 SALARY-REPORT-REC PIC X(80). * WORKING-STORAGE SECTION. 01 WORKING-ITEMS. 05 MORE-RECS PIC X(01). 05 X1 PIC 9(02). 05 MORE-TABLE-RECS PIC X(01) VALUE 'Y'. 05 FED-TAX-DEDUCTION PIC 9(05). 05 STATE-TAX-DEDUCTION PIC 9(05). 05 MONTHLY-TAKE-HOME-PAY PIC 9(05)V9(02). 05 FOUND-MATCH PIC X(01) VALUE 'N'. 05 TEMP-INCOME PIC 9(06) VALUE ZEROES. 01 WS-DATE. 05 WS-DATE-YEAR PIC 9(02). 05 WS-DATE-MONTH PIC 9(02). 05 WS-DATE-DAY PIC 9(02). 01 WS-REPORT-DATE. 05 RD-MONTH PIC 9(02). 05 PIC X(01) VALUE '/'. 05 RD-DAY PIC 9(02). 05 PIC X(01) VALUE '/'. 05 RD-YEAR PIC 9(02). 01 TAX-TABLE. 05 TABLE-ENTRIES OCCURS 6 TIMES. 10 WS-MAX-TAX-INCOME PIC 9(06). 10 WS-FED-TAX PIC V9(3). 10 WS-STATE-TAX PIC V9(3). 01 HEADER-1. 05 PIC X(12). 05 PIC X(21) VALUE 'MONTHLY SALARY REPORT'. 05 PIC X(03). 05 DATE-OUT PIC 99/99/99. 05 PIC X(02). * 05 PIC X(04) VALUE * 'PAGE'. * 05 PAGE-OUT PIC 9(02). 01 HEADER-2. 05 PIC X(08) VALUE 'EMPLOYEE'. 05 PIC X(19). 05 PIC X(17) VALUE 'MONTHLY TAKE HOME'. 01 HEADER-3. 05 PIC X(02). 05 PIC X(04) VALUE 'NAME'. 05 PIC X(28). 05 PIC X(03) VALUE 'PAY'. 01 LIST-LINE-1. 05 EMPLOYEE-NAME-OUT PIC X(20). 05 PIC X(11). 05 MONTHLY-TAKE-HOME-PAY-OUT PIC $ZZ,ZZZ.99. 01 LIST-LINE-2. 05 PIC X(05). 05 PIC X(35) VALUE 'NO MATCH WAS FOUND IN THE TAX TABLE'. PROCEDURE DIVISION. 000-MAIN-RTN. PERFORM 100-INITIALIZE-RTN PERFORM 200-TABLE-ENTRY PERFORM 300-PROCESS-RTN UNTIL MORE-RECS = 'N' PERFORM 900-CLOSE-FILES-RTN. 100-INITIALIZE-RTN. OPEN INPUT TAX-TABLE-FILE SALARY-FILE OUTPUT SALARY-REPORT MOVE 'Y' TO MORE-RECS PERFORM 110-SET-DATE-RTN PERFORM 120-WRITE-HEADERS-RTN. 110-SET-DATE-RTN. ACCEPT WS-DATE FROM DATE MOVE WS-DATE-YEAR TO RD-YEAR MOVE WS-DATE-MONTH TO RD-MONTH MOVE WS-DATE-DAY TO RD-DAY MOVE WS-REPORT-DATE TO DATE-OUT. 120-WRITE-HEADERS-RTN. WRITE SALARY-REPORT-REC FROM HEADER-1 AFTER ADVANCING 5 LINES WRITE SALARY-REPORT-REC FROM HEADER-2 AFTER ADVANCING 2 LINES WRITE SALARY-REPORT-REC FROM HEADER-3 AFTER ADVANCING 1 LINE. 200-TABLE-ENTRY. PERFORM VARYING X1 FROM 1 BY 1 UNTIL X1 > 7 OR MORE-TABLE-RECS = 'N' READ TAX-TABLE-FILE AT END MOVE 'N' TO MORE-TABLE-RECS NOT AT END PERFORM 250-TABLE-LOAD END-READ END-PERFORM IF X1 < 7 DISPLAY 'TOO FEW RECORDS IN THE FILE' END-IF IF MORE-TABLE-RECS NOT = 'N' DISPLAY 'TOO MANY RECORDS IN THE FILE' END-IF. 250-TABLE-LOAD. MOVE T-MAX-TAX-INCOME TO WS-MAX-TAX-INCOME (X1) MOVE T-FED-TAX TO WS-FED-TAX (X1) MOVE T-STATE-TAX TO WS-STATE-TAX (X1). 300-PROCESS-RTN. READ SALARY-FILE AT END MOVE 'N' TO MORE-RECS NOT AT END PERFORM 350-COMPARE-RTN END-READ. 350-COMPARE-RTN. MOVE 1 TO X1 PERFORM 353-INCREMENT-SUBSCRIPT-RTN UNTIL FOUND-MATCH = 'Y' OR X1 > 7 IF X1 > 7 AND FOUND-MATCH = 'N' THEN WRITE SALARY-REPORT-REC FROM LIST-LINE-2 CONTINUE END-IF PERFORM 356-CALCULATE-RTN PERFORM 359-WRITE-RTN MOVE 'N' TO FOUND-MATCH MOVE ZEROES TO TEMP-INCOME. 353-INCREMENT-SUBSCRIPT-RTN. IF ANNUAL-SALARY > TEMP-INCOME AND <= WS-MAX-TAX-INCOME (X1) THEN MOVE 'Y' TO FOUND-MATCH ELSE MOVE WS-MAX-TAX-INCOME (X1) TO TEMP-INCOME ADD 1 TO X1 END-IF. 356-CALCULATE-RTN. COMPUTE FED-TAX-DEDUCTION = ANNUAL-SALARY * WS-FED-TAX (X1) COMPUTE STATE-TAX-DEDUCTION = ANNUAL-SALARY * WS-STATE-TAX (X1) COMPUTE MONTHLY-TAKE-HOME-PAY = (ANNUAL-SALARY - (FED-TAX-DEDUCTION + STATE-TAX-DEDUCTION))/12. 359-WRITE-RTN. MOVE EMPLOYEE-NAME TO EMPLOYEE-NAME-OUT MOVE MONTHLY-TAKE-HOME-PAY TO MONTHLY-TAKE-HOME-PAY-OUT WRITE SALARY-REPORT-REC FROM LIST-LINE-1 AFTER ADVANCING 1 LINE. 900-CLOSE-FILES-RTN. CLOSE TAX-TABLE-FILE SALARY-FILE SALARY-REPORT STOP RUN.
"The information contained in this electronic message and any attachments to this message are intended for exclusive use of the addressee(s) and may contain confidential or privileged information. If you are not the intended recipient, please notify the sender at LIC OF INDIA or address@hidden immediately and destroy all copies of this message and any attachments. The views expressed in this E-mail message / Attachments, are those of the individual sender." |
[Prev in Thread] | Current Thread | [Next in Thread] |