ASMB,R,Q,C  G1CSD  SHUT DOWN/START UP 
      HED G1CDS 
*     NAME:   G1CSD,G1CSU 
*     SOURCE: 92067-18438 
*     RELOC:  92067-16425 
*     PGMR:   G.A.A.
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980.  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.       *
*  ***************************************************************
* 
      NAM G1CSD,8 92067-16425 REV.2013 800102 
* 
      ENT G1CSD,G1CSU 
* 
      EXT G0SDN,G0JDN,G0RTN,.ENTR 
      EXT G0DCB,G0BUF,G0WD2,G0WD9 
      EXT G0W15,G0CAP 
      EXT G1OPN,READF,WRITF,POST,RNRQ,G1CAP,G1CHK 
      EXT EXEC
* 
A     EQU 0 
B     EQU 1 
      SUP 
* 
PBUF3 NOP 
PLEN3 NOP 
IERR3 NOP 
* 
G1CSD NOP 
      JSB .ENTR     FETCH PARAMETERS
       DEF PBUF3
      CLA           CLEAR ERROR RETURN PARM 
      STA IERR3,I 
      LDB PBUF3     INCRE TO PARAM 2
      ADB D4         SINCE PARAM 1 IS "SD"
      LDA B,I 
      STA PBUF3     SAVE PARAMETER 2 INDICATOR
      INB 
      LDB B,I       GET SECOND PARAMETER
      STB SFLAG     SAVE THE SHUT DOWN FLAG 
      JSB G1CAP     GET USER AND PRIV CAP 
      DEF *+2 
      DEF IERR3,I 
      SEZ           ERROR?
      JMP EXIT4     YES 
* 
      LDA PBUF3 
      SZA,RSS       IF NO PARAM 2 
      JMP BOTH       THEN SHUT DOWN SPOOL AND JOBS
* 
      CPA D2
      JMP SDASC 
SDBPR LDA D56        BAD PARAMETER
      JMP EXIT3 
* 
BOTH  STA SFLAG     SET PARAM 2 TO 0
      JMP SDSP       IF NOT SPECIFIED 
* 
SDASC LDA SFLAG     GET PARAM 2 
      CPA "S"       SHUT DOWN SPOOLS? 
      JMP SDSP       YES
      CPA "B"       SHUT DOWN BATCH JOBS? 
      JMP SDBA       YES
      JMP SDBPR     ELSE BAD PARAM
* 
SDSP  JSB OPLOK     TO SHUT DOWN SPOOLS 
       DEF SPCON     OPEN SPLCON AND LOCK RN
* 
      JSB CAP?      ENOUGH CAPABITILITY?
* 
      LDA D3        READ RECORD 3 
      JSB RD        TO MEM
* 
      LDA "D"       OK  SET "D" INTO 1ST WORD 
      CLB 
      CPA G0BUF     WAS IT ALREADY SHUT DOWN? 
      LDB D4        YES, THEN SET FLAG FOR ACCTS PROG 
      STB SPFLG     USED FOR RETURN PARM FOR ACCTS PROG 
      STA G0BUF      OF REC 3 FOR SHUT DOWN 
      STA G0SDN     SET FLAG FOR TERM 
      JSB WR        WRITE THE RECORD BACK 
* 
      JSB ULOKP     NOW UNLOCK RN AND POST FILE 
       NOP
      JSB EXEC      CALL SMP TO DO ACTUAL 
       DEF *+4       SHUTDOWN PROCEDURE 
       DEF S23      =100027B -- NO ABORT
       DEF SMP
       DEF D16
* 
      JMP NOSMP     SMP CANNOT BE SCHEDULED 
* 
      LDA SFLAG 
      SZA            SHUTDOWN BOTH? 
      JMP EXIT4      NO, DONE.
* 
SDBA  JSB OPLOK     OPEN JOBFIL AND LOCK RN 
       DEF JOBFI
* 
      LDA D17       READ JOB RECORD 
      JSB RD        17
* 
      JSB CAP?      DOES HE HAVE IT?? 
* 
      CLB 
      LDA "D"       YES  SET "D" INTO 15TH WORD 
      CPA G0W15     WAS IT ALREADY SHUT DOWN? 
      LDB D3        YES, THEN SET FLAG FOR ACCTS PROG 
      STB BAFLG 
      STA G0W15      AS FLAG FOR BM 
      STA G0JDN     SET FLAG FOR TERM 
      JSB WR        WRITE THE RECORD BACK 
      RSS 
