Loading...
Select Version
&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