Joined: 26 Nov 2002 Posts: 12404 Topics: 75 Location: San Jose
Posted: Tue Sep 06, 2005 1:06 pm Post subject:
Shekhar123,
Try to code this pgm and make sure you follow all the rules.
A.The business purpose of this program is to produce a report for a company that assembles structures using metal triangles. The company cuts a bunch of triangles all of the same size and shape from a rectangular metal strip. It arranges the cutting to maximize the number of triangles per strip to reduce waste. We need to calculate how many triangles of specified dimensions can be cut from such strips whose dimensions are, of course, also specified. Moreover, we need to know the wastage from this process and the monetary value of the wastage
I had coded the program as per the requirement and here is my code.However i was unable to get
1.Triangle area is coming out for me as say 59.70 ,how do i get it to approx 60.00
2.Month name followed by a single space in the report,as how can we suppress the month name as i have declared it maximum MONTH PIC X(09).
Please help me out as how can i acheive the desired result.
FD OUTPUT-FILE
LABEL RECORDS ARE STANDARD
RECORDING MODE IS F
BLOCK CONTAINS 0 CHARACTERS
DATA RECORD IS OUT-DATA.
01 OUT-DATA.
05 FILLER PIC X(80).
WORKING-STORAGE SECTION.
******************************************************************
* REPORT HEADER AND TRAILER LINES *
******************************************************************
01 LINE-PAGE-COUNTERS.
05 RPRT-LINE PIC S99 VALUE +0.
05 RPRT-PAGE PIC S99999 VALUE +1.
01 REPORT-HDR1.
05 FILLER PIC X(60) VALUE SPACES.
05 FILLER PIC X(10) VALUE 'RUN DATE: '.
05 DATEDISP PIC X(10) VALUE SPACES.
01 REPORT-HDR2.
05 FILLER PIC X(60) VALUE SPACES.
05 FILLER PIC X(10) VALUE 'RUN TIME: '.
05 FILLER PIC X(02) VALUE SPACES.
05 TIMEDISP PIC X(08) VALUE SPACES.
01 REPORT-HDR3.
05 FILLER PIC X(16) VALUE SPACES.
05 FILLER PIC X(26) VALUE
"ABCD COMANY WASTAGE REPORT".
05 FILLER PIC X(01) VALUE SPACE.
05 MONTH PIC X(09) VALUE SPACES.
05 FILLER PIC X(01) VALUE ' '.
05 MONTHNUM PIC Z9.
05 FILLER PIC X(02) VALUE ', '.
05 YEARDISP PIC X(04) VALUE SPACES.
05 FILLER PIC X(05) VALUE SPACES.
05 PAGEDISP PIC X(04) VALUE 'PAGE'.
05 FILLER PIC X(01) VALUE SPACE.
05 PAGENUM PIC Z9.
05 FILLER PIC X(07) VALUE SPACE.
01 REPORT-HDR4.
05 FILLER PIC X(03) VALUE SPACES.
05 FILLER PIC X(03) VALUE 'JOB'.
05 FILLER PIC X(09) VALUE SPACES.
05 FILLER PIC X(08) VALUE 'TRIANGLE'.
05 FILLER PIC X(04) VALUE SPACES.
05 FILLER PIC X(05) VALUE 'STRIP'.
05 FILLER PIC X(07) VALUE SPACES.
05 FILLER PIC X(09) VALUE 'NUMBER OF'.
05 FILLER PIC X(03) VALUE SPACES.
05 FILLER PIC X(07) VALUE 'WASTAGE'.
05 FILLER PIC X(05) VALUE SPACES.
05 FILLER PIC X(08) VALUE 'VALUE OF'.
05 FILLER PIC X(09) VALUE SPACES.
01 REPORT-HDR5.
05 FILLER PIC X(03) VALUE SPACES.
05 FILLER PIC X(04) VALUE 'CODE'.
05 FILLER PIC X(08) VALUE SPACES.
05 FILLER PIC X(04) VALUE 'AREA'.
05 FILLER PIC X(08) VALUE SPACES.
05 FILLER PIC X(04) VALUE 'AREA'.
05 FILLER PIC X(08) VALUE SPACES.
05 FILLER PIC X(09) VALUE 'TRIANGLES'.
05 FILLER PIC X(03) VALUE SPACES.
05 FILLER PIC X(04) VALUE 'AREA'.
05 FILLER PIC X(08) VALUE SPACES.
05 FILLER PIC X(07) VALUE 'WASTAGE'.
05 FILLER PIC X(10) VALUE SPACES.
01 REPORT-HDR6.
05 FILLER PIC X(03) VALUE SPACES.
05 FILLER PIC X(09) VALUE '---------'.
05 FILLER PIC X(03) VALUE SPACES.
05 FILLER PIC X(09) VALUE '---------'.
05 FILLER PIC X(03) VALUE SPACES.
05 FILLER PIC X(09) VALUE '---------'.
05 FILLER PIC X(03) VALUE SPACES.
05 FILLER PIC X(09) VALUE '---------'.
05 FILLER PIC X(03) VALUE SPACES.
05 FILLER PIC X(09) VALUE '---------'.
05 FILLER PIC X(03) VALUE SPACES.
05 FILLER PIC X(09) VALUE '---------'.
05 FILLER PIC X(08) VALUE SPACES.
01 REPORT-BLANK-LINE.
05 FILLER PIC X(80) VALUE SPACES.
01 REPORT-END-LINE.
05 FILLER PIC X(30) VALUE SPACES.
05 FILLER PIC X(25) VALUE
"***** END OF REPORT *****".
05 FILLER PIC X(25) VALUE SPACES.
******************************************************************
* PROGRAM VARIABLES / LITERALS *
******************************************************************
01 INPUT-FILE-FLAG PIC X(01) VALUE SPACE.
88 INPUT-EOF VALUE 'N'.
88 INPUT-NOT-EOF VALUE 'Y'.
01 IN-FILE-STATUS PIC X(02) VALUE ZERO.
88 IN-FILE-IO-OKAY VALUE '00'.
88 IN-FILE-END VALUE '10'.
01 OUT-FILE-STATUS PIC X(02) VALUE ZERO.
88 OUT-FILE-IO-OKAY VALUE '00'.
88 OUT-FILE-END VALUE '10'.
01 WS-DETAIL-REC.
05 WS-NUMB-EDITED PIC Z9.
05 FILLER PIC X(01) VALUE '.'.
05 WS-JOB-CODE PIC X(07) VALUE SPACES.
05 FILLER PIC X(05) VALUE SPACES.
05 WS-AREA-EDITED PIC Z9.99.
05 FILLER PIC X(07) VALUE SPACES.
05 WS-STRIP-AREA-EDITED PIC Z99.99.
05 FILLER PIC X(10) VALUE SPACES.
05 WS-NO-TRIANGLES-EDITED PIC Z9.
05 FILLER PIC X(06) VALUE SPACES.
05 WS-WASTAGE-AREA-EDITED PIC ZZ,ZZ9.99.
05 FILLER PIC X(03) VALUE SPACES.
05 WS-VALUE-WASTAGE-AREA-EDITED PIC $$$,$$9.99.
05 FILLER PIC X(01) VALUE SPACES.
01 WS-TOTAL-REC.
05 FILLER PIC X(12) VALUE SPACES.
05 FILLER PIC X(06) VALUE 'TOTAL:'.
05 FILLER PIC X(33) VALUE SPACES.
05 TOT-WASTAGE-AREA-EDITED PIC ZZ,ZZ9.99.
05 FILLER PIC X(03) VALUE SPACES.
05 TOT-VALUE-WASTAGE-AREA-EDITED PIC $$$,$$9.99.
05 FILLER PIC X(08) VALUE SPACES.
01 WS-VARIABLES.
05 S PIC 99 VALUE ZERO.
05 A PIC 99 VALUE ZERO.
05 B PIC 99 VALUE ZERO.
05 C PIC 99 VALUE ZERO.
05 WS-NUMB PIC 99 VALUE ZERO.
05 WS-AREA PIC 99V99.
05 WS-STRIP-AREA PIC 999V99.
05 WS-NO-TRIANGLES PIC 99.
05 WS-WASTAGE-AREA PIC 999999V99.
05 WS-VALUE-WASTAGE-AREA PIC 999999V99.
05 TOT-WASTAGE-AREA PIC 999999V99.
05 TOT-VALUE-WASTAGE-AREA PIC 999999V99.
05 WS-NUMBER-OF-REC PIC 99 VALUE ZERO.
05 WS-DATE PIC X(06) VALUE SPACES.
05 WS-TIME PIC X(06) VALUE SPACES.
PROCEDURE DIVISION.
0000-MAIN.
PERFORM 100-OPEN-FILES.
PERFORM 200-PROCESS-DATA UNTIL INPUT-EOF.
PERFORM 300-CLOSE-FILES.
STOP RUN.
100-OPEN-FILES.
OPEN INPUT INPUT-FILE.
EVALUATE TRUE
WHEN IN-FILE-IO-OKAY
CONTINUE
WHEN OTHER
DISPLAY 'OPEN FAILED FOR INPUT FILE'
PERFORM 999-ABEND-PARA
END-EVALUATE.
OPEN OUTPUT OUTPUT-FILE.
EVALUATE TRUE
WHEN OUT-FILE-IO-OKAY
CONTINUE
WHEN OTHER
DISPLAY 'OPEN FAILED FOR OUTPUT FILE'
PERFORM 999-ABEND-PARA
END-EVALUATE.
INITIALIZE PRODUCT-DATA OUT-DATA.
PERFORM 110-GET-DATE-TIME.
PERFORM 120-WRITE-HEADERS.
SET INPUT-NOT-EOF TO TRUE.
110-GET-DATE-TIME.
ACCEPT WS-DATE FROM DATE.
MOVE '/' TO DATEDISP(3:1)
DATEDISP(6:1).
MOVE '20' TO DATEDISP(7:2).
MOVE WS-DATE(1:2) TO DATEDISP(9:2).
MOVE WS-DATE(3:2) TO DATEDISP(1:2).
MOVE WS-DATE(5:2) TO DATEDISP(4:2).
ACCEPT WS-TIME FROM TIME.
MOVE WS-TIME(1:2) TO TIMEDISP(1:2).
MOVE WS-TIME(3:2) TO TIMEDISP(4:2).
MOVE WS-TIME(5:2) TO TIMEDISP(7:2).
MOVE ':' TO TIMEDISP(3:1)
TIMEDISP(6:1).
EVALUATE TRUE
WHEN WS-DATE(3:2) = '01'
MOVE 'JANUARY' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
WHEN WS-DATE(3:2) = '02'
MOVE 'FEBRAURY' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
WHEN WS-DATE(3:2) = '03'
MOVE 'MARCH' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
WHEN WS-DATE(3:2) = '04'
MOVE 'APRIL' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
WHEN WS-DATE(3:2) = '05'
MOVE 'MAY' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
WHEN WS-DATE(3:2) = '06'
MOVE 'JUNE' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
WHEN WS-DATE(3:2) = '07'
MOVE 'JULY' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
WHEN WS-DATE(3:2) = '08'
MOVE 'AUGUST' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
WHEN WS-DATE(3:2) = '09'
MOVE 'SEPTEMBER' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
WHEN WS-DATE(3:2) = '10'
MOVE 'OCTOBER' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
WHEN WS-DATE(3:2) = '11'
MOVE 'NOVEMBER' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
WHEN WS-DATE(3:2) = '12'
MOVE 'DECEMBER' TO MONTH
MOVE WS-DATE(3:2) TO MONTHNUM
MOVE DATEDISP(7:4) TO YEARDISP
END-EVALUATE.
MOVE RPRT-PAGE TO PAGENUM.
120-WRITE-HEADERS.
WRITE OUT-DATA FROM REPORT-HDR1 AFTER ADVANCING PAGE.
WRITE OUT-DATA FROM REPORT-HDR2.
WRITE OUT-DATA FROM REPORT-BLANK-LINE.
WRITE OUT-DATA FROM REPORT-BLANK-LINE.
WRITE OUT-DATA FROM REPORT-HDR3.
WRITE OUT-DATA FROM REPORT-BLANK-LINE.
WRITE OUT-DATA FROM REPORT-HDR4.
WRITE OUT-DATA FROM REPORT-HDR5.
WRITE OUT-DATA FROM REPORT-HDR6.
WRITE OUT-DATA FROM REPORT-BLANK-LINE.
ADD +10 TO RPRT-LINE.
200-PROCESS-DATA.
READ INPUT-FILE INTO PRODUCT-DATA
AT END
SET INPUT-EOF TO TRUE
NOT AT END
CONTINUE
END-READ
PERFORM 210-WRITE-DETAIL-REC.
210-WRITE-DETAIL-REC.
INITIALIZE WS-AREA WS-STRIP-AREA.
ADD +1 TO WS-NUMB.
MOVE WS-NUMB TO WS-NUMB-EDITED.
STRING CUST-NAME-IN(1:3) PROD-NAME-IN(1:4)
DELIMITED BY SIZE INTO WS-JOB-CODE.
MOVE TRIANGLE-SIDE-1-IN TO A.
MOVE TRIANGLE-SIDE-2-IN TO B.
MOVE TRIANGLE-SIDE-3-IN TO C.
COMPUTE S = ( A + B + C ) / 2.
COMPUTE WS-AREA ROUNDED =
FUNCTION SQRT ( S * ( S - A ) *( S - B ) * ( S - C )).
MOVE WS-AREA TO WS-AREA-EDITED.
COMPUTE WS-STRIP-AREA = RECT-WIDTH-IN * RECT-LEN-IN.
MOVE WS-STRIP-AREA TO WS-STRIP-AREA-EDITED.
COMPUTE WS-NO-TRIANGLES = WS-STRIP-AREA / WS-AREA.
MOVE WS-NO-TRIANGLES TO WS-NO-TRIANGLES-EDITED.
COMPUTE WS-WASTAGE-AREA ROUNDED =
(WS-STRIP-AREA - (WS-AREA * WS-NO-TRIANGLES)).
MOVE WS-WASTAGE-AREA TO WS-WASTAGE-AREA-EDITED.
ADD WS-WASTAGE-AREA TO TOT-WASTAGE-AREA.
COMPUTE WS-VALUE-WASTAGE-AREA ROUNDED
= WS-WASTAGE-AREA * 12.50.
MOVE WS-VALUE-WASTAGE-AREA TO WS-VALUE-WASTAGE-AREA-EDITED.
ADD WS-VALUE-WASTAGE-AREA TO TOT-VALUE-WASTAGE-AREA.
WRITE OUT-DATA FROM WS-DETAIL-REC.
WRITE OUT-DATA FROM REPORT-BLANK-LINE.
ADD +1 TO WS-NUMBER-OF-REC.
IF WS-NUMBER-OF-REC > 2
ADD +1 TO RPRT-PAGE
MOVE RPRT-PAGE TO PAGENUM
MOVE ZEROES TO WS-NUMBER-OF-REC
PERFORM 120-WRITE-HEADERS
END-IF.
300-CLOSE-FILES.
MOVE TOT-WASTAGE-AREA TO TOT-WASTAGE-AREA-EDITED.
MOVE TOT-VALUE-WASTAGE-AREA TO TOT-VALUE-WASTAGE-AREA-EDITED.
WRITE OUT-DATA FROM REPORT-BLANK-LINE.
WRITE OUT-DATA FROM WS-TOTAL-REC.
WRITE OUT-DATA FROM REPORT-BLANK-LINE.
CLOSE INPUT-FILE.
EVALUATE TRUE
WHEN IN-FILE-IO-OKAY
CONTINUE
WHEN OTHER
DISPLAY 'CLOSE FAILED FOR INPUT FILE'
PERFORM 999-ABEND-PARA
END-EVALUATE.
CLOSE OUTPUT-FILE.
EVALUATE TRUE
WHEN OUT-FILE-IO-OKAY
CONTINUE
WHEN OTHER
DISPLAY 'CLOSE FAILED FOR OUTPUT FILE'
PERFORM 999-ABEND-PARA
END-EVALUATE.
Joined: 26 Nov 2002 Posts: 12404 Topics: 75 Location: San Jose
Posted: Wed Apr 05, 2006 4:38 am Post subject:
Quote:
1.Triangle area is coming out for me as say 59.70 ,how do i get it to approx 60.00
2.Month name followed by a single space in the report,as how can we suppress the month name as i have declared it maximum MONTH PIC X(09).
Shekar123,
Good Job.
1. Look up the rounded option
2. Look up the STRING option
Just wanted to know why it is like "2. If your file is FB(fixed block file) you don't have to use READ INTO"
Would you please explain. _________________ MF
==
Any training that does not include the emotions, mind and body is incomplete; knowledge fades without feeling.
==
All times are GMT - 5 Hours Goto page Previous1, 2
Page 2 of 2
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum