]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/zebra/mq/mzdiv.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / mq / mzdiv.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.2 1996/04/18 16:11:22 mclareni
6* Incorporate changes from J.Zoll for version 3.77
7*
8* Revision 1.1.1.1 1996/03/06 10:47:18 mclareni
9* Zebra
10*
11*
12#include "zebra/pilot.h"
13 SUBROUTINE MZDIV (IXSTOR,IXDIV,CHNAME,NWAP,NWMP,CHOPT)
14
15C- Create new division, user called
16
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"
23C-------------- End CDE --------------
24 DIMENSION IXDIV(9),NWAP(9),NWMP(9)
25 CHARACTER *(*) CHNAME, CHOPT
26 DIMENSION NAME(2)
27#if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
28 DIMENSION NAMESR(2)
29 DATA NAMESR / 4HMZDI, 4HV /
30#endif
31#if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
32 DATA NAMESR / 6HMZDIV /
33#endif
34#if !defined(CERNLIB_QTRHOLL)
35 CHARACTER NAMESR*8
36 PARAMETER (NAMESR = 'MZDIV ')
37#endif
38
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"
44
45
46#include "zebra/qtrace.inc"
47
48 NWALLO = NWAP(1)
49 NWMAX = NWMP(1)
50 CALL UOPTC (CHOPT,'RMLPC',IQUEST)
51 MODE = IQUEST(1) + 2*IQUEST(2)
52 KIND = MIN (2, IQUEST(3)+2*IQUEST(4)) + 1
53 IOPTC = IQUEST(5)
54
55C-- Printing name of division
56
57 NAME(1) = IQBLAN
58 NAME(2) = IQBLAN
59 N = MIN (8, LEN(CHNAME))
60 IF (N.NE.0) CALL UCTOH (CHNAME,NAME,4,N)
61
62#include "zebra/qstore.inc"
63
64C-- option M, match mode of new division to neighbour
65
66 IF (MODE.LT.2) GO TO 29
67 MODE = 0
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
71 GO TO 28
72
73 24 IF (JQDVSY.EQ.20) GO TO 28
74 IF (IQMODE(KQT+JQDVSY+1).NE.0) GO TO 29
75 28 MODE = 1
76 29 CONTINUE
77
78#if defined(CERNLIB_QPRINT)
79 IF (NQLOGL.GE.0)
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)
83#endif
84#if defined(CERNLIB_QDEBUG)
85 IF (IQVSTA.NE.0) CALL ZVAUTX
86#endif
87
88C-- Check parameters
89
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
97
98C---- Push down low divisions, and maybe system division
99
100 MQDVGA = 0
101 MQDVWI = 0
102 NQDVMV = -NWALLO
103 IQTNMV = 0
104 JQSTMV = JQSTOR
105 JQDVM1 = 2
106 IF (KIND.LT.2) THEN
107 KIND = 1
108 JQDVM2 = JQDVLL
109 ELSE
110 JQDVM2 = JQDVSY
111 MQDVGA = MSBIT1 (MQDVGA,JQDVSY)
112 ENDIF
113 JQDIVI = JQDVM2
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
118
119 CALL MZTABM
120 CALL MZTABS
121 CALL MZTABR
122 CALL MZTABX
123 CALL MZTABF
124 CALL MZRELX
125 CALL MZMOVE
126
127C-- Create high division, re-number system division
128
129 IF (JQDIVI.NE.JQDVSY) GO TO 61
130 JQDVSY = JQDVSY - 1
131
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)
148
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
155
156 LSTA = LQEND(KQT+JQDVSY)
157 GO TO 64
158
159C-- Create low division JQDVLL
160
161 61 LSTA = LQEND(KQT+JQDVLL)
162 MOLL = JBIT (IQMODE(KQT+JQDVLL),1)
163
164 JQDVLL = JQDVLL + 1
165 JQDIVI = JQDVLL
166 IF (MOLL.EQ.0) THEN
167 LSTA = MAX (LSTA, LQSTA(KQT+JQDVLL-1)+IQTABV(KQT+15))
168 LSTA = MIN (LSTA, LQSTA(KQT+JQDVSY)-NWALLO)
169 ENDIF
170 IQTABV(KQT+15) = NWALLO
171
172C-- Update store tables
173
174 64 IF (MODE.NE.0) LSTA=LSTA+NWALLO
175
176 MKIND = MSBIT1 (0,JQDIVI)
177 MKIND = MSBIT1 (MKIND,20+KIND)
178
179 MREF = 0
180 IF (KIND.GE.3) GO TO 65
181 IF (IOPTC.NE.0) GO TO 65
182 MREF = ISHFTL (3, 20)
183
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)
194
195 IQTABV(KQT+8) = JQDVLL
196 IQTABV(KQT+9) = JQDVSY
197 CALL MZXRUP
198
199
200C-- Return IXDIV
201
202#if defined(CERNLIB_QPRINT)
203 IF (NQLOGL.GE.0)
204 +WRITE (IQLOG,9079) JQDIVI
205 9079 FORMAT (10X,'Division',I3,' initialized.')
206#endif
207
208 IXDIV(1) = MSBYT (JQSTOR,JQDIVI,27,4)
209#include "zebra/qtrace99.inc"
210 RETURN
211
212C------ Error conditions
213
214 93 NQCASE = 1
215 NQFATA = 4
216 IQUEST(18) = NQRESV
217 IQUEST(19) = -NQDVMV
218 IQUEST(20) = NRESV1
219 IQUEST(21) = NRESV2
220
221 92 NQCASE = NQCASE + 1
222 91 NQCASE = NQCASE + 1
223 NQFATA = NQFATA + 7
224 IQUEST(11) = NAME(1)
225 IQUEST(12) = NAME(2)
226 IQUEST(13) = NWALLO
227 IQUEST(14) = NWMAX
228 IQUEST(15) = MODE
229 IQUEST(16) = KIND
230 IQUEST(17) = IOPTC
231#include "zebra/qtofatal.inc"
232 END
233* ==================================================
234#include "zebra/qcardl.inc"