C.. KBLOCK.FTN BOHDEN K. CMAYLO C.. THIS PROGRAM CHECKS FOR USERID + NUMBER OF BLOCKS C.. THEN ONLY DOES PIP STATEMENTS TO DELETE FILES. C.. C.. PLUS (LATER) ALSO WRITES AN ACCOUNTING FILE. C.. (/LI=LOGIN, /LO=LOGOUT INFO, /BY=BYE INFO) C.. CMDLINE = DDNN,#PASSES,[UIC],MAXBLOCKS,TI#/SWITCH C.. C.. C.. MBLOCK(*,1)=+FILES C.. MBLOCK(*,2)=TO EOF C.. MBLOCK(*,3)=TOTAL ALLOCATED C.. MBLOCK(*,4)=MAXIMUM ALLOCATED C.. BYTE SFILE(24),SFILE0(24),INPUT(80),NDEV(5) DIMENSION MUIC(2),MBLOCK(2,4),LBLOCK(2,4),INDATE(5) DOUBLE PRECISION BLKMAX,XTEMP EQUIVALENCE (SEC0,INDATE(4)),(INPUT(7),INPUT7) C.. C.. UNITS USED: 1,2 = BLOCKS, 3=LOGGER+LOGIN+LOGOUT C.. DATA LUN3/3/ IPASS=-1 C** FOR TEST, COMMENT OUT NEXT LINE CALL XSPAWN('SET /SLAVE=TI:!') C.. C.. MCR CMD = MAXPAS,[GPR,MEM],BLKMAX,TTnn/SW C.. IQ=ISTXQT(INPUT) IF(IQ.LE.0) GO TO 234 IS=IQ LOG=0 IF(GETSWI('/LI',INPUT,IS).NE.0) LOG=1 IF(LOG.EQ.0.AND.GETSWI('/LO',INPUT,IS).NE.0) LOG=2 IF(LOG.EQ.0.AND.GETSWI('/BY',INPUT,IS).NE.0) LOG=3 C.. C.. CHANGE BRACKETS TO SPACES C.. IF(IS.LE.0) GO TO 234 IX=0 DO 55 I=1,IS IF(INPUT(I).EQ.'['.OR.INPUT(I).EQ.']') IX=IX+1 IF(INPUT(I).EQ.'['.OR.INPUT(I).EQ.']') INPUT(I)=' ' 55 CONTINUE IF(IX.NE.2) GO TO 234 CALL RIDBLK(INPUT,IS) IS=IS-8 CALL BYTEDO(NDEV,NDEV(5),INPUT) DECODE(IS,3,INPUT7,ERR=99)MAXPAS,MUIC(1),MUIC(2),BLKMAX,INTT 3 FORMAT(I7,O7,O7,D10.0,O7) IF(BLKMAX.LE.0) GO TO 234 C.. SET UIC TO ORIGINAL MBLOCK(1,4)=BLKMAX/1000 XTEMP=MBLOCK(1,4) XTEMP=XTEMP*1000. MBLOCK(2,4)=BLKMAX-XTEMP C.. GET TODAYS DATE IN JULIAN CALL IDATE(INDATE(2),INDATE(3),INDATE(1)) IOJDAT=JDATE(INDATE) 100 IPASS=IPASS+1 CALL BRKPRT('*** please wait ... counting user file blocks.!') CALL BRKPRT(0) IF(LOG.GE.2) 1 CALL LOGOUT(LUN3,MUIC,LBLOCK,INTT,INDATE,NDEV,SEC0) C.. GET LOGIN DATE INJDAT=JDATE(INDATE) IF(LOG.GE.2.AND.MUIC(1).LE.0) GO TO 234 C.. RESET BLKMAX IF LOGOUT XTEMP=LBLOCK(1,4) IF(LOG.GE.2) BLKMAX=XTEMP*1000.+LBLOCK(2,4) C.. RESET TO ORIGINAL UIC ENCODE(19,19,INPUT)MUIC 19 FORMAT('SET /UIC=[',O3,',',O3,']!') CALL XSPAWN(INPUT) C.. RESET TO LOGIN DEVICE ENCODE(14,14,INPUT)NDEV 14 FORMAT('ASN ',5A1,'=SY:!') CALL XSPAWN(INPUT) CALL BLOCKS(MUIC,MBLOCK,NDEV,0) IF(IPASS.EQ.0.AND.LOG.EQ.1) CALL LOGIN(LUN3,MUIC,MBLOCK,INTT,NDEV) IF(LOG.GE.2) 1 CALL LOGGER(LUN3,MUIC,MBLOCK,LBLOCK,INTT,INDATE,SEC0) CALL DEVAAA(MBLOCK(1,1),MBLOCK(2,1),SFILE(1)) CALL DEVAAA(MBLOCK(1,2),MBLOCK(2,2),SFILE(9)) CALL DEVAAA(MBLOCK(1,3),MBLOCK(2,3),SFILE(17)) IF(LOG.GT.1) GO TO 76 IENC=51 ENCODE(IENC,75,INPUT)MUIC,INTT,BLKMAX 75 FORMAT( 1'*** USER *** [',O3,',',O3,'] TT:',O2,' MAX BLOCKS:',F10.0) INPUT(IENC+1)=0 CALL BRKPRT(INPUT) IENC=51 ENCODE(IENC,74,INPUT)' ',SFILE 74 FORMAT(A4,' FILES:',8A1,8X,'BLOCKS:',8A1,'/',8A1) INPUT(IENC+1)=0 CALL BRKPRT(0) CALL BRKPRT(INPUT) 76 CONTINUE IF(LOG.LT.2) GO TO 72 C.. GET CONNECT TIME SEC1=SECNDS(0.) SECS=SEC1-SEC0 SECS=(IOJDAT-INJDAT)*24*60+SECS/60. CALL DEVAAA(LBLOCK(1,1),LBLOCK(2,1),SFILE0(1)) CALL DEVAAA(LBLOCK(1,2),LBLOCK(2,2),SFILE0(9)) CALL DEVAAA(LBLOCK(1,3),LBLOCK(2,3),SFILE0(17)) C.. WRITE WITH BREAKTHROUGH IENC=51 ENCODE(IENC,75,INPUT)MUIC,INTT,BLKMAX INPUT(IENC+1)=0 CALL BRKPRT(INPUT) IENC=51 ENCODE(IENC,74,INPUT)' IN:',SFILE0 INPUT(IENC+1)=0 CALL BRKPRT(0) CALL BRKPRT(INPUT) ENCODE(IENC,74,INPUT)'OUT:',SFILE CALL BRKPRT(INPUT) CALL BRKPRT(0) IENC=32 ENCODE(IENC,73,INPUT)SECS 73 FORMAT(F10.2,' MINUTES CONNECT TIME!') CALL BRKPRT(INPUT) GO TO 235 72 XTEMP=MBLOCK(1,3) IF(BLKMAX.GT.(XTEMP*1000.+MBLOCK(2,3))) 1 CALL XSPAWN('SET /NOSLAVE=TI:!') IF(BLKMAX.GT.(XTEMP*1000.+MBLOCK(2,3))) CALL EXIT IF(IPASS.GE.MAXPAS) GO TO 200 TYPE 5 5 FORMAT(/' *** NOTE ***'/ 1 ' *** YOU CANNOT SIGN ON UNTIL YOU CLEAN UP YOUR ACCOUNT ***'/ 1 / ' *** PAUSING FOR PIP PROCESSING ***'/ 1 / ' (TO CONTINUE, TYPE Z)') CALL XSPAWN('PIP !') GO TO 100 200 TYPE 6,IPASS 6 FORMAT(//' *** ERROR ***'/' *** YOU HAD',I2,' TRIES TO ' 1 ,'CLEAN UP YOUR ACCOUNT ***'/' *** BYE BYE *** ') 234 CONTINUE CALL XSPAWN('ABO AT.!') 235 CONTINUE C** FOR TEST, COMMENT OUT NEXT LINE IF(LOG.EQ.3.OR.LOG.EQ.1) CALL XSPAWN('BYE !') C** FOR TEST, COMMENT OUT NEXT LINE IF(LOG.EQ.2) CALL DSPAWN('LOGOUT !') CALL EXIT 99 TYPE 199,(INPUT(I),I=1,IQ) 199 FORMAT('0*** ERROR *** PARAMETERS=',80A1) GO TO 234 END