Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Example of an asynchronous MSGTAC program unit

The MSGTAC program unit NOHACK counts the number of incorrect sign-on attempts in TLS. If openUTM accepts a KDCSIGN (i.e. with the message K008 or K033), the TLS is deleted.

If, after three invalid KDCSIGN attempts, the fourth KDCSIGN attempt is also incorrect, the relevant terminal is to be disconnected by means of “asynchronous administration”, using an FPUT call with KCRN="KDCPTRMA". The message area contains the following parameter of the administration command KDCPTRMA (see also the openUTM manual “Generating Applications”:

PTERM=pterm, PRONAM=processor,ACT=DIS

The administration command is then written with LPUT to the user log file and the TLS is deleted.

The K messages are each read with an FGET by the MSGTAC program unit. Once a K message has been “processed”, an FGET immediately reads the next K message within the same program unit run.

IDENTIFICATION DIVISION.
PROGRAM-ID.
    MSGTAC.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
    COPY KCOPC.
77  ID-HACK-TLS          PIC X(8) VALUE "TLSHACK".
77  HACK-MAX             PIC 9(4) COMP VALUE 3.
01  ADM-SATZ.
  02  ADM-TXT.
    03  F                PIC X(07) VALUE "PTERM=(".
    03  F                PIC X(08).
    03  F                PIC X(09) VALUE "),PRONAM=".
    03  F                PIC X(08).
    03  F                PIC X(11) VALUE ",ACTION=DIS".
01  UTM-FEHLER-ZEILE.
    03  F                PIC X(18) VALUE "Error in prog. unit".
    03  F-MODUL          PIC X(08) VALUE "NOHACK".
    03  F                PIC X(12) VALUE "; Vorg./TAC".
    03  F-VG             PIC X(08).
    03  F                PIC X(01) VALUE "/".
    03  F-AL             PIC X(08).
    03  F                PIC X(05) VALUE " wg.".
    03  F-OP             PIC X(04).
    03  F                PIC X(07) VALUE "  (RC:".
    03  F-RC             PIC X(08).
    03  F                PIC X(01) VALUE ")".
 LINKAGE SECTION.
     COPY KCKBC.
     05  FILLER           PIC X.
     COPY KCPAC.
     COPY KCMSGC.
     03  NB.
       05  HACKER-LTERM     PIC X(8).
       05  NB-ADM.
         07  F              PIC X(07).
         07  PTRM           PIC X(08).
         07  F              PIC X(09).
         07  PRNM           PIC X(08).
         07  F              PIC X(11).
       05  TLS-HACK.
         07  HACK-ANZ       PIC 9(4) COMP.
 PROCEDURE DIVISION USING KCKBC, KCSPAB.
 MAIN SECTION .
 INIT-ANF.
     MOVE LOW-VALUE TO KCPAC
     MOVE INIT      TO KCOP
     MOVE 0         TO KCLKBPRG
     COMPUTE KCLPAB  = FUNCTION LENGTH (KCSPAB)
     CALL "KDCS" USING KCPAC.
     IF  KCRCCC  NOT =  ZERO
     THEN  GO TO  PEND-LPUT.
 FGET-ANF.
     MOVE LOW-VALUE TO KCPAC
     MOVE FGET      TO KCOP
     COMPUTE KCLA    = FUNCTION LENGTH (KCMSGC)
     MOVE SPACE     TO KCMF
     CALL "KDCS" USING KCPAC, KCMSGC
     IF  KCRCCC  NOT =  ZERO
     THEN
        IF  KCRCCC = "10Z"
        THEN
          GO TO PEND-ANF
        ELSE
          GO TO PEND-LPUT.
     IF  MSGNR = "K004"
*                                      Invalid identification *
       MOVE  LTRM OF K004  TO HACKER-LTERM
     ELSE IF  MSGNR = "K006"
*                                            Invalid password *
       MOVE  LTRM OF K006  TO HACKER-LTERM
     ELSE IF  MSGNR = "K008"
*                                            KDCSIGN accepted *
       MOVE  LTRM OF K008  TO HACKER-LTERM
     ELSE IF  MSGNR = "K031"
*                                                 Card not ok *
       MOVE  LTRM OF K031  TO HACKER-LTERM
     ELSE IF  MSGNR = "K033"
*                                     if no K008 is generated *
      MOVE  LTRM OF K033  TO HACKER-LTERM

     ELSE
       MOVE MSGNR TO KCOP
       GO TO PEND-LPUT.
     PERFORM ARBEIT
     IF  KCRCCC  NOT =  ZERO
        GO TO  PEND-LPUT.
*                                    More messages waiting ?? *
     GO TO  FGET-ANF.
 PEND-ANF.
     MOVE LOW-VALUE TO KCPAC
     MOVE PEND      TO KCOP
     MOVE "FI"      TO KCOM
     CALL "KDCS" USING KCPAC.
 PROG-ENDE.
     EXIT PROGRAM.
 PEND-LPUT.
     MOVE KCOP             TO F-OP
     MOVE KCTACVG          TO F-VG
     MOVE KCTACAL          TO F-AL
     MOVE KCRC             TO F-RC
     MOVE LOW-VALUE TO KCPAC
     MOVE LPUT      TO KCOP
     COMPUTE KCLA    = FUNCTION LENGTH (UTM-ERROR-LINE)
     CALL "KDCS" USING KCPAC, UTM-ERROR-LINE.
     MOVE LOW-VALUE TO KCPAC
     MOVE PEND      TO KCOP
     MOVE "FI"      TO KCOM
     CALL "KDCS" USING KCPAC.
 M9.
     EXIT.
/
 ARBEIT SECTION .
 A0.
     MOVE LOW-VALUE    TO KCPAC
     MOVE GTDA         TO KCOP
     MOVE 2            TO KCLA
     MOVE ID-HACK-TLS  TO KCRN
     MOVE HACKER-LTERM TO KCLT
     CALL "KDCS" USING KCPAC, TLS-HACK
     IF   KCRCCC  NOT =  ZERO
       GO TO  A9.
     IF  KCRLM = 0
     THEN
        IF  MSGNR = "K008"
              OR  = "K033"
        THEN
*                                           Ok, no TLS exists *
           NEXT SENTENCE
        ELSE
*                                                  Create TLS *
           MOVE LOW-VALUE    TO KCPAC
           MOVE PTDA         TO KCOP
           MOVE 2            TO KCLA
           MOVE 1            TO HACK-NO
           MOVE ID-HACK-TLS  TO KCRN
           MOVE HACKER-LTERM TO KCLT
          CALL "KDCS" USING KCPAC, TLS-HACK
     ELSE
        IF  MSGNR = "K008"
              OR  = "K033"
        THEN
*                                             Ok; delete TLS *
           MOVE LOW-VALUE    TO KCPAC
           MOVE PTDA         TO KCOP
           MOVE 0            TO KCLA
           MOVE ID-HACK-TLS  TO KCRN
           MOVE HACKER-LTERM TO KCLT
           CALL "KDCS" USING KCPAC, TLS-HACK
        ELSE
           PERFORM CHECK-NO.
 A9.
     EXIT.
/
 PRUEF-ANZ SECTION .
 P0.
     ADD 1 TO HACK-NO
     IF  HACK-NO  NOT >  HACK-MAX
     THEN
*                                            Try it once more *
        MOVE LOW-VALUE    TO KCPAC
        MOVE PTDA         TO KCOP
        MOVE 2            TO KCLA
        MOVE ID-HACK-TLS  TO KCRN
        MOVE HACKER-LTERM TO KCLT
        CALL "KDCS" USING KCPAC, TLS-HACK
        GO TO  P9.
*                                               Disconnect !! *
     MOVE ADM-TXT TO NB-ADM
     IF  MSGNR = "K004"
       MOVE CORR  K004 TO NB-ADM
     ELSE IF  MSGNR = "K006"
       MOVE CORR  K006 TO NB-ADM
     ELSE
       MOVE CORR  K031 TO NB-ADM.
 P-FPUT.
     MOVE LOW-VALUE  TO KCPAC
     MOVE FPUT       TO KCOP
     MOVE "NE"       TO KCOM
     MOVE "KDCPTRMA" TO KCRN
     COMPUTE KCLM     = FUNCTION LENGTH (NB-ADM)
     MOVE SPACE      TO KCMF
     MOVE ZERO       TO KCDF
     CALL "KDCS" USING KCPAC, NB-ADM
     IF  KCRCCC  NOT =  ZERO
       GO TO  P9.
 P-LPUT.
*                                           Write to user log *
     MOVE LOW-VALUE TO KCPAC
     MOVE LPUT      TO KCOP
     COMPUTE KCLA    = FUNCTION LENGTH (NB-ADM)
     CALL "KDCS" USING KCPAC, NB-ADM
     IF  KCRCCC  NOT =  ZERO
       GO TO  P9.
 P-PTDA.
*                                                  Delete TLS *
     MOVE LOW-VALUE    TO KCPAC
    MOVE PTDA         TO KCOP
    MOVE ZERO         TO KCLA
    MOVE ID-HACK-TLS  TO KCRN
    MOVE HACKER-LTERM TO KCLT
    CALL "KDCS" USING KCPAC, TLS-HACK.
P9.
    EXIT.

The above example for the MSGTAC program unit simply indicates appropriate ways of evaluating messages and administering the application.

However, the K094 message (SIGNON SILENT-ALARM) should be used to monitor security infringements since this also includes UPIC and OSI TP clients. Furthermore, wider-ranging administration of the UTM application is possible using the programmed administration capability (ADMI interface).