\util.g proc nonrec is_ordered(*char str) bool: while str* /= '\e' and str* <= (str+1)* do str := str + 1 od; str* = '\e' or (str+1)* = '\e' corp proc nonrec main() void: [64]char buf; *char str; word length, max_length; file(1024) dictfile; channel input text dict; str := &buf[0]; max_length := 0; open(dict, dictfile, "unixdict.txt"); while readln(dict; str) do if is_ordered(str) then length := CharsLen(str); if length > max_length then max_length := length fi fi od; close(dict); open(dict, dictfile, "unixdict.txt"); while readln(dict; str) do if is_ordered(str) then length := CharsLen(str); if length = max_length then writeln(str) fi fi od; close(dict) corp