Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Verzweigen in ein Benutzerprogramm beim Auflisten eines Elementes

&pagelevel(3)&pagelevel

Das Benutzerprogramm listet nur die ersten 10 Eingabesätze eines Elementes auf.Besteht ein Element aus weniger als 10 Sätzen, füllt das Programm mit eigenen Sätzen auf 10 Sätze auf.

/start-lms ---------------------------------------------------------------  (1) 

//modify-logging-parameters logging=*maximum ----------------------------   (2)

//open-library library=use.lib,mode=*update -----------------------------   (3)

//show-element (element=uselst,type=s) ----------------------------------   (4)

INPUT  LIBRARY= :1OSQ:$USER.USE.LIB
INPUT  ELEMENT= (S)USELST/@(0001)/2011-02-19
*       TITLE 'USEREXIT FUER DIE FUNKTION: LST'
*

*            1.) DURCH ANSCHLUSS DIESES UNTERPROGRAMMS WERDEN NUR NOCH
*                DIE ERSTEN 10 SAETZE JE ELEMENT AUFGELISTET.
*

*            2.) HAT DAS ELEMENT WENIGER ALS 10 SAETZE, SO WERDEN
*                WEITERE SAETZE EINGEFUEGT.
* INPUT FROM LMS: R1=A(PARAMETERLISTE)

*               R13=A(SAVEAREA), 18 WORTE
*               R14=RUECKSPRUNGADRESSE
*               R15=A(BENUTZERPROGRAMM)
*

PARDSEC  DSECT
AUFTRAG  DS    A             A(AUFTRAG VOM LMS)
*                          - 'BOE':START OF ELEMENT
*                          - 'REC':RECORD ANGEBOTEN
*                          - 'EOE':END OF ELEMENT
ANTWORT  DS    A             A(ANTWORT VOM BENUTZERPROGRAMM)
*                          - 'CON':CONTINUE
*                          - 'DEL':DELETE RECORD
*                          - 'INS':INSERT NEW RECORD
SATZ    DS    A             A(SATZ, INKL. 4 BYTE HEADER)
* -

(1)

LMS wird aufgerufen.

(2)

Alle Meldungen und Anweisungen werden protokolliert.

(3)

Die Bibliothek USE.LIB wird zugewiesen.

(4)

Das Benutzer-Quellprogramm USELST wird aufgelistet.

PARDSECL EQU   *-PARDSEC       L'DSECT
USELST   CSECT PAGE
        STM   0,15,0(13)      SAVE REGISTERS
        LR    10,15           BASE
        USING PARDSEC,1       LMS-PARAMETERLISTE
        USING USELST,10
        L     6,AUFTRAG       A(AUFTRAG)
        L     7,ANTWORT       A(ANTWORT)
        L     8,SATZ          A(SATZ)
        CLC   0(3,6),REC      SATZ ANGEBOTEN ?
        BE    DOSATZ          JA ---?
        CLC   0(3,6),BOE      START OF ELEMENT
        BE    DOBOE           JA ---?
        CLC   0(3,6),EOE      END OF ELEMENT
        BE    DOEOE           JA ---?
        B     RETURN
*
DOBOE    EQU   *
        ZAP   ANZAHL,P0       ZAEHLER := 0
        B     RETURN
*
DOSATZ   EQU   *
        CP    ANZAHL,P10      SCHON 10 SAETZE AUSGEGEBEN ?
        BNL   DODEL           JA (REST UEBERGEHEN) ---?
        AP    ANZAHL,P1       ZAEHLER := ZAEHLER +1
        B     DOCON
*
DOEOE    EQU   *
        CP    ANZAHL,P10      SCHON 10 SAETZE AUSGEGEBEN ?
        BNL   DOCON           JA (KEIN EINFUEGEN) ---?
        AP    ANZAHL,P1       ZAEHLER := ZAEHLER +1
        B     DOINS
*
DOINS    EQU   *
        MVC   0(3,7),INS      INSERT RECORD
        LA    9,INSSATZ
        ST    9,SATZ          A(RECORD TO BE INSERTED)
        B     RETURN
*
DODEL    EQU   *
        MVC   0(3,7),DEL      DELETE RECORD
        B     RETURN
