NOPUNX1N - API für Aufrufe von Entire System Server/Unix und Entire System Server/Windows

Dieser Abschnitt behandelt folgende Themen:

Diese API ermöglicht Ihnen den Zugriff auf Unix- und Windows-Dateien aus Natural-Programmen.

CALLNAT 'NOPUNX1N' NOPUNX1A

Parameter

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
  • kann alternativ zu NODE übergeben werden;

  • wird nur ausgewertet, falls NODE=0.

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:
Es empfiehlt sich, dieses Feld nach erfolgreichem USER / LOGON zu löschen.

SID N10 nur von der API zu ändern Session ID von Entire System Server.

Dieses Feld wird von der API bei USER / LOGON gesetzt. Es soll von der Anwendung bis zum abschließenden USER / LOGOFF nicht geändert werden.

UID A10 nur von der API zu ändern Interne Benutzerkennung des Betriebssystems.

Dieses Feld wird von der API bei USER / LOGON gesetzt. Es soll von der Anwendung bis zum abschließenden USER / LOGOFF nicht geändert werden.

 GID A10  nur von der API zu ändern   Interne Benutzerkennung des Betriebssystems.

Dieses Feld wird von der API bei USER / LOGON gesetzt. Es soll von der Anwendung bis zum abschließenden USER / LOGOFF nicht geändert werden.

 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 FILE / CLOSE.

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 .

Ablauf-Umgebung

  • 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.

Programmier-Hinweise

Allgemeines

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

Windows-Dateinamen können auch mit normalen Schrägstrich-Zeichen (/) anstelle des umgekehrten Schrägstrichs (\) angegeben werden.

Beispiel:

c:/work/file1.txt

ist gleichbedeutend mit

c:\work\datei1.txt

Session

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.

Session-Ablauf

USER / LOGON 
FILE / ...
FILE / ...
... 
USER / LOGOFF

Öffnen und Schließen von Dateien

  • 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.

Fehlerprüfung

Nach jedem Aufruf von NOPUNX1N ist der Fehlercode in NOPUNX1A.RETURN-CODE zu überprüfen. In NOPUNX1A.RETURN-TEXT wird ein Fehlertext zurückgegeben.

Lesen einer Datei

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.

Schema

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

Suchen bestimmter Datensätze innerhalb einer Datei

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.

Schema

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

Schreiben einer Datei

Mit der Funktion FILE / WRITE wird eine Datei sequenziell geschrieben.

Schema

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

Datei löschen

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.

Datei kopieren

Für FILE / COPY wird die Zieldatei in F-RECORD-250 übergeben.

Datei verschieben oder umbenennen

Für FILE / MOVE wird die Zieldatei in F-RECORD-250 übergeben.

Existenz einer Datei prüfen

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.

Dateiliste eines Verzeichnisses erstellen

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.

Beispiele:

/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.

Schema

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