Im Dezember 2024 wurde eine neue SQL-View, SYSTOOLS. CONFIGURATION_STATUS, mit IBM i 7.5 Database PTF Group Level 8 und IBM i 7.4 Database PTF Group Level 29 bereitgestellt, aber nicht für 7.3. Wie kann diese View auch mit einem Release 7.3 oder niedriger verwendet werden?
Dieser Artikel zeigt Schritt für Schritt, wie Sie das mit IBM i ACS – SQL-Scripts ausführen realisieren können.
Die SQL-View SYSTOOLS.CONFIGURATION_STATUS
Die View CONFIGURATION_STATUS gibt eine Zeile für jede Konfigurationsbeschreibung auf dem System zurück. Die zurückgegebenen Informationen ähneln den Details, die vom CL-Befehl Retrieve Configuration Status (RTVCFGSTS) zurückgegeben werden.
Mit dem CL-Befehl WRKCFGSTS?ist man auf die zurückgegebenen Felder beschränkt:
Mit Konfig.status arbeiten (WRKCFGSTS)
Auswahl eingeben und Eingabetaste drücken.
Art . . . . . . . . . . . . . . CFGTYPE
Konfigurationsbeschreibung . . . CFGD *ALL
Ausgabe . . . . . . . . . . . . OUTPUT *
Bereich . . . . . . . . . . . . RANGE *NET
Status . . . . . . . . . . . . . STATUS *ALL
Zusätzliche Parameter
Unterstützungsstufe . . . . . . ASTLVL *PRV
Die für den Parameter,?CFGTYPE, gültigen Konfigurationstypen sind:
- *CTL:? Controllers
- *DEV:? Devices
- *LIN:? Lines
- *NWI:? Network interfaces
- *NWS:? Network server descriptions
Ich kann nur eines davon oder ‘*ALL’ auswählen, nicht mehrere. Die Ausgabe ist auf das aktuelle Gerät ( * ) oder die aktuelle Spool-Datei ( *PRINT ) beschränkt. Wenn ich die Informationen in einem Programm verwenden wollte, müsste ich die Spool-Datei verwenden, und die Daten sind statisch. Die neue Ansicht, die in der Bibliothek SYSTOOLS CONFIGURATION_STATUS ist, ermöglicht mir aufgrund ihrer Natur als Ansicht mehr Flexibilität bei der Auswahl und Sortierung der gewünschten Daten, und sie ist dynamisch. Mit der folgenden SQL-Anweisung werden alle Informationsspalten angezeigt:
SELECT?*?FROM?SYSTOOLS.CONFIGURATION_STATUS;
Weitere Infos zu dieser SQL-View finden Sie hier.
Die Komponenten, die für die Erstellung der SQL-View erforderlich sind
- Ausgangspunkt für die SQL-View ist ein CL-Programm, welches den CL-Befehl RTVCFGSTS verwendet.
- Mit diesem CL-Programm wird eine SQL-Prozedur SYSTOOLS.CONFIGURATION_STATUS_CL erstellt.
- Im nächsten Schritt wird eine SQL-Tabellen-Funktion erstellt, die die zuvor erstellte SQL-Prozedur verwendet.
- Zu guter Letzt wird mit Hilfe dieser Funktion die SQL-View SYSTOOLS.CONFIGURATION_STATUS erstellt.
Für die Erstellung der einzelnen Komponenten wird das Tool SQL-Scripts von IBM i ACS verwendet.
a) CL-Programm
CL: CRTSRCPF FILE(QTEMP/QCLSRC) RCDLEN(160) MBR(*NONE);
CL: ADDPFM FILE(QTEMP/QCLSRC) MBR(THEPGM);
INSERT INTO QTEMP.QCLSRC(SRCSEQ, SRCDTA) VALUES
(1,'QSYS/PGM PARM(&VAR1 &VAR2 &VAR3)'),
(2,'QSYS/DCL VAR(&VAR1) TYPE(*CHAR) LEN(10)'),
(3,'QSYS/DCL VAR(&VAR2) TYPE(*CHAR) LEN(10)'),
(4,'QSYS/DCL VAR(&VAR3) TYPE(*DEC) LEN(5 0)'),
(5,'QSYS/RTVCFGSTS CFGD(&VAR1) CFGTYPE(&VAR2) STSCDE(&VAR3)'),
(6,'QSYS/MONMSG MSGID(CPF0000) +'),
(7,' EXEC(QSYS/CHGVAR VAR(&VAR3) VALUE(-1))'),
(8,'QSYS/ENDPGM');
Zur Anzeige der CL-Quelle kann folgende SQL-Anweisung verwendet werden:
SELECT * FROM QTEMP.QCLSRC;
Die Umwandlung des CL-Programms erfolgt mit:
CL: QSYS/CRTBNDCL PGM(SYSTOOLS/RTVCFGSTS) SRCFILE(QTEMP/QCLSRC) SRCMBR(THEPGM)
DFTACTGRP(*YES) USRPRF(*USER) ALWRTVSRC(*NO)
REPLACE(*YES) AUT(*USE) DBGVIEW(*NONE)
b) SQL-Prozedur
Create Or Replace Procedure Systools.Configuration_Status_Cl (Configd Char(10),
Type Char(10), Result Out Decimal(5, 0))
Specific Systools.Cfgsts_Cl
Language Cl
Parameter Style General
Not Deterministic
External Name Systools.Rtvcfgsts;
c) SQL-Funktion SYSTOOLS.CONFIGURATION_STATUS?(?)
Create Or Replace Function Systools.Configuration_Status ()
Returns Table (
Object_Name Varchar(10) For Sbcs Data,
Object_Type Varchar(5) For Sbcs Data,
Object_Attribute Varchar(10) For Sbcs Data,
Status Integer,
Text_Description Varchar(50),
Create_Timestamp Timestamp(0),
Last_Used_Timestamp Timestamp(0),
Change_Timestamp Timestamp(0)
)
Language Sql
Specific Systools.Config_Sts
Not Deterministic
Modifies Sql Data
Called On Null Input
Not Fenced
System_Time Sensitive No
Set Option Alwblk = *Allread, Alwcpydta = *Optimize, Commit = *None,
Decresult = (31, 31, 00), Dftrdbcol = Qsys2, Dlyprp = *No,
Dyndftcol = *No, Dynusrprf = *User, Srtseq = *Hex, Usrprf = *User
Begin
Declare Result_Code Decimal(5, 0) Default 0;
For Devstatus Cursor For
Select Objname, Objtype, Objattribute, Objtext, Objcreated,
Last_Used_Timestamp, Change_Timestamp
From Table (
Qsys2.Object_Statistics(
'QSYS', '*DEVD *LIND *CTLD *NWID *NWSD')
)
Do
Call Systools.Configuration_Status_Cl(Objname, Rtrim(
Objtype, 'D'), Result_Code);
If Result_Code <> -1 Then
Pipe (
Objname,
Objtype,
Objattribute,
Result_Code,
Objtext,
Objcreated,
Last_Used_Timestamp,
Change_Timestamp);
End If;
End For;
Return;
End;
d) SQL-View SYSTOOLS.
Nun endlich kann die finale SQL-View erstellt werden:
Create Or Replace View Systools.Configuration_Status For System Name
Config_Sts (
Object_Name For Column Name,
Object_Type For Column "TYPE",
Object_Attribute For Column Attr,
Status,
Status_Description For Column Status_D,
Text_Description For Column Text,
Create_Timestamp For Column Created,
Last_Used_Timestamp For Column Last_Used,
Change_Timestamp For Column Changed
) As
Select Coalesce(Object_Name, ''),
Coalesce(Object_Type, ''),
Coalesce(Object_Attribute, ''),
Coalesce(Status, 0),
Coalesce(
Case Status
When 0 Then 'VARIED OFF'
When 10 Then 'VARY OFF PENDING'
When 20 Then 'VARY ON PENDING'
When 30 Then 'VARIED ON'
When 32 Then 'VARY ON/CNN PENDING'
When 40 Then 'CONNECT PENDING'
When 50 Then 'SIGNON DISPLAY'
When 51 Then 'ACTIVE/CNN PENDING'
When 60 Then 'ACTIVE'
When 63 Then 'ACTIVE READER'
When 66 Then 'ACTIVE WRITER'
When 67 Then 'AVAILABLE'
When 70 Then 'HELD'
When 80 Then 'RCYPND'
When 90 Then 'RCYCNL'
When 95 Then 'SYSTEM REQUEST'
When 100 Then 'FAILED'
When 103 Then 'FAILED READER'
When 106 Then 'FAILED WRITER'
When 107 Then 'SHUTDOWN'
When 110 Then 'DIAGNOSTIC MODE'
When 111 Then 'DAMAGED'
When 112 Then 'LOCKED'
When 113 Then 'UNKNOWN'
Else Varchar(Cast(Status As Bigint))
End,
''
) As Status_Description,
Text_Description,
Coalesce(Create_Timestamp, Timestamp('0001-01-01', 0)),
Last_Used_Timestamp,
Coalesce(Change_Timestamp, Timestamp('0001-01-01', 0))
From Table (
Systools.Configuration_Status()
) -- Tabellen-Funktion muss vorher erstellt werden
Rcdfmt Config_Sts;
Comment On Table SYSTOOLS.CONFIGURATION_STATUS
Is 'TB FOR TKL 7.3';
Jetzt können Sie die View wie folgt einsetzen:
SELECT * FROM SYSTOOLS.CONFIGURATION_STATUS;
Und so könnte das Ergebnis aussehen:
Quelle: BärDamit sind Sie nun in der Lage, die folgenden Auswertungen u.a. zu erstellen:
- Wie viele Objekte für jeden Konfigurationstyp vorhanden sind
- Wann wurden die Bandlaufwerke auf der Partition das letzte Mal verwendet??
- Bestimmen, wann ein virtuelles Gerät zuletzt verwendet wurde
- Liste aller Controller und deren Status
- Liste aller DSPVRT und Status VARIED OFF
Vorschau:
Im nächsten Artikel werde ich weitere Features von IBM i ACS beschreiben.
Bis dahin wünsche ich Ihnen weiterhin viel Spaß beim Vermehren Ihrer Fertigkeiten.
Den Autor Theo Bär erreichen Sie unter:
EDV-Beratung Theo Bär
Ringmauerweg 1
69250 Schönau
Tel. (+49) 6228 912 630
E-Mail: info@edv-baer.com
