Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Beispiel für eine komplette UTM-Anwendung auf BS2000-Systemen

Beispiel Adressenverwaltung

Mit diesem Anwendungsbeispiel für eine UTM-Anwendung auf einem BS2000-System können Adressdaten verwaltet werden, die in einer Datei stehen. Die Anwendung stellt dazu die nachfolgenden Funktionen zur Verfügung, die durch Eintrag des jeweiligen TACs in das dafür vorgesehene Feld aufgerufen werden. Die Ein- und Ausgaben erfolgen in einem Format.

Beispiele für eine UTM-Anwendung auf Unix-, Linux- oder Windows-Systemen entnehmen Sie bitte der Beispiel-Anwendung (Unix- und Linux-Systeme) und dem QuickStartKit (Windows-Systems), die zusammen mit openUTM ausgeliefert werden.

TAC

Funktion

Erklärung

1

Anzeige

gibt eine in der Datei vorhandene Adresse aus. Suchbegriff ist dabei der Name und die ersten zwei Buchstaben des Vornamens, welche in den zugehörigen Feldern anzugeben sind.

2

Neueintrag

trägt eine neue Adresse in die Datei ein. Eine Adresse mit dem gleichen Suchbegriff (s.o.) darf dort nicht schon vorhanden sein.

3

Ändern

ändert einen Adresseintrag. Die Adresse muss in der Datei schon

4

Löschen

Löscht eine in der Datei vorhandene Adresse.

Bei Fehlbedienung erscheint in der untersten Zeile des Formats eine Fehlermeldung.

Die oben genannten Ziffern sind die Transaktionscodes (TACs), die die Anwendung steuern. Dabei rufen der Transaktionscode 1 das Teilprogramm ANZEIGE und die Transaktionscodes 2, 3 und 4 das Teilprogramm AENDERN auf. Diese Teilprogramme verzweigen dann jeweils in das Teilprogramm DATEIEN. Dieses Teilprogramm wird als START- und SHUT-Exit eingesetzt und enthält die Unterprogramme, die die Ein-/Ausgaben auf die Adressdatei durchführen.

Das Teilprogramm BADTACS wird von openUTM automatisch aufgerufen, wenn ein ungültiger TAC eingegeben wird. Nach dem Aufbau der Verbindung mit der Anwendung und erfolgtem KDCSIGN wird sofort von openUTM das Format ausgegeben (Startformat). Die Arbeit mit dem Benutzer erfolgt dann im strengen Dialog, d.h. auf die Eingabe eines TACs und des Schlüssels reagiert die Anwendung mit der Ausgabe des Formats das die gesuchte Adresse enthält bzw. mit einer Erfolgs- oder einer Fehlermeldung in der untersten Zeile.

Dieses Programm ist nur gedacht, um zu zeigen wie man mit openUTM programmiert. Die Dateizugriffe sind nicht über das UTM-Transaktionskonzept gesichert.

Die folgenden Struktogramme zeigen den Aufbau der Teilprogramme:

Bild:  Struktogramm des Teilprogramms ANZEIGE

Bild:  Struktogramm des Teilprogramms AENDERN


Der Vollständigkeit halber ist im Anschluss an die COBOL-Programme die Generierung dieser Anwendung aufgeführt. Die genaue Bedeutung der einzelnen Operanden und Anweisungen entnehmen Sie bitte dem openUTM-Handbuch „Anwendungen generieren“.

Das folgende Bild zeigt das Format, das bei dieser Anwendung verwendet wurde:

Bild: Das *Format "FORMA", mit dem diese Anwendung arbeitet


Im Folgenden ist die Struktur der Adressierungshilfe für dieses Format abgedruckt.

*     USER-AREA-LEN: 228
     41 TACO              PIC X(8).
     41 FUNKTIONO         PIC X(26).
     41 NAMEO             PIC X(14).
     41 VNSO              PIC X(2).
     41 VNSRESTO          PIC X(18).
     41 STRASSEO          PIC X(26).
     41 NRO               PIC X(10).
     41 PLZO              PIC X(5).
     41 ORTO              PIC X(24).
     41 TELO              PIC X(16).
     41 MELDTEXTO         PIC X(80).

