Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

MSG7X - Meldung ausgeben

&pagelevel(3)&pagelevel

Allgemeines

Anwendungsgebiet:

Meldungswesen; siehe "Meldungswesen"

Makrotyp:

S-Typ, MF-Format 3: C-/D-/L-/M-/E-Form;

siehe "S-Typ-Makroaufrufe"


Die Angabe von Registerinhalten ist nur beim M-Form-Makroaufruf möglich.

Makrobeschreibung

Der MSG7X-Makro gibt eine Systemmeldung auf SYSOUT, SYSLST, den Bedienplatz, in einen Bereich des Benutzerprogramms oder in eine S-Variable aus. Der angegebene Meldungsschlüssel muss 7-stellig sein.
MSG7X verwendet das neue Layout der Operandenliste (mit Standardheader; siehe "Standardheader").

Jede Systemmeldung trägt einen 7-stelligen Meldungsschlüssel. Die ersten 3 Zeichen des Schlüssels bezeichnen die Meldungsklasse; die restlichen 4 Zeichen dienen der laufenden Nummerierung innerhalb einer Klasse. Systemmeldungen können variable Teile „(&nn)“ enthalten, die durch „Inserts“ ersetzt werden können.

Makroaufrufformat und Operandenbeschreibung

MSG7X

ID=msgid / (r1) / (class,(r)) / (,(r)) / (class,(adr)) / (,adr)

