WRITE (Dateien schreiben)

WRITE

Der Befehl WRITE ermöglicht Ihnen das Schreiben von Dateien.

Form

1) «WRITE(n:DIRECT <Pfad><Dateiname>)»
Erstellen einer neuen oder überschreiben einer bestehenden Datei.
2) «WRITE(n:APPEND <Pfad><Dateiname>)
Daten an eine bestehende Datei anhängen. Existiert die Datei noch nicht, wird sie erstellt.
Schreibern einer Zeile mit dem angegebenen Text.
3) «WRITE(n: Text Text Text)»
(Encoding: ASCII)
4) «WRITE(n:ANSI Text Text Text)»
(Encoding: ANSI)
5) «WRITE(n:UTF8 Text Text Text)»
(Encoding: UTF8)
6) «WRITE(n:UT-8 Text Text Text)»
(Encoding: UTF8 ohne BOM)
Schreiben einer Zeile mit dem angegebenen Text, aber ohne Zeilenumbruch. Der nachfolgende Output (nächster WRITE) wird angehängt.
7) «WRITE(n:- Text Text Text)»
(Encoding: ASCII)
8) «WRITE(n:-ANSI Text Text Text)»
(Encoding: ANSI)
9) «WRITE(n:-UTF8 Text Text Text)»
(Encoding: UTF8)
10) «WRITE(n:-UT-8 Text Text Text)»
(Encoding: UTF8 ohne BOM)
Direktes Schreiben des Inhalts einer X-Variable. Dabei erfolgt kein Expand. So ist es möglich, X-Variablen mit einem Inhalt von mehr als 4000 Zeichen zu verwenden.
11) «WRITE(1:<MyXVar)»
(Encoding: ASCII)
12) «WRITE(1:ANSI<MyXVar)»
(Encoding: ANSI)
13) «WRITE(1:UTF8<MyXVar)»
(Encoding: UTF8)
14) «WRITE(1:UT-8<MyXVar)»
(Encoding: UTF8 ohne BOM)
15) «WRITE(1:-<MyXVar)»
Der nachfolgende Output wird angehängt. (Encoding: ASCII)
16) «WRITE(1:-ANSI<MyXVar)»
Der nachfolgende Output wird angehängt. (Encoding: ANSI)
17) «WRITE(1:-UTF8<MyXVar)»
Der nachfolgende Output wird angehängt. (Encoding: UTF8)
18) «WRITE(1:-UT-8<MyXVar)»
Der nachfolgende Output wird angehängt. (Encoding: UTF8 ohne BOM)
19) «WRITE(n:LINECOUNT)»
Anzahl ausgegebene Zeilen.
20) «WRITE(n:CLOSE)»
Schliessen des offenen Kanals.
Mit «WRITE(n:...)» können Sie Dateien neu erstellen, überschrieben oder bestehende Dateien ergänzen. Sie müssen dabei jeweils den Kanal (Nummer) angeben. Es stehen maximal 4 Kanäle gleichzeitig zur Verfügung. (d.h. n = 1, 2, 3 oder 4)
Wichtig
Wichtig
Achten Sie darauf, die Kanäle immer sauber zu schliessen.
Beachten Sie auch, dass in den Pfadangaben (READ und WRITE) nur ANSI-Zeichen erlaubt sind!
«WRITE(n:DIRECT <Pfad><Dateiname>)»
«WRITE(n:APPEND <Pfad><Dateiname)»
# 
«WRITE(n: Text Text Text)»
«WRITE(n:ANSI Text Text Text)»
«WRITE(n:UTF8 Text Text Text)»
«WRITE(n:UT-8 Text Text Text)»
# 
«WRITE(n:- Text Text Text)»
«WRITE(n:-ANSI Text Text Text)»
«WRITE(n:-UTF8 Text Text Text)»
«WRITE(n:-UTF8 Text Text Text)»
# 
«WRITE(1:<MyXVar)»
«WRITE(1:ANSI<MyXVar)»
«WRITE(1:UTF8<MyXVar)»
«WRITE(1:UT-8<MyXVar)»
«WRITE(1:-<MyXVar)»
«WRITE(1:-ANSI<MyXVar)»
«WRITE(1:-UTF8<MyXVar)»
«WRITE(1:-UT-8<MyXVar)»
# 
«WRITE(n:LINECOUNT)»
# 
«WRITE(n:CLOSE)»
Wichtig
Wichtig
Das Encoding darf innerhalb eines WRITE-Blocks nicht gewechselt werden. Das bedeutet, dass Sie von WRITE(n:DIRECT/APPEND... bis WRITE(n:CLOSE) immer mit demselben Encoding arbeiten müssen. Wird das Enconding dennoch gewechselt, führt dies zu folgender Fehlermeldung (Beispiel): F-Script unkorrekt: ..\FF\rv-test.ff #4: WRITE: Output-Encoding for 'aps-4008test.log' already defined as 'UTF8'; setting to 'OEM850' afterwards not allowed.

Verweis

Siehe Operationstypen (Befehle - Operationstypen) für zusätzliche Funktionen zu WRITE.

Beispiel 1

Schreiben einer neuen Datei mit Inhalt:
/Beispiel
# Beispiel 1:
«WRITE(3:DIRECT «SYS(FULLPATH)»TX\MyText.txt)»
# 
«WRITE(3: Zeile1)»
«WRITE(3: Zeile2)»
«WRITE(3: Zeile3)»
# 
«WRITE(3:CLOSE)» 
# Ende von Beispiel 1
/
Kanal 3 wird direkt geöffnet und die Datei MyText.txt im Verzeichnis \insyde\TX wird erstellt oder (falls sie bereits vorhanden ist) überschrieben.

Beispiel 2

Schreiben von Inhalten in eine bestehende Datei:
/Beispiel
# Beispiel 2:
«WRITE(3:APPEND «SYS(FULLPATH)»TX\MyText.txt)»
# 
«WRITE(3: Zeilen anfügen)»
«WRITE(3: Hinzugefügte Zeile1)»
«WRITE(3: Hinzugefügte Zeile2)»
«WRITE(3: Hinzugefügte Zeile3)»
# 
«WRITE(3:CLOSE)»
# Ende von Beispiel 2
/
Die Datei DRUCK.ASC besteht bereits und enthält Zeile1 bis Zeile3. Nun soll die Datei ergänzt werden. Erreicht wird das mit dem Argument APPEND.

Beispiel 3

Schreiben von mehreren "F-Script Code-Zeilen" in eine Datei-Zeile:
/Beispiel
# Beispiel 3:
«WRITE(3:DIRECT «SYS(FULLPATH)»TX\MyText.txt)»
# 
«WRITE(3: Zeile1)»
«WRITE(3:- Zeile2 erster Teil, )»
«WRITE(3:- plus Zeile 2 zweiter Teil, )»
«WRITE(3: plus Zeile 2 dritter Teil.)»
# 
«WRITE(3:CLOSE)»
# Ende Beispiel 3
/

READ/WRITE - Datei lesen und den Inhalt in eine andere Datei ausgeben

Die Datei Adressen.txt soll gelesen werden. Diese Datei beinhaltet pro Adresszeile vier Attribute, welche mit Komma (,) getrennt sind.
Die eingelesenen Informationen sollen in die Datei Adressen_Output.txt geschrieben werden. Es soll pro Attribut eine Zeile geschrieben werden. Oder anders formuliert: Pro Adresszeile aus Adressen.txt werden vier Zeilen in Adressen_Output.txt geschrieben.

Beispiel 4

Gleichzeitig aus einer Datei lesen und in eine andere Datei schreiben:
Die einzulesende Datei Adressen.txt sieht wie folgt aus:
ADRNR,NAME,PLZ,ORT
1000,Werkzeug AG,6006,Luzern
1001,Werkzeug AG,4002,Basel FD
1004,Trichter,6005,Luzern

Der F-Script-Code:
/
Beispiel 4: READ/WRITE - gleichzeitig verwenden
«WRITE(1:DIRECT «SYS(FULLPATH)»TX\Adressen_Output.txt)»
«z~READ(2:DIRECT «SYS(FULLPATH)»TX\Adressen.txt)\I»«GOTO(# ENDE-ERR)»
# 
«REPEAT»
«z~READ(2:-)\I»«GOTO(# ENDE-DATEI)»
«WRITE(1: «READ(2:MEM)»)»
«zREAD(2:-)\I»«WRITE(1: «READ(2:MEM)»)»
«zREAD(2:-)\I»«WRITE(1: «READ(2:MEM)»)»
«zREAD(2:)\I»«WRITE(1: «READ(2:MEM)»)»
«zSYS(KEYPRESS)\I»«GOTO(# ENDE-DATEI)»
«LOOP»
# 
# ENDE-DATEI
«WRITE(1:CLOSE)»
«READ(2:CLOSE)»
Ende Beispiel 4
/

# ENDE-ERR 
Datei nicht gefunden !
/

WRITE - Daten gleichzeitig ausgeben (drucken) und in eine Datei schreiben

Eine Umsatzliste der Artikelhauptgruppen mit Jahresumsatz in Stück, Umsatz und DB soll auf einen Drucker ausgegeben werden. Gleichzeitig sollen diese Daten (als Basis für Excel) in eine Datei geschrieben werden.

Beispiel 5

/headerreport
# Beispiel 5: Daten gleichzeitig ausgeben (drucken) und in eine Datei schreiben.
# 
«WRITE(1:DIRECT «SYS(FULLPATH)»TX\Umsatzliste.txt)»
# 
«nmTODAY(Y)»
«/headerpage»
«LIST(AR2,/POSITIONEN)»
«6»Total«52»SUM(4)\N10,.00t'» «68»«SUM(5)\N10,.00t»
«WRITE(1: 0;Total;0;«SUM(4)\A»;«SUM(5)\A»)»
«WRITE(1:CLOSE)»
/

/POSITIONEN #,4
«SUM(1,NULL)» «SUM(2,NULL)» «SUM(3,NULL)»
# Druck-Output
«AR2-NR\4» «6»«AR2-BEZ\30»«-»
«36»«+1VUMS(AR2,#,JAHR«MEM\N»)\N10,.00t'»«-»
«52»«+2VUMS($)\N10,.00t'»«-»
«68»«+3VUMS(DB)\N10,.00t'»
#
«n+4SUM(2)» «n+5SUM(3)»
# Schreiben in Datei
«WRITE(1:- «AR2-NR\A»;«AR2-BEZ\»;«SUM(1)\A»;)» «WRITE(1: «SUM(2)\A»;«SUM(3)\A»)»
/

/headerpage
# Druckoutput
Umsatz Artikel-Hauptgruppen «73»S.«PAGE\3»
Nr. Hauptgruppe «36»Umsatz Stk. «52»Umsatz Fr. «68»DB Fr.
/

Ausgabe

Die Druckausgabe sieht wie folgt aus:
Umsatz Artikel-Hauptgruppen
Nr.
Hauptgruppe
Umsatz Stk.
Umsatz Fr.
DB Fr.
1
Maschinen
3'085.00
531'234.32
175'752.61
2
Beleuchtung, Strom
0.00
0.00
0.00
3
Werkzeuge
0.00
0.00
0.00
4
Dienstleistungen
0.00
0.00
0.00
9
Diverses
80.00
7'318.25
4'516.80
-
Total
-
538'552.57
180'269.41
Hinweis
Hinweis
Durch das F-Script werden bei der Ausgabe keine Tabellenrahmen gedruckt.
Die Datei, die über Kanal 1 geschrieben wird, sieht wie folgt aus:
1;Maschinen;3085;531234.32;175752.61
2;Beleuchtung; Strom;0;0;0
3;Werkzeuge;0;0;0
4;Dienstleistungen;0;0;0
9;Diverses;80;7318.25;4516.8
-;Total;-;538552.57;180269.41
Hinweis
Hinweis
Pro Artikelhauptgruppe wird eine Zeile ausgegeben. Die Felder werden jeweils mit einem Semikolon getrennt.