home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-04-01 | 176.1 KB | 9,698 lines |
-
-
-
-
-
-
-
-
-
- FranzBasic
-
-
-
-
-
- Inhaltsverzeichnis
-
- 1 Vorbemerkungen
-
- 2 Handhabung
-
- 3 Einführung
-
- 4 Referenzteil
-
- Anhang A Installation
-
- Anhang B Runtime-Errors
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- 1 Vorbemerkungen
-
- Was hier vor Ihnen liegt ist FranzBasic in
- der Version 1.0. FranzBasic wurde geplant
- und entwickelt als Tool für die
- Programmierung von administrativen und
- kommerziellen Datensystemen.
-
- Diesem Ziel gemäß enthält FranzBasic wenig
- für den technisch-wissenschaftlichen
- Bereich über das in 'Standard'-Basic
- verfügbare hinaus. Grafische Komponenten
- wurden mit Bedacht ausgelassen, sie hätten
- den Übersetzer weiter aufgebläht, ohne
- einem großen Benutzerkreis zu nützen.
- Grafik auf Bildschirm und Drucker ist
- FranzBasic windows vorbehalten, der Version
- für Microsoft-Windows (Erscheinungstermin:
- Mai 1990)
-
- Neben der in dieser Version vorhandenen
- Datenbank-Schnittstelle wird Version 1.1
- eine Spreadsheet-Schnittstelle enthalten,
- die das Lesen und Schreiben von
- verschiedenen Spreadsheet-Programmen
- ermöglicht.
-
- Weitere Versionen von FranzBasic werden für
- verschiedene Unix-Rechner erscheinen.
-
- Ich würde mich freuen, aus dem
- Anwenderkreis Anregungen für die
- Weiterentwicklung zu erhalten.
-
- Ihr
-
- Franz
-
-
-
- 1-1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
-
-
- FranzBasic
-
- Copyright Zimmer Informatik, Postfach
- 140369, Düsseldorf
-
- Verwendete Warenzeichen:
- Dbase III Ashton-Tate
- Microsoft Windows Microsoft
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1-2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
-
- 2 Handhabung
-
- 2.1 Compiler
-
- Der FranzBasic-Übersetzer wird aufgerufen
- mit
-
- Basic [Name [-b]] (a)
-
- Wird nur 'Basic' eingegeben, wird der
- Übersetzer in der interaktiven Form
- gestartet. Der Editor 'Fed.exe' wird
- nachgeladen und dem Programmierer für die
- Programm-Entwicklung zur Verfügung
- gestellt. Wird außerdem <Name> angegeben,
- wird die Datei "<Name>.bas" in den Editor
- geladen und ab der ersten Zeile auf dem
- Bilschirm dargestellt.
-
- Durch Angabe der Option '-b' wird der
- Übersetzer im Batch-Mode betrieben. Der
- Programmtext wird aus Datei "<Name>.bas"
- gelesen und Programmcode in der Datei
- "<Name>.cod" erzeugt. Dieser Code kann dann
- durch den Runtime-Modul von FranzBasic zur
- Ausführung gebracht werden durch
-
- Runfb Name (b)
-
- Dabei ist <Name> identisch mit <Name> aus
- (a). Im Gegensatz zum Übersetzer
- 'basic.exe' kann das Runtime-Modul
- 'runfb.exe' an andere Personen
- weitergegeben werden, um mit FranzBasic
- erzeugte Programme auch durch Dritte
- nutzbar zu machen.
-
-
-
- 2-1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- 2.2 Der Editor
-
- Der Editor 'Fed.exe' wird vom Übersetzer im
- interaktiven Mode nachgeladen, um Programm-
- Texte zu bearbeiten. Der Editor wird in
- zwei Modi betrieben: Eingabe-Mode und Menu-
- Mode.
-
- Im Eingabe-Mode, der beim Start eingestellt
- ist, werden über Tastatur eingegebene
- Zeichen gespeichert und auf dem Bildschirm
- dargestellt. Bestimmte Sonderzeichen dienen
- zur Steuerung:
-
- ESC Abbrechen
- Cursortasten Cursor bewegen
- Tab,Shift-Tab Tabulator (4 Zeichen)
- PgUp (Bild auf)aufwärts blättern
- PgDn (Bild ab) abwärts blättern
- Home (Pos1) Zeilenanfang
- End (Ende) Zeilenende
- Ctrl-Home Anfang Programmtext
- Ctrl-End Ende Programmtext
- Eingabe/Enter/CR Zeilensprung
- BS linkes Zeichen löschen
- Del (Entf) Zeichen entfernen
- Ins (Einfg) Einfügen aus/ein
- Shift-Ins Zeile einfügen
- Ctrl-N Leerzeile einfügen
- Ctrl-Y Zeile Löschen
-
-
- Während 'Ctrl-N' eine Leerzeile einfügt,
- fügt 'Shift-Ins' die zuletzt mit 'Ctrl-Y'
- gelöschte Zeile wieder ein.
-
-
-
-
-
- 2-2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- Über Tastatur eingegebene Zeichen werden
- entweder zwischen vorhandene Zeichen
- eingefügt (Einfüge-Mode) oder überschreiben
- sie. Mit 'Ins' kann zwischen beiden Arten
- gewechselt werden. Beim Überschreiben nimmt
- der Cursor Blockform an.
-
- Im Einfüge-Mode wird mit dem Drücken der
- Eingabe/Enter/CR-Taste eine neue Zeile
- unterhalb der aktuellen eingefügt und auf
- diese gesprungen. Steht der Cursor dabei
- nicht hinter dem letzten Zeichen der alten
- Zeile wird diese geteilt.
-
- Zwei Zeilen können vereinigt werden, indem
- man die 'Del'-Taste drückt, während der
- Cursor genau hinter dem letzen Zeichen der
- oberen Zeile steht
-
- Durch Drücken der linken Maustaste wird der
- Cursor an die Textstelle auf dem Bildschirm
- gesetzt, an der sich der Mauszeiger
- befindet.
-
- In den Menu-Mode gelangt man durch Drücken
- und Loslassen der Taste 'Alt' oder durch
- Anklicken einer der Menupunkte mit der
- Maus. Nachfolgende Tastendrücke bewirken
- keine Eingaben in den Programmtext sondern
- dienen der Auswahl eines Kommandos aus dem
- Menu.
-
- Bei Beginn des Menu-Modus wird für einen
- der Menupunkt ein Abrollmenu gezeigt. Wurde
- das Menu über 'Alt' aktiviert, wird das
- zuletzt gezeigte Abrollmenu gezeigt mit
- einem weissen Leuchtbalken auf dem zuletzt
-
-
-
- 2-3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- gewählten Kommando. Durch die Cursortasten
- kann der Leuchtbalken auf und ab geführt
- werden bzw. kann in die nächsten
- Abrollmenus rechts und links gewechselt
- werden. Wird Eingabe/Enter/CR gedrückt,
- wird das Kommando unter dem Leuchtbalken
- aktiviert. ESC oder ein weiteres 'Alt'
- bricht den Menu-Modus ab. In allen Fällen
- wird der Menu-Modus beendet.
-
- Wird das Menu mit der Maus aktiviert, steht
- der Leuchtbalken nur auf dem zuletzt
- aktivierten Kommando, falls auch das
- zuletzt gezeigte Abrollmenu angewählt
- wurde, sonst auf dem ersten. Durch
- Anklicken mit der Maus wird ein Kommando
- aktiviert. Maus- und Tastatur-Bedienung
- können beliebig vermischt werden.
-
- Viele Kommandos können auch durch Tastatur-
- Kürzel in Verbindung mit der 'Alt' oder der
- 'Shift'-Taste eingegeben werden. Hier
- entfällt der Aufruf des Menus. Da in den
- Menus die Kürzel neben den Kommandos
- aufgeführt sind und am besten dort gelernt
- werden, sind sie hier nicht aufgezählt.
-
- Im ersten Abrollmenu - Datei - finden sich
- Kommandos zur Dateibehandlung und
- ähnliches. Die aktuell bearbeitete Datei
- wird in der Statuszeile am unteren
- Bildschirm-Rand zwischen zwei eckigen
- Klammern [ ] angezeigt. Zu einigen
- Kommandos wird eine Dateiauswahl angezeigt.
- In ihr werden die Dateien im aktuellen
- Verzeichnis mit der Namenserweiterung
- '.bas' zur Auswahl angeboten (sie werden
-
-
-
- 2-4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- angezeigt ohne diese Erweiterung). Analog
- zum Menu kann hier mit Leuchtbalken oder
- Maus gearbeitet werden. Es kann aber auch
- über Tastatur ein neuer Name eingegeben
- werden (auch dieser ohne '.bas').
-
- Mit 'Bsystem' mit der Kommandoprozessor des
- Betriebssystems geladen. Es können dann
- Kommandos auf MS-DOS-Ebene eingegeben
- werden. Durch das Kommando 'exit' wird der
- Kommandoprozessor beendet und FranzBasic
- kehrt zurück.
-
- Im zweiten Abrollmenu - Edit - finden sich
- Kommandos zur Editierung des Texts. Bevor
- Operationen wie Verschieben, Kopieren oder
- Löschen von Textblöcken stattfinden können,
- muß mit 'Blockanfang', 'Blockende' ein
- Block markiert werden.
-
- Unter Option können der Einfüge- oder
- Überschreibemodus bei der Texteingabe
- eingestellt werden und die automatische
- Datensicherung ein- und ausgeschaltet
- werden. Beide Kommandos wirken sowohl als
- Ein- als auch als Ausschalter, je nach
- Zustand bei der Anwahl. Auf der Statuszeile
- werden die Merker 'INS' bzw. 'BAK' gezeigt,
- wenn der Einfügemodus bzw Auto-Sicherung
- eingestellt ist.
-
- Die automatische Datensicherung sichert den
- Programmtext in regelmäßigen Abständen auf
- die Platte in das aktuelle Verzeichnis
- unter dem Namen 'Basic000.bak'. Bei Bedarf
- kann auf diese Sicherung zurückgegriffen
- werden. Da die Datei die Namenserweiterung
-
-
-
- 2-5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- '.bak' hat kann sie jedoch nicht direkt in
- den Editor geladen werden, sondern muß
- umbenannt werden.
-
- Die Auto-Sicherung sollte niemanden davon
- abhalten, seine Programmtexte regelmäßig
- auf Diskette zu sichern! Sie sollte auch
- nur bei Begründung abgeschaltet werden, z.
- B. bei Arbeiten auf Diskettenlaufwerken.
-
- Im Abrollmenu Run finden sich die Kommandos
- zum Übersetzen und Starten von Programmen.
- Wird ein Programm durch 'Compile'
- fehlerfrei oder nur mit Warnungen
- übersetzt, kann es mit 'Start' gestartet
- werden.
-
- Treten bei der Übersetzungen Warnungen oder
- Fehler auf, werden bis zu neunzehn davon
- gespeichert. Der erste wird über der
- Statuszeile am unteren Bildschirmrand
- angezeigt und der Cursor auf die
- Fehlerstelle gesetzt. Durch das Kommando
- 'Fehler' werden weitere Fehler angezeigt.
- Nach dem letzten Fehler wird durch
- nochmaliges Kommando 'Fehler' von vorn
- begonnen. Zwischendurch können Fehler durch
- Änderung des Programmtexts behoben werden.
-
- Beim Start eines Programms macht der Editor
- den Bildschirm frei für den 'Output'-
- Schirm, der anfänglich der Bildschirminhalt
- bei Start von FranzBasic ist. Nach
- Programmende kehrt der Editor zurück. Damit
- für die Korrektur von Programmen der
- 'Output'-Schirm eingesehen werden kann,
- steht das Kommando 'Output' zur Verfügung,
-
-
-
- 2-6
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- das den 'Output'-Schirm bei Programmende
- zeigt. Ein beliebiger Tastendruck führt
- wieder in den Editor zurück.
-
- 2.3 Erstellen großer Programme
-
- Der FranzBasic-Editor 'fed.exe' hat nur
- eine begrenzte Kapazität von 600 Zeilen
- (dafür aber eine hohe Geschwindigkeit).
- Wenn größere Programme geschrieben werden
- sollen, geht man z. B. mit der nachfolgend
- beschriebenen Methode vor.
-
- Man entwickelt interaktiv Programmteile in
- Unterprogrammform bis zur möglichen Größe
- mit einem kleinen Hauptprogramm zu
- Testzwecken. Letzteres wird zum Schluß
- wieder entfernt. Sind alle Programmteile
- fertig, compiliert man sie im Batch-Modus
- durch Angabe aller Dateien wie in:
-
- Basic Name1 Name2 Name3 -b (c)
-
- der Übersetzer liest alle durch
- aufgeführten Dateien hintereinander ein und
- übersetzt diese als wären sie eine Datei.
- Das Hauptprogramm muß also in der letzten
- eingegebenen Datei stehen.
-
- Die Ausführung des Programms erfolgt dann
- über das Runtime-Modul.
-
-
-
-
-
-
-
-
-
- 2-7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
-
- 3 Einführung in FranzBasic
-
- Inhalt
-
- 3.1 Programmaufbau in FranzBasic
- 3.2 Variablen in FranzBasic
- 3.3 Konstanten
- 3.4 Arithmetische Ausdrücke
- 3.5 String-Ausdrücke
- 3.6 Logische Ausdrücke
- 3.7 Datei-Bearbeitung
- 3.8 Datenbank-Bearbeitung
-
- 3.1 Programmaufbau in FranzBasic
-
- Programme bestehen aus einer Ansammlung von
- Programmanweisungen, auch einfach
- 'Anweisungen' oder 'Statements' genannt.
-
- Mehrere Statements oder Programmanweisungen
- können auf einer Zeile stehen. Sie werden
- dann durch das Zeichen ':' getrennt. Es
- gibt einige Ausnahmen:
-
- - nach einzeiligen If-Anweisungen wie
-
- If a% < 0 Then a% = -a%
-
- können keine weitere Anweisungen gegeben
- werden. Es muß dann die mehrzeilige Form
- gewählt werden (siehe 'IF').
-
- - nach Sprungmarken können keine
- Anweisungen folgen
-
-
-
-
-
- 3-1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- - nach den 'strukturierten' Anweisungen
- sind keine weiteren möglich
-
- Programmanweisungen sind unterschieden in
- zwei Klassen: ausführbare und nicht
- ausführbare Anweisungen. Ausführbare
- Anweisungen werden beim Ablauf des
- Programms ausgeführt und führen irgendeine
- Änderung in Daten oder im Programmzustand
- herbei. Nichtausführbare Anweisung dienen
- zur Definition und Deklaration und werden
- bei der Übersetzung ausgewertet, z. B. DIM,
- RECTYPE, STATIC und andere.
-
-
-
- Programme können strukturiert werden durch
- Anweisungen, die innerhalb eines Programmes
- Blöcke von Programmanweisungen bilden:
-
- - Subroutine ... Endsub
-
- - For ... Endfor
-
- - If ... Endif
-
- - While ... Wend
-
- - Repeat ... Until
-
- sind solche Anweisungspaare, die alle
- Statments '...' zwischen der einleitenden
- (Subroutine, For, If, While, Repeat) und
- der abschliessenden Anweisung (Endsub,
- Endfor, Endif, Wend, Until) zu einem
- Programmblock schliessen. Diese Anweisungen
-
-
-
-
- 3-2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- werden oft auch strukturierte Anweisungen
- genannt.
-
- Nach diesen strukturierten Anweisungen darf
- ebenfalls keine durch ':' abgetrenntes
- weiteres Statement stehen, wohl aber dürfen
- die Zeilen innerhalb des Blocks mehrere
- Anweisungen haben.
-
- Die in einem Programmtext vorkommenden
- Wörter gehören in zwei Klassen, die
- reservierten Wörter und die vom
- Programmierer definierten Wörter.
- Reservierte Wörter sind diejenigen, die den
- Sprachumfang ausmachen, also 'IF',
- 'SUBROUTINE', 'GOTO', einschließlich der
- eingebauten Funktionen wie SIN(), TRIM$().
- Vom Programmierer werden dazu Variablen und
- Konstanten definiert. Variablen sollten
- nicht die Namen reservierter Wörter
- benutzen.
-
- Zwischen Klein- und Großbuchstaben wird
- weder bei reservierten Wörtern noch bei
- Variablen unterschieden, wohl aber
- innerhalb von Zeichenketten. Die Variable
- ABC$ kann Abc$, abc$, aBc$ geschrieben
- werden. Für die in ABC$ gespeicherte
- Zeichenkette gilt jedoch nicht, daß
- "Zeichenkette" gleich "zeichenKette" ist.
-
- Ein Programmtext besteht aus Zeilen mit
- Programmanweisungen, die sich wiederum aus
- reservierten Wörtern und vom Programmierer
- definierten Wörtern zusammensetzen. Der
- Übersetzer macht aus diesem Programmtext
-
-
-
-
- 3-3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- einen Programmcode, der vom Rechner durch
- ein runtime-Modul ausgeführt wird.
-
- Ein wichtiges Element moderner
- Programmiersprachen sind Unterprogramme, in
- FranzBasic realisiert durch das
- Anweisungspaar 'SUBROUTINE' ... 'ENDSUB'.
- Unterprogramme sind in sich abgeschlossene
- Programmteile, die wiederholt innerhalb
- eines Programmes verwendet werden können
- aber nur einmal programmiert werden müssen
- und auch nur einmal Platz für Programmtext
- und Programmcode beanspruchen.
-
- Unterprogramme stehen in FranzBasic
- grundsätzlich am Anfang eines
- Programmtexts, da sie definiert sein
- müssen, bevor sie aufgerufen werden können.
- Nach dem ENDSUB des letzten Unterprogramms
- beginnt automatisch das Hauptprogramm
-
- 3.2 Variablen in FranzBasic
-
- Daten werden in Variablen gespeichert.
- FranzBasic unterstützt die Datentypen
- Integer (16-Bit Ganzzahl), Real (32-Bit
- Fließkommazahl), Long (32-Bit Ganzzahl),
- Double (64-Bit Fließkommazahl), String
- (Zeichenkette)
-
- Die Variablen dürfen beliebige Namen mit
- max. 16 Stellen haben. Der Typ der
- Variablen wird durch das letzte Zeichen
- festgelegt, nach folgender Konvention:
-
- % Integer, z.B. i%
- & Long, z.B. long&
-
-
-
- 3-4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- # Double, z.B. d1#
- $ String, z.B. str$
-
- Reals haben kein solches Kennzeichen. Eine
- Variable ist vom Typ Real, wenn sie keines
- der obigen Sonderzeichen als letztes
- Zeichen hat.
-
- Für den Darstellungsbereich und die
- Genauigkeit der einzelnen Datentypen gilt
- das gleiche wie im Paragraphen 'Konstanten'
- beschrieben.
-
- Das letzte Zeichen darf kein Punkt sein, da
- diese bei Records als Trennzeichen
- verwendet werden.
-
- Wird innerhalb eines Programms eine
- Variable verwendet, die nicht (in
- Subroutines) ausdrücklich als LOCAL oder
- STATIC deklariert wurde, so handelt es sich
- um eine 'Global'-Variable, der Regelfall.
- 'Global'-Variablen sind im Hauptprogramm
- und in allen Subroutines bekannt, egal ob
- sie im Hauptprogramm oder in einer
- Subroutine erzeugt wurden. LOCAL- und
- STATIC-Variablen sind nur in der Subroutine
- bekannt, in der sie erzeugt wurden. Sie
- sind werden unterschieden von 'Gobal'-
- variablen gleichen Namens.
-
- Bei erstmaliger Verwendung eines
- Variablennamens der nicht unter LOCAL oder
- STATIC vordefiniert wurde legt der Compiler
- die Variable nach obenstehender Typen-
- Konvention als 'Global' an, bei weiterer
-
-
-
-
- 3-5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- Nennung des gleichen Variablen-Namens wird
- diese Variable verwendet.
-
- Als zusammengesetzte Datentypen werden
- Felder und Records unterstützt. Felder
- bestehen aus gleichartigen Variablen auf
- die über einen gemeinsamen Namen und einen
- Index, der die einzelnen Variablen
- voneinander unterscheidet, zugegriffen.
- Felder werden durch die Anweisung DIM
- erzeugt.
-
- Records bestehen aus verschiedenen
- Variablen auf die über den gemeinsamen
- Record-Namen und einen individuellen
- Recordvariablen-Namen zugegriffen wird.
- Zwischen beide Namensteile wird ein Punkt
- gesetzt. Records werden zweistufig erzeugt:
- durch die Anweisung RECTYPE wird zunächst
- ein Record-Typ deklariert, auf den sich
- nachfolgende RECORD-Deklarationen beziehen.
-
- Die Namen sowohl für den Record-Type als
- auch für den Record müssen den Konventionen
- für Reals gehorchen, d. h. kein angehängtes
- Sonderzeichen wie %, &, #.
-
- 3.3 Konstanten
-
- Entsprechend den verschiedenen einfachen
- Datentypen gibt es verschiedene Konstanten.
-
- Integer-Konstanten besteht als ganze Zahlen
- einfach aus einer Anzahl von Ziffern. Die
- Zahlen müssen zwischen -32768 und +32767
- liegen, da dieser Bereich durch 16 Bit
- dargestellt werden kann. Werden Integer-
-
-
-
- 3-6
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- Konstanten ausserhalb dieses Bereichs
- gebildet, sind die von Übersetzer erzeugten
- internen Darstellungen unbestimmt. Bei
- positiven Zahlen kann das Plus-Zeichen
- entfallen.
-
- Long-Konstanten bestehen entsprechend aus
- Zahlen im Bereich von -2147483648 und
- +2147483647 und haben zur Kennzeichnung ein
- 'L' angehängt, also z.B. -123L.
-
- Real-Konstanten bestehen aus Vor- und
- Nachkommastellen getrennt durch einen
- Dezimalpunkt oder in der wissenschaftlichen
- Exponentialnotation aus Mantisse und
- Exponent, getrennt durch ein 'E'. Der
- gültige Bereich liegt zwischen 3.4E-38 und
- 3.4E38 für positive Zahlen und genauso für
- negative Zahlen. Die erreichbare
- Genauigkeit liegt bei 7 Stellen.
-
- Für Double-Konstanten ist das 'E' der Real-
- Konstanten ersetzt durch 'D' und der
- Bereich beträgt 1.7D-308 bis 1.7D308, die
- Genauigkeit ca. 14 Stellen.
-
- Da Reals und Doubles eine Fließkommazahl
- wegen der beschränkten Stellenzahl nicht
- exakt darstellen, können in der Praxis
- Probleme z. B. beim Vergleich von Daten
- auftreten. Ein offensichtliches Beispiel
- ist:
-
- If a = 1.0/3.0 Then Break
-
- Da 1/3 oder 1.0/3.0 nicht mit einer
- endlichen Stellenzahl als Fließkommazahl
-
-
-
- 3-7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- darzustellen ist, ist der Ausgang des
- Vergleichs unbestimmt, er kann je nach dem
- Weg auf dem der Wert der Variablen 'a'
- erzeugt wurde WAHR oder FALSCH sein.
-
- Aus diesem Grund sollten Reals und Doubles
- auch nicht in FOR-Schleifen als
- Zählvariablen eingesetzt werden (siehe
- FOR).
-
- String-Konstanten bestehen aus beliebig
- aneinandergereihten Zeichen, eingeschlossen
- durch ein Paar Anführungszeichen "". Die
- maximale Länge beträgt 255 Zeichen.
-
- 3.4 Arithmetische Ausdrücke
-
- Variablen und Konstanten werden durch
- arithmetische Operatoren zu arithmetischen
- Ausdrücken verbunden, deren Wert
- gegebenenfalls an Variable zugewiesen wird.
-
- Arithmetische Operatoren sind +, -, *, /
- entsprechend den vier Grundrechenarten und
- deren Regeln für Vorrang (Punktrechnung vor
- Strichrechnung) und Klammerung. Sind in
- einem arithmetischen Ausdruck mehrere
- Datentypen vorhanden, nimmt der Übersetzer
- automatisch eine Typwandlung vor, sofern es
- sich um numerische Datentypen handelt.
- Strings und Records sind mit anderen Typen
- nicht kompatibel, d. h. eine Wandlung ist
- nicht möglich. Felder können in
- arithmetischen Ausdrücken elementweise
- verwendet werden.
-
-
-
-
-
- 3-8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- Bei der automatischen Wandlung wird immer
- in den Datentyp gewandelt der die größere
- Darstellungs-Möglichkeiten hat, d.h. in dem
- Ausdruck
-
- a% * b1
-
- bestehend aus dem Integer a% und dem Real
- b1 wird a% in eine Real-Zahl gewandelt und
- dann die Multiplikation durchgeführt.
-
- Wird der Wert eines arithmetischen
- Ausdrucks durch den Zuweisungsoperator =
- einer Variablen zugewiesen, wie in
-
- erg% = a% * b1
-
- so wird auf jeden Fall der arithmetische
- Ausdruck in den Typ der Ergebnis-Variablen
- gewandelt. Hat dieser geringere
- Darstellungsmöglichkeiten, können
- Informationsverluste (im obigen Beispiel
- Verlust der Nachkommastellen) und komplette
- Fehlinformation durch Übersteigen der
- Darstellungsbreite des Ergebnistyps die
- Folge sein (Wenn der Ausdruck a% * B1 z.B.
- 40000.0 ist, ist der Wert von erg%
- unvorhersagbar.
-
- Werden Konstanten direkt an Variablen
- zugewiesen, ist es günstig wenn die
- Typkonventionen eingehalten werden, wie in
-
- a = 1.0 a# = 1.0D0
-
- Würde man dagegen schreiben
-
-
-
-
- 3-9
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- a = 1 a# = 1.0
-
- würden die Ergebnis-Variablen die gleichen
- Werte erhalten, es müßte jedoch eine
- Wandlung durchgeführt werden, die Platz für
- entsprechenden Programmcode und Rechenzeit
- verbraucht.
-
- Records können in arithmetischen Ausdrücken
- nicht als Ganzes verwendet werden, nur
- ihrer Elemente können verwendet werden.
- Ausnahme hiervon ist die Zuweisung
-
- Rectype Atype A1, A2
-
- A1 = A2
-
- A1 und A2 müssen vom gleichen Record-Type
- sein!
-
- Wo immer in arithmetischen Ausdrücken
- Variablen stehen können, dürfen auch
- Funktionen vom gleichen Datentyp stehen,
- sowohl die in FranzBasic definierten
- Standardfunktionen wie VAL oder VAL% als
- auch vom Benutzer erstellte SUBROUTINES die
- durch RETURN einen Wert zurückgeben. Auf
- diese Weise können auch String-Werte in
- arithmetische Ausdrücke eingebracht werden.
-
- 3.5 String-Ausdrücke
-
- String-Konstanten und -Variablen können
- Stringausdrücke bilden. Diese sind mit
- anderen Datentypen nicht kompatibel, d. h.
- Variablen anderer Datentypen können nicht
- gewandelt werden und dürfen daher in
-
-
-
- 3-10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- String-Ausdrücken nicht verwendet werden.
- Zugelassen sind Record-Elemente vom
- Datentyp String und Elemente aus String-
- Feldern.
-
- Einziger Operator in String-Ausdrücken ist
- die Verkettung oder Concatanation,
- dargestellt durch '+' wie in
-
- Erg$ = "abc" + a$ + STR$(1.23)
-
- Hier ist STR$ ein Standard-Funktion vom Typ
- String, die natürlich in String-Ausdrücken
- vorkommen dürfen. Da es Funktionen wie STR$
- gibt, welche Zahlen in Zeichenketten
- verwandeln, können auf diesem Weg Zahlen in
- Stringausdrücke eingebracht werden.
-
- 3.6 Logische Ausdrücke
-
- Elementare logische Ausdrücke enthalten
- neben Variablen und Konstanten die
- Vergleichsoperatoren
-
- = gleich
- < kleiner
- <= kleiner gleich
- > größer
- >= größer gleich
- <> ungleich
-
- wie z.B. in
-
- If a% > 0 Then...
- While summe% = 0
-
-
-
-
-
- 3-11
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- Der Vergleichsoperator = ist nicht zu
- verwechseln mit dem Zuweisungsoperator =,
- beide werden durch das gleiche Zeichen
- dargestellt, haben aber verschiedene
- Wirkung. In obigem Beispiel wird der
- Variable 'summe%' kein Wert zugewiesen,
- sondern es wird ein Vergleich auf
- Gleichheit mit der Konstanten 0
- durchgeführt.
-
- Der Wert der logischen Ausdrücke ist
- entweder -1, wenn der Vergleich WAHR ist
- oder 0, wenn er FALSCH ist.
-
- Da logische Ausdrücke einen Wert ergeben,
- können sie durchaus in arithmetischen
- Ausdrücken verwendet werden , z.B.
-
- a% = b% > 1
-
- a% ist -1, wenn b% > 1, sonst 0.
- Andererseits können beliebige arithmetische
- Ausdrücke als logische Ausdrücke verwendet
- werden, da bei der Auswertung jeder Wert
- ungleich 0 als WAHR interpretiert wird. Die
- Schleife
-
- i% = 10
- While i%
- ...
- i% = i% - 1
- Wend
-
- wird solange durchlaufen bis i% auf 0
- heruntergezählt ist und durch 'WHILE' daher
- als FALSCH interpretiert wird.
-
-
-
-
- 3-12
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- Logische Ausdrücke liefern jedoch den Wert
- -1 als Ergebnis für WAHR und zwar als
- Integer. -1 wurde gewählt weil in der
- binären Darstellung dieser Zahl alle 16 Bit
- auf '1' gesetzt sind.
-
- Elementare logische Ausdrücke können durch
- die logischen Verknüpfungs-Operatoren
- 'AND', 'OR' und 'NOT' zu zusammengesetzten
- logischen Ausdrücken verbunden werden wie
- in
-
- If i% > 0 AND summe > 100.0 Then ...
-
- If NOT s$ = "123" Then ...
-
- Sind mehrere Verknüpfungs-Operatoren in
- einem Ausdruck vorhanden, so gelten
- Vorrangregeln wie bei arithmetischen
- Ausdrücken. Eine AND-Verknüpfung wird vor
- einer OR-Verknüpfung durchgeführt, durch
- Klammerung kann die Reihenfolge geändert
- werden.
-
-
- 3.7 Datei-Bearbeitung
-
- FranzBasic verfügt über die klassischen IO-
- Befehle von Basic, wenn auch die Behandlung
- von Random-Dateien durch die Verwendung von
- Records etwas modernisiert wurde.
-
- Zwei Arten von Dateien werden unterstützt:
-
- - Text-Dateien Open "I", "O", "U"
-
- - Random-Dateien Open "R"
-
-
-
- 3-13
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- Random-Dateien haben eine feste Satzlänge.
- Es können nur ganze Datensätze in einen
- Record gelesen und aus einem Record in die
- Datei geschrieben werden. Als
- Identifikation, welcher Satz zu lesen oder
- zu schreiben ist, dient eine Satznummer,
- welche mit der Position des Satzes in der
- Datei identisch ist. Sätze können nur
- geschrieben werden, wenn sie einen bereits
- vorhandenen Satz überschreiben oder
- unmittelbar an den letzten bereits
- vorhanden Satz anschliessen. Das heißt,
- Random-Dateien können nur lückenlos erzeugt
- werden, ein Schreiben in beliebiger Folge
- ist nicht möglich. Random-Dateien werden
- mit den Anweisungen GET und PUT bearbeitet.
-
- Text-Dateien können Daten beliebiger
- Struktur enthalten. Sie werden sequentiell
- gelesen oder geschrieben, d.h. vom ersten
- Zeichen in der Datei zeichenweise
- fortschreitend. Text-Dateien werden mit den
- Befehlen INPUT, LINE INPUT, PRINT und WRITE
- bearbeitet. INPUT und LINE INPUT auf der
- einen sowie PRINT und WRITE auf der anderen
- Seite bearbeiten die Dateien in etwas
- unterschiedlicher Art, siehe Referenzteil
-
- Beide Dateiarten werden mit OPEN zur
- Bearbeitung geöffnet und gegebenenfalls
- kreiert. Nach der Bearbeitung werden die
- Dateien mit CLOSE geschlossen.
-
-
-
-
-
-
-
-
- 3-14
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- 3.8 Datenbank-Bearbeitung
-
- FranzBasic verfügt über eine Anzahl Befehle
- zur Bearbeitung dBase - III - kompatibler
- Datenbanken. Jede Datenbank besteht aus
- zwei Dateien:
-
- - einer Datei mit Extension .dbf, welche
- die eigentlichen Daten enthält
-
- - und einer Datei mit Extension .ndx, die
- zu Verwaltung der Datensatzschlüssel dient.
-
- Der Datensatzschlüssel oder einfach
- Schlüssel ist der Ordnungsbegriff nach
- denen die Datensätze sortiert und gesucht
- werden. Der Schlüssel ist das
- Identifikationsmerkmal des Datensatzes. In
- FranzBasic ist der Schlüssel immer das
- erste Element des Records, mit dem die
- Datenbank kreiert wurde (siehe DBCREATE).
- Schlüssel müssen eindeutig sein, d.h. es
- können nicht zwei Datensätze unter dem
- gleichen Schlüssel gespeichert sein.
-
- Wie gewöhnliche Dateien müssen Datenbanken
- vor der Benutzung geöffnet und hinterher
- geschlossen werden (DBOPEN, DBCLOSE). Im
- Unterschied zu gewöhnlichen Dateien müssen
- Datenbanken aber explizit kreiert werden
- (DBCREATE) und werden nicht automatisch
- beim Öffnen kreiert, falls sie noch nicht
- existieren.
-
- Die beim Öffnen einer Datenbank verwendete
- Kennung kann gleichlauten mit einer Kennung
-
-
-
-
- 3-15
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- für eine gewöhnliche Datei, sie werden von
- FranzBasic unterschieden.
-
- Mit DBGET und DBPUT werden Datensätze
- gelesen bzw. geschrieben. Zum Lesen muß der
- Schlüssel des gewünschten Satzes angegeben
- werden. ist kein Satz mit dem gewünschten
- Schlüssel vorhanden, wird der in
- lexikalischer Anordnung nächst Satz
- gelesen, gleichzeitig aber in Runtime-Error
- gesetzt, der mit ERROR%() erkannt werden
- kann.
-
- Man kann dies ganz bewußt ausnutzen, indem
- man mit Teilschlüsseln arbeitet, um den
- internen Satzzeiger zu positionieren für
- nachfolgende sequentielle Zugriffe. Hat man
- z. Bsp. für eine Artikelstammdatei einen 8-
- stelligen Schlüssel 'Artnr$' gewählt, so
- wird ein Lesen der Datenbank mit dem
- einstelligen Schlüssel "4" den ersten
- Datensatz liefern, der mit einer "4"
- beginnt (vielleicht 47-11299).
-
- Sequentielles Verarbeiten der Datenbank -
- d.h. arbeiten in Reihenfolge der Schlüssel
- - wird ermöglicht durch Angabe von "+" oder
- "-" anstelle eines normalen Schlüssels.
- DBGET ließt dann den nächsten bzw.
- vorhergehenden Datensatz in lexikalischer
- Folge. Durch Angabe von "^" und "*" als
- Schlüssel lassen sich der erste bzw. letzte
- Satz einer Datenbank lesen.
-
- Das schließt aus, daß echte Schlüssel mit
- '^', '*', '+' oder '-' beginnen.
-
-
-
-
- 3-16
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- Mit DBDELETE kann der zuletzt mit DBGET
- oder DBPUT angesprochene Datensatz gelöscht
- werden. Der Satz wird nicht physisch
- gelöscht, sondern nur mit einem
- Löschvermerk versehen.
-
- Überblick über den Inhalt der Datenbank
- verschafft DBBROWSE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 3-17
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
- Dokumentation FranzBasic
-
-
- 4 Referenzteil
-
-
- Inhalt
-
-
- 4.1Anweisungen zur Daten - Definition
-
- DIM Feld definieren 5
- LOCAL Lokale Variable definieren 7
- STATIC statische Variable definieren 9
- RECTYPERecordtyp definieren 10
- RECVAR Record-Element definieren 11
- ENDREC Recordtyp-Definition beenden 13
- RECORD Record definieren 14
-
- 4.2Anweisungen zur Programmablauf
- -steuerung
-
- IF If-Abfrage 15
- FOR For-Schleife 18
- WHILE While-Schleife 20
- REPEAT Repeat-Schleife 22
- BREAK Schleife abbrechen 24
- STOP Programm beenden 25
- PAUSE Programm anhalten 26
- GOTO Label abspringen 27
- SUBROUTINE Unterprogramm definieren 28
- RETURN Unterprogramm verlassen 32
- GOSUB Unterprogramm aufrufen 34
-
- 4.3Befehle zur Dateibearbeitung
-
- OPEN Datei öffnen 36
- CLOSE Datei schließen 39
- INPUT Daten lesen 40
-
-
-
- 4-1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 2
-
-
- Dokumentation FranzBasic
-
- LINE INPUT " 42
- PRINT Daten ausgeben 44
- LPRINT Daten ausgeben (Drucker) 46
- WRITE Daten ausgeben 47
- GET Random-Datei lesen 49
- PUT Random-Datei schreiben 50
- ERASE Datei löschen 51
- RENAME Datei umbenennen 52
- INKEY$ Tastatur prüfen 53
- LASTKEY% letzte Eingabe prüfen 54
-
- 4.4Anweisungen zur Datenbank -
- Bearbeitung
-
- DBCREATE Datenbank kreieren (erzeugen)
- 55
- DBOPEN Datenbank öffnen 57
- DBCLOSEDatenbank schließen 58
- DBGET Datensatz lesen 59
- DBPUT Datensatz schreiben 61
- DBDELETE Datensatz löschen 62
- DBBROWSE Datenbank durchblättern 63
-
- 4.5Mathematische Funktionen
-
- SIN Sinus 67
- COS Cosinus 68
- TAN Tangens 69
- ATN Arcustangens 70
- EXP Exponentialfunktion 71
- LOG natürlicher Logarithmus 72
- SQR quadratische Wurzel 73
-
- 4.6String-Statements und -Funktionen
-
- SET$ Zeichen setzen 74
- DELETE$Zeichen löschen 75
-
-
-
- 4-2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 3
-
-
- Dokumentation FranzBasic
-
- INSERT$Zeichen einfügen 76
- INSTR% Teilstring suchen 77
- LEFT$ linken Teilstring bilden 78
- RIGHT$ rechten Teilstring bilden 79
- MID$ Teilstring bilden 80
- TRIM$ nachfolgende
- Leerstellen abschneiden 81
- LTRIM$ führende
- Leerstellen abschneiden 82
- LCASE$ Lowercase bilden 83
- UCASE$ Uppercase bilden 84
- LEN% Stringlänge feststellen 85
- ASC% ASCII-Wert bilden 86
- CHR$ Zeichen aus ASCII-Wert bilden
- 87
- STR$ String aus Zahl bilden 88
- VAL Real aus String bilden 89
- VAL% Integer aus String bilden 90
-
- 4.7Bildschirm-Steuerung
-
- CLS Bildschirm löschen 91
- COLOUR Farben einstellen 92
- LOCATE Cursor setzen 93
-
- 4.8Verschiedenes
-
- REM Kommentar 94
- ' Kommentar 95
- ERROR% Runtime-Error feststellen 96
- EXEC externes Programm starten 97
- INTERRUPT Interrupt generieren 99
- TIMEDATE$ Zeit und Datum feststellen 100
-
- 4.9FranzBasic Spezial
-
- FILES Dateien zur Auswahl anbieten 101
-
-
-
- 4-3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4
-
-
- Dokumentation FranzBasic
-
- DIALOG Datenerfassung für Variable 103
- FORM Datenerfassung für Record 104
- MENU Menu erzeugen 106
- MESSAGEMeldung erzeugen 108
- MOUSE Maus-Steuerung 110
-
-
-
- Erläuterungen:
-
- Angaben in rechteckigen Klammern [ ] sind
- optional.
-
- --> bedeutet Bildschirmausgabe durch das
- Programm
-
- <-- bedeutet Tastatureingabe durch den
- Benutzer
-
- Mit Benutzer ist innerhalb des
- Referenzteils derjenige gemeint, welcher
- die mit FranzBasic erstellten Programme
- benutzt, er ist prinzipiell zu
- unterscheiden von dem Programmierer,
- welcher diese Programme mit FranzBasic
- erstellt.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 5
-
-
- Dokumentation FranzBasic
-
-
- 4.1 Anweisungen zur Daten - Definition
-
- Alle in diesem Kapitel genannten
- Programmanweisungen (Statements) sind nicht
- ausführbar und dienen der Definition von
- Daten und Datentypen.
-
- DIM
-
- Art: Statement
-
- Form:
-
- Dim Name(Länge[,Länge..) [,Name(..)..]
-
- Name: Feldname
- Länge: Integer-Konstante
-
- Beschreibung:
-
- 'DIM' legt die Größe von Feldern fest.
- <Name> ist ein gültiger Variablenname,
- <Länge> die Länge des Felds. Bei
- nachfolgender Verwendung des Feldes kann
- auf die einzelnen Elemente des Feldes durch
- Angabe eines Index zwischen 1 und <Länge>
- zugegriffen werden. Mehrdimensionale Felder
- sind möglich. Der Typ des Feldes wird
- bestimmt durch den Typ von <Name>.
- Zugelassen als Grundtyp sind alle einfachen
- Datentypen. Innerhalb einer 'DIM'-Anweisung
- können mehrere Felder definiert werden. Die
- einzelnen Definitionen werden durch Komma
- getrennt.
-
-
-
-
-
- 4-5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 6
-
-
- Dokumentation FranzBasic
-
- Beispiel:
-
- Dim Int%(10), Str$(20)
- Str$(20) = "Zuweisung an Element 20"
- If Int%(1) = 0 Then Break
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-6
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 7
-
-
- Dokumentation FranzBasic
-
- LOCAL
-
- Art: Statement
-
- Form:
-
- Local Name [,Name...]
-
- Name: Variablenname
-
- Beschreibung:
-
- Die Variable <Name> wird als lokale
- Variable innerhalb einer Subroutine
- deklariert. Die Variable ist dann
- ausserhalb der Subroutine nicht bekannt. Im
- Gegensatz dazu sind Variablen die im
- Verlauf einer Subroutine ohne vorhergehende
- 'LOCAL'-Deklaration eingeführt werden
- 'Global', d.h. auf diese Variable können
- auch das Hauptprogramm und andere
- Subroutines zugreifen. Als lokal
- deklarierte Variablen koexistieren mit
- globalen Variablen gleichen Namens, die im
- Hauptprogramm oder in anderen Subroutines
- erzeugt werden.
-
- 'LOCAL'-Anweisungen müssen am Anfang der
- Subroutine stehen. Sie dürfen nicht die
- Namen der Formalparameter haben. Mehrere
- Variablen können durch Kommas getrennt
- deklariert werden
-
-
-
-
-
-
-
-
- 4-7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 8
-
-
- Dokumentation FranzBasic
-
- 'LOCAL'-Variablen sind flüchtig, d. h.
- zwischen zwei Aufrufen der Subroutine
- bleibt ihr Wert nicht erhalten. Beim
- Eintreten in eine Subroutine ist ihr Wert
- unbestimmt.
-
- Beispiel:
-
- Subroutine Sub1(x%)
- Local r, a1%
- Local s$
- ...
- Endsub
-
- Siehe auch:
-
- STATIC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 9
-
-
- Dokumentation FranzBasic
-
- STATIC
-
- Art: Statement
-
- Form:
-
- Static Name [,Name...]
-
- Name: Variablenname
-
- Beschreibung:
-
- 'STATIC' deklariert wie 'LOCAL' lokale
- Variablen. Im Gegensatz zu 'LOCAL'-
- Variablen sind 'STATIC'-Variablen
- nichtflüchtig, d.h. ihr Wert bleibt
- zwischen zwei Subroutine-Aufrufen erhalten.
- Bei Programmstart ist ihr Wert 0 bei
- numerischen Variablen bzw. "" bei
- Stringvariablen, genau wie bei globalen
- Variablen
-
- Beispiel:
-
- Static a22%, w#
-
- Siehe auch:
-
- LOCAL
-
-
-
-
-
-
-
-
-
-
-
- 4-9
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 10
-
-
- Dokumentation FranzBasic
-
- RECTYPE
-
- Art: Statement
-
- Form:
-
- Rectype Name
-
- Name: Variablen-Name (Real-Konvention)
-
- Beschreibung:
-
- 'RECTYPE' definiert einen zusammengesetzten
- Datentyp unter dem Typnamen <Name>. Record-
- Definitionen durch den Befehl 'RECORD'
- beziehen sich auf den hier definierten
- Namen <Name>. Die Zusammensetzung des
- Records aus einfachen Datentypen wird durch
- nachfolgende 'RECVAR'-Anweisungen
- definiert. Die Rectype-Definition wird
- durch 'ENDREC' abgeschlossen.
-
- <Name> ist ein Variablen-Name nach der
- Namens-Konvention für Real-Zahlen, d. h.
- ohne Erweiterungszeichen %, &, #, $.
-
- Beispiel:
-
- RECTYPE Artikeltype
- RECVAR....
- ENDREC
-
- Siehe auch:
-
- RECVAR, ENDREC, RECORD
-
-
-
-
-
- 4-10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 11
-
-
- Dokumentation FranzBasic
-
- RECVAR
-
- Art: Statement
-
- Form:
-
- Recvar Name Länge[:Nkomma] [,Name..]
-
- Name: Variablenname (s. u.)
- Länge: Integer-Konstante
- Nkomma: Integer-Konstante
-
- Beschreibung:
-
- 'RECVAR'-Anweisungen legen die
- Zusammensetzung eines Record-Typs aus
- einfachen Datentypen fest. Diese bilden die
- Elemente des Records bzw des Record-Typs.
- Die einzelnen Elemente eines Recordtyps
- können einzeln zeilenweise oder mehrere pro
- Zeile durch Kommas getrennt definiert
- werden. Den Abschluß der Definitionssequenz
- bildet eine 'ENDREC'-Anweisung.
-
- <Name> ist ein Variablenname des Typs Real,
- Integer oder String. Long und Double sind
- nicht erlaubt.
-
- Reals und Integer werden innerhalb von
- Records in ASCII-Darstellung erzeugt. Die
- Länge der Zahlen ist variabel, deshalb muß
- sie bei der Definition mit <Länge>
- festgelegt werden. Bei Reals muß zusätzlich
- durch einen Doppelpunkt getrennt die Anzahl
- der Nachkommastellen mit <Nkomma>
- festgelegt werden. Die Zahl der
- Vorkommastellen ist dann <Länge>-<Nkomma>.
-
-
-
- 4-11
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 12
-
-
- Dokumentation FranzBasic
-
- Auch Strings haben innerhalb von Records
- eine feste Länge, deshalb muß auch hier mit
- <Länge> eine maximale Stringlänge
- festgelegt werden. Wird einem Recordelement
- vom Typ String ein gewöhnlicher String
- zugewiesen wird dieser auf die festgelegte
- Länge gebracht, entweder durch Abschneiden
- überschüssiger Zeichen oder durch Auffüllen
- mit Leerzeichen. Beim Zuweisen von String-
- Recordelementen an gewöhnliche Strings ist
- die Existenz von nachfolgenden Blanks zu
- beachten, diese können gegebenenfalls mit
- 'TRIM$' entfernt werden.
-
- Beispiel
-
- Rectype Atype
- ...Recvar a% 6
- ...Recvar summe 8:2
- ...Recvar str$ 12
- Endrec
-
- Record Atype Arec, Arec1
-
- Arec.str$ = "abc"
- a$ = Arec.str$
- Print "a$=";a$;"!"
-
- -->a$=abc !
-
- (9 Leerzeichen in a$)
-
- Siehe auch:
-
- RECORD
-
-
-
-
-
- 4-12
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 13
-
-
- Dokumentation FranzBasic
-
- ENDREC
-
- Art: Statement
-
- Form:
-
- Endrec
-
- Beschreibung:
-
- Die Sequenz der 'RECVAR'-Anweisungen und
- damit die Definition eines Record-Typs
- durch 'RECTYPE' wird beendet.
-
- Siehe auch:
-
- RECTYPE, RECVAR
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-13
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 14
-
-
- Dokumentation FranzBasic
-
- RECORD
-
- Art: Statement
-
- Form:
-
- Record Rtype Name [,Name...]
-
- Rtype: Name eines Recordtyps
- Name Name des definierten
- Records
-
- Beschreibung:
-
- Durch 'RECORD' wird ein Record mit Namen
- <Name> definiert der die Struktur des
- Record-Typs <Rtype> hat. Auf die Elemente
- des Records <Name> wird zugegriffen durch
- Angabe von 'Name.Element', wobei Element
- der Name eines Record-Elements laut
- 'RECVAR'-Anweisungen bei der Definition des
- Record-Typs <Rtype> ist.
-
- <Name> ist ein Variablen-Name nach der
- Namens-Konvention für Fließkomma-Zahlen, d.
- h. ohne Erweiterungszeichen %, &, #, $.
-
- Mit einer 'RECORD' Anweisung können mehrere
- Records definiert werden, ihre Namen werden
- durch Komma getrennt.
-
- Beispiel:
-
- siehe RECTYPE.
-
-
-
-
-
-
- 4-14
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 15
-
-
- Dokumentation FranzBasic
-
-
- 4.2 Anweisungen zur Programmablaufsteuerung
-
- IF
-
- Art: Statement
-
- Form:
-
- 1. If Ausdruck Then Statement
-
- 2. If Ausdruck Then
- ...
- [ Elseif Ausdruck Then
- ...]
- [ Else
- ...]
- Endif
-
- Ausdruck: logischer Ausdruck
- Statement: einfache
- Programmanweisung
- ... eine oder mehrere
- Anweisungen
-
- Beschreibung:
-
- Die 'IF'-Anweisung ist in zwei Formen
- möglich. In der ersten Form besteht die
- ganze Anweisung aus einer Zeile. Falls der
- logische Ausdruck <Ausdruck> WAHR ist wird
- die Programm-Anweisung <Statement>
- ausgeführt, bei FALSCH wird keine Anweisung
- ausgeführt. <Statement> ist eine einfache
- Anweisung, d.h. es dürfen nicht mehrere
- Anweisungen durch ':' getrennt nach 'THEN'
- folgen.
-
-
-
- 4-15
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 16
-
-
- Dokumentation FranzBasic
-
- In der zweiten Form steht hinter 'THEN'
- keine Anweisung. Es folgen eine oder
- mehrere Zeilen mit Programmanweisungen, bis
- die 'IF'-Anweisung mit 'ENDIF'
- abgeschlossen wird.
-
- Wahlweise können innerhalb der
- 'IF'...'ENDIF'-Sequenz eine oder mehrere
- 'ELSEIF' und eine 'ELSE'-Anweisung stehen.
- Nach einer 'ELSE'-Anweisung können keine
- 'ELSEIF'-Anweisungen mehr folgen. Die
- Anweisungen zwischen 'ELSE' und 'ENDIF'
- werden ausgeführt wenn sowohl <Ausdruck>
- aus der 'IF'-Anweisung als auch <Ausdruck>
- aus allen vorhergehenden 'ELSEIF'-
- Anweisungen FALSCH sind
-
- Anweisungen die auf eine 'ELSEIF'-Anweisung
- folgen werden ausgeführt, wenn <Ausdruck>
- der 'ELSEIF'-Anweisung WAHR ist und
- <Ausdruck> der 'IF'-Anweisung und
- <Ausdruck> aller eventuell vorhergehenden
- 'ELSEIF'-Anweisungen FALSCH sind. Weiter
- folgende 'ELSEIF'-Anweisungen (wenn
- vorhanden) werden dann nicht mehr geprüft.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-16
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 17
-
-
- Dokumentation FranzBasic
-
- Beispiel
-
- Input a%
- If a% = 1 Then
- Gosub Sub1()
- Elseif a% = 2 Then
- Gosub Sub2()
- Elseif a% = 3 Then
- Gosub Sub3()
- Else
- Print "Fehlanzeige"
- Endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-17
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 18
-
-
- Dokumentation FranzBasic
-
- FOR ... ENDFOR
-
- Art: Statement
-
- Form:
-
- For Zähl = Anf To Ende [Step Schritt]
- ...
- Endfor
-
- Zähl: Integer, Real, Long,
- Double - Variable
- Anf, Ende, Schritt:
- Integer, Real, Long, Double
-
-
- Beschreibung:
-
- Die FOR-Anweisung stellt eine Programm-
- Schleife dar. Die Programmanweisungen
- zwischen 'FOR' und 'ENDFOR' werden unter
- Kontrolle der Variablen <Zähl> wiederholt
- durchlaufen. <Zähl> wird zunächst auf den
- Wert <Anf> gesetzt. Bei jedem Durchlauf
- wird ihr Wert um <Schritt> erhöht. Ist der
- Anweisungsteil 'STEP Schritt' nicht
- vorhanden, wird 1 als Schrittweite
- angenommen. Wenn <Zähl> = <Ende> ist, wird
- die Schleife nach dem Durchlauf bei
- 'ENDFOR' verlassen.
-
- <Anf>, <Ende>, <Schritt> können Konstanten
- oder Variablen sein. Sie sollten alle vom
- gleichen Typ sein, um Wandlungsoperationen
- zwischen den einzelnen Typen zu vermeiden.
-
-
-
-
-
- 4-18
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 19
-
-
- Dokumentation FranzBasic
-
- Als <Zähl> und damit entsprechend letztem
- Abschnitt auch <Anf>, <Ende>, <Schritt>
- sollten nur Integer- oder Long-Variablen
- eingesetzt werden, da Real- und Double-
- Variablen nur eine beschränkte Genauigkeit
- haben. Damit ist der Vergleich ob <Zähl> =
- <Ende> ist im allgemeinen nicht korrekt
- durchzuführen! Die Schleife wird nicht
- beendet und läuft endlos.
-
- Da der Zahlenbereich von Integers im
- allgemeinen ausreichend ist, werden sie
- bevorzugt als <Zähl> in 'FOR'-Schleifen
- eingesetzt.
-
- 'FOR'-Schleifen können vorzeitig durch die
- 'BREAK'-Anweisung verlassen werden. Wird
- eine 'BREAK'-Anweisung beim Durchlaufen
- einer 'FOR'-Schleife erkannt, wird sofort
- zur nächsten Anweisung nach 'ENDFOR'
- verzweigt.
-
- Beispiel
-
- For i% = 1 To 20
- s% = s% + i%
- If s% > 100 Then Break
- 'Vorzeitiger Abbruch
- Print "i%=";i%*10
- Endfor
-
- Siehe auch:
-
- BREAK
-
-
-
-
-
-
- 4-19
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 20
-
-
- Dokumentation FranzBasic
-
- WHILE ... WEND
-
- Art: Statement
-
- Form:
-
- While Ausdruck
- ...
- Wend
-
- Ausdruck: Logischer Ausdruck
-
- Beschreibung:
-
- 'WHILE' leitet eine Programm-Schleife ein,
- die solange durchlaufen wird wie der
- logische Ausdruck <Ausdruck> WAHR ist. Ist
- <Ausdruck> bei Eintritt in die Schleife
- FALSCH, wird diese nicht durchlaufen,
- sondern direkt hinter das Ende der
- Programmschleife verzweigt. Das Ende der
- Programmschleife wird durch 'WEND'
- markiert.
-
- Unabhängig vom Ergebnis von <Ausdruck> kann
- die Schleife mit 'BREAK' verlassen werden.
- Wird eine 'BREAK'-Anweisung beim
- Durchlaufen einer 'WHILE'-Schleife erkannt,
- wird sofort zur nächsten Anweisung nach
- 'WEND' verzweigt.
-
-
-
-
-
-
-
-
-
-
- 4-20
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 21
-
-
- Dokumentation FranzBasic
-
- Beispiel
-
- i% = 0
- While i% <= 20
- s% = s% + i%
- If s% > 100 Then Break
- 'Vorzeitiger Abbruch
- Print "i%=";i%*10
- Wend
-
- Siehe auch:
-
- BREAK
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-21
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 22
-
-
- Dokumentation FranzBasic
-
- REPEAT ... UNTIL
-
- Art: Statement
-
- Form:
-
- Repeat
- ...
- Until Ausdruck
-
- Ausdruck: Logischer Ausdruck
-
- 'REPEAT' leitet eine Programmschleife ein,
- die durch 'UNTIL' abgeschlossen wird. Ist
- <Ausdruck> bei Überprüfung durch 'UNTIL'
- FALSCH wird die Schleife wiederholt, ist
- sie WAHR wird die Schleife verlassen und
- zur nächsten Anweisung fortgeschritten.
-
- Im Gegensatz zur 'WHILE'-Schleife wird die
- 'REPEAT'-Schleife immer mindestens einmal
- durchlaufen, da über die Wiederholung der
- Schleife erst am Schleifenende durch
- 'UNTIL' entschieden wird.
-
- Wird eine 'BREAK'-Anweisung beim
- Durchlaufen einer 'REPEAT'-Schleife
- erkannt, wird sofort zur nächsten Anweisung
- nach 'UNTIL' verzweigt.
-
-
-
-
-
-
-
-
-
-
-
- 4-22
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 23
-
-
- Dokumentation FranzBasic
-
- Beispiel:
-
- i% = 0
- Repeat
- s% = s% + i%
- If s% > 100 Then Break
- 'Vorzeitiger Abbruch
- Print "i%=";i%*10
- Until i% > 20
-
- Siehe auch:
-
- BREAK
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-23
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 24
-
-
- Dokumentation FranzBasic
-
- BREAK
-
- Art: Statement
-
- Form:
-
- Break
-
- Beschreibung:
-
- Durch 'BREAK' wird die momentan
- abgearbeitete Schleife bedingungslos
- verlassen. Die Programmausführung wird mit
- der nächsten Anweisung nach dem
- Schleifenende fortgesetzt.
-
- Ausserhalb von Schleifen ist die Verwendung
- von 'BREAK' nicht zugelassen.
-
- Siehe auch:
-
- FOR, WHILE, REPEAT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-24
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 25
-
-
- Dokumentation FranzBasic
-
- STOP
-
- Art: Statement
-
- Form:
-
- Stop
-
- Beschreibung:
-
- 'STOP' beendet den Programmablauf. Am Ende
- eines Programmtexts braucht 'STOP' nicht zu
- stehen, es wird vom Übersetzer automatisch
- eingefügt.
-
- Beispiel:
-
- Open "I",#1,"File1"
- If error%() <> 0 Then Stop
-
- 'Abbruch bei Open-Error
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-25
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 26
-
-
- Dokumentation FranzBasic
-
- PAUSE
-
- Art: Statement
-
- Form:
-
- Pause [Str$]
-
- Str$: String
-
- Beschreibung:
-
- 'PAUSE' gibt den String <Str$> auf den
- Bildschirm aus und hält das Programm an.
- Erst wenn der Benutzer eine beliebige Taste
- auf der Tastatur gedrückt hat, wird der
- Programmablauf fortgesetzt.
-
- Fehlt <Str$> wird stattdessen ein
- Doppelpunkt ausgegeben
-
- Beispiel:
-
- Pause "Bitte Diskette in A: einlegen"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-26
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 27
-
-
- Dokumentation FranzBasic
-
- GOTO
-
- Art: Statement
-
- Form:
-
- Goto Label
-
- Beschreibung:
-
- 'GOTO' bewirkt eine unbedingte Verzweigung
- des Programmablaufs zu der Anweisung,
- welche auf die Sprungmarke <Label> folgt.
- <Label> ist ein beliebiger alphanumerischer
- Name mit einem angehängtem ':'. Auf der
- gleichen Zeile darf keine Programmanweisung
- stehen.
-
- Beispiel:
-
- If a% = 0 Then Goto Ende
- Ende:
- Stop
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-27
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 28
-
-
- Dokumentation FranzBasic
-
- SUBROUTINE
-
- Art: Statement
-
- Form:
-
- Subroutine Name[([VAR]Par[,...)]]
- ...
- Endsub
-
- Name: Variablenname
- VAR: reserviertes Wort
- Par: Variablenname
-
- Beschreibung:
-
- 'SUBROUTINE' leitet ein Unterprogramm ein.
- Alle nachfolgenden Programmanweisungen sind
- Bestandteil des Unterprogramms, bis dieses
- durch die Anweisung 'ENDSUB' abgeschlossen
- wird.
-
- <Name> ist der Name des Unterprogramms, auf
- den sich Aufrufe des Unterprogramms
- beziehen. Ein Unterprogramm kann sowohl als
- Prozedur durch die Anweisung 'GOSUB' als
- auch als Funktion in einem arithmetischen
- Ausdruck durch Nennung von <Name>
- aufgerufen werden. Soll ein Unterprogramm
- als Funktion aufgerufen werden (siehe
- Beispiel) muss der Unterprogramm-Name
- <Name> durch ein Paar runder Klammern
- gefolgt werden, auch wenn durch
- 'SUBROUTINE' ein Unterprogramm ohne
- Parameter definiert wird.
-
-
-
-
-
- 4-28
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 29
-
-
- Dokumentation FranzBasic
-
- Der Name des Unterprogramms legt auch
- seinen Datentyp fest, analog zu den
- Namenskonventionen für den Datentype von
- Variablen. Dies ist wichtig für
- Unterprogramme, die als Funktion in
- arithmetischen Ausdrücken aufgerufen werden
- sollen und mit 'RETURN' einen Wert
- zurückgeben.
-
- Wenn ein Unterprogramm keine Parameter
- übernimmt kann <Name> durch ein Paar leerer
- runder Klammern '()' gefolgt werden, diese
- können jedoch auch fehlen.
-
- Ansonsten werden zwischen runden Klammern
- die Formal-Parameter <Par> des
- Unterprogramms definiert. Dieses sind
- beliebige Variablen (einfache Datentypen,
- Felder, Records) die als Platzhalter für
- die Aktual-Parameter stehen, die beim
- Unterprogrammaufruf übergeben werden. Beim
- Aufruf eines Unterprogramms müssen Formal-
- und Aktual-Parameter nach Zahl und Art
- übereinstimmen. Bei Feldern muss in
- Klammern die Anzahl der Dimension des
- Feldes angedeutet werden. Soll zum Beispiel
- ein zweidimensionales Feld beim
- Unterprogrammaufruf übergeben werden, muß
- der Formalparameter z. B. 'Feld(,)' heißen.
- Bei Records muß das reservierte Word
- 'RECORD', dann der Record-Type, dann der
- Formalparametername angegeben werden (siehe
- Beispiel).
-
- Hat das Unterprogramm als Formalparameter
- einen einfachen Datentyp, kann dieser beim
- Aufruf auch durch ein Feld-Element eines
-
-
-
- 4-29
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 30
-
-
- Dokumentation FranzBasic
-
- Feldes vom gleichen Typ abgedeckt werden
- als Aktual-Parameter
-
- Formal-Parameter werden vom Übersetzer wie
- lokale Variablen behandelt (siehe 'LOCAL')
- und können wie diese innerhalb des
- Unterprogramms verarbeitet werden. Einfache
- Datentypen werden 'by value' übergeben,
- Felder und Records 'by reference'. 'by
- value' bedeutet, daß bei
- Unterprogrammaufruf eine lokale Kopie des
- übergebenen Aktualparameters erzeugt und
- der Wert hierin abgelegt wird. Bei Änderung
- der Variablen wird die Kopie verändert, das
- Original im rufenden Programm bleibt
- erhalten. 'by reference' bedeutet, daß die
- Adresse des Aktualparameter übergebenen
- wird und Änderungen das Original ändern.
-
- Felder und Records lassen sich wegen ihrer
- Größe nur 'by reference' übergeben. Bei
- einfachen Datentypen läßt sich eine
- Übergabe 'by reference' anstelle der
- standardmäßigen Übergabe 'by value' durch
- Angabe des reservierten Wortes 'VAR' vor
- dem Namen des Formal-Parameter by der
- 'SUBROUTINE'-Deklaration erzwingen. Diesen
- Formal-Parametern dürfen dann beim
- Unterprogramm-Aufruf keine Konstanten
- übergeben werden!
-
- Ein Unterprogramm muß definiert sein, bevor
- sein Name im Programmtext als Aufruf
- erscheint. Unterprogramme können von
- anderen Unterprogrammen gerufen werden.
-
-
-
-
-
- 4-30
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 31
-
-
- Dokumentation FranzBasic
-
- Beispiel:
-
- Dim areal(10,10)
-
- Subroutine Sub1%(a$, a(,), b%, Record
- Rtype R)
- Local i%, d%
- d% = 0
- For i% = 1 To b%
- d% = d% + a(i%,i%)
- Endfor
- Print a$
- Return d%
- Endsub
-
- Gosub Sub1(meldung$(23), areal, 5, R1)
- Dgnl% = Sub1("Funktion", areal, 3, R1)
-
-
- Dieses Beispiel zeigt ein Unterprogramm von
- Typ Integer. Es zeigt sowohl Eigenschaft
- einer Funktion, indem es eine Wert
- zurückgibt, der in arithmetischen
- Ausdrücken verarbeitet wird, als auch
- Eigenschaften einer Prozedur, indem es eine
- Meldung ausgibt, ohne das das rufende
- Programm dieses unmittelbar gewahr wird.
-
- Siehe auch:
-
- GOSUB, RETURN
-
-
-
-
-
-
-
-
-
- 4-31
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 32
-
-
- Dokumentation FranzBasic
-
- RETURN
-
- Art: Statement
-
- Form:
-
- Return Wert
-
- Wert: Variable, Konstante
-
- Beschreibung:
-
- 'RETURN' beendet ein Unterprogramm und gibt
- dem aufrufenden Programmteil den Wert
- <Wert> zurück. 'RETURN' kann am Ende eines
- Unterprogramms stehen, aber auch an
- beliebiger Stelle für einen vorzeitigen
- Abbruch. Ein Unterprogramm braucht keine
- 'RETURN'-Anweisung zu enthalten, es wird
- dann an der 'ENDSUB'-Anweisung beendet.
-
- Der Datentyp von <Wert> muß mit dem
- Datentyp des Unterprogramms übereinstimmen.
-
- Außerhalb von Unterprogrammen ist 'RETURN'
- nicht zugelassen.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-32
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 33
-
-
- Dokumentation FranzBasic
-
- Beispiel:
-
- Subroutine Sub2%()
- ...
- If ... Then Return 0.0
- ...
- Return a
- Endsub
-
-
- Siehe auch:
-
- SUBROUTINE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-33
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 34
-
-
- Dokumentation FranzBasic
-
- GOSUB
-
- Art: Statement
-
- Form:
-
- Gosub Name[([Par][,...])]
-
- Beschreibung:
-
- 'GOSUB' ruft das Unterprogramm <Name> auf.
- Die Programmabarbeitung verzweigt zum
- ersten ausführbaren Befehl des
- Unterprogramms. Nach Beenden des
- Unterprogramms durch 'ENDSUB' oder 'RETURN'
- wird die Programausführung mit der nächsten
- auf 'GOSUB' folgenden Programmanweisung
- fortgeführt.
-
- Hat das gerufene Unterprogramm <Name> keine
- Parameter, so kann an den Namen ein Paar
- leerer runder Klammern angehängt werden,
- diese können entfallen. Hat das
- Unterprogramm Parameter, dann werden die
- als Aktualparameter zu übergebenden
- Variablen zwischen runden Klammern durch
- Komma getrennt aufgezählt. Ihre Anzahl und
- die Datentypen müssen mit der Anzahl und
- den Datentypen der Formalparameter des
- Unterprogramms übereinstimmen.
-
-
-
-
-
-
-
-
-
-
- 4-34
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 35
-
-
- Dokumentation FranzBasic
-
- Beispiel:
-
- siehe 'SUBROUTINE'
-
- Siehe auch:
-
- SUBROUTINE, RETURN
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-35
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 36
-
-
- Dokumentation FranzBasic
-
-
- 4.3 Befehle zur Dateibearbeitung
-
- inklusive Dateneingabe über Tastatur und
- Datenausgabe auf Bildschirm und Drucker.
-
- OPEN
-
- Art: Statement
-
- Form:
-
- Open IO, Kennung, Name[, Rec]
-
- IO: String
- Kennung: s. u.
- Name$: String
- Rec: Record-Type
-
- Beschreibung:
-
- Die Datei <Name$> wird zur Bearbeitung
- geöffnet. <Name$> kann ein
- vollqualifizierter Dateiname sein mit
- Angabe von Laufwerk und Verzeichnis. <IO>
- ist ein String aus einem einzelnen Zeichen,
- das die gewünschte Dateibearbeitung
- festlegt:
-
- - "I" INPUT Datei wird gelesen
- - "O" OUTPUT Datei wird geschrieben
- - "U" UPDATE Datei wird gelesen und
- geschrieben
- - "R" RANDOM Random-Datei
-
- Kennung ist ein '#' gefolgt von einer
- Ganzzahl zwischen 1 und 250. Nachfolgende
-
-
-
- 4-36
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 37
-
-
- Dokumentation FranzBasic
-
- Lese- oder Schreibzugriffe erfolgen nicht
- über den Dateinamen <Name$>, sondern über
- diese Kennung. Solange die Datei geöffnet
- ist darf mit der gleichen Kennung keine
- weitere Datei geöffnet werden.
-
- Für Input geöffnete Dateien werden mit den
- Befehlen 'INPUT' und 'LINE INPUT' gelesen,
- für Output geöffnete Dateien werden mit
- 'PRINT' oder 'WRITE' beschrieben. Die
- Anzahl der mit einem Zugriff gelesenen bzw.
- geschriebenen Zeichen ist beliebig und kann
- schwanken. Für Update geöffnete Dateien
- können gelesen und geschrieben werden. Die
- Lese- und Schreib-Aktionen findet immer an
- der Stelle der Datei statt, die bei der
- vorhergehenden Aktion erreicht wurde.
-
- Wird das Ende einer für Input oder Update
- geöffneten Datei erreicht, werden keine
- Zeichen gelesen und ein Runtime-Error
- generiert, der mit der Funktion 'ERROR%'
- festgestellt werden kann.
-
- Eine für Input oder Update zu öffnende
- Datei muß vorhanden sein, ansonsten wird
- ein Runtime-Error generiert. Eine für
- Output zu öffnende Datei wird neu kreiert,
- eine eventuell vorhandene wird dabei
- inhaltlich gelöscht.
-
- Die Angabe von <Rec> erfolgt nur für
- Random-Dateien. Aus dem Record-Type
- übernimmt der Übersetzer die Satzlänge.
- Random-Dateien können nach dem Öffnen
- sowohl gelesen ('GET') als auch geschrieben
-
-
-
-
- 4-37
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 38
-
-
- Dokumentation FranzBasic
-
- ('PUT') werden, jedoch nur mit Sätzen
- fester Länge.
-
- Runtime-Errors: 1, 4
-
- Beispiel:
-
- Open "I", #1, "c:\Mverz\Fakt.txt"
-
- Rectype Arttype
- ...
- Endrec
- Open "R", #9, "artikel.dat", Arttype
-
- Siehe auch:
-
- CLOSE, INPUT, LINE INPUT, PRINT, WRITE,
- GET, PUT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-38
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 39
-
-
- Dokumentation FranzBasic
-
- CLOSE
-
- Art: Statement
-
- Form:
-
- Close Kennung
-
- Kennung: siehe 'OPEN'
-
- Beschreibung:
-
- Die mit 'OPEN' unter <Kennung> geöffnete
- Datei wird geschlossen. Es können keine
- weiteren Lese- oder Schreib-Operationen
- stattfinden. <Kennung> darf wieder zur
- Öffnung anderer Dateien verwendet werden.
-
- Beispiel:
-
- Close #3
-
- Siehe auch:
-
- OPEN
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-39
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 40
-
-
- Dokumentation FranzBasic
-
- INPUT
-
- Art: Statement
-
- Form:
-
- 1. Input [Prompt$;]Var [,Var...]
-
- 2. Input Kennung, Var [,Var...]
-
- Prompt$: String
- Var: Variable
- Kennung: siehe 'OPEN'
-
- Beschreibung:
-
- 'INPUT' liest Daten über Tastatur (1. Form)
- oder aus Dateien ein (2. Form). Zum
- Einlesen aus einer Datei wird die Kennung
- einer zuvor geöffneten Datei angegeben,
- ansonsten wird die Eingabe über Tastatur
- erwartet.
-
- Bei Tastatureingabe kann der String
- <Prompt$> als Aufforderung zur Eingabe
- eingesetzt werden, fehlt er so wird mit
- einem ':' zur Eingabe aufgefordert.
-
- Es werden Daten im ASCII-Format erwartet.
- Als Trennzeichen zwischen den Variablen
- werden ',' und 'CR' (Zeilenende) erkannt.
-
- Man kann die Variablen auch durch ein Paar
- Anführungszeichen "..." einrahmen. Bei
- String-Daten können die Strings dann auch
- Kommas enthalten, die ansonsten als
- Trennzeichen behandelt würden.
-
-
-
- 4-40
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 41
-
-
- Dokumentation FranzBasic
-
- Runtime-Errors: 2
-
- Beispiel:
-
- Input "Bitte drei Zahlen";a%,b%,c%
- -->Bitte drei Zahlen:
- <--1,2,3
- Print a%,b%,c%
- 1 2 3
-
- Input #1, a%, b%, c%
-
- Siehe auch:
-
- OPEN, LINE INPUT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-41
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 42
-
-
- Dokumentation FranzBasic
-
- LINE INPUT
-
- Art: Statement
-
- Form:
-
- 1. Line Input [Prompt$;]Var [,Var...]
-
- 2. Line Input Kennung, Var [,Var...]
-
- Prompt$: String-Konstante
- Var: Variable
- Kennung: siehe 'OPEN'
-
- Beschreibung:
-
- 'LINE INPUT' arbeitet wie 'INPUT', mit dem
- Unterschied, das als Trennzeichen nur 'CR'
- (Zeilenende) gewertet wird.
-
- Runtime-Errors: 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-42
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 43
-
-
- Dokumentation FranzBasic
-
- Beispiel:
-
- Line Input "Bitte 3 Wörter";a$,b$,c$
- -->Bitte 3 Wörter:
- <--abc
- -->:
- <--2,2
- -->:
- <--123
- Print a$,b$,c$
- abc 2,2 123
-
- Input #1, a%, b%, c%
-
- Siehe auch:
-
- OPEN, INPUT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-43
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 44
-
-
- Dokumentation FranzBasic
-
- PRINT
-
- Art: Statement
-
- Form:
-
- 1. Print Data [,Data...]
-
- 2. Print Kennung, Data [,Data...]
-
- Data: Variable, Konstante
- Kennung: siehe OPEN.
-
- Beschreibung:
-
- 'PRINT' gibt Daten auf den Bildschirm (1.
- Form) oder in eine Datei aus (2. Form). Die
- Daten werden in ASCII-Form ausgegeben.
- Werden die einzelnen Ausgabedaten <Data>
- durch Kommas getrennt, werden die Daten auf
- Spalten positioniert mit einer
- Spaltenbreite von 12 Zeichen. Werden statt
- Kommas Semikolons gesetzt, werden die Daten
- ohne Zwischenraum hintereinandergesetzt.
-
- Folgt hinter dem letzten <Data> ein Komma
- oder Semikolon, wird beim nächsten 'PRINT'
- an der aktuellen Stelle weiter ausgegeben,
- ansonsten wird ein 'CR' (Zeilenende)
- erzeugt. Der nächste 'PRINT' beginnt dann
- auf einer neuen Zeile.
-
- Die Ausgabedaten <Data> können durch die
- Klausel 'USING' gefolgt von einer
- Ausgabemaske vor der Ausgabe aufbereitet
- werden. Die Ausgabemaske kann die Zeichen
- '#',',' und '.' enthalten. '.' markiert den
-
-
-
- 4-44
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 45
-
-
- Dokumentation FranzBasic
-
- Dezimalpunkt, '#' ist ein Platzhalter für
- ein beliebiges Zeichen aus dem
- auszugebenden <Data>, ',' sind Tausender-
- Trennzeichen, welche gegebenenfalls in die
- Zeichenfolge für <Data> eingefügt werden.
- Die Ausgabemaske gilt solange für jedes
- <Data> bis eine neue definiert wird oder
- mit 'USING ""' die Ausgabemaske intern
- gelöscht wird.
-
- Runtime-Errors: 2
-
- Beispiel:
-
- Print "123";"456","789"
- -->123456 789
-
- A = 1000.0
- Print A,Using"##,###.##";A
- -->1000.000000 1,000.00
-
-
- Siehe auch:
-
- OPEN, WRITE, LPRINT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-45
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 46
-
-
- Dokumentation FranzBasic
-
- LPRINT
-
- Art: Statement
-
- Form:
-
- Lprint Data [,Data...]
-
- Data: Variable, Konstante
-
- Beschreibung:
-
- 'LPRINT' arbeitet wie 'PRINT' in der 1.
- Form, gibt jedoch die Daten nicht auf dem
- Bildschirm sondern auf dem Drucker aus.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-46
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 47
-
-
- Dokumentation FranzBasic
-
- WRITE
-
- Art: Statement
-
- Form:
-
- Write Kennung, Data [,Data...]
-
- Beschreibung:
-
- Wie 'PRINT' in der zweiten Form gibt
- 'WRITE' Daten in Dateien aus. Kommas
- zwischen den einzelnen <Data> bewirken
- jedoch keine Spalteneinteilung, sondern
- eine Ausgabe von Kommas in die Datei. Beim
- Wiedereinlesen der Datei mit Input können
- diese dann als Trennzeichen interpretiert
- werden.
-
- Semikolons werden wie Kommas behandelt.
- Steht am Zeilenende kein Komma (Semikolon),
- wird eine neue Ausgabezeile erzeugt (CR),
- sonst ein Komma ausgegeben und bei der
- nächsten Ausgabe-Anweisung an dieser Stelle
- fortgesetzt.
-
- Strings werden mit einem Paar
- Anführungszeichen "..." ausgegeben, um
- eventuell im String enthaltene Kommas beim
- Wiedereinlesen nicht als Trennzeichen
- wirken zu lassen (siehe 'INPUT').
-
- Runtime-Errors: 2
-
-
-
-
-
-
-
- 4-47
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 48
-
-
- Dokumentation FranzBasic
-
- Beispiel:
-
- A = 100.0 : A$ = "ABC,DEF"
- Write #2,A,A$,12
- -->100.0,"ABC,DEF",12 (in Datei)
-
- siehe auch:
-
- INPUT, PRINT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-48
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 49
-
-
- Dokumentation FranzBasic
-
- GET
-
- Art: Statement
-
- Form:
-
- Get Kennung, Satznr%, Satz
-
- Kennung: siehe 'INPUT'
- Satznr%: Integer
- Satz: Record
-
- Beschreibung:
-
- 'GET' liest Daten aus einer Random-Datei.
- Die Datei muß mit 'OPEN' als Random-Datei
- geöffnet werden. Random-Dateien bestehen
- aus Sätzen fester Länge. Die Sätze werden
- als Ganzes gelesen und geschrieben. Sätze
- werden durch eine Satznummer identifiziert.
- Der mit 'GET' aus der Datei gelesene Satz
- mit Satznummer <Satznr%> wird im Record
- <Satz> abgelegt.
-
- Runtime-Errors: 2, 3
-
- Beispiel:
-
- Get #3,101,Asatz
-
- Siehe auch:
-
- PUT, OPEN
-
-
-
-
-
-
-
- 4-49
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 50
-
-
- Dokumentation FranzBasic
-
- PUT
-
- Art: Statement
-
- Form:
-
- Put Kennung, Satznr%, Satz
-
- Kennung: siehe 'INPUT'
- Satznr%: Integer
- Satz: Record
-
- Beschreibung:
-
- 'PUT' schreibt Sätze fester Länge in eine
- Random-Datei. Die Datei muß als Random-
- Datei geöffnet werden (siehe OPEN). Die
- Daten aus dem Record <Satz> werden unter
- der Satznummer <Satznr%> gespeichert.
-
- Runtime-Errors: 2, 3
-
- Beispiel:
-
- Put #2,999,Asatz
-
- Siehe auch:
-
- INPUT, GET
-
-
-
-
-
-
-
-
-
-
-
- 4-50
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 51
-
-
- Dokumentation FranzBasic
-
- ERASE
-
- Art: Statement
-
- Form:
-
- Erase Name$
-
- Name$: String
-
- Beschreibung:
-
- 'ERASE' löscht von der Platte die Datei
- <Name$>. <Name$> kann ein
- vollqualifizierter Pfadname mit Angabe von
- Laufwerk und Verzeichnis sein.
-
- Beispiel:
-
- Erase "c:\mverz\abc.txt"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-51
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 52
-
-
- Dokumentation FranzBasic
-
- RENAME
-
- Art: Statement
-
- Form:
-
- Rename Alt$, Neu$
-
- Alt$: String
- Neu$: String
-
- 'RENAME' benennt eine Datei um. <Alt$> ist
- der bestehende Name einer Datei. Dieser
- Name kann Laufwerk und Verzeichnis
- enthalten. <Neu$> ist der neue Dateiname,
- er darf weder Laufwerk noch Verzeichnis
- enthalten, da diese Angaben von <Alt$>
- übernommen werden.
-
- Beispiel:
-
- Rename "c:\mverz\abc", "123"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-52
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 53
-
-
- Dokumentation FranzBasic
-
- INKEY$
-
- Art: Statement
-
- Form:
-
- Inkey$ Str$
-
- Str$: Stringvariable
-
- Beschreibung:
-
- 'INKEY$' stellt fest, ob seit der letzen
- 'INPUT'- oder 'INKEY$'-Anweisung ein
- Zeichen über Tastatur eingeben wurde. Wenn
- ja, wird dieses Zeichen in <Str$>
- zurückgegeben, wenn nein wird eine leere
- Zeichenkette "" zurückgegeben. 'INKEY$'
- wartet also nicht auf eine Eingabe wie
- 'INPUT', sondern kehrt sofort zurück.
-
- Beispiel:
-
- Inkey$ a$
- If a$ <> "" Then Break
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-53
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 54
-
-
- Dokumentation FranzBasic
-
- LASTKEY%
-
- Art: Funktion
-
- Form:
-
- Lastkey%()
-
- Beschreibung:
-
- 'LASTKEY%' stellt fest, welches Zeichen
- zuletzt von einer Programmanweisung über
- Tastatur eingelesen wurde. 'LASTKEY%'
- stellt also ein Zeichen zur Verfügung, das
- bereits von einer anderen Anweisung
- bearbeitet wurde. Dies ist nützlich in
- Zusammenarbeit mit Befehlen wie 'MENU' oder
- 'MESSAGE', die auf bestimmte
- Benutzereingaben hin beendet werden. Mit
- 'LASTKEY%' lässt sich die letzte Eingabe
- zur Bearbeitung holen.
-
- Beispiel:
-
- Menu MString$
- If lastkey%() = 27 Then Return
- ' 27 = ESC
-
- siehe auch:
-
- MENU, MESSAGE
-
-
-
-
-
-
-
-
-
- 4-54
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 55
-
-
- Dokumentation FranzBasic
-
-
- 4.4 Anweisungen zur Datenbank - Bearbeitung
-
- Runtime-Fehler für Datenbank-Befehle: 20-31
-
- DBCREATE
-
- Art: Statement
-
- Form:
-
- Dbcreate Name$, Rec
-
- Name$: String
- Rec: Record-Type
-
- Beschreibung:
-
- 'DBCREATE' erzeugt eine dBase-III-
- kompatible Datenbank. <Name> ist der Name
- der Datenbank. Sie besteht aus den Dateien
- <Name>.dbf und <Name>.ndx. Die Struktur der
- Datenbank hat die Struktur des Record-
- Type's <Rec>.
-
- Mit 'DBCREATE' wird die Datenbank nicht
- gleichzeitig geöffnet.
-
- Mit 'ERASE' kann die Datenbank durch
- Löschen Ihrer beiden Dateien wieder
- gelöscht werden.
-
-
-
-
-
-
-
-
-
- 4-55
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 56
-
-
- Dokumentation FranzBasic
-
- Beispiel:
-
- Rectype Arttype
- ...
- Endrec
- Dbcreate "Artikel",Arttype
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-56
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 57
-
-
- Dokumentation FranzBasic
-
- DBOPEN
-
- Art: Statement
-
- Form:
-
- Dbopen Kennung, Name$
-
- Kennung: s. u.
- Name$: String
-
- Beschreibung:
-
- Die Datenbank <Name$> wird durch 'DBOPEN'
- zur Bearbeitung geöffnet.
-
- Kennung ist ein '#' gefolgt von einer
- Ganzzahl zwischen 1 und 4. Maximal vier
- Datenbanken können gleichzeitig geöffnet
- werden. Nachfolgende Lese- oder
- Schreibzugriffe erfolgen nicht über den
- Datenbanknamen <Name$>, sondern über diese
- Kennung. Solange die Datenbank geöffnet ist
- darf mit der gleichen Kennung keine weitere
- Datenbank geöffnet werden. Es dürfen jedoch
- einfache Dateien mit einer gleichlautenden
- Kennung geöffnet werden, da zwischen
- Dateien-Kennung und Datenbank-Kennung
- unterschieden wird.
-
- Beispiel:
-
- Dbopen #2,"Artikel"
-
- Siehe auch:
-
- DBCREATE, DBCLOSE
-
-
-
- 4-57
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 58
-
-
- Dokumentation FranzBasic
-
- DBCLOSE
-
- Art: Statement
-
- Form:
-
- Dbclose Kennung
-
- Kennung: siehe 'DBOPEN'
-
- Beschreibung
-
- Die Datenbank <Kennung> wird durch
- 'DBCLOSE' geschlossen. Eine weitere
- Bearbeitung innerhalb des Programms ist
- nicht möglich. Unter <Kennung> können jetzt
- andere Datenbanken geöffnet werden.
-
- Beispiel:
-
- Dbclose #2
-
- Siehe auch:
-
- DBOPEN
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-58
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 59
-
-
- Dokumentation FranzBasic
-
- DBGET
-
- Art: Statement
-
- Form:
-
- Dbget Kennung, Schlüssel$, Satz
-
- Kennung: s. 'DBOPEN'
- Schlüssel$:String
- Satz: Record
-
- Beschreibung:
-
- Mit 'DBGET' wird ein Datensatz aus der
- Datenbank gelesen, die unter <Kennung>
- geöffnet wurde. Es wird derjenige Satz in
- den Record <Satz> gelesen, dessen
- Schlüsselfeld mit dem Inhalt des Strings
- <Schlüssel$> übereinstimmt. In FranzBasic
- ist das Schlüsselfeld immer das erste
- Element des Record-Types, mit dem bei
- 'DBCREATE' die Datenbank kreiert wurde. Der
- Record <Satz> sollte sinnvollerweise von
- diesem Record-Type sein, ansonsten ist das
- Verhalten von 'DBGET' unbestimmt.
-
- Ist in der Datenbank kein Satz mit dem
- Schlüssel <Schlüssel$> vorhanden, so wird
- der Satz mit dem nächst größeren Schlüssel
- (im lexikalischen Sinn) nach <Satz> geladen
- und ein Runtime-Error gesetzt.
-
- Sonderfälle:
-
- Einige Werte von <Schlüssel$> werden nicht
- als Satzschlüssel interpretiert, sondern
-
-
-
- 4-59
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 60
-
-
- Dokumentation FranzBasic
-
- als Steuerungsinformation. Sie dienen der
- absoluten und relativen Positionierung in
- der Datenbank.
-
- "^" Lesen ersten Satz
- "*" Lesen letzten Satz
- "+" Lesen nächsten Satz
- "-" Lesen voherigen Satz
-
- "+" und "-" lesen Datensätze, die in
- lexikalischer Reihenfolge Nachfolger bzw.
- Vorgänger des zuletzt gelesenen Satzes sind
- und erlauben somit ein sequentielles
- Bearbeiten der Datenbank. "^" und "*"
- erlauben die Positionierung auf Anfang und
- Ende der Datenbank. Beim Öffnen einer
- Datenbank ist diese automatisch auf den
- Anfang positioniert.
-
- Beispiel:
-
- Dbget #2,"4711", Artikelsatz
-
- Siehe auch:
-
- DBOPEN, DBPUT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-60
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 61
-
-
- Dokumentation FranzBasic
-
- DBPUT
-
- Art: Statement
-
- Form:
-
- Dbput Kennung, Satz
-
- Kennung: s. 'DBOPEN'
- Satz: Record
-
- Beschreibung:
-
- 'DBPUT' schreibt den Inhalt des Records
- <Satz> in die Datenbank <Kennung>. Als
- Schlüssel dient das erste Element des
- Records <Satz>. Der Schlüssel kann beliebig
- sein, beim Schreiben braucht keine
- Reihenfolge eingehalten werden.
-
- Beispiel:
-
- Dbput #2, Artikelsatz
-
- Siehe auch:
-
- DBOPEN, DBPGET
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-61
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 62
-
-
- Dokumentation FranzBasic
-
- DBDELETE
-
- Art: Statement
-
- Form:
-
- Dbdelete Kennung
-
- Kennung: s. 'DBOPEN'
-
- Beschreibung:
-
- 'DBPUT' löscht den zuletzt mit 'DBGET'
- gelesenen Datensatz der Datenbank
- <Kennung>. Achtung: ist der Satz, der von
- 'DBGET' gelesen werden soll nicht
- vorhanden, wird der nächste Satz geladen.
- Dieser würde dann auch mit 'DBDELETE'
- gelöscht! Sicherheitshalber sollte mit
- 'ERROR%()' die korrekte Ausführung des
- Lesebefehls 'DBGET' überprüft werden.
-
- Beispiel:
-
- Dbget #1,"4711", Artikelsatz
- If Error%() = 0 Then
- Dbdelete #1
- Else
- Print "Satz 4711 nicht vorhanden"
- Endif
-
-
-
-
-
-
-
-
-
-
- 4-62
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 63
-
-
- Dokumentation FranzBasic
-
- DBBROWSE
-
- Art: Statement
-
- Form:
-
- Dbbrowse Ken[, St$, Form$, x%, y%, z%]
-
- Ken: Dateikennung
- St$: String
- Form$: String
- x%: Integer
- y%: Integer
- z%: Integer
-
-
- Beschreibung:
-
- 'DBBROWSE' ermöglichst das Durchblättern
- (Browsing) einer Datenbank in
- tabellarischer Darstellung am Bildschirm.
- <Ken> ist die Dateikennung der zu
- bearbeitenden Datenbank, welche zuvor mit
- 'DBOPEN' geöffnet werden muß. Die weiteren
- Angaben sind optional.
-
- Soll das Durchblättern nicht vom ersten
- Satz der Datenbank an erfolgen, kann durch
- <St$> der Schlüssel des Startsatzes
- angegeben werden. Existiert der Satz nicht
- (oder ist <St$> ein Teilschlüssel) beginnt
- die Ausgabe beim nächsten Satz.
-
- Standardmäßig wird der komplette Datensatz
- angezeigt, begrenzt auf die Breite des
- Bildschirms, überzählige Zeichen werden
- abgeschnitten. Mit <Form$> können die
-
-
-
- 4-63
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 64
-
-
- Dokumentation FranzBasic
-
- einzelnen Elemente des Datensatzes in der
- Breite eingestellt oder ganz ausgelassen
- werden, um grosse Datensätze in sinnvoller
- Darstellung zeigen zu können. Dazu gibt man
- die erwünschten Spaltenbreiten für die
- Elemente des Datensatzes nacheinander durch
- Komma getrennt als String an:
-
- <Form$>: "n[,n...]"
- mit n: Integer
-
- <x%> und <y%> geben den linken oberen
- Eckpunkt des Fensters auf dem Bildschirm
- an, in dem die Datenbank gelistet wird.
- <z%> gibt die Anzahl der gleichzeitig
- dargestellten Datensätze an. Bei Fehlen von
- <x%>, <y%>, <z%> werden Standardwerte
- verwendet.
-
- Bedienung:
-
- PgUp/BildAuf: Zurückblättern
- ESC: Beenden
- beliebige Taste: Weiterblättern
-
- Beispiel:
-
- Dbopen #2,"Personal"
- Dbbrowse #2,"Müller","12,,8",4,6,10
- Dbclose #2
-
- Datenbank #2 wird geblättert ab Satz mit
- Schlüssel "Müller". Die Spaltenbreiten
- werden zur Darstellung mit 12 Zeichen für
- das erste Element (=Satzschlüssel), 0
- Zeichen für das zweite Element - d.h.
- dieses Element wird nicht dargestellt - und
- 8 Zeichen für das dritte Element. Alle
-
-
- 4-64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 65
-
-
- Dokumentation FranzBasic
-
- weiteren Elemente des Datensatzes werden
- mit ihrer Standardbreite angezeigt, sofern
- sie innerhalb des Bildschirms bleiben.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-65
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 66
-
-
- Dokumentation FranzBasic
-
-
- 4.5 Mathematische Funktionen
-
- Alle mathematische Funktionen nehmen eine
- numerische Konstante oder Variable
- (vorzugsweise vom Datentyp Real) als
- Argument und liefern ein Funktionsergebnis
- vom Datentyp Real. Wird ein anderer
- Datentyp als Real als Argument gegeben,
- wird intern eine Typwandlung durchgeführt
- unter Verbrauch von Speicherplatz und
- Rechenzeit durchgeführt.
-
- Einige Funktionen verlangen den Wert des
- Arguments in Radian. Es gilt:
-
- PI Radian = 360 Grad
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-66
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 67
-
-
- Dokumentation FranzBasic
-
- SIN
-
- Art: Funktion
-
- Form:
-
- Sin(y)
-
- y: numerische Variable
-
- Beschreibung:
-
- 'SIN' ermittelt den Sinus-Wert des
- Funktionsarguments <y>. Der Wert von <y>
- muß in Radians gegeben sein.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-67
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 68
-
-
- Dokumentation FranzBasic
-
- COS
-
- Art: Funktion
-
- Form:
-
- Cos(y)
-
- y: numerische Wert
-
- Beschreibung:
-
- 'COS' ermittelt den Cosinus-Wert des
- Funktionsarguments <y>. Der Wert von <y>
- muß in Radians gegeben sein.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-68
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 69
-
-
- Dokumentation FranzBasic
-
- TAN
-
- Art: Funktion
-
- Form:
-
- Tan(y)
-
- y: numerischer Wert
-
- Beschreibung:
-
- 'TAN' ermittelt den Tangens-Wert des
- Funktionsarguments <y>. Der Wert von <y>
- muß in Radians gegeben sein.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-69
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 70
-
-
- Dokumentation FranzBasic
-
- ATN
-
- Art: Funktion
-
- Form:
-
- Atn(y)
-
- y: numerischer Wert
-
- Beschreibung:
-
- 'ATN' ermittelt den Arcustangens-Wert des
- Funktionsarguments <y>. Das Ergebnis liegt
- im Bereich -PI/2 bis + PI/2.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-70
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 71
-
-
- Dokumentation FranzBasic
-
- EXP
-
- Art: Funktion
-
- Form:
-
- Exp(y)
-
- y: numerischer Wert
-
- Beschreibung:
-
- 'EXP' ermittelt den Exponential-Wert des
- Funktionsarguments <y>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-71
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 72
-
-
- Dokumentation FranzBasic
-
- LOG
-
- Art: Funktion
-
- Form:
-
- Log(y)
-
- y: numerischer Wert
-
- Beschreibung:
-
- 'LOG' ermittelt den natürlichen Logarithmus
- des Funktionsarguments <y>. Der Wert von
- <y> muß größer als Null sein.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-72
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 73
-
-
- Dokumentation FranzBasic
-
- SQR
-
- Art: Funktion
-
- Form:
-
- Sqr(y)
-
- y: numerischer Wert
-
- Beschreibung:
-
- 'SQR' ermittelt die quadratische Wurzel
- des Funktionsarguments <y>. Der Wert von
- <y> darf nicht negativ sein.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-73
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 74
-
-
- Dokumentation FranzBasic
-
-
- 4.6 String-Statements und -Funktionen
-
- SET$
-
- Art: Statement
-
- Form:
-
- Set$ String$, Index%, Teilstring$
-
- String$: Stringvariable
- Index%: Integer
- Teilstring$: String
-
- Beschreibung:
-
- 'SET$' überschreibt die Zeichen der
- Stringvariablen <String$> mit Zeichen aus
- dem String <Teilstring$>. <Index%> ist die
- Stelle innerhalb von <String$>, wo das
- erste Zeichen von <Teilstring$> plaziert
- wird. Das Überschreiben vergrößert die
- ursprüngliche Länge von <String$>, wenn die
- Länge von <Teilstring$> das erfordert.
-
- Beispiel:
-
- A$ = "ABcd" : Teil$ = "xx"
- Set$ A$,2,Teil$
- Print A$
- -->Axxd
-
- Siehe auch:
-
- INSERT$
-
-
-
-
- 4-74
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 75
-
-
- Dokumentation FranzBasic
-
- DELETE$
-
- Art: Statement
-
- Form:
-
- Delete$ String$, Index%, Anzahl%
-
- String$: Stringvariable
- Index%: Integer
- Anzahl%: Integer
-
- Beschreibung:
-
- 'DELETE$' löscht in der Stringvariablen
- <String$> ab der Stelle <Index%> <Anzahl%>
- Zeichen. <String$> wird entsprechend
- kürzer.
-
- Beispiel:
-
- A$ = "ABcd"
- Delete A$,2,2
- Print A$
- -->Ad
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-75
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 76
-
-
- Dokumentation FranzBasic
-
- INSERT$
-
- Art: Statement
-
- Form:
-
- Insert$ String$, Index%, Teilstring$
-
- String$: Stringvariable
- Index%: Integer
- Teilstring$: String
-
- Beschreibung:
-
- 'INSERT$' fügt <Teilstring$> an der Stelle
- <Index%> in <String$> ein.
-
- Beispiel:
-
- A$ = "Ad" : Teil$ = "Bc"
- Insert$ A$,2,Teil$
- Print A$
- -->ABcd
-
- Siehe auch:
-
- SET$
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-76
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 77
-
-
- Dokumentation FranzBasic
-
- INSTR%
-
- Art: Funktion
-
- Form:
-
- Instr%(String$, Teilstring$)
-
- String$: String
- Teilstring$: String
-
- Beschreibung:
-
- 'INSTR%' prüft ob <Teilstring$> in
- <String$> enthalten ist. Wenn ja, gibt
- 'INSTR%' die Stelle innerhalb von <String$>
- zurück, an der <Teilstring$> beginnt.
- Andernfalls wird 0 zurückgegeben.
-
- Beispiel:
-
- A$ = "ABcd"
- index% = Instr% (A$,"Bc")
- Print index%
- -->2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-77
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 78
-
-
- Dokumentation FranzBasic
-
- LEFT$
-
- Art: Funktion
-
- Form:
-
- Left$(String$, Anzahl%)
-
- String$: String
- Anzahl%: Integer
-
- Beschreibung:
-
- 'LEFT$' bildet aus dem 'linken' Teil von
- <String$> einen Teilstring der Länge
- <Anzahl%>, d.h. die ersten <Anzahl%>
- Zeichen bilden den zurückgegebenen neuen
- String. <String$> bleibt unverändert.
-
- Beispiel:
-
- A$ = Left$("ABcd",2)
- Print A$
- -->AB
-
- Siehe auch:
-
- RIGHT$, MID$
-
-
-
-
-
-
-
-
-
-
-
-
- 4-78
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 79
-
-
- Dokumentation FranzBasic
-
- RIGHT$
-
- Art: Funktion
-
- Form:
-
- Right$(String$, Anzahl%)
-
- String$: String
- Anzahl%: Integer
-
- Beschreibung:
-
- 'RIGHT$' bildet aus dem 'rechten' Teil von
- <String$> einen Teilstring der Länge
- <Anzahl%>, d.h. die letzten <Anzahl%>
- Zeichen bilden den zurückgegebenen neuen
- String. <String$> bleibt unverändert.
-
- Beispiel:
-
- Print Right$("ABcd",2)
- -->cd
-
- Siehe auch:
-
- LEFT$, MID$
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-79
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 80
-
-
- Dokumentation FranzBasic
-
- MID$
-
- Art: Funktion
-
- Form:
-
- Mid$(String$, Index%, Anzahl%)
-
- String$: String
- Index%: Integer
- Anzahl%: Integer
-
- Beschreibung:
-
- 'MID$' bildet aus <String$> einen
- Teilstring der Länge <Anzahl%> beginnend ab
- Zeichen <Index%>.
-
- Beispiel:
-
- A$ = "ABcd"
- A$ = Mid$(A$,2,2)
- Print A$
- -->Bc
-
- Siehe auch:
-
- LEFT$, RIGHT$
-
-
-
-
-
-
-
-
-
-
-
-
- 4-80
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 81
-
-
- Dokumentation FranzBasic
-
- TRIM$
-
- Art: Funktion
-
- Form:
-
- Trim$(String$)
-
- String$: String
-
- Beschreibung:
-
- 'TRIM$' schneidet von <String$> eventuell
- vorhandene nachfolgende Leerstellen ab.
-
- Beispiel:
-
- Rectype Rtype
- Recvar A$ 12
- Endrec
- Record Rtype R
- R.a$ = "123"
- B$ = R.a$+"!"
- Print B$
- -->123 !
- B$ = Trim$(R.a$)+"!"
- Print B$
- -->123!
-
- Siehe auch:
-
- LTRIM$
-
-
-
-
-
-
-
-
- 4-81
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 82
-
-
- Dokumentation FranzBasic
-
- LTRIM$
-
- Art: Funktion
-
- Form:
-
- Ltrim$(String$)
-
- String$: String
-
- Beschreibung:
-
- 'LTRIM$' schneidet von <String$> eventuell
- vorhandene führende Leerstellen ab.
-
- Beispiel:
-
- B$ = " 123"
- Print B$
- --> 123
- B$ = Trim$(B$)
- Print B$
- -->123
-
- Siehe auch:
-
- TRIM$
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-82
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 83
-
-
- Dokumentation FranzBasic
-
- LCASE$
-
- Art: Funktion
-
- Form:
-
- Lcase$(String$)
-
- String$: String
-
- Beschreibung:
-
- 'LCASE$' wandelt alle Großbuchstaben in
- <String$> in Kleinbuchstaben im
- zurückgegebenen String. <String$> bleibt
- unverändert.
-
- Beispiel:
-
- B$ = "ABcd"
- Print B$
- -->ABcd
- B$ = Lcase(B$)
- Print B$
- -->abcd
-
- Siehe auch:
-
- UCASE$
-
-
-
-
-
-
-
-
-
-
-
- 4-83
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 84
-
-
- Dokumentation FranzBasic
-
- UCASE$
-
- Art: Funktion
-
- Form:
-
- Ucase$(String$)
-
- String$: String
-
- Beschreibung:
-
- 'UCASE$' wandelt alle Kleinbuchstaben in
- <String$> in Großbuchstaben im
- zurückgegebenen String. <String$> bleibt
- unverändert.
-
- Beispiel:
-
- Print Ucase$("ABcd")
- -->ABCD
-
- Siehe auch:
-
- LCASE$
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-84
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 85
-
-
- Dokumentation FranzBasic
-
- LEN%
-
- Art: Funktion
-
- Form:
-
- Len%(String$)
-
- String$: String
-
- Beschreibung:
-
- 'LEN%' ermittelt die Länge von <String$>,
- d.h. die Anzahl der enthaltenen Zeichen.
-
- Beispiel:
-
- Print Len%("ABcd")
- -->4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-85
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 86
-
-
- Dokumentation FranzBasic
-
- ASC%
-
- Art: Funktion
-
- Form:
-
- Asc%(String$)
-
- String$: String
-
- Beschreibung:
-
- 'ASC%' liefert den ASCII-Zahlenwert des
- ersten Zeichens von <String$>.
-
- Beispiel:
-
- Print Asc%("ABcd")
- -->65
-
- Siehe auch:
-
- CHR$
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-86
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 87
-
-
- Dokumentation FranzBasic
-
- CHR$
-
- Art: Funktion
-
- Form:
-
- Chr$(n%)
-
- n%: Integer
-
- Beschreibung:
-
- 'CHR$' wandelt den Wert von <n%> in ein
- Zeichen laut ACSII-Tabelle. Umkehrfunktion
- zu 'ASC%'
-
- Beispiel:
-
- Print Chr$(65)
- -->A
-
- Siehe auch:
-
- ASC%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-87
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 88
-
-
- Dokumentation FranzBasic
-
- STR$
-
- Art: Funktion
-
- Form:
-
- Str$(n%)
-
- n%: numerische Konstante / Variable
-
- Beschreibung:
-
- 'STR$' macht aus der Zahl <n%> eine
- Zeichenkette.
-
- Beispiel:
-
- A$ = "**"+Str$(100.0)+"KG"
- Print A$
- -->**100.000000KG
-
- Siehe auch:
-
- VAL%, VAL
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-88
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 89
-
-
- Dokumentation FranzBasic
-
- VAL
-
- Art: Funktion
-
- Form:
-
- Val(String$)
-
- String$: String
-
- Beschreibung:
-
- 'VAL' wandelt <String$> in eine Realzahl.
- Zusammen mit 'VAL%' Umkehrfunktion zu
- 'STR$'.
-
- Beispiel:
-
- R = 100.0 + VAL("10.0")
- Print R
- -->110.000000
-
- Siehe auch:
-
- VAL%, STR$
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-89
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 90
-
-
- Dokumentation FranzBasic
-
- VAL%
-
- Art: Funktion
-
- Form:
-
- Val%(String$)
-
- String$: String
-
- Beschreibung:
-
- 'VAL%' wandelt <String$> in eine
- Integerzahl. Zusammen mit 'VAL'
- Umkehrfunktion zu 'STR$'.
-
- Beispiel:
-
- N% = 100 + VAL("10")
- Print N%
- -->110
-
- Siehe auch:
-
- VAL, STR$
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-90
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 91
-
-
- Dokumentation FranzBasic
-
-
- 4.7 Bildschirm-Steuerung
-
- CLS
-
- Art: Statement
-
- Form:
-
- Cls [n]
-
- n: Integer
-
- Beschreibung:
-
- 'CLS' löscht den Bildschirm. Ist ein
- Integer <n> zwischen 1 und 255 angegeben,
- wird der Bildschirm mit dem entsprechenden
- Zeichen laut ASCII-Zeichensatz gefüllt.
-
- Beispiel:
-
- Cls 176
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-91
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 92
-
-
- Dokumentation FranzBasic
-
- COLOUR
-
- Art: Statement
-
- Form:
-
- Colour v%[,h%]
-
- v%: Integer
- h%: Integer
-
- Beschreibung:
-
- 'COLOUR' stellt die Farben für Bildschirm-
- Ausgaben mit 'PRINT' ein. <v%> ist die
- Vordergrundfarbe, <h%> die
- Hintergrundfarbe, ist letztere nicht
- angegeben, bleibt die Hintergrundfarbe
- unverändert. Die möglichen Farben sind:
-
- 0 Schwarz
- 1 Blau
- 2 Grün
- 3 Hellblau
- 4 Rot
- 5 Violett
- 6 Gelb/Braun
- 7 Weiß
-
- Beispiel:
-
- Colour 7,1
-
-
-
-
-
-
-
-
- 4-92
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 93
-
-
- Dokumentation FranzBasic
-
- LOCATE
-
- Art: Statement
-
- Form:
-
- Locate x%, y%
-
- x%: Integer
- y%: Integer
-
- Beschreibung:
-
- 'LOCATE' setzt den Cursor auf dem
- Bildschirm auf Spalte <x%> und Zeile <y%>,
- mit 1 <= <x%> <= 80 und 1 <= <y%> <= 25.
-
- Beispiel:
-
- Locate 80, 25 ' Cursor links unten
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-93
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 94
-
-
- Dokumentation FranzBasic
-
-
- 4.8 Verschiedenes
-
- REM
-
- Art: Statement
-
- Form:
-
- Rem Str
-
- Str: Kommentar
-
- Beschreibung:
-
- 'REM' leitet eine Kommentarzeile ein. <Str>
- ist ein Kommentar, der vom Übersetzer nicht
- ausgewertet wird. 'REM' ist eine
- nichtausführbare Anweisung.
-
- Beispiel:
-
- Rem Dies ist ein Kommentar
-
- Siehe auch:
-
- '
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-94
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 95
-
-
- Dokumentation FranzBasic
-
- '
-
- Art: Statement
-
- Form:
-
- 'Str
-
- Str: Kommentar
-
- Beschreibung:
-
- ' leitet einen Kommentar ein. <Str> ist ein
- Kommentar, der vom Übersetzer nicht
- ausgewertet wird. ' ist eine
- nichtausführbare Anweisung. ' kann auch auf
- eine andere Anweisung in der Zeile folgen.
-
- Beispiel:
-
- x% = 0 'Dies ist ein Kommentar
-
- Siehe auch:
-
- REM
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-95
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 96
-
-
- Dokumentation FranzBasic
-
- ERROR%()
-
- Art: Funktion
-
- Form:
-
- Error%()
-
- Beschreibung:
-
- 'ERROR%()' liefert den zuletzt entstandenen
- Runtime-Error zurück.
-
- Beispiel:
-
- If Error%() <> 0 Then
- Print "Laufzeit-Fehler"
- Endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-96
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 97
-
-
- Dokumentation FranzBasic
-
- EXEC
-
- Art: Statement
-
- Form:
-
- 1. Exec Programm$
-
- 2. Exec Shell
-
- Programm$: Stringausdruck
-
- Beschreibung:
-
- Mit 'EXEC' können während der Abarbeitung
- eines Programms weitere Programme geladen
- und gestartet werden.
-
- Mit der ersten Form kann ein beliebiges
- Programm oder ein Kommando des
- Betriebssystems gestartet werden. Der
- String <Programm$> enthält den
- Programmnamen und etwaige Parameter genauso
- wie man sie auf Betriebssystem-Ebene
- eingeben würde.
-
- Mit der zweiten Form wird der
- Kommandoprozessor 'command.com' des
- Betriebssystems gestartet, dem dann auf
- Betriebssystem-Ebene Kommandos gegeben
- werden können. Durch Eingabe des MS-DOS-
- Kommandos 'EXIT' wird der Kommandoprozessor
- beendet.
-
- Das Programm, das durch 'EXEC' andere
- Programme startet, wird während der
- Laufzeit des gestarteten Programms
-
-
-
- 4-97
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 98
-
-
- Dokumentation FranzBasic
-
- angehalten. Nach Ende des gestarteten
- Programms bzw. nach Abarbeitung des
- Kommandos läuft das ursprüngliche Programm
- weiter
-
- Beispiel:
-
- Exec "dir *.bas"
-
- Exec "abc.exe"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-98
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 99
-
-
- Dokumentation FranzBasic
-
- INTERRUPT
-
- Art: Statement
-
- Form:
-
- Interrupt Nr%, Regs
-
- Nr%: Integer
- Regs: Record
-
- Beschreibung:
-
- 'INTERRUPT' erzeugt den Interrupt <Nr>.
- Voher werden die Register des Prozessors
- auf die Werte des Records <Regs> gesetzt.
- <Regs> ist ein Record aus sieben Integers,
- welche die Werte für die Prozessor-Register
- ax, bx, cx, dx, si, di, cflags (in dieser
- Reihenfolge) beinhalten.
-
- Nach Rückkehr vom Interrupt enthalten die
- Integers in <Regs> die Werte der Prozessor-
- Register aus der Interrupt-Routine.
-
- Beispiel:
-
- Rectype Register
- Recvar ax%, bx%, cx%, dx%
- Recvar si%, di%, flags%
- Endrec
- Record Register Reg
- Reg.ax% = 256 'ah = 1
- Reg.cx% = 256 + 7 'ch = 1, cl = 7
- Interrupt 16, Reg 'Block-Cursor setzen
-
-
-
-
-
- 4-99
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 100
-
-
- Dokumentation FranzBasic
-
- TIMEDATE$
-
- Art: Funktion
-
- Form:
-
- Timedate$(n)
-
- Beschreibung:
-
- 'TIMEDATE$' ermittelt Datum bzw. Uhrzeit.
- <n> ist ein Parameter, der das gewünschte
- Ergebnis selektiert:
-
- n=1 Zeit
- n=2 Datum amerikanische Form
- n=3 Datum deutsche Form
-
- Beispiel:
-
- Print Timedate$(1)
- -->17:24:12
- Print Timedate$(2)
- -->10/28/89
- Print Timedate$(3)
- -->28.10.89
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-100
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 101
-
-
- Dokumentation FranzBasic
-
-
- 4.9 FranzBasic Spezial
-
- FILES
-
- Art: Statement
-
- Form:
-
- Files Dir$, Ext$, File$
-
- Beschreibung:
-
- 'FILES' listet alle Dateien in einem
- Verzeichnis mit einer bestimmten Namens-
- Erweiterung (Extension) auf und bietet
- diese auf dem Bildschirm zur Auswahl an.
- <Dir$> enthält den Namen des
- Verzeichnisses, <Ext$> die
- Namenserweiterung ohne Punkt.
-
- <File$> enthält nach der Auswahl den Namen
- der vom Benutzer ausgewählten Datei ohne
- Namens-Erweiterung.
-
- Der Benutzer wählt aus den angebotenen
- Dateien eine durch Bewegen des weissen
- Leuchtbalkens und Drücken der Eingabetaste
- 'CR', durch Anklicken mit der Maus. Durch
- Eingabe eines Namens über Tastatur kann ein
- neuer Name erzeugt werden.
-
-
-
-
-
-
-
-
-
- 4-101
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 102
-
-
- Dokumentation FranzBasic
-
- Bedienung:
-
- Alphanumerische Tasten: Dateiname eingeben
- Cursor-Tasten: Bewegen des Leuchtbalkens
- Eingabe/Enter/CR: Auswahl des Namens unter
- Leuchtbalken
- Linke Maustaste: Auswahl des Namens unter
- Maus-Cursor
-
- Beispiel:
-
- Files "\basic", "bas", file$
-
- listet alle Dateien *.bas in Verzeichnis
- /basic zur Auswahl auf.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-102
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 103
-
-
- Dokumentation FranzBasic
-
- DIALOG
-
- Art: Statement
-
- Form:
-
- Dialog Str$, Var [, x%, y%]
-
- Str$: String
- Var: Variable
- x%, y%: Integers
-
- Beschreibung:
-
- Ähnlich wie 'INPUT' erfaßt 'DIALOG' einen
- Wert für die Variable <Var> mit <Str$> als
- Eingabeaufforderung (Prompt). 'DIALOG' ist
- jedoch mit einem Linienrahmen umgeben und
- bildet ein Fenster auf dem Bildschirm. Der
- unter dem Fenster liegende Bildschirmteil
- wird gerettet und nach Ende der Funktion
- Dialog wieder restauriert.
-
- Die Variable <Var> kann jedem einfachen
- Datentyp angehören oder ein Feldelement
- sein.
-
- <x%> und <y%> sind Bildschirmkoordinaten
- für die linke obere Ecke des Fensters für
- 'DIALOG'. Fehlen sie, wird x% = 2, y% = 2
- angenommen.
-
- Beispiel:
-
- Dialog "Kundennr.:", Kunr$
-
-
-
-
-
- 4-103
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 104
-
-
- Dokumentation FranzBasic
-
- FORM
-
- Art: Statement
-
- Form:
-
- Form Satz, Str$ [,x%, y%]
-
- Satz: Record
- Str$: String
- x%, y%: Integers
-
- Beschreibung:
-
- 'FORM' erfasst Daten für die Elemente des
- Records <Satz>. Der String <Str$> enthält
- die konstanten Teile der Erfassungsmaske
- (durch Semikolons getrennt), nämlich eine
- Überschrift und die einzelnen Eingabe-
- Aufforderungen für die Felder.
-
- 'FORM' erzeugt ein Fenster auf dem
- Bildschirm. Der unterliegende
- Bildschirmteil wird gerettet und nach Ende
- der Eingabe-Prozedur wieder auf den
- Bildschirm gebracht. <x%> und <y%> sind die
- linke obere Ecke des Fenster, bei Fehlen
- werden Standardwerte angenommen.
-
- Soll ein Element des Records nicht erfasst
- werden, wird die zugehörige Eingabe-
- Aufforderung in ein Paar runder Klammern
- gesetzt. Das Element wird dann nur
- angezeigt, kann aber nicht geändert werden.
-
-
-
-
-
-
- 4-104
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 105
-
-
- Dokumentation FranzBasic
-
- Bedienung:
-
- Cursor-Tasten: Cursor bewegen
- Eingabe/Enter/CR: Ein Feld weiter
- ESC: Ende
-
- Beispiel:
-
- Rectype Asatz
- Recvar Nr$ 16
- Recvar Bestand% 6
- Recvar Bezeichnung$ 30
- Endrec
- Record Asatz Artikelsatz
-
- Dbopen #1, "Artikel"
- Dbget #1, "4711", Artikelsatz
- S$ = "Artikelstamm;(Artikelnr.:);
- S$ = S$ + "Bestand:;Bezeichnung:"
- Form Artikelsatz, S$
-
- Daten für Artikel 4711 können erfasst
- werden, die Artikelnummer kann jedoch nicht
- verändert werden.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-105
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 106
-
-
- Dokumentation FranzBasic
-
- MENU
-
- Art: Statement
-
- Form:
-
- Menu Str$ [,x%, y%]
-
- Str$: String
- x%, y%: Integers
-
- Beschreibung:
-
- 'MENU' erzeugt ein Bildschirm-Menu zur
- Auswahl unter Alternativen durch den
- Benutzer. Das String-Feld <Str$> enthält im
- ersten Element die n Menupunkte (durch
- Leerstellen getrennt) und in den nächsten n
- Elementen Hilfstexte, welche dem Benutzer
- die Bedeutung der einzelnen Menupunkte
- erläutert. Das Feld-Element n+2 ist ein
- Leerstring "" als Abschluß. Die Hilfstexte
- können auch fehlen, dann wird dem zweite
- Element von <Str$> ein Leerstring ""
- zugewiesen.
-
- Der Benutzer wählt eine der Menupunkte
- durch Bewegen des Leuchtbalkens und Drücken
- der Eingabetaste 'CR' oder durch Anklicken
- mit der Maus. Mit ESC kann er ohne Auswahl
- abbrechen.
-
- Die vom Benutzer getroffene Auswahl kann
- festgestellt werden durch Aufruf der
- Funktion 'LASTKEY%' unmittelbar nach
- 'MENU'. Ein Funktionswert n steht für den
- n-ten Menupunkt, 0 für ESC.
-
-
-
- 4-106
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 107
-
-
- Dokumentation FranzBasic
-
- Bedienung:
-
- Cursor-Tasten: Leuchtbalken bewegen
- Eingabe/Enter/CR: Menupunkt unter
- Leuchtbalken auswählen
- Linke Maustaste: Menupunkt unter Mauscursor
- auswählen
- ESC: Abbruch ohne Auswahl
-
- Beispiel:
-
- Dim MStr$(5)
- MStr$(1)=" Artikel Kunden Faktura "
- MStr$(2)=" Artikelstamm erfassen "
- MStr$(3)=" Kundenstamm erfassen "
- MStr$(4)=" Faktura erstellen "
- MSTR$(5)=""
- Menu MStr$
- Auswahl% = lastkey%()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-107
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 108
-
-
- Dokumentation FranzBasic
-
- MESSAGE
-
- Art: Statement
-
- Form:
-
- Message Str$
-
- Str$: String
-
- Beschreibung:
-
- 'MESSAGE' bringt eine Message-Box mit einer
- Meldung auf den Bildschirm und erwartet vom
- Benutzer eine Reaktion durch Auswahl einer
- Antwort aus einem kleinen Menu.
-
- <Str$> besteht aus zwei Teilen, getrennt
- durch das Zeichen '|'. der erste Teil ist
- die Meldung, der zweite Teil das
- Antwortmenu. Die Antwort des Benutzers läßt
- sich durch die Funktion 'LASTKEY%'
- unmittelbar im Anschluss an 'MESSAGE'
- feststellen. Ist der Funktionswert n, so
- wurde der n-te Auswahlpunkt als Antwort
- gewählt.
-
- 'MESSAGE' erscheint in einem Fenster. Der
- unterliegende Bildschirmbereich wird
- gerettet und nach Befehlsende wieder
- restauriert.
-
-
-
-
-
-
-
-
-
- 4-108
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 109
-
-
- Dokumentation FranzBasic
-
- Bedienung:
-
- Cursor-Tasten: Leuchtbalken bewegen
- Eingabe/Enter/CR: Menupunkt unter
- Leuchtbalken auswählen
- Linke Maustaste: Menupunkt unter Mauscursor
- auswählen
-
- Beispiel:
-
- S$="Datei nicht da | OK Abbruch "
- Message S$
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4-109
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dokumentation FranzBasic
-
- MOUSE
-
- Art: Statement
-
- Form
-
- 1. Mouse On
-
- 2. Mouse Off
-
- 3. Mouse Knopf%, x%, y%
-
- Knopf%, x%, y%:Integers
-
- Beschreibung:
-
- 'MOUSE ON' schaltet den Mauscursor ein,
- 'MOUSE OFF' schaltet ihn wieder aus. Mit
- 'MOUSE' können die aktuellen Maus-Daten
- festgestellt werden. <Knopf%> gibt den
- Zustand der Mausknöpfe an:
-
- 0: kein Knopf gedrückt
- 1: linker Knopf gedrückt
- 2: rechter Knopf gedrückt
- 3: mittlerer Knopf gedrückt
-
- <x%> und <y%> geben die aktuelle
- Bildschirm-Position des Mauscursors an.
-
- Beispiel:
-
- Mouse On
- Repeat
- Mouse Button%, x%, y%
- Until Button%
- Mouse Off
-
-
-
- 4-110
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Anhang A
-
- Installation
-
- Stecken sie die Auslieferungsdiskette in
- das Diskettenlaufwerk A:. Geben Sie über
- die Tastatur ein:
-
- a:install
-
- 'Install.bat' erzeugt auf Laufwerk 'C:' ein
- Verzeichnis '\Fbasic' und kopiert alle
- Dateien der Diskette in dieses Verzeichnis.
-
- Auf der Diskette befindet sich eventuell
- eine Datei 'Liesmich'. Sie enthält dann
- aktuelle Information, die nicht in diesem
- Handbuch enthalten ist.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Anhang B
-
- Runtime-Errors
-
- Datei-Meldungen
-
- 1 Unter dieser Kennung ist bereits eine
- Datei geöffnet
- 2 Datei nicht geöffnet
- 3 Schreiben oder Lesen hinter Dateiende
- 4 Zuviele Dateien
-
- Datenbank-Meldungen
-
- 20 Zuviele Datenbanken
- 21 Systemfehler
- 22 Datei ist keine .dbf-Datei
- 23 Satznummer zu groß
- 24 Datei konnte nicht geschrieben werden
- 25 Datei ist keine .ndx-Datei
- 26 Schlüssel zu groß oder null
- 27 Schlüssel nicht gefunden
- 28 Schlüssel nicht gefunden,
- Nachfolger gelesen
- 29 Hinter letztem Schlüssel
- 30 Differenz zwischen .ndx und .dbf-Datei
- 31 Vor erstem Schlüssel
-