C.. ABC.FTN BOHDEN K. CMAYLO JUL 1982 C.. C.. ACCOUNT BLOCK COUNTER PLUS ACCOUNTER "/AC" C.. BYTE UIC(6),PASS(6),LNAME(15),FNAME(12),DATEX(12),DEV(5) BYTE INDATE(9),MFILE(26),INDEV(8,20),INMCR(80) DIMENSION KINDEV(21),INUIC(2),MBLKS(2,3),INUICS(2,1000) DIMENSION XINMCR(10) DOUBLE PRECISION ODEV,DEVR EQUIVALENCE (XINMCR,INMCR),(DEV,DEVR) DATA MFILE/17*' ','/',8*' '/ C.. C.. GET OPTIONS, IF ANY, PLUS DATEX C.. IQ=ISTXQT(INMCR) CALL DATE(INDATE) C.. C.. CHECK IF ANY OPTIONS, IF NONE, BYPASS SECTION C.. C.. UNIT DEFINITIONS C.. LST = TI:=5, ABC.LST=4 C.. BLOCKS = 1 (*.DIR), 2 (INDEXF.SYS) C.. GETACN = 3 (RSX11.SYS), 6= SCRATCH C.. LOGRESET = 3 (LOGGER.1ST), 6 (LOGGER.LOG) C.. INAC=3 C..(KBLOCK USES 1 AND 2) ISCR=6 LST=5 C.. INDEXF C.. 0 = REGULAR OPEN/ENTRY, CLOSE/EXIT C.. 1 = OPEN/ENTRY, DO NOT CLOSE, INDEXF SET TO 2 C.. 2 = PREVIOUSLY OPENED, DO NOT OPEN C.. 3 = PREVIOUSLY OPENED, CLOSE/ENTRY, OPEN NEW, INDEXF SET TO 2 C.. INDEXF=1 IACNT=0 NFILET=0 NFILEI=0 NTOTT1=0 NTOTI1=0 NTOTT2=0 NTOTI2=0 KDEV=0 LNAME(15)=',' C.. FLAG FOR ACCOUNT INFO IF(IQ.LE.0) GO TO 100 C.. C.. OPTIONS ARE "DDuu:,DDnn:,...,DDmm:" C.. OR "DDuu:,...,DDnn:/PR/NA" FOR NO ACCOUNT INFO OR FILE LIST C.. OR "/AC(/NZ/ZA/RE)" FOR ACCOUNT LOGIN/LOGOUT INFO C.. (/NZ = DO NOT ZERO ACCOUNT FILE, /ZA = REPORT ZERO ACCOUNTS) C.. (/RE = RESET LOG DUE TO CRASH) C.. C.. TEST FOR LIST GOING TO ABC.LST (/PR,) C.. IF(GETSWI('/PR',INMCR,IQ).EQ.0) GO TO 111 LST=4 CALL ASSIGN(LST,'ABC.LST') C.. C.. TEST FOR GET ACCOUNTING LOG C.. 111 IF(GETSWI('/AC',INMCR,IQ).EQ.0) GO TO 112 C.. C.. PERFORM ACCOUNT... NO OTHER OPTIONS EXCEPT '/NA/ZA/RE' COUNT C.. IF(GETSWI('/NZ',INMCR,IQ).NE.0) LST=-LST IF(GETSWI('/ZA',INMCR,IQ).NE.0) INAC=-INAC C.. RESET ONLY, OVERRIDES EVERYTHING IF(GETSWI('/RE',INMCR,IQ).NE.0) LST=0 CALL PRTLOG(LST,INAC,ISCR) CALL EXIT 112 CONTINUE C.. C.. TEST FOR NO ACCOUNT INFO (/NA), JUST BLOCKS C.. IF(GETSWI('/NA',INMCR,IQ).NE.0) IACNT=1 IF(IQ.LE.0.AND.IACNT.EQ.1) GO TO 199 IF(IQ.LE.0) GO TO 100 IX=1 DO 1 I=1,IQ IF(INMCR(I).NE.':') GO TO 1 C.. C.. SAVE DEVICE TYPE C.. KDEV=KDEV+1 INDEV(3,KDEV)='0' INDEV(4,KDEV)='0' INDEV(5,KDEV)=':' IF(INMCR(IX).EQ.',') IX=IX+1 INDEV(1,KDEV)=INMCR(IX) INDEV(2,KDEV)=INMCR(IX+1) IXX=2 IF(I-IX.EQ.4) INDEV(3,KDEV)=INMCR(IX+IXX) IF(I-IX.EQ.4) IXX=IXX+1 IF(I-IX.GE.3) INDEV(4,KDEV)=INMCR(IX+IXX) IX=I+1 1 CONTINUE IF(KDEV.LE.0) GO TO 199 C.. C.. GET ALL UICS FOR ALL DEVICES C.. KINDEV(1)=1 DO 2 I=1,KDEV IK=I CALL GETUIC(IK,INDEV,INUICS,KINDEV) KINDEV(I+1)=KINDEV(I)+1 2 CONTINUE C.. C.. PROCEED WITH REGULAR PROGRAM C.. 100 IF(IACNT.NE.0) GO TO 200 NUMBER=0 CALL GETACN(INAC,NUMBER,UIC,PASS,LNAME,FNAME,DATEX,LOGIN,DEV) DEV(5)=':' ODEV=DEVR ICNTP=9999 GO TO 336 11 CALL GETACN(INAC,NUMBER,UIC,PASS,LNAME,FNAME,DATEX,LOGIN,DEV) 336 IF(NUMBER.LE.0) GO TO 200 DECODE(6,6,UIC)INUIC(1),INUIC(2) 6 FORMAT(2O3) DEV(5)=':' C.. C.. CHECK FOR DEVICE THEN GET BLOCK COUNT C.. IF(ODEV.NE.DEVR) INDEXF=3 CALL BLOCKS(INUIC,MBLKS,DEV,INDEXF) C.. SET NEW DEVICE ODEV=DEVR ICNTP=ICNTP+1 IF(ICNTP.LE.50) GO TO 12 ICNTP=0 WRITE(LST,10)INDATE 10 FORMAT('1',44X,'A B C REPORT DONE ON ',9A1// 1 ' UIC NAME',27X,'DDnn: FILES',7X,'BLOCKS'/) 12 CONTINUE CALL DEVAAA(MBLKS(1,1),MBLKS(2,1),MFILE(1)) CALL DEVAAA(MBLKS(1,2),MBLKS(2,2),MFILE(10)) CALL DEVAAA(MBLKS(1,3),MBLKS(2,3),MFILE(19)) WRITE(LST,3)INUIC,LNAME,FNAME,DEV,MFILE 3 FORMAT 1(1X,'[',O3,',',O3,']',1X,27A1,4X,5A1,26A1) NFILET=NFILET+MBLKS(1,1) CALL DEV000(NFILET,NFILEI,MBLKS(2,1)) NTOTT1=NTOTT1+MBLKS(1,2) CALL DEV000(NTOTT1,NTOTI1,MBLKS(2,2)) NTOTT2=NTOTT2+MBLKS(1,3) CALL DEV000(NTOTT2,NTOTI2,MBLKS(2,3)) GO TO 11 C.. C.. CHECK IF OPTIONS ARE ON, IF NOT EXIT C.. 200 CALL BYTEDO(FNAME,FNAME(12),' ') IF(KDEV.LE.0) GO TO 300 CALL BYTEDO(LNAME,LNAME(15),'< SUBTOTAL > ') CALL DEVAAA(NFILET,NFILEI,MFILE(1)) CALL DEVAAA(NTOTT1,NTOTI1,MFILE(10)) CALL DEVAAA(NTOTT2,NTOTI2,MFILE(19)) IF(IACNT.EQ.0) WRITE(LST,30)LNAME,FNAME,MFILE 30 FORMAT('0',10X,27A1,9X,26A1) K1=1 CALL BYTEDO(FNAME,FNAME(12),' . . . .') DO 201 I=1,KDEV IF(INDEXF.NE.1) INDEXF=3 K2=KINDEV(I) ICNTP=9999 CALL BYTEDO(LNAME,LNAME(15),' . . . . .') NSTOT1=0 NSTOI2=0 NSFILT=0 NSFILI=0 DO 202 K=K1,K2 CALL BLOCKS(INUICS(1,K),MBLKS,INDEV(1,I),INDEXF) NSFILT=NSFILT+MBLKS(1,1) CALL DEV000(NSFILT,NSFILI,MBLKS(2,1)) NSTOT1=NSTOT1+MBLKS(1,2) CALL DEV000(NSTOT1,NSTOI1,MBLKS(2,2)) NSTOT2=NSTOT2+MBLKS(1,3) CALL DEV000(NSTOT2,NSTOI2,MBLKS(2,3)) IF(ICNTP.GT.50) WRITE(LST,10)INDATE IF(ICNTP.GT.50) ICNTP=0 ICNTP=ICNTP+1 CALL DEVAAA(MBLKS(1,1),MBLKS(2,1),MFILE(1)) CALL DEVAAA(MBLKS(1,2),MBLKS(2,2),MFILE(10)) CALL DEVAAA(MBLKS(1,3),MBLKS(2,3),MFILE(19)) WRITE(LST,3)INUICS(1,K),INUICS(2,K), 1 LNAME,FNAME,(INDEV(L,I),L=1,5),MFILE 202 CONTINUE CALL BYTEDO(LNAME,LNAME(15),'< SUBTOTAL > ') CALL DEVAAA(NSFILT,NSFILI,MFILE(1)) CALL DEVAAA(NSTOT1,NSTOI1,MFILE(10)) CALL DEVAAA(NSTOT2,NSTOI2,MFILE(19)) WRITE(LST,30)LNAME,FNAME,MFILE NFILET=NFILET+NSFILT NFILEI=NFILEI+NSFILI CALL DEV000(NFILET,NFILEI,0) NTOTT1=NTOTT1+NSTOT1 NTOTI1=NTOTI1+NSTOI1 CALL DEV000(NTOTT1,NTOTI1,0) NTOTT2=NTOTT2+NSTOT2 NTOTI2=NTOTI2+NSTOI2 CALL DEV000(NTOTT2,NTOTI2,0) K1=K2+1 201 CONTINUE 300 CONTINUE CALL BYTEDO(LNAME,LNAME(15),'< T O T A L >') CALL DEVAAA(NFILET,NFILEI,MFILE(1)) CALL DEVAAA(NTOTT1,NTOTI1,MFILE(10)) CALL DEVAAA(NTOTT2,NTOTI2,MFILE(19)) WRITE(LST,30)LNAME,FNAME,MFILE CALL EXIT C.. C.. INPUT ERRORS C.. 199 TYPE 299,(INMCR(I),I=1,40) 299 FORMAT('0*** ABC INPUT ERROR =',40A1) CALL EXIT END