MODULE; IMPORT ASCII, Text, Text8, Word; PROCEDURE CIText Equal (t, u: T): BOOLEAN = VAR lt: CARDINAL := Text.Length(t); lu: CARDINAL := Text.Length(u); i: CARDINAL := 0; BEGIN IF lt = lu THEN WHILE i<lt DO IF ASCII.Upper[Text.GetChar(t, i)] # ASCII.Upper[Text.GetChar(u, i)] THEN RETURN FALSE ELSE INC(i) END; END; RETURN TRUE; ELSE RETURN FALSE END; END Equal; PROCEDUREHash (t: T): Word.T = VAR len := Text.Length(t); u := Text8.Create(len); BEGIN u.contents[len] := '\000'; FOR i := 0 TO Text.Length(t) - 1 DO u.contents[i] := ASCII.Upper[Text.GetChar(t, i)] END; RETURN Text.Hash(u); END Hash; BEGIN END CIText.