]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/zebra/rz/rzveri.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / rz / rzveri.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.2 1996/04/24 17:27:19 mclareni
6* Extend the include file cleanup to dzebra, rz and tq, and also add
7* dependencies in some cases.
8*
9* Revision 1.1.1.1 1996/03/06 10:47:27 mclareni
10* Zebra
11*
12*
13#include "zebra/pilot.h"
14 SUBROUTINE RZVERI(CHPATH,CHOPT)
15*
16************************************************************************
17*
18* Routine to build bit map of records used in an RZ file
19* Input:
20* CHOPT Character variable specifying the selected options.
21*
22* 'B' - rebuild bit map in memory
23* 'C' - compare bit map in memory against file
24* 'O' - check for overwriting on a word by word basis
25* This requires a suitably dimensioned array
26* in sequence RZBMAP. KDMAX = NRECS * LRECL / 32
27* 'P' - print directories and objects pointing to overwritten
28* records. Implies O.
29*
30* Called by RZFILE, RZCLOS
31* Based on RZVERI program of Rene Brun
32*
33* Author : J.Shiers CN/AS/DL
34* Written : 23.03.92
35* Last mod: 05.11.92 - IQUEST(2) = number of records in use
36* but marked as free
37*
38************************************************************************
39*
40 CHARACTER*(*) CHOPT
41 CHARACTER*10 CHOPTT
42#include "zebra/zunit.inc"
43#include "zebra/rzcl.inc"
44#include "zebra/rzdir.inc"
45#include "zebra/rzch.inc"
46#include "zebra/rzk.inc"
47#include "zebra/rzbmap.inc"
48#include "zebra/rzover.inc"
49 CHARACTER *(*) CHPATH
50 DIMENSION ISD(NLPATM),NSD(NLPATM),IHDIR(4)
51*
52*-----------------------------------------------------------------------
53*
54#include "zebra/q_jbyt.inc"
55
56 IQUEST(1)= 0
57 IRET = 0
58 JRET = 0
59 NBAD = 0
60 NPASS = 0
61 LOGLV = JBYT(IQ(KQSP+LTOP),15,3)-3
62 NCHO = LENOCC(CHOPT)
63 IOPTB = INDEX(CHOPT(1:NCHO),'B')
64 IOPTC = INDEX(CHOPT(1:NCHO),'C')
65 IOPTO = INDEX(CHOPT(1:NCHO),'O')
66 IOPTP = INDEX(CHOPT(1:NCHO),'P')
67 IF(IOPTP.NE.0) IOPTO = 1
68*
69* Option B: clear existing bitmap
70*
71 IF(IOPTB.NE.0) THEN
72 LB=IQ(KQSP+LTOP+KLB)
73 CALL VZERO(IQ(KQSP+LTOP+LB+3),IQ(KQSP+LTOP+LB))
74 ENDIF
75
76 NCHO = 0
77 CHOPTT = ' '
78
79 IF(IOPTB.NE.0) THEN
80 NCHO = NCHO + 1
81 CHOPTT(NCHO:NCHO) = 'B'
82 ENDIF
83
84 IF(IOPTC.NE.0) THEN
85 NCHO = NCHO + 1
86 CHOPTT(NCHO:NCHO) = 'C'
87 ENDIF
88
89 IF(IOPTO.NE.0) THEN
90 NCHO = NCHO + 1
91 CHOPTT(NCHO:NCHO) = 'O'
92 ENDIF
93*
94 IF(IOPTO.NE.0) THEN
95 IWORD = 0
96 DO 10 I=1,32
97 CALL SBIT1(IWORD,I)
98 10 CONTINUE
99 DO 20 I=1,KDMAX
100 IDATA(I) = IWORD
101 20 CONTINUE
102 ENDIF
103 IF(LQRS.EQ.0)GOTO 70
104*
105* General case
106*
107 IF(LCDIR.EQ.0)GOTO 70
108 30 CONTINUE
109 NPASS = NPASS + 1
110 CALL RZCDIR(CHWOLD,'R')
111 CALL RZCDIR(CHPATH,' ')
112 CALL RZPAFF(CHPAT,NLPAT,CHL)
113 NLPAT0=NLPAT
114 ITIME=0
115*
116*
117* Set CWD to the current level
118*
119 40 CONTINUE
120 IF(ITIME.NE.0)THEN
121 CALL RZPAFF(CHPAT,NLPAT,CHL)
122 IF(IQUEST(1).NE.0)THEN
123 IF(LOGLV.GE.1) THEN
124 LCHL = LENOCC(CHL)
125 WRITE(IQPRNT,*) 'RZVERI. error setting directory to ',
126 + CHL(1:LCHL)
127 ENDIF
128 IRET = IRET + IQUEST(1)
129 NLPAT=NLPAT-1
130 GOTO 50
131 ENDIF
132 CALL RZCDIR(CHL,' ')
133 ENDIF
134 IF(IQUEST(1).NE.0)THEN
135 IF(LOGLV.GE.1) THEN
136 LCHL = LENOCC(CHL)
137 WRITE(IQPRNT,*) 'RZVERI. error setting directory to ',
138 + CHL(1:LCHL)
139 ENDIF
140 IRET = IRET + IQUEST(1)
141 NLPAT=NLPAT-1
142 GOTO 50
143 ENDIF
144 ISD(NLPAT)=0
145 NSD(NLPAT)=IQ(KQSP+LCDIR+KNSD)
146*
147* Check current directory
148*
149 CALL RZVER1(CHL,CHOPTT,ISTAT)
150 IRET = IRET + ISTAT
151 JRET = JRET + IQUEST(2)
152*
153* Process possible down directories
154*
155 50 ISD(NLPAT)=ISD(NLPAT)+1
156 IF(ISD(NLPAT).LE.NSD(NLPAT))THEN
157 NLPAT=NLPAT+1
158 LS=IQ(KQSP+LCDIR+KLS)
159 IH=LS+7*(ISD(NLPAT-1)-1)
160 CALL ZITOH(IQ(KQSP+LCDIR+IH),IHDIR,4)
161 CALL UHTOC(IHDIR,4,CHPAT(NLPAT),16)
162 ITIME=ITIME+1
163 GOTO 40
164 ELSE
165 NLPAT=NLPAT-1
166 IF(NLPAT.GE.NLPAT0)THEN
167 LUP=LQ(KQSP+LCDIR+1)
168 CALL MZDROP(JQPDVS,LCDIR,' ')
169 LCDIR=LUP
170 GOTO 50
171 ENDIF
172 ENDIF
173
174 60 CONTINUE
175*
176* Print directories and objects using overwritten records
177*
178 IF(IOPTP.NE.0.AND.NPASS.EQ.1.AND.IRET.NE.0) THEN
179 CHOPTT = 'P'
180 WRITE(IQPRNT,*)
181 + 'RZVERI. List of suspect directories/objects'
182 GOTO 30
183 ENDIF
184*
185* Mark top directory as modified
186*
187 IF(IOPTB.NE.0) CALL SBIT1(IQ(KQSP+LTOP),2)
188*
189* Reset CWD
190*
191 CALL RZCDIR(CHWOLD,' ')
192*
193 70 IQUEST(1) = IRET
194 IQUEST(2) = JRET
195 END