Die Felder "FUNKTIONO" und "MELDTEXTO" sind geschützte Felder, das Feld "PLZO" ist numerisch.

Teilprogramm ANZEIGE
 IDENTIFICATION DIVISION.
 PROGRAM-ID.     ANZEIGE.
*****************************************************************
 ENVIRONMENT DIVISION.
*****************************************************************
 DATA DIVISION.
 WORKING-STORAGE SECTION.
     COPY KCOPC.
 01  FEHLERTEXT.
     05     FILLER          PIC X(21)
            VALUE "***  F E H L E R  ***".
     05     FILLER          PIC X(14)
            VALUE "TEILPROGRAMM: ".
     05     F-TP            PIC X(08).
     05     FILLER          PIC X(17)
            VALUE " OPERATIONSCODE: ".
     05     F-OP            PIC X(04).
     05     FILLER          PIC X(13)
            VALUE " RETURNCODE: ".
     05     F-CD            PIC X(03).
 LINKAGE SECTION.
     COPY KCKBC.
     05   KBPRG                 PIC X(228).
     COPY KCPAC.
     03   NB.
       05  TAC                  PIC X(008).
       05  DATEN                PIC X(220).
     03  FILLER REDEFINES NB.
     COPY FORMAO.
*****************************************************************
 PROCEDURE DIVISION USING KCKBC KCSPAB.
 INIT-OPERATION-SECTION.
     MOVE SPACES   TO  NB.
     MOVE INIT     TO  KCOP.
     MOVE 0        TO  KCLKBPRG.
     MOVE 512      TO  KCLPAB.
     CALL "KDCS"       USING KCPAC.
     IF KCRCCC NOT = ZERO
        THEN MOVE INIT TO F-OP GO TO FEHLER-BEHANDLUNG.
 MGET-OPERATION.
     MOVE MGET     TO KCOP.
     MOVE 228      TO KCLA.
     MOVE "*FORMA" TO KCMF.
     CALL "KDCS"   USING KCPAC DATEN.

     IF KCRCCC NOT = ZERO
        THEN MOVE MGET TO F-OP GO TO FEHLER-BEHANDLUNG.
* AUFRUF DES TEILPROGRAMMS "DATEIEN", UM DIE LESEROUTINE   *
* AUFZURUFEN                                               *
 LESE-OPERATION.
     CALL "DATEIEN"    USING  KCKBC, KCSPAB.
MPUT-OPERATION.
     MOVE MPUT     TO  KCOP.
     MOVE "NE"     TO  KCOM.
     MOVE 228      TO  KCLM.
     MOVE SPACES   TO  KCRN.
     MOVE "*FORMA" TO  KCMF.
     CALL "KDCS" USING KCPAC NB.
     IF KCRCCC NOT = ZERO
        THEN MOVE MPUT TO F-OP GO TO FEHLER-BEHANDLUNG.
 PEND-OPERATION.
     MOVE PEND     TO  KCOP.
     MOVE "FI"     TO  KCOM.
     CALL "KDCS" USING KCPAC NB.
 PROG-ENDE.
     EXIT  PROGRAM.
 FEHLER-BEHANDLUNG.
     MOVE "ANZEIGE"   TO F-TP.
     MOVE KCRCCC      TO F-CD.
     MOVE FEHLERTEXT  TO NB.
     MOVE MPUT        TO KCOP.
     MOVE "NE"        TO KCOM.
     MOVE 80          TO KCLM.
     MOVE SPACES      TO KCRN.
     MOVE SPACES      TO KCMF.
     MOVE ZEROES      TO KCDF.
     CALL "KDCS"      USING KCPAC NB.
     MOVE PEND        TO KCOP.
     MOVE "ER"        TO KCOM.
     CALL "KDCS"      USING KCPAC.
         GO TO PROG-ENDE.