[,INSERT={(insertlänge,{adr / (r) / ’insert’}) / ((insertlänge,{adr / (r) / ’insert’}),...) / ((r1),(r2)) / (((r1),(r2)),...) /

anzahl / NONE }

[,LAN='sprache']

,DEST=SYSOUT / SYSLST / CONSOLE / (ausgabeort,...) / NONE

[,UCDEST='destcod' / destadr / (r) / N]

[,REPLY={(replylänge,{adr / (r)}) / ((r1),(r2)) / N}]

[,BUFFER= {(pufferlänge,{adr / (r)}) / ((r1),(r2)) / N}] ,MAP=NO / YES

,DMS=APPL / NOTAPPL / NA

,BUFFUSE=INTERNAL / EXTERNAL

,DEFTEXT=NONE / (textlänge,adr) / (textlänge,(r)) / ((r1),(r2))

,TIMER=UNLIMITED / (r) / wert

,TIMESTAMP=NO / YES

,DATESTAMP=NO / YES

,MF=D / C / L / E / M

[,PARAM=adr / (r)]

,PREFIX=X / p

,MACID=MSG / macid

ID=
dient der Angabe des Meldungsschlüssels der auszugebenden Systemmeldung.

msgid
7-stelliger Meldungsschlüssel

(class,adr)
Ändert den Meldungsschlüssel im Datenbereich.

(class,(r))
Die Angabe dieses Operandenwertes ist nur mit MF=M erlaubt.


class

Meldungsklasse

adr

symbolische Adresse (Name) eines Feldes, das die neue Meldungsnummer
enthält

(r)

Register, das die neue Meldungsnummer enthält


(,adr)
Ändert die Meldungsnummer im Datenbereich.

(,(r))
Die Angabe dieses Operandenwertes ist nur mit MF=M erlaubt.


adr

symbolische Adresse (Name) eines Feldes, das die neue Meldungsnummer
enthält

(r)

Register, das die neue Meldungsnummer enthält


INSERT=
gibt max. 30 Längen und Adressen von Einfügungen an. Für jede Eintragung wird im Datenbereich der Meldungsverarbeitung ein entsprechender Adressverweis aufgebaut.

Werden mehr Einfügungen angegeben, als in der Meldung vorgesehen sind, so werden die weiteren Einfügungen ignoriert. Eine Einfügung, die nur aus Leerzeichen besteht, wird auf 1 Leerzeichen gekürzt.
Leerzeichen am Ende einer Einfügung werden unterdrückt. Um das Abschneiden der Leerzeichen zu verhindern, muss am Ende der Einfügung das Zeichen X'01' angegeben werden. Findet die Meldungsverarbeitung das Zeichen X'01', werden die bis dahin eingetragenen Leerzeichen nicht unterdrückt.
Wenn insertlänge=0 und adr=0 angegeben werden, übernimmt das System für die Einfügung den Standardwert aus der Meldungsdatei. Ist dort kein Standardwert angegeben, wird die Einfügung ausgelassen.
Enthält ein Meldungstext mehr Einfügungen als im Makroaufruf angegeben, wird für jede übrige Einfügung der Standardwert übernommen. Ist kein Standardwert vorhanden, so wird die Ersatzeinfügung (&nn) eingesetzt.
Bei Angabe von MF=M wird für alle bei INSERT angegebenen Einfügungen ein Adressverweis aufgebaut. Z.B. ändert der Aufruf MF=M,INSERT=(((R1),(R2)),((R3),(R4))) die Einfügungen 0 und 1 im Datenbereich, aber nicht 2 und 3.
Alle vorher definierten Einfügungen im Datenbereich werden ignoriert. Die Anzahl der bei MF=M definierten Einfügungen muss kleiner oder gleich einer max. Anzahl sein, die durch MF=C/D vorgegeben wird.

(insertlänge,...)


insertlänge

Länge des Einfügung

adr1

symbolische Adresse (Name) des Bereichs mit der Einfügung

(r)

Register mit der Adresse der Einfügung
(Angabe nur möglich bei MF=M)

'insert'

direkte Angabe der Einfügung
(Länge der Zeichenkette: max. 4 Zeichen)


Bei insertlänge = 0 muss die Einfügung mit einem Satzlängenfeld (4 Byte) beginnen und ist somit immer mindestens 4 Byte lang:
Byte 0-1 Länge der Einfügung
Byte 2-3 reserviert.

Einfügungen können übersprungen werden, indem man die ausgelassenen Stellen mit einem Komma belegt, z.B. INSERT=(,(insertlänge2,adr2),,(insertlänge4,adr4)). Eine solche ausgelassene Einfügung wird durch ihren Standardwert oder durch eine leere Zeichenkette ersetzt.
Die Summe aller Einfügungen muss <= 4079 Byte sein. Eine Liste von Einfügungen muss in ein zusätzliches Klammerpaar eingeschlossen werden.
Bei Ausgabe auf Konsole muss die Summe aller Einfügungen <= 218 Byte sein.

((r1),(r2))
r1 Register mit der Länge der Einfügung
r2 Register mit der Adresse der Einfügung.
Diese Angabe ist nur mit MF=M möglich.
Eine Liste von Einfügungen muss in ein zusätzliches Klammerpaar eingeschlossen werden.

anzahl
Anzahl der INSERT-Verweise, für die Platz im Datenbereich der Meldungsverarbeitung reserviert werden soll.
Mit MF=C/D ist anzahl standardmäßig 15.
Bei MF=M kann die Anzahl der Einfügungen im Datenbereich geändert werden.

NONE
Alle zuvor definierten Einfügungen werden ignoriert.
Die Angabe dieses Operandenwertes ist nur mit MF=M erlaubt.

LAN='sprache'
bezeichnet die Sprache, in der die Meldungstexte ausgegeben werden sollen. Der Operand wird nicht ausgewertet, wenn DEST=CONSOLE angegeben ist.

'sprache'
sprache = 1 Buchstabe zur Kennzeichnung der Sprache; D = Deutsch, E = Englisch.

Weitere Möglichkeiten sind bei der Systemverwaltung zu erfragen. Der Standardwert wird durch den Systemparameter MSGLPRI festgelegt und wird auch dann eingesetzt, wenn eine ungültige Angabe erfolgte.

REPLY=
beschreibt einen Antwortbereich. Der Bereich muss auf Halbwortgrenze ausgerichtet sein und mit einem Satzlängenfeld (4 Byte; Byte 1-2: Länge, Byte 3-4: reserviert) beginnen.
Vor der Makroausführung muss in Byte 1-2 die Länge des Antwortbereichs (<= 4095 Byte) stehen. Bei Ausführung des Makros wird dann die aktuelle Länge der Antwort in Byte 1-2 eingetragen.

Bei Eingabe über den Operanden REPLY werden Kleinbuchstaben in Großbuchstaben umgesetzt. REPLY nur in Verbindung mit DEST=SYSOUT/CONSOLE angeben.

Wird als Antwort ein „?“ eingegeben, das in MIP als Schlüsselwort reserviert ist, zeigt MIP Bedeutung und Maßnahme der betreffenden Meldung an, bevor die Meldung erneut zur Beantwortung ausgegeben wird.

(replylänge,...)


replylänge

Länge des Antwortbereichs > 4 Byte

adr

symbolische Adresse (Name) des Bereichs

(r)

Register mit der Adresse des Bereichs.
(Angabe nur möglich bei MF=M)


((r1),(r2))
r1 Register mit der Länge des Antwortbereichs
r2 Register mit der Adresse des Bereichs. Diese Angabe ist nur mit MF=M möglich.

N
Ein Bereich für die Antwort wird in der CSECT/DSECT nicht generiert.
Die Angabe wird zum Aufbau der CSECT/DSECT benötigt und kann nur in Verbindung mit MF=C/D angegeben werden.

DEST=
der Operand beschreibt Ausgabeorte für die konvertierte Systemmeldung. Zusammen mit REPLY darf nur DEST=SYSOUT/CONSOLE angegeben werden.

SYSOUT
Die Ausgabe erfolgt nach SYSOUT. Diese Angabe ist Voreinstellung, wenn nicht mit BUFFER ein weiterer Ausgabeort angegeben wird. Wird mit BUFFER ein Ausgabebereich bestimmt und wird eine Ausgabe nach SYSOUT gewünscht, muss DEST=SYSOUT explizit angegeben werden.
Wurde eine S-Variable deklariert und der Variablenstrom in sie umgelenkt und handelt es sich um eine garantierte Meldung, erfolgt die Ausgabe auch in die S-Variable.

SYSLST

Ausgabe nach SYSLST

CONSOLE
Ausgabe an den Bedienplatz

(ausgabeort,...)
Kombination der genannten Ausgabeorte; Angabe in runden Klammern, getrennt durch Kommas.

NONE
Löscht die Ausgabeorte SYSOUT, SYSLST und CONSOLE aus dem Datenbereich. Die Angabe dieses Operandenwertes ist nur mit MF=M erlaubt. Zu beachten ist, dass immer mindestens ein Ausgabeort im Datenbereich definiert sein muss, z.B. ein speziell dafür vorgesehener Bereich (siehe Operand BUFFER).

BUFFER=

beschreibt einen Bereich, in den die konvertierte Systemmeldung übertragen werden soll. Wird zusätzlich eine Ausgabe nach SYSOUT gewünscht, muss DEST=SYSOUT explizit angegeben werden.
BUFFER muss auf Halbwortgrenze ausgerichtet sein. In die ersten 2 Byte wird ein Satzlängenfeld (WROUT-Format) eingetragen:

Byte 0-1

Länge des Bereichs

Byte 2-3

reserviert

Byte 4

Output-Steuerzeichen

Byte 5-n

Meldungstext

(pufferlänge,...)


pufferlänge

Länge der Bereichs > 16 Byte

adr

symbolische Adresse (Name) des Bereichs

(r)

Register mit der Adresse des Bereichs (Angabe nur möglich bei
MF=M)


Die Pufferlänge muss <= 4095 Byte sein.

((r1),(r2))
r1 Register mit der Länge des Meldungsbereichs

r2 Register mit der Adresse des Bereichs
   Diese Angabe ist nur mit MF=M möglich.

N
Es wird kein Bereich für die konvertierte Systemmeldung in der CSECT/DSECT generiert.
Die Angabe wird zum Aufbau der CSECT/DSECT benötigt und kann nur in Verbindung mit MF=C/D angegeben werden.

MAP=
beschreibt, ob BUFFER eine andere Struktur (Mapping-Format) erhält.

NO
BUFFER wird im WROUT-Format eingerichtet.

YES
BUFFER wird im Mapping-Format eingerichtet (Aufbau siehe unten).

UCDEST=
UCON-Ausgabeort (UCON=Universal Console); (siehe „Systembetreuung“ [10]). Das Ziel (Ausgabeort) einer Meldung kann wie folgt angegeben werden:

  • mnemotechnischer Gerätename für einen bestimmten Bedienplatz

  • Berechtigungsschlüssel (routing code) für Bedienplätze und berechtigte Benutzerprogramme, denen ein bestimmtes Aufgabengebiet zugeordnet ist.

  • Berechtigungsname für einen berechtigten Benutzerprogramm.

UCDEST wird nur ausgeführt, wenn DEST=CONSOLE spezifiziert wurde. UCDEST besitzt Vorrang vor dem Routing Code der Meldung in der Meldungsdatei.

'destcod'
folgende Angaben sind für 'destcode' möglich:

  • '(mn)'
    mn: 2 Zeichen langer mnemotechnischer Gerätename.

  • '< x'
    x: Berechtigungsschlüssel; das Zeichen < muss angegeben werden.

  • 'name'
    name: 4 Zeichen langer Name des Benutzerprogramms.

destadr
symbolische Adresse (Name) eines Bereiches (4 Byte) mit der Angabe für destcod. Angaben linksbündig; Ausrichtung auf Wortgrenze.

(r)
r: Register, das die Adresse des Bereichs (4 Byte) enthält. Angabe nur möglich bei MF=M.

N
Ein Feld für destcod wird in der CSECT/DSECT nicht generiert.
Die Angabe wird zum Aufbau der CSECT/DSECT benötigt und kann nur in Verbindung mit MF=C/D angegeben werden.

DMS=
spezifiziert den Meldungs-Suchmechanismus.

APPL
Die Meldung wird mit dem DMS gesucht (Meldungsdateien und DLAM-Bereich).

NOTAPPL / NA
die Meldung wird nur auf Systemebene im DLAM-Bereich (ohne DMS) gesucht. Rückmeldung, wenn die geforderte Meldung nicht gefunden wird:

msgid,(DVS NICHT VERFUEGBAR),<befehlszähler>,<modul>,<inserts>

BUFFUSE=
bestimmt, ob die Meldung über einen Variablenstrom (SYSMSG) in einer S-Variablen abgespeichert werden soll und ob sie mit dem Kommando HELP-MSG-INFORMATION MSG-ID=*LAST (also ohne explizite Angabe der Meldungsnummer) ausgegeben werden kann.

Die Angabe von BUFFUSE ist nur dann relevant, wenn die Ausgabe nicht nach SYSOUT geht (DEST != SYSOUT) und mit dem Operanden BUFFER ein Übertragungsbereich angegeben wurde.
Wird die Meldung (auch) nach SYSOUT ausgegeben, wird sie - wenn sie eine garantierte Meldung ist - immer in die S-Variable ausgegeben (sofern eine solche deklariert und der Variablenstrom in sie umgelenkt wurde).
Der Variablenstrom nimmt nur „garantierte Meldungen“ auf. Siehe dazu die Handbücher „SDF-P“ [21] und „Dienstprogramme (MSGMAKER)“ [27].

INTERNAL
Die Ausgabe wird nicht in einen Variablenstrom gelenkt. Die Meldung kann nicht über das Kommando HELP-MSG-INFORMATION MSG-ID=*LAST (also ohne explizite Angabe der Meldungsnummer) ausgegeben werden.

EXTERNAL
Wurde eine S-Variable deklariert und der Variablenstrom in sie umgelenkt (mit dem Kommando ASSIGN-STREAM oder EXECUTE-COMMAND bzw. mit dem Makro CMD oder OPSGEN), erfolgt die Meldungsausgabe in diese S-Variable.
Es werden der Meldungsschlüssel, der Meldungstext und die Standardwerte der Einfügungen ausgegeben.
Voraussetzung ist, dass die Meldung eine garantierte Meldung ist, da sie sonst nicht in den Variablenstrom aufgenommen wird.
Ist die Meldung die zuletzt von der Task ausgegebene Meldung, kann sie mit dem Kommando HELP-MSG-INFORMATION MSG-ID=*LAST ausgegeben werden.

DEFTEXT=
verweist auf einen Standard-Meldungstext.
Dieser Standardmeldungstext wird ausgegeben, wenn die angeforderte Meldung nicht definiert ist bzw. wenn sie oder die MIP-Task z.Zt. nicht zur Verfügung stehen. Es wird ein entsprechender Returncode zurückgegeben.
Der Standard-Meldungstext muss <= 4079 Byte sein.

NONE
Es wird kein Standard-Meldungstext vorgegeben.

(textlänge,...)


textlänge

Länge des Bereichs

adr1

symbolische Adresse (Name) des Bereichs

(r)

Register mit der Adresse des Bereichs.(Angabe nur möglich bei MF=M)


((r1),(r2))
r1 Register mit der Länge des Standard-Meldungstextes

r2 Register mit der Adresse des Bereichs
   Diese Angabe ist nur mit MF=M möglich.

TIMER=

gibt die max. Wartezeit an, in der nach dem Senden einer Meldung nach SYSOUT die Antwort (Operand REPLY) erfolgen soll.
Wird in der angegebenen Zeit keine Antwort empfangen, wird der entsprechende Returncode zurückgegeben.

UNLIMITED
Die Wartezeit ist unbegrenzt.

(r)
r = Register, in dem die Wartezeit steht. Angabe nur möglich bei MF=M.

wert
Wartezeit, die 10 bis 3600 Sekunden betragen kann

TIMESTAMP=
erlaubt die zusätzliche Ausgabe der lokalen Systemzeit.

NO
Die lokale Systemzeit wird nicht ausgegeben.

YES
Zusätzlich zur Meldungsausgabe wird die lokale Systemzeit im ISO4-Format ausgegeben. Die Ausgabe hat dann folgendes Format:
'%  hh:mm:ss msgid text'

Es bedeuten:


hh

Stunde

mm

Minute

ss

Sekunde

msgid

Meldungsschlüssel

text

Meldungstext


Hinweis

Zur Darstellung von Zeitstempeln siehe auch Makro CTIME ("CTIME - Mit Zeitstempeln rechnen").

Kann MIP wegen eines internen Fehlers keine Zeit lesen, wird '%  HH:MM:SS msgid text' ausgegeben.

DATESTAMP=
erlaubt die zusätzliche Ausgabe des Datums.

NO
Es wird kein Datum ausgegeben.

YES
Zusätzlich zur Meldungsausgabe wird das Datum im ISO4-Format ausgegeben. Die Ausgabe hat dann folgendes Format:
'%  yyyy-mm-dd msgid text'

Es bedeuten:


yyyy

Jahr

mm

Monat des Jahrs

dd

Tag des Monats

msgid

Meldungsschlüssel

text

Meldungstext


Hinweis

Zur Darstellung von Zeitstempeln siehe auch Makro CTIME ("CTIME - Mit Zeitstempeln rechnen").

Kann MIP wegen eines internen Fehlers kein Datum lesen, wird '%  YYYY-MM-DD msgid text' ausgegeben.

Werden Datum- und Zeitausgabe angefordert, steht das Datum vor der lokalen Systemzeit.

MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. PREFIX, MACID und PARAM) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
Bei der C-Form, D-Form oder M-Form des Makroaufrufs kann ein Präfix PREFIX und bei der C-Form oder M-Form zusätzlich eine Macid MACID angegeben werden (siehe Abschnitt „S-Typ-Makroaufrufe“).

