5 * Revision 1.2 1996/04/24 17:26:50 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:23 mclareni
13 #include "zebra/pilot.h"
14 SUBROUTINE RZFREE(CHLOCK)
16 ************************************************************************
18 * To free a directory previously locked by RZLOCK
20 * CHLOCK Character variable identifying the owner of the lock.
24 * Author : R.Brun DD/US/PD
28 ************************************************************************
29 #include "zebra/zunit.inc"
30 #include "zebra/rzcl.inc"
31 #include "zebra/rzclun.inc"
32 #include "zebra/rzk.inc"
36 *-----------------------------------------------------------------------
38 #include "zebra/q_jbyt.inc"
44 LOGLV=JBYT(IQ(KQSP+LTOP),15,3)-3
47 CALL UCTOH(CHLOCK,IHL,4,NCH)
48 IF(NCH.LT.5)CALL VBLANK(IHL(2),1)
51 * Check write permission
53 *** IF(JBIT(IQ(KQSP+LCDIR),1).NE.0)THEN
55 *** IF(LOGLV.GE.-2) WRITE(IQLOG,9010)
56 *** 9010 FORMAT(' RZFREE. No authorisation to write in that directory')
62 LRIN = LQ(KQSP+LTOP-7)
63 LPURG = LQ(KQSP+LTOP-5)
64 LROUT = LQ(KQSP+LTOP-6)
66 CALL MZBOOK(JQPDVS,LRIN,LTOP,-7,'RZIN',0,0,LREC+1,2,-1)
67 IQ(KQSP+LRIN-5)=IQ(KQSP+LTOP-5)
71 10 CALL RZIODO(LUN,NWL,1,IQ(KQSP+LRIN+1),1)
72 IF(IQUEST(1).NE.0)GO TO 99
73 IF(IQ(KQSP+LRIN+2).GT.NWL)THEN
79 IF(IQ(KQSP+LRIN+3).NE.0)THEN
82 #if defined(CERNLIB_QMVAX)
83 IF(IRELAT.NE.0)UNLOCK(UNIT=LUN)
86 IF(NTRY.LT.100)GO TO 10
87 IF(LOGLV.GE.-2) WRITE(IQLOG,1000)
88 1000 FORMAT(' RZFREE. Cannot lock that directory')
93 CALL RZIODO(LUN,MAX(NWL,50),1,IQ(KQSP+LRIN+1),2)
95 * Read fresh Top directory
97 IF(LTOP.NE.LCDIR)CALL RZRTOP
104 NLOCK=IQ(KQSP+LRIN+1)
105 LDC=IQ(KQSP+LCDIR+KLD)
106 IRD=IQ(KQSP+LCDIR+LDC+1)
112 20 NLESS=IQ(KQSP+LRIN+LL)
114 IF(IQ(KQSP+LRIN+LL+1).EQ.IHL(1).AND.
115 + IQ(KQSP+LRIN+LL+2).EQ.IHL(2).AND.
116 + IQ(KQSP+LRIN+LL+4).EQ.IRD)THEN
117 CALL UCOPY2(IQ(KQSP+LRIN+LL+NLESS),
118 + IQ(KQSP+LRIN+LL),NWL-LL+1)
120 IQ(KQSP+LRIN+1)=IQ(KQSP+LRIN+1)-1
129 * Delete list of allocated records
132 CALL VZERO(IQ(KQSP+LFREE+1),IQ(KQSP+LFREE-1))
135 * Write back record 1
137 CALL RZIODO(LUN,MAX(NWL,50),1,IQ(KQSP+LRIN+1),2)
138 IQUEST(10)=IQ(KQSP+LRIN+1)