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 C SOURCE PART NUMBER : 92067-18360 C C RELOCATABLE PART NUMBER : 92067-16361 C C PROGRAMER(S) : J.M.N. C PROGRAM ACCTS(20,90),92067-16361 REV.2013 800131 C C C C C C DESCRIPTION: C C C C C ACCOUNT FILE STRUCTURE: C C C ACERR CODES: C 12 LU NOT IN SESSION SWITCH TABLE C 13 TRANSFER STACK OVERFLOW C -07 NOT LOGGED ON AS SYSTEM MANAGER C -200 ACCOUNT NOT FOUND C -201 NO FREE ACCOUNTS C -202 ACCOUNT WITH THIS NAME ALREADY EXISTS C -203 INVALID ACCOUNT NAME C -204 INVALID PASSWORD C -205 INVALID COMMAND C -206 INVALID FILE NAME C -207 INVALID CAPABILITY C -208 INVALID DISC LIMIT C -209 INVALID SST ENTRY C -210 CONFLICT IN SST DEFINITION C -211 USER OR GROUP ID NOT AVAILABLE C -212 INVALID NUMBER OF SST SPARES C -215 LIST NAMR IN TRANSFER STACK C -218 SESSION NOT SHUT DOWN C -219 NOT ENOUGH ROOM IN FILE FOR NEW TABLE C -220 CORRUPT STATION TABLE SPARES C -221 NOT AN ACTIVE SESSION C -222 ILLEGAL SYSTEM LU C -223 ILLEGAL SHUT DOWN PARAMETER C -225 SESSION MEMORY CAN NOT BE C RETURNED TO SYSTEM (REBOOT) C C C C LOGICAL XFTTY,LOFLG DIMENSION IAB(2),LUX(2),IPARM(5) COMMON /ACOM1/NDCB(272),NBUF(256) COMMON /ACOM2/ LRTRN,LRTR2,LGOTO,ITYPE,ITTYT,LTOSEG,NAMSG(12) COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOM4/ICMND(40),NAMPR(3),ICLFG,NMPR3 COMMON /ACOM5/LOWUS,IHIGR COMMON /ACOM6 /LOC(6),IRN,IPFLG COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) COMMON /ACOM8/LASTP(40),LENP COMMON /ACOM9/IBUF(40),JBUF(96) COMMON /ACOMA /ISRCH,ISR1,ISR2 COMMON /ACOMB /ISTK(90),IPT COMMON /ACOMC/IECHO,LULOG,ITLOG COMMON /ACOMD/ICLASS,KPB,KRR,KRRR,IDSES,MYCAP,MYDIR,MYGID DATA IERR / 0 / DATA LUX / 0,0 / DATA IPARM / -1,0,0,0,0 / CALL RMPAR(IPBUF) CALL PNAME(JBUF) NAMSG(1)=JBUF(1) NAMPR(1)=JBUF(1) NMPR3=JBUF(3) ITYPE=IPBUF(1)-1 ITTY=0 IF(ITYPE.GE.0) ITTY=ITYPE+1 IF(ITYPE.NE.-2) GO TO 4 C C IF CLEAN UP OR INITIALIZE THEN DETACH C CALL DTACH GO TO 5 C C ELSE SET TYPE TO 0 C 4 ITYPE=0 C C SET ORIGINAL INPUT TO LOGLU C 5 LULOG=LOGLU(LULOG) IF(ITTY.LE.0.OR.ITTY.GE.255) ITTY=LULOG IF(XFTTY(ITTY)) LULOG=ITTY ITTY=LUTRU(ITTY) LULOG=LUTRU(LULOG) ISTK(1)=ITTY C C SET UP INPUT FILE C C C GO GET RUN STRING C CALL EXEC(14,1,ICMND,40) CALL ABREG(IA,IB) DO 10 I=IB+1,40 10 ICMND(I)=2H ISTRC=1 CALL NAMR(IPBUF,ICMND,80,ISTRC) CALL NAMR(IPBUF,ICMND,80,ISTRC) IERR=0 CALL ACXFR(ICMND,ISTRC,IERR) IF(IERR.EQ.0) GO TO 20 IF(IERR.EQ.10) IERR=00 CALL ACERR(IERR) C C GO INITIALIZE C 20 LOFLG=.TRUE. KPB=0 ASSIGN 30 TO LRTRN ASSIGN 60 TO LRTR2 CALL ACLNK (2H1 ,1) 30 IF(KPB.NE.-31178) GO TO 40 CALL ACHLP(IPBUF,ISTRC) GO TO 20 C 40 LOFLG=.FALSE. IF(ITYPE.EQ.-4) GO TO 55 C C CREAT ACCOUNTS C IEXIT=0 50 CALL ACMND(IEXIT) IF(IEXIT.EQ.0) GO TO 50 C C FINISH MEMORY INITIALIZATION C 55 ASSIGN 60 TO LRTR2 CALL ACLNK (2H1 ,2) 60 IEXIT=-1 IF(ITYPE.LT.0) GO TO 110 C C VERIFY THE USER'S PASSWORD C IF(LOFLG.AND.IDSES.EQ.0) CALL ACPAS C C ENTER THE COMMAND LOOP C IPCNT=0 IEXIT=0 100 CALL ACMND(IEXIT) C C GO CLEAN UP FILE C 110 ASSIGN 120 TO LRTRN IF(IPFLG.EQ.0) GO TO 120 IF(IPFLG.GT.1) GO TO 115 CALL ACLNK(2H1 ,3) C 115 IPFLG=IPFLG-1 C C CLEAN UP CLASS BUFFERS C 120 ICLFG=-1 CALL EXEC(100025B,ICLASS,JBUF,1) GO TO 150 130 CALL ABREG(ICLFG,IB) IF(0.LE.ICLFG) GO TO 120 150 IF(IEXIT.EQ.0) GO TO 100 CALL ACTRM C C THIS INSTRUCTION IS REQUIRED C SO THAT ACOM5 WILL BE INCLUDED C INTHE MAIN WHEN ACCTS IS RELOCATED C AT GENERATION TIME. WE LUCKED OUT ON C OTHER NAMED COMMONS. C 250 IH=IHIGR END BLOCK DATA GLOBL LOGICAL ISRCH INTEGER SETBUF(128) COMPLEX SNAME(3) COMMON /ACOM1/NDCB(272),NBUF(256),MBUF(256) COMMON /ACOM2/ LRTRN,LRTR2,LGOTO,ITYPE,ITTYT,LTOSEG,NAMSG(12) COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOM4/ICMND(40),NAMPR(3),ICLFG,NMPR3 COMMON /ACOM5/LOWUS,IHIGR,ITRN COMMON /ACOM6 /LOC(6),IRN,IPFLG,IRN2,IDSZE COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) COMMON /ACOM8/LASTP(40),LENP COMMON /ACOM9/IBUF(40),JBUF(96) COMMON /ACOMA /ISRCH,ISR1,ISR2,ISR3,ISR4 COMMON /ACOMB /ISTK(90),IPT COMMON /ACOMC/IECHO,LULOG,ITLOG,KECHO,IERFG,KERRB(8),LLST(4) COMMON /ACOMD/ICLASS,KPB,KRR,KRRR,IDSES,MYCAP,MYDIR,MYGID,ICRN EQUIVALENCE (LDCB(17),SETBUF) EQUIVALENCE (NAMSG,SNAME) DATA ISRCH/.FALSE./ DATA IPFLG,ICLFG /0,-1/ DATA KERRB / 2HHE,2H, ,2HAC,2HCT,2H00,2H00,2H , ,2H / DATA IECHO/ 0 / DATA SNAME / 8H ,8HSEGMENT ,8HMISSING / DATA KECHO/ 400B / DATA IPT / 0 / DATA LIST(1) / -1 / DATA NAMSG /2HAC,2HCT,2HS / DATA NAMPR /2HAC,2HCT,2HS / DATA SETBUF /2HNE,2H,G,2HR ,0 ,2HSY,2HS ,0 ,2H/E,0 ,2HNE, * 2H,G,2HR ,0,2HSU, 1 2HPP,2HOR,2HT ,0 ,2H/E,0 ,2HNE,2H,G,2HR ,0 ,2HGE,2HNE, 2 2HRA,2HL ,0 ,2H/E,0 ,2HNE,2H,U,2HS ,0 ,2HMA,2HNA,2HGE, 3 2HR ,0 ,2HSY,2HS ,0,2HY ,0,2HPA,2HSS,2HWO,2HRD,2H ,0,2H , 4 0 ,2H63,0 ,2H10,0 ,2H/E,0 ,2H10,0 ,2H ,0 ,2H/E, 5 0 ,2HNE,2H,U,2HS ,0 ,2HEN,2HGI,2HNE,2HER,0 ,2HSU,2HPP, 6 2HOR,2HT ,0 ,2HY ,0 ,2HHP,2H31,2H17,2H8 ,0 ,2H ,0 , 7 2H63,0 ,2H10,0 ,2H/E,0 ,2H10,0 ,2H ,0 ,2H/E,0 , 8 2HEX,0 ,2H ,2H ,2H ,2H ,2H ,2H ,2H ,2H ,2H ,2H , 9 2H ,2H ,2H ,2H ,2H ,2H ,2H ,2H ,2H ,2H ,2H ,2H , A 2H ,2H ,2H ,2H / END C C ACCT1 - ROUTINE TO PERFORM SESSION MONITOR INITIALIZATION C C CALLING SEQUENCE: CALL ACLNK (2H1 ,1) C FOR FILE INITIALIZATION C CALLING SEQUENCE: CALL ACLNK (2H1 ,2) C FOR MEMORY INITIALIZATION C CALLING SEQUENCE: CALL ACLNK (2H1 ,3) C FOR MEMORY RELEASE C C IF ITYPE < 0 THEN BOOTUP C C C ACERRS: FMP ACERR (ACOPN,READF,WRITF) C C SEQUENCE OF OPERATIONS: C 1. OPEN THE ACCOUNT FILE C 2. ALLOCATE GLOBAL RESOURCE NUMBER IF NOT YET ALLOCATED C 3. READ LOCATION WORDS FROM HEADER TO COMMON C 4. READ LOWEST USER ID, HIGHEST GROUP ID TO COMMON C C PROGRAM ACCT1(5),92067-16361 REV.2001 791020 COMPLEX BUF13(2),MESG1(3),MESG2(3) DIMENSION IBF12(8) COMMON /ACOM1/NDCB(272),NBUF(256),MBUF(256) COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) COMMON /ACOM4/ICMND(40) COMMON /ACOM9/IBUF(40),JBUF(96) COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOM5/LOWUS,IHIGR COMMON /ACOM6 /LOC(6),IRN,IPFLG,IRN2,IDSZE COMMON /ACOMC/ IECHO,LULOG,ITLOG COMMON /ACOMD/ICLASS,KPB,KRR,KRRR,IDSES,MYCAP,MYDIR,MYGID,ICRN COMMON /ACOM2/ LRTRN,LRTR2,LGOTO,ITYPE,ITTYT,LTOSEG,NAMSG(3) EQUIVALENCE (BUF13,IBF12(2)),(IPBUF,IPB) C DATA BUF13,IBF12 /8HPLEASE L ,8HOG-ON: _ ,-16 / C DATA MESG1 / 8H ,8HWORDS RE,8HQUESTED / DATA MESG2 / 8H ,8HWORDS AV,8HAILABLE / ASSIGN 10 TO LTOSEG 10 GO TO (50,4995,8000,5000),LGOTO C C OPEN ACCOUNT FILE C 50 IDSES=0 CALL ACOPN(IERR,IDSES) ITTYT=ITTY IF(IERR.GE.0) GO TO 5000 IF(IERR.EQ.-6) GO TO 100 CALL ACERR(IERR) CALL ACTRM C C SET IDSES TO SYSTEM MANAGER TO CREATE C ACCOUNTS FILE C 100 IDSES=7777B CALL ACWRI(24HSESSION NOT INITIALIZED ,12) IF(ITYPE.LT.0) CALL ACTRM C C PROMPT FOR LOAD OR INITIALIZE C 125 CALL ACNVS(24HENTER IN,LO,HE OR /TR _ ,12,0) IF(IPB.NE.2HHE) GO TO 127 KPB=-31178 GO TO LRTRN C 127 IF(IPB.EQ.2HIN) GO TO 150 IF(IPB.EQ.2H/E.OR.IPB.EQ.2H/A) GO TO 200 IF(IPB.NE.2HLO) GO TO 125 CALL NAMR(LIST,ICMND,80,ISTRC) LIST(4)=IAND(LIST(4),3) IF(LIST(1).EQ.0.AND.LIST(4).EQ.1) GO TO 135 CALL ACOPL(IERR,1,0) IF(IERR.EQ.0) GO TO 140 130 CALL ACERR(IERR) GO TO 125 135 IERR=12 GO TO 130 C C ALLOCATE RESOURCE NUMBERS C 140 CALL RNRQ(24B,IRN,ISTAT) CALL RNRQ(24B,IRN2,ISTAT) C C SET OLD SIZE OF DISC POOL TO 0 C IDSZE=0 C C SET ITYPE TO LOAD C ITYPE=-4 C C GO LOAD THE ACCOUNTS FILE C CALL ACLNK (2H2 ,3) C C C GO INTERACTIVE TO INITIALIZE SESSION'S FILE C PROMPT FOR CRN C 150 CALL ACNVS(32HENTER DISC LU FOR ACCTS FILE : _ ,16,0) ICRN=IPBUF(1) IF(ICRN.EQ.2H/A ) GO TO 200 IF(ICRN.GT.0) ICRN=-ICRN C C PROMPT FOR SESSION LIMIT C CALL ACNVS(16HSESSION LIMIT? _,8,0) IF(IPBUF(1).NE.2H/A) GO TO 300 200 ITYPE=-1 GO TO LRTR2 300 ISL=IPBUF(1) IF(IPBUF(4).NE.1) ISL=16 C C PROMPT FOR SESSION MEMORY ALLOCATION C 400 CALL ACNVS(38HSESSION MEMORY ALLOCATION? (Y OR N) _,19,0) IF(IPBUF(1).EQ.2H/A) GO TO 200 IF(IPBUF(1)/256.EQ.116B) GO TO 500 450 MEM=70-ISL IF(MEM.LT.50) MEM=50 MEM=-MEM*ISL GO TO 600 500 CALL ACNVS(28HNO. OF WORDS TO ALLOCATE? _,14,0) IF(IPBUF(1).EQ.2H/A) GO TO 200 MEM=IPBUF(1) C C IF MEMORY TO SMALL FOR 1 SESSION USE SESSION ALLOCATION C IF(MEM.LT.50) GO TO 450 C C PROMPT FOR NUMBER OF ACCOUNTS C 600 CALL ACNVS(26HNUMBER OF USER ACCOUNTS? _,13,0) IF(IPBUF(1).EQ.2H/A ) GO TO 200 IACCTS=IPBUF(1)+IPBUF(1)/5 CALL ACNVS(28HNUMBER OF GROUP ACCOUNTS? _,14,0) IF(IPBUF(1).EQ.2H/A) GO TO 200 IACCTS=(((IACCTS+IPBUF(1))/8)+1)*8-1 IAST=(ISL-1)/32+2 IF(IAST.LT.3) IAST=3 ICNGT=ISL/2+1 ISIZE=IACCTS/2+1+IACCTS/8+IAST+ISL+5 CALL ACCRE(NDCB,2H+@,ISIZE,IERR) IF(IERR.GE.0) GO TO 700 CALL ACWRI(8HCREAT _,4) CALL ACERR(IERR) CALL ACTRM C C C PROMPT FOR MESSAGE FILE NAMR C 700 CALL ACNVS(22HSYSTEM MESSAGE FILE? _,11,0) IF(IPBUF(1).EQ.2H/A) GO TO 7000 J=6 DO 800 I=1,6 IF(I.NE.5) J=J+1 800 NBUF(J)=IPBUF(I) C IPBU4=IAND(IPBUF(4),3) IF(IPBU4.EQ.3) GO TO 820 IF(IPBU4.EQ.0) GO TO 810 CALL ACERR(-206) GO TO 700 C C SET DEFAULT C 810 NBUF(6)=2H NBUF(7)=2H NBUF(8)=2H C C PROMPT FOR NAME OF PROMPT STRING C 820 CALL ACPRM(14HPROMPT STRING? ,7) CALL ACREI(NBUF(13),IERR) IF(NBUF(13).EQ.2H/A) GO TO 7000 IF(NBUF(13).EQ.2H .AND.ITLOG.LE.2) GO TO 850 IWRD=ITLOG/2 LAROW=77B IF(MOD(ITLOG,2).EQ.0) LAROW=37400B NBUF(13+IWRD)=NBUF(13+IWRD)+LAROW IF(ITLOG.GT.19) ITLOG=19 NBUF(12)=-ITLOG-1 GO TO 1000 C C PUT IN DEFAULT PROMPT STRING C 850 J=12 DO 900 I=1,11 NBUF(J)=IBF12(I) 900 J=J+1 C C SET UP PROMPT STRING C 1000 CALL LMES(NBUF(12),NBUF(13),0) C C C PROMPT FOR LOCATION OF MESSAGE FILES C CALL ACNVS(28HLOCATION OF MESSAGE FILES? _,14,0) IF(IPBUF(1).EQ.2H/A) GO TO 7000 NBUF(28)=-ISL NBUF(31)=-ISL NBUF(29)=0 NBUF(30)=0 NBUF(26)=IPBUF(1) NBUF(23)=4095 NBUF(24)=0 NBUF(25)=0 NBUF(27)=MEM C C CLEAR REST OF BUFFER C DO 1100 I=32,128 1100 NBUF(I)=0 C LOC(1)=2 LOC(2)=IAST+2 LOC(3)=LOC(2)+ICNGT C C C WRITE MOST OF HEADER C CALL WRITF(NDCB,IERR,NBUF,128,1) C C CHECK FOR ACERR C IF(IERR.LT.0) GO TO 6000 C C DEFINE STATION CONFIGURATION C 1200 CALL ACNVS(34HSTATION CONFIGURATION (Y OR N)? _,16,0) IF(IPBUF(1).EQ.2H/A ) GO TO 7000 I=1 IREC=LOC(2) IF(IPBUF(1)/256.NE.131B) GO TO 2350 1300 J=2 CALL ACNVS(14HSTATION LU? _,7,0) IF(IPBUF(1).EQ.2H/E) GO TO 2300 IF(IPBUF(1).EQ.2H/A ) GO TO 1200 LU=IPBUF(1)-1 IF(LU.GE.0.AND.LU.LT.99) GO TO 1400 CALL ACERR(-209) GO TO 1300 1400 JBUF(J)=256*LU J=J+1 1500 CALL ACNVS(22HSESSION LU,SYSTEM LU? ,11,0) IF(IPBUF(1).EQ.2H/A ) GO TO 1300 IF(IPBUF(1).EQ.2H/E) GO TO 2100 LU2=IPBUF(1)-1 CALL NAMR(IPBUF,ICMND,80,ISTRC) LU=IPBUF(1)-1 IF(LU.LT.254.AND.LU.GE.-1) GO TO 1600 CALL ACERR(-209) GO TO 1500 1600 LU=IAND(255,LU) IF(LU2.GE.3.AND.LU2.LT.63) GO TO 1700 CALL ACERR(-209) GO TO 1500 C C TEST FOR CONFLICT C 1700 IF(J.LE.2) GO TO 1900 DO 1800 JJ=2,J-1 IF(LU2.EQ.IAND(JBUF(JJ),377B)) GO TO 2000 1800 CONTINUE 1900 JBUF(J)=256*LU+LU2 J=J+1 GO TO 1500 C C TELL ABOUT CONFLICT C 2000 CALL ACPRM(22HDUPLICATE SESSION LU ,11) CALL ACNVS(38HOVERRIDE PRIOR DEFINITION (Y OR N)? _ ,19,0) IF(IPBUF(1)/256.EQ.131B) JBUF(JJ)=256*LU+LU2 GO TO 1500 2100 JBUF(1)=J-2 C C C PUT IN FILE C DO 2200 J1=1,J-1 NBUF(I)=JBUF(J1) I=I+1 IF(I.LE.128) GO TO 2200 CALL WRITF(NDCB,IERR,NBUF,128,IREC) IREC=IREC+1 I=1 2200 CONTINUE GO TO 1300 C C C POST LAST OF CONFIGURATION TABLE C 2300 IF(I.LE.1.AND.IREC.NE.LOC(2)) GO TO 2500 2350 DO 2400 J=I,128 2400 NBUF(J)=0 CALL WRITF(NDCB,IERR,NBUF,128,IREC) IREC=IREC+1 2500 LNGCO=IREC-LOC(2) IF(IREC.LT.LOC(3)) IREC=LOC(3) LOC(3)=IREC 2600 J=1 GO TO 2700 2650 CALL ACWRI(20HDISC ALREADY DEFINED ,10) 2700 CALL ACNVS( 16HDISC POOL LU? _,8,0) IF(IPBUF(1).NE.2H/A ) GO TO 2750 CALL ACNVS(30HREDEFINE DISC POOL (Y OR N)? _ ,15,0) IF(IPBUF(1)/256.EQ.131B) GO TO 2600 GO TO 7000 2750 LU=IPBUF(1) IF(LU.EQ.2H/E) GO TO 2800 IF(LU.GE.4.AND.LU.LE.63) GO TO 2775 CALLACERR(-209) GO TO 2700 C 2775 DO 2780 JJ=1,J-1 IF(NBUF(JJ).EQ.LU) GO TO 2650 2780 CONTINUE C NBUF(J)=LU J=J+1 IF(J.EQ.129) GO TO 3000 GO TO 2700 2800 DO 2900 J1=J,128 2900 NBUF(J1)=0 C C C WRITE DISC POOL C 3000 CALL WRITF(NDCB,IERR,NBUF,128,IREC) IREC=IREC+1 IF(LU.NE.2H/E) GO TO 2600 LOC(4)=IREC C C C CLEAR ID TABLE C DO 3100 J1=2,256 3100 NBUF(J1)=0 C C ID=0 IS NOT ALLOWED C NBUF(1)=1 CALL WRITF(NDCB,IERR,NBUF,256,IREC) IREC=IREC+2 LOC(5)=IREC LOC(6)=IREC+IACCTS/8+1 C C C INITIALIZE THE ACCOUNT DIRECTORY C DO 3200 J1=1,113,16 3200 NBUF(J1)=-1 C 3300 IF(IREC.GE.LOC(6)-1) GO TO 3400 CALL WRITF(NDCB,IERR,NBUF,128,IREC) IREC=IREC+1 GO TO 3300 C C WRITE FINAL DIRECTORY RECORD C 3400 NBUF(113)=0 CALL WRITF(NDCB,IERR,NBUF,128,IREC) IREC=IREC+1 LOC(6)=IREC C C C UPDATE LOCATIONS IN HEADER C CALL READF(NDCB,IERR,NBUF,128,LEN,1) DO 3500 I=1,6 3500 NBUF(I)=LOC(I) CALL RNRQ(24B,IRN,ISTAT) CALL RNRQ(24B,IRN2,ISTAT) NBUF(25)=IRN NBUF(34)=IRN2 NBUF(33)=LNGCO CALL WRITF(NDCB,IERR,NBUF,128,1) C C COMPUTE AMOUNT TO TRUNCATE C ITRN=ISIZE-5*NBUF(6)+4*NBUF(5) C C PROMPT FOR PASSWORD FOR MANAGER.SYS C CALL ACPSN(28HPASSWORD FOR MANAGER.SYS? _,14,IPBUF,IERR) IF(IERR.NE.0) GO TO 7000 JJ=62 DO 3600 I=2,6 LDCB(JJ)=IPBUF(I) 3600 JJ=JJ+1 C INITIALIZE ACCOUNTS: C (1) SYS C (2) SUPPORT C (3) GENERAL C (4) MANAGER.SYS C (5) ENGINEER.SUPPORT C C ITTY=-1 C LOWUS=4095 IHIGR=0 3700 GO TO LRTRN 4995 ITTY=ITTYT IF(ITYPE.EQ.-4) GO TO 4996 C C TRUNCATE FILE AND RENAME C CALL CLOSE(NDCB,IERR,ITRN) CALL NAMF(MBUF,IERR,6H++CCT!,6H+@CCT!,-31178,-2,IDUM,70707B) CALL ACOPN(IERR,IDSES) C C RELAESE RESOURCE NUMBER C GO TO 4997 4996 ITYPE=0 C C IF $DSCS NOT -1 RN'S WONT BE REASSIGNED C 4997 CALL ACINT(ISTAT) IF(ISTAT.NE.-1) GO TO 5000 CALL RNRQ(44B,IRN,ISTAT) CALL RNRQ(44B,IRN2,ISTAT) C C READ ACCOUNT FILE HEADER RECORD C 5000 CALL READF(NDCB,IERR,NBUF,128,LEN,1) C C IF RN'S ALLOCATED THEN SET IRN C AND REREAD HEADER C IRN=NBUF(25) CALL ACINT(ISTAT,JSTAT) IF(ISTAT.EQ.-1) GO TO 5010 CALL RNRQ(1,IRN,ISTT) CALL READF(NDCB,IERR,NBUF,128,LEN,1) C 5010 IF(LGOTO.NE.4) GO TO 5020 NBUF(30)=1 NBUF(28)=NBUF(31) JSTAT=0 C C SET NO WAIT AND DON'T RELEASE CLASS# BITS C 5020 CALL WRITF(NDCB,IERR,NBUF,128,1) C C MOVE LOCATION WORDS, LOWEST USER ID,HIGHEST GROUP ID, C AND RESOURCE NUMBER FROM HEADER TO COMMON C DO 5050 I=1,6 LOC(I)=NBUF(I) 5050 CONTINUE LOWUS=NBUF(23) IHIGR=NBUF(24) IRN2=NBUF(34) MEM=NBUF(27) IPFLG=NBUF(30) ICLASS=NBUF(32) ISL=-NBUF(31) IDSZE=NBUF(35) C C IF SHUT DOWN DONT CHANGE PROMPT STRING C IF(JSTAT.LT.0) GO TO 5051 C C SET PROMPT STRING C CALL LMES(NBUF(12),NBUF(13),0) IF(IPFLG.LT.0) CALL LMES(-17,18HSESSION SHUT DOWN ,-2) C C ALLOCATE GLOBAL RESOURCE NUMBER IF NOT YET ALLOCATED C 5051 IF(ISTAT.GE.0) GO TO 5800 C C CLEAR NUMBER OF ACTIVE SESSIONS C NBUF(29)=0 IF(ISTAT.EQ.-2) GO TO 5060 CALL RNRQ(21B,NBUF(25),ISTT) CALL RNRQ(24B,NBUF(34),ISTT) C C GET CLASS NUMBER FOR TERMINAL WRITES C ICLASS=0 5055 CALL EXEC(18,0,JBUF,1,JBUF,JBUF,ICLASS) ICLASS=IOR(120000B,ICLASS) NBUF(32)=ICLASS 5060 CALL WRITF(NDCB,IERR,NBUF,128,1) IF(IERR.LT.0) CALL ACERR(IERR) IRN=NBUF(25) IRN2=NBUF(34) C C CLEAR ACTIVE SESSION TABLE 5070 DO 5080 I=1,128 5080 NBUF(I)=0 I1=LOC(1) I2=LOC(2)-1 DO 5090 I=I1,I2 5090 CALL WRITF(NDCB,IERR,NBUF,128,I) C C C FIND MOUNTED POOL DISCS C CALL ACFST(MBUF) CALL READF(NDCB,IERR,NBUF,128,LEN,LOC(3)) DO 5300 I=1,128 IF(NBUF(I).EQ.0) GO TO 5400 DO 5100 J=1,125,4 LUD=LBYTE(MBUF(J)) IF(LUD.EQ.0) GO TO 5300 IF(LUD.EQ.NBUF(I)) GO TO 5200 5100 CONTINUE C C C FOUND A MATCH SO MARK IT C 5200 NBUF(I)=IOR(NBUF(I),100000B) 5300 CONTINUE C C C GO INITIALIZE MEMORY C 5400 IF(MEM.GE.0) GO TO 5450 MEM=-MEM MEMRY=70-ISL IF(MEMRY.LT.50) MEMRY=50 MEMRY=ISL*MEMRY IF(MEMRY.GT.MEM) MEM=MEMRY 5450 ISIZE=MEM+I NBUF(I)=-1 5500 CONTINUE IF(I.EQ.1) I=0 JSIZE=ISIZE IDSZE=0 IF(IPFLG.GE.0) CALL ACINM(ISIZE,MAXEV,NBUF,I,IDSZE) IF(ISIZE.NE.-1) GO TO 5700 CALL ACITA(JSIZE,MESG1,3) CALL ACWRI(MESG1,12) CALL ACITA(MAXEV,MESG2,3) CALL ACWRI(MESG2,12) IF(ITYPE.EQ.-1) GO TO 5600 CALL ACNVS(26HENTER NO. OF WORDS OR /E _,13,0) IF(IPBUF(1).EQ.2H/E) GO TO 5600 ISIZE=IPBUF(1) GO TO 5500 5600 CALL RNRQ(4,IRN,ISTAT) CALL ACTRM 5700 CALL READF(NDCB,IERR,NBUF,128,LEN,1) NBUF(35)=IDSZE CALL WRITF(NDCB,IERR,NBUF,128,1) 5800 CALL RNRQ(4,IRN,ISTAT) C C IF NON-SESSION BYPASS CAPABILTY C TESTS C IF(IDSES.EQ.0) GO TO 5950 C C FIND MY CAPABILTY C MYSES=LUTRU(1) DO 5850 IREC=LOC(1),LOC(2)-1 CALL READF(NDCB,IERR,NBUF,128,LEN,IREC) DO 5850 J=1,128,4 IF(MYSES.EQ.NBUF(J)) GO TO 5900 5850 CONTINUE GO TO 5950 C C FOUND SESSION NOW LOOK UP C GROUP ID C 5900 MYDIR=NBUF(J+3)+1 CALL ACDIR(1,MYDIR,IBUF,IERR) MYGID=IBUF(13) C C NOW GET CAPABILTY C IOFST=0 IREC=IBUF(15) IF(0.GT.IREC) IOFST=64 IREC=IAND(IREC,77777B) CALL READF(NDCB,IERR,NBUF,128,LEN,IREC) MYCAP=NBUF(22+IOFST) C C C RESTART SESSION C 5950 IF(ITYPE.GE.0) CALL ACSES(JSTAT) GO TO LRTR2 C C POST FMP ACERR C 6000 CALL ACERR(IERR) C C PURGE FILE AND RETURN C 7000 CALL ACCRE(NDCB,2H+@,0,IERR) ITYPE=-1 GO TO LRTR2 C C GO CLEAN UP PURGED ACCOUNTS C 8000 CALL ACACP GO TO LRTRN C C DUMMY MAIN CALL C 9999 CALL ACCTS END PROGRAM ACCT2(5),92067-16361 REV.1940 790725 COMMON /ACOM2/ LRTRN,LRTR2,LGOTO,ITYPE,ITTYT,LTOSEG,NAMSG(3) COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOM4/ICMND(40) COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) COMMON /ACOMD/ICLASS,KPB,KRR,KRRR,IDSES,MYCAP,MYDIR,MYGID ASSIGN 100 TO LTOSEG C C CALL THE APPROPRIATE COMMAND ROUTINE C 100 GO TO (200,300,300),LGOTO 200 CALL NAMR(IPBUF,ICMND,80,ISTRC) IF(IAND(IPBUF(4),3).NE.3) GO TO LRTR2 ITEMP=IPBUF(1)/256 IF(ITEMP.EQ.125B) GO TO 210 IF(IDSES.EQ.7777B) GO TO 205 CALL ACERR(46) GO TO LRTRN C 205 IF(ITEMP.EQ.107B) GO TO 220 GO TO LRTR2 210 CALL ACNWU GO TO LRTRN 220 CALL ACNWG GO TO LRTRN 300 CALL ACLOA(LGOTO) GO TO LRTRN C C DUMMY MAIN CALL C 9999 CALL ACCTS END PROGRAM ACCT3(5),92067-16361 REV.1940 790724 COMMON /ACOM2/ LRTRN,LRTR2,LGOTO,ITYPE,ITTYT,LTOSEG,NAMSG(3) COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOM4/ICMND(40) COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) ASSIGN 300 TO LTOSEG 300 GO TO (400,400,400,400,310,320,500),LGOTO 310 CALL ACALU(1) GO TO LRTRN 320 CALL ACALU(2) GO TO LRTRN 400 CALL ACPUU(LGOTO) GO TO LRTRN C C CALL ALTER PASSWORD C 500 CALL ACAPA GO TO LRTRN C C DUMMY MAIN CALL C 9999 CALL ACCTS END PROGRAM ACCT4(5),92067-16361 REV.1940 790725 COMMON /ACOM2/ LRTRN,LRTR2,LGOTO,ITYPE,ITTYT,LTOSEG,NAMSG(3) COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOM4/ICMND(40) COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) ASSIGN 300 TO LTOSEG 300 GO TO (400,450,450,450,440),LGOTO 400 CALL NAMR(IPBUF,ICMND,80,ISTRC) ITEMP=IAND(IPBUF(4),3) IF(ITEMP.EQ.0) GO TO 410 IF(ITEMP.NE.3) GO TO LRTR2 ITEMP=IPBUF(1)/256 IF(ITEMP.EQ.125B) GO TO 410 IF(ITEMP.EQ.107B) GO TO 420 IF(ITEMP.EQ.101B) GO TO 430 GO TO LRTR2 410 CALL ACLIU(1) GO TO LRTRN 420 CALL ACLIU(2) GO TO LRTRN 430 CALL ACLIA(1) GO TO LRTRN 440 CALL ACLIA(2) GO TO LRTRN 450 CALL ACPUA(LGOTO-1,IERR) IF(LGOTO.NE.4) GO TO LRTRN IF(IERR.NE.0) GO TO LRTR2 GO TO LRTRN 9999 CALL ACCTS END PROGRAM ACCT5(5),92067-16361 REV.1940 781213 COMMON /ACOM2/ LRTRN,LRTR2,LGOTO,ITYPE,ITTYT,LTOSEG,NAMSG(3) COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOM4/ICMND(40) COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) COMMON /ACOMD/ICLASS,KPB,KRR,KRRR ASSIGN 400 TO LTOSEG 400 GO TO (500,600,900,1000),LGOTO 500 CALL ACALT GO TO LRTRN 600 CALL ACTEL GO TO LRTRN 900 CALL ACUNL GO TO LRTRN C 1000 CALL ACWRH(KPB,KRR,KRRR) GO TO LRTRN C C DUMMY MAIN CALL C 9999 CALL ACCTS END