Fünf praktische IFS Tipps

11. November 2008 | Von | Kategorie: Programmierung, Tools, Hot-Tips

Eine kleine Einführung in die IFS Architektur“ von Michael Otey, erschienen in der Februarausgabe 2004 der NEWSolutions lesen Sie hier 5 praktische IFS Tipps und eine vollständige Aufstellung der CL Anweisungen.

Als Ergänzung zum Artikel „Eine kleine Einführung in die IFS Architektur“ von Michael Otey, erschienen in der Februarausgabe 2004 der NEWSolutions lesen Sie hier 5 praktische IFS Tipps und eine vollständige Aufstellung der CL Anweisungen.

Diese fünf praktischen IFS Tipps können helfen, den größtmöglichen Nutzen aus dem integrierten Dateisystem (IFS) zu ziehen.

re1_Image-232_Z1. IFS Dateitransfer mittels FTP

Zur Übertragung von Dateien von einem im Netz befindlichen System in ein IFS Verzeichnis lässt sich FTP (subcommand PUT) hervorragend einsetzen. Mit dem subcommand GET kann der umgekehrte Weg beschritten werden – das Auslesen von Dateien, die sich in einem IFS Verzeichnis befinden. In dem nachfolgenden Beispiel ist das Kopieren des gesamten Inhalts des Verzeichnisses c:\upload400 in das IFS-Verzeichnis /uploads dargestellt.

    ftp > PUT c:\upload400\*.* /uploads

2. Transfer von Savefiles mittels FTP

Vorteile aus dem IFS lassen sich auch durch den Einsatz von FTP als Objekt-Transfer-Mechanismus zwischen iSeries Systemen ziehen. Eine solche Übertragung erfordert allerdings zusätzliche Angaben, da FTP standardmäßig nur den Datenteil einer Datei überträgt, nicht hingegen die logischen Attribute. Dieses Problem lässt sich aber durch die Verwendung von subcommand BIN in Verbindung mit dem subcommand NAMEFMT und der Angabe des absoluten Pfades der Datei lösen. Das nachfolgende Beispiel zeigt, wie die Übertragung der Savefile MySaveFile auf ein fernes iSeries System via FTP zu definieren ist:

    ftp> bin ftp> namefmt 1 ftp> put /qsys.lib/qgpl.lib/mysavefile.savf /qsys.lib/qgpl.lib/mysavefile.savf

Nach Abschluss der Übertragung lassen sich die in der Savefile enthaltenen Objekte mit der Anweisung RSTOBJ (Restore Object) auf dem fernen System zurückspeichern.

3. Dateisicherung in IFS Verzeichnissen

