LOGIN 
          IDENT  LOGIN
          ENTRY  LOGIN
          SYSCOM B1 
          TITLE  LOGIN - DETERMINE TERMINAL LOGIN STATUS. 
*COMMENT  LOGIN - DETERMINE TERMINAL LOGIN STATUS.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4
*****     LOGIN - DETERMINE LOGIN STATUS. 
* 
*         W.E. MARTIN.       79/03/30.
          SPACE  4
*         COMMOM TEXT.
  
  
*CALL     COMCMAC 
*CALL     COMKMAC 
*CALL     COMSPRD 
 LOGIN    SPACE  4,35 
***       LOGIN - DETERMINE TERMINAL LOGIN STATUS.
* 
*         LOGIN ALLOWS A TASK TO DETERMINE WHETHER OR NOT A TERMINAL
*         IS CURRENTLY LOGGED INTO THE TRANSACTION SUB-SYSTEM.  THIS
*         IS NECESSARY TO KNOW, SINCE A *SEND* TO A NON-ACTIVE
*         TERMINAL CAN RESULT IN A TASK-S BEING ABORTED BY THE
*         EXECUTIVE.
* 
*         NOTE - IF NO PARAMETERS ARE ENCOUNTERED IN THE ARGUMENT 
*                LIST, THE TASK IS ABORTED WITH A PARAMETER LIST
*                STRUCTURE ERROR. 
* 
*         CALL FORMAT - 
* 
*         FORTRAN EXTENDED - CALL LOGIN (TERMINAL, STATUS)
* 
*         COBOL - ENTER LOGIN USING TERMINAL, STATUS. 
* 
*                 TERMINAL = TERMINAL WHICH IS TO BE INQUIRED ABOUT.
* 
*                 STATUS   = LOCATION WHICH IS TO HAVE THE TERMINAL 
*                            LOGGIN STATUS RETURNED.
* 
* 
*         USES   A - 0, 1, 2, 3, 5, 6, 7. 
*                X - 0, 1, 2, 3, 5, 6, 7. 
*                B - 1, 3.
* 
*         CALLS  ZFN. 
* 
*         MACROS ARGERR, TSIM.
  
  
          VFD    42/0LLOGIN,18/LOGIN
  
 LOGIN    SUBR               ENTRY/EXIT 
          SX6    A0          SAVE (A0)
          MX0    42 
          SA6    LGNA 
          SB1    1
          SX7    B0+
          SA7    LGNC        CLEAR WORKING STORAGE
          SA7    LGND 
  
*         PROCESS TERMINAL NAME.
  
          SA3    X1 
          UX2,B3 X3 
          ZR     X1,LGN4     IF NO ARGUMENTS - ABORT TASK 
          NZ     B3,LGN1     IF NOT COBOL COMPUTATIONAL-1 ARGUMENT
          SX1    B0+
          ZR     X2,LGN2     IF ZERO TERMINAL NAME
 LGN1     BX1    X0*X3
          ZR     X1,LGN2     IF ZERO TERMINAL NAME
          RJ     ZFN         ZERO FILL NAME 
 LGN2     BX7    X1 
          LX7    42          POSITION FOR TST SEARCH
  
*         PROCESS STATUS PARAMETER. 
  
          SA5    A1+1        READ NEXT ARGUMENT 
          ZR     X5,LGN4     IF NO *STATUS* ARGUMENT - ABORT TASK 
          SA7    LGNB+2 
          TSIM   A7-2 
  
*         PROCESS LIST RETURNED FROM *TSIM* REQUEST BY RETURNING
*         INTEGER VALUE TO USER.
  
          SA1    LGNC        READ FIRST WORD OF TST PAIR
          LX1    59-58
          BX6    X6-X6       SET TERMINAL NOT LOGGED-IN STATUS
          PL     X1,LGN3     IF TERMINAL NOT LOGGED-IN
          SX6    B1+         SET TERMINAL LOGGED-IN STATUS
  
 LGN3     SA1    LGNA        RESTORE (A0) 
          SA6    X5 
          SA0    X1 
          EQ     LOGINX      RETURN 
  
*         PROCESS ARGUMENT ERROR. 
  
 LGN4     SA1    LOGIN       READ CALLING ADDRESS 
          MX0    30 
          LX1    30 
          SA2    X1-1        READ CALLING LINE NUMBER 
          BX6    -X0*X2 
          SA6    LGNB 
          ARGERR A6          EXIT TO EXECUTIVE
  
 LGNA     BSS    1           TEMPORARY STORAGE (A0) 
 LGNB     VFD    6/0,6/3,18/LGNC,12/2,18/LGND  *TSIM* HEADER
          VFD    18/0,42/77777777777777B  *TSIM* MASK FIELD 
          CON    0           STORAGE FOR CRITERION FIELD
 LGNC     BSSZ   2           STORAGE FOR LIST 
 LGND     CON    0           STORAGE FOR NUMBER OF RETURNED ENTRIES 
          SPACE  4
*         COMMON DECK.
  
  
*CALL     COMKZFN 
          SPACE  4
          END 
