SPL,L,O 
!     NAME:   EE..
!     SOURCE: 92067-18209 
!     RELOC:  92067-16185 
!     PGMR:   G.A.A.
! 
!  ***************************************************************
!  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS     *
!  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
!  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
!  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
!  ***************************************************************
! 
      NAME EE..(8) "92067-16185 REV.1903 790206"
! 
!  MODIFICATION RECORD: 
! 
!        DATE   REASON
!  (1)  780720  TO SCHEDULE SESSION LOG-OFF, WITH OPTIONS 
!  (2)  781117  TO REQUIRE SP OR RP TO BE SPECIFIED FOR SESSION EXIT
!               UNLESS SYSTEM MANAGER OR NO PRIVATES MOUNTED TO SESSION 
! 
EE..: SUBROUTINE (N,LIS,ER) GLOBAL
      LET FM.ER,CLOS.,EXEC      BE SUBROUTINE,EXTERNAL
      LET GTSCB,CLOSE           BE SUBROUTINE,EXTERNAL
      LET CONV.                 BE SUBROUTINE,EXTERNAL
      LET .SETB                 BE SUBROUTINE,EXTERNAL,DIRECT 
      LET CUSE.,CAD.,I.BUF      BE INTEGER,EXTERNAL 
      LET S.TTY,S.CAP           BE INTEGER,EXTERNAL 
      LET ACTV.                 BE INTEGER,EXTERNAL 
      LET SM.BF                 BE INTEGER,EXTERNAL 
      LET LGOFF(3)              BE INTEGER
      LET L.SEG,ABX..           BE LABEL,EXTERNAL 
      LET A                     BE CONSTANT(0)
      INITIALIZE LGOFF TO "LGOFF "
! 
      KI_[RG_[RP_@LIS+1]+4]+4 
      P3_[P2_[P1_$1717K+12]+1]+1          !PROGRAM NAME IN ID SEGMENT 
      ORIG_0
      ASSEMBLE ["EXT $SMLK";"EXT $SMST";"EXT $SMDL";"EXT $SMID"]
      ASSEMBLE ["EXT $LGOF";"LDA $LGOF";"STA LGOF"] 
      ASSEMBLE ["LDA $SMLK";"STA SMLK";"LDA $SMST";"STA SMST"]
      ASSEMBLE ["LDA $SMDL";"STA SMDL";"LDA $SMID";"STA SMID"]
      CALL GTSCB(SM.BF,144,IERR)          !READ SESSION CONTROL BLK 
      IF IERR > 0 THEN [                  \IF IN SESSION, THEN
         IF $P1 = "FM" THEN [             \ 
         IF ($P2 AND 177400K)=43400K THEN[\ 
         ASCLU_(($P2 AND 377K) <- 8) OR ($P3 >-8); \
         CONV.(S.TTY,ASLU2,2);            \ 
         IF ASCLU=ASLU2 THEN [            \ 
         ORIG_1;                          \ 
         EX.OP_SM.BF AND 377K;            \SESSION ID TO LOW BYTE 
         IF $RP="RP" THEN                 \BIT 15=DISMOUNT PRIVATES 
            EX.OP_EX.OP OR 100000K,       \ 
         ELSE [                           \ 
            IFNOT LIS THEN [              \IF NO SP/RP PARAMETER
               PTR_@SM.BF-(SMLK+SMST);    \ADDRESS OF SST LENGTH WORD 
               IF $(PTR+SMID)=7777K THEN  \IF SYSTEM MANAGER, THEN
                  GO TO EE1;              \ 
               LIMIT_$(PTR+SMDL);         \CONTENTS OF DISC LIMIT WORD
               CTRAD_PTR-$PTR+1;          \ADDRESS OF DISC COUNTER WORD 
               REPEAT LIMIT TIMES DO      \CHECK EACH DISC FOR BIT 14 
                 [IFNOT $[CTRAD_CTRAD+1] AND 40000K \(0 IF PRIVATE) 
                     THEN [IF $CTRAD THEN \IF NOT A SPARE & BIT 14=0, 
                           GO TO ER71]]], \ERROR 71 - MUST SAY SP/RP
            ELSE [IFNOT $RP="SP" THEN     \IF NEITHER SP NOR RP, THEN 
               [ER_56;RETURN]]];          \BAD PARAMETER ERROR
EE1:     IF $RG="RG" THEN                 \BIT 14=DISMOUNT GROUP DISCS
            EX.OP_EX.OP OR 40000K;        \ 
         IF $KI="KI" THEN                 \BIT 13=KILL PROGRAMS 
            EX.OP_EX.OP OR 20000K]]]]     ! 
      IF ACTV. THEN GO TO ABX.. 
      ENDMS_@CUSE.-5
      FM.ER(0,$ENDMS,5) 
      CLOS.($0) 
      EXEC (5,-1) 
      IF $P1 = "FM" THEN [                  \IF "FMGR"
         IF $P2 = "GR" THEN [               \ 
            IF ($P3 AND 177400K) = 20000K THEN \
            [CAD._0;CUSE._"77";GOTO L.SEG]]] !1ST IN SEG.7 (NX.JB)
      CLOSE(I.BUF)
      IFNOT S.CAP THEN GO TO DONE 
      IFNOT ORIG THEN GO TO DONE
      $A_S.TTY
      CALL .SETB                             !DISABLE TERMINAL
      EXEC(100012K,LGOFF)                    !SCHEDULE LGOFF
      GO TO CLSRW 
CLSRW:EXEC(20,0,0,0,EX.OP,$($1717K+32),LGOF) !LOG-OFF OPTIONS 
DONE: CALL EXEC(6)
ER71: ER_71                               !NOT SPECIFIED, ERROR 71
      RETURN
      END 
      END 
      END$
                                                                                                                                                                                                                                                  