Tips und Techniken für die AS/400
Der 8. Teil der jährlichen Tips und Techniken jetzt online:
Thema: SYSTEMVERWALTUNG
Blitz Links:Deaktivierung von Statusmeldungen
Deklarieren von Systemdateien zur Vermeidung der interaktiven Kompilierung
Einrichtung von Gruppenjobs in drei Sekunden
Einrichtung von Abkürzungen für Benutzerbefehle (Fastpaths)
Vereinfachte Parametereingabe durch Symbole
Druck einer Liste der gesamten installierten IBM-Software
Ermittlung der Bibliotheksgröße
Ermittlung getrennter Jobs
Beachten Sie bei der PFT-Bestellung den Medientyp
Vereinfachung von Sicherungsvorgängen
Programmleistung
Einfachere Gesamtsystemspeicherung
Vergleich der PTF-Stufen vor dem Upgrade
SYSTEMVERWALTUNG
Deaktivierung von Statusmeldungen
Wenn Sie ein CL-Programm ausführen, um eine Datei zu kopieren oder eine Abfrage durchzuführen, wird in der Regel eine Statusmeldung wie „Copying member or Label…“ oder „Query running…“ am unteren Bildschirmrand eingeblendet. Es kann jedoch auch Situationen geben, in denen Sie eine eigene Meldung einblenden möchten oder in denen Sie vorziehen, daß der Benutzer keine Statusmeldung sieht. Aus Sicherheitsgründen kann es von Vorteil sein, wenn neugierige Benutzer nicht über Abfrage- oder Kopierprozesse informiert sind. Weniger Statusmeldungen verringern auch das nachlässige Umgehen der Benutzer mit Statusmeldungen, so daß wichtige Sondermeldungen nicht so leicht ignoriert werden.
Mit dem Befehl CHGJOB (Job ändern) und dem Parameter STSMSG(*NONE) (siehe Abbildung 11) können Sie die Anzeige von Standardmeldungen verhindern. Mit dieser Technik wird ein aktiver Job abgefangen, der einem bestimmten Benutzerprofil zugehört. Sie müssen den Wert der Job-Statusmeldung aufzeichnen, während Sie ihn abfangen, bevor Sie ihn temporär durch Ihren eigenen Wert *NONE ersetzen können, um die Statusmeldungen zu deaktivieren. Später können Sie die Job-Meldungswerte wiederherstellen. Das Beispielprogramm kopiert eine Datei, fragt sie verdeckt ab, stellt den Originalwert für den STMSG-Parameter wieder her und gibt die Jobsteuerung an den Benutzer zurück.
Deklarieren von Systemdateien zur Vermeidung der interaktiven Kompilierung
Sie können ein Programm, das Systemdateien verwendet, in Stapeln kompilieren und die interaktive Kompilierung verhindern, indem Sie die Systemdatei in Ihrem Programm benennen und die reale Datei übergehen. Wenn Sie beispielsweise die Datei verwenden, die mit dem Befehl DSPOBJD (Objektbeschreibung anzeigen) erstellt wurde, müssen Sie QADSPOBJ in Ihrem Programm deklarieren (siehe den Code in Abbildung 12).
Mit dieser Technik müssen die Programme nie wieder interaktiv kompiliert werden. Das Verfahren ist auch auf RPG III und RPG IV (ILE RPG) anwendbar. Der Tip stammt aus dem Programmer Reference Summary (SX41-3720). Das Handbuch ist eines der besten Nachschlagewerke für Programmierer. Es enthält die Systemwerte und ihre Beschreibungen, gebräuchliche APIs, alle ermittelbaren Fehlermeldungen und andere wichtige Hinweise. Außerdem enthält das Handbuch sämtliche von Befehlen benutzten Dateien.
Einrichtung von Gruppenjobs in drei Sekunden
Gruppenjobs steigern die Produktivität der Programmier und Benutzer. Dies gilt besonders für Situationen, in denen mehrere Mitarbeiter einen Einzelsitzungs-Terminal gemeinsam benutzen. Da Gruppenjobs von vielen nicht genau verstanden werden, werden sie nicht oft eingesetzt.
Es gibt eine Methode, mit der Gruppenjobs in wenigen Sekunden gestartet werden können (allerdings mit nur zwei Jobs in der Gruppe). Geben Sie dazu folgenden Befehl ein:
CALL PGM(QSYS/QSCATTN)
Dieser Befehl erstellt einen Gruppenjob (mit dem Originaljob als Teildatei), und schaltet dann zum zweiten Job in der Gruppe. Durch ein erneutes Aufrufen des Programms können Sie zwischen beiden Jobs in der Gruppe hin- und her schalten.
Sie können sich die Arbeit noch leichter machen, indem Sie das Programm QSCATTN als Abrufprogramm spezifizieren. Wenn Sie anschließend zwischen den beiden Jobs hin- und her schalten möchten, müssen Sie nur die ATTN-Taste drücken. Legen Sie das Abrufprogramm mit dem folgenden Befehl fest:
SETATNPGM PGM(QSYS/QSCATTN)
Verwenden Sie den Befehl CHGPRF (Profil ändern) wie folgt, wenn Sie QSCATTN zu Ihrem permanenten Abrufprogramm machen möchten:
CHGPRF ATNPGM(QSYS/QSCATTN)
Einrichtung von Abkürzungen für Benutzerbefehle (Fastpaths)
Abkürzungen für Benutzerbefehle haben eine deutliche Arbeitserleichterung für die einzelnen Benutzer zur Folge. Beispielsweise nimmt es deutlich weniger Zeit in Anspruch, wenn die Benutzer für den Zugriff auf das Menü MENU01 „M1″ statt „GO MENU01″ eingeben können. Dasselbe gilt für die Eingabe von „QRY1″ statt „RUNQRY *NONE FILE RCDSLT(*YES)“. Die Kurzbefehle lassen sich mit dem Befehl CRTCMD (Befehl erstellen) leicht einrichten. Definieren Sie den Befehl als Konstante, und spezifizieren Sie QCMDEXC als Befehlsverarbeitungs-Programm (CPP). Durch die Festlegung von QCMDEXC entfällt die Notwendigkeit, ein CPP zu schreiben.
Abbildung 13 zeigt an einem Beispiel, wie Sie eine Befehlsabkürzung für die Benutzer erstellen. Der Befehl M1 wird in der Bibliothek QGPL mit den in den PARM-Anweisungen abgebildeten Parametern erstellt. Der Parameter CONSTANT in der zweiten PARM-Anweisung zeigt die Länge des Befehls. Dieser Wert kann eine beliebige Zahl bis maximal 32 sein. Der Beispielbefehl ruft QCMDEXC in der Bibliothek QSYS auf und blendet ein Benutzermenü ein.
Vereinfachte Parametereingabe durch Symbole
Die Eingabe von Befehlen mit Listen – zum Beispiel die Eingabe des Befehls SAVOBJ (Objekt speichern) mit einer Objektliste – in einer Befehlszeile ist ein aufwendiger Vorgang. Durch die folgenden Symbole läßt sich die Eingabe der Parameter wesentlich vereinfachen:
- Geben Sie „&“ ein, drücken Sie Field Exit und anschließend Enter in jedem Zeilenobjekt, wenn Sie das Feld für zusätzliche Informationen in der Zeile erweitern möchten.
- Geben Sie „+“ ein, drücken Sie Field Exit und anschließend Enter, wenn Sie weitere Listenelemete an das Ende einer Objektliste anfügen möchten (z.B. Dateien oder Workstations), die in einem Befehl aufgeführt sind.
- Geben Sie „<“ ein, drücken Sie Field Exit und anschließend Enter in einem Listenelement, wenn Sie das Element löschen möchten. Dieselbe Funktion wird auch dann ausgeführt, wenn Sie nur Field Exit drücken.
- Geben Sie „>“ ein und drücken Sie Field Exit in einem Listenelement, wenn Sie an dieser Position Daten einfügen möchten.
Druck einer Liste der gesamten installierten IBM-Software
Wenn Sie GO LICPGM eingeben und Option 10 wählen, wird eine Liste mit in Ihrem System installierten IBM-Softwarepaketen angezeigt. Allerdings ist diese Liste unter Umständen unvollständig, und außerdem kann sie nicht ausgedruckt werden. Natürlich können Sie die Liste über die Print Screen-Taste ausdrucken. Das kann jedoch bedeuten, daß Sie 15 verschiedene Bildschirme in einem unübersichtlichen Format ausdrucken müssen. Außerdem besteht die Gefahr, daß Sie einzelne Bildschirme vergessen, oder daß Daten abgeschnitten werden. Der folgende Befehl DSPSFWRSC (Softwareressourcen anzeigen) zeigt nicht nur alle Namen der Softwarepakete an, sondern er druckt auch den Namen der Bibliotheken mit aus, in denen sich die jeweiligen Softwarepakete befinden:
DSPSFWRS C OUTPUT(*PRINT)
Ermittlung der Bibliotheksgröße
Mit dem Befehl DSPLIB (Bibliothek anzeigen) läßt sich die Größe einer Bibliothek besonders schnell feststellen:
DSPLIB LIB(YOURLIB) OUTPUT(*PRINT)
Die Festlegung der Option OUTPUT(*PRINT) ist wichtig, da andernfalls nur die Größe der einzelnen Objekte in der Bibliothek angezeigt wird. *PRINT zeigt nicht nur die Größe der einzelnen Objekte an, sondern auch die Gesamtgröße der Bibliothek am Ende des Berichts. Bei der Gesamtgröße handelt es sich um die Summe aller Objekte plus der Größe des Bibliotheksobjekts (LIB). Sie können statt dem *LIB-Parameter auch *ALLUSR oder *ALL spezifizieren, wenn Sie die Größe aller Nicht-IBM-Bibliotheken oder Systembibliotheken ermitteln möchten. Wenn Sie *ALLUSR oder *ALL verwenden, müssen Sie den Job als Stapeljob ausführen, weil in diesen Werten zu viele Ressourcen beansprucht werden, um DSPLIB interaktiv ausführen zu können.
Ermittlung getrennter Jobs
Wahrscheinlich führen Sie bei jedem Backup von Systemdatendateien den Befehl WRKACTJOB (Mit aktiven Jobs arbeiten) aus, um sicherzustellen, daß keine zu sichernden Dateien durch Jobs gesperrt werden. Leider reicht dies nicht immer aus. Ein Benutzer kann sich mit dem Befehl DSCJOB (Job trennen) statt mit dem Befehl SIGNOFF oder mit der Option 80 im ASSIST-Menü von einem Job getrennt haben. Der Job besteht in diesem Fall weiter und unter Umständen auch offene Dateien und Dateisperrungen.
Drücken Sie bei der Ausführung von WRKACTJOB die Taste F14, um das Problem zu lösen. Mit dieser Option werden alle getrennten, alternierenden und Gruppenjobs angezeigt. Sie erkennen die getrennten Jobs, indem Sie nach allen Jobs mit dem Jobstatus DSC oder mit der Job-Funktion CMD-DSCJOB suchen. Beenden Sie die entsprechenden Jobs, um die Sperrung aufzuheben. Wenn möglich, sollte der Benutzer selber den Job normal beenden. Dann können Sie sicher sein, daß alle Dateien richtig mit dem Backup gespeichert werden.
Beachten Sie bei der PFT-Bestellung den Medientyp
Falls Sie verschiedene Systeme mit unterschiedlichen OS/400-Versionen unterstützen (besonders bei einer Mischung von RISC- und CISC-Systemen), müssen Sie den richtigen Standardmedientyp festlegen, bevor Sie ein PFT bestellen. Wenn Sie beispielsweise ein kumulatives V3R1-PTF eines V3R6 (RISC)-Systems bestellen und der Befehl WRKCNTINF (Mit Kontaktinformationen arbeiten) „auto select or CD-ROM“ festlegt, wird bei der Bestellung die CD-ROM angefordert. Dieses Medium kann jedoch nur auf RISC-Systemen verwendet werden. Der Befehl SNDPTFORD (PTF-Bestellung senden) gibt die Meldungen CPZ8C09 und CPC8C04 aus, und zeigt damit an, daß die Bestellung erfolgreich war. Der IBM-Service lehnt die Bestellung jedoch ab und fordert Sie auf, Ihre Bestellung zu wiederholen.
Ändern Sie den Standardmedientyp, indem Sie die WRKCNTINF-Option 2 (Mit lokalen Service-Informationen arbeiten) und anschließend noch einmal Option 2 (Service-Kontaktinformationen ändern) wählen. Die Eingabe von WRKCNTINF vor jeder PTF-Bestellung ist sehr umständlich, und der Befehl kann nicht automatisiert werden. Für größere Unternehmen, die verschiedene Systeme und Versionen von einer einzigen AS/400 aus unterstützen, bedeutet dies einen erheblichen Aufwand. Es bleibt zu hoffen, daß IBM den SNDPTFORD-Befehl verbessert und die Möglichkeit hinzufügt, Medientypen zu übergehen.
Vereinfachung von Sicherungsvorgängen
Das Menü SETUPBCKUP ermöglicht die bequeme Sicherung der Objekte auf Ihrer AS/400. Durch die Auswahl der entsprechenden Menüoption können Sie die Objekte täglich, wöchentlich oder monatlich sichern. Sie können ausgewählte Bibliotheken, Ordner, Benutzerverzeichnisse, Sicherheits-, Konfigurations- und OfficeVision-Daten sichern. Außerdem erhalten Sie die Möglichkeit, alles oder nur die geänderten Objekte zu sichern. Über die Optionen im SETUPBACKUP-Menü können Sie die Ausführung des Sicherungsvorgangs in einem unbewachten Modus planen. Diese Option ist besonders für kleine Unternehmen ohne Nachtbediener wichtig.
Für die „sofortige Sicherung“ auf der Grundlage der Konfiguration für die tägliche, wöchentliche oder monatliche Speicherung steht Ihnen die entsprechende Option in dem Menü RUNBCKUP zur Verfügung.
Programmleistung
Seit V3R6 wird als Teil von Performance Tools/400 der Performance Explorer (PEX) ausgeliefert, mit dem Sie die Performance der einzelnen Jobs in Ihrem System analysieren können. Einer der vielen Verwendungszwecke von PEX ist die Leistungsauswertung der Anweisungen in individuellen Programmen. Der folgende Abschnitt enthält erste Schritte für die Arbeit mit PEX.
Analysieren Sie die Performance einzelner Programme wie folgt:
- Kompilieren Sie Ihr Programm, und bewahren Sie eine Kopie der Kompilierungsliste auf.
- Fügen Sie dem Performance Explorer eine Definition des Programms, das analysiert werden soll, hinzu.
AddPexDfn Dfn( YourPgm ) Type( *Profile ) + Pgm( (YourPgm) - Starten Sie eine PEX-Sitzung:
StrPex SsnID( YourPgm ) Dfn( YourPgm )
- Führen Sie Ihr Programm aus.
- Beenden Sie die PEX-Sitzung, nachdem das Programm beendet ist. Verwenden Sie dazu den folgenden Befehl, um einen Satz mit Dateien in Ihrer Bibliothek zu erstellen, die die Ausgabe dieser Sitzung enthalten:
EndPex SsnId( YourPgm) DtaLib( YourLib )
- Löschen Sie die Definition des erstellten Programms:
RmvPexDfn Dfn( YourPgm )
- Drucken Sie die Auswertung der Programmleistung aus:
PrtPexRpt Mbr( YourPgm ) Lib( YourPgm ) + Type( *Profile ) + ProfileOpt(*SampleCount *Statement)
Der letzte Schritt erstellt einen Bericht mit mehreren Abschnitten. Der letzte Abschnitt enthält eine detaillierte Auswertung der Programmleistung. Abbildung 14 zeigt das Beispiel eines Schlußabschnitts in einem Bericht. Der Bericht enthält eine Zeile pro Anweisung, die nach CPU-Beanspruchung in absteigender Reihenfolge sortiert sind.
Sehen wir uns die besonders interessanten Spalten in dem Bericht einmal genauer an. Der Trefferzähler (Hit Cnt in Abbildung 14) zeigt, wie oft die Anweisung überwacht wurde: je öfter eine Anweisung ausgeführt wird, desto höher ist der Zähler. Der Trefferprozentsatz (Hit %) zeigt die prozentuale Zeit, die das Programm zur Ausführung der Anweisung benötigt hat. Der kumulative Prozentsatz (Cum %) zeigt den Gesamtprozentsatz der Programmzeit, die zur Ausführung der bisher in dem Bericht aufgelisteten Anweisungen verwendet wurde. Die Anweisungsnummer (Stmt Numb) identifiziert die in der Kompilierungsliste aufgeführte Anweisungsnummer. Da der Bericht die Anweisungen in absteigender Reihenfolge aufführt, müssen Sie sich nur die ersten Zeilen ansehen, um die Anweisungen mit hoher CPU-Beanspruchung zu ermitteln. Anschließend können Sie die Anweisungen wieder mit der Kompilierungsliste verknüpfen und überprüfen, ob der Quellcode verändert werden kann, um die Laufzeit des Programms zu verkürzen.
Offensichtliche Probleme in Ihren Programmen werden in der PEX-Ausgabe unter Umständen hervorgehoben, z.B. Anweisungen, die öfter als notwendig ausgeführt werden. In anderen Fällen müssen Sie etwas mit der Ausgabe experimentieren. Grundsätzlich sollten Sie die folgenden Regeln beachten: Reduzieren Sie I/O-Operationen, komplexe Eval-Operationen, die Verwendung von Arrays und Zeichenkettenmanipulationen. Außerdem sollten Sie mit Integer-Datentypen arbeiten und unnötig lange Zeichenvariablen vermeiden.
Die Feinabstimmung der Programme kann sehr aufwendig sein. Sie sollten den Performance Explorer dazu nutzen, sich die Arbeit zu erleichtern. Lesen Sie auch Kapitel 12 im Handbuch zu V3R7 Performance Tools/400 (SC41-4340).
Einfachere Gesamtsystemspeicherung
Verwenden Sie Option 11 im RUNBCKUP-Menü (Gesamtes System sichern), wenn Sie Ihr Gesamtsystem vor und nach einer kumulativen PTF-Anwendung oder einem OS/400-Upgrade sichern möchten. Achten Sie darauf, daß die Option von dem steuernden Teilsystem aus ausgeführt wird. Nachdem Sie diese Menüoption gewählt haben, wird zur Bestätigung die Meldung eingeblendet, daß das System in einen eingeschränkten Status geschaltet wird und die Ausführung der einzelnen Speicherbefehle beginnt. Mit dem Menü RESTORE bietet OS/400 eine bequeme Methode, die Daten von diesem Backup wiederherzustellen. Das Menü bietet eine Liste aller geeigneten Wiederherstellungsoptionen.
Vergleich der PTF-Stufen vor dem Upgrade
Mit V3R7MO hat IBM die Aktualisierung von OS/400-Releases vereinfacht. Die PTF-Stufen werden zwischen den einzelnen Releases möglichst aktuell gehalten. Der neue Befehl CMPPTFLVL (PTF-Stufe vergleichen) vergleicht das mit dem neuen Release ausgelieferte kumulative Paket mit Ihrer aktuellen PTF-Stufe und meldet in einer Bildschirmanzeige, auf einem Ausdruck oder in einer Datei alle zur Zeit aktiven PTFs, die das kumulative Paket des neuen Release nicht enthält.
Laden Sie bei Ihren Upgrade-Vorbereitungen einfach die CD-ROM oder das Band auf das entsprechende Gerät, und geben Sie folgenden Befehl ein:
CMPPTFLVL DEVICE(OPTØ1) +
OUTPUT(*PRINT)
Anschließend können Sie die fehlenden PTFs bestellen und als Teil des Upgrade anwenden.
Ein neunter (und letzter) Teil folgt.
Mit freundlichen Grüßen
- Ihr Burgy Zapp
![Künstler Burgy Zapp [http://burgyzapp.de]](http://newsolutions.de/it/wp-content/uploads//cc8_nl_Clipboard06x-300x300.jpg)


