5 * Revision 1.2 1996/04/18 16:12:08 mclareni
6 * Incorporate changes from J.Zoll for version 3.77
8 * Revision 1.1.1.1 1996/03/06 10:47:19 mclareni
12 #include "zebra/pilot.h"
13 FUNCTION MZVOLM (IXSTOR,LHEADP,CHOPT)
15 C- Run through d/s to calculate space occupied, user called
17 #include "zebra/zstate.inc"
18 #include "zebra/zunit.inc"
19 #include "zebra/zvfaut.inc"
20 #include "zebra/mqsys.inc"
21 #include "zebra/mzcn.inc"
22 #include "zebra/mzcwk.inc"
23 C-------------- End CDE --------------
26 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
28 DATA NAMESR / 4HMZVO, 4HLM /
30 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
31 DATA NAMESR / 6HMZVOLM /
33 #if !defined(CERNLIB_QTRHOLL)
35 PARAMETER (NAMESR = 'MZVOLM ')
38 #include "zebra/q_jbit.inc"
39 #include "zebra/q_jbyt.inc"
40 #include "zebra/q_sbit0.inc"
41 #include "zebra/q_sbit1.inc"
44 #include "zebra/qtrace.inc"
47 IF (LHEAD.EQ.0) GO TO 999
49 #include "zebra/qstore.inc"
51 #if defined(CERNLIB_QDEBUG)
52 IF (IQVSTA.NE.0) CALL ZVAUTX
53 CALL MZCHLS (-7,LHEAD)
54 IF (IQFOUL.NE.0) GO TO 92
56 #if !defined(CERNLIB_QDEBUG)
57 IQNS = IQ(KQS+LHEAD-2)
60 CALL UOPTC (CHOPT,'L',IQUEST)
62 #if defined(CERNLIB_QDEVZE)
64 +WRITE (IQLOG,9814) LHEAD,IOPTH
65 9814 FORMAT (1X/' DEVZE MZVOLM. LHEAD,IOPTH='
70 LEVE = LEV + NQWKTB - 10
76 LX = LHEAD - 1 + IOPTH
78 IQ(KQS+LCUR) = MSBIT1 (IQ(KQS+LCUR),IQSYSX)
83 20 LAST = LCUR - IQ(KQS+LCUR-2)
84 IQ(KQS+LNEW) = MSBIT0 (IQ(KQS+LNEW),IQSYSX)
85 NWVOL = NWVOL + 10 + JBYT (IQ(KQS+LNEW),19,4) +
86 + IQ(KQS+LNEW-1) + IQ(KQS+LNEW-3)
88 C---- Look at next link
90 24 IF (LX.LT.LAST) GO TO 41
93 IF (LNEW.EQ.0) GO TO 24
95 #if defined(CERNLIB_QDEBUG)
97 IF (IQFOUL.NE.0) GO TO 94
99 IF (JBIT(IQ(KQS+LNEW),IQSYSX).NE.0) GO TO 24
101 C---- New bank LNEW, push down
107 IF (LEV.GE.LEVE) GO TO 91
109 #if defined(CERNLIB_QDEVZE)
111 +WRITE (IQLOG,9831) LEV,LCUR,LX+1,LNEW
112 9831 FORMAT (' DEVZE MZVOLM, Down: LEV,LCUR,LX+1,LNEW=',6I8)
115 C-- Move to end of linear structure
118 IQ(KQS+LCUR) = MSBIT1 (IQ(KQS+LCUR),IQSYSX)
120 IF (LNEW.EQ.0) GO TO 36
121 #if defined(CERNLIB_QDEVZE)
123 +WRITE (IQLOG,9833) LCUR,LNEW
124 9833 FORMAT (' DEVZE MZVOLM, Along: LCUR,LNEW=',6I8)
126 #if defined(CERNLIB_QDEBUG)
127 CALL MZCHLS (-7,LNEW)
128 IF (IQFOUL.NE.0) GO TO 93
129 IF (JBIT(IQ(KQS+LNEW),IQSYSX).NE.0) GO TO 36
130 IF (LQ(KQS+LNEW+2).NE.LCUR) GO TO 95
135 #if !defined(CERNLIB_QDEBUG)
136 IF (JBIT(IQ(KQS+LNEW),IQSYSX).EQ.0) GO TO 32
138 36 IQNS = IQ(KQS+LCUR-2)
144 C---- Bank at LCUR has no further secondaries
145 C-- step back in the linear structure
148 IF (LCUR.EQ.LQ(LEV)) GO TO 46
149 LCUR = LQ(KQS+LCUR+2)
151 #if defined(CERNLIB_QDEVZE)
153 +WRITE (IQLOG,9841) LCUR,LNEW
154 9841 FORMAT (' DEVZE MZVOLM, Back: LCUR,LNEW=',6I8)
158 C-- Start of linear structure reached, pop up
163 #if defined(CERNLIB_QDEVZE)
165 +WRITE (IQLOG,9846) LEV,LCUR,LX
166 9846 FORMAT (' DEVZE MZVOLM, Up: LEV,LCUR,LX=',6I8)
168 IF (LCUR.NE.0) GO TO 20
170 C---- Done, mark header bank
172 61 IQ(KQS+LHEAD) = MSBIT0 (IQ(KQS+LHEAD),IQSYSX)
173 NWVOL = NWVOL + 10 + JBYT (IQ(KQS+LHEAD),19,4) +
174 + IQ(KQS+LHEAD-1) + IQ(KQS+LHEAD-3)
175 #include "zebra/qtrace99.inc"
179 C------ Error conditions
181 #if defined(CERNLIB_QDEBUG)
184 IQUEST(14) = LQ(KQS+LNEW+2)
189 IQUEST(14) = LX+1 - LCUR
190 93 NQCASE = NQCASE + 1
194 92 NQCASE = NQCASE + 1
196 91 NQCASE = NQCASE + 1
199 #include "zebra/qtofatal.inc"
202 * ==================================================
203 #include "zebra/qcardl.inc"