Für eine Reihe von Meldungen werden Meldungsschlüssel und Inserts (Nummer und Semantik) als unveränderliche Bestandteile für künftige PERCON- und BS2000-Versionen garantiert. Solche Meldungen werden als garantierte Meldungen bezeichnet.
Garantierte Meldungen des Produkts PERCON
Garantierte Meldungen von PERCON sind
Meldungen zum Start und zur Beendigung von PERCON
Meldungen über die Anzahl bearbeiteter Sätze bzw. Blöcke
Meldungen mit Inserts wie DVS-Fehlercodes, Dateinamen, usw.
Meldungen zu Fehlern, deren Ursache nicht in der Syntax bzw. Semantik der Anweisungen liegt (z.B. zu kurze Sätze in einer Datei).
In PERCON werden folgende Meldungen garantiert:
PER0000 PERCON startet PER0001 PERCON abgebrochen PER0002 Fehler in einem Systemmakro PER0003 Speicherplatzmangel PER0004 Datei auf falschem Speichermedium PER0009 Ausgabe-Satzlänge zu groß PER0012 Widerspruch in Dateinamen PER0014 Sekundärschlüssel nicht übernommen PER0016 DVS-Fehler bei Dateiwiederherstellung PER0017 - 19 XHCS-Probleme PER0021 - 23 OPEN- / CLOSE-Probleme PER0028 LINK-Fehler bei Benutzermoduln PER0029 - 30 Anzahl bearbeiteter Sätze bzw. Blöcke PER0031 PERCON normal beendet PER0035 ISAM-Schlüssel nicht aufsteigend PER0036 DVS-Fehler PER0038 Abbruch wegen Parity- oder Längenfehler PER0039 CCSN-Unverträglichkeit bei SYSOUT PER0041 - 42 fehlerhafter Datensatz PER0044 Datensatz zu kurz PER0045 Datensätze nicht in Folge PER0048 Returncode einer Benutzer-Routine unzulässig PER0053 - 54 Fehler der Ausgabedatei bei FILLER=*OUTPUT PER0057 Gerätefehler beim Positionieren PER0069 Fehler beim Bandduplizieren PER0092 - 94 Dateiwiederherstellung mittels VERIF PER0095 Großmodul von PERCON nicht ladbar PER0098 ISAM-Schlüssel bereits vorhanden PER0099 - 103 Fehler bei Übernahme von Sekundärschlüsseln PER0104 - 107 PERCON-Version nicht verfügbar PER0109 CCSN für Ausgabedatei nicht vermerkbar PER0110 unzulässige BS2000-Version PER0111 BIND-Fehler beim Nachbinden des Großmoduls
Bei Einsatz des Software-Produkts SDF-P besteht die Möglichkeit, diese garantierten Meldungen in strukturierte S-Variablen auszugeben. Über S-Variablen kann direkt auf bestimmte Meldungsdaten zugegriffen werden, ohne dass das Ausgabelayout der Meldungen bekannt sein muss. Damit ist es möglich, in SDF-P-Prozeduren, abhängig vom Inhalt dieser S-Variablen, die Weiterverarbeitung zu steuern.
Garantierte Meldungen sind mit dem Meldungsattribut "Warranty : YES
" versehen.
Vorgehensweise
Eine S-Variable, die Meldungen aufnehmen kann, muss als Liste von Strukturen aufgebaut sein. Ihr Name ist frei wählbar und wird im Folgenden durch varname
dargestellt.
Die S-Variable muss vom Benutzer mit folgendem Kommando vereinbart werden:
/DECLARE-VARIABLE NAME=varname(TYPE=*STRUCTURE(DEFINITION=*DYNAMIC)),-
/ MULTIPLE-ELEMENTS=*LIST,SCOPE=*TASK
Hinweis
Die Angabe SCOPE=*TASK ist nur erforderlich, wenn die S-Variable auch in Prozeduren gültig sein soll, die nach der Vereinbarung der S-Variablen aufgerufen werden.
Für jede Struktur (jede Meldung) sind folgende Struktur-Elemente vorgesehen:
Name des Strukturelements | Inhalt |
---|---|
varname(*LIST).MSG-TEXT | vollständiger Meldungstext |
varname(*LIST).MSG-ID | Meldungsschlüssel |
varname(*LIST).I0 | Insert 0 |
varname(*LIST).I1 | Insert 1 |
. . . | . . . |
varname(*LIST).I14 | Insert 14 |
varname(*LIST).REPLY | eingegebene Antwort |
Die Anzahl der Inserts hängt von der Meldung ab, ebenso, ob eine Antwort vermerkt wird oder nicht.
Nach der Vereinbarung der S-Variablen wird ihr der Meldungsstrom mit folgendem Kommando zugewiesen:
/ASSIGN-STREAM STREAM-NAME=SYSMSG,TO=*VARIABLE(varname)
Danach kann PERCON oder ein Programm, das PERCON als Unterprogramm aufruft, gestartet werden. Während des PERCON-/Programm-Laufs wird die S-Variable gefüllt.
Nach Beendigung von PERCON oder des Programms, wird der Meldungsstrom in die S-Variable gestoppt und wieder dem Standard-Ausgabemedium für Meldungen zugewiesen:
/ASSIGN-STREAM STREAM-NAME=SYSMSG,TO=*STD
Die Variable varname
enthält alle garantierten Meldungen, die zwischen den beiden ASSIGN-STREAM-Kommandos ausgegeben wurden. Dazu gehören insbesondere auch die BLS-Meldungen.
Wenn PERCON als Unterprogramm aufgerufen wird, enthält die S-Variable zusätzlich alle garantierten Meldungen, die vom Hauptprogramm ausgegeben wurden.
Um die Ausgabe zusätzlicher Meldungen zu unterdrücken, können die beiden ASSIGN-STREAM-Kommandos auch über CMD-Makro unmittelbar vor und nach dem PERCON-Aufruf im Hauptprogramm ausgeführt werden.
Die Ausgabe in die S-Variablen erfolgt unabhängig davon, ob bei der Meldungsausgabe die Ausgabe über SYSOUT bzw. SYSLST unterdrückt wird oder nicht.
Eine detaillierte Beschreibung der S-Variablen ist im Handbuch [13] "SDF-P" zu finden.
Auswertung von S-Variablen
Der Inhalt einer S-Variablen kann mit dem Kommando SHOW-VARIABLE ausgegeben werden. Nach Abschluss eines PERCON-Laufs könnte eine S-Variable mit dem Namen PERVAR wie folgt belegt sein:
/show-variable variable-name=pervar PERVAR(*LIST).MSG-TEXT = % BLS0517 MODULE 'PCROOT' GELADEN PERVAR(*LIST).MSG-ID = BLS0517 PERVAR(*LIST).I0 = PCROOT PERVAR(*LIST).MSG-TEXT = % PER0000 PERCON GESTARTET, VERSION V03.0A00 PERVAR(*LIST).MSG-ID = PER0000 PERVAR(*LIST).I0 = V03.0A00 PERVAR(*LIST).MSG-TEXT = % PER0044 FELD IN 'SET-RECORD-MAPPING'-ANWEISUNG UEBERRAGT EIN-/AUSGABE-SATZENDE, LINK='PCOUT' PERVAR(*LIST).MSG-ID = PER0044 PERVAR(*LIST).I0 = SET-RECORD-MAPPING PERVAR(*LIST).I1 = PCOUT PERVAR(*LIST).MSG-TEXT = % PER0030 ANZAHL VERARBEITETER SAETZE FUER LINK='PCIN' : 3 PERVAR(*LIST).MSG-ID = PER0030 PERVAR(*LIST).I0 = PCIN PERVAR(*LIST).I1 = PERVAR(*LIST).I2 = 3 PERVAR(*LIST).MSG-TEXT = % PER0030 ANZAHL VERARBEITETER SAETZE FUER LINK='PCOUT' (FILE=:catid:$userid.XXX): 2 PERVAR(*LIST).MSG-ID = PER0030 PERVAR(*LIST).I0 = PCOUT PERVAR(*LIST).I1 = (FILE=:catid:$userid.XXX) PERVAR(*LIST).I2 = 2 PERVAR(*LIST).MSG-TEXT = % PER0001 PERCON-LAUF ABGEBROCHEN PERVAR(*LIST).MSG-ID = PER0001
Die einzelnen Struktur-Elemente der Variablen können gezielt angesprochen werden (z.B. wird mit /show-variable variable-name=pervar#3.MSG-ID
der Meldungsschlüssel der dritten Meldung ermittelt).
Folgendes Beispiel zeigt einen Ausschnitt aus einer SDF-P-Prozedur, in der eine FOR-Schleife verwendet wird, um garantierte Meldungen in S-Variablen abzulegen:
/DECLARE-VARIABLE NAME=PERVAR(TYPE=*STRUCTURE), - ————————————————————— (1) / MULTIPLE-ELEMENTS=*LIST /DECLARE-VARIABLE NAME=PERSTR(TYPE=*STRUCTURE) ———————————————————————— (2) /ASSIGN-STREAM STREAM-NAME=SYSMSG,TO=*VARIABLE(PERVAR) ———————————————— (3) /START-PERCON ————————————————————————————————————————————————————————— (4) . ... (PERCON-Anweisungen usw.) . /ASSIGN-STREAM STREAM-NAME=SYSMSG,TO=*STD ————————————————————————————— (5) /FOR PERSTR= *LIST(PERVAR) ———————————————————————————————————————————— (6) / IF (PERSTR.MSG-ID = 'PER0001') / WRITE-TEXT '*-----------------------------------------*' / WRITE-TEXT '* ABBRUCH PERCON / MASSNAHME ERFORDERLICH *' / WRITE-TEXT '*-----------------------------------------*' / END-IF /END-FOR
(1) | Die S-Variable PERVAR wird als Liste von Strukturen vereinbart. |
(2) | Die Strukturvariable PERSTR wird für die folgende FOR-Schleife vereinbart. |
(3) | Ab jetzt werden garantierte Meldungen in PERVAR abgelegt. |
(4) | PERCON wird gestartet. |
(5) | Das Ablegen der garantierten Meldungen in PERVAR wird gestoppt. |
(6) | Mit Hilfe einer FOR-Schleife wird die gesamte Liste von Strukturen PERVAR durchsucht, ob der Meldungsschlüssel PER0001 als MSG-ID auftritt. Wenn ja, wird mit WRITE-TEXT eine Information ausgegeben. |
Die Fehlermeldungen werden 7-stellig (PERnnnn) mit ihrer Bedeutung und eventuell erforderlichen Maßnahmen in deutscher bzw. englischer Sprache ausgegeben.
Den Umfang der Dialogmeldungen kann man durch Angaben in der MODIFY-PERCON-OPTIONS-Anweisung steuern.