APPLICATIONSDISQUE ★ Basic-Stück für Stück ★

Band-Kartei (Happy Computer)Applications Disque
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Jedes Programm in diesem Sonderheft enthält eine Programmbeschreibung. Für den Einsteiger bleiben aber trotzdem oft noch Fragen offen. Deshalb erklären wir Ihnen hier ein Listing Befehl für Befehl.

Nun soll aber nicht nur das Programmieren auf den Schnei der-Computern gezeigt werden, sondern am Ende wollen wir auch teer ein lauffähiges, praktisches Programm verfügen. Das Listing »Band-Kartei« ist ein Hilfsprogramm, das Ordmung in den Band- beziehungsweise Diskettensalat bringt. Wenn Sie nur einen 464 ohne Diskettenstation besitzen. kennen Sie das Problem sicherten. Aber auch die Eigentümer der Floppy-bestückten großen Brüder werden es im Laufe der Zeit - mit zunehmendem Diskettenbestand - kennenlernen. Der Anlaß zu diesem Programm ist ein bemerkenswertes Computergesetz: Eine Datei ist immer gerade da, woman sie nicht vermutet. Also sucht man geduldig auf seinen Bändern und Disketten hin und her, und manchmal findet man das Gesuchte dann auch. Man kann sich hier natürlich mit beigelegten Zettelchen oder Aufklebern etc. helfen. Aber diese sind oft nicht mehr »up to date«, weil die Diskette schon dreimal wiederverwendet worden ist. Bei Packzettel haben dagegen die Eigenschaft, permanent zu verschwinden. Was fehlt, ist eine Art Katalogisierungsprogramm, das alle Bänder und Disketten enthält. Wenn man ein bestimmtes Programm sucht, muß man nur noch seinen Namen eingeben und schon erhält man die Bandnummer und den Zählwerkssand, wo sich dieser Titel befindet, auf den Bildschirm. Zu schön um wahr zu sein? Nein, wir müssen nur ein wenig Programmierarbeit leisten, um dieses Ziel zu erreichen.

Machen wir uns zunächst ein paar Gedanken darüber, was ein solches Programm eigentlich alles ausführen soll. Vor allem benötigen wir ein umfangreiches Inhaltsverzeichnis. Für jedes Band, beziehungsweise jede Diskette, sollen dabei die einzelnen gespeicherten Dateien abrufbar sein. Nun können wir aus Platzgründen nicht den Inhalt aller abgespeicherten Bänder gleichzeitig auf den Bildschirm bringen. Wir beschränken uns also am besten auf den Inhalt eines Bandes, Um etwas Ordnung in unsere Dateien zu bekommen, überlegen wir uns die benötigten Daten und deren maximale Größe und Anzahl. Das beste Programm nützt nämlich wenig, wenn am Schluß Probleme mit dem Speicherplatz auftreten. Auβerdem kann der Schneider keine unendlich großen Datenfelder verwalten. Er braucht eine Maximalangabeüber deren Größe, die sogenannte Dimensionierung.

Die erste Größe kennen wir bereitsschon, die maximale Zahl der Bänder, die erfaßt werden soll. Die nächste Dimensionierung betrifft die einzelnen Programmtitel. Hier gehen wir von 20 zu katalogisierenden Bändern mit je maximal 15 Titeln aus. Für deren Ablage bietet sich bei der Basic-Programmierung ein zweidimensionales Datenfeld, ein sogenanntes Array an. Bezeichnen wir es mit n$. Die erste Dimension, also der erste Index, soll dabei die Nummer des Bandes sein. Index Nummer 2 ist die Nummer des Programms auf dem Datenträger. n$(1,3) bezeichnet damit das dritte Programm auf Band Nummer 1, n$(3,4) bezeichnet die vierte Datei auf Band Nummer 3. Die einzelnen Elemente unseres Datenfeldes sind einfache Strings, die die verschiedenen Programmtitel enthalten sollen.

Felder der
Dimension 300
haben 336 Elemente

