FTN4,L
C 
C  ***************************************************************
C  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS     *
C  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
C  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
C  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
C  ***************************************************************
C 
C     SOURCE PART NUMBER :92067-18375 
C 
C     RELOCATABLE PART NUMBER : 92067-16361 
C 
C     PROGRAMER(S)   : J.M.N. 
C 
C 
      SUBROUTINE ACPUA(JTYPE,IERR)  ,92067-16361 REV.1940 790801  
      LOGICAL XFTTY 
      DIMENSION ICOM(10),LU2(2),NALL(11),SUCMD(4) 
      COMMON /ACOM1/NDCB(272),NBUF(256),MBUF(256) 
      COMMON /ACOMC/IECHO,LULOG,ITLOG,KECHO 
      COMMON /ACOM6 /LOC(6),IRN,IPFLG 
      COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) 
      COMMON /ACOM4/ICMND(40) 
      COMMON /ACOMD/ICLASS
      DATA ICOM /2HSP,0,2HSG,0,2HRP,100000B,2HRG,40000B,0,0 / 
      DATA LU2(2) / 0 / 
      DATA SUCMD / 4HSUNP,4HSDNP,4HSD,B,4HSD,S  / 
      DATA NALL/257,2H@ ,2H  ,2H  ,2H  ,2H  , 
     1              2H@ ,2H  ,2H  ,2H  ,2H  / 
C 
C     ACPUA(2) PURGES THE ACCOUNTS FILE 
C       AFTER THE SYSTEM BECOMES QUIET
C 
C     ACPUA(1) SHUTS DOWN SESSION SYSTEM
C       AFTER THE SYSTEM BECOMES QUIET
C 
C     ACPUA(3) SHUTS DOWN SESSION SYSTEM
C       FOR AN ACCOUNTS FILE LOAD 
C 
C     ACPUA(4) SHUTS DOWN SESSION SYSTEM
C       AND RELEASES MEMORY 
C 
C 
      ITYPE=JTYPE 
      IERR=0
      IF(ITYPE.EQ.3) GO TO 610
      IF(ITYPE.NE.2) GO TO 100
   25 CALL ACNVS(62HDO YOU REALLY WANT TO PURGE THE SESSION SYSTEM (YES 
     1OR NO)?  _ ,31,0) 
      IF(IPBUF(1).EQ.2HNO) RETURN 
      IF(IPBUF(1).NE.2HYE.OR.IPBUF(2).NE.2HS  ) GO TO 25
   50 IF(IPFLG.LT.0) GO TO 60 
      IPBUF(4)=0
      IF(ITYPE.EQ.3) GO TO 55 
C 
C     PROMPT FOR SHUT DOWN MESSAGE
C 
      CALL ACNVS(28HSHUT DOWN MESSAGE (20 CHARS)   ,14,0) 
   55 CALL LMES(-17,18HSESSION SHUT DOWN   ,-1) 
      IF(ITLOG.GT.20) ITLOG=20
      IF(IAND(IPBUF(4),3).NE.0) CALL LMES(-ITLOG,ICMND,-1)
C 
C     SET PURGE FLAG IN HEADER
C 
   60 CALL RNRQ(1,IRN,ISTAT)
      CALL READF(NDCB,IERR,NBUF,128,LEN,1)
      NBUF(30)=-ITYPE 
      NBUF(28)=0
      CALL WRITF(NDCB,IERR,NBUF,128,1)
      CALL RNRQ(4,IRN,ISTAT)
      IPFLG=-ITYPE
      IF(NBUF(29).EQ.0) GO TO 70
      CALL ACLIA(2) 
   70 CALL ACGSP(NALL,IERR,4HDSNP)
      IF(IERR.NE.0) CALL ACGSP(NALL,IERR,4HDS   ) 
      CALL ACGSP(NALL,JERR,4HDJNP ) 
      IF(JERR.NE.0) CALL ACGSP(NALL,JERR,4HDJ   ) 
      CALL READF(NDCB,KERR,NBUF,128,LEN,1)
      IF(IOR(IOR(NBUF(29),IERR),JERR).EQ.0) GO TO 95
      CALL ACWRI(32HTO SHUT DOWN "NOW" WE MUST ABORT  ,16)
      CALL ACWRI(32HTHE ABOVE PROCESSES!!             ,16)
      CALL ACWRI(32H---------------------             ,16)
      CALL ACNVS(40HABORT THE ABOVE PROCESSES (YES OR NO)? _ ,20,0) 
      IF(IPBUF(1).NE.2HYE) GO TO 800
      IF(IPBUF(2).NE.2HS ) GO TO 800
