MODULE HashT; IMPORT Hash,In,Out; PROCEDURE ProgMain*; VAR code: CHAR; k: Hash.KeyT; d: Hash.DataT; f: BOOLEAN; BEGIN (*ProgMain*) REPEAT In.Echo(FALSE); In.Prompt("?/1/2/3/4/5/E: "); In.Char(code); code:=CAP(code); In.Echo(TRUE); IF ~In.Done THEN code:="E" END; (*if*) CASE code OF "0", "H", "?": Out.String("(?) Hilfe der Befehlscodes: ?=Hilfe / 1=Init / 2=NeuerWert+Update / 3=Loeschen / 4=Abfrage / 5=Tabelle ausgeben / E=Ende") | "1", "I": Out.String("(1) Init Hashtable: "); Hash.Init; Out.F("Hashtable mit Groesse # ist initialisiert",Hash.TABLEN); | "2", "N", "W", "U": Out.String("(2) Neuen Wert einfuegen + Update: "); In.Prompt("Key= "); In.Int(k); Out.String(" "); In.Prompt("Daten= "); In.String(d); Hash.Put(k,d); | "3", "L": Out.String("(3) Loeschen eines Wertes: "); In.Prompt("Key= "); In.Int(k); Hash.Del(k); | "4", "A": Out.String("(4) Abfragen eines Eintrags: "); In.Prompt("Key= "); In.Int(k); Hash.Get(k, f, d); IF f THEN Out.String(" Daten= "); Out.String(d); ELSE Out.String(" Wert nicht gefunden!!") END (*if*) | "5", "T": Out.String("(5) Tabelle ausgeben: "); Hash.Dump; | "6", "E": Out.String("(E) Ende des Tests"); ELSE Out.String("(?) FEHLER!!! Befehlscodes: ?=Hilfe / 1=Init / 2=NeuerWert+Update / 3=Loeschen / 4=Abfrage / 5=Tabelle ausgeben / E=Ende") END; (*case*) Out.Ln UNTIL ~In.Done OR (code="E") OR (code="6") END ProgMain; END HashT.