S-Variablenersetzung bei der Eingabe geschieht immer automatisch durch die Dienste der Dialogschnittstelle SDF (siehe [3]), die von LMS für alle Eingaben genutzt wird.
LMS unterstützt die Ausgabe ausgewählter Daten in S-Variable. Es werden stets Listen von Strukturen erzeugt (siehe [12]). Die Ausgabe in S-Variable ist bei den unterstützten Anweisungen lokal durch den Operanden STRUCTURE-OUTPUT= zusätzlich zum (unabhängig vom) Ausgabestrom schaltbar.
Mit folgenden Anweisungen können Informationen in S-Variable ausgegeben werden:
COMPARE-ELEMENT
FIND-ELEMENT
SHOW-ELEMENT-ATTRIBUTES
SHOW-LIBRARY-ATTRIBUTES
SHOW-STATISTICS
SHOW-TYPE-ATTRIBUTES
Die Variable muss wie folgt deklariert werden:
/DECL-VAR
varname(TYPE=*STRUC),MULT-ELEM=*LIST
"varname" ist ein frei wählbarer Name. Die Variablenausgabe kann auch über den Strom SYSINF erfolgen. Dazu muss vor der Anweisung, die die Variable erzeugen soll, das Kommando /ASSIGN-STREAM STREAM=SYSINF,TO=*VAR(varname) ausgeführt werden.
Mit dem Kommando /ASSIGN-STREAM STREAM=SYSINF,TO=*DUMMY wird die Erzeugung von Variablen wieder gestoppt. LMS prüft intern die SYSINF-Zuordnung, falls STRUCTURE-OUTPUT=*SYSINF, und erzeugt aus Performancegründen nur dann Ausgaben in den SYSINF-Strom, wenn die SYSINF-Zuordnung (direkt oder über SYSVAR) ungleich *DUMMY ist.
Unterstützung von MIP-Variablen
Ausgewählte LMS-Meldungen können in MIP-Variable (MIP = Message Improvement Program) abgelegt werden. MIP-Variable sind S-Variable, in die das Produkt MIP Meldungen ablegt. Die MIP-Variablen können in S-Prozeduren zur Steuerung des weiteren Ablaufs ausgewertet werden. Für MIP-Variable sind folgende Meldungen vorgesehen:
LMS0302 ELEMENT (&00) NICHT GEFUNDEN (&00): Elementbezeichnung der Form *LIB-ELEM(library,element(version),type) LMS0303 ELEMENT (&00) NICHT IM BEREICH DER REFERENZ-BEDINGUNG (&00): Elementbezeichnung (Format siehe LMS0302)
LMS0310 LMS VERSION '(&00)' GESTARTET (&00): LMS Version der Form zz.zbzz z=Ziffer, b=Buchstabe LMS0311 LMS VERSION '(&00)' NORMAL BEENDET (&00): LMS Version (Format siehe LMS0310) LMS0312 LMS VERSION '(&00)' ABNORMAL BEENDET (&00): LMS Version (Format siehe LMS0310)
Diese Meldungen sind in der Meldungsdatei mit dem Attribut WARRANTY=*YES gekennzeichnet. Die Garantie bezieht sich nur auf den Meldungsschlüssel und die Inserts, jedoch nicht auf den Meldungstext.
Der Anwender muss folgende Aktivitäten ausführen, um die MIP-Variable in LMS nutzen zu können :
Die MIP-Variable muss wie folgt deklariert werden:
/DECL-VAR varname(TYPE=*STRUC),MULT-ELEM=*LIST
"varname" ist ein frei wählbarer Name. Mit der obigen Deklaration wird eine Liste von Strukturen vereinbart. Jedes Listenelement stellt den Behälter für genau eine Meldung dar und hat die Form (z.B. i-tes Listenelement):
varname#i.MSG-TEXTvollständiger
varname#i.MSG-IDMeldungschlüssel
varname#i.I0Insert
:
varname#i.InDie Anzahl der Inserts hängt von der Meldung ab.
Mit dem Kommando
/ASSIGN-STREAM STREAM=SYSMSG,TO=*VAR(VAR-NAME=varname)
wird das Speichern der Meldungen in die MIP-Variable gestartet und mit dem Kommando
/ASSIGN-STREAM STREAM=SYSMSG,TO=*DUMMY
wieder gestoppt. Alle dazwischen ausgeführten Kommandos und Anweisungen (nicht nur die von LMS) speichern ihre garantierten Meldungen in die MIP-Variable.
Beispiele
Es soll festgestellt werden, ob die Bibliothek LIB leer ist. In dem Fall gibt LMS die Meldung LMS0302 aus. Die Variable soll LMSMIP heißen.
/DECL-VAR LMSMIP(TYPE=*STRUC),MULT-ELEM=*LIST /START-LMS //HOLD-PROGRAM /ASSIGN-STREAM SYSMSG,TO=*VAR(LMSMIP) /RESUME-PROGRAM //SHOW-ELEM-ATTR *LIB(LIB),TEXT-OUTPUT=*NONE //HOLD-PROGRAM /ASSIGN-STREAM SYSMSG,TO=*DUMMY /IF (IS-DECLARED('LMSMIP#1.MSG-ID')) / IF (LMSMIP#1.MSG-ID='LMS0302') / WRITE-TEXT 'Bibliothek leer' / END-IF /END-IF /RESUME-PROGRAM : :
Nicht garantierte LMS-Meldungen können mit Hilfe der SDF-P Built-in Funktion STMT-SPINOFF [12] abgefangen werden.
/ASSIGN-SYSDTA TO=*SYSCMD /BEGIN-BLOCK DATA-INSERTION=YES /START-LMS //OPEN-LIB XXX /A=STMT-SPINOFF() //STEP /IF (A EQ 'YES') // WRITE-COM 'OPEN FEHLER' /ELSE // SHOW-ELEM-ATTR /END-IF //END /END-BLOCK