5 * Revision 1.2 1996/04/18 16:11:32 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 SUBROUTINE MZFLAG (IXSTOR,LHEADP,KBITP,CHOPT)
15 C- Run through d/s to set status-bit, user called
17 #include "zebra/zlimit.inc"
18 #include "zebra/zstate.inc"
19 #include "zebra/zunit.inc"
20 #include "zebra/zvfaut.inc"
21 #include "zebra/mqsys.inc"
22 #include "zebra/mzcn.inc"
23 #include "zebra/mzcwk.inc"
24 C-------------- End CDE --------------
25 DIMENSION KBITP(9),LHEADP(9)
27 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
29 DATA NAMESR / 4HMZFL, 4HAG /
31 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
32 DATA NAMESR / 6HMZFLAG /
34 #if !defined(CERNLIB_QTRHOLL)
36 PARAMETER (NAMESR = 'MZFLAG ')
39 #include "zebra/q_jbit.inc"
40 #include "zebra/q_jbyt.inc"
41 #include "zebra/q_sbit0.inc"
42 #include "zebra/q_sbit1.inc"
43 #include "zebra/q_sbit.inc"
47 IF (LHEAD.EQ.0) RETURN
49 #include "zebra/qtrace.inc"
50 #include "zebra/qstore.inc"
52 #if defined(CERNLIB_QDEBUG)
53 IF (IQVSTA.NE.0) CALL ZVAUTX
54 CALL MZCHLS (-7,LHEAD)
55 IF (IQFOUL.NE.0) GO TO 92
57 #if !defined(CERNLIB_QDEBUG)
58 IQNS = IQ(KQS+LHEAD-2)
60 LQLIML = LQSTA(KQT+21)
64 CALL UOPTC (CHOPT,'ZLV',IQUEST)
65 IQTVAL = 1 - IQUEST(1)
68 #if defined(CERNLIB_QDEVZE)
70 +WRITE (IQLOG,9814) LHEAD,IQTBIT,IQTVAL,IOPTS,IOPTH
71 9814 FORMAT (1X/' DEVZE MZFLAG. LHEAD,IQTBIT,IQTVAL,IOPTS,IOPTH='
76 LEVE = LEV + NQWKTB - 10
82 LX = LHEAD - 1 + IOPTH
84 IQ(KQS+LCUR) = MSBIT1 (IQ(KQS+LCUR),IQSYSX)
89 20 LAST = LCUR - IQ(KQS+LCUR-2)
90 IQ(KQS+LNEW) = MSBIT0 (IQ(KQS+LNEW),IQSYSX)
91 IQ(KQS+LNEW) = MSBIT (IQTVAL,IQ(KQS+LNEW),IQTBIT)
92 LQLIML = MIN (LQLIML,LNEW)
93 LQLIMH = MAX (LQLIMH,LNEW)
95 C---- Look at next link
97 24 IF (LX.LT.LAST) GO TO 41
100 IF (LNEW.EQ.0) GO TO 24
102 #if defined(CERNLIB_QDEBUG)
103 CALL MZCHLS (-7,LNEW)
104 IF (IQFOUL.NE.0) GO TO 94
106 IF (JBIT(IQ(KQS+LNEW),IQSYSX).NE.0) GO TO 24
108 C---- New bank LNEW, push down
114 IF (LEV.GE.LEVE) GO TO 91
116 #if defined(CERNLIB_QDEVZE)
118 +WRITE (IQLOG,9831) LEV,LCUR,LX+1,LNEW
119 9831 FORMAT (' DEVZE MZFLAG, Down: LEV,LCUR,LX+1,LNEW=',6I8)
122 C-- Move to end of linear structure
125 IQ(KQS+LCUR) = MSBIT1 (IQ(KQS+LCUR),IQSYSX)
127 IF (LNEW.EQ.0) GO TO 36
128 #if defined(CERNLIB_QDEVZE)
130 +WRITE (IQLOG,9833) LCUR,LNEW
131 9833 FORMAT (' DEVZE MZFLAG, Along: LCUR,LNEW=',6I8)
133 #if defined(CERNLIB_QDEBUG)
134 CALL MZCHLS (-7,LNEW)
135 IF (IQFOUL.NE.0) GO TO 93
136 IF (JBIT(IQ(KQS+LNEW),IQSYSX).NE.0) GO TO 36
137 IF (LQ(KQS+LNEW+2).NE.LCUR) GO TO 95
142 #if !defined(CERNLIB_QDEBUG)
143 IF (JBIT(IQ(KQS+LNEW),IQSYSX).EQ.0) GO TO 32
145 36 IQNS = IQ(KQS+LCUR-2)
151 C---- Bank at LCUR has no further secondaries
152 C-- step back in the linear structure
155 IF (LCUR.EQ.LQ(LEV)) GO TO 46
156 LCUR = LQ(KQS+LCUR+2)
158 #if defined(CERNLIB_QDEVZE)
160 +WRITE (IQLOG,9841) LCUR,LNEW
161 9841 FORMAT (' DEVZE MZFLAG, Back: LCUR,LNEW=',6I8)
165 C-- Start of linear structure reached, pop up
170 #if defined(CERNLIB_QDEVZE)
172 +WRITE (IQLOG,9846) LEV,LCUR,LX
173 9846 FORMAT (' DEVZE MZFLAG, Up: LEV,LCUR,LX=',6I8)
175 IF (LCUR.NE.0) GO TO 20
177 C---- Done, mark header bank
179 61 IQ(KQS+LHEAD) = MSBIT0 (IQ(KQS+LHEAD),IQSYSX)
180 IF (IOPTS.EQ.0) GO TO 999
181 IQ(KQS+LHEAD) = MSBIT (IQTVAL,IQ(KQS+LHEAD),IQTBIT)
182 LQLIML = MIN (LQLIML,LHEAD)
183 LQLIMH = MAX (LQLIMH,LHEAD)
184 #include "zebra/qtrace99.inc"
187 C------ Error conditions
189 #if defined(CERNLIB_QDEBUG)
192 IQUEST(14) = LQ(KQS+LNEW+2)
197 IQUEST(14) = LX+1 - LCUR
198 93 NQCASE = NQCASE + 1
202 92 NQCASE = NQCASE + 1
204 91 NQCASE = NQCASE + 1
207 #include "zebra/qtofatal.inc"
209 * ==================================================
210 #include "zebra/qcardl.inc"