★ APPLICATIONS ★ PROGRAMMATION ★ Prozeduren unter BASIC auf dem CPC 6128|CPC Amstrad International) ★ |
Der Namensgeber (CPC Amstrad International) | Applications Programmation |
Unterprogramme kommen wohl in allen BASIC- Programmen vor, zudem meisten noch in artenreicher Vielfalt. Dem Programmierer bleibt bei solchen Programmen eigentlich nur eins übrig, er muß sich alle Zeilennummern, in denen ein solches Unterprogramm beginnt, merken oder aufschreiben, falls die Routine mehrmals angesprungen werden soll. Wie oft sieht man da neidisch zu seinen Kollegen von der PASCAL- Programmierung, wenn diese ihre Prozeduren einfach mit dem Namen aufm len. Um den Unterprogramm-Freaks unter Ihnen etwas unter die Arme zu greifen, wurde dieses Hilfsprogramm zum Benennen von Unterroutinen geschrieben. Es ermöglicht Ihnen Unterprogramme, ähnlich wie in PASCAL, mit einem Namen zu versehen und innerhalb des BASIC-Programmes mit diesem Namen aufzurufen. Die Programmbeschreibung Mit dem Befehl |PROCEDUR , " < name > " definieren Sie eine Prozedur, also ein Unterprogramm, mit dem Namen < name > . Hierbei wird zwischen Groß- und Kleinschreibung unterschieden. Nach dem PROCEDUR- Befehl programmieren Sie normal Ihr Unterprogramm und beenden dieses mit RETURN. Als nächstes geben Sie eine Zeile mit einem Hochkomma ' und dem Befehlswon ENI) in Großschrift ein, die die Routine abschließt. Aufgerufen wird diese Routine mit |CALL,"< name > " , wobei Sie bitte auf Groß- und Kleinschreibung achten. Der letzte neue Befehl heißt |CLEAR Er löscht sämtliche Prozedurdefinitionen, jedoch nicht die Prozeduren selbst. Ein Beispiel Damit Sie etwas Übung mit den neuen Befehlen bekommen, hier nun ein Beispiel. Das Ausrufezeichen steht wieder für den RSX-Strich:
Wichtig ist, wie Sie auch aus dem Beispielprogramm ersehen können, daß die Prozeduren am Anfang des Programmes stehen, sie müssen vor dem ersten Aufruf definiert werden. Begrenzte Anzahl von Prozeduren Mit dieser BASIC-Erweiterung läßt sich allerdings nur eine bestimmte Anzahl von Prozeduren definieren und verwalten, dies hängt von der Länge der jeweiligen Prozedurnamen ab. In diesem Falle bricht das Programm mit der Meldung MEMORY OVERFLOW. CAN'T DEFINE PROCEDURE ab. Um Platz für mehr Prozeduren zu schaffen, müssen Sie das Assem-blerlisting abtippen und mit einer kleineren Startadresse assem-blieren. Die BASIC-Erweiterung verwendet den Bereich zwischen! dem Ende des Maschinenprogrammes und &A600 als Tabelle, in der die Namen und Adressen aller definierten Prozeduren abgelegt werden. Wenn dieser Bereich nicht vollständig zur Verfügung steht, muß die Anweisung “ENDMEM EQU #A600” entsprechend geändert werden. Wenn zu einer |PROCEDURE-Anweisung kein END gefunden wird, bricht der Computer das Programm ebenfalls mit einer Fehlermeldung namens CAN'T FIND END OF PROCEDURE ab. Die letzte Fehlermöglichkeit wäre, daß eine mit |CALL," < name>“ aufgerufene Prozedur nicht vorhanden oder noch nicht definiert ist. In diesem Fall wird mit der Meldung CAN'T FIND PROCEDURE das Programm abgebrochen.
|