* 
EXIT3 STA IERR3,I 
EXIT4 JSB ULOKP     NOW UNLOCK RN, POST FILE
       NOP
      CLB,INB       SET UP RETURN FLAG FOR ACCTS
      LDA SPFLG     GET SPOOL DOWN FLAG 
      ADA BAFLG     ADD TO IT BATCH DOWN FLAG 
      SZA           EITHER BOTH OR SPOOL OR BATCH WAS DOWN? 
      LDB A         YES, SET RETURN PARAMETER 
      CPB D7        IF BOTH WERE DOWN THEN SEND 
      LDB D2        BACK 2 AS RETURN PARM 
      STB G0RTN     1=NONE DOWN,2=BOTH,3=BA,4=SP
      LDA IERR3,I 
      JMP G1CSD,I   RETURN
* 
NOSMP LDA M48       SMP CANNOT BE SCHEDULED 
      JMP EXIT3 
* 
* 
RD    NOP           COMMON READ ROUTINE  A= RECORD #
      STA REC       SAVE THE RECORD # 
      JSB READF     DO THE READ 
      DEF *+7 
      DEF G0DCB     USE STD. DCB
      DEF IERR3,I   PASS ERRORS TO CALLERS CALLER 
      DEF G0BUF     READ TO COMMON BUFFER 
      DEF D16 
      DEF RUBSH     DON'T NEED RETURN LENGTH
      DEF REC       RECORD NUMBER 
      SSA           IF THERE IS AN ERROR
      JMP EXIT3     EXIT  ERROR IS IN IERR3 
* 
      JMP RD,I      ELSE RETURN 
* 
* 
WR    NOP           SAME TYPE OF THING FOR
      JSB WRITF     USE SAME RECORD NUMBER AS LAST READ 
      DEF *+6 
      DEF G0DCB     COMMON DCB
      DEF IERR3,I 
      DEF G0BUF 
      DEF D16       16 WORD RECORDS 
      DEF REC       RECORD NUMBER 
      SSA           TEST ERROR FLAG 
      JMP EXIT3     ERROR EXIT
* 
      JMP WR,I      ELSE RETURN  READ OK
* 
* 
CAP?  NOP           ROUTINE TO TEST CAPABILITY OF USER
      JSB G1CHK     AGAINST THE PRIVILEGED CAP
      DEF *+2 
      DEF IERR3,I 
      SEZ           ERROR?
      JMP EXIT4     YES, NOT ENOUGH CAPABILITY
* 
      JMP CAP?,I    RETURN
* 
D7    DEC 7 
M48   DEC -48 
SFLAG NOP 
SPFLG NOP 
BAFLG NOP 
REC   NOP 
RUBSH NOP 
      HED G1CSU   START UP SPOOL AND/OR BATCH SYSTEM
PBUF4 NOP 
PLEN4 NOP 
IERR4 NOP 
* 
G1CSU NOP 
      JSB .ENTR     FETCH PARAMETERS
       DEF PBUF4
      DLD IERR4     SET UP TO EXIT
      DST IERR3     THROUGH SHUT DOWN 
      CLA           CLEAR ERROR RETURN
      STA IERR3,I 
      STA SPFLG 
      STA BAFLG 
      JSB G1CAP     GET USER AND PRIV CAPABILITY
      DEF *+2 
      DEF IERR3,I 
      SEZ           ERROR?
      JMP EXIT4     YES 
* 
      JSB EXEC      TELL JOB TO CLEAN UP
      DEF *+4       IN ANY CASE 
      DEF D9        IF BUSY DON'T WAIT
      DEF JOB 
      DEF MD1       -1 CLEAN UP ONLY
      LDB PBUF4     INCRE TO PARAM 2
      ADB D4         SINCE PARAM 1 IS "SU"
      LDA B,I 
      STA PBUF4     SAVE FOR NOW
      INB 
      LDB B,I       GET S OR B FLAG 
      STB SFLAG     SAVE IT 
      JSB G1CAP     GET USER AND PRIV CAP 
      DEF *+2 
      DEF IERR3,I 
      SEZ           IF ERROR
      JMP EXIT4     RETURN
* 
      LDA PBUF4     GET THE 2ND PARM
      SZA,RSS       IF NO PARAM 2 
      JMP BOTHU      THEN START UP SPOOL AND JOBS 
      CPA D2
      JMP SUASC 
* 
SUBPR LDA D56 
      JMP EXIT3 
* 
BOTHU STA SFLAG     SET PARAM 2 TO 0
      JMP SUSP       IF NOT SPECIFIED 
* 
SUASC LDA SFLAG     GET PARAM 2 
      CPA "S"       START UP SPOOLS?
      JMP SUSP       YES
      CPA "B"       START UP BATCH JOBS?
      JMP SUBA       YES
      JMP SUBPR     ELSE BAD PARAM
* 
SUSP  JSB OPLOK     TO START UP SPOOLS
       DEF SPCON     OPEN SPLCON AND LOCK RN