Die standardmäßige OS/400 Anweisung SAVOBJ (Save Object) sichert keine Objekte, die in IFS-Verzeichnissen enthalten sind – Ausnahme: QSYS.LIB. Zur Sicherung von Objekten aus IFS Verzeichnissen dient die Anweisung SAV. Das folgende Beispiel zeigt, wie sich alle in IFS-Root-Verzeichnissen enthaltenen Objekte – ausschließlich der Objekte in QSYS.LIB und QDLS – auf eine Einheit namens TAP01 sichern lassen:

    SAV DEV(‚/QSYS.LIB/TAP01.DEVD‘) OBJ((‚/*‘) (‚QSYS.LIB‘ *OMIT) (‚QDLS‘ *OMIT))

4. Erstellen von Dateien im IFS unter Verwendung der ASCII Code Page

Als Unterlassungswert wird bei der Erstellung von Dateien in IFS-Verzeichnissen die EBCDIC Code Page verwendet. Unglücklicherweise ist diese Code Page aber auf ASCII-basierten Systemen wie Windows, Linux oder Unix nicht unterstützt. Wie das folgende Beispiel zeigt, kann jedoch die Anweisung CPYTOSTMF (Copy to Stream File) mit Angabe des Parameters STMFCODPAG (Stream File Code Page) verwendet werden, um eine Datei im IFS zu erzeugen, die die ASCII Code Page benutzt. Die im Parameter FROMMBR (From Member) angegebene Datei kann eine Quellendatei oder eine programmbeschriebene Datei sein:

    CPYTOSTMF FROMMBR (‚/qsys.LIB//mikeo.LIB/ASCII.FILE/ASCII.MBR‘) TOSTMF(‚/downloads/MyASCIIfile‘) STMFOPT(*Replace) STMFCODPAG(*PCASCII) ENDLINFMT(*CRLF)

5. Kopieren von Datenbankdateien ins IFS mit automatischer ASCII-Umsetzung

Nach der Erstellung einer Datei im IFS, die die ASCII Code Page unterstützt, können mit der Anweisung CPYTOIMPF (Copy to Import File) Daten in diese Datei übertragen werden. CPYTOIMPF erleichtert die Datenübertragung zwischen unterschiedlichen Plattformen wegen der besonderen Fähigkeit, automatisch die unterschiedlichsten Dateitypen mit Begrenzungszeichen – wie beispielsweise CVS (comma-separated variable) Dateien – erstellen zu können. Die kopierten Daten werden automatisch in die für die Zieldatei definierte Code Page umgesetzt. Das folgende Beispiel kopiert die Daten aus der Datei QIWS/QCUSTDT in die Datei MyASCIIfile im CVS Format:

      CPYTOIMPF FROMFILE(QIWS/QCUSTDT) TOSTMF(‚/downloads/MyASCIIfile‘) MBROPT(*REPLACE) RCDDLM(*CRLF) DTAFMT(*DLM)

CL Anweisungen im IFS

OS/400 stellt eine Vielzahl von Befehlen zur Verfügung, die dazu dienen, aus einer interaktiven Sitzung heraus das IFS zu steuern. Die nachfolgende Liste enthält den erweiterten „Langtext“ des jeweiligen Befehls.

Befehl Beschreibung
ADDLNK Adds a link between a directory and an object
ADDMFS Adds a mounted file system over local client directories
APYJRNCHG2 Uses journal entries to apply changes to a journaled object
CHGATR Changes an attribute of an object, a group of objects, or a directory tree
CHGAUD Changes the auditing value of an object
CHGAUT Changes the authority for an object
CHGCURDIR Changes the current directory
CHGNFSEXP Changes the NFS export table
CHGOWN Changes object ownership from one user to another
CHGPGP Changes the primary group from one user to another
CHKIN Checks in an object that was previously checked out
CHKOUT Checks out an object to prevent other users from changing it
CPY Copies an object or a group of objects
CPYFRMSTMF Copies data from a stream file to a database file member
CPYTOSTMF Copies data from a database file member to a stream file
CRTDIR Creates a new directory
CRTUDFS Creates a user-defined file system
CVTDIR Converts an IFS directory from *TYPE1 format to *TYPE2 format
CVTRPCSRC Converts an RPC source file to C code
DLTUDFS Deletes a user-defined file
DSPAUT Displays a list of authorized users of an object
DSPCURDIR Displays the name of the current directory
DSPLNK Displays a list of objects in a directory
DSPF Displays a stream file or a database file
DSPMFSINF Displays information about a mounted file system
DSPUDFS Displays user-defined file system
EDTF Edits a stream file or a database file
ENDJRN2 Ends journaling for an object or a list of objects
ENDNFSSVR Ends one or all of the NFS daemons on the server and client
ENDRPCBIND Ends the RPCBind daemon
MOV Moves an object to another directory
RLSIFSLCK Releases NFS byte-range locks
RMVDIR Removes a directory from the system
RMVLNK Removes the link to an object
RMVMFS Removes a mounted file system from the local client directories
RNM Renames an object
RPCBIND Starts the RPCBind daemon
RST Restores an object or a group of objects
RTVCURDIR Retrieves the name of the current directory and puts it into a variable
SAV Saves an object or a group of objects
SNDJRNE2 Adds user journal entries to a journal receiver
STRJRN2 Starts journaling for an object
STRNFSSVR Starts one or all of the NFS daemons on the server and client
WRKAUT Work with a list of users and their authorities
WRKLNK Work with a list of objects in a directory
WRKOBJOWN1 Work with a list of objects owned by a user profile
WRKOBJPGP1 Work with a list of objects controlled by a primary group

 

Übersetzt und für den deutschsprachigen Markt überarbeitet von Joachim Riener

Schlagworte: , , , , , , , , , , , , , , , , ,

Schreibe einen Kommentar

Sie müssen eingeloggt sein, um einen Kommentar schreiben.