Hinweise

  • Die Gesamtlänge einer Meldung muss einschließlich des Meldungsschlüssels <= 4079 Byte sein. Überzählige Zeichen werden automatisch abgeschnitten.

  • Bei Ausgabe auf Konsole beträgt die maximale Länge einer Meldung einschließlich des Meldungsschlüssels nur 230 Byte.

  • Leerzeichen am Ende einer Meldung werden automatisch unterdrückt.

  • Die Meldungsausgabe nach SYSOUT, SYSLST oder in einen Bereich BUFFER beginnt immer mit dem Zeichen % (z.B. '%  NMH1121 <text>'). Wird die Meldung dagegen auf die Konsole ausgegeben, beginnt sie mit einem dem % vorangestellten Leerzeichen (z.B. ' %  NMH1121 <text>').

Mapping-Format

Das Mapping-Format beschreibt die Struktur des Bereichs BUFFER bei MAP=YES. Dabei werden der unter BUFFER beschriebenen Struktur verschiedene Einträge (Mapping-List) vorangestellt.

Struktur des Mapping-Formats:

Byte 0 - 1

Länge der Mapping-List

Byte 2 - 3

C'MP'

Byte 4 - n

Einträge

Byte n+1 bis p

weiterer Aufbau wie unter BUFFER beschrieben (WROUT-Format).