Teilprogramm AENDERN
 IDENTIFICATION DIVISION.
 PROGRAM-ID.     AENDERN.
*****************************************************************
 ENVIRONMENT DIVISION.
*****************************************************************
 DATA DIVISION.
 WORKING-STORAGE SECTION.
     COPY KCOPC.
 01  FEHLERTEXT.
     05     FILLER          PIC X(21)
            VALUE "***  F E H L E R  ***".
     05     FILLER          PIC X(14)
            VALUE "TEILPROGRAMM: ".
     05     F-TP            PIC X(08).
     05     FILLER          PIC X(17)
            VALUE " OPERATIONSCODE: ".
     05     F-OP            PIC X(04).
     05     FILLER          PIC X(13)
            VALUE " RETURNCODE: ".
     05     F-CD            PIC X(03).
 LINKAGE SECTION.
     COPY KCKBC.
     05   KBPRG                 PIC X(228).
     COPY KCPAC.
     03   NB.
       05  TAC                  PIC X(008).
       05  DATEN                PIC X(220).
     03  FILLER REDEFINES NB.
     COPY FORMAO.
*****************************************************************
 PROCEDURE DIVISION USING KCKBC, KCSPAB.
***************************************
 INIT-OPERATION-SECTION.
     MOVE SPACES   TO  NB.
     MOVE INIT     TO  KCOP.
     MOVE 0        TO  KCLKBPRG.
     MOVE 512      TO  KCLPAB.
     CALL "KDCS"       USING KCPAC.
     IF KCRCCC NOT = ZERO
        THEN MOVE INIT TO F-OP GO TO FEHLER-BEHANDLUNG.
 MGET-OPERATION.
     MOVE MGET     TO KCOP.
     MOVE 228      TO KCLA.

     MOVE "*FORMA" TO KCMF.
     CALL "KDCS"   USING KCPAC DATEN.
     IF KCRCCC NOT = ZERO
        THEN MOVE MGET TO F-OP GO TO FEHLER-BEHANDLUNG.
* AUFRUF DES TEILPROGRAMMS "DATEIEN", UM DORT ABHAENGIG VOM TAC  *
* ZU DEN ROUTINEN SCHREIBEN, UEBERSCHREIBEN UND LOESCHEN ZU      *
* VERZWEIGEN                                                     *
 DATEI-OPERATION.
     CALL "DATEIEN" USING KCKBC, KCSPAB.
MPUT-OPERATION.
     MOVE MPUT     TO  KCOP.
     MOVE "NE"     TO  KCOM.
     MOVE 228      TO  KCLM.
     MOVE SPACES   TO  KCRN.
     MOVE "*FORMA" TO  KCMF.
     CALL "KDCS" USING KCPAC NB.
     IF KCRCCC NOT = ZERO
        THEN MOVE MPUT TO F-OP GO TO FEHLER-BEHANDLUNG.
 PEND-OPERATION.
     MOVE PEND     TO  KCOP.
     MOVE "FI"     TO  KCOM.
     CALL "KDCS" USING KCPAC NB.
 PROG-ENDE.
     EXIT  PROGRAM.
 FEHLER-BEHANDLUNG.
     MOVE "AENDERN"   TO F-TP.
     MOVE KCRCCC      TO F-CD.
     MOVE FEHLERTEXT  TO NB.
     MOVE MPUT        TO KCOP.
     MOVE "NE"        TO KCOM.
     MOVE 80          TO KCLM.
     MOVE SPACES      TO KCRN.
     MOVE SPACES      TO KCMF.
     MOVE ZEROES      TO KCDF.
     CALL "KDCS"      USING KCPAC NB.
     MOVE PEND        TO KCOP.
     MOVE "ER"        TO KCOM.
     CALL "KDCS"      USING KCPAC.
     GO TO PROG-ENDE.
