Folgende Funktionen können verwendet werden:
Siehe "Beispiel zur Dateibearbeitung" auf Seite 7-4.
Die allgemeine Form der file-Anweisung ist:
file <file_name_string> <file_type>
Datei <file_name_string> bezeichnet einen Ausdruck, der als Ergebnis den Namen der angesprochenen Datei als String ergibt. Dieser Name muß den Systemkonventionen für Dateinamen entsprechen. Als Sonderform ist die Bezeichnung <screen> zulässig, die das Fenster anspricht, in dem ObjectD gestartet wurde. Dies ist auch die Voreinstellung für alle Dateitypen. Jede Zuweisung ist sofort wirksam.
Mit dieser Zuweisung wird die Ausgabe von konstanten Zeichenketten, sowie die Ausgabe der Anweisungen [...],nl und sp gesteuert.
file <file_name_string> output
file <file_name_string>
Die Angabe des Schlüsselwortes output ist optional. Wird eine Datei innerhalb eines Programmlaufs zum ersten Mal angesprochen, so wird sie mit write eröffnet. D.h. falls sie noch nicht vorhanden ist, wird sie angelegt; falls sie existiert, wird ihr bisheriger Inhalt durch die nachfolgenden Ausgaben überschrieben.
Bei einer nochmaligen Dateieröffnung in einem AQL-Programmlauf, wird diese mit append eröffnet, d.h. sie wird durch alle nachfolgenden Ausgaben erweitert.
Dateien werden automatisch bei Programmbeendigung oder implizit durch Eröffnen einer neuen Ausgabedatei geschlossen. Auch das Rücksetzen auf die Voreinstellung <screen>, welche dem Standardstrom stdout entspricht, schließt eine offene Ausgabedatei.
Damit wird der Eingabestrom, der standardmäßig vom Bildschirm (<screen>) einliest (UNIX-Strom stdin), einer existierenden Datei zugeordnet.
file <file_name_string> input
Mit der ersten Anweisung file input auf eine Datei innerhalb eines Programmlaufs, wird diese Datei in einen internen Speicher eingelesen. Alle lesenden Zugriffe mit get werden von diesem internen Speicher ausgeführt, auch wenn die Datei zwischendurch neu eröffnet wurde.
Die Funktion file_access testet die Zugriffsrechte. Der Return-Wert ist vom Typ boolean.
<res_boolean> = | file_access (<string1>, <string2>) |
<string1> | Dateiname |
<string2> | r: read |
w: write | |
x: executable |
Die Reihenfolge der Buchstaben "r", "w" und "x" ist beliebig.
file_access ("file_name", "rwx") | // Ist Lesen, Schreiben und Ausführen möglich? |
file_access ("file_name", "r") | // Ist Lesen möglich? |
file_access ("file_name", "w") | // Ist Schreiben möglich? |
file_access ("file_name", "rw") | // Ist Lesen und Schreiben möglich? |
Die Funktion file_extend ersetzt Sonderzeichen (#, +, ~) am Anfang eines Dateinamens.
<res_string> = | file_extend (<string>) |
<string> | Dateiname |
Die Funktion liefert "true", wenn die angegebene Datei existiert.
<exists_bool> = existf(<filename>)
Die Funktion liefert "true", wenn das angegebene Verzeichnis existiert.
<exists_bool> = existd(<dirname>)
In diesen Strom, der standardmäßig dem Bildschirm (stderr) entspricht, werden alle Fehlermeldungen ausgegeben. Er wird in derselben Weise behandelt wie der Ausgabestrom.
file <file_name_string> error_output
Die Funktion öffnet eine Binärdatei.
<fd> = | bin_open (<filename>, <mode>) |
<fd> | file_descriptor, wird bei den Funktionen bin_write*, bin_read* und bin_close benötigt. |
<filename> | Dateiname |
<mode> | "input"/"output"/"append" |
Das erste Argument identifiziert die zu öffnende Datei. Die Funktion liefert im Erfolgsfall file_descriptor.
Das angegebene Symbol wird mit dem nächsten im Eingabestrom (siehe Anweisung file .. input) gefundenen Symbol versehen. Gleichzeitig wird der interne Lesezeiger an das Ende des gelesenen Symbols gesetzt, damit mit dem nächsten Lesezugriff das nächste Symbol eingelesen wird.
<symbol> = get()
Beim Lesen werden Leerzeichen und Zeilenenden ignoriert, sofern sie sich nicht innerhalb von Zeichenketten befinden, die in Anführungszeichen eingeschlossen sind. Ganze Zahlen und Gleitkommawerte (integer und real) beginnen mit einer Zahl oder dem Minuszeichen. Zeichenketten beginnen mit allen anderen Zeichen und enden mit dem ersten Leerzeichen oder dem Zeilenende, falls sie nicht in die Anführungszeichen eingeschlossen sind.
Siehe "Beispiel für Zeichensuche in einer Datei" auf Seite 7-6.
Mit der folgenden Form der get-Funktion wird der Lesezeiger an die angegebene Position in der Eingabedatei positioniert.
<symbol> = get(<line_number>)
Die Lesefunktion relget positioniert den Lesezeiger relativ zur aktuellen Position. Positive Werte für "offset" verschieben den Zeiger in Richtung "Dateiende", negative Werte in Richtung "Dateianfang". Falls die angegebene oder berechnete Zeilennummer einen Wert ergibt, der negativ oder größer als die Zeilenzahl der Eingabedatei ist, so wird der Wert invalid zurückgegeben. Ist die aktuelle Eingabedatei der Bildschirm (<screen>), so sind die Positionierfunktionen wirkungslos.
<symbol> = relget(<offset>)
Die Nummer der aktuellen Zeile der Eingabedatei wird ausgegeben. Ist die aktuelle Eingabedatei der Bildschirm <screen>, so wird der Wert invalid zurückgegeben.
<line_number> = line()
Siehe "Beispiel für Zeichensuche in einer Datei" auf Seite 7-6.
Die Funktion bin_write schreibt jedes Argument in eine Binärdatei. Die Argumente müssen integer- oder real-Werte bzw. Strings sein.
bin_write (file_descriptor, arg1, arg2, ..., argn)
Die Funktion bin_write_byte schreibt das erste Byte jedes Arguments in eine Binärdatei. Die Argumente müssen Integerwerte sein.
bin_write_byte (file_descriptor, arg1, arg2, ..., argn)
Die Funktion bin_write_short schreibt den ersten Datentyp short jedes Arguments in eine Binärdatei. Die Argumente müssen Integerwerte sein.
bin_write_short (file_descriptor, arg1, arg2, ..., argn)
Die Funktion bin_read_byte liest ein Byte aus einer Binärdatei. Die Funktion liefert im Erfolgsfall einen Typ "Integer".
<i> = bin_read_byte (file_descriptor)
Die Funktion bin_read_short liest den ersten Datentyp short aus einer Binärdatei. Die Funktion liefert im Erfolgsfall einen Typ integer.
<i2> = bin_read_short (file_descriptor)
Die Funktion bin_read_int liest einen Datentyp integer aus einer Binärdatei. Die Funktion liefert im Erfolgsfall einen Typ integer.
<i4> = bin_read_int (file_descriptor)
Die Funktion liefert den Namensstring aus dem Eingabestrom (max 31 Zeichen).
<res_string> = parse_name()
Die Funktion liefert den Wert der Zahl als Typ integer oder real.
<number> = parse_number()
Die Funktion liefert den Inhalt der verbleibenden Zeile bis zum Zeilenende als String.
<res_string> = parse_line()
Die Funktion liefert den Wert "true", wenn der nächste zu lesende Eintrag dem keyword entspricht. Der Lesezeiger steht dann am nächsten Eintrag. Andernfalls bleibt der Lesezeiger an der Stelle stehen und die Funktion liefert "false" als Ergebnis (Siehe "Beispiel für Zeichensuche in einer Datei" auf Seite 7-6.).
<res_bool> = parse_keyword()
Die Funktion liefert den nächsten Kommentar aus der Eingabedatei.
parse_comment ( )
Die Funktion liefert den nächsten String (zwischen doppelten Hochkommata " ") aus der Eingabedatei.
parse_string ( )
AQL schließt automatisch alle eröffneten Dateien bei Programmende. Das explizite Schließen der Eingabedatei ist deshalb nur dann notwendig, falls eine Datei im selben Programmlauf verändert wird und danach gelesen werden soll. Der Funktionswert ist vom Typ logical und sagt aus, ob das Schließen erfolgreich war (true) oder nicht (false). Nach dem Schließen der Eingabedatei ist die Standardeinstellung <screen> aktiv.
close()
Die Funktion schließt eine Binärdatei.
bin_close (file_descriptor) | |
file_descriptor | siehe bin_open |
◀ Funktionen | Fehler ▶ |