Die Einträge enthalten Informationen über:

  • die Einfügungen (Inserts)

  • den Meldungsschlüssel

  • den Berechtigungsschlüssel (Routingcode)

  • das Meldungsgewicht

  • ggf. Füllbytes zum Ausrichten des WROUT-Puffers.

Sie werden in folgenden Formaten abgelegt:

Hinweise zum Makroaufruf

  • Bei der Ausgabe im Mapping-Format steht ein Eintrag mit Länge=0 und Adresse=0 für einen Insert, der gar nicht existiert. Solche Einträge werden nur ausgegeben, wenn die Inserts einer Meldung nicht fortlaufend nummeriert sind.

  • Inserts, für die kein aktueller Wert vorliegt, werden dagegen durch einen Eintrag mit der Länge=0 und der Distanz zur definierten Insert-Position beschrieben. Ab dieser Distanz steht der Default-Text des Inserts bzw. die Standard-Einfügung (&xx), falls kein Default-Text definiert ist.

  • Soll aus der Mapping-Ausgabe wieder eine MSG7X-Parameterleiste für eine Eingabe aufgebaut werden, muss die Distanz nichtangegebener Inserts auf 0 zurückgesetzt werden, weil in Verbindung mit Länge=0 alle anderen Distanz-Werte als Definition eines Inserts angesehen werden, der mit einem 4-Byte-Satzlängenfeld beginnt.

