Read (Dateien einlesen)

Der Befehl READ stellt verschiedene Möglichkeiten zur Verfügung, den Inhalt einer Datei oder eines Verzeichnisses auszulesen. Es ist auch möglich ANSI Dateien direkt einzulesen und automatisch in das von OpaccERP verwendete ASCII Format zu konvertieren.
Mit «READ(<Kanal>:...)» können Sie Dateien lesen. Sie müssen dabei jeweils den Kanal (Nummer) angeben. Es stehen maximal 4 Kanäle gleichzeitig zur Verfügung (d.h. <Kanal> = 1, 2, 3 oder 4).
Wichtig
Wichtig
Achten Sie darauf, die Kanäle immer sauber zu schliessen.
Beachten Sie, dass in den Pfadangaben (READ und WRITE) nur ANSI-Zeichen erlaubt sind!
Einlesen von Tabulatoren (ab v23.02): Wird eine Datei eingelesen welche Tabulatoren enthält, werden diese nicht mehr in Spaces umgewandelt.
Notiz
Notiz
Für das Lesen von xml-Dateien steht Ihnen der Service Common.XmlQuery zur Verfügung.
Funktion Beschreibung
«READ(<Kanal>:DIRECT <Datei>)»
«READ(<Kanal>:DIRECT DIR: <Datei>)»
«READ(<Kanal>:DIRECTANSI <Datei>)»
Notiz
Notiz
DIRECTANSI kann überall dort verwendet werden, wo auch DIRECT verwendet werden kann.
«READ(<Kanal>:DIRECTANSI DIR <Datei>)»
ANSI: Lesekanal auf Verzeichnis öffnen
Notiz
Notiz
DIRECTANSI kann überall dort verwendet werden, wo auch DIRECT verwendet werden kann.
«READ(<Kanal>:DIRECTUTF8 <Datei>)»
UTF8: Dateien direkt einlesen
Notiz
Notiz
DIRECTUTF8 kann überall dort verwendet werden, wo auch DIRECT verwendet werden kann.
«READ(<Kanal>:DIRECTUTF8 DIR <Datei>)»
Notiz
Notiz
DIRECTUTF8 kann überall dort verwendet werden, wo auch DIRECT verwendet werden kann.
«READ(<Kanal>:)»
«READ(<Kanal>:-)»
«READ(<Kanal>:MEM)»
«READ(<Kanal>:MEM -<Trennzeichen>)»
«READ(<Kanal>:MEM <Anzahl Zeichen>,<Position>)»
«READ(<Kanal>:MEM>XVarName)»
«READ(<Kanal>:SIZE)»
«READ(<Kanal>:BLOCK <Anzahl Byte>)»
«READ(<Kanal>:DIRECT "<Ersatzzeichen>" <Datei>)»
Der optionale Parameter <Ersatzzeichen> besteht dabei aus zwei Zeichen welche die F-Script Befehlszeichen ersetzen.
char(174) « wird durch das erste Zeichen ersetzt.
char(175) » wird durch das zweite Zeichen ersetzt.
«READ(<Kanal>:CLOSE)»

Allgemein

Ein Lesevorgang verläuft dabei immer nach folgendem Muster:

1. Lesekanal auf Datei/Verzeichnis öffnen
2. nächste Zeile (od. Feld) in Puffer holen
3. Inhalt des Puffers lesen
[Schritt 2. und 3. beliebig oft wiederholen]
4. Lesekanal schliessen
Es können max. 4 Dateien gleichzeitig im Lese- oder Schreibzugriff sein (Kanal 1-4).
Der Inhalt einer Datei wird als ASCII (Codepage 850) interpretiert. Ein Zeilenende wird durch CR + LF markiert.
Notiz
Notiz
Arbeiten Sie wo immer möglich mit relativen Pfaden.

            

Beispiele

