55 lines
1.1 KiB
Plaintext
55 lines
1.1 KiB
Plaintext
BEGIN
|
|
|
|
BOOLEAN PROCEDURE ISORDERED(W); TEXT W;
|
|
BEGIN
|
|
BOOLEAN B;
|
|
B := TRUE;
|
|
W.SETPOS(1);
|
|
IF W.MORE THEN
|
|
BEGIN
|
|
CHARACTER CURR, LAST;
|
|
CURR := W.GETCHAR;
|
|
WHILE W.MORE AND B DO
|
|
BEGIN
|
|
LAST := CURR;
|
|
CURR := W.GETCHAR;
|
|
B := LAST <= CURR;
|
|
END;
|
|
END;
|
|
ISORDERED := B;
|
|
END;
|
|
|
|
REF (INFILE) INF;
|
|
INTEGER LONGEST;
|
|
TEXT W;
|
|
|
|
COMMENT FIND LONGEST LENGTH;
|
|
INF :- NEW INFILE("unixdict.txt");
|
|
INF.OPEN(BLANKS(132));
|
|
WHILE NOT INF.LASTITEM DO
|
|
BEGIN
|
|
W :- COPY(INF.IMAGE).STRIP;
|
|
IF ISORDERED(W) THEN
|
|
IF W.LENGTH > LONGEST THEN
|
|
LONGEST := W.LENGTH;
|
|
INF.INIMAGE;
|
|
END;
|
|
INF.CLOSE;
|
|
|
|
COMMENT OUTPUT ORDRERED WORDS OF LONGEST LENGTH;
|
|
INF :- NEW INFILE("unixdict.txt");
|
|
INF.OPEN(BLANKS(132));
|
|
WHILE NOT INF.LASTITEM DO
|
|
BEGIN
|
|
W :- COPY(INF.IMAGE).STRIP;
|
|
IF W.LENGTH = LONGEST AND THEN ISORDERED(W) THEN
|
|
BEGIN
|
|
OUTTEXT(W);
|
|
OUTIMAGE;
|
|
END;
|
|
INF.INIMAGE;
|
|
END;
|
|
INF.CLOSE;
|
|
|
|
END.
|