C 
C     MUST ABORT ABOVE SESSIONS,JOBS,AND SPOOLS 
C 
      CALL DTACH
C 
C     SEARCH ACTIVE SESSION BLOCK 
C 
      IREC=LOC(1) 
      ILAST=128*(LOC(2)-IREC) 
      DO 80 IDX=1,ILAST,4 
      LU=IVBUF(IDX,IREC)
      IF(LU.EQ.0) GO TO 80
      LU=IOR(20000B,LU) 
      CALL ACSDN(LU,JERR) 
   80 CONTINUE
C 
C     DISABLE SYSTEM CONSOLE AS SESSION TERMINAL
C 
      CALL ACSDN(0,JERR)
C                  CLEAR IVBUF
      CALL IVBUF
C 
C     ABORT JOBS AND KILL SPOOLS
C 
      CALL ACGSP(NALL,ISD,4HSDNP) 
C 
C     ISD GIVES STATE OF BATCH SPOOL SYSTEM 
C       1    BATCH AND SPOOL UP 
C       2    BATCH AND SPOOL SHUT DOWN
C       3    BATCH SHUT DOWN
C       4    SPOOL SHUT DOWN
C 
      CALL ACGSP(NALL,IERR,4HABNP)
      CALL ACSDN(20377B,JERR) 
      CALL ACGSP(NALL,JERR,4HKSNP)
      CALL ACGSP(NALL,IERR,4HSUNP)
      DO 85 I=1,10
      CALL ACGSP(NALL,IERR,4HABNP)
      CALL ACSDN(20377B,JERR) 
      CALL ACGSP(NALL,JERR,4HKSNP)
      IF(IERR.EQ.0.AND.JERR.EQ.0) GO TO 90
C 
C     WAIT 1 SEC
C 
      CALL EXEC(12,0,1,0,-100)
   85 CONTINUE
C 
C     CANT KILL SPOOLS OR ABORT JOBS
C 
      CALL ACERR(-218)
      GO TO 800 
C 
C     RESET BATCH SPOOL SYSTEM
C 
   90 CALL ACGSP(NALL,IERR,SUCMD(ISD))
C 
C     DISABLE SYSTEM SESSION CONSOLE
C 
   95 CALL ACSDN(0,JERR)
C 
C     TELL LOGON AND LGOFF TO SHUT DOWN 
C 
      CALL ACSES(-2)
      IERR=0
      RETURN
C 
C     CHECK FOR PARAMATERS
C 
  100 CALL NAMR(JPBUF,ICMND,80,ISTRC) 
      IF(IAND(JPBUF(4),3).NE.1) GO TO 700 
      LU=JPBUF(1) 
  150 IERR=-222 
      IF(LU.LT.0.OR.LU.GT.255) GO TO 500
      IERR=-223 
      IF(LU.EQ.LUTRU(1)) GO TO 500
      LU=IOR(20000B,LU) 
      DO 300 I=1,3
      CALL NAMR(JPBUF,ICMND,80,ISTRC) 
      DO 200 J=1,12,2 
      IF(JPBUF(1).EQ.ICOM(J)) GO TO 300 
  200 CONTINUE
C 
C     NOT A LEAGAL RESPONSE 
C 
      GO TO 500 
C 
C     MERGE BIT 
C 
  300 LU=IOR(LU,ICOM(J+1))
C 
C     GO SCHEDULE LGOFF 
C 
      CALL ACSDN(LU,IERR) 
      IF(IERR.NE.0) GO TO 500 
      IERR=0
      RETURN
C 
C     ACERR RETURN
C 
  400 IERR=-223 
  500 CALL ACERR(IERR)
      RETURN
  600 IF(ITYPE.EQ.1) GO TO 700
  610 CALL ACNVS(38HPURGE EXISTING ACCOUNTS (YES OR NO)? _  ,19,0)
      GO TO 750 
C 
C     SESSION WIDE SHUT DOWN
C 
  700 CALL ACNVS(66HDO YOU REALLY WANT TO SHUT DOWN THE SESSION SYSTEM  * 
     1(YES OR NO)? _,33,0)
  750 IERR=-218 
      IF(IPBUF(1).EQ.2HNO) RETURN 
      IF(IPBUF(1).NE.2HYE.OR.IPBUF(2).NE.2HS ) GO TO 600
      IF(JPBUF(1).EQ.2HRE) ITYPE=4
      IERR=0
      GO TO 50
  800 CALL ACWRI( 
     1 48HWAITING FOR SESSIONS,JOBS,AND SPOOLS TO COMPLETE  ,24)
      IERR=-218 
      RETURN
      END 
                                                                                          