     program eingabe;
     USES CRT;
     TYPE
         zeichen = SET OF CHAR;
     CONST
         alle = ['A'..'Z','0'..'9'];
     var
         x,y,f:INTEGER;   { Fr Cursorposition }
         i:BYTE;
         titel:STRING;    { Fr Ausgabe eines Textes }
         fcode:WORD;      { Fr bergabe an Errorlevel }
         ch:CHAR;         { Nimmt das Zeichen auf }
         folge:STRING;    { Nimmt Zeichen auf die zuglassen werden }
         inhalt:zeichen;
     FUNCTION taste(ch:CHAR):BYTE;
     begin
     REPEAT
     IF ch IN inhalt THEN
        taste:=ORD(ch)     { Zeichen in Dezimalwert umwandeln }
     ELSE
     begin
     WRITE(#7);
     ch:=UPCASE(READKEY);
     end;
     UNTIL (ch IN inhalt) OR (ch = #27);
     end;
     begin
         ch:=' ';inhalt:=[];
         IF PARAMCOUNT = 0 THEN
            begin
            inhalt:=alle;
            ch:=UPCASE(READKEY);  { Wandelt Zeichen in Groábuchstaben um }
            i:=taste(ch);
            HALT(i);
            end
         ELSE IF PARAMCOUNT = 4 THEN
              begin
              VAL(PARAMSTR(1),x,f);VAL(PARAMSTR(2),y,f);
              folge:=PARAMSTR(4);
              FOR i:=1 TO LENGTH(folge) DO
              begin
              inhalt:= inhalt + [folge[i]];
              end;
              GOTOXY(x,y);
              WRITE(PARAMSTR(3));
              ch:=UPCASE(READKEY);
              i:=TASTE(ch);
              HALT(i);
              end;
              HALT(0);
       end.