Nun wissen Sie sicher, daß, wenn wir ein Feld auf 20*15 dimensionieren, dieses aus 21 * 16 Elementen besteht, denn der Schneider rechnet ab Null. n$(Bandnummer,1) bis n$(Bandnum-mer,15) enthalten die Programmtitel. n$(Bandnummer,0) bleibt damit aber noch frei. Da wir aber beabsichtigen, noch einen weiteren String je Band abzuspeichern - irgendwo soll ja schließlich auch noch der Name des Bandes zu finden sein - kommt uns dies ganz gelegen. Der Bandname wird jeweils in n$(Bandnummer,0) abgelegt.

Nun fehlt noch der Zählwerkstand, der auch wichtig ist, um einen gezielten Zugriff auf ein Band zu ermöglichen. Dazu benötigen wir noch ein ebenso großes numerisches Array, das für jedes Programm den Zählwerkstand aufnimmt. Es trägt die Bezeichnung n. Wieder bleibt der Nullindex unbelegt. Und auch hier erhält er einen neuen Sinn: Er beinhaltet die Anzahl der auf einem Band befindlichen Programme.

Der Daten rahmen ist nun festgelegt. Bevor wir uns jedoch nun direkt auf das Listing stürzen, kurz noch ein paar Bemerkungen zu den einzelnen Funktionen. Das Programm »Band-Kartei« stellt im wesentlichen eine Art komfortables Inhaltsverzeichnis dar. Dabei erscheint jeweils der Inhalt eines Bandes auf dem Schirm. Da wir aber natürlich viele Bänder abspetchern wollen -sonst hat das Ganze ja gar keinen Sinn! - müssen wir einige Funktionen einbauen, die uns das Umschalten zwischen den einzelnen Bändern ermöglichen. Dabei müssen wir sowohl in den Datensätzen blättern, also auch die nachfolgenden Programm-Inhaltsverzeichnisse ausgeben lassen, als auch gezielt nach einem Programm oder einem Band suchen. Außerdem brauchen wir natürlich Prozeduren, die uns das Löschen, Einfügen oder Ändern eines Programmtitels oder Bandes gestatten.

Das Programm ist nach einem Menüsystem aufgebaut. Die einzelnen Programmfunktionen bilden dabei eine Art Kreisverkehr. Wenn wir beispielsweise eine Datei laden wollen, so geschieht dies mit der Funktion Nummer 1 »Datei einiesen«. Aufgerufen wird sie aus dem Auswahlmenü ab Zeile 250. Das Programm verzweigt jeweils mit GOSUB in die entsprechende Unterroutine Der Menüunterpunkt »Verlassen« führt in die jeweils übergeordnete Ebene zurück. Der Punkt »Verlassen« im Hauptmenü veranlaßt einen Programmabbruch.

Gehen wir nun einmal das Programm Zeile für Zeile durch. Die einzelnen Unterpunkte sind dabei anhand der kommentierenden REM-Anweisungen gut erkenntlich. Den Anfang bildet ein Initialisierungsteil. Hier werden die Farben festgeiegt. Die Farbregister 0 bis 3 enthalten die gewünschten Werte (schwarz, rot, gelb und mittelblau). In Zeile 50 erfolgt das Umschalten auf den Modus 0 (dies sorgt für eine bessere Wirkung der nachfolgenden Titelausgabe) und die Ladegeschwindigkeit 1 wird festgelegt. Die folgenden Zeilen geben den Titel aus. Die Sternchen bewirkt dabei das PEN-Kommando mit INK 3, also rot. Interessant ist hier noch in Zeile 100 die Farbumschaltung innerhalb einer Bildschirmzeile. Das »;« nach dem ersten PRINT-Kommando sorgt dafür, daß der Cursor an der letzten Position stehen bleibt. Dann wird mit PEN 1 gelb gewählt, der Titel ausgegeben und dann nach demselben Prinzip wieder zurückgeschaltet. Die vielen PRINT-Kommandos in den Zeilen 60 und 140 bewirken dabei nichts anderes als einen einfachen Zeilenvorschub. Der Cursor bewegt sich also auf die nächste Zeile. Die Zeilen 150-190 stellen eine einfache Warteschleife dar.

