182 lines
8 KiB
COBOL
182 lines
8 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. Letter-Frequency.
|
|
AUTHOR. Bill Gunshannon.
|
|
INSTALLATION. Home.
|
|
DATE-WRITTEN. 12 December 2021.
|
|
************************************************************
|
|
** Program Abstract:
|
|
** A rather simplistic program to do the kind of thing
|
|
** that COBOL does really well.
|
|
************************************************************
|
|
|
|
ENVIRONMENT DIVISION.
|
|
|
|
INPUT-OUTPUT SECTION.
|
|
FILE-CONTROL.
|
|
SELECT Text-File ASSIGN TO "File.txt"
|
|
ORGANIZATION IS LINE SEQUENTIAL.
|
|
|
|
DATA DIVISION.
|
|
|
|
FILE SECTION.
|
|
|
|
FD Text-File
|
|
DATA RECORD IS Record-Name.
|
|
01 Record-Name PIC X(80).
|
|
|
|
|
|
WORKING-STORAGE SECTION.
|
|
|
|
01 Eof PIC X VALUE 'F'.
|
|
|
|
01 Letter-cnt.
|
|
05 A-cnt PIC 9(5) VALUE 0.
|
|
05 B-cnt PIC 9(5) VALUE 0.
|
|
05 C-cnt PIC 9(5) VALUE 0.
|
|
05 D-cnt PIC 9(5) VALUE 0.
|
|
05 E-cnt PIC 9(5) VALUE 0.
|
|
05 F-cnt PIC 9(5) VALUE 0.
|
|
05 G-cnt PIC 9(5) VALUE 0.
|
|
05 H-cnt PIC 9(5) VALUE 0.
|
|
05 I-cnt PIC 9(5) VALUE 0.
|
|
05 J-cnt PIC 9(5) VALUE 0.
|
|
05 K-cnt PIC 9(5) VALUE 0.
|
|
05 L-cnt PIC 9(5) VALUE 0.
|
|
05 M-cnt PIC 9(5) VALUE 0.
|
|
05 N-cnt PIC 9(5) VALUE 0.
|
|
05 O-cnt PIC 9(5) VALUE 0.
|
|
05 P-cnt PIC 9(5) VALUE 0.
|
|
05 Q-cnt PIC 9(5) VALUE 0.
|
|
05 R-cnt PIC 9(5) VALUE 0.
|
|
05 S-cnt PIC 9(5) VALUE 0.
|
|
05 T-cnt PIC 9(5) VALUE 0.
|
|
05 U-cnt PIC 9(5) VALUE 0.
|
|
05 V-cnt PIC 9(5) VALUE 0.
|
|
05 W-cnt PIC 9(5) VALUE 0.
|
|
05 X-cnt PIC 9(5) VALUE 0.
|
|
05 Y-cnt PIC 9(5) VALUE 0.
|
|
05 Z-cnt PIC 9(5) VALUE 0.
|
|
|
|
01 Letter-disp.
|
|
05 A-cnt PIC ZZZZ9.
|
|
05 B-cnt PIC ZZZZ9.
|
|
05 C-cnt PIC ZZZZ9.
|
|
05 D-cnt PIC ZZZZ9.
|
|
05 E-cnt PIC ZZZZ9.
|
|
05 F-cnt PIC ZZZZ9.
|
|
05 G-cnt PIC ZZZZ9.
|
|
05 H-cnt PIC ZZZZ9.
|
|
05 I-cnt PIC ZZZZ9.
|
|
05 J-cnt PIC ZZZZ9.
|
|
05 K-cnt PIC ZZZZ9.
|
|
05 L-cnt PIC ZZZZ9.
|
|
05 M-cnt PIC ZZZZ9.
|
|
05 N-cnt PIC ZZZZ9.
|
|
05 O-cnt PIC ZZZZ9.
|
|
05 P-cnt PIC ZZZZ9.
|
|
05 Q-cnt PIC ZZZZ9.
|
|
05 R-cnt PIC ZZZZ9.
|
|
05 S-cnt PIC ZZZZ9.
|
|
05 T-cnt PIC ZZZZ9.
|
|
05 U-cnt PIC ZZZZ9.
|
|
05 V-cnt PIC ZZZZ9.
|
|
05 W-cnt PIC ZZZZ9.
|
|
05 X-cnt PIC ZZZZ9.
|
|
05 Y-cnt PIC ZZZZ9.
|
|
05 Z-cnt PIC ZZZZ9.
|
|
|
|
PROCEDURE DIVISION.
|
|
|
|
Main-Program.
|
|
OPEN INPUT Text-File
|
|
PERFORM UNTIL Eof = 'T'
|
|
READ Text-File
|
|
AT END MOVE 'T' to Eof
|
|
END-READ
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING A-cnt OF Letter-cnt FOR ALL 'A'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING B-cnt OF Letter-cnt FOR ALL 'B'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING C-cnt OF Letter-cnt FOR ALL 'C'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING D-cnt OF Letter-cnt FOR ALL 'D'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING E-cnt OF Letter-cnt FOR ALL 'E'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING F-cnt OF Letter-cnt FOR ALL 'F'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING G-cnt OF Letter-cnt FOR ALL 'G'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING H-cnt OF Letter-cnt FOR ALL 'H'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING I-cnt OF Letter-cnt FOR ALL 'I'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING J-cnt OF Letter-cnt FOR ALL 'J'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING K-cnt OF Letter-cnt FOR ALL 'K'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING L-cnt OF Letter-cnt FOR ALL 'L'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING M-cnt OF Letter-cnt FOR ALL 'M'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING N-cnt OF Letter-cnt FOR ALL 'N'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING O-cnt OF Letter-cnt FOR ALL 'O'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING P-cnt OF Letter-cnt FOR ALL 'P'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING Q-cnt OF Letter-cnt FOR ALL 'Q'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING R-cnt OF Letter-cnt FOR ALL 'R'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING S-cnt OF Letter-cnt FOR ALL 'S'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING T-cnt OF Letter-cnt FOR ALL 'T'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING U-cnt OF Letter-cnt FOR ALL 'U'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING V-cnt OF Letter-cnt FOR ALL 'V'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING W-cnt OF Letter-cnt FOR ALL 'W'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING X-cnt OF Letter-cnt FOR ALL 'X'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING Y-cnt OF Letter-cnt FOR ALL 'Y'
|
|
INSPECT FUNCTION UPPER-CASE(Record-Name)
|
|
TALLYING Z-cnt OF Letter-cnt FOR ALL 'Z'
|
|
END-PERFORM.
|
|
CLOSE Text-File.
|
|
MOVE CORRESPONDING Letter-cnt To Letter-disp.
|
|
DISPLAY 'Letter Frequency Distribution'.
|
|
DISPLAY '-----------------------------'.
|
|
DISPLAY 'A : ' A-cnt OF Letter-disp ' '
|
|
'N : ' N-cnt OF Letter-disp.
|
|
DISPLAY 'B : ' B-cnt OF Letter-disp ' '
|
|
'O : ' O-cnt OF Letter-disp.
|
|
DISPLAY 'C : ' C-cnt OF Letter-disp ' '
|
|
'P : ' P-cnt OF Letter-disp.
|
|
DISPLAY 'D : ' D-cnt OF Letter-disp ' '
|
|
'Q : ' Q-cnt OF Letter-disp.
|
|
DISPLAY 'E : ' E-cnt OF Letter-disp ' '
|
|
'R : ' R-cnt OF Letter-disp.
|
|
DISPLAY 'F : ' F-cnt OF Letter-disp ' '
|
|
'S : ' S-cnt OF Letter-disp.
|
|
DISPLAY 'G : ' G-cnt OF Letter-disp ' '
|
|
'T : ' T-cnt OF Letter-disp.
|
|
DISPLAY 'H : ' H-cnt OF Letter-disp ' '
|
|
'U : ' U-cnt OF Letter-disp.
|
|
DISPLAY 'I : ' I-cnt OF Letter-disp ' '
|
|
'V : ' V-cnt OF Letter-disp.
|
|
DISPLAY 'J : ' J-cnt OF Letter-disp ' '
|
|
'W : ' W-cnt OF Letter-disp.
|
|
DISPLAY 'K : ' K-cnt OF Letter-disp ' '
|
|
'X : ' X-cnt OF Letter-disp.
|
|
DISPLAY 'L : ' L-cnt OF Letter-disp ' '
|
|
'Y : ' Y-cnt OF Letter-disp.
|
|
DISPLAY 'M : ' M-cnt OF Letter-disp ' '
|
|
'Z : ' Z-cnt OF Letter-disp.
|
|
STOP RUN.
|
|
|
|
|
|
END-PROGRAM.
|