Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Source listing

&pagelevel(3)&pagelevel
00001        IDENTIFICATION DIVISION.
00002        PROGRAM-ID.  M0BS.
00003        ENVIRONMENT DIVISION.
00004        CONFIGURATION SECTION.
00005        SPECIAL-NAMES.
00006            TERMINAL IS T.
00007        INPUT-OUTPUT SECTION.
00008        FILE-CONTROL.
00009             SELECT TEXTDAT ASSIGN TO "INPFIL".
00010        DATA DIVISION.
00011        FILE SECTION.
00012        FD TEXTDAT
00013                RECORD VARYING FROM 1 TO 256 DEPENDING ON SLF.
00014        01 RECD.
00015             02 ITEM PIC X OCCURS 1 TO 256 DEPENDING ON SLF
00016                INDEXED BY K.
00017        WORKING-STORAGE SECTION.
00018        77 SLF PIC 999 COMP.
00019        77 PROCES-SWITCH PIC X.
00020           88 PROCES-END VALUE "1".
00021        01 A-Z-TAB.
00022           02 FILLER PIC X(26) VALUE "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
00023        01 ABC-TAB REDEFINES A-Z-TAB.
00024           02 CHAR PIC X OCCURS 26 INDEXED BY I.
00025        01 NUMB-TAB.
00026           02 QNTY PIC 9999 OCCURS 26 INDEXED BY J.
00027        77 NUMB-SUM PIC S9(6) VALUE ZERO.
00028        77 PROC-SUM PIC S999V99 VALUE ZERO.
00029        01 FRM-HEAD.
00030           02 FILLER PIC X(24) VALUE "LETTER NUMB PERCENT".
00031        01 FRM-LINE.
00032           02 LETTER PIC X.
00033           02 FILLER PIC X(9) VALUE SPACE.
00034           02 NUMB PIC Z(5)9.
00035           02 FILLER PIC X(2) VALUE SPACE.
00036           02 PERCENT PIC ZZ9.99.
00037        01 FRM-FOOT.
00038           02 FILLER PIC X(10) VALUE "TOTAL:    ".
00039           02 A-SUM PIC Z(5)9.
00040           02 FILLER PIC X(2) VALUE SPACE.
00041           02 P-SUM PIC ZZ9.99.
00042        PROCEDURE DIVISION.
00043        LEADER.
00044            INITIALIZE NUMB-TAB.
00045            MOVE "0" TO PROCES-SWITCH.
00046            OPEN INPUT TEXTDAT.
00047        PROCESSING.
00048            READ TEXTDAT
00049               AT END DISPLAY "FILE IS EMPTY" UPON T
00050               NOT AT END
00051                  PERFORM WITH TEST BEFORE UNTIL PROCES-END
00052                     PERFORM WITH TEST BEFORE VARYING K FROM 1 BY 1 UNTIL
00053                        K > SLF
00054                        IF ITEM(K) NOT = SPACE
00055                           THEN ADD 1 TO NUMB-SUM
00056                           SET I TO 1
00057                           SEARCH CHAR VARYING J
00058                              WHEN ITEM(K) = CHAR(I) ADD 1 TO QNTY(J)
00059                           END-SEARCH
00060                        END-IF
00061                     END-PERFORM
00062                     READ TEXTDAT
00063                        AT END SET PROCES-END TO TRUE
00064                     END-READ
00065                  END-PERFORM
00066               END-READ.
00067        PUTOUT.
00068            CLOSE TEXTDAT.
00069            DISPLAY FRM-HEAD UPON T.
00070            PERFORM WITH TEST BEFORE
00071               VARYING I FROM 1 BY 1 UNTIL I > 26
00072               MOVE CHAR(I) TO LETTER
00073               SET J TO I
00074               MOVE QNTY(J) TO NUMB
00075               COMPUTE PERCENT = QNTY(J) * 100/NUMB-SUM
00076               DISPLAY FRM-LINE UPON T
00077               COMPUTE PROC-SUM = PROC-SUM + QNTY(J) * 100/NUMB-SUM
00078            END-PERFORM.
00079            MOVE PROC-SUM TO P-SUE.
00080            MOVE NUMB-SUM TO A-SUM.
00081            DISPLAY FRM-FOOT UPON T.
00082            STOP RUN.
00083