SPL,L,O ! NAME: EO.. ! SOURCE: 92067-18242 ! RELOC: 92067-16185 ! PGMR: A.M.G, 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 EO..(8) "92067-16185 REV.1903 790514" ! ! MODIFIED TO WORK WITH SIX WORDS PER ENTRY IN TRANSFER ! STACK (GLM). *780420* ! ! ! LET ONOFF, \ON OFF MESSAGE PRINTER LULU., \LU SWITCH ROUTINE DTACH, \DETACH FROM SESSION ROUTINE READF, \FILE READ ROUTINE LU.CL, \LU SWITCH AND SPOOL CLEAR ROUTINE B.FLG, \BATCH FLAG CLEAR/SET ROUTINE IFBRK, \OPERATOR BREAK ROUTINE WRITF, \FILE WRITE ROUTINE OPEN, \FILE OPEN ROUTINE EXEC, \DARNED IF I KNOW EX.TM, \EXECUTE TIME ROUTINE OPEN., \INTERNAL OPEN ROUTINE CONV., \NUMBER TO ASCII ROUTINE FM.ER, \MESSAGE ROUTINE CLOS., \INTERNAL CLOSE ROUTINE RNRQ, \RESOURCE NUMBER ROUTINE POST \FILE POST ROUTINE BE SUBROUTINE,EXTERNAL ! ! LET L.SEG BE LABEL,EXTERNAL ! LET LUSES, \GET SCB ADDRESS FUNCTION LOGLU \GET LOG LU FUNCTION BE FUNCTION,EXTERNAL ! LET RD,WR,JO.EO BE SUBROUTINE,DIRECT ! LET .DFER BE SUBROUTINE,EXTERNAL,DIRECT ! LET FM.AB BE LABEL,EXTERNAL LET ACTV., \ACTIVE FLAG (INDEX TO TR STACK) P.TR, \POINTER TO CURRENT INPUT UNIT CAMS., \ADDRESS OF TR STACK CAD., \OFF SET OF NEXT SUB IN SEG. TBL. NO.RD, \NO READ FLAG I.BUF, \INPUT DCB BUF., \GENERAL UTILITY BUFFER JOBFL, \ASCII "JOBFIL" J.REC, \JOBFIL REC NO. OF JOB C.BUF, \COMMAND INPUT BUFFER D.R, \ASCII "D.RTR" S.CAP, \SESSION CAPABILITY FLAG TMP., \LIST FILE O.BUF, \OUTPUT DCB CUSE., \CURRENT SEGMENT SUFFIX G0.., \GLOBAL TABLE POINTER CAM.O, \LOG LU JRN., \JOBFIL RN NUMBER CAM.I, \COMMAND INPUT DCB OVRD., \OVERRIDE FLAG TTY. \COMMAND INPUT INTERACTIVE FLAG BE INTEGER,EXTERNAL ! LET .E.R. BE REAL,EXTERNAL ! LET PTR1,PTR2,PTR3,PTR4,PTR5,PTR6, \ TIME,YR,SWTCH,JSTAT BE INTEGER ! !*780420* LET TRENT BE CONSTANT (5) !INDEX TO TR STACK FOR CURRENT FILE LET LIST,BLIST(3) BE INTEGER LET LGOFF(3) BE INTEGER LET LG0 BE REAL LET ABRT(7),FILX,DM,LU BE INTEGER !DEFINE MESSAGE INITIALIZE ABRT,FILX,DM,LU TO " ABEND EOJ IN SSSSSS" INITIALIZE LIST,BLIST TO 1,0,0 INITIALIZE LG0 TO "LG,0" INITIALIZE LGOFF TO "LGOFF " ! LET LEN,SAVE BE INTEGER ! LET XEQT BE CONSTANT(1717K) ! EO..: SUBROUTINE(N,PLIST,ERR) GLOBAL LET PLIST BE REAL LET N,ERR BE INTEGER ASSEMBLE["EXT $SPCR";"LDA $SPCR";"STA SPCR"] !GET SPOOL CR ASSEMBLE["EXT $LGOF";"LDA $LGOF";"STA LGOF"] !GET LOGOFF CLASS RGOP_[SPOP_@PLIST+1]+4 !SET ADDRESSES FOR OPTIONS YR _ [TIME _ [PTR15 _[PTR14 _ [PTR6 _ [PTR5 _ [PTR4 \ _ [PTR3 _ [PTR2 _ [PTR1 _ @BUF.+1]\ + 1] + 1] + 1] + 1] + 1] + 8]+ 1]+ 1] + 5 ! IF ACTV. = 1 THEN GO TO JOCL !IF EXPECTING JOB STMT. GO DO IT IFNOT ACTV. THEN[ \IF NOT ACTV. OR IF AFTER JO CMD. JOCL: IF N < 0 THEN CALL JO.EO, \IF JO CALLING DO EO.JO ELSE[ \ IF ACTV. = 1 THEN GO TO EOOK]; \IF ABORT CALL LET IT GO RETURN] !NOW JUST EXIT NSSW_0 !SET THE LIST OK SWITCH ! IF P.TR=ACTV. THEN GO TO EOOK ! ! EOJ IN A FILE SO ABORT ! CALL .DFER(FILX,$(P.TR-TRENT)) !PUT FILE NAME IN MESSAGE IF FILX< " " THEN CALL CONV.(FILX AND 77K,LU,6) !IF LU CONVERT ! CALL OPEN.(O.BUF,TMP.,$(@TMP.+3),0) !OPEN THE LIST FILE CALL FM.ER(2,ABRT,10) !SENT MESSAGE TO LOG CALL WRITF(O.BUF,.E.R.,ABRT,10) !AND TO THE LIST DEVICE NO.RD,CAD._6 !SET TO CALL THE ABORT ROUTINE GO TO FM.AB !GO ABORT ! EOOK: IFNOT J.REC THEN GOTO EO1 OVRD._ [NSSW _ OVRD.] OR 100000K !SAVE OVERRIDE AND SET NEW ONE OPEN(I.BUF,ERR,JOBFL,3,123456K,SPCR) !OPEN JOBFIL. OVRD. _ NSSW !RESET THE OVERRIDE FLAG POST(I.BUF) RNRQ(1,JRN.,JSTAT) RD(J.REC) !CHANGE JOB STATUS. NSSW_BUF. AND 400K !GET THE NS FLAG FROM JOB REC. $PTR2 _ "CS" SWTCH_0 !IF NO SPOOLS FOR REC_ PTR1+10 TO PTR15 DO[SWTCH_ $REC OR SWTCH] !THEN IFNOT SWTCH THEN BUF._ -1 !PURGE JOB FROM SYSTEM CALL WR CALL RD(17) !GET THE GENERAL WAIT RN CALL RNRQ(4,$PTR14,JSTAT) !LET JOB GO IF NEEDED EO1: ACTV. _ 0 !RESET ACTIVE SWITCH. IFNOT NSSW THEN[ \IF LIST IS ACTIVE EXEC(11,$TIME,$YR); \GET TIME. ONOFF(0,$TIME); \PRINT ENDING CALL EX.TM; \MESSAGES. CALL CLOS.(O.BUF)] !CLOSE THE LIST FILE IFNOT J.REC THEN GOTO NOTJO REC_(J.REC-1)/16 OFF_$1 + @BUF. !COMPUTE BUFFER OFSET OF FLAG CALL RD(REC) !GET THE RECORD SWTCH_$OFF !SAVE CURRENT FLAG WORD $OFF_0 !ZAP IT IN THE QUEUE CALL WR !WRITE THE RECORD BACK OUT CALL RD(1) !NOW UPDATE THE QUEUE HEAD OFF_@BUF.+1 !ADDRESS OF THE QUEUE HEAD $OFF_($OFF XOR SWTCH) AND 377K XOR $OFF CALL WR !WRITE IT OUT POST(I.BUF) RNRQ(4,JRN.,JSTAT) CALL LU.CL !CLOSE ALL SPOOLS. EX.OP_20377K !COMPUTE SIGN OFF OPTIONS IF $RGOP = "RG" THEN EX.OP_EX.OP+40000K IF $SPOP = "RP" THEN EX.OP_EX.OP+100000K FINIS: IF S.CAP THEN CALL DTACH !IF IN SESSION THEN DTACH DO [ \ IFNOT [SID _ LUSES(255)] THEN GO TO CLCLX; \ CLNUM_0; \SET UP A RETURN CLASS CALL EXEC(20,0,0,0,0,0,CLNUM); \GET THE CLASS NUMBER CALL EXEC(20,0,CLNUM,1,EX.OP,SID,LGOF); \LOG OFF DLNUM_CLNUM+20000K; \SET DON'T DEALLOCATE BIT CALL EXEC(100012K,LGOFF); \THE JOB SESSION GO TO SESRT; \ABORT RETURN DEALLOCATE THE # CALL EXEC(21,DLNUM,0,0,I,I,I); \GET MY CLASS PUT SESRT: CALL EXEC(21,DLNUM,0,0,I,F,I); \GET LOGOFF CLASS PUT IF F > 0 THEN GO TO SESRT; \ CLRCL: CALL EXEC(100025K,CLNUM,0,0,I,I,I);\RELEASE THE CLASS NUMBER GO TO CLCLX; \DONE ON ABORT RETURN GO TO CLRCL; \ELSE DO ANOTHER GET \ CLCLX: S.CAP_0] !CLEAR THE CAPABILITY FLAG NOW NOTJO: GN8_[GN1_@G0.. -1]-7 FOR I_ GN8 TO GN1 DO[$I_0] !ZERO THE SPOOL GLOBALS CALL B.FLG(0) !RESET BATCH FLAG. CALL JO.EO !DO JO/EO CLEAN UP IFNOT J.REC THEN [IF N= -2 THEN[\ NO.RD,CAD._1;PLIST_0.0];RETURN] CAD._0;CUSE._"77";GO TO L.SEG !GO TO NEXT JOB EX: RETURN END ! ! JOB/END JOB CLEAN UP ROUTINE ! JO.EO: SUBROUTINE DIRECT LIST _ LOGLU(DUM) CALL .DFER(TMP.,LIST) !RESET THE LIST DEVICE .E.R._0.0 !SET THE SEVERITY CODE TO 0 IFNOT J.REC THEN LULU.(0,0) !CLEAR ALL LU XFORMS GO TO JO1 JO1: CAM.O_401K !SET LOG TO SYS TTY IF TTY. THEN CAM.O_$(@CAM.I+3) PTR4_[PTR3_[PTR2_[PTR1_@G0..+4]+35]+2]+6 FOR I_PTR1 TO PTR2 DO[$I_0] !CLEAR 1G - 9G FOR I_PTR3 TO PTR4 DO[$I_0] !CLEAR 1P - 7P CALL IFBRK !CLEAR ANY BRAKE FLAG RETURN !EXIT DONE END ! ! SUBROUTINE TO READ A 16 WORD JOB FILE RECORD ! RD: SUBROUTINE(R) DIRECT CALL READF(I.BUF,ERR,BUF.,16,LEN,R) !READ THE RECORD W_R !SET WRITE ADDRESS IF ERR THEN GO TO EX RETURN END ! ! ROUTINE TO WRITE THE ABOVE RECORD ! WR: SUBROUTINE DIRECT CALL WRITF(I.BUF,ERR,BUF.,16,W) IF ERR THEN GO TO EX RETURN END END END$