Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Ein- und Ausgabe in S-Variable (SDF-P)

&pagelevel(3)&pagelevel

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 :

  1. 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  Meldungstext
    varname#i.MSG-IDMeldungschlüssel
    varname#i.I0Insert  0
    :
    varname#i.In  Insert  n

    Die Anzahl der Inserts hängt von der Meldung ab.

  2. 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