**Lernziele**\\  Daten in eine Datei schreiben; Daten von einer Datei einlesen; Dateizugriff definieren\\
----
[[tuscript:tutorial:start|Zurück zum Inhaltsverzeichnis - Erste Schritte]]
----
====== Lektion 6: Dateizugriffe ======
- {{files_open:benutzericons:schneider-lastin-lg.jpg?nolink&16x16|schneider-lastin}} schneider-lastin \\ \\ 
----
\\ 
===== 1. Makroanweisung FILE =====
\\  Mit der Makro**anweisung** "FILE" können **Daten in eine Datei geschrieben** werden\\ \\ **allgemein: $$ FILE "dateiname" = variablenname**\\ \\  → Der Inhalt der angegebenen Variablen wird als nächster Satz ans Ende der angegebenen Datei geschrieben.\\  → Ist die Variable eine Sternvariable, wird für jede Zeile der Variablen ein Satz ans Dateiende geschrieben.\\  → Die angegebene Datei darf eine TUSTEP- oder eine ASCII-Datei sein.\\ \\ **FILE/ERASE:** löscht zuerst die in der Datei stehenden Daten.\\ **FILE/PRINT:** gibt eine Meldung mit Angaben zu den ausgegebenen Daten ins Ablaufprotokoll aus.\\ \\ **Beispiel:**\\ 
$$ MODE TUSCRIPT,{}
-  Datei einrichten
SET datei = "text1.txt"
SET status = CREATE (datei,fdf-t,-std-)
-  Daten in Sternvariable text abspeichern
SET text = *
DATA Dies ist der erste Satz.
DATA Dies ist der zweite Satz.
DATA ...
-  Daten in Datei schreiben, vorhandene Daten ggf. löschen
FILE/ERASE "{datei}" = text
-  Datei anzeigen
BROWSE "{datei}"
\\ 
===== 2. Makrofunktion FILE =====
\\  Mit der Makro**funktion** "FILE" können **Daten von einer (TUSTEP- oder Fremd-)Datei eingelesen** und in eine Variable gespeichert werden\\ \\ **allgemein: FILE (name, auswahl, anzahl)**\\ \\  → Zu den Argumenten "auswahl" und "anzahl" sind verschiedene Angaben möglich; siehe Handbuch.\\  → Werden diese beiden Argumente weggelassen, wird der gesamte Datei-Inhalt unverändert eingelesen.\\  → Die Ausgabe erfolgt in eine Sternvariable, wobei jede Zeile der Sternvariablen einem Satz (record) der Datei entspricht.\\ \\ **Beispiel:**\\ 
$$ MODE TUSCRIPT,{}
-  Datei anmelden
SET status = OPEN ("quelldatei.tf",READ,-std-)
-  Daten der Datei in die (Stern-)Variable text speichern
SET text = FILE ("quelldatei.tf")
-  Inhalt der (Stern-)Variablen ins Ablaufprotokoll ausgeben
* {text}
\\ 
===== 3. Makroanweisung ACCESS =====
\\  Neben den unter 1. und 2. beschriebenen Möglichkeiten erfolgt der Zugriff auf Daten in Dateien üblicherweise nach einer **Zugriffsdefinition** mit der Makroanweisung "ACCESS"; **beendet** wird der Dateizugriff mit der Anweisung "ENDACCESS":\\ 
$$ MODE TUSCRIPT,{}
ACCESS daten: .....
...
ENDACCESS daten
oder mit Ausgabe einer Meldung ins Ablaufprotokoll:
ENDACCESS/PRINT daten
→ Für "daten" steht ein **frei wählbarer Name** für die Daten; er wird bei allen anderen Anweisungen für den Dateizugriff anstelle eines Dateinamens verwendet, um anzugeben, auf welche Datei zugegriffen werden soll.\\ \\  Folgende **Arten von Dateizugriffen** werden unterschieden:\\ 
  * auf Daten mit Sätzen, Zeilen, Seiten als Texteinheiten
  * auf Daten mit Anfangs- und Endekennungen
  * auf Daten mit Tags
  * auf Daten mit definierten Strukturen
\\  Im Rahmen dieser Einführung wird **lediglich das Wichtigste der ersten beiden Zugriffsarten** vorgestellt. Ausführliche Informationen siehe Handbuch. \\ \\ 
==== a. auf Daten mit Sätzen, Zeilen, Seiten als Texteinheiten ====
\\ **Anweisung allgemein:**\\ 
$$ MODE TUSCRIPT,{}
ACCESS daten: modus/option "dateiname" nmmr, text, anzahl
Diese Dateizugriffe erlauben das **Lesen, Beschreiben und Durchsuchen** von TUSTEP- und Fremd-Dateien.\\ \\  Mögliche Angaben u.a. für "modus/option":\\ 
  * READ/RECORDS - falls von der angegebenen Datei nur **gelesen** werden soll
  * UPDATE/RECORDS (nur TUSTEP-Dateien) - falls **gelesen und geschrieben** werden soll
  * UPDATE/ERASE/RECORDS (" ") - dto., alle Daten in der Datei werden gelöscht
  * WRITE/RECORDS - falls nur ans Ende der Datei **geschrieben** werden soll
  * WRITE/ERASE/RECORDS - dto., alle Daten in der Datei werden gelöscht
→ Bei Fremd-Dateien muss als **zusätzliche Option** der **Code** angegeben werden:\\ 
  * ISO oder UTF8 oder UTF16
\\  Mögliche Angaben für "nmmr":\\ 
  * Bei Fremd-Dateien: Name einer Variablen
  * Bei TUSTEP-Dateien mit Modus RECORDS drei Variablennamen für **Seiten-, Zeilen- und Unterscheidungsnummer**, z.B. sn.zn/un
\\ "text": Name der Variablen, die den Text enthält\\ \\ **Beispiel für die Definition von Dateizugriffen bei einfachem satzweisem Kopieren:**\\ 
$$ MODE TUSCRIPT,{}
ACCESS q: READ       /RECORDS "quelldatei.tf" sn.zn/un, text
ACCESS z: WRITE/ERASE/RECORDS "zieldatei.tf" sn.zn/un, text
LOOP/999999
   READ/IGNORE/EXIT q
   WRITE z
ENDLOOP
ENDACCESS/PRINT q
ENDACCESS/PRINT z
\\ \\ 
==== b. auf Daten mit Anfangs- und Endekennungen ====
\\ **Anweisung allgemein:**\\ 
$$ MODE TUSCRIPT,{}
ACCESS daten: modus/option "dateiname" ...
              nmmr, aken/atab + text/ttab + eken/etab, typ
Diese Dateizugriffe erlauben das **Lesen und Beschreiben** von TUSTEP- und Fremd-Dateien.\\ \\ \\  Wird fortgesetzt.\\ \\
----
[[tuscript:tutorial:start|Zurück zum Inhaltsverzeichnis - Erste Schritte]]