Update zum Artikel „Eine UDTF für IFS-Verzeichnisse“

1. März 2010 | Von | Kategorie: Load`n`go, Programmierung

In der NEWSolutions, Januarausgabe 2010 haben wir den Hot Tip „Eine UDTF für IFS-Verzeichnisse“ veröffentlicht. Zwischenzeitlich hat Scott Klement auf vielfachen Wunsch eine neue Version seines Tools geschrieben, die das API Qp0lGetAttr() verwendet und deshalb mehr Informationen liefern kann als die bisherige Version, die auf dem API stat() basierte.

www.burgyzapp.deDownload aktualisiertes Tool:

Download aktualisiertes Tool (Dez 2009 / Jan 2010)

Update: IFS-UDTF mit mehr Informationen

Das API stat() liefert schnell und einfach Informationen über IFS-Objekte – aber sein Funktionsumfang ist begrenzt

von Scott Klement

Frage: Ich setze Ihr Tool IFSDIR ein, um von SQL aus IFS-Verzeichnisse zu lesen. Es funktioniert gut, und ich kann Abfragen nach verschiedenen Attributen ausführen. Aber Ihre UDTF scheint das Erstellungsdatum der Datei nicht zu enthalten. Gibt es eine Möglichkeit, das Erstellungsdatum herauszufinden?

Frage: Wir hatten eine IFS-Datei, die jemand mit dem Befehl CHKOUT ausgecheckt hatte. Dieser Zustand blieb lange Zeit bestehen, bis wir herausgefunden hatten, was los war! Ich würde gerne ein Programm schreiben, das feststellt, wer aus einigen kritischen IFS-Verzeichnissen IFS-Objekte ausgecheckt hat. Ich dachte, ich könnte Ihre UDTF IFSDIR dazu verwenden, aber sie listet nicht auf, wer ein Objekt ausgecheckt hat. Wie kann ich sie anpassen?

Antwort: Der vorliegende Artikel enthält eine aktualisierte Version von IFSDIR, die diese zusätzlichen Informationen für die UDTF bereitstellt.

Stat() im Vergleich mit Qp0lGetAttr()

Der wichtigste Grund, warum meine UDTF IFSDIR die angesprochenen Features nicht hatte, ist die Tatsache, dass es basierend auf dem API stat() geschrieben wurde. Das API stat() ist eine einfache Möglichkeit, Informationen über ein IFS-Objekt zu erhalten. Man übergibt ihm zwei Parameter: Der erste ist der Name des IFS-Objekts, dessen Attribute man abfragen möchte, und der zweite Parameter ist eine Datenstruktur. Das API füllt dann die Felder der Datenstruktur mit Informationen über das angegebene IFS-Objekt.

Das API stat() ist jedoch ein Unix-Typ-API. IBM hat bewußt dafür gesorgt, dass das API genau so funktioniert wie das entsprechende API auf einem Unix-System. Leider ist das Erstellungsdatum in Unix-Umgebungen nicht durchgehend verfügbar. Unix-Tools haben immer das Zugriffsdatum, das Änderungsdatum und das Attribut-Änderungsdatum – aber eben nicht das Erstellungsdatum.

Es gibt ein anderes API namens Qp0lGetAttr(), das sehr viele Informationen über IFS-Objekte liefert. Qp0lGetAttr() hat kein Problem damit, das Erstellungsdatum einer IFS-Datei zu ermitteln, und es liefert noch andere Attribute, die spezifisch für IBM i sind.

Leider ist Qp0lGetAttr() wesentlich schwieriger zu kodieren als stat(). Als ich die UDTF IFSDIR schrieb, wollte ich ein Programmierbeispiel erstellen, und deshalb sollte alles so einfach wie möglich sein, damit man das Konzept einer RPG-UDTF verstehen konnte, ohne sich in Details zu verlieren.

Die Lösung

Widerwillig entschied ich, dass die beste Lösung für die genannten Probleme wäre, die UDTF-Routinen für die Verwendung von Qp0lGetAttr() umzuschreiben. Also biss ich die Zähne zusammen und machte mich an die Arbeit.

Download für den Update des Codes der UDTF IFSDIR (Dez 2009 / Jan 2010)

Sie benötigen das Upload Programm, um diese Utility auf Ihre i5 AS/400 iSeries zu laden, dieses finden Sie im Load´n´go Bereich.

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

Schreibe einen Kommentar

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