5 * Revision 1.2 1996/04/18 16:11:22 mclareni
6 * Incorporate changes from J.Zoll for version 3.77
8 * Revision 1.1.1.1 1996/03/06 10:47:18 mclareni
12 #include "zebra/pilot.h"
13 SUBROUTINE MZDIV (IXSTOR,IXDIV,CHNAME,NWAP,NWMP,CHOPT)
15 C- Create new division, user called
17 #include "zebra/zbcd.inc"
18 #include "zebra/zstate.inc"
19 #include "zebra/zunit.inc"
20 #include "zebra/zvfaut.inc"
21 #include "zebra/mqsys.inc"
22 #include "zebra/mzct.inc"
23 C-------------- End CDE --------------
24 DIMENSION IXDIV(9),NWAP(9),NWMP(9)
25 CHARACTER *(*) CHNAME, CHOPT
27 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
29 DATA NAMESR / 4HMZDI, 4HV /
31 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
32 DATA NAMESR / 6HMZDIV /
34 #if !defined(CERNLIB_QTRHOLL)
36 PARAMETER (NAMESR = 'MZDIV ')
39 #include "zebra/q_jbit.inc"
40 #include "zebra/q_jbyt.inc"
41 #include "zebra/q_sbit1.inc"
42 #include "zebra/q_sbyt.inc"
43 #include "zebra/q_shiftl.inc"
46 #include "zebra/qtrace.inc"
50 CALL UOPTC (CHOPT,'RMLPC',IQUEST)
51 MODE = IQUEST(1) + 2*IQUEST(2)
52 KIND = MIN (2, IQUEST(3)+2*IQUEST(4)) + 1
55 C-- Printing name of division
59 N = MIN (8, LEN(CHNAME))
60 IF (N.NE.0) CALL UCTOH (CHNAME,NAME,4,N)
62 #include "zebra/qstore.inc"
64 C-- option M, match mode of new division to neighbour
66 IF (MODE.LT.2) GO TO 29
68 IF (KIND.GE.2) GO TO 24
69 IF (JQDVLL.EQ.2) GO TO 29
70 IF (IQMODE(KQT+JQDVLL).NE.0) GO TO 29
73 24 IF (JQDVSY.EQ.20) GO TO 28
74 IF (IQMODE(KQT+JQDVSY+1).NE.0) GO TO 29
78 #if defined(CERNLIB_QPRINT)
80 +WRITE (IQLOG,9029) NAME,JQSTOR,NWALLO,NWMAX,MODE,KIND
81 9029 FORMAT (1X/' MZDIV. Initialize Division ',2A4,' in Store',I3
82 F/10X,'NW/NWMAX=',2I7,', MODE/KIND=',2I3)
84 #if defined(CERNLIB_QDEBUG)
85 IF (IQVSTA.NE.0) CALL ZVAUTX
90 IF (NWALLO.LT.100) GO TO 91
91 IF (NWMAX .LT.NWALLO) GO TO 91
92 IF (MODE .LT.0) GO TO 91
93 IF (MODE .GE.2) GO TO 91
94 IF (KIND .LT.0) GO TO 91
95 IF (KIND .GE.4) GO TO 91
96 IF (JQDVLL+1.EQ.JQDVSY) GO TO 92
98 C---- Push down low divisions, and maybe system division
111 MQDVGA = MSBIT1 (MQDVGA,JQDVSY)
114 NRESV1 = LQSTA(KQT+2) - LQEND(KQT+1) - NQMINR
115 NRESV2 = LQEND(KQT+2) - LQ2END
116 NQRESV = MIN (NRESV1,NRESV2) + NQDVMV
117 IF (NQRESV.LT.0) GO TO 93
127 C-- Create high division, re-number system division
129 IF (JQDIVI.NE.JQDVSY) GO TO 61
132 LQSTA(KQT+JQDVSY) = LQSTA(KQT+JQDVSY+1)
133 LQEND(KQT+JQDVSY) = LQEND(KQT+JQDVSY+1)
134 NQDMAX(KQT+JQDVSY) = NQDMAX(KQT+JQDVSY+1)
135 IQMODE(KQT+JQDVSY) = IQMODE(KQT+JQDVSY+1)
136 IQKIND(KQT+JQDVSY) = IQKIND(KQT+JQDVSY+1)
137 IQRTO(KQT+JQDVSY) = IQRTO(KQT+JQDVSY+1)
138 IQRNO(KQT+JQDVSY) = IQRNO(KQT+JQDVSY+1)
139 NQDINI(KQT+JQDVSY) = NQDINI(KQT+JQDVSY+1)
140 NQDWIP(KQT+JQDVSY) = NQDWIP(KQT+JQDVSY+1)
141 NQDGAU(KQT+JQDVSY) = NQDGAU(KQT+JQDVSY+1)
142 NQDGAF(KQT+JQDVSY) = NQDGAF(KQT+JQDVSY+1)
143 NQDPSH(KQT+JQDVSY) = NQDPSH(KQT+JQDVSY+1)
144 NQDRED(KQT+JQDVSY) = NQDRED(KQT+JQDVSY+1)
145 NQDSIZ(KQT+JQDVSY) = NQDSIZ(KQT+JQDVSY+1)
146 IQDN1(KQT+JQDVSY) = IQDN1(KQT+JQDVSY+1)
147 IQDN2(KQT+JQDVSY) = IQDN2(KQT+JQDVSY+1)
149 NQDWIP(KQT+JQDIVI) = 0
150 NQDGAU(KQT+JQDIVI) = 0
151 NQDGAF(KQT+JQDIVI) = 0
152 NQDPSH(KQT+JQDIVI) = 0
153 NQDRED(KQT+JQDIVI) = 0
154 NQDSIZ(KQT+JQDIVI) = 0
156 LSTA = LQEND(KQT+JQDVSY)
159 C-- Create low division JQDVLL
161 61 LSTA = LQEND(KQT+JQDVLL)
162 MOLL = JBIT (IQMODE(KQT+JQDVLL),1)
167 LSTA = MAX (LSTA, LQSTA(KQT+JQDVLL-1)+IQTABV(KQT+15))
168 LSTA = MIN (LSTA, LQSTA(KQT+JQDVSY)-NWALLO)
170 IQTABV(KQT+15) = NWALLO
172 C-- Update store tables
174 64 IF (MODE.NE.0) LSTA=LSTA+NWALLO
176 MKIND = MSBIT1 (0,JQDIVI)
177 MKIND = MSBIT1 (MKIND,20+KIND)
180 IF (KIND.GE.3) GO TO 65
181 IF (IOPTC.NE.0) GO TO 65
182 MREF = ISHFTL (3, 20)
184 65 LQSTA(KQT+JQDIVI) = LSTA
185 LQEND(KQT+JQDIVI) = LSTA
186 NQDMAX(KQT+JQDIVI) = NWMAX
187 IQMODE(KQT+JQDIVI) = MODE
188 IQKIND(KQT+JQDIVI) = MKIND
189 IQRTO(KQT+JQDIVI) = MREF
190 IQRNO(KQT+JQDIVI) = 9437183
191 NQDINI(KQT+JQDIVI) = NWALLO
192 IQDN1(KQT+JQDIVI) = NAME(1)
193 IQDN2(KQT+JQDIVI) = NAME(2)
195 IQTABV(KQT+8) = JQDVLL
196 IQTABV(KQT+9) = JQDVSY
202 #if defined(CERNLIB_QPRINT)
204 +WRITE (IQLOG,9079) JQDIVI
205 9079 FORMAT (10X,'Division',I3,' initialized.')
208 IXDIV(1) = MSBYT (JQSTOR,JQDIVI,27,4)
209 #include "zebra/qtrace99.inc"
212 C------ Error conditions
221 92 NQCASE = NQCASE + 1
222 91 NQCASE = NQCASE + 1
231 #include "zebra/qtofatal.inc"
233 * ==================================================
234 #include "zebra/qcardl.inc"