Teilprogramm DATEIEN mit START-/SHUT-EXIT und Dateizugriffen
 IDENTIFICATION DIVISION.
 PROGRAM-ID.    DATEIEN
 ENVIRONMENT DIVISION.
***********************
 INPUT-OUTPUT SECTION.
*----------------------
 FILE-CONTROL.
     SELECT ADRESSEN ASSIGN TO "adressen"
     ACCESS MODE IS RANDOM
     ORGANIZATION IS INDEXED
     RECORD KEY IS D-NAME
     FILE STATUS IS DATEISTATUS.
 DATA DIVISION.
****************
 FILE SECTION.
*--------------
 FD   ADRESSEN       LABEL RECORD IS STANDARD.
 01  D-ADRESSATZ.
   05  D-NAME.
     10  D-NACHNAME                   PIC X(14).
     10  D-VNS                        PIC X(02).
   05  D-VORNAME                      PIC X(18).
   05  D-STRASSE                      PIC X(26).
   05  D-NR                           PIC X(10).
   05  D-PLZ                          PIC X(04).
   05  D-ORT                          PIC X(24).
   05  D-TEL                          PIC X(16).
 WORKING-STORAGE SECTION.
*------------------------
   01 DATEIFEHLERZEILE.
   05  FILLER                         PIC X(24)
       VALUE "   *** DATEIFEHLER NR.: ".
   05  DATEISTATUS                    PIC X(02).
   05  FILLER                         PIC X(04)
       VALUE " ***".
   05  FILLER                         PIC X(50) VALUE SPACES.
 LINKAGE SECTION.

*-----------------
     COPY KCKBC.
     05   KBPRG                 PIC X(228).
     COPY KCPAC.
     03   NB.
       05  TAC                  PIC X(008).
       05  DATEN                PIC X(220).
     03  FILLER REDEFINES NB.
     COPY FORMAO.
 PROCEDURE DIVISION USING KCKBC KCSPAB.
****************************************
 STEUER SECTION.
*-----------------
 STEUER-BEGIN.
     IF KCTACVG = "STARTUP"
     THEN OPEN I-O ADRESSEN GO TO STEUER-END.
     IF KCTACVG = "SHUTDOWN"
     THEN CLOSE ADRESSEN GO TO STEUER-END.
     IF KCTACVG = "1"
     THEN GO TO LESEN-BEGIN.
     IF KCTACVG = "2"
     THEN GO TO SCHREIBEN-BEGIN.
     IF KCTACVG = "3"
     THEN GO TO UEBERSCHREIBEN-BEGIN.
     IF KCTACVG = "4"
     THEN GO TO LOESCHEN-BEGIN.
 STEUER-END.
     EXIT PROGRAM.
 LESEN SECTION.
*------------------------------------------
 LESEN-BEGIN.
*    VERSORGEN DES ISAM-SCHLUESSELS
     MOVE NAMEO                      TO D-NACHNAME.
     MOVE VNSO                       TO D-VNS.
     MOVE SPACES                     TO STRASSEO NRO ORTO TELO.
     MOVE ZEROES                     TO PLZO.
     MOVE KCTACVG                    TO TACO.
     MOVE "ANZEIGE VON ADRESSEN. "   TO FUNKTIONO.
     READ ADRESSEN RECORD
     INVALID KEY PERFORM DATEIFEHLER  GO TO LESEN-END.
     MOVE D-NACHNAME TO NAMEO.
     MOVE D-VNS      TO VNSO.
     MOVE D-VORNAME  TO VNSRESTO.
     MOVE D-STRASSE  TO STRASSEO.
     MOVE D-NR       TO NRO.
     MOVE D-PLZ      TO PLZO.
     MOVE D-ORT      TO ORTO.
     MOVE D-TEL      TO TELO.
 LESEN-END.
     EXIT PROGRAM.
 SCHREIBEN SECTION.