Datei ..\tx\test.txt zeilenweise lesen und ausgeben:
«z~READ(1:DIRECT ..\tx\test.txt)\I»«GOTO(# JUMP-01)»
«REPEAT»
«zREAD(1:)\I»«READ(1:MEM)»«LOOP»
«READ(1:CLOSE)»
# JUMP-01
/
Datei ..\tx\test.txt zeilenweise lesen und die ersten 5 semikolon-getrennten Felder ausgeben:
«z~READ(1:DIRECT ..\tx\test.txt)\I»«GOTO(# JUMP-01)»
«REPEAT(1)»
«z~READ(1:)\I»«GOTO(# JUMP-02)»
«NO(NULL)»
«REPEAT(2)»
«READ(1:MEM -;)»
«zNO<5\N»«LOOP(2)»
«LOOP(1)»
# JUMP-02
«READ(1:CLOSE)»
# JUMP-01
/
Datei ..\tx\test.csv zeilenweise lesen und es wird bis Spalte 10 die einzelnen Felder eingelesen. Die Felder sind durch semikolon getrennt:
# CSV-Datei einlesen
«nNO(1,NULL)»
«z~READ(1:DIRECT ..\tx\test.csv)\I»«GOTO(# END-READ)»
«nREPEAT(1)»
«z~READ(1:)\I»«GOTO(# JUMP-01)»
«nNO(2,NULL)»
«nNO(1)»
«REPEAT(2)»
«nNO(2)»
«READ(1:MEM -;)»
«zNO(2,0)<10\N»«LOOP(2)»
# JUMP-02
«LOOP(1)»
# JUMP-01
«READ(1:CLOSE)»
# END-READ
/
Datei ..\tx\test.txt mit kommagetrennten Feldern und Header-Zeile (CSV-Dateiformat) lesen:
«z~READ(1:DIRECT ..\tx\test.txt)\I»«GOTO(# JUMP-01)»
«REPEAT(1)»
«z~READ(1:)\I»«GOTO(# JUMP-02)»
«REPEAT(2)»
«z~READ(1:-)\I»«GOTO(# JUMP-03)»
«READ(1:MEM)»
«LOOP(2)»
# JUMP-03
«READ(1:MEM)»
«LOOP(1)»
# JUMP-02
«READ(1:CLOSE)»
# JUMP-01
/
In Dateiverzeichnis ..\tx nach Dateien *.txt suchen:
«z~READ(1:DIRECT DIR: ..\tx\*.txt)\I»«GOTO(# JUMP-01)»
«REPEAT»
«zREAD(1:)\I»«READ(1:MEM)»«LOOP»
«READ(1:CLOSE)»
# JUMP-01
/
Daten lesen und direkt in eine X-Variable speichern:
Siehe auch X-Variable
# Puffer auslesen:
«READ(<Kanal>:MEM>XVarName)»

# Puffer auslesen bis zum nächsten Trennzeichen:
«READ(<Kanal>:MEM>XVarName -<Trennzeichen>)»

# Anzahl Zeichen ab Position aus Puffer lesen:
«READ(<Kanal>:MEM>XVarName <Anzahl Zeichen>,<Position>)»
«nz ADR-ACTIVE(2020)\I»
«nm1KUNDEN-BEM(1)\N»
«REPEAT»
«nNO(1)»
«READ(«NO(1,0)»>TextBlock)»
«X(TextBlock)»
«nz NO(1,0)<«MEM(1)\N»\N»«LOOP»

Lesekanal auf Datei öffnen

Form

«READ(<Kanal>:DIRECT <Datei>)»

Funktion

Lesekanal auf Datei öffnen

Parameter

<Kanal>: 1|2|3|4
<Datei>: [<Laufwerk:>|<Netzwerk-Ressource>][<Pfad>]<Dateiname>|<Device>
Wenn immer möglich sollte mit relativen Pfaden gearbeitet werden. Mit der Pfadangabe ..\ stehen Sie, ausgehend vom F-Script, im Verzeichnis \insyde.
Verwenden Sie UNC Pfade nur dann, wenn auf Ressourcen zugegriffen werden muss, welche sich auf anderen Maschinen oder Verzeichnissen ausserhalb von \insyde befinden.
Verzichten Sie auf Pfadangaben mit Laufwerksbuchstaben!

Rückgabe

N
Konnte der Lesekanal geöffnet werden, wird 1 zurückgegeben.

Bemerkungen

Diese Operation kann nur auf Dateien, nicht aber auf Verzeichnisse angewendet werden.

            

Beispiele

Die folgenden Beispiele sollen in erster Linie die Syntax erläutern.
Lesekanal auf test.txt öffnen (relative Pfadangabe):
Die Datei test.txt befindet sich dabei im Verzeichnis \insyde\tx\
«READ(1:DIRECT ..\tx\test.txt)»
...
«READ(1:CLOSE)»
/
Lesekanal auf eingang.csv öffnen (relative Pfadangabe):
Die Datei befindet sich dabe im Verzeichnis \Transfer\Eingang\ welches auf derselben Verzeichnisebene wie \insyde liegt.
«READ(1:DIRECT ..\..\Transfer\Eingang\eingang.csv)»
...
«READ(1:CLOSE)»
/
Lesekanal auf lokale Datei c:\temp\test.asc öffnen (absolute Pfadangabe):
«READ(1:DIRECT c:\temp\test.txt)»
...
«READ(1:CLOSE)»
/
Lesekanal auf freigegebene Datei auf Client och-1085 öffnen (UNC-Pfad):
«READ(1:DIRECT \\och-1085\daten\test.txt)»
...
«READ(1:CLOSE)»
/

Lesekanal auf Verzeichnis öffnen

Form

«READ(<Kanal>:DIRECT DIR: <Datei>)»

Funktion

Lesekanal auf Verzeichnis öffnen.
Wird mit READ(n:DIRECT DIR: ...) ein Verzeichnis durchsucht, liefert READ(i:SIZE) die Anzahl der gefundenen Dateien.

Parameter

<Kanal>: 1|2|3|4
<Datei>: [<Laufwerk:>|<Netzwerk-Ressource>][<Pfad>]<Dateiname>|<Device>
Dateinamen dürfen Wildcards (*,?) enthalten.
Wenn immer möglich sollte mit relativen Pfaden gearbeitet werden. Mit der Pfadangabe ..\ stehen Sie, ausgehend vom F-Script, im Verzeichnis \insyde.
Verwenden Sie UNC Pfade nur dann, wenn auf Ressourcen zugegriffen werden muss, welche sich auf anderen Maschinen oder Verzeichnissen ausserhalb von \insyde befinden.
Verzichten Sie auf Pfadangaben mit Laufwerksbuchstaben!

Rückgabe

N
Konnte der Lesekanal geöffnet werden, wird 1 zurückgegeben.
Konnte der Lesekanal nicht geöffnet werden, wird 0 zurückgegeben (= Verzeichnis(se) oder Datei(en) nicht vorhanden, keine Leseberechtigung, Netzwerk-Ressource nicht verfügbar o.ä.).

Bemerkungen

Diese Operation kann sowohl auf Dateien, wie auch auf Verzeichnisse angewendet werden.
Im Prinzip behandelt die Operation die Dateiangabe genau gleich wie ein DOS dir-Befehl.

            

Beispiele

Die folgenden Beispiele sollen in erster Linie die Syntax erläutern.
Lesekanal auf Verzeichnis ..\tx öffnen, mit der Absicht, alle Einträge in ..\tx zu lesen (relative Pfadangabe):
«READ(1:DIRECT DIR: ..\tx)»
...
«READ(1:CLOSE)»
/
Lesekanal auf Verzeichnis ..\tx öffnen mit der Absicht, alle *.asc-Einträge zu lesen:
«READ(1:DIRECT DIR: ..\tx\*.asc)»
...
«READ(1:CLOSE)»
/
Lesekanal auf ein lokales Verzeichnis c:\temp öffnen mit der Absicht, alle Einträge test1.asc, test2.asc etc. zu lesen:
«READ(1:DIRECT DIR: c:\temp\test?.asc)»
...
«READ(1:CLOSE)»
/
Lesekanal auf ein freigegebenes Verzeichnis auf Client och-1085 öffnen, mit der Absicht, alle *.asc- Einträge zu lesen:
«READ(1:DIRECT DIR: \\och-1085\daten\*.asc)»
...
«READ(1:CLOSE)»
/

Lesekanal schliessen

Form

«READ(<Kanal>:CLOSE)»

Funktion

Lesekanal schliessen

Parameter

<Kanal>: 1|2|3|4

Rückgabe

-

Bemerkungen

Durch Lese- oder Schreibvorgänge belegte Kanäle werden durch diese Operation wieder freigegeben.
Achtung
Achtung
Bis zum Verarbeitungsende oder -abbruch nicht geschlosse Lesekanäle werden zwar automatisch wieder freigegeben, aus Systemsicht bleibt jedoch der Dateizugriff bestehen.
Das bedeutet, dass so lange keine Schreibvorgänge mehr auf dieser Datei ausgeführt werden können, bis die aktuelle OpaccERP-Session beendet wird.

            

Beispiele

Die folgenden Beispiele sollen in erster Linie die Syntax erläutern.
Lesekanal auf Datei ..\tx\test.txt öffnen und wieder schliessen:
«READ(1:DIRECT DIR: ..\tx\test.txt)»
...
«READ(1:CLOSE)»
/
Lesekanal auf Verzeichnis ..\tx öffnen und wieder schliessen:
«READ(1:DIRECT DIR: ..\tx\*.asc)»
...
«READ(1:CLOSE)»
/

Nächste Zeile in Puffer holen

Form

«READ(<Kanal>:)»

Funktion

nächste Zeile in Puffer holen

Parameter

<Kanal>: 1|2|3|4

Rückgabe

N
Konnte die nächste Zeile eingelesen werden, wird 1 zurückgegeben.
Konnte die nächste Zeile nicht eingelesen werden, wird 0 zurückgegeben (Dateizeiger befindet sich am Dateiende oder der angegebene Lesekanal besteht gar nicht).

Bemerkungen

'Zeilen' ohne CR+LF werden bis zum Dateiende gelesen.
Der Inhalt des Puffers kann mit
«READ(<Kanal>:MEM)»
«READ(<Kanal>:MEM <Anzahl Zeichen>,<Position>)» oder
«READ(<Kanal>:MEM -<Trennzeichen>)»
gelesen werden.
Diese Operation kann sowohl im Zusammenhang mit
«READ(<Kanal>:DIRECT <Datei>)»
als auch mit
«READ(<Kanal>:DIRECT DIR: <Datei>)»
verwendet werden.

            

Beispiele

Die folgenden Beispiele sollen in erster Linie die Syntax erläutern.
3. Zeile von ..\tx\test.txt lesen:
«READ(1:DIRECT ..\tx\test.txt)»
«READ(1:)»
«READ(1:)»
«READ(1:)»
«READ(1:MEM)»
«READ(1:CLOSE)»
/
1. Datei *.txt im Verzeichnis ..\tx lesen:
«READ(1:DIRECT DIR: ..\tx)»
«READ(1:)»
«READ(1:MEM)»
«READ(1:CLOSE)»
/

Nächstes Feld auf der aktuellen Zeile in Puffer holen (CSV-Dateiformat)

Form

«READ(<Kanal>:-)»

Funktion

Nächstes Feld auf der aktuellen Zeile in Puffer holen (CSV-Dateiformat)

Parameter

<Kanal>: 1|2|3|4

Rückgabe

N
Konnte das nächste Feld auf der aktuellen Zeile eingelesen werden, wird 1 zurückgegeben.
Konnte das nächste Feld auf der aktuellen Zeile nicht eingelesen werden, wird 0 zurückgegeben (kein nächstes Feld auf der aktuellen Zeile vorhanden oder der angegebene Lesekanal besteht gar nicht).

Bemerkungen

CSV-Dateiformat (Zeilen enthalten Trennzeichen welche die einzelnen "Felder" separieren. Die Struktur jeder Zeile muss dabei übereinstimmen.)
-
Trennzeichen (Feldtrenner) ist Komma.
Kommas und doppelte Anführungszeichen werden nicht interpretiert, wenn ein Feld in einfachen Anführungszeichen steht ('Van, "The Man", Morrison').
Kommas und einfache Anführungszeichen werden nicht interpretiert, wenn ein Feld in doppelten Anführungszeichen steht ("Van, 'The Man', Morrison").
Wird das letzte Feld auf einer Zeile nicht mit Komma abgeschlossen, gibt die Operation zwar 0 zurück, liest das Feld aber trotzdem in den Puffer.
Der Inhalt des Puffers kann mit
«READ(<Kanal>:MEM)»
«READ(<Kanal>:MEM <Anzahl Zeichen>,<Position>)» oder
«READ(<Kanal>:MEM -<Trennzeichen>)»
gelesen werden.
Diese Operation kann (theoretisch) sowohl im Zusammenhang mit
«READ(<Kanal>:DIRECT <Datei>)»
als auch mit
«READ(<Kanal>:DIRECT DIR: <Datei>)»
verwendet werden.

            

Beispiel

Das folgende Beispiel soll in erster Linie die Syntax erläutern.
1. Zeile überlesen (!) (Header-Informationen), 3. Feld lesen auf Zeile 2, 3. Feld lesen auf Zeile 3:
«READ(1:DIRECT ..\tx\test.txt)»
«READ(1:)»
«READ(1:-)»
«READ(1:-)»
«READ(1:-)»
«READ(1:MEM)»
«READ(1:)»
«READ(1:-)»
«READ(1:-)»
«READ(1:-)»
«READ(1:MEM)»
«READ(1:CLOSE)»
/

Puffer auslesen

Form

«READ(<Kanal>:MEM)»

Funktion

Puffer auslesen

Parameter

<Kanal>: 1|2|3|4

Rückgabe

A
Es wird der Inhalt des Puffers zurückgegeben.

Bemerkungen

Der Puffer wird mit
«READ(<Kanal>:)» oder mit
«READ(<Kanal>:-)»
eingelesen.
Diese Operation kann sowohl im Zusammenhang mit
«READ(<Kanal>:DIRECT <Datei>)»
als auch mit
«READ(<Kanal>:DIRECT DIR: <Datei>)»
verwendet werden.

            

Beispiele

Die folgenden Beispiele sollen in erster Linie die Syntax erläutern.
2. Zeile von ..\tx\test.txt einlesen und ausgeben:
«READ(1:DIRECT ..\tx\test.txt)»
«READ(1:)»
«READ(1:)»
«READ(1:MEM)»
«READ(1:CLOSE)»
/
Die ersten beiden *.asc-Einträge im Verzeichnis ..\tx einlesen und ausgeben:
«READ(1:DIRECT ..\tx\*.asc)»
«READ(1:)»
«READ(1:MEM)»
«READ(1:)»
«READ(1:MEM)»
«READ(1:CLOSE)»
/

Puffer lesen bis zum nächsten Trennzeichen

Form

«READ(<Kanal>:MEM -<Trennzeichen>)»

Funktion

Puffer lesen bis zum nächsten Trennzeichen

Parameter

<Kanal>: 1|2|3|4

Rückgabe

A
Es wird der Inhalt des Puffers bis zum nächsten Trennzeichen zurückgegeben.

Bemerkungen

Die eingelesenen Zeichen werden im Puffer gelöscht, d.h. sie sind auch mit
«READ(<Kanal>:MEM)»
nicht mehr zugänglich.
Wird das letzte Feld auf einer Zeile nicht mit einem Trennzeichen abgeschlossen, wird einfach der Rest des Puffers ausgegeben.
Der Puffer wird mit
«READ(<Kanal>:)» oder mit
«READ(<Kanal>:-)»
eingelesen.
Diese Operation kann sowohl im Zusammenhang mit
«READ(<Kanal>:DIRECT <Datei>)»
als auch mit
«READ(<Kanal>:DIRECT DIR: <Datei>)»
verwendet werden.

            

Beispiel

Das folgende Beispiel soll in erster Linie die Syntax erläutern.
Auf Zeile 2 und 3 jeweils die ersten beiden Felder lesen:
«READ(1:DIRECT ..\tx\test.txt)»
«READ(1:)»
«READ(1:)»
«READ(1:MEM -;)»
«READ(1:MEM -;)»
«READ(1:)»
«READ(1:MEM -;)»
«READ(1:MEM -;)»
«READ(1:CLOSE)»
/

Anzahl Zeichen ab Position aus Puffer lesen

Form

«READ(<Kanal>:MEM <Anzahl Zeichen>,<Position>)»

Funktion

Anzahl Zeichen ab Position aus Puffer lesen

Parameter

<Kanal>: 1|2|3|4

Rückgabe

A
Es wird der Inhalt des Puffers, Anzahl Zeichen ab Position, zurückgegeben.

Bemerkungen

Der Puffer wird mit
«READ(<Kanal>:)»
oder mit
«READ(<Kanal>:-)»
eingelesen.
Diese Operation kann sowohl im Zusammenhang mit
«READ(<Kanal>:DIRECT <Datei>)»
als auch mit
«READ(<Kanal>:DIRECT DIR: <Datei>)»
verwendet werden.

            

Beispiel

Das folgende Beispiel soll in erster Linie die Syntax erläutern.
Auf Zeile 2 die ersten 4 Stellen und Stellen 8-11 lesen, auf Zeile 3 6 Stellen ab Stelle 20 lesen:
«READ(1:DIRECT ..\tx\test.txt)»
«READ(1:)»
«READ(1:)»
«READ(1:MEM 4,1)»
«READ(1:MEM 4,8)»
«READ(1:)»
«READ(1:MEM 6,300)»
«READ(1:CLOSE)»
/

Dateigrösse in Bytes ermitteln

Form

«READ(<Kanal>:SIZE)»
Werden Verzeichnisse gelesen, liefert READ(<Kanal>:SIZE) die Anzahl gefundener DAteien innerhalb von READ(i:DIR...).

Funktion

Dateigrösse in Bytes ermitteln

Parameter

<Kanal>: 1|2|3|4

Rückgabe

N

Bemerkungen

Diese Operation kann nur im Zusammenhang mit
«READ(<Kanal>:DIRECT <Datei>)»
nicht aber mit
«READ(<Kanal>:DIRECT DIR: <Datei>)»
verwendet werden

            

Beispiel

Das folgende Beispiel soll in erster Linie die Syntax erläutern.
Dateigrösse von ..\tx\test.txt ermitteln:
«READ(1:DIRECT ..\tx\test.txt)»
«READ(1:SIZE)»
«READ(1:CLOSE)»
/
Anzahl Dateien ermitteln:
«nz~READ(1:DIRECTUTF8 DIR: ..\tmp\*.csv)\I»«GOTO(/)»
# Liefert Anzahl gefundener csv-Dateien
«READ(1:SIZE)»
«READ(1:CLOSE)»

Ein Teil des Textinhaltes über die Anzahl Zeichen oder Bytes einlesen

Form

«READ(<Kanal>:BLOCK <Anzahl Zeichen/Bytes>)»

Funktion

Dieser Befehl liest ab v23.02 die Anzahl Zeichen und nicht mehr die Anzahl Bytes (nur Relevant für UTF-8).

Parameter

<Kanal>:BLOCK <Anzahl Zeichen/Bytes>

Rückgabe

N
Konnte der Lesekanal geöffnet werden, wird 1 zurückgegeben.

Bemerkungen

Mit dieser Operation kann eine genaue Anzahl von Bytes aus einem File ausgelesen werden.

            

Beispiel

# ------------------------------------------------------------------------------------------------------
# Öffnen des Lesekanals
«nz~READ(1:DIRECT «SYS(FULLPATH)»TMP\My_Adresslist.txt)\I»«GOTO(/)»
# Erste 4 Zeichen einlesen (liefert Anzahl gelesener Zeichen zurück)
«nREAD(1:BLOCK 4)\N»
# Eingelesene Zeichen ausgeben
Ausgabe: «READ(1:MEM)»
# ------------------------------------------------------------------------------------------------------
# Nächste Zeile einlesen
«nREAD(1:)»
«nREAD(1:BLOCK 4)\N»
# Eingelesene Zeichen ausgeben
Ausgabe: «READ(1:MEM)»
# ------------------------------------------------------------------------------------------------------
«READ(1:CLOSE)»
/

F-Script Befehlszeichen ersetzen

Form

«READ(<Kanal>:DIRECT "<Ersatzzeichen>" <Datei>)»

Funktion

F-Script Befehlszeichen ersetzen.

Parameter

<Kanal>:DIRECT "<Ersatzzeichen>" <Datei>

Rückgabe

N
Konnte der Lesekanal geöffnet werden, wird 1 zurückgegeben.

Bemerkungen

«READ(<Kanal>:DIRECT "<Ersatzzeichen>" <Datei>)»
Der optionale Parameter <Ersatzzeichen> besteht dabei aus zwei Zeichen welche die F-Script Befehlszeichen ersetzen.
char(174) « wird durch das erste Zeichen ersetzt.
char(175) » wird durch das zweite Zeichen ersetzt.

            

Beispiel

«READ(1:DIRECT "!+" ..\tx\input.txt)»
« wird durch ! ersetzt.
» wird durch + ersetzt.

Hinweis

Soll festgestellt werden ob F-Script Befehlszeichen im Buffer vorhanden sind oder durch obige Funktionalität ersetzt wurden, kann dies folgendermassen gemacht werden:
«READ(<Kanal>:MEM ?)» - Rückgabe: 0/1
0 = Keine F-Script Befehlszeichen vorhanden oder ersetzt.
1 = F-Script Befehlszeichen vorhanden oder ersetzt.

ANSI / UTF8 -codierte Dateien direkt einlesen

Form

«READ(<Kanal>:DIRECTANSI <Datei>)»
«READ(<Kanal>:DIRECTUTF8 <Datei>)»

Funktion

ANSI / UTF8 Dateien direkt einleisen.
Überall dort wo der DIRECT-Parameter beim READ-Befehl verwendet wird, steht auch der Parameter DIRECTANSI bzw DIRECTUTF8 zur Verfügung.

Parameter

<Kanal>:DIRECTANSI <Datei>

Rückgabe

N
Konnte der Lesekanal geöffnet werden, wird 1 zurückgegeben.

Bemerkungen

«READ(<Kanal>:DIRECTANSI <Datei>)»

            

Beispiel

Einzulesender Datensatz:
Hans Müller
Ohne Konvertierung: «READ(1:DIRECT ..\TX\ANSI.txt)» 
Mit Konvertierung: «READ(1:DIRECTANSI ..\tx\ANSI.txt)»
Ergebnis:
Ohne Konvertierung: Hans Mõller
Mit Konvertierung: Hans Müller

ANSI / UTF8: Lesekanal auf Verzeichnisse öffnen

Form

«READ(<Kanal>:DIRECTANSI DIR <Datei>)»
«READ(<Kanal>:DIRECTUTF8 DIR <Datei>)»

Funktion

ANSI / UTF8: Lesekanal auf Verzeichnisse öffnen.
Überall dort wo der DIRECT-Parameter beim READ-Befehl verwendet wird, steht auch der Parameter DIRECTANSI bzw. DIRECTUTF8 zur Verfügung.

Parameter

<Kanal>:DIRECTANSI DIR 1|2|3|4
<Kanal>:DIRECTANSI DIR <Datei>:[<Laufwerk:>|<Netzwerk-Ressourcen>][<Pfad>][<Dateiname>|<Device>]

Rückgabe

N
Konnte der Lesekanal geöffnet werden, wird 1 zurückgegeben.

Bemerkungen

«READ(<Kanal>:DIRECTANSI DIR <Datei>)»

            

Beispiel

«READ(1:DIRECTANSI DIR ..\tx\*.txt)»
Einzulesende Dateien:
müller.txt
ärmel.txt
kübel.txt