* 
      LDA D3        THEN READ REC 3 
      JSB RD
* 
      LDB G0BUF     IF SHUT DOWN THENHEN
      CPB "D" 
      JSB CAP?      CHECK THIS DUDE OUT.
* 
      CLA           OK HE IS CLEAN SO  CLEAR 1ST WORD 
      STA G0BUF      OF REC 3 FOR START UP
      STA G0SDN     SET GLOBAL FLAG TOO TO LET SMP KNOW.
      JSB WR        WRITE REC BACK TO SPLCON FILE 
* 
      JSB ULOKP     NOW UNLOCK RN AND POST FILE 
       NOP
      JSB EXEC      CALL SMP TO DO ACTUAL 
       DEF *+4       START UP PROCEDURE 
       DEF S23      =100027B -- NO ABORT RETURN 
       DEF SMP
       DEF D17
* 
      JMP NOSMP     SMP CANNOT BE SCHEDULED 
* 
      LDA SFLAG 
      SZA            START UP BOTH? 
      JMP EXIT4      NO, DONE.
* 
SUBA  JSB OPLOK     OPEN JOBFIL AND LOCK RN 
       DEF JOBFI
* 
      LDA D17       READ REC # 17 
      JSB RD
      LDB G0W15     GET CURRENT STATUS
      CPB "D"       IF DOWN NOW THEN
      JSB CAP?      TEST IF THIS DUDE IS OK 
* 
      CLA           YES  HE IS CLEAN SO CLEAR 15TH WORD 
      STA G0W15      AS FLAG FOR BM 
      STA G0JDN     SET LOCAL GLOBAL TOO
      JSB WR        WRITE RECORD BACK 
* 
      JSB EXEC      SCHEDULE FMGR 
       DEF *+4       TO UPDATE JOBS 
       DEF D10
       DEF FMGR 
       DEF MD1      -1 MEANS JOB UPDATE ONLY
* 
SUDN  JMP EXIT4     USE COMMON EXIT CODE
* 
* 
      HED COMMON ROUTINES AND CONSTANTS TO DS,CS,SD,SU
* 
*                   JSB OPLOK 
*                    DEF FILENAME 
*                   <GOOD RETURN, (A)=MEANINGLESS>
* 
OPLOK NOP           OPEN FILE AND LOCK RN 
      LDA OPLOK,I   GET ADDR OF FILE NAME 
      STA FNAME 
      ISZ OPLOK 
      JSB G1OPN      OPEN FILE
       DEF *+4       USING GLOBAL DCB 
       DEF G0DCB
       DEF ULOKP
FNAME  DEF *
* 
      CLA,INA       READ THE
      JSB RD        FIRST RECORD
      LDA G0BUF     GET FIRST WORD OF RECORD
      STA RNWD       WHICH SHOULD BE RN LOCK WORD 
      JSB POST      MAKE SURE READS 
      DEF *+2       ARE CLEAN.
      DEF G0DCB 
* 
      JSB RNRQ      LOCAL LOCK RN TO US 
       DEF *+4
       DEF RNLOK
       DEF RNWD 
       DEF RNSTT
* 
      JMP OPLOK,I   RETURN
* 
* 
* 
* 
*                   JSB ULOKP 
*                    <ERROR RETURN> 
*                   <GOOD RETURN> 
* 
ULOKP NOP           UNLOCK RN, POST FILE DCB
      LDA RNSTT     MAKE SURE RN IS NOT 
      CPA D1        ALREADY UNLOCKED. 
      JMP ULOK1     IF SO - DON'T TRY IT. 
      JSB POST      POST FILE BUFFER
       DEF *+2
       DEF G0DCB
      JSB RNRQ      UNLOCK RN 
       DEF *+4
       DEF RNULK
       DEF RNWD 
       DEF RNSTT
ULOK1 ISZ ULOKP 
      JMP ULOKP,I   RETURN
* 
* 
D1    DEC 1 
D2    DEC 2 
D3    DEC 3 
D4    DEC 4 
D9    DEC 9 
D16   DEC 16
D17   DEC 17
D10   DEC 10
D56   DEC 56
S23   OCT 100027
MD1   DEC -1
* 
RNSTT DEC 1 
RNWD  NOP 
TEMP  NOP 
RNLOK OCT 1 
RNULK OCT 4 
"B"   ASC 1,B       "B "
"D"   OCT 104 
"S"   ASC 1,S       "S "
SMP   ASC 3,SMP 
FMGR  ASC 3,FMGR
JOBFI ASC 3,JOBFIL
JOB   ASC 3,JOB 
SPCON ASC 3,SPLCON
* 
      BSS 0         SIZE
      END 
                                              