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.