home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-03-19 | 73.5 KB | 1,097 lines |
- ╔════════════════════════════════════════════════════════════════╗
- ║ Befehlsübersicht: Standard-Befehle ║
- ╟─────────────┬──────────────────────────────────────────────────╢
- ║ Befehlsname │ Funktion ║
- ╟─────────────┼──────────────────────────────────────────────────╢
- ║ lauf │ Ausführen eines Interpreterprogramms im Speicher ║
- ║ drucke │ Ausgabe von Text oder Werten auf dem Terminal ║
- ║ setze │ Zuweisen eines Wertes an eine Variable ║
- ║ wenn │ Bedingte Programmausführung (siehe unten) ║
- ║ gehezu │ Programm an anderer Stelle fortführen ║
- ║ ende │ Ende eines Interpreterprogramms ║
- ║ merke │ Kommentar ║
- ║ liste │ Auflisten des Interpreterprogramms ║
- ║ neu │ Programm im Speicher löschen ║
- ║ lade │ Laden eines TXL-Quelltexts ║
- ║ speichere │ Speichern eines TXL-Quelltexts (ASCII-Format) ║
- ║ verlasse │ Verlassen des Interpreters ║
- ║ info │ Die Entstehungsgeschichte des TXL-Interpreters ║
- ╚═════════════╧═══════════════════════════════════════< weiter >═╝
- |
- ╔════════════════════════════════════════════════════════════════╗
- ║ Befehlsübersicht: Neue-Befehle ║
- ╟─────────────┬──────────────────────────────────────────────────╢
- ║ Befehlsname │ Funktion ║
- ╟─────────────┼──────────────────────────────────────────────────╢
- ║ hilfe │ Hilfe am Bildschirm anzeigen ║
- ║ dos │ Startet ein Dos-Programm oder Dos-Shell ║
- ║ setfarbe │ Stellt die Farbe ein für zeig,loesch,lese,box ║
- ║ zeig │ Positionierte Ausgabe auf dem Bildschirm ║
- ║ lese │ Positioniertes Einlesen einer Variable ║
- ║ loesch │ Ganzer Bildschirm oder Ausschnitt löschen ║
- ║ sbild │ Bildschirm in eine Variable sichern ║
- ║ rbild │ Bildschirm aus einer Var. wieder herstellen ║
- ║ attribut │ Wechselt die Farbe am Bildschirm ║
- ║ box │ Zeichnet eine Box an die angegebenen Koordin. ║
- ║ pause │ Wartet auf einen Tastendruck ║
- ║ iftaste │ Abfrage der letzten Taste von PAUSE und LESE ║
- ║ piep │ Erzeugt einen Piepton ║
- ╚═════════════╧═══════════════════════════════════════< weiter >═╝
- |
- ╔════════════════════════════════════════════════════════════════╗
- ║ Befehlsübersicht: Weitere neue Befehle Befehle Seite 3 ║
- ╟─────────────┬──────────────────────────────────────────────────╢
- ║ Befehlsname │ Parameter und Funktion ║
- ╟─────────────┼──────────────────────────────────────────────────╢
- ║ strdef │ <String-Var> <Länge> ║
- ║ │ Definition eines Strings mit bestimmter Länge ║
- ║ strset │ <String-Var> = <String> Stringzuweisung ║
- ║ strtoi │ <String(-var)> <Integer-Var> ║
- ║ │ Wandelt String in long um ║
- ║ itostr │ <Integer(-var)> <String-Var> ║
- ║ │ Wandelt long in String um ║
- ║ readln │ <String-Var> ║
- ║ │ Liest String von Tastatur ║
- ║ │ ║
- ║ randomize │ Initialisiet den Zufallszahlengenerator ║
- ║ random │ <Integer(-var)> <Integer-Var> ║
- ║ │ Setzt 2. Variable auf Zufallszahl, maximal ║
- ║ │ auf den Wert des ersten Parameters ║
- ╚═════════════╧═══════════════════════════════════════< weiter >═╝
- |
- ╔════════════════════════════════════════════════════════════════╗
- ║ Verweise auf weitere Befehlsgruppen Befehle Seite 4 ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Unterprogramm-Erstellung ║
- ║ blockbegin,blockend,gosub -> siehe <gosub> ║
- ║ ║
- ║ Stackverwaltung (push/pop) -> siehe <push> ║
- ║ ║
- ║ Gemischte Arrays ║
- ║ DefArrayElem, SetArrayElem, GetArrayElem ║
- ║ ║
- ║ Windows -> eigene Befehlsübersicht ║
- ║ Editor -> folgt nach der Fensterbefehl-Beschreibung ║
- ║ Datenbank -> 10 ausführliche Hilfsseiten ║
- ║ Präprozessor -> folgt nach der Datenbankbeschreibung ║
- ║ ║
- ║ Menüs -> siehe bei Windows ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ lauf<Return> ║
- ║ drucke "String";<Return> ║
- ║ drucke Variable;<Return> ║
- ║ setze Variable1 = Variable2;<Return> ║
- ║ setze Variable = (Formel);<Return> ║
- ║ wenn (Bedingung)<Return> ║
- ║ (Dann-Zweig)<Return> ║
- ║ (Sonst-Zweig)<Return> ║
- ║ gehezu Zeilennummer<Return> ║
- ║ ende<Return> ║
- ║ merke Kommentar<Return> ║
- ║ liste<Return> ║
- ║ neu<Return> ║
- ║ lade "Filename.Extension"<Return> ║
- ║ speichere "Filename.Extension"<Return> ║
- ║ verlasse<Return> ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <hilfe>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: HILFE ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ hilfe<Return> Zeigt die gesammte Hilfe an. ║
- ║ ║
- ║ hilfe BEFEHL<Return> ║
- ║ BEFEHL<F1> Zeigt die Hilfe zum angegebenen Befehl ║
- ║ F1 ║
- ║ ║
- ║ Hilfetext erweitern oder ändern : ║
- ║ ║
- ║ Der gesammte Hilfetext ist in der Datei "hilfe.txl" ║
- ║ gespeichert. ║
- ║ Die einzelnen Bildschirmseiten sind durch das Zeichen 124 ║
- ║ voneinander abgetrennt. ║
- ║ Um einen Befehl in den SUCH-INDEX aufzunehmen, ║
- ║ reicht es, den gewünschten Befehl nach einem Seitenzeichen ║
- ║ zwischen die Zeichen '<' und '>' zu schreiben. <neubef> ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <dos>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: DOS ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ dos<Return> Dos-Shell ║
- ║ ║
- ║ dos "BEFEHL"<return> Dosbefehl ausführen ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <setfarbe>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: SETFARBE ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ setfarbe n1 n2<Return> Bildschirmfarbe einstellen für ║
- ║ zeig, loesch und lese ║
- ║ ║
- ║ n1 : Vordergrund ║
- ║ n2 : Hintergrund ║
- ║ ║
- ║ Farben : ║
- ║ -------- ║
- ║ 0 schwarz ║
- ║ 1 blau ║
- ║ 2 grün ║
- ║ 3 türkis ║
- ║ 4 rot ║
- ║ 5 lila ║
- ║ 6 braun ║
- ║ 7 weiss ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <zeig>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: ZEIG ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ zeig n1 n2 "String"<Return> Positionierte ║
- ║ zeig n1 n2 Variable "MASKE"<Return> Bildschirmausgabe. ║
- ║ ║
- ║ n1 : Zeile ( 0-24 ) ║
- ║ n2 : Spalte ( 0-79 ) ║
- ║ "String" : Ausgabetext ║
- ║ Variable : Ausgabevariable ║
- ║ MASKE : Ausgabemaske ist nur bei Var-Ausgabe aktiv ! ║
- ║ ║
- ║ "99999999" Zahlen ║
- ║ "99999.99" Dezimalzahl ║
- ║ "XXXXXXXX" String ║
- ║ ║
- ║ Siehe auch <SETFARBE> ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <lese>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: LESE 1. Seite ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ lese n1 n2 Variable "MASKE"<return> Einlesen einer ║
- ║ Variable. ║
- ║ n1 : Zeile ( 0-24 ) ║
- ║ n2 : Spalte ( 0-79 ) ║
- ║ Variable : Variable, die eingelesen wird ║
- ║ MASKE : Siehe nächste Seite ║
- ║ "9999" Integer einlesen ║
- ║ "9.99" Dezimalzahl einlesen ║
- ║ "XXXX" String ║
- ║ "DD.DD.DDDD" Datum ║
- ║ ║
- ║ Mit diesen Tasten wird LESE beendet : ║
- ║ Return, ESC, Pfeiltasten rauf runter, ║
- ║ Seite auf ab, alle Funktionstasten. ║
- ║ ║
- ║ Siehe auch <SETFARBE> <IFTASTE> <nächste Seite> ║
- ╚═════════════════════════════════════════════════< weiter >═════╝
- |
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: LESE 2. Seite ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ MASKE : "99999999" Zahlen -1234567890 ║
- ║ "99999.99" Dezimalzahl -.1234567890 ║
- ║ "XXXXXXXX" String Alle Zeichen ║
- ║ "DD.DD.DD" Datum TT.MM.JJ ║
- ║ "DD.DD.DDDD" TT.MM.JJJJ ║
- ║ ║
- ║ Jedes Maskenzeichen ergibt eine Eingabestelle. ║
- ║ ║
- ║ ║
- ║ Sezial : "@X" = Maske wird automatisch Alle Zeichen ║
- ║ auf Stringlänge erstellt. ║
- ║ ║
- ║ "@D" = Maske wird automatisch TT.MM.JJJJ ║
- ║ auf Datumfeld erstellt. ║
- ║ ║
- ║ Siehe auch <SETFARBE> <IFTASTE> <vorherige Seite> ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <loesch>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: LOESCH ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ loesch ;<Return> Löscht den ganzen Bildschirm ║
- ║ loesch n1 n2 n3 n4 <Return> Löscht einen Ausschnitt ║
- ║ auf dem Bildschirm ║
- ║ ║
- ║ n1 : obere Zeile ( 0-24 ) ║
- ║ n2 : linke Spalte ( 0-79 ) ║
- ║ n3 : untere Zeile ( 0-24 ) ║
- ║ n4 : rechte Spalte ( 0-79 ) ║
- ║ ║
- ║ Bsp. ║
- ║ ║
- ║ loesch 10 5 20 40<Return> ║
- ║ ║
- ║ ║
- ║ Siehe auch <SETFARBE> ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <sbild>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: SBILD (Im ANSI-Modus nicht aktiv !) ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ sbild n1 n2 n3 n4 Str-Var<Return> Sichert den Bildschirm ║
- ║ des angegebenen ║
- ║ Fensters in Variable. ║
- ║ ║
- ║ n1 : obere Zeile ( 0-24 ) ║
- ║ n2 : linke Spalte ( 0-79 ) ║
- ║ n3 : untere Zeile ( 0-24 ) ║
- ║ n4 : rechte Spalte ( 0-79 ) ║
- ║ Str-Var : Variable vom Type STRING ║
- ║ Bsp. ║
- ║ ║
- ║ sbild 10 5 20 40 screen<Return> ║
- ║ ║
- ║ ║
- ║ Siehe auch <RBILD> ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <rbild>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: RBILD (Im ANSI-Modus nicht aktiv !) ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ rbild n1 n2 n3 n4 Str-Var<Return> Stellt den Bildschirm ║
- ║ aus einer Variablen ║
- ║ wieder her. ║
- ║ ║
- ║ n1 : obere Zeile ( 0-24 ) ║
- ║ n2 : linke Spalte ( 0-79 ) ║
- ║ n3 : untere Zeile ( 0-24 ) ║
- ║ n4 : rechte Spalte ( 0-79 ) ║
- ║ Str-Var : Variable vom Type STRING ║
- ║ Bsp. ║
- ║ ║
- ║ rbild 10 5 20 40 screen<Return> ║
- ║ ║
- ║ ║
- ║ Siehe auch <SBILD> ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <attribut>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: ATTRIBUT (Im ANSI-Modus nicht aktiv !) ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ attribut n1 n2 n3 n4 v h<Return> Stellt die Bildschirm- ║
- ║ farbe im angegebenen ║
- ║ Fenster um. ║
- ║ Die Zeichen auf den ║
- ║ Bildschirm werden ║
- ║ nicht verändert. ║
- ║ ║
- ║ n1 : obere Zeile ( 0-24 ) ║
- ║ n2 : linke Spalte ( 0-79 ) ║
- ║ n3 : untere Zeile ( 0-24 ) ║
- ║ n4 : rechte Spalte ( 0-79 ) ║
- ║ v : Vordergrundfarbe ( 0-7 ) (Farbtabelle ║
- ║ h : Hintergrundfarbe ( 0-7 ) bei SETFARBE) ║
- ║ ║
- ║ Siehe auch <SETFARBE> ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <box>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: BOX ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ box n1 n2 n3 n4 "Box-Str"<Return> Zeichnet eine Box ║
- ║ an die angegebenen ║
- ║ Koordinaten. ║
- ║ ║
- ║ n1 : obere Zeile ( 0-24 ) ║
- ║ n2 : linke Spalte ( 0-79 ) ║
- ║ n3 : untere Zeile ( 0-24 ) ║
- ║ n4 : rechte Spalte ( 0-79 ) ║
- ║ "Box-Str" : Variable vom Type STRING ║
- ║ ║
- ║ Boxstring "12345678#" ergibt 12222223 ║
- ║ 4######8 ║
- ║ 4######8 ║
- ║ "╔═╗║╝═╚║ " 76666665 ║
- ║ ║
- ║ Siehe auch <SETFARBE> ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <pause>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: PAUSE ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ pause<Return> Das Programm wartet auf einen Tasten- ║
- ║ druck. ║
- ║ ║
- ║ Siehe auch <IFTASTE> ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <iftaste>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Syntaxbeschreibung: IFTASTE ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ iftaste TASTENWERT<Return> Fragt den Tastenwert ab, ║
- ║ (Dann-Zweig)<Return> mit dem die Funktion ║
- ║ (Sonst-Zweig)<Return> PAUSE oder LESE verlassen ║
- ║ wurde. ║
- ║ ║
- ║ Tasten-Tabelle auf der nächsten Seite ! ║
- ║ ║
- ║ Siehe auch <PAUSE> <LESE> < nächste Seite > ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- ╔════════════════════════════════════════════════════════════════╗
- ║ Tastenwert-Tabelle für IFTASTE ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ Normal Shift Ctrl Alt ║
- ║ ------ ----- ---- --- ║
- ║ F1 9059 SF1 9084 CF1 9094 AF1 9104 ║
- ║ F2 9060 SF2 9085 CF2 9095 AF2 9105 ║
- ║ F3 9061 SF3 9086 CF3 9096 AF3 9106 ║
- ║ F4 9062 SF4 9087 CF4 9097 AF4 9107 ║
- ║ F5 9063 SF5 9088 CF5 9098 AF5 9108 ║
- ║ F6 9064 SF6 9089 CF6 9099 AF6 9109 ║
- ║ F7 9065 SF7 9090 CF7 9100 AF7 9110 ║
- ║ F8 9066 SF8 9091 CF8 9101 AF8 9111 ║
- ║ F9 9067 SF9 9092 CF9 9102 AF9 9112 ║
- ║ F10 9068 SF10 9093 CF10 9103 AF10 9113 ║
- ║ ║
- ║ Escape 9027 Page up 9073 ║
- ║ Return 9013 Page down 9081 ║
- ║ Pfeilrunter 9080 Pfeilrauf 9072 ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <info>
- ╔════════════════════════════════════════════════════════════════╗
- ║ TXL, die "toolbox language", ist ein nach allen Seiten ║
- ║ offenes Interpreterkonzept für PC und Atari-ST. ║
- ║ Jedem C-Programmierer wird es damit möglich, sich seine ║
- ║ eigene Sprache zu gestalten. ║
- ║ Neben der Verwendung der TXL für Schulungszwecke lassen ║
- ║ sich auch hervorragend rechnerunabhängige Anwendungen ║
- ║ realisieren. Einzige Voraussetzung ist ein ANSI-C ║
- ║ Compiler. ║
- ║ Das Grundgerüst für den TXL-Interpreter wurde in der ║
- ║ Zeitschrift toolbox, Heft 9/10'1990 vorgestellt. ║
- ║ Wesentliche Erweiterungen sowie eine Windows-Version ║
- ║ wurden im Rahmen eines Wettbewerbs in der toolbox 04'91 ║
- ║ veröffentlicht. ║
- ║ Bezogen werden kann der aktuelle Grundinterpreter als ║
- ║ toolbox-Special 20. ║
- ║ Bestellungen richten sie bitte an den DMV-Verlag ║
- ║ Postfach 250 ║
- ║ 3440 Eschwege ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <gosub>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Unterprogramme ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Unterprogramme werden mit den Befehlen 'blockbegin' am Anfang ║
- ║ und 'blockend' am Ende gekennzeichnet. Mit 'gosub <zeile>' ║
- ║ wird ein Unterprogramm aufgerufen. Zur Namensgebung lassen ║
- ║ sich Variablen verwenden. ║
- ║ ║
- ║ Beispiel : ║
- ║ ║
- ║ 010 setze SUB = 100; ║
- ║ 020 gosub SUB ║
- ║ 030 gehezu 200 ║
- ║ 100 blockbegin ║
- ║ 110 drucke " Hier Unterprogramm. " ║
- ║ 120 blockend ║
- ║ 200 merke Programmende ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <DefArray>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Arrays ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Mit "DefArray" definierte Arrays können jeden Datentyp - außer ║
- ║ weitere Arrays - als Elemente enthalten, auch gemischte ║
- ║ Arrays (verschiedene Typen in einem Array) sind möglich. ║
- ║ ║
- ║ Mit "DefArray" muß das Array zuerst definiert werden. ║
- ║ ║
- ║ ║
- ║ Syntax : DefArray <name> : <dim1> [,dim2] [,dim3] ║
- ║ ║
- ║ Beispiel : DefArray quadrat : 10,10 ║
- ║ (definiert ein 10*10 Felder großes Array) ║
- ║ ║
- ║ Mit DefArray könnten Arrays auch redefiniert werden, da aber ║
- ║ Speicher verloren geht, wenn bereits Werte in das Array ein- ║
- ║ getragen sind, ist von der Redefinition abzuraten. ║
- ║ ║
- ╚══════════════════════════════════════════════════════<weiter>══╝
- |
- <SetArrayElem>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Arrays : "SetArrayElem" ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Syntax : SetArrayElem <name> (dim1 [,dim2[,dim3]]) = <wert> ║
- ║ ║
- ║ Setzt ein Arrayelement an der Stelle (dim1,dim2,dim3), wobei ║
- ║ <wert> ein einfacher Typ (Fließkomma, Ganzzahl oder Zeichen) ║
- ║ oder ein String sein kann. ║
- ║ ║
- ║ Beispiel : SetArrayElem quadrat (4,4) = zahl ║
- ║ ║
- ║ Anmerkungen : ║
- ║ - Hinter dem "=" muß eine Variable stehen, Direktwerte sind ║
- ║ nicht erlaubt. ║
- ║ - Die Numerierung der Elemente beginnt bei 0 ║
- ║ - vollständiges Beispiel auf nächster Seite ║
- ║ ║
- ╚══════════════════════════════════════════════════════<weiter>══╝
- |
- <GetArrayElem>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Arrays : "GetArrayElem" ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Syntax : GetArrayElem <name> (dim1 [,dim2[,dim3]]) -> <wert> ║
- ║ ║
- ║ Speichert das Element an der Stelle (dim1,dim2,dim3) in <wert>.║
- ║ <wert> muß den Typ des Elements haben. ║
- ║ ║
- ║ Beispiel : DefArray quadrat : 10,10 ║
- ║ setze string = "Ein String im Array " ║
- ║ setze zahl = 100; ║
- ║ SetArrayElem quadrat (0,0) = string ║
- ║ SetArrayElem quadrat (0,1) = zahl ║
- ║ GetArrayElem quadrat (0,0) -> string2 ║
- ║ GetArrayElem quadrat (0,1) -> zahl2 ║
- ║ drucke string2 ║
- ║ drucke zahl2 ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <push>
- ╔════════════════════════════════════════════════════════════════╗
- ║ Integer-Stack ║
- ╟────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Mit den Befehlen "push" und "pop" ist der Stack, auf dem nur ║
- ║ Ganzzahl-Variablen (long) gespeichert werden können. ║
- ║ ║
- ║ Die Größe des Stacks ist nur durch den freien Heap begrenzt. ║
- ║ Der Stack läßt sich gut zur Rückgabe von Funktionswerten ║
- ║ in Unterprogrammen oder zur Parameterübergabe benutzen. ║
- ║ ║
- ║ Syntax : push <var oder Konstante> ║
- ║ pop <var> ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════╝
- |
- <window>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Das Window-System (c) 1991 toolbox ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ Das Windowsystem für TXL erlaubt soviele Fenster, wie der Heap aufnehmen ║
- ║ kann. Einen ersten Überblick gibt die Kurzbeschreibung der Befehle: ║
- ║ ║
- ║ openwindow Fenster öffnen und Farben definieren ║
- ║ closewindow Oberstes Fenster schließen ║
- ║ setcursor Cursor relativ zum Fenster positionieren ║
- ║ newfirstwindow Verdecktes Fenster nach vorne bringen ║
- ║ newwindowkoor Neue Koordinaten für oberstes Fenster ║
- ║ resizewindow Ändern der Größe des obersten Fensters ║
- ║ movewindow Verschieben " " " ║
- ║ winreadstring String in neuem Fenster einlesen (mit Informationszeile) ║
- ║ winmessage Ausgabe einer Meldung in einem Fenster ║
- ║ winwrite Schnelle Stringausgabe im ob. Fenster ║
- ║ ║
- ╚═══════════════════════════════════════< genaue Beschreibung folgt ... >════╝
- |
- <openwindow>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Neue Fenster öffnen Das Window-System 1 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ Syntax ║
- ║ ║
- ║ openwindow <x1> <y1> <x2> <y2> <f1> <f2> <f3> <f4> [num] ║
- ║ ║
- ║ Die linke obere Ecke wird mit x1/y1, die rechte untere mit x2/y2 ║
- ║ angegeben. Es folgen vier Farbangaben : ║
- ║ ║
- ║ f1 : Farbe des Rahmens ║
- ║ f2 : Farbe des Inneren ║
- ║ f3 : Farbe für Überschrift (für Editor) ║
- ║ Überschriften für Nicht-Editor-Fenster können mit "winwrite" ║
- ║ erzeugt werden. ║
- ║ f4 : Farbe der Statuszeile (siehe f3) ║
- ║ ║
- ║ Im optionalen Parameter [num] wird die Fensternummer des neuen Fensters ║
- ║ gespeichert. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <resizewindow>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Fensterkoordinaten ändern Das Window-System 2 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Der allgemeine Befehl zum Ändern der Fensterkoordinaten (des obersten ║
- ║ Fensters) ist ║
- ║ ║
- ║ newwindowkoor <x1> <y1> <x2> <y2>. ║
- ║ ║
- ║ Die Parameternamen sprechen für sich. ║
- ║ ║
- ║ Nur Breite und Höhe bzw. Position ändern folgende Befehle : ║
- ║ ║
- ║ (1) resizewindow <rel-x> <rel-y> ║
- ║ (2) movewindow <rel-x> <rel-y> ║
- ║ ║
- ║ Bei (1) wird die rechte untere Ecke um relx/rely verschoben, bei (2) ║
- ║ das gesamte Fenster. (Da keine negativen Werte möglich sind, muß ║
- ║ "newwindowkoor" benutzt werden, um negative Werte zu ersetzen.) ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <winmessage>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ "Automatische Fenster" Das Window-System 3 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ winmessage <string> Gibt den <string> und die Aufforderung, eine Taste ║
- ║ zu drücken in einem zentrierten Fenster aus, das ║
- ║ nach einem Tastendruck wieder geschlossen wird. ║
- ║ ║
- ║ winreadstr <frage> <str-var> <laenge> ║
- ║ ║
- ║ Gibt in einem zentrierten Fenster <frage> aus und ║
- ║ liest einen String in <str-var> ein. Das Fenster ║
- ║ wird wieder geschlossen. <laenge> gibt an, wie ║
- ║ lang das Eingabefeld minimal sein soll. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <winwrite>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ weitere Window-Befehle Das Window-System 4 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ closewindow Schließt das oberste Fenster ║
- ║ ║
- ║ newfirstwindow <num> Das Fenster <nr> (siehe Openwindow) wird neues ║
- ║ oberes Fenster (behält aber seine Nummer) ║
- ║ ║
- ║ winwrite <x> <y> <a> <str> Schreibt <str> mit dem Farbattribut <a> an ║
- ║ die Position x/y des oberen Fensters. ║
- ║ 0/0 gibt die linke obere Ecke des Rahmens an. ║
- ║ ║
- ║ setcursor <x> <y> Setzt den Cursor an x/y (oberes Fenster) ║
- ║ ║
- ║ "winwrite" und "setcursor" funktionieren auch ohne geöffnetes Fenster. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <menue>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Pulldown- und Auswahlmenüs 1 von 2 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Die hier implementierten Pulldownmenüs werden mit den Cursortasten ge- ║
- ║ steuert, und mit <ESC> verlassen. Die Auswahlmenüs werden nach der Auswahl ║
- ║ eines Punktes mit <Return> geschlossen. Beide Formen öffnen kein Fenster, ║
- ║ dieses muß also vorher geöffnet werden. Dadurch hat man aber die freie ║
- ║ Wahl in der Farbe und Position des Menüs und die Menü-Parameterzeile wird ║
- ║ nicht zu lang. Der Auswahlbalken wird in der Rahmenfarbe dargestellt. ║
- ║ ║
- ║ Syntax : ║
- ║ ║
- ║ auswahl <punkt1> <punkt2> ... <punkt n> ║
- ║ menue <punkt1> <uprog1> ... <punkt n> <uprog n> ║
- ║ ║
- ║ Beschreibung wird auf nächster Seite fortgesetzt. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Pulldown- und Auswahlmenüs 2 von 2 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Der "menue"-Befehl ruft im Gegensatz zum "auswahl"-Befehl nach jeder Wahl ║
- ║ eines Menüpunktes ein Unterprogramm, das durch seine Zeilennummer in den ║
- ║ Parametern <uprog x> angegeben ist, auf. Nach Ausführung des Unter- ║
- ║ programms wird die Menüschleife solange weiter durchlaufen, bis <ESC> ║
- ║ gedrückt wird. Das Unterprogramm kann natürlich auch aus einer Zeile ║
- ║ bestehen, wenn kein "blockbegin" angegeben ist. ║
- ║ ║
- ║ Der "auswahl"-Befehl wird nach Auswahl eines Punktes beendet und legt die ║
- ║ Nummer des ausgewählten Punktes auf den Stack (erster Punkt : 1), so daß ║
- ║ sie mit pop <xxx> ausgelesen werden sollte. ║
- ║ ║
- ║ Hinweis : Das Fenster für die Menüs muß nach Beenden des Menüs wieder ║
- ║ explizit geschlossen werden. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <edit>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Das Editor-System (c) 1991 toolbox ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ Das Editorsystem für TXL erlaubt 10 Editoren, die gleichzeitig ║
- ║ verschiedene Dateien bearbeiten können und eine Schnittstelle zu TXL ║
- ║ besitzen, d.h. (fast) jede Editorfunktion kann durch einen TXL-Befehl ║
- ║ simuliert werden. Da 50 Hotkeys für die Editoren in TXL auf Unterprogramme ║
- ║ gelegt werden können (Alt/Shift/Ctrl-F1-F10, F1-F10, Alt0-Alt9) können ║
- ║ so Makros programmiert werden. ║
- ║ ║
- ║ Im Direktmodus bearbeitet "edit" das aktuelle Programm, speichert es ║
- ║ am Ende unter "AKTUELL.TXL" und läd es in den Interpreter. ║
- ║ ║
- ║ "edit <file>" läd eine bestimmte Datei, die explizit gesichert ║
- ║ werden muß (z.B. edit "Programm.TXL"). ║
- ║ ║
- ╚═══════════════════════════════════════< Übersichttafeln folgen ... >═══════╝
- |
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Editorbefehle beim Editieren Der Editor 1 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ Funktionsnr Hotkey ║
- ║ 10 INS ║
- ║ 11 DEL ║
- ║ 12 Backspace ║
- ║ 13 Return ║
- ║ 14 Ctrl-Y Zeile löschen ║
- ║ 15 Ctrl-Left Wort links ║
- ║ 16 Ctrl-Right Wort rechts ║
- ║ 17 Ctrl-B Blockbeginn setzen ║
- ║ 18 Ctrl-E Blockende setzen ║
- ║ 19 Ctrl-C Block kopieren ║
- ║ 20 Ctrl-D Block löschen ║
- ║ 21 Ctrl-V Block verschieben ║
- ║ 22 Ctrl-R Block von Diskette lesen ║
- ║ 24 Ctrl-W Block auf Diskette schreiben ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <edfunction>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Editorbefehle beim Editieren Der Editor 2 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ Funktionsnr Hotkey ║
- ║ 23 Ctrl-S Datei speichern ║
- ║ 25 Home Cursor an Deteianfang ║
- ║ 26 End Cursor an Textende ║
- ║ 30 Alt-R Fenster mit Cursortasten in Größe ändern ║
- ║ 31 Alt-M Fenster mit Cursortasten verschieben ║
- ║ 32 Alt-Z Fenster zoomen, d.h. auf ganzen Bildschirm ausdehnen║
- ║ -- Ctrl-T Aufruf des Präprozessors ║
- ║ 0 Eingabe eines Zeichens ║
- ║ 1,2,3,4 Simulieren der ║
- ║ 5,6,7,8,9 Cursortasten ║
- ║ ║
- ║ Der TXL-Befehl "edfunction <Ed-Nr> <Func-Nr> <Char>" führt die ║
- ║ Funktionsnummer <Func-Nr> im Editor <Ed-Nr> aus. <Char> ist bei Funktion ║
- ║ 0 der ASCII-Code des Zeichens, das eingefügt werden soll. (Über Makros ║
- ║ sind so auch die unteren Zeichen des Zeichensatzes ansprechbar.) ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <initeditor>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Editorbefehle für TXL Der Editor 3 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ Grundsätzlich ist ein Editor nicht an ein bestimmtes Fenster gebunden; ║
- ║ die Ausgaben der Editorfunktionen finden immer im obersten Fenster statt. ║
- ║ Da insgesamt 10 Editoren zur Verfügung stehen (Nummer 0 bis 9), ist der ║
- ║ erste Parameter der meisten Editor-Befehle die Nummer des angesprochenen ║
- ║ Editors. Zuerst wird ein Editor mit ║
- ║ ║
- ║ initeditor <nummer> [file] ║
- ║ ║
- ║ initialisiert. Der optionale Parameter [file] hat den selben Zweck, wie ║
- ║ [file] beim "edit"-Befehl. Wird er weggelassen, so läd der Editor das ║
- ║ TXL-Programm. Der Befehl ║
- ║ ║
- ║ editorproc <nummer> ║
- ║ ║
- ║ veranlaßt den Editor <nummer>, solange Benutzereingaben zu bearbeiten, ║
- ║ bis <ESC> oder <Ctrl>-T gedrückt wird. Der Editor wird durch diese ║
- ║ Eingaben nicht automatisch geschlossen (im Unterschied zu "edit"). ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <closeeditor>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Editorbefehle für TXL Der Editor 4 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Soll der vom Editorinhalt belegte Speicher freigegeben werden, so ist der ║
- ║ Befehl ║
- ║ ║
- ║ closeeditor <nummer> ║
- ║ ║
- ║ anzuwenden. Dieser Befehl speichert nur, wenn das aktuelle TXL-Programm ║
- ║ geladen ist, und dann in die Datei "aktuell.txl". ║
- ║ Für Fälle, in denen es notwendig wird, den Fensterinhalt für einen Editor ║
- ║ neu darzustellen, ist die Anweisung ║
- ║ ║
- ║ showeditor <nummer> ║
- ║ ║
- ║ gedacht. Sie ist aber nicht erforderlich, wenn der Text mit "editorproc" ║
- ║ bearbeitet wird. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <setfkey>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Editorbefehle für TXL Der Editor 5 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Die Belegung der Hotkeys, die für alle Editoren gleichzeitig gelten, wird ║
- ║ von ║
- ║ ║
- ║ setfkey <taste> <zeile> ║
- ║ ║
- ║ übernommen. Die Zeile mit der Nummer <zeile> wird angesprungen, wenn die ║
- ║ angegebene Taste gedrückt wird. Steht in dieser Zeile ein "blockbegin", ║
- ║ so wird natürlich der darauf folgende Block ausgeführt. Die Angabe "0" ║
- ║ bei <zeile> bewirkt die Löschung der Hotkey-definition für <taste>. ║
- ║ <taste> kann folgende Werte haben : ║
- ║ ║
- ║ 1-10 : F1-F10 31-40 : Alt-F1-F10 ║
- ║ 11-20 : Shift-F1-F10 41-50 : Alt-1 bis Alt-0 ║
- ║ 21-30 : Ctrl-F1-F10 ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <insertstring>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Editorbefehle für TXL Der Editor 6 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ Neben der Funktion 0 von "edfunction", die einzelne Zeichen in den Editor ║
- ║ eingibt, existiert auch eine Funktion, die Strings in den Editor eingibt: ║
- ║ ║
- ║ insertstring <editornr> <str> ║
- ║ ║
- ║ Außer dem String / der Stringvariablen wird als erster Parameter die ║
- ║ Editornummer erwartet. ║
- ║ ║
- ║ Das Lesen des Editors in TXL-Programmen kann wort- oder zeilenweise ║
- ║ erfolgen : ║
- ║ ║
- ║ getedword <editornr> <str-var> ║
- ║ getedstring <editornr> <str-var> ║
- ║ ║
- ║ Bei "getedword" muß der Cursor auf dem Anfang des Wortes stehen, bei ║
- ║ "getedstring" wird die gesamte Zeile in <str-var> gespeichert. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Das Datenbankmodul (c) 1991 toolbox ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Der Aufbau der Datenfelder ist frei wählbar und wird in einer Datei mit ║
- ║ der Endung ".def" gespeichert, sobald einmal definiert. Die Daten werden ║
- ║ in gleichnamige Dateien, jedoch mit der Endung ".dat" geschrieben. Als ║
- ║ Datenfeldtypen stehen Zeichenfelder mit frei definierbarer Länge und ║
- ║ Integerfelder zur Verfügung. Die Sortierung der Daten erfolgt bei den ║
- ║ Strings in einem binären Baum, was aber für die Programmierung in TXL ║
- ║ nicht von Bedeutung ist. Die vielfältigen Möglichkeiten beim Suchen von ║
- ║ Datensätzen und sonstigen Funktionen werden auf den folgenden Seiten ║
- ║ beschrieben. ║
- ║ ║
- ║ Bei den Befehlen des Datenbankmoduls ist die Groß/Kleinschreibung zu ║
- ║ beachten. ("UnMarkAll" liest sich besser als "unmarkall".) ║
- ║ ║
- ║ Es können gleichzeitig 3 Datenbanken geöffnet werden, daher haben die ║
- ║ meisten Datenbankfunktionen einen Parameter <dbnr>, für den Werte von ║
- ║ 0 bis 2 erlaubt sind. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <DefDB>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Erstellen und Öffnen einer Datenbank Das Datenbankmodul 1 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ Zuerst muß der Aufbau eines Datensatzes definiert werden. Dazu wird für ║
- ║ jedes Datenfeld die Funktion ║
- ║ ║
- ║ DefDB <dbnr> <int?> <strlen> ║
- ║ ║
- ║ aufgerufen. <int?>=1 zeigt an, daß es sich um ein Integerfeld handelt, der ║
- ║ Parameter <strlen> muß vorhanden sein, sein Wert bedeutet aber in diesem ║
- ║ Fall nichts. Wenn <int?>=0 ist, wird ein Stringfeld mit der Länge <strlen> ║
- ║ erstellt. Der Parameter <dbnr> gibt die Nummer der Datenbank an (0 bis 2). ║
- ║ Die Feldnummer wird automatisch ermittelt: Der erste Aufruf definiert ║
- ║ Feld 1, maximal 20 Felder sind möglich. ║
- ║ Ist die Definition vollständig, muß sie mit ║
- ║ ║
- ║ CreateDB <dbnr> <name> ║
- ║ ║
- ║ gespeichert werden. Dabei werden die Dateien "<name>.def" und "<name>.dat" ║
- ║ neu erzeugt und dabei gelöscht, falls sie schon vorhanden sind. ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <OpenDB>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Öffnen und Schließen einer Datenbank Das Datenbankmodul 2 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Eine mit "CreateDB" erstellte Datenbank kann mit ║
- ║ ║
- ║ OpenDB <dbnr> <name> ║
- ║ ║
- ║ wieder geöffnet werden. Die Definition wird dabei automatisch geladen, ║
- ║ die Anwendung von "DefDB" ist hier also nicht nötig. ║
- ║ ║
- ║ Nach der Bearbeitung wird die Datenbank mit ║
- ║ ║
- ║ CloseFile <dbnr> ║
- ║ ║
- ║ geschlossen. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <WriteDB>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Datenspeicherung Das Datenbankmodul 3 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Das Beschreiben eines Datensatzes erfolgt für jedes Feld einzeln mit dem ║
- ║ Befehl ║
- ║ ║
- ║ WriteDB <dbnr> <feldnr> <str> <int> ║
- ║ ║
- ║ In das Feld <feldnr> des aktuellen Datensatzes der Datenbank <dbnr> wird ║
- ║ entweder der String <str>, oder der Integer <int> geschrieben, je nach ║
- ║ Feldtyp. Beide Parameter müssen angegeben werden. Besonders günstig ║
- ║ ist die Dateneingabe mit Hilfe des Editors, wie im Beispielprogramm ║
- ║ demonstriert wird. Mit "AddDB" wird der aktuelle Datensatz auf Diskette ║
- ║ gespeichert. Syntax : AddDB <dbnr> ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <ReadDB>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Das Lesen der Daten Das Datenbankmodul 4 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ Analog zum Beschreiben eines Satzes funktioniert das Auslesen : ║
- ║ ║
- ║ ReadDB <dbnr> <feldnr> <str> <int> ║
- ║ ║
- ║ liest das Feld <feldnr> und speichert den Inhalt je nach Typ entweder in ║
- ║ <str> oder <int>. ║
- ║ ║
- ║ Zur Formatierten Ausgabe bessert geeignet ist folgender Befehl: ║
- ║ ║
- ║ ReadDBForm <dbnr> <feldnr> <str> ║
- ║ ║
- ║ gibt in jedem Fall einen String zurück, der auf die Maximale Länge des ║
- ║ Feldes ausgedehnt ist (linksbündig ausgerichtet), und sich so gut für ║
- ║ Tabellen eignet. Integerwerte werden in einen sechs Zeichen langen String ║
- ║ umgewandelt. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <GotoBegin>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Bewegung innerhalb der Datenbank Das Datenbankmodul 5 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Nach der Öffnung befindet sich als aktueller Datensatz ein neuer Satz im ║
- ║ Speicher, der hinter allen bisher gespeicherten Datensätzen in der Datei ║
- ║ gespeichert wird. Um den aktuellen Datensatz zu ändern, existieren, außer ║
- ║ den Datensuchbefehlen, folgende Befehle : ║
- ║ ║
- ║ Befehl Zielposition ║
- ║ ║
- ║ GotoBegin <dbnr> erster Datensatz der Datei ║
- ║ GotoEnd <dbnr> ein Satz hinter dem letzten (neuer Satz) ║
- ║ GoForward <dbnr> einen Satz weiter ║
- ║ GoBackward <dbnr> einen Satz zurück, Richtung Dateianfang ║
- ║ GoTo <dbnr> <filepos> Dateiposition (Byte Nr.) <filepos> ║
- ║ GoToNr <dbnr> <satznr> Datensatz Nummer <satznr> ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <MarkCurrent>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Löschen von Datensätzen Das Datenbankmodul 6 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Der aktuelle Datensatz wird durch ║
- ║ ║
- ║ MarkCurrent <dbnr> <val> ║
- ║ ║
- ║ mit <val> markiert. <val> ungleich 0 bedeutet Löschen. ║
- ║ ║
- ║ DelMarked <dbnr> ║
- ║ ║
- ║ löscht alle markierten Datensätze physikalisch in der Datei. ║
- ║ Die Markierung kann entweder mit "MarkCurrent <dbnr> 0" für einen ║
- ║ speziellen Satz, oder mit ║
- ║ ║
- ║ UnMarkAll <dbnr> ║
- ║ ║
- ║ für alle markierten Sätze rückgängig gemacht werden. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <SearchDB>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Suchen ohne Baum Das Datenbankmodul 7 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Zur Suche mit komplexen Bedingungen ist der Befehl ║
- ║ ║
- ║ SearchDB <dbnr> <test> <ausg> ║
- ║ ║
- ║ gedacht. Er geht die Datenbank Satz für Satz durch und ruft für jeden Satz ║
- ║ das Unterprogramm ab der Zeile <test> auf. Dieses kann mit "ReadDB" den ║
- ║ aktuellen Satz auf verschiedene Bedingungen testen und ruft "GefundenOK" ║
- ║ ohne Parameter auf, falls der Datensatz den gewünschten Bedingungen ║
- ║ entspricht. Ist dies der Fall, so ruft "SearchDB" das Unterprogramm <ausg> ║
- ║ auf, das die Bearbeitung oder Ausgabe des Satzes übernimmt. In beiden ║
- ║ Unterprogrammen kann die Suche mit dem parameterlosen Befehl "StopSearch" ║
- ║ beendet werden. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <MakeTree>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Sortieren Das Datenbankmodul 8 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Jede der Datenbanken kann für eines der Zeichenfelder einen binären Baum ║
- ║ zur Sortierung aufbauen. Dies wird durch den Befehl ║
- ║ ║
- ║ MakeTree <dbnr> <feldnr> ║
- ║ ║
- ║ veranlaßt. Für das (String-)Feld <feldnr> baut die Datenbank <dbnr> einen ║
- ║ Baum auf. Dieser kann mit ║
- ║ ║
- ║ DelTree <dbnr> ║
- ║ ║
- ║ explizit wieder gelöscht werden, was aber automatisch geschieht, wenn ║
- ║ erneut "MakeTree" für dieselbe Datenbank aufgerufen wird. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <PassTree>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Nutzung des sortierten Baumes Das Datenbankmodul 9 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ Die Funktion "PassTree" geht ebenso wie "SearchDB" die gesamte Datenbank ║
- ║ durch, jedoch in der Reihenfolge, die durch den Baum vorgegeben ist. Für ║
- ║ jeden Datensatz wird wieder eine Test- und dann je nach Ergebnis eine ║
- ║ Bearbeitungs-/Ausgaberoutine aufgerufen. Die Syntax ist demnach dieselbe ║
- ║ wie bei "SearchDB" : ║
- ║ ║
- ║ PassTree <dbnr> <test> <ausg> ║
- ║ ║
- ║ Zum direkten Auffinden eines Datensatzes eignet sich der Befehl: ║
- ║ ║
- ║ SearchTree <dbnr> <ERGEBNIS> <str> ║
- ║ ║
- ║ Er sucht <str> im Baum (<str> muß also in einem Feld stehen, daß im Baum ║
- ║ sortiert wurde) und gibt die Dateiposition des gefundenen Satzes in ║
- ║ <ERGEBNIS> zurück. Der Wert 1 Milliarde bedeutet, daß der Satz nicht ge- ║
- ║ funden wurde. Die Position ist mit "GoTo", nicht mit "GoToNr" direkt an- ║
- ║ steuerbar, sie wird auch automatisch gesetzt, wenn <str> gefunden wurde. ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- <ListTree>
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Ausgabe des sortierten Baumes Das Datenbankmodul 10 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ Um eine einfache Baumausgaberoutine handelt es sich bei: ║
- ║ ║
- ║ ListTree <dbnr> ║
- ║ ║
- ║ Der Bauminhalt wird (sortiert) wie mit "drucke" ausgegeben, also nicht in ║
- ║ irgendein Fenster. ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝
- |
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Der Präprozessor (c) 1991 toolbox 1 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ Der Präprozessor wandelt ein Programm im Editor in ein TXL-ausführbares ║
- ║ Programm um. Er wird mit Ctrl-T im Editor aufgerufen. Nach Drücken dieser ║
- ║ Tastenkombination wird das Programm automatisch gespeichert, mit dem Prä- ║
- ║ prozessor in die Datei "AKTUELL.TXL" umgewandelt und automatisch in den ║
- ║ Programmspeicher eingelesen. ║
- ║ ║
- ║ Die Verbesserungen durch den Präprozessor sind : ║
- ║ - Wegfall der Zeilennumern am Anfang jeder Zeile ║
- ║ - Ansteuerung von Unterprogrammen und Programmzeilen (gehezu und gosub) ║
- ║ mit Namen statt mit Zeilennummern ║
- ║ - Einführung von Bezeichnern für Konstanten, die vom Präprozessor ║
- ║ automatisch eingesetzt werden. ║
- ║ - Leerzeilen sind möglich ║
- ║ ║
- ║ Sowohl Programmzeilenbezeichnungen, als auch Konstanten können auch nach ║
- ║ ihrer ersten Bezeichnung noch definiert werden. ║
- ║ ║
- ╚══════════════════════════════════════════════════════════════< weiter >════╝
- |
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Die Präprozessorbefehle 2 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ 1. label <name> ║
- ║ ║
- ║ ordnet der folgenden Zeile den Bezeichner <name> zu, der überall im ║
- ║ Programm verwendet werden kann. ║
- ║ ║
- ║ 2. const <name> <wert> ║
- ║ ║
- ║ definiert eine Konstante, die den Wert <wert> und die Bezeichnung <name> ║
- ║ hat. ║
- ║ ║
- ╚══════════════════════════════════════════════════════════════< weiter >════╝
- |
- ╔════════════════════════════════════════════════════════════════════════════╗
- ║ Ein Beispiel für den Präprozessor 3 ║
- ╟────────────────────────────────────────────────────────────────────────────╢
- ║ ║
- ║ gehezu haupt ║
- ║ ║
- ║ label Unterprogramm ║
- ║ blockbegin ║
- ║ drucke KONSTANTE ║
- ║ blockend ║
- ║ ║
- ║ label haupt ║
- ║ ... ║
- ║ gosub Unterprogramm ║
- ║ ... ║
- ║ ║
- ║ const KONSTANTE 2000 ║
- ║ ║
- ╚════════════════════════════════════════════════════════════════════════════╝