Im Programm 'Speicher 4' haben wir bereits kennengelernt, wie die jeweilige Zeilennummer und Zeilenlänge im Speicher abgelegt wird (Speicherstellen 368 und 369 enthalten die Längenangabe der ersten Zeilennummer, Speicherstelle 370 und 371 teilt uns mit, wie die erste Zeilennummer heißt usw.). Mit Programm 'Speicher 4' haben wir zudem eine einfache Möglichkeit an die Hand bekommen, den Speicher nach einem bestimmten Wort mit bis zu sechs Buchstaben zu durchsuchen. Jedoch so mancher unter Ihnen wird sich fragen: 'was kann ich damit denn sinnvoll anfangen?1. Nun ja, im Endprodukt haben wir dadurch einerseits den Speicher etwas näher kennengelernt, andererseits kann uns Programm 'Speicher 4' aber außerdem behilflich dabei sein, wenn wir gerade nach solch einer alphanumerischen Zeichenfolge suchen. Im Programm 'Variablenreferenzliste' gehen wir mit ähnlichem Fundament an den Start, aber wieder folgt eine entscheidende Erweiterung: diesmal wird der Speicher nicht nur nach bestimmten Zeichenfolgen durchsucht, nein, es wird zudem eine Ordnung hergestellt . Die gesuchten Zeichenfolgen setzen sich aus einer ersten Zahl (2, 3, 4 oder 13) und einer zweiten Zahl (0) zusammen. Diese Folge deutet darauf hin, daß hier eine Variable mit entsprechendem Variablennamen im Programm abgelegt wurde. Da der CPC die Möglichkeit bietet, Variablennamen mit bis zu vierzig Zeichen zu unterscheiden, müssen wir selbstverständlich den ganzen Variablennamen im Speicher aufsuchen. Dabei hilft uns (und natürlich insbesondere sich selber) der CPC ein starkes Stück weiter: während die ersten Zeichen eines Variablennamens immer normal abgespeichert sind, wird beim letzten Zeichen des Variablennamens jeweils das entsprechende ASCII-Zeichen + 128 im Speicher abgelegt. Besteht der Variablenname lediglich aus einem Zeichen (z.B. 'a', 'b' oder 'c'), so gilt selbstverständlich das erste Variablenzeichen gleichzeitig als das letzte, und dies wird dann auch entsprechend abgespeichert (ASCII-Zeichen + 128). Da es verschiedene Variablentypen gibt (String, ganze Zahl ...), wird dies bei der Abspeicherung mitberücksichtigt und bei unserer Auflistung auch angezeigt. Was kann unser 'Variablenreferenzlistenprogramm' nun alles von dem und noch darüberhinaus? - Es werden Variablen im Programmspeicher gesucht (Start des Programms 'Variablenreferenzliste' mit 'RUN 10000') - bis Zeile 9999 kann Ihr Programm lang sein.
- Steht der gefundene Variablenname alphabetisch an erster Stelle (von allen in Ihrem Program vorkommenden Variablen), so wird im Speicher = Programm weitergesucht, in welchen Programmzeilen dieser gleiche Name zudem auftaucht. Auch dies wird am Bildschirm angezeigt. So wird mit der Zeit eine alphabetische Variablenliste auf dem Bildschirm erzeugt, die uns bei unserem 'Basic-Programm-Debugging' (Fehlersuche) erheblich weiterhelfen kann.
Probieren Sie das Programm doch gleich aus, indem Sie in Zeile 10 bis 50 folgende Variablenzuweisungen eintragen:10 a$="CPC464" 20 b$="Computer" 30 CPC=464 40 DATABECKER!=464 50 BASICPR0GRAMME7o=464'Nun starten Sie das 'Variablenreferenzlistenprogramm' mit 'RUN 10000' und nach kurzer Zeit werden nicht nur die verwendeten Variablen, sondern auch die ensprechenden Zeilennummern am Bildschirm aufgeführt.Ist das Programm durchforstet, so schreibt der CPC den verbrauchten Speicherplatz auf den Bildschirm (Angabe für Programm = ohne Referenzlistenprogramm). Noch ein Hinweis: Je länger Ihr Programm ist, desto ausführlicher und damit aufwendiger muß der CPC seine Speicherdurchsuchung durchführen. Also: Bitte ein bißchen Geduld. Die Variablennamen werden erst einmal alphabetisch sortiert (das heißt im Computerhirn nicht nur alphabetisch sondern auch 'vom großen Buchstaben zum kleinen'!), dann ihrer Zeilennummer - bzw. auch mehreren Zeilennummern - zugeordnet und schließlich im Rahmen einer Referenzliste auf den Bildschirm ausgeworfen. Der angezeigte verbrauchte 'Programmspeicherplatz' bezieht sich nur auf das Programm in den Zeilen bis 10000, denn die 'Referenzliste' gehört ja schließlich nicht zum eigentlichen Hauptprogram dazu; sie fungiert lediglich als Utility! |