66 lines
1.8 KiB
COBOL
66 lines
1.8 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. ABC-WORDS.
|
|
|
|
ENVIRONMENT DIVISION.
|
|
INPUT-OUTPUT SECTION.
|
|
FILE-CONTROL.
|
|
SELECT DICT ASSIGN TO DISK
|
|
ORGANIZATION LINE SEQUENTIAL.
|
|
|
|
DATA DIVISION.
|
|
FILE SECTION.
|
|
FD DICT
|
|
LABEL RECORD STANDARD
|
|
VALUE OF FILE-ID IS "unixdict.txt".
|
|
01 ENTRY.
|
|
03 WORD PIC X(32).
|
|
03 LETTERS PIC X OCCURS 32 TIMES, REDEFINES WORD.
|
|
|
|
WORKING-STORAGE SECTION.
|
|
01 LEN PIC 99.
|
|
01 MAXLEN PIC 99 VALUE 0.
|
|
01 I PIC 99.
|
|
01 OK-FLAG PIC X.
|
|
88 OK VALUE '*'.
|
|
|
|
PROCEDURE DIVISION.
|
|
BEGIN.
|
|
OPEN INPUT DICT.
|
|
|
|
FIND-LONGEST-WORD.
|
|
READ DICT, AT END CLOSE DICT, GO TO PRINT-LONGEST-WORDS.
|
|
PERFORM CHECK-WORD.
|
|
GO TO FIND-LONGEST-WORD.
|
|
|
|
PRINT-LONGEST-WORDS.
|
|
ALTER VALID-WORD TO PROCEED TO SHOW-WORD.
|
|
OPEN INPUT DICT.
|
|
|
|
READ-WORDS.
|
|
READ DICT, AT END CLOSE DICT, STOP RUN.
|
|
PERFORM CHECK-WORD.
|
|
GO TO READ-WORDS.
|
|
|
|
CHECK-WORD.
|
|
MOVE ZERO TO LEN.
|
|
INSPECT WORD TALLYING LEN
|
|
FOR CHARACTERS BEFORE INITIAL SPACE.
|
|
MOVE '*' TO OK-FLAG.
|
|
PERFORM CHECK-CHAR-PAIR VARYING I FROM 2 BY 1
|
|
UNTIL NOT OK OR I IS GREATER THAN LEN.
|
|
IF OK, PERFORM DO-WORD.
|
|
|
|
CHECK-CHAR-PAIR.
|
|
IF LETTERS(I - 1) IS GREATER THAN LETTERS(I),
|
|
MOVE SPACE TO OK-FLAG.
|
|
|
|
DO-WORD SECTION.
|
|
VALID-WORD.
|
|
GO TO CHECK-LENGTH.
|
|
CHECK-LENGTH.
|
|
IF LEN IS GREATER THAN MAXLEN, MOVE LEN TO MAXLEN.
|
|
GO TO DONE.
|
|
SHOW-WORD.
|
|
IF LEN IS EQUAL TO MAXLEN, DISPLAY WORD.
|
|
DONE.
|
|
EXIT.
|