Das Integrated File System (IFS) wird für Programmierer immer wichtiger, da Daten in nicht strukturierter Form für die Informationserlangung und -verarbeitung exponentiell zunehmen. Stand am Anfang der Entwicklung des IFS der Ansatz das damalige System AS/400 als alternativen Datenserver für die x86-Welt zu präsentieren, so ist das IFS heute vor allem eine Kommunikationsschnittstelle zwischen der x86-Welt und IBM i.
Um aus IBM i Applikationen heraus direkt mit dem IFS zu kommunizieren, hatten die IBM i-Entwickler lediglich eine API bereitgestellt. Direkte Befehle in IBM i – Programmiersprachen gab es nicht. An dieser Stelle springt jetzt SQL mit den IFS-Services in die Bresche.
Mit IFS Objekten arbeiten
Folgende IFS-Services werden besprochen:
- IFS_OBJECT_STATISTICS: Objekte finden, Metadaten anzeigen
- IFS_OBJECT_LOCK_INFO: Sperrungen von IFS-Objekten anzeigen
- FS_OBJECT_PRIVILEGES: Vergebene Rechte, NETSERVER Share?
- IFS_OBJECT_REFERENCES_INFO: Statistik, Anzahl Sperrungen, Qualität der Sperrungen
- IFS_ACCESS: Welche Rechte habe ich auf ein IFS-Objekt
- COMPARE_IFS: Vergleich von IFS-Objekten
Grundsätzlich sprechen wir von zwei Objektarten, wenn wir das IFS betrachten:
- Verzeichnisse: Objektart *DIR
- Streamfiles: Objektart *STMF
Eine Dokumentation aller IFS Services finden Sie hier: IBM i / 7.5.0 / IFS Services
QSYS2.IFS_OBJECT_STATISTICS – SQL Table Function
Die Tabellenfunktion IFS_OBJECT_STATISTICS gibt eine Tabelle mit Objekten zurück, die im Startpfadnamen enthalten sind oder über den Startpfadnamen zugänglich sind. Diese Informationen ähneln denen, die vom Befehl „Retrieve Directory Information“ (RTVDIRINF) oder der API „Qp0lGetAttr()–Get Attributes“ zurückgegeben werden.
In folgendem Beispiel werde ich alle Objekte die IM IFS gespeichert sind auflisten:
Quelle: LuttkusIm Parameter start_path_name gebe ich das IFS-Root an: ‘/’
Im Parameter subtree_directories gebe ich an: ‘YES’
Das Ergebnis:
Quelle: Luttkus
Quelle: Luttkus
Quelle: LuttkusIch habe Ihnen hier eine Auswahl an Daten angezeigt, die dieser Service ermittelt.
Weitere Informationen finden Sie hier: IBM i / 7.5.0 / IFS_OBJECT_STATISTICS table function
Achtung, diese Abfrage hat eine sehr lange Laufzeit! Auf dem mir zur Verfügung stehenden System benötigte diese Abfrage ca. 3 Minuten. Die Laufzeit ist jedoch direkt abhängig von der Menge der im IFS adressierbaren Daten, der Leistung Ihres Systems, dem verwendeten Massenspeicher, etc.
Ich habe bei dieser Abfrage die Parameter als benannte Parameter in der Form Parametername => Parameterwert notiert. Eine alternative Vorgehensweise besteht darin die Parameter als Positionsparameter zu übergeben:
Quelle: LuttkusFolgende Objekttype können bei einer Abfrage der IFS-Objekte berücksichtigt bzw. ausgeschlossen werden:
Einschließen
- *ALLDIR: Alle Verzeichnisse
- *ALLSTMF: Alle Streamfiles
- *MBR: Teildateien in QSYS.LIB-Filesystem
Ausschließen
- *NOQDLS: DLS-Objekte
- *NOQOPT: Opticals
- *NOQSYS: File System QSYS.LIB ausschließen
Quelle: LuttkusJe nach PTF-Level Ihres Systems können im Parameter object_type_list nicht nur einzelne Werte eingetragen werden, sondern auch Listen mehrerer Ein- bzw. Ausschlusskriterien.
Alle Objekte (*DIR und *STMF)
Quelle: Luttkus- Unterverzeichnisse wurden ausgeschlossen.
- Spezifische Felder von Interesse wurden selektiert.
Quelle: LuttkusNur *STMF Objekte
Quelle: LuttkusDas Ergebnis:
Quelle: Luttkus*STMF Objekte eines Benutzers
Quelle: Luttkus
Quelle: Luttkus*STMF Objekte mit bestimmten Zeichen im Namen
Quelle: Luttkus
Quelle: LuttkusSie sehen, dass man mit Hilfe der table Function IFS_OBJECT_STATISTICS() auf vielfältige Art Objektdaten direkt aus dem IFS heraus ermitteln kann.
Im nächsten Artikel werden wir dann diese Basismetadatendaten von IFS Objekten durch weitere Metadaten anreichern.
Lesen Sie dazu SQL Application Services – Teil 12: IFS Services 02.
Sie erreichen den Autor, Klaus-Peter Luttkus, unter:
E-Mail: klaus.peter[at]luttkus-bremen.de
Website: https://luttkus-bremen.de