Rückinformation und Fehleranzeigen

Standardheader:

+---------------+
|   |   |   |   |
|c|c|b|b|a|a|a|a|
+---------------+

Über die Ausführung des Makros MSG7X wird im Standardheader folgender Returncode übergeben (cc=Subcode2, bb=Subcode1, aaaa=Maincode);
SUBCODE2 wird nur bei einem Ein-/Ausgabefehler versorgt und enthält dann den Main-Returncode des WROUT- bzw. WRTRD-Makros):

X'cc'

X'bb'

X'aaaa'

Erläuterung


X'00'

X'0000'

MSG7X-Makro erfolgreich ausgeführt.

X'cc'

X'04'

X'0001'

Abnormale Beendigung der Ausgabe (SYSOUT, SYSLST oder CONSOLE).
In diesem Fall enthält SUBCODE2 (X' cc' ) den MAINCODE des
WROUT- bzw. WRTRD-Makros.


X'08'

X'0001'

Operandenfehler: Unzulässige Angabe für Meldungsnummer,
Bereichsadresse, mnemotechnischen Gerätenamen oder Namen des berechtigten
Benutzerprogramms oder ungültige Bereichslänge.


X'0C'

X'0001'

Unzulässige Anforderung einer Antwort, z.B. im Batch-Betrieb oder bei
Angabe unvereinbarer Ausgabeorte (SYSLST oder mehrere Ausgabeorte)
im Operanden DEST.