*----------------------------------------------
 SCHREIBEN-BEGIN.
     ENTRY   "SCHREIBEN"       USING  ADRESSATZ.
     MOVE VNSO                              TO D-VNS.
     MOVE VNSRESTO                          TO D-VORNAME.
     MOVE STRASSEO                          TO D-STRASSE.
     MOVE NRO                               TO D-NR.
     MOVE PLZO                              TO D-PLZ.
     MOVE ORTO                              TO D-ORT.
     MOVE TELO                              TO D-TEL.
     MOVE KCTACVG                           TO TACO.
     MOVE "NEUEINTRAG VON ADRESSEN. "       TO FUNKTIONO.
     MOVE " *  ADRESSE IST EINGETRAGEN  * " TO MELDTEXTO.
     WRITE D-ADRESSATZ INVALID KEY PERFORM DATEIFEHLER.
 SCHREIBEN-END.
     EXIT PROGRAM.
 UEBERSCHREIBEN SECTION.
*---------------------------------------------
 UEBERSCHREIBEN-BEGIN.
*    Satz lesen zum Sperren des Satzes
     MOVE NAMEO                      TO D-NACHNAME.
     MOVE VNSO                       TO D-VNS.
     MOVE "AENDERN VON ADRESSEN. "   TO FUNKTIONO.
     READ ADRESSEN RECORD
     INVALID KEY PERFORM DATEIFEHLER  GO TO UEBERSCHREIBEN-END.
     MOVE VNSRESTO                          TO D-VORNAME.
     MOVE STRASSEO                          TO D-STRASSE.
     MOVE NRO                               TO D-NR.
     MOVE PLZO                              TO D-PLZ.
     MOVE ORTO                              TO D-ORT.
     MOVE TELO                              TO D-TEL.
     MOVE " *  ADRESSE IST GEAENDERT  * "   TO MELDTEXTO.
     REWRITE D-ADRESSATZ INVALID KEY PERFORM DATEIFEHLER.
 UEBERSCHREIBEN-END.
     EXIT PROGRAM.
 LOESCHEN SECTION.
*---------------------------------------------
 LOESCHEN-BEGIN.
*    Satz lesen zum Sperren des Satzes
     MOVE NAMEO                   TO D-NACHNAME.
     MOVE VNSO                    TO D-VNS.
     MOVE "LOESCHEN VON ADRESSEN" TO FUNKTIONO.
     READ ADRESSEN RECORD
     INVALID KEY PERFORM DATEIFEHLER  GO TO LOESCHEN-END.
     DELETE ADRESSEN RECORD
     INVALID KEY PERFORM DATEIFEHLER  GO TO LOESCHEN-END.
     MOVE KCTACVG                   TO TACO.
     MOVE "*  ADRESSE GELOESCHT  *" TO MELDTEXTO.
 LOESCHEN-END.
     EXIT PROGRAM.
 DATEIFEHLER SECTION.
*---------------------
 DATEIFEHLER-BEGIN.
     IF DATEISTATUS = 22 THEN
     MOVE "*** ADRESSE MIT DIESEM NAMEN SCHON VORHANDEN. ***"
     TO MELDTEXTO GO TO DATEIFEHLER-END.
     IF DATEISTATUS = 23 THEN
     MOVE "*** ADRESSE MIT DIESEM NAMEN NICHT VORHANDEN. ***"
     TO MELDTEXTO GO TO DATEIFEHLER-END.
     MOVE DATEIFEHLERZEILE TO MELDTEXTO.
 DATEIFEHLER-END.
     EXIT.
Teilprogramm BADTACS
 IDENTIFICATION DIVISION.
 PROGRAM-ID. BADTACS.
*****************************************************************
 ENVIRONMENT DIVISION.
