Neben den bekannten CL-Befehlen, mit welchen Nutzer Informationen aus Datenbanken herausfiltern können, ist es ebenso möglich SQL dafür einzusetzen. SQL Application Services unterstützen dabei. Wie, das erläutert Klaus-Peter Luttkus in diesem Beitrag.
Um mit von Programmierern erstellten Objekten arbeiten zu können, denken wir oft an den Einsatz von CL-Befehlen. Hier nur eine kleine Auswahl:
- DSPPGM – Programmmetadaten anzeigen
- DSPMOD – Modulmetadaten anzeigen
- DSPSRVPGM – Serviceprogrammmetadaten anzeigen
- WRKOBJ – Mit Objekten arbeiten
- DSPOBJD – Objektmetadaten anzeigen
- etc.
Diese und weitere Informationen zu erlangen kann jedoch auch mit SQL realisiert werden. Hierzu dienen die sogenannten SQL Application Services, die ich Ihnen hier näherbringen möchte.
Mit Bibliothekslisten arbeiten
Fangen wir einfach an!
Ein Problembereich für die korrekte Ausführung von Programmen besteht mit Sicherheit darin, dass die Bibliothekslisten unserer Programmumgebungen richtig gesetzt sind. Um die aktuelle Bibliotheksliste eines Jobs zu ermitteln, stellen uns die Application Services die SQL-View library_list_info zur Verfügung:
Ich lasse mir die Bibliotheksliste meines aktuellen Jobs anzeigen:
8
9 select * from library_list_info;
10
Das Ergebnis:

Beachten Sie die Spalte TYPE. Wir erkennen, dass hier System-, Produkt- und Benutzerbibliotheken angezeigt werden. Die Ausgabe ist praktisch identisch mit der Ausgabe des CL-Befehls DSPLIBL.
Ich modifiziere meine Herangehensweise. Ich möchte jetzt lediglich die Aktuellen Bibliothek (Type=CURRENT) und alle Benutzerbibliotheken anzeigen (TYPE=USER):
11
12 select * from library_list_info where TYPE not in('SYSTEM', 'PRODUCT');
13
Das Ergebnis:

Das Ergebnis ist eine Anzeige aller Bibliotheken des Benutzerbereichs der Bibliotheksliste (TYPE=CURRENT und TYPE=USER).
Wir sehen jedoch, dass sich in der Anzeige noch quasi-Systembibliotheken befinden, die ich bei einer weiteren Objektanalyse nicht berücksichtigen möchte:
- QGPL
- QTEMP
- SYSIBM:
- SYSTOOLS
Eine weitere verfeinerte Abfrage ist notwendig!
14
15 select * from library_list_info where TYPE not in('SYSTEM', 'PRODUCT') and
16 substring(Schema_Name, 1, 1) != 'Q'and
17 substring(Schema_Name, 1, 3) != 'SYS';
Das Ergebnis:

Jetzt habe ich eine differenzierte Analyse von realen Benutzerbibliotheken und kann in die einzelnen Bibliotheken hineingehen, um dort mit Programmobjekten zu arbeiten.
Lesen Sie dazu SQL Application Services – Teil 2: Mit Objekten arbeiten.
Den Autor Klaus-Peter Luttkus erreichen Sie unter:
E-Mail: klaus.peter@luttkus-bremen.de
Website: luttkus-bremen.de
Für 88 Euro gibt’s hier sechs Monate lang tiefgreifendes IBM i und SQL Wissen. Hier kann man abonnieren.