Dieser Abschnitt behandelt folgende Themen:
Diese API ermöglicht Ihnen den Zugriff auf Unix- und Windows-Dateien aus Natural-Programmen.
CALLNAT 'NOPUNX1N' NOPUNX1A
Zum Aufruf von NOPUNX1N wird die Parameter Data Area
NOPUNX1A zur Verfügung gestellt.
Beschreibung der Parameter in NOPUNX1A:
| Parameter | Format | Verwendung | ||
|---|---|---|---|---|
OBJECT |
A16 | ein | Mögliche Werte: USER
oder FILE
|
|
FUNCTION
|
A8 | ein | Mögliche Werte für USER:
|
|
LOGON |
Bei einem Knoten anmelden | |||
LOGOFF
|
Bei einem Knoten abmelden. | |||
Mögliche Werte für FILE:
|
||||
COPY |
Datei kopieren. | |||
CLOSE |
Datei schließen. | |||
DELETE |
Datei löschen. | |||
DIR |
Datei-Liste. | |||
MOVE |
Datei verschieben (oder umbenennen). | |||
READ |
Datei lesen. | |||
SCAN |
In ein Datei nach Strings suchen . | |||
WRITE |
Datei schreiben. | |||
RETURN-CODE |
N8 | aus | 0 | Funktion war ok. Anderer Wert: siehe Inhalt von
RETURN-TEXT
|
RETURN-TEXT |
A80 | aus | ||
NODE |
N5 | ein | Knoten, wie in Entire Operations definiert. | |
NODE-NAME |
A16 | ein | Knoten-Name
|
|
NODE-ACCESS-MODE |
A1 | nur von der API zu ändern | leer | Noch nicht geprüft. |
N |
Knoten ist nicht lokal. | |||
Y |
Knoten ist lokal . | |||
Dieses Feld wird von der API bei
USER / LOGON gesetzt. Es soll von der Anwendung nicht
geändert werden.
|
||||
USERID |
A20 | ein | Benutzerkennung für Logon. | |
GROUP |
A20 | ein | Optional: | |
| UNIX | Group für Logon. | |||
| Windows | Domäne für Logon. | |||
PASSWORD |
A16 | ein | Passwort für Logon.
Anmerkung: |
|
SID |
N10 | nur von der API zu ändern | Session
ID von Entire System Server.
Dieses Feld wird von der API bei |
|
UID |
A10 | nur von der API zu ändern | Interne
Benutzerkennung des Betriebssystems.
Dieses Feld wird von der API bei |
|
GID |
A10 | nur von der API zu ändern | Interne
Benutzerkennung des Betriebssystems.
Dieses Feld wird von der API bei |
|
ESC-TRIGRAPH |
A1 | ein | Trigraph-Verwendung: | |
| leer oder N | Keine Trigraph-Konvertierung . | |||
Y
|
Fragezeichen (?) als Trigraph-Escape verwenden | |||
| anderes Zeichen | Dieses Zeichen als Trigraph-Escape verwenden . | |||
TRACE-LEVEL
|
N1 | ein | 0 |
Kein Trace. |
> 0 |
Trace eingeschaltet. | |||
TRACE-TARGET |
A1 | ein | Gibt an, wohin der Trace geschrieben werden soll. | |
S |
SYSOUT | |||
L |
Entire Operations-Protokoll (NOP Log) | |||
B |
Beide: SYSOUT und Entire Operations-Protokoll (NOP Log). | |||
Nur
relevant, wenn TRACE-LEVEL > 0.
|
||||
OBJECT-AREA |
A1200 | - | Objekt-spezifische Felder. | |
Objekt: FILE
(Redefinition von OBJECT-AREA)
|
||||
F-FILE |
A250 | ein | Dateiname.
Der Dateiname ist vollqualifiziert anzugeben, d.h. als kompletter Pfad ab Basis des Dateisystems. Der Dateiname darf Umgebungsvariablen enthalten. |
|
F-HANDLE |
N10 | nur von der API zu ändern | Datei-Handle.
Wird vom Entire System Server beim ersten Zugriff auf die Datei
vergeben; gilt bis |
|
F-LINE |
N10 | ein/aus | ein | Zeilennummer, ab der gelesen werden soll (0 oder 1: ab Dateibeginn lesen) |
| aus | (letzte) gelesene Zeilennummer. | |||
F-NUMBER-RECORDS |
N10 | aus | Anzahl der gelesenen Datensätze. | |
F-SEARCH-TEXT |
A100 | ein | Nur FILE /
SCAN: Text, nach dem in der Datei gesucht werden soll.
|
|
F-RECORD-BUFFER |
A600 | ein/aus | Gesamter Record-Buffer
(Redefinition von F-RECORD-BUFFER)
|
|
F-RECORD-250 |
A250 | ein/aus | FILE / READ,
FILE / WRITE: Effektiver Datensatz .
|
|
Die API ist unter Entire Operations auf Großrechnern und Entire Operations auf Open Systems (UNIX + Windows) einsetzbar.
Mit der API kann nur auf UNIX- und Windows-Knoten zugegriffen werden.
In der verwendeten Natural-Umgebung müssen als Steplibs SYSEOR und die von SYSEOR verwendeten Steplibs definiert sein.
Die von Entire Operations verwendeten Systemdateien (System File 1,
SAT Log File) müssen über LFILE-Zuweisung definiert
sein.
Im folgenden bedeutet der Aufruf OBJECT / FUNCTION (z.B.
USER / LOGON) den Aufruf von NOPUNX1N mit dem
angebenen Objekt und der angegebenen Funktion.
Windows-Dateinamen können auch mit normalen Schrägstrich-Zeichen (/) anstelle des umgekehrten Schrägstrichs (\) angegeben werden.
c:/work/file1.txt
ist gleichbedeutend mit
c:\work\datei1.txt
Alle Datei-Operationen funktionieren nur innerhalb einer gültigen Session.
Die Session wird mit USER / LOGON aufgebaut und mit
USER / LOGOFF beendet.
Während der Session dürfen SESSION-ID, UID,
GID nicht geändert werden.
USER / LOGON FILE / ... FILE / ... ... USER / LOGOFF
Dateien brauchen nicht explizit geöffnet zu werden. Das wird beim
ersten Zugriff mit FILE / READ oder FILE / WRITE
automatisch ausgeführt.
Nach dem Lesen oder Schreiben einer Datei muss die Datei mit
FILE / CLOSE geschlossen werden.
Nach jedem Aufruf von NOPUNX1N ist der Fehlercode in
NOPUNX1A.RETURN-CODE zu überprüfen. In
NOPUNX1A.RETURN-TEXT wird ein Fehlertext zurückgegeben.
Mit der Funktion FILE/READ wird eine Datei sequenziell
gelesen.
In NOPUNX1A.F-LINE kann eine Startzeile übergeben
werden.
Wenn NOPUNX1A.F-LINE den Wert 0 (Null) oder 1
enthält, wird ab Dateibeginn gelesen.
USER / LOGON
R1. repeat
FILE / READ
if (NOPUNX1A.RETURN-CODE ne 0)
escape bottom (R1.)
end-if
... Record behandeln
end-repeat /* R1.
FILE / CLOSE
USER / LOGOFF
Mit der Funktion FILE / SCAN ist es möglich, eine Datei
gezielt nach einer bestimmten Zeichenkette zu durchsuchen. Der Suchzeichenkette
muss in NOPUNX1A.F-SEARCH-TEXT übergeben werden.
USER / LOGON
R1. repeat
FILE / SCAN
if (NOPUNX1A.RETURN-CODE ne 0)
escape bottom (R1.)
end-if
... Record behandeln
add 1 to NOPUNX1A.F-LINE
* -- Startzeile für Folge-Scan
end-repeat /* R1.
FILE / CLOSE
USER / LOGOFF
Mit der Funktion FILE / WRITE wird eine Datei sequenziell
geschrieben.
USER / LOGON
R1. repeat
... allocate record in NOPUNX1A.F-RECORD-250
FILE / WRITE
if (...)
escape bottom (R1.)
end-if
end-repeat /* R1.
FILE / CLOSE
USER / LOGOFF
Mit FILE / DELETE kann man eine oder mehrere Dateien
löschen.
Wenn F-FILE ein Platzhalterzeichen (*) enthält, werden alle
Dateien gelöscht, für die das Platzhalterzeichen zutrifft.
Für FILE / COPY wird die Zieldatei in
F-RECORD-250 übergeben.
Für FILE / MOVE wird die Zieldatei in
F-RECORD-250 übergeben.
Zur Existenzprüfung einer Datei kann die Funktion FILE /
DIR mit einem eindeutigen Dateinamen verwendet werden. Wenn in
NOPUNX1A.RETURN-CODE eine Null zurückgegeben wird, so existiert die Datei.
Mit FILE / DIR können Sie Dateilisten für ein Verzeichnis
erstellen.
Mit dem in NOPUNX1A.F-FILE bereitgestellten
Platzhalterzeichen-Ausdruck können Sie die Liste eingrenzen.
/tmp/* |
Alle Dateien im Verzeichnis
/tmp.
|
/tmp/*.txt |
Dateien im Verzeichnis /tmp, die mit
.txt enden.
|
Die Dateinamen werden in F-RECORD-BUFFER zurückgegeben. Die
Namen sind durch Semikolon (;) getrennt.
Als Beispiel für die Separierung siehe SHOW-DIR-BUFFER
(weiter unten).
Wenn der Buffer für die Dateinamen nicht ausgereicht hat, wird in
NOPUNX1A.RETURN-CODE der Wert 19 (more
objects) zurückgegeben.
Dateiename mit Platzhalterzeichen (Wildcard-Notation).
USER / LOGON
... allocate file name (with wildcard) in NOPUNX1A.F-FILE
R1. repeat
FILE / DIR
decide on first value of NOPUNX1A.RETURN-CODE
value 0, 19 /* 0: ok, 19: more objects
perform SHOW-DIR-BUFFER
none value
ignore
end-decide
if NOPUNX1A.RETURN-CODE ne 19
escape bottom (R1.)
end-if
add 1 to NOPUNX1A.F-LINE
end-repeat /* R1.
FILE / CLOSE
USER / LOGOFF
* ---------------------------------------------------------------------
DEFINE SUBROUTINE SHOW-DIR-BUFFER
* ---------------
* -- Function FILE / DIR:
* -- The record buffer contains a file list, with delimiter ';'
* -- This routine separates the single file names out of the buffer.
* -- #DIR-FILE and #DIR-REST should be declared as (A600)
*
SDB1. REPEAT
EXAMINE NOPUNX1A.F-RECORD-BUFFER FOR ';' REPLACE FIRST WITH ':'
SEPARATE NOPUNX1A.F-RECORD-BUFFER INTO #DIR-FILE #DIR-REST
WITH DELIMITER ':'
* -- now #DIR-FILE contains a single file name, without qualifiers
IF #DIR-REST = ' '
ESCAPE BOTTOM (SDB1.)
END-IF
NOPUNX1A.F-RECORD-BUFFER := #DIR-REST
END-REPEAT /* SDB1.
END-SUBROUTINE