Angewandt wurde hier der Befehl WHILE/WEND. Solange die nach dem WHILE stehende Bedingung erfüllt ist, arbeitet der Schneider bei jedem WEND in der nach dem WHILE-Kommando stehende Zeile weiter. Als Bedingung ist i < 2000 vorgegeben, das heißt bei jedem Schleifendurchlauf wird i jeweils um 1 erhöht, bis 2ÖOO erreicht ist (Zeiie 180). Spätestens nach 2000 Durchgängen erfolgt also kein Rücksprung mehr und es geht in Zeile 200 weiter. Es gibt allerdings auch noch eine andere Abbruchbedingung. Wenn Sie nämlich eine beliebige Taste drücken, wird durch den INKEY- Befehl in Zeile 160 2$ mit dem Tastenwert belegt und es erfolgt direkt aus Zeile 170 ein Aufruf von Zeile 200. Dann dauert es nicht mehr so lange, bis es im Programmtext weitergeht. Die Zeitverzögerung hat übrigens den Sinn, Ihnen Zeit zu geben, den Bildschirminhalt gründlich zu studieren. Im nachfolgenden Teil wird nun durch MODE 1 und die Definition von drei Bildschirmfenstern der Bildschirm gelöscht und völlig umgebaut. Ohne diese Zeitverzögerung wäre vom Titel nur ein kur2es Aufblitzen zu sehen.

Top-Window ist top

