5 * Revision 1.2 1996/04/24 17:27:06 mclareni
6 * Extend the include file cleanup to dzebra, rz and tq, and also add
7 * dependencies in some cases.
9 * Revision 1.1.1.1 1996/03/06 10:47:26 mclareni
13 #include "zebra/pilot.h"
14 SUBROUTINE RZQUOT(NQUOTA)
16 ************************************************************************
18 * To set the quota (number of blocks) for the CWD
20 * NQUOTA The maximum number of records which can be used by the CWD
21 * and its subdirectories
22 * By default NQUOTA is equal to the minimum of the total number
23 * of records allowed for the complete file (parameter NREC in
24 * RZFILE) and the quota of the parent directory.
28 * Author : R.Brun DD/US/PD
31 * : 30.01.95 J.Shiers. Permit NQUOTA>65000 for new RZ format
33 ************************************************************************
34 #include "zebra/zunit.inc"
35 #include "zebra/rzcl.inc"
36 #include "zebra/rzk.inc"
38 *-----------------------------------------------------------------------
41 #include "zebra/q_jbyt.inc"
45 LOGLV=JBYT(IQ(KQSP+LTOP),15,3)-3
46 IVERS=IQ(KQSP+LTOP+KRZVER)
48 * Limit quota to maximum for original RZ format
50 IF(IVERS.EQ.0.AND.NQUOT.GT.65000)THEN
52 IF(LOGLV.GE.-1) WRITE(IQLOG,4000) NQUOT
53 4000 FORMAT(' RZQUOT. Quota set to maximum allowed value = ',I6)
59 CALL RZMODS('RZQUOT',IFLAG)
66 IF(NQUOT.GE.IQ(KQSP+LPAR+KQUOTA))THEN
67 IF(LOGLV.GE.-2) WRITE(IQLOG,1000)
68 1000 FORMAT(' RZQUOT. Quota exceeds parent directory quota')
71 IQUEST(11)=IQ(KQSP+LPAR+KQUOTA)
74 IQ(KQSP+LCDIR+KQUOTA)=NQUOT
75 IF(NQUOT.LT.IQ(KQSP+LCDIR+KRUSED))THEN
76 IF(LOGLV.GE.-1) WRITE(IQLOG,2000)
77 2000 FORMAT(' RZQUOT. WARNING !! Records exceed new quota')
79 IQUEST(11)=IQ(KQSP+LCDIR+KRUSED)
86 IF(NQUOT.EQ.IQ(KQSP+LTOP+KQUOTA))GOTO 99
87 IF(NQUOT.LT.IQ(KQSP+LTOP+KQUOTA))THEN
88 IF(NQUOT.LT.IQ(KQSP+LTOP+KRUSED))THEN
89 NQUOT=IQ(KQSP+LTOP+KRUSED)
90 IF(LOGLV.GE.-1) WRITE(IQLOG,3000)NQUOT
91 3000 FORMAT(' RZQUOT. Cannot reduce quota below ',I5,' records')
96 * Increase quota for the file
99 NWREC=IQ(KQSP+LTOP+LB)
100 NWNEW=(NQUOT-1)/32 +1
101 IF(NWNEW.EQ.NWREC)GOTO 80
102 IQ(KQSP+LTOP+LB)=NWNEW
103 NWFREE=IQ(KQSP+LTOP+KNFREE)
105 IF(NMORE.GT.NWFREE)THEN
106 CALL RZEXPD('RZQUOT',NMORE+5)
107 IF(IQUEST(1).NE.0)GOTO 99
110 * Copy S and K blocks
115 CALL UCOPY2(IQ(KQSP+LTOP+LS),IQ(KQSP+LTOP+LS+NMORE),LF-LS)
116 CALL VZERO(IQ(KQSP+LTOP+LS),NMORE)
117 IQ(KQSP+LTOP+KLS)=LS+NMORE
118 IQ(KQSP+LTOP+KLK)=LK+NMORE
119 IQ(KQSP+LTOP+KLF)=LF+NMORE
120 IQ(KQSP+LTOP+KNFREE)=NWFREE-NMORE
122 80 IQ(KQSP+LTOP+KQUOTA)=NQUOT
123 NFREE=IQ(KQSP+LFREE+1)
124 IQ(KQSP+LFREE+2*NFREE+1)=NQUOT