*
DOCON    EQU   *
        MVC   0(3,7),CON      CONTINUE
* 

RETURN   EQU   *

         LM    0,15,0(13)      RESTORE REGISTERS

         BR    14
         TITLE 'KONSTANTEN UND VARIABLE'

BOE      DC    'BOE'           START OF ELEMENT

REC      DC    'REC'           SATZ ANGEBOTEN
EOE      DC    'EOE'           END OF ELEMENT

CON      DC    'CON'           CONTINUE

DEL      DC    'DEL'           DELETE RECORD
INS      DC    'INS'           INSERT NEW RECORD

ANZAHL   DC    PL2'0'

P0       DC    PL2'0'
P1       DC    PL2'1'

P10      DC    PL2'10'

INSSATZ  DC    Y(INSSATZE-INSSATZ)
         DC    XL2'4040'

         DC    '**************** INSERT BY USER-PROGRAM  *************'

INSSATZE EQU   *
         LTORG

         END

NUMBER OF PROCESSED RECORDS IS      89

//activate-user-exit function=*show-elem,entry=uselst,lib=use.lib -------   (5)  

//show-element (element=einaus,type=s) ----------------------------------   (6)

INPUT  LIBRARY= :1OSQ:$USER.USE.LIB
INPUT  ELEMENT= (S)EINAUS/@(0001)/2011-02-19
USER EXIT USELST IN USE.LIB IS ACTIVE

   #286  >          TITLE 'ERFASSEN VON DATEN'
   #287  >          PRINT NOGEN
   #288  >  ERFAS    START
   #289  >          BALR  5,0
   #290  >          USING *,5
   #291  >          OPEN  DATEI,OUTPUT
   #292  >  LESEN    RDATA SATZ,ENDPGM
   #293  >          CLC   TEXT(4),=C'/EOF'
   #294  >          BE    ENDPGM
   #295  >          MVC   ATEXT,TEXT
NUMBER OF PROCESSED RECORDS IS 10

(5)

LMS verzweigt vor dem Auflisten eines Eingabesatzes in das Benutzerprogramm USELST, das in der Bibliothek USE.LIB steht.

(6)

Die ersten 10 Sätze des Elementes EINAUS der zugewiesenen Bibliothek USE.LIB werden aufgelistet.

//show-user-exits ---------------------------------------------------------  (7) 

FUNCTION  ENTRY    LIBRARY                                          INT
SHOW     USELST   USE.LIB                                         V1

//show-element (element=persdat,type=s) -----------------------------------  (8)

INPUT  LIBRARY= :1OSQ:$USER.USE.LIB
INPUT  ELEMENT= (S)PERSDAT/@(0001)/2011-02-19
USER EXIT USELST IN USE.LIB IS ACTIVE

  #1113  >  BACH         SEBASTIAN     MUENCHEN      AUF DER HOEHE 7    AB 3
  #1114  >  BERGMANN     NORBERT       MUENCHEN      TORWEG 10          AB 5
  #1115  >  FINK         SUSANNE       NUERNBERG     RINGSTR. 23        AB 1
  #1116  >  MEYER        FRANZ         NUERNBERG     WASSERMUNGENWEG    AB 1
  #1117  >  GRUNDLER     WOLFGANG      BASEL         SONNENSTR. 11      AB 2
  #1118  >  KNOLL        MONIKA        FRANKFURT     BAUMALLEE 12       AB 3
  #1119  >  LIEDL        ERIKA         MUENCHEN      IN DER BREITE 1    AB 5
  #1120  >  WAGNER       JOHANN        AUGSBURG      AM SEE 45          AB 4
**************** INSERT BY USER-PROGRAM  *********
**************** INSERT BY USER-PROGRAM  *********
NUMBER OF PROCESSED RECORDS IS     10

//end ---------------------------------------------------------------------  (9)

(7)

Die aktiven Benutzerausgänge werden angezeigt.

(8)

Das Element PERSDAT wird aufgelistet. Da es kürzer ist als 10 Sätze, werden vom Benutzerprogramm Sätze angefügt.

(9)

LMS wird beendet.