
                           PASCAL KURS TEIL 1

    
Willkommen zum erstem Kursteil!


    Die Bedienung des Compilers selber werde ich hier nicht mehr
    im Detail beschreiben, da dies mit Hilfe der Make Datei sehr
    einfach ist und in der Anleitung zu PCQ.

    Als erstes möchte ich auf die Vorbereitungen zu sprechen
    kommen. Jeder sollte sich eine extra Diskette, bzw. ein Verzeichnis
    auf der Festplatte für PCQ erstellen. Dort sollte man einige
    Verzeichnisse anlegen. Ich habe die Verzeichnisse "Source", "Include",
    "Exec" und "Units". Im Ersterem speichere ich meine Quelltexte, in
    "Include" habe ich die Include-Dateien von PCQ und speichere dort auch
    eigene, Exec enthält die ausführbaren Programme und in Units sind die
    ".lib" und ".o" Dateien, wobei der Name in Anlehnung an Turbo Pascal
    gewählt wurde.
    Außerdem habe ich die 
    Make-Datei entsprechend angepaßt, so daß
    alle Dateien im richtigem Verzeichnis gesucht, bzw gespeichert werden.
    Des weiteren wird mittels "READ" von ARP eine Variable initialisiert,
    in der man eine weitere Objekt Datei eingeben kann. Dieser muß mit dem
    vollständigem Pfad eingegeben werden. Eine Leertaste gefolgt von RETURN
    löscht den Inhalt der Variable. Diese Make Datei liegt dem Kurs bei.
    Kopiert man sie Make Datei in das "C:" Verzeichnis, kann man den Pascal
    Compiler von überall her mittels "Make <Quelltext-Name>" aufrufen und
    das ausführbare Programm wird automatisch im "Exec" Verzeichnis
    gespeichert.

    Jezt brauchen wir nur noch ein Programm, daß wir compilieren können.
    Ich möchte in dieser ersten Folge des Pascal-Kurses den "ASK" Befehl
    nachprogrammieren, wobei dieser in späteren Folgen noch mit weiteren
    Optionen ausgestattet wird, z.B. mit einer Maussteuerung.

    Also beginnen wir:

    
    Das Programm muß Parameter übernehmen, diese als Frage ausgeben und
    die Antwort auswerten.

    Aber schon der erste Punkt stellt ein Problem dar, da in PCQ selber
    keine Funktion für die Parameter-Übernamhe zur Verfügung stellt.
    Allerdings hat Patrick Quaid in dem Beispielprogramm Parameters ein
    Prozedur GetParameters entwickelt, die sowohl Workbench, als auch
    CLI Parameter auswertet.
    Diese Prozedur werden wir sicher noch oft verwenden, daher wollen wir
    sie in eine separatem Teil vorcompilieren, so daß sie nachher nur noch
    mit dem Programm zusammen gelinkt werden muß (Beschreibung dazu siehe
    PCQ.Dok/PCQ.Doc). Dies erreichen wir, indem wir die Prozeduren in eine
    extra Datei kopieren, an den Anfang der Datei das Schlüsselwort
    
    "external"
    schreiben und diese Datei kompilieren und assemblieren,
    aber nicht linken. Im Programm selber deklarieren wir sie durch Angabe
    des Prozedurenkopfes und des Schlüsselwortes "forward":

      
    Procedure GetParam(Number : Short; var S : String); forward;
   

      Number : Die Nummer des Parameters, den man erhalten möchte
      S      : Ein String, für den vorher Speicher angefordert werden muß

    Diese Zeile steht in der Include-Datei "System.i", die sie in ihr
    INCLUDE Verzeichniss kopieren sollten, da wir diese noch erweitern
    und öfter gebrauchen werden.

    Mit Hilfe dieser Prozedur lesen wir die Parameter ein und geben sie,
    gefolgt von einem Fragezeichen wieder aus:

        
    ParamStr := AllocString(80);         { Speicher für String holen }
    
        
    GetParam(1, ParamStr);               { Ersten Parameter einlesen }
    
        
    i:= 1;
        
    WHILE (ParamStr^ <> Chr(0)) DO BEGIN { Bis zum Stringende (#0)   }
    
        
     write(ParamStr,' ');
    
        
     i := Succ(i);
    
        
     GetParam(i, ParamStr);
        
     END;
     
        
     write(ParamStr,"? ");
     

    Anschließend wir ein Buchstabe eingelesen und mit Hilfe der Prozedure
    ToUpper(), die in PCQ implementiert ist, in einen Großbuchstaben
    umgewandelt:

        
    Eingabe := ToUpper(Eingabe);
    

    Wenn es sich um ein "J" oder "Y" handelt wird das Programm mit dem
    Rückgabewert 5, ansonsten mit 0 verlassen:

        
    IF ( Eingabe = 'J') OR (Eingabe = 'Y') THEN exit(5);
    
        
    exit(0);
    

    Es braucht nicht "else exit(0)" zu heißen, da das Programm bei Erfüllung
    der IF-Bedingung mit der Abarbeitung aufhört und somit in diesem Falle
    nie bis in die letzte Zeile gelangt.

    Der Quelltext des Programmes ist in der Datei "ASK.P" gespeichert.
    Beim Compilieren muß die Datei "System.o", die "GetParam" enthält, als
    weitere Objektdatei angegeben werden. Das Programm selbst ist auch
    vorhanden, kann allerdings nur aus dem CLI aufgerufen werden, da von
    dort eine Eingabe erwartet wird.

    Dies war der erste Teil. Im nächstem Teil wollen wir das Programm
    so weit wie möglich Turbo Pascal kompatibel machen und vielleicht
    noch einige Funktionen hinzufügen.

    Bis dahin,

    Thorsten



