ucase = proc (s: string) returns (string) rslt: array[char] := array[char]$predict(1,string$size(s)) for c: char in string$chars(s) do if c>='a' & c<='z' then c := char$i2c(char$c2i(c) - 32) end array[char]$addh(rslt,c) end return(string$ac2s(rslt)) end ucase abc = proc (s: string) returns (bool) own collection: sequence[string] := sequence[string]$ ["BO","XK","DQ","CP","NA","GT","RE","TG","QD","FS", "JW","HU","VI","AN","OB","ER","FS","LY","PC","ZM"] blocks: array[string] := sequence[string]$s2a(collection) for c: char in string$chars(ucase(s)) do begin for i: int in array[string]$indexes(blocks) do if string$indexc(c, blocks[i]) ~= 0 then blocks[i] := "" exit found end end return(false) end except when found: end end return(true) end abc start_up = proc () po: stream := stream$primary_output() words: sequence[string] := sequence[string]$ ["A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "CONFUSE"] for word: string in sequence[string]$elements(words) do stream$puts(po, word || ": ") if abc(word) then stream$putl(po, "yes") else stream$putl(po, "no") end end end start_up