X'10'

X'0001'

Es steht kein Speicherplatz zur Verfügung.


X'14'

X'0001'

BREAK während der Ausführung des WROUT-Makros.


X'18'

X'0001'

Meldungstext wurde bei der Übertragung in den Ausgabebereich
abgeschnitten.


X'20'

X'0001'

Meldungsausgabe wurde abgebrochen.

X'00'

X'41'

X'FFFF'

MIP-Subsystem ist nicht geladen.

X'02'

X'00'


Meldung nicht definiert.

X'03'

X'00'


MIP-Task nicht verfügbar.

X'05'

X'00'


DMS-Subsystem ist nicht geladen.

X'06'

X'00'


Meldung nicht verfügbar. Fehler in der Datei.

Weitere Returncodes, deren Bedeutung durch Konvention makroübergreifend festgelegt ist, können der Tabelle „Standard-Returncodes“ (Standardheader) entnommen werden.

Das aufrufende Programm wird beendet, wenn folgende Fehler auftreten:

  • Der Datenbereich ist dem Aufrufer nicht zugewiesen.

  • Der Datenbereich ist nicht auf Wortgrenze ausgerichtet.

  • Der Datenbereich ist gegen Schreibzugriff geschützt.

Beispiel 1

Dieses Beispiel zeigt verschiedene Möglichkeiten, Meldungen zu suchen und auszugeben.

MSG7X1   START
MSG7X1   AMODE ANY
MSG7X1   RMODE ANY
         PRINT NOGEN
         BALR  3,0
         USING *,3
*
         SYSFL 'SYSLST=LST.MSG7X'
MFE1     MSG7X MF=E,PARAM=MFL1 -----------------------------------------(1)
MFE2     MSG7X MF=E,PARAM=MFL2 -----------------------------------------(2)
         WROUT TEXT,ERROR,PARMOD=31
MFE3     MSG7X MF=E,PARAM=MFL3 -----------------------------------------(3)
         WROUT TEXT,ERROR,PARMOD=31-------------------------------------(4)
         SYSFL 'SYSLST=(PRIMARY)'
*
ERROR    TERM
*
MFL1     MSG7X MF=L,ID=DMS0E27,DMS=NOTAPPL,LAN='D'
MFL2     MSG7X MF=L,ID=DMS0E27,DEST=(SYSLST,SYSOUT),LAN='D'
MFL3     MSG7X MF=L,ID=SCP0976,DEST=SYSLST,BUFFER=(75,TEXT)
*
TEXT     DC    Y(TEXTEND-TEXT)
         DS    3X
         DS    0CL75
         DC    C'message output via WROUT: '
TEXTEND  EQU   *
         END

Ablaufprotokoll

/start-assembh
%  BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED
%  ASS6010 <ver> OF BS2000 ASSEMBH  READY 
//compile source=*library-element(macexmp.lib,msg7x1), -
//        compiler-action=module-generation(module-format=llm), -
//        module-library=macexmp.lib, -
//        listing=parameters(output=*library-element(macexmp.lib,msg7x1))
%  ASS6011 ASSEMBLY TIME: 508 MSEC
%  ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
%  ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS
%  ASS6006 LISTING GENERATOR TIME: 82 MSEC
//end
%  ASS6012 END OF ASSEMBH
/start-executable-program library=macexmp.lib,element-or-symbol=msg7x1
%  BLS0523 ELEMENT 'MSG7X1', VERSION '@' FROM LIBRARY
   ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS
