CHAR ARRAY line(256) BYTE FUNC IsOrderedWord(CHAR ARRAY word) BYTE len,i len=word(0) IF len<=1 THEN RETURN (1) FI FOR i=1 TO len-1 DO IF word(i)>word(i+1) THEN RETURN (0) FI OD RETURN (1) BYTE FUNC FindLongestOrdered(CHAR ARRAY fname) BYTE max,dev=[1] max=0 Close(dev) Open(dev,fname,4) WHILE Eof(dev)=0 DO InputSD(dev,line) IF line(0)>max AND IsOrderedWord(line)=1 THEN max=line(0) FI OD Close(dev) RETURN (max) PROC FindWords(CHAR ARRAY fname BYTE n) BYTE count,dev=[1] Close(dev) Open(dev,fname,4) WHILE Eof(dev)=0 DO InputSD(dev,line) IF line(0)=n AND IsOrderedWord(line)=1 THEN Print(line) Put(32) FI OD Close(dev) RETURN PROC Main() CHAR ARRAY fname="H6:UNIXDICT.TXT" BYTE max PrintE("Finding the longest words...") PutE() max=FindLongestOrdered(fname) FindWords(fname,max) RETURN