Der Rest unseres Programms arbeitet mit der neuen Bildschirmgestaltung. Drei Zeilen als Top-Window dienen dazu, Überschriften aufzunehmen. Im unteren Teil des Schirms wurden analog dazu drei Zeilen für die Eingabe reserviert (WINDOW #2). Der Hauptbildschirm (WINDOW #0) ist damit auf die mittleren 19 Zeilen beschränkt. Nachdem den einzelnen Bildschirmfenstern in Zeile 230 und 240 die Werte für Schrift* und Hintergrundfarbe zugeordnet wurden, geht es ins Auswahlmenü. Zunächst werden durch die CLS-Befehle die drei Bildschirmfenster gelöscht. Danach folgt die Ausgabe des Titels in der Mitte von Fenster 1. Anschließend erscheinen in der Mitte des Hauptbildschirms die einzelnen Routinen. Zeile 350 prüft, welche Wahl der Benutzer getroffen hat. Die Tastaturabfrage erfolgt mit INKEY$ und es wird festgestellt, ob überhaupt eine Taste gedrückt wurde. Ist dies nicht der Fall (Z$=" "), geht es direkt zurück an den Zeilenanfang. Dieses Spielchen wiederholt sich so lange, bis eine Taste betätigt wird. Dann überprüft ASC, ob eine gültige Zahl eingegeben wurde. Die vorherige Abfrage auf " ' ist dabei unbedingt notwendig. Die ASC-Funktion verkraftet nämlich keinen Leerstring. PRINT ASC(" ") hat einen 1MPROPER ARGUMENT-Fehler zur Folge. Nachdem die Eingabe auf Stimmigkeit überprüft wurde, wird in Abhängigkeit vom eingegebenen Wert zu einem der verschiedenen Unterprogramme verzweigt. Zeile 360 mit den verschiedenen GOSUB-Anweisungen bewirkt in unserem Lernprogramm die entsprechenden Verzweigungen.

Das erste Programm, auf das wir hierbei treffen, ist die Datei-Leseroutine. Säe beginnt bei Zeile 410. Ihr Ablauf ist schnell erklärt. Nach Ausgabe des Funktionstitels in Zeile 410 wird eine Datei zum Lesen geöffnet und dann als erstes die Variable md eingelesen, md steht für »maximale daten« und entspricht der Anzahl der abgespeicherten Bänder. Es wäre ja unsinnig, bei beispielsweise fünf erfaßten Datenträgern die Maximalzahl von 20 Dateien wegzuschreiben. ln einer doppelten Schleife werden dann alle benötigten Daten eingelesen , läuft dabei von 0 bis md, also über alle Bänder. Zunächst werden dabei in Zeile 440 der Name des Bandes und die Anzahl der abgespeicherten Titel auf diesem Band abgefragt. Danach folgt die j-Schleife, wobei j von 1 bis n(i,0), also wieder über alle Titel, läuft. Damit werden für jedes Band (i) alle Titel (j) eingelesen. Zwei NEXT-Befehle schließen diese Schleife ab. Die Lesedatei beendet CLOSEIN (dies ist unbedingt notwendig, damit man beim nächsten Laden keine Probleme bekommt), und es geht zurück ins Hauptmenü. Wenn Ihnen in diesem Programmteil noch irgend etwas unklar ist, so erhöhen Sie einmal die Schleifen-werte für I und j nacheinander und schauen sich an, was das zur Folge hat.

Die nächste Routine benötigt keinerlei Erklärungen, da sie ein Pendant der ersten darstellt. Sie haben nur in der oben beschriebenen Leseroutine alle INPUTs durch PRINT zu ersetzen und schon ist auch der Schreibteil fertig. Die Funktionsweise verläuft damit analog der ersten, nur ln der umgekehrten Richtung.

Nun kommen wir zu einem etwas größeren Programmteil - der Druckausgabe. Diese hält drei Routinen bereit. Man kann alle verfügbaren Bänder oder Programme ausdrucken, beispielsweise um eine Übersicht zu erhalten oder ein spezielles Band herauszugreifen. Den dazu benutzten Auswahlmechanismus kennen Sie bereits. Nach der Ausgabe des Funktionskopfes wird in einer INKEY$-Schleife (Zeile 680) die gewünschte Funktion festgestellt. »3« führt zurück ins Hauptmenü, Werte ungleich »1« und »2« zurück an den Zeilenanfang. Nun fällt die Entscheidung zwischen der Gesamtausgabe und dem Einzelbandausdruck an. Ab Zeile 700 sehen Sie die Funktionsweise. Zuerst kommt die Variante Gesamtaus-
druck an die Reihe, Es wird die Aufforderung zum Einschalten des Druckers ausgegeben und dann mit einer WHILE WEND-Schleife die Bestätigung abgewartet. Diese einfachste Kontroll-Abfrage mit WHILE/WEND ist sehr kurz und komfortabel.

Drucken mit Doppelschleife

Es folgt der eigentliche Druckteil, der Sie vielleicht ein wenig an den Teil zur Datenspeicherung beziehungsweise zum -lesen erinnert. Das Ausgabeprinzip geht weitgehend identisch vor sich. Mit Hilfe der schon bekannten i,j-Doppelschleife werden zuerst (in Zeile 730) der Bandtitel und die Anzahl der abgespeicherten Programme ausgegeben, dann mittels j die auf diesem Band abgespeicherten Programme. Vielleicht wundern Sie sich bei dieser Prozedur, warum alle Ausgaben mit PRINT#d getätigt werden. Dies hat einen einfachen Grund, d wird in Zeile 680 auf 8 gesetzt und lenkt damit den Ausdruck normalerweise auf das Gerät Nummer 8, den Drucker. Wenn Sie aber in dieser Zeile d=0 setzen, wird die Ausgabe auf den Hauptbildschirm umgeleitet. Sie brauchen beim Experimentieren und bei den ersten Laufversuchen mit diesem Programm dann nicht immer den Drucker einzuschalten und meterweise Papier bedrucken. Zeile 780 führt zurück ins Hauptmenü und beendet den Teil Gesamtausdruck.

Die folgenden Zeilen dienen dem gezielten Einzelausdruck. Zuerst muß der Computer wissen, was er überhaupt drucken soll. Dazu wird zunächst in Zeile 790 der Name des betreffenden Bandes, dessen Inhalt wir erfahren wollen, abgefragt. Es folgt eine kleine Suchroutine. Dabei wird Band für Band (über alle i von 0 bis md) überprüft, ob der eingegebene Name mit dem gespeicherten Bandtitel übereinstimmt. Da der CPC zwischen Groß-und Kleinschreibung unterscheidet, sind dabei sowohl der Suchbegriff als auch die zu vergleichenden Bandtitel in Kleinschrift zu konvertieren. Dazu dienen die LOWER$-Befehle in Zeile 790 und 810, wobei in der letztgenannten Zeile auch der eigentliche Vergleich stattfindet. Solange dieser negativ ausfällt, wird der nächste Bandtitel untersucht. Es gibt damit nun zwei Möglichkeiten, um nach Zeile 820 zu gelangen. Möglichkeit 1, es hat keine Übereinstimmung stattgefunden. In diesem Fall wird die FOR-NEXT-Schleife bis zum Ende abgearbeitet. Im zweiten Fall wurde Gleichheit festgestellt. Jetzt war die Ungleichheitsbedingung in Zeile 810 nicht mehr erfüllt und deshalb erfolgte auch kein NEXT mehr. Die Schleife wurde also nicht vollständig abgearbeitet.

Wir können nun den Zustand der Schleifenvariablen i benutzen, um zwischen den beiden Möglichkeiten zu unterscheiden. Nach Ausführung einer FOR-TO-Schleife weist die Schleifenvariable - in unserem Fall also i - einen um den STEP-Wert höheren Inhalt als die Schleifengrenze auf. Da wir kein STEP spezifiziert haben, i sich also in Schritten zu 1 erhöht, hat i in diesem Fall den Wert md+1, ist also größer als md. Wir können daher mit einer Abfrage wie in Zeile 820 feststellen, ob die Schleife bereits bis zum letzten NEXT bearbeitet wurde. Dann wird eine Negativmeldung ausgegeben und nach einer Zeitverzögerung ins Hauptmenü zurückgekehrt. Ansonsten enthält die Nummer des gesuchten Bandes in der Datei. Die Ausgabe des Bandtitels und der einzelnen Programmnamen geschehen dann wie bei der Gesamtdruckvariante mit Hilfe einer einfachen Schleife. Von besonderer Bedeutung ist in diesem Zusammenhang nur noch die Formatierung des Ausgabestrings in den Zeilen 760 und 870. Es sollen die Programmnummer, der Programmname und der zugehörige Zählerstand ausgegeben werden. Dazu benutzen wir die Funklion DEC$, die einen formatierten String aus einer Zahl erzeugt und die LEFT$-Funktion, die die Länge des auszugebenden Titels auf 22 Zeichen beschränkt. Hierzu noch eine Besonderheit: Der DEC$- Befehl wird aufgrund eines Betriebssystemfehlers beim CPC 464 nicht richtig bearbeitet. Man muß daher bei diesem Computertyp zwei Klammern öffnen, damit diese Funktion läuft. So ist DEC$ dann auch im Listing abgedruckt. Wenn Sie das Programm also auf einem 664 oder 6128 laufen lassen, müssen Sie die zweite Öffnungsklammer streichen. Bei diesen Computern wurde der Betriebssystem-Fehler behoben.

Mit der Druckroutine haben wir jetzt die Nebenprogramme abgeschlossen und kommen zum eigentlichen Kern unseres Programms, den Datenbear-beitungsroutinen. Aus dem Hauptmenü werden all diese Funktionen mit der Summer 3 aufgerufen. Da dies eine ganze Reihe ist, machte ein ganzes neues Menü mit Unterfunktionen erforderlich. Sie finden es ab der Zeile 630 im Listing. Alle Unterroutinen, mit denen wir uns nun beschäftigen, kehren zuerst einmal in dieses Menü zurück. Nur die Funktion 4 (Verlassen) führt zum eigentlichen Hauptmenü.

Ab Zeile 930 steht zunächst einmal die Ausgabe des Funktionstitels und des aktuellen Bandes auf dem Programm. Zeile 940 gibt dazu die Datei-Kummer und die Anzahl der in ihr enthaltenen Programmtitel aus, sowie den Dateinamen. Wichtig ist dabei die Variable ak. Sie enthält die Nummer des Bandes, mit dem momentan (aktuell) gearbeitet wird. Dementsprechend findet sich unter n$(ak,0) der Bandname, unter n(ak,0) die Anzahl der abgespeicherten Titel und so weiter. Nach der Titelausgabe wird das Inhaltsverzeichnis des aktuellen Bandes in einer Schleife ausgegeben (Zeile 960-990). Die Formatierung entspricht dabei der Druckroutine. Nachdem wir das gesamte Inhaltsverzeichnis auf dem Schirm haben, präsentiert Zeile 1000 das Menü. Die Abfragetechnik ist auch schon vom Hauptprogramm her bekannt: INKEY$-Schleife mit nachfolgendem »GOSUB-Sprungverteiler«. Zeile 1030 gibt nach der Rückkehr aus einem beliebigen Unterprogramm wieder an den Titelteil zurück. Das stellt sicher, daß, falls in einem Unterprogramm ein neues Band gewählt oder die alte Bildschirmausgabe zerstört wurde, diese vor jeder weiteren Abfrage erst einmal wieder restauriert beziehungsweise neu ausgegeben wird.

Sucken im »Untergrund«

Ab Zeile 1070 stoßen wir auf ein Unterprogramm. Es enthält zwei Routinen, zum Suchen nach einem bestimmten Bandnamen beziehungsweise einem bestimmten Programmtitel. Diese beiden Auswahtvarianten erscheinen zunächst in Fenster Nummer 2 durch Zeile 1070. Nachdem der Benutzer sich entschieden hat (Zeile 1080), wird der Name abgefragt und, nachdem er in Kleinbuchstaben konvertiert wurde, in n$ abgelegt. Je nach Suchmodus geht es dann in Zeile 1110 oder 1140 weiter. Den ersten Teil, die Suche nach dem Bandnamen, kennen wir bereits von der Druckroutine her. Ab 1140 sehen Sie dann, wie die Suche nach einem Programmtitel abläuft. Wir arbeiten wieder mit einer Doppelschleife, die über alle Bänder und Programme läuft. Jeder Programmtitel wird dabei mit dem Suchbegriff verglichen. Bei einer Übereinstimmung wird dabei ak auf den Schleifenwert i gesetzt. Dadurch erhält man nach der Rückkehr ins Menü »Daten bearbeiten« nun die Datei, die den Suchbegriff enthält, ausgegeben (Zeile 1160). Ansonsten führt eine Fehler-Meldung ohne Änderung von ak zurück (Zeile 1180). Durch Drücken von »2« im Menü »Daten bearbeiten« gelangt man in die Subroutine Blättern. Sie dient dazu, ohne Vorgabe von Bandnamen im Inhaltsverzeichnis herumzustöbern. Beim Vorwärts-Blättern wird das Band mit der Nummer ak+1, beim Rückwärts-Blättern das mit der Nummer ak-1 gezeigt. Bedingung dafür ist natürlich, daß die beschriebenen Bänder überhaupt existieren.

Im Grunde müßten wir zu dieser Funktion lediglich ak ändern, da die komplette Darstellung bereits durch das Uhtermenü erfolgt. Dies hätte jedoch einen Nachteil im Hinblick auf die Bedienerfreundlichkeit. Will man sich einen Eindruck über den aktuellen Programmbestand verschaffen, so erfordert das normalerweise, einige Bänder zu durchblättern. Bei einer direkten Rückkehr ins Untermenü »Daten bearbeiten« müßte bei jedem weiteren Blättern zuerst wieder die Unterfunktion »Blättern« aufgerufen werden, bevor man dann mit »vorwärts« oder »rückwärts« die Bewegungsrichtung festlegt. Deshalb beinhalten die Zeilen 1280 bis 1310 die Darstellungsroutine aus dem Untermenü noch einmal. Nachdem in den Zeilen 1260 und 1270 das neue ak bestimmt wurde, geben diese Zeilen das zugehörige Inhaltsverzeichnis aus. Danach geht es wieder zurück nach Zeile 1220.

Das nächste Unterprogramm dient zur Änderung des Bandinhaltes einer bereits erfaßten Datei. Diese Funktion macht es möglich, ein neu erfaßtes Programm, das man überschrieben hat, zu löschen. Entsprechend zu diesen Aufgaben gibt es auch einzelne Unterfunktionen. Man erreicht sie aus dem Unterprogramm »Ändern« über den Sprungverteiler in Zeile 1380. Die erste Funktion ist dabei das Löschen eines Eintrages. Zunächst wird gefragt (in Zeile 1430), welche Zeile des Inhaltsverzeichnisses gelöscht werden soll. Die Folgezeile überprüft, ob die angegebene Zahl überhaupt einen erlaubten Wert darstellt. Falls eine nicht existierende Zeilennummer gewählt wurde, so protestiert der CPC und kehrt ins aufrufende Programm zurück. Ansonsten aber beginnt ein munteres Verschiebespiel. Wenn wir eine Zeile löschen wollen, so geschieht dies, indem wir alle höherliegenden Programmtitel dieses Bandes um eine Position im Speicher nach unten verschieben. Der zu löschende Eintrag wird dadurch überschrieben. Nun müssen wir dafür sorgen, daß der Speicherplatz, an dem sich der oberste Programmtitel befand, gelöscht - so spart man Speicherplatz - und die Anzahl der Programmtitel (n(ak,0)} um 1 vermindert wird. Zeile 1450 sorgt für diese Verschiebung. 1460 setzt die Werte richtig, bevor man wieder in das Untermenü zurückgelangt.

Unter der Bezeichnung »Einfügen« finden Sie ab Zeile 1500 die Umkehrung der gerade beschriebenen Funktion. Zuerst muß dabei geprüft werden, ob noch Speicherplatz zur Verfügung steht. Die Maximalzahl von 15 Titeln darf also noch nicht überschritten sein. Dies übernimmt Zeile 1510. Wenn die Datei noch nicht voll belegt ist, wird festgestellt, ab welchem Titel die Einfügung stattfinden soll.

Nun gibt es zwei Arten. Zum einen kann es sein, daß hier eine Nummer eingegeben wurde, die höher als die bisherige Höchstgrenze liegt. Das kommt vor, wenn beispielsweise ein Programm angehängt wurde. In diesem Fall werden einfach der neue Programmtitel und der zugehörige Zählwerkstand abgefragt und in die ausgewählte Zeile eingetragen {Programmzeile 1550). Sonst erfolgt mit einer Schiebeschleife die Umordnung aller Titel mit höherer Zeilennummer (Zeile 1560), bevor dann auch hier Titel und Zählerstand eingelesen werden. In beiden Fällen ist dann aber immer noch die Gesamtzahl der abgespeicherten Programme zu ändern. Dazu erhöht sich n(ak,0) um 1 (Zeile 1580).

Nun kann es Vorkommen, daß man nur den Inhalt einer Zeile ändern will, ohne daß dabei gleich auch noch eine Verschiebung stattfinden muß. Der einfachste Rill ist ein Fehler bei der Eintragung, der korrigiert werden soll. Das Programm verfährt dann folgendermaßen: Die Zeile 1590 fragt die Register, in denen etwas geändert werden soll, ab. Danach wird in 1610 überprüft, ob überhaupt ein Eintrag vorhanden ist. Bei positiver Meldung erfolgen dann in den Zeilen 1620 und 1630 die notwendigen Änderungen.

Ein weiterer Programmpunkt im Menü ist die Funktion »Neuer Dateiname«. Hiermit kann man die Bezeichnung eines Bandes ändern. Bei Bedarf ist es auch möglich, alle alten Dateieinträge zu löschen. Eine einfache Löschschleife (Zeile 1710) leistet dies. Sie schließt auch die Beschreibung des Unterprogrammpunktes »Ändern« ab.

Ändern auf einen Schlag

Lästig ist es immer, mit Einzelfunktionen wie »Ändern« oder »Einfügen«, arbeiten zu müssen. Daher existiert im Hauptmenü noch der Unterpunkt 4. Er ermöglicht es, quasi im Schnelldurchgang, ein ganzes Bandinhaltsverzeichnis auf einen Schlag einzugeben. Ab Zeile 1760 sehen Sie, wie Ihr Schneider dabei vorgehen muß. In Zeile 1780 erhöht sich die Gesamtzahl der gespeicherten Bänder um 1. Voraussetzung dazu ist allerdings, daß noch Speicherplatz verfügbar ist, was aber Zeile 1770 überprüft. Danach wird die Nummer der aktuellen Datei (ak) mit der neuen Obergrenze gleichgesetzt. Dateiname sowie Anzahl und Titel der verschiedenen Dateien mit ihren Zählwerkständen werden abgefragt, ohne daß zwischendurch jeweils eine Rückkehr ins Hauptmenü stattfindet.

Den Schluß unseres Programms bildet eine Ende-Routine. Es stellt sich die Frage, wozu ein solcher Programmteil notwendig ist. Ein einfaches END tut es doch auch! Stellen Sie sich aber einmal vor, was passiert, wenn Sie ohne es zu wollen, im Hauptmenü einfach einmal auf 6 tippen. Und wenn sich Ihr Schneider dann »verabschiedet« und Ihre gerade erst neu erfaßte Datei unwiederbringlich verloren ist, dann wissen Sie, wozu diese Kontroll-Routine dient. Ein vernünftiges Programm sollte alle möglichen Einga befehler durch solche Kontrollen abfangen, damit der Benutzer nie in die Situation kommt, nicht mehr Weiterarbeiten zu können.

Soweit die Erläuterungen zu dem Programm »Band-Kartei«. Es wird Ihnen sicher gute Dienste leisten und für Ordnung sorgen.

Ein Punkt sei aber noch erwähnt. Das gerade beschriebene Programm ist bewußt allgemein gehalten. Es bietet sich also an, es auch für andere Datenverwaltungszwecke zu benutzen. Mit den dazu notwendigen Änderungen haben Sie nach dieser ausführlichen Beschreibung wohl auch keine Probleme mehr. Dafür sorgen auch die Parameter md und ak. So sollten Sie keine Schwierigkeiten haben, aus der Band-Kartei ein Speicherprogramm für Dias oder Musikkassetten zu formen. Hier und bei allen anderen Erweiterungen sind Sie nun selbst gefordert.

Carsten Straush/hl , Happy Computer

★ PUBLISHER: Happy Computer
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: HAPPY COMPUTER-SCHNEIDER SONDERHEFT
★ AUTHOR: Carsten Straush
 



★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Band-Kartei    (Happy  Computer)    LISTING    GERMANDATE: 2021-03-10
DL: 221
TYPE: PDF
SiZE: 1543Ko
NOTE: 2 pages/PDFlib v1.6

» Band-Kartei    (Happy  Computer-Sonderheft)    GERMANDATE: 2021-03-10
DL: 228
TYPE: ZIP
SiZE: 6Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Speedy Wonder
» Applications » Streifen-Script (CPC Amstrad International)
» Applications » Fill (Computing with the Amstrad)
» Applications » Schneider Basic Lehrbuchern Teil 1
» Applications » Curso de Basic I (Gosline)
» Applications » Agral-86
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop
Page créée en 000 millisecondes et consultée 845 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.