%  BLS0524 LLM 'MSG7X1', VERSION ' ' OF '<date> <time>' LOADED
%  DMS0E27   ( DVS NICHT VERFUEGBAR )  --PC=00000034 IN
P1-MODULE=********-------------------------------------------------------(5)
%  DMS0E27 FEHLER BEIM SCHLIESSEN EINER DATEI. EIN- AUSGABE MIT  
   HARDWARE-FEHLER BEENDET ----------------------------------------------(6)
message output via WROUT:
%  SCP0976 LOGICAL VALIDATION PROBLEM DURING COMMAND PROCESSING ---------(7)
Ausgabe auf SYSLST:
%  DMS0E27 FEHLER BEIM SCHLIESSEN EINER DATEI. EIN- AUSGABE MIT HARDWARE-
FEHLER BEENDET
%  SCP0976 LOGICAL VALIDATION PROBLEM DURING COMMAND PROCESSING

(1)

Die Meldung DMS0E27 soll nach SYSOUT ausgegeben werden. Dabei soll die Meldung nur im DLAM- Bereich (ohne DMS) gesucht werden. Im DLAM-Bereich wird sie nicht gefunden, deshalb findet die Ausgabe der Meldung nicht statt; es wird eine entsprechende Rückmeldung ausgegeben.

(2)

Die Meldung DMS0E27 soll nach SYSOUT und nach SYSLST ausgegeben werden. Die unter (1) angegebene Einschränkung entfällt.

(3)

Die Meldung SCP0976 soll nach SYSLST ausgegeben und in den spezifizierten Bereich TEXT geschrieben werden.

(4)

Der Makro WROUT schreibt den Inhalt des Bereichs TEXT nach SYSOUT.

(5)

Ausgabe der Meldung von ().

(6)

Ausgabe der Meldung von ().

(7)

Ausgabe von WROUT.

Beispiel 2

Das folgende Beispiel zeigt die Umlenkung der Meldungsausgabe in eine S-Variable. Die S-Variable muss vor Aufruf des Programms deklariert sein und der Variablenstrom SYSMSG muss ihr zugewiesen werden. Es werden nur garantierte Meldungen in den Variablenstrom SYSMSG aufgenommen.

MSG7X2   START
MSG7X2   AMODE ANY
MSG7X2   RMODE ANY
         PRINT NOGEN
         BALR  3,0
         USING *,3
*
MFE1     MSG7X MF=E,PARAM=MFL1
MFE2     MSG7X MF=E,PARAM=MFL2
MFE3     MSG7X MF=E,PARAM=MFL3
MFE4     MSG7X MF=E,PARAM=MFL4
*
ERROR    TERM
*
****  Definitions  ****
*
MFL1     MSG7X MF=L,ID=CMD0500,BUFFE-----------------------------------(1)
MFL2     MSG7X MF=L,ID=DMS0DF8,BUFFER=(250,BUF),MAP=YES,DEST=SYSOUT ---(2)
MFL3     MSG7X MF=L,ID=SCP0976,BUFFER=(250,BUF),DEST=SYSLST -----------(3)
MFL4     MSG7X MF=L,ID=DMS0574,BUFFER=(250,BUF),DEST=SYSLST,           *
               BUFFUSE=EXTERNAL ---------------------------------------(4)
*
BUF      DS    0CL250
         DC    Y(ENDBUF-BUF)
         DS    3X
         DS    CL245
ENDBUF   EQU   *
         END

Ablaufprotokoll:

/start-assembh
%  BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED
%  ASS6010 <ver> OF BS2000 ASSEMBH  READY 
//compile source=*library-element(macexmp.lib,msg7x2), -
//        compiler-action=module-generation(module-format=llm), -
//        module-library=macexmp.lib, -
//        listing=parameters(output=*library-element(macexmp.lib,msg7x2)), -
//        test-support=*aid
%  ASS6011 ASSEMBLY TIME: 405 MSEC
%  ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
%  ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS
%  ASS6006 LISTING GENERATOR TIME: 80 MSEC
//end
%  ASS6012 END OF ASSEMBH
/declare-var msg(type=structure),mult-elem=*list -------------------------(5)
/assign-stream sysmsg,to=*var(msg)
/start-executable-program library=macexmp.lib,element-or-symbol=msg7x2
%  BLS0523 ELEMENT 'MSG7X2', VERSION '@' FROM LIBRARY
   ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS
