]>
Commit | Line | Data |
---|---|---|
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 |