]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MINICERN/packlib/zebra/rz/rzlock.F
Merging the VirtualMC branch to the main development branch (HEAD)
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / rz / rzlock.F
diff --git a/MINICERN/packlib/zebra/rz/rzlock.F b/MINICERN/packlib/zebra/rz/rzlock.F
deleted file mode 100644 (file)
index be516a3..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.2  1996/04/24 17:27:01  mclareni
-* Extend the include file cleanup to dzebra, rz and tq, and also add
-* dependencies in some cases.
-*
-* Revision 1.1.1.1  1996/03/06 10:47:25  mclareni
-* Zebra
-*
-*
-#include "zebra/pilot.h"
-      SUBROUTINE RZLOCK(CHLOCK)
-*
-************************************************************************
-*
-*        To lock the CWD
-* Input:
-*   CHLOCK  Character variable  identifying the owner  of the  lock (e.g.
-*           specifying the name of the user, his computer identifier,...)
-*           This parameter is used to avoid two users,  who have both the
-*           write password for  a directory,  trying to change  it at the
-*           same time.    CHLOCK is also useful  in the case of  a system
-*           crash while a directory was locked.
-*
-* Called by <USER>
-*
-*  Author  : R.Brun DD/US/PD
-*  Written : 02.05.86
-*  Last mod: 04.10.90
-*
-************************************************************************
-#include "zebra/zunit.inc"
-#include "zebra/rzcl.inc"
-#include "zebra/rzclun.inc"
-#include "zebra/rzk.inc"
-      CHARACTER*(*) CHLOCK
-      DIMENSION IHL(2),KHL(2)
-*
-*-----------------------------------------------------------------------
-*
-#include "zebra/q_jbit.inc"
-#include "zebra/q_jbyt.inc"
-
-      IQUEST(1)=0
-      IF(LQRS.EQ.0)GO TO 99
-      IF(LTOP.EQ.0)GO TO 99
-      LOGLV=JBYT(IQ(KQSP+LTOP),15,3)-3
-      NCH=LEN(CHLOCK)
-      IF(NCH.GT.8)NCH=8
-      CALL UCTOH(CHLOCK,IHL,4,NCH)
-      IF(NCH.LT.5)CALL VBLANK(IHL(2),1)
-      CALL ZHTOI(IHL,IHL,2)
-*
-*           Check write permission
-*
-***      IF(JBIT(IQ(KQSP+LCDIR),1).NE.0)THEN
-***         IQUEST(1)=4
-***         IF(LOGLV.GE.-2) WRITE(IQLOG,9010)
-*** 9010    FORMAT(' RZLOCK. No authorisation to write in that directory')
-***         GO TO 99
-***      ENDIF
-*
-*           Lock first record
-*
-      LRIN  = LQ(KQSP+LTOP-7)
-      LPURG = LQ(KQSP+LTOP-5)
-      LROUT = LQ(KQSP+LTOP-6)
-      IF(LRIN.EQ.0)THEN
-         CALL MZBOOK(JQPDVS,LRIN,LTOP,-7,'RZIN',0,0,LREC+1,2,-1)
-         IQ(KQSP+LRIN-5)=IQ(KQSP+LTOP-5)
-      ENDIF
-      NWL =50
-      NTRY=0
-  10  CALL RZIODO(LUN,NWL,1,IQ(KQSP+LRIN+1),1)
-      IF(IQUEST(1).NE.0)GO TO 99
-      IF(IQ(KQSP+LRIN+2).GT.NWL)THEN
-         NWL=IQ(KQSP+LRIN+2)
-         GO TO 10
-      ENDIF
-      NWL=IQ(KQSP+LRIN+2)
-      IQ(KQSP+LTOP+KIRIN)=0
-      IF(IQ(KQSP+LRIN+3).NE.0)THEN
-         NWL=50
-         NTRY=NTRY+1
-#if defined(CERNLIB_QMVAX)
-         IF(IRELAT.NE.0)UNLOCK(UNIT=LUN)
-         CALL LIB$WAIT(0.1)
-#endif
-         IF(NTRY.LT.100.AND.IQUEST(1).EQ.0)GO TO 10
-         IF(LOGLV.GE.-2) WRITE(IQLOG,1000)
- 1000    FORMAT(' RZLOCK. Cannot lock that directory')
-         IQUEST(1)=1
-         GO TO 99
-      ENDIF
-      IQ(KQSP+LRIN+3)=1
-      CALL RZIODO(LUN,MAX(NWL,50),1,IQ(KQSP+LRIN+1),2)
-*
-      IQ(KQSP+LRIN+3)=0
-      NLOCK=IQ(KQSP+LRIN+1)
-      NREC=IQ(KQSP+LTOP+KQUOTA)
-      LDC=IQ(KQSP+LCDIR+KLD)
-      IRD=IQ(KQSP+LCDIR+LDC+1)
-*
-*           Read fresh Top directory
-*
-      IF(LTOP.NE.LCDIR)CALL RZRTOP
-*
-*          Check that directory is not already locked
-*
-      IF(NLOCK.GT.0)THEN
-         LL=4
-  20     IF(IQ(KQSP+LRIN+LL).NE.0)THEN
-*
-*          Check mother directories
-*
-            IMOT=0
-            IRCUR=IQ(KQSP+LRIN+LL+4)
-            IF(IRCUR.EQ.2.OR.IRCUR.EQ.IRD)IMOT=1
-            IF(IMOT.NE.0)THEN
-               CALL ZITOH(IQ(KQSP+LRIN+LL+1),KHL,2)
-               IF(LOGLV.GE.-2) WRITE(IQLOG,3000)KHL
- 3000          FORMAT(' RZLOCK. Directory already locked by ',2A4)
-               IQUEST(1)=2
-               GO TO 90
-            ELSE
-               LL=LL+IQ(KQSP+LRIN+LL)
-               GO TO 20
-            ENDIF
-         ENDIF
-      ENDIF
-*
-*          Fill 'free' bank with allocated records as a function
-*          of quota
-*
-      NFREE=0
-      NRUSED=IQ(KQSP+LCDIR+KRUSED)
-      NDATA=IQ(KQSP+LFREE-1)
-      LB=IQ(KQSP+LTOP+KLB)
-      IFR=2
-      DO 50 I=3,NREC
-         LL=4
-  30     NMORE=IQ(KQSP+LRIN+LL)
-         IF(NMORE.NE.0)THEN
-            ND=IQ(KQSP+LRIN+LL+5)
-            DO 40 J=1,ND
-               IR1=IQ(KQSP+LRIN+LL+2*J+4)
-               IRL=IQ(KQSP+LRIN+LL+2*J+5)
-               IF(I.GE.IR1.AND.I.LE.IRL)GO TO 50
-  40        CONTINUE
-            LL=LL+NMORE
-            GO TO 30
-         ENDIF
-*
-         IWORD=(I-1)/32+1
-         IBIT=I-32*(IWORD-1)
-         IF(JBIT(IQ(KQSP+LTOP+LB+2+IWORD),IBIT).EQ.0)THEN
-            NRUSED=NRUSED+1
-            IF(NRUSED.GT.IQ(KQSP+LCDIR+KQUOTA))GO TO 60
-            IF(IQ(KQSP+LFREE+IFR).EQ.0)THEN
-               NFREE=NFREE+1
-               IQ(KQSP+LFREE+1)=NFREE
-               IQ(KQSP+LFREE+IFR)=I
-               IQ(KQSP+LFREE+IFR+1)=I
-            ELSE
-               IF(I.EQ.IQ(KQSP+LFREE+IFR+1)+1)THEN
-                  NFREE=IQ(KQSP+LFREE+1)
-                  IF(NFREE.EQ.0)NFREE=1
-                  IQ(KQSP+LFREE+IFR+1)=I
-               ELSE
-                  NFREE=NFREE+1
-                  IQ(KQSP+LFREE+1)=NFREE
-                  IF(2*NFREE+3.GT.NDATA)THEN
-                     CALL MZPUSH(JQPDVS,LFREE,0,20,'I')
-                     NDATA=NDATA+20
-                  ENDIF
-                  IFR=IFR+2
-                  IQ(KQSP+LFREE+IFR)=I
-                  IQ(KQSP+LFREE+IFR+1)=I
-               ENDIF
-            ENDIF
-         ENDIF
-  50  CONTINUE
-*
-*          Build new lock
-*
-  60  NMORE=2*NFREE+6
-      IF(NFREE.LE.0)THEN
-         IF(LOGLV.GE.-2) WRITE(IQLOG,3100)
- 3100    FORMAT(' RZLOCK. Cannot allocate free records -',
-     +          ' RZ quota for this file has been reached.')
-         IQUEST(1)=3
-         GO TO 90
-      ENDIF
-      IF(NWL.EQ.0)NWL=4
-      IF(NWL+NMORE.GT.LREC)THEN
-         NF=NFREE
-         NFREE=(LREC-NWL-6)/2
-         IQ(KQSP+LFREE+1)=NFREE
-         IF(NFREE.GT.0)THEN
-            CALL UCOPY(IQ(KQSP+LFREE+2*NF),IQ(KQSP+LFREE+2*NFREE),2)
-            IQ(KQSP+LFREE+2*NFREE+2)=0
-            NMORE=2*NFREE+6
-            IF(LOGLV.GE.-2) WRITE(IQLOG,4000)
- 4000       FORMAT(' RZLOCK. Cannot allocate all free records')
-         ELSE
-            IF(LOGLV.GE.-2) WRITE(IQLOG,4100)
- 4100       FORMAT(' RZLOCK. Data base is too fragmented')
-            IQUEST(1)=1
-            IQ(KQSP+LFREE+1)=0
-            GO TO 90
-         ENDIF
-      ENDIF
-      IQ(KQSP+LRIN+NWL)=NMORE
-      IQ(KQSP+LRIN+NWL+1)=IHL(1)
-      IQ(KQSP+LRIN+NWL+2)=IHL(2)
-      IQ(KQSP+LRIN+NWL+3)=0
-      CALL RZDATE(IQ(KQSP+LRIN+NWL+3),IDATE,ITIME,2)
-      IQ(KQSP+LRIN+NWL+4)=IQ(KQSP+LCDIR+LDC+1)
-      CALL UCOPY(IQ(KQSP+LFREE+1),IQ(KQSP+LRIN+NWL+5),2*NFREE+1)
-      NWL=NWL+NMORE
-      IQ(KQSP+LRIN+NWL)=0
-      IQ(KQSP+LRIN+1)=IQ(KQSP+LRIN+1)+1
-      IQ(KQSP+LRIN+2)=NWL
-*
-*          Reset the lock and write record 1
-*
-  90  CALL RZIODO(LUN,MAX(NWL,50),1,IQ(KQSP+LRIN+1),2)
-      IQUEST(10)=IQ(KQSP+LRIN+1)
-*
-  99  RETURN
-      END