*****************************************************************
 DATA DIVISION.
 WORKING-STORAGE SECTION.
 77  BTEXT                      PIC X(41) VALUE
     "FALSCHER TAC - BITTE EINGABE WIEDERHOLEN.".
 77  STAR                       PIC X(6) VALUE ALL "*".
     COPY KCOPC.
 01  FEHLERTEXT.
     05     FILLER          PIC X(21)
            VALUE "***  F E H L E R  ***".
     05     FILLER          PIC X(14)
            VALUE "TEILPROGRAMM: ".
     05     F-TP            PIC X(08).
     05     FILLER          PIC X(17)
            VALUE " OPERATIONSCODE: ".
     05     F-OP            PIC X(04).
     05     FILLER          PIC X(13)
            VALUE " RETURNCODE: ".
     05     F-CD            PIC X(03).
 LINKAGE SECTION.
     COPY KCKBC.
     05     FILLER          PIC X.
     COPY KCPAC.
     03   NB.
       05  TRANSAC              PIC X(08).
       05  DATEN                PIC X(220).
     03  NB-A REDEFINES NB.
         COPY FORMAO.
     41  FEHLER REDEFINES MELDTEXTO.
       45  STAR1                  PIC X(6).
       45  BADTEXT                PIC X(41).
       45  STAR2                  PIC X(6).
       45  REST                   PIC X(27).
****************************************************************
 PROCEDURE DIVISION USING KCKBC KCSPAB.
***************************************
 INIT-OPERATION-SECTION.
     MOVE SPACES   TO  NB.
     MOVE INIT     TO  KCOP.
     MOVE 0        TO  KCLKBPRG.
     MOVE 228      TO  KCLPAB.

    CALL "KDCS"       USING KCPAC.
    IF KCRCCC NOT = ZERO
       THEN MOVE INIT TO F-OP GO TO FEHLER-BEHANDLUNG.
MGET-OPERATION.
    MOVE MGET     TO KCOP.
    MOVE 228      TO KCLA.
    MOVE "*FORMA" TO KCMF.
    CALL "KDCS"   USING KCPAC, DATEN.
    IF KCRCCC = "05Z"
       THEN MOVE SPACES TO NB-A.
       GO TO MPUT-OPERATION.
    IF KCRCCC NOT = ZERO
       THEN MOVE MGET TO F-OP GO TO FEHLER-BEHANDLUNG.
MPUT-OPERATION.
    MOVE BTEXT    TO  BADTEXT.
    MOVE STAR     TO  STAR1.
    MOVE STAR     TO  STAR2.
    MOVE SPACES   TO  REST.
    MOVE SPACES   TO  TAC.
    MOVE MPUT     TO  KCOP.
    MOVE "NE"     TO  KCOM.
    MOVE 228      TO  KCLM.
    MOVE SPACES   TO  KCRN.
    MOVE "*FORMA" TO  KCMF.
    CALL "KDCS" USING KCPAC, NB.
    IF KCRCCC NOT = ZERO
       THEN MOVE MPUT TO F-OP GO TO FEHLER-BEHANDLUNG.
PEND-OPERATION.
    MOVE PEND     TO  KCOP.
    MOVE "FI"     TO  KCOM.
    CALL "KDCS" USING KCPAC.
PROG-ENDE.
    EXIT  PROGRAM.
FEHLER-BEHANDLUNG.
        MOVE "BADTACS"   TO F-TP.
    MOVE KCRCCC      TO F-CD.
    MOVE FEHLERTEXT  TO NB.
    MOVE MPUT        TO KCOP.
    MOVE "NE"        TO KCOM.
    MOVE 80          TO KCLM.
    MOVE SPACES      TO KCRN.
    MOVE SPACES      TO KCMF.
    MOVE ZEROES      TO KCDF.
    CALL "KDCS"      USING KCPAC NB.
    MOVE PEND        TO KCOP.
    MOVE "ER"        TO KCOM.
    CALL "KDCS"      USING KCPAC.
    GO TO PROG-ENDE.