%  BLS0524 LLM 'MSG7X2', VERSION ' ' OF '<date> <time>' LOADED
%  CMD0500 INVALID DESCRIPTION OF COMMAND OR STATEMENT IN CURRENT SYNTAX FILE
%  DMS0DF8 EXPECTED VSN '(&01)' FOR FILE '(&02)', VSEQ '(&03)' NOT MOUNTED ON
 DEVICE '(&00)'. VSN '(&04)' FOUND INSTEAD. REPLY (0=EXIT; 1=RETRY; 2=DISPLAY
 LABEL;  =ACCEPT)
/assign-stream sysmsg,to=*dummy ------------------------------------------(6)
/show-var msg
MSG(*LIST).MSG-TEXT = %  BLS0523 ELEMENT 'MSG7X2', VERSION '@' FROM LIBRARY
   ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS
MSG(*LIST).MSG-ID = BLS0523
MSG(*LIST).I0 = MSG7X2
MSG(*LIST).I1 = @
MSG(*LIST).I2 = :2OSG:$QM212.MACEXMP.LIB
MSG(*LIST).MSG-TEXT = %  BLS0524 LLM 'MSG7X2', VERSION ' ' OF
   '<date> <time>' LOADED
MSG(*LIST).MSG-ID = BLS0524
MSG(*LIST).I0 = MSG7X2
MSG(*LIST).I1 =
MSG(*LIST).I2 = <date> <time>
MSG(*LIST).MSG-TEXT = %  BLS0551 COPYRIGHT (C) . . .
MSG(*LIST).MSG-ID = BLS0551
MSG(*LIST).I0 = FUJITSU TECHNOLOGY SOLUTIONS
MSG(*LIST).I1 = 2012
MSG(*LIST).MSG-TEXT = %  CMD0500 INVALID DESCRIPTION OF COMMAND OR STATEMENT
   IN CURRENT SYNTAX FILE
MSG(*LIST).MSG-ID = CMD0500
MSG(*LIST).MSG-TEXT = %  DMS0574 DMS ERROR CODE '(&00)' OCCURRED WHEN
   DELETING SYSTEM FILE. COMMAND NOT PROCESSED
MSG(*LIST).MSG-ID = DMS0574
MSG(*LIST).I0 = (&00)

(1)

Die Meldung mit dem Meldungsschlüssel CMD0500 wird nach SYSOUT und SYSLST und in den Bereich BUF ausgegeben. Von dort wird sie - über den Variablenstrom SYSMSG - in die S-Variable ABC geschrieben. Der Ausgabebereich BUF ist im Mapping-Format strukturiert.

(2)

Die Meldung mit dem Meldungsschlüssel DMS0DF8 wird nach SYSOUT und in den Bereich BUF im Mapping-Format ausgegeben. Da sie keine garantierte Meldung ist, wird sie jedoch nicht in den Variablenstrom SYSMSG aufgenommen, also auch nicht nach ABC geschrieben.

(3)

Die Meldung mit dem Meldungsschlüssel CMD0800 wird nach SYSLST und in den Bereich BUF ausgegeben. BUFFUSE ist standardmäßig auf INTERNAL gesetzt; es erfolgt keine Aufnahme in den Variablenstrom SYSMSG und in die S-Variable ABC.

(4)

Die Meldung mit dem Meldungsschlüssel DMS0574 wird nach SYSLST und in den Bereich BUF ausgegeben. Von dort wird sie - über den Variablenstrom SYSMSG - in die S-Variable ABC geschrieben.

(5)

Es wird eine zusammengesetzte S-Variable vom Typ „Liste“ mit dem Namen ABC deklariert. Jede garantierte Meldung wird in die strukturierte S-Variable ABC als Listenelement abgespeichert. Die S-Variable wird solange um Elemente erweitert, bis die Zuweisung nach SYSMSG beendet wird.

(6)

Die Zuweisung des Variablenstroms SYSMSG zur S-Variablen ABC wird aufgehoben. Der Inhalt der S-Variablen ABC wird angezeigt.

Neben den vom Programm in die S-Variable ABC geschriebenen Meldungen enthält die S-Variable auch alle garantierten Meldungen, die beim Laden des Moduls MSG7X2 ausgegeben wurden. Auch diese wurden nach dem Umlenken des Variablenstroms SYSMSG in die S-Variable ABC ausgegeben.