vardef isbetween(expr a, i, f) = if string a: if (ASCII(a) >= ASCII(i)) and (ASCII(a) <= ASCII(f)): true else: false fi else: false fi enddef; vardef toupper(expr s) = save ?; string ?; ? := ""; d := ASCII"A" - ASCII"a"; for i = 0 upto length(s)-1: if isbetween(substring(i, i+1) of s, "a", "z"): ? := ? & char(ASCII(substring(i,i+1) of s) + d) else: ? := ? & substring(i, i+1) of s fi; endfor ? enddef; vardef tolower(expr s) = save ?; string ?; ? := ""; d := ASCII"a" - ASCII"A"; for i = 0 upto length(s)-1: if isbetween(substring(i, i+1) of s, "A", "Z"): ? := ? & char(ASCII(substring(i,i+1) of s) + d) else: ? := ? & substring(i, i+1) of s fi; endfor ? enddef;