Generierung des Anwendungsbeispiels
REM **************************************************************
REM ***           D E F  -  A N W E I S U N G E N            ***
REM ***                                                      ***
REM ***                  KDCFILE = APPLI                     ***
REM **************************************************************
MAX APPLINAME=A
MAX KDCFILE=(KDCFILE.APPLI,S),TASKS=2,ASYNTASKS=0
MAX CONRTIME=5,LOGACKWAIT=60
ROOT ADR1ROOT
OPTION GEN=ALL
REM **************************************************************
REM ************        PROGRAM-ANWEISUNGEN         ************
REM **************************************************************
PROGRAM KDCADM,COMP=C
PROGRAM TPREAD,COMP=COB1
PROGRAM TPUPDATE,COMP=COB1
PROGRAM TPFILE,COMP=COB1
PROGRAM BADTACS,COMP=COB1
REM **************************************************************
REM ************         EXIT-ANWEISUNGEN           ************
REM **************************************************************
EXIT PROGRAM=TPFILE,USAGE=START
EXIT PROGRAM=TPFILE,USAGE=SHUT
REM **************************************************************
REM ************          TAC-ANWEISUNGEN           ************
REM **************************************************************
DEFAULT TAC ADMIN=Y,PROGRAM=KDCADM
TAC KDCTAC
TAC KDCLTERM
TAC KDCPTERM
TAC KDCSWTCH
TAC KDCUSER
TAC KDCSEND
TAC KDCAPPL
TAC KDCDIAG
TAC KDCLOG
TAC KDCINF
TAC KDCHELP
TAC KDCSHUT
DEFAULT TAC TYPE=A,ADMIN=Y,PROGRAM=KDCADM
TAC KDCTACA
TAC KDCLTRMA
TAC KDCPTRMA
TAC KDCSWCHA
TAC KDCUSERA
TAC KDCSENDA

TAC KDCAPPLA
TAC KDCDIAGA
TAC KDCLOGA
TAC KDCINFA
TAC KDCHELPA
TAC KDCSHUTA
TAC KDCTCLA
DEFAULT TAC TYPE=D,PROGRAM=(STD)
TAC KDCBADTC,PROGRAM=BADTACS
TAC 1,LOCK=1,PROGRAM=TPREAD
TAC 2,LOCK=2,PROGRAM=TPUPDATE
TAC 3,LOCK=2,PROGRAM=TPUPDATE
TAC 4,LOCK=2,PROGRAM=TPUPDATEREM 
**************************************************************
REM ************         USER-ANWEISUNGEN           ************
REM **************************************************************
USER  GUENTER,PASS=C'AUFGEHTS',KSET=BUND1,PERMIT=ADMIN,FORMAT=*FORMA
USER  BESSY,PASS=C'HH',KSET=BUND2,STATUS=ON,FORMAT=*FORMA
USER  HAPPI,KSET=BUND3,STATUS=ON,FORMAT=*FORMA
REM **************************************************************
REM ************         FORMSYS-ANWEISUNG          ************
REM **************************************************************
FORMSYS TYPE=FHS
REM **************************************************************
REM ************      PTERM/LTERM-ANWEISUNGEN       ************
REM **************************************************************
DEFAULT PTERM PRONAM=DSR01,PTYPE=T9750
PTERM DSS01,LTERM=UTMDST1
PTERM DSS02,LTERM=UTMDST2
PTERM DSS03,LTERM=UTMDST3
DEFAULT PTERM PRONAM=DSR01,PTYPE=T9022,USAGE=O
PTERM G01,LTERM=DRUCKER,CONNECT=A
LTERM UTMDST1,KSET=BUND1
LTERM UTMDST2,LOCK=4,KSET=BUND1
LTERM UTMDST3,LOCK=5,KSET=BUND1
LTERM DRUCKER,USAGE=O
REM **************************************************************
REM ************         KSET-ANWEISUNGEN           ************
REM **************************************************************
KSET  BUND1,KEYS=(1,2,3,4,5)
KSET  BUND2,KEYS=(1,2,4)
KSET  BUND3,KEYS=(1)
REM **************************************************************
REM ************          TLS-ANWEISUNGEN           ************
REM **************************************************************
TLS    TLSA
TLS    TLSB
END