5 * Revision 1.3 1996/04/24 17:27:35 mclareni
6 * Extend the include file cleanup to dzebra, rz and tq, and also add
7 * dependencies in some cases.
9 * Revision 1.2 1996/04/18 16:14:53 mclareni
10 * Incorporate changes from J.Zoll for version 3.77
12 * Revision 1.1.1.1 1996/03/06 10:47:27 mclareni
16 #include "zebra/pilot.h"
17 SUBROUTINE TZINIT (LUNP,IXDIV)
19 C-- Master routine for title input
21 #include "zebra/zmach.inc"
22 #include "zebra/zstate.inc"
23 #include "zebra/zunit.inc"
24 #include "zebra/mqsys.inc"
25 #include "zebra/eqlqt.inc"
26 #include "zebra/mzcwk.inc"
27 #include "zebra/tzuc.inc"
28 #include "zebra/tzc1.inc"
29 C-------------- END CDE -----------------
30 COMMON /SLATE/ NDSLAT,NESLAT,NFSLAT,NGSLAT,DUMMY(36)
32 EQUIVALENCE (COL(1), LINE(1:1))
34 #if defined(CERNLIB_EQUHOLCH)
36 EQUIVALENCE (CHWORK,IWORK)
41 EQUIVALENCE (IFLAGS(1),IFLLOG)
44 CHARACTER CCTEXT(NCC)*6
46 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
48 DATA NAMESR / 4HTZIN, 4HIT /
50 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
51 DATA NAMESR / 6HTZINIT /
53 #if !defined(CERNLIB_QTRHOLL)
55 PARAMETER (NAMESR = 'TZINIT ')
57 DATA CCTEXT / 'LOG ', 'PR*INT', 'US*ER ', 'KI*LL '
58 +, 'ANY*WA', 'DO ', 'FIN*IS' /
60 #include "zebra/q_sbyt.inc"
63 #include "zebra/qtraceq.inc"
69 IF (L.NE.0) JQDIVI = MZFDIV (-7, L)
70 IF (JQDIVI.EQ.0) JQDIVI = 2
72 IXTITL = MSBYT (JQSTOR,JQDIVI,27,4)
74 C-- invert the order of the title banks,
75 C- so that the new ones can be created at the beginning
77 IF (L.NE.0) CALL ZTOPSY (IXTITL,L)
80 CALL VZERO (NREADY,12)
81 IF (NQLOGL.GE.-1) IFLLOG = 1
84 C-- get the input unit
87 IF (LUNTQ.LT.0) LUNTQ = IQTTIN
88 IF (LUNTQ.EQ.0) LUNTQ = IQREAD
89 #if defined(CERNLIB_QPRINT)
92 IF (JDV.EQ.JQDVSY) JDV = 24
93 WRITE (IQLOG,9000) LUNTQ,JQSTOR,JDV
95 9000 FORMAT (1X/' TZINIT. Read title banks from LUNTQ = ',I3/
96 F10X,'for store',I3,' into division',I3/1X)
99 C---- Look for next control line
101 12 IF (NREADY.NE.0) GO TO 14
103 #include "zebra/tzread1.inc"
106 IF (NCHORG.EQ.0) GO TO 12
107 IF (LINE(1:2).EQ.'*.') GO TO 12
108 IF (LINE(1:4).EQ.'*CMZ') GO TO 12
111 J = INDEX (LINE(1:NCHLN),' #.')
112 IF (J.NE.0) NCHLN = LNBLNK (LINE(1:J))
113 IF (NCHLN.EQ.0) GO TO 12
115 IF (COL(1).NE.'*') GO TO 91
116 IF (IFLLOG.NE.0) WRITE (IQLOG,9012) LINE(1:NCHORG)
117 9012 FORMAT (' > ',A)
119 IF (LINE(1:2).EQ.'*-') GO TO 12
121 NHEAD = MIN (NCHORG,80)
122 LHEAD(1:NHEAD) = LINE(1:NHEAD)
123 CALL CLTOU (LINE(1:NCHLN))
126 C---- Analyse control line
128 JA = ICNEXT (LINE,1,NCHLN) + 1
132 IF (NN.LT.3) GO TO 92
133 JCC = ICNTH (LINE(2:NN),CCTEXT,NCC)
135 C- log print user kill anyw do finis
138 IF (JCC.EQ.0) GO TO 92
139 IF (JCC.EQ.NCC) GO TO 78
141 JA = ICNEXT (LINE,JE+1,NCHLN)
144 IF (JCC.EQ.NCC-1) GO TO 21
146 C-- *LOG, *PRINT, *USER, *KILL, *ANYWAY (OFF)
150 IF (JCC.EQ.2) IFLLOG = 1
154 IF (NN.NE.3) GO TO 92
155 CHWORK = LINE(JA:JA+2)
156 IF (CHWORK(1:3).NE.'OFF') GO TO 92
158 IF (JCC.EQ.1) IFLPRI = 0
161 C-------- Analyse *DO idh idn -opt x --------
163 21 IF (NN.EQ.0) GO TO 92
166 CHWORK(1:NN) = LINE(JA:JA+NN-1)
168 CALL VZERO (IFLEXA,16)
169 #if defined(CERNLIB_EQUHOLCH)
172 #if !defined(CERNLIB_EQUHOLCH)
173 CALL UCTOH (CHWORK,NAME,4,4)
177 24 JA = ICNEXT (LINE,JE+1,NCHLN)
178 IF (JA.GT.NCHLN) GO TO 61
182 IF (COL(JA).NE.'-') THEN
183 IF (IDNUM.GE.0) GO TO 92
184 IDNUM = ICDECI (LINE,JA,JE)
185 IF (IDNUM.LT.0) GO TO 92
186 IF (NGSLAT.NE.0) GO TO 92
190 IDNUM = MAX (IDNUM,0)
191 IF (NN.EQ.1) GO TO 92
194 JOPT = INDEX ('FISENUCA',COL(JA))
195 IF (JOPT.EQ.0) GO TO 92
199 GO TO (31, 34, 36, 37, 39, 41, 44, 47), JOPT
203 C-- option -F(format), Fortran FORMAT
205 31 IF (COL(JA).NE.'(') GO TO 92
206 IF (COL(JE).NE.')') GO TO 92
211 C-- option -Ii or -If ... or -I(text), I/O characteristic
213 34 JOPT = INDEX ('(BIFD', COL(JA))
215 IF (JOPT.EQ.0) GO TO 92
217 IF (NN.NE.1) GO TO 92
222 JE = ICFIND (')', LINE,JA,NCHLN)
223 IF (NGSLAT.EQ.0) GO TO 92
225 CALL MZIOBK (NAME,20, LINE(JA+1:JE-1))
228 C-- option -S[n], true size of the bank
231 IF (NN.EQ.0) GO TO 24
234 C-- option -E[n], exact number of data words
237 IF (NN.EQ.0) GO TO 24
239 C-- option -Nn, bank size
241 39 N = ICDECI (LINE,JA,JE)
242 IF (NGSLAT.NE.0) GO TO 92
244 IF (NAME(4).NE.0) THEN
245 IF (NAME(4).NE.N) GO TO 94
250 C-- option -U[n], call TZUSER
253 IF (NN.EQ.0) GO TO 24
254 IVALUS = ICDECI (LINE,JA,JE)
255 IF (NGSLAT.NE.0) GO TO 92
258 C-- option -C[a][/e], column usage
261 IF (COL(JA).EQ.'/') GO TO 45
262 JCOLA = ICDECI (LINE,JA,JE)
263 IF (JCOLA.LE.0) GO TO 92
264 IF (JCOLA.GE.LGL-3) GO TO 92
265 IF (NGSLAT.EQ.0) GO TO 24
267 IF (COL(JA).NE.'/') GO TO 92
268 45 JCOLE = ICDECI (LINE,JA+1,JE)
269 IF (NGSLAT.NE.0) GO TO 92
270 JCOLE = MIN (JCOLE,LGL)
271 IF (JCOLE.LT.JCOLA+2) GO TO 92
274 C-- option -A[n][C][W]
276 47 CALL TZACW (LINE(JA-1:JE))
277 IF (NCHPW.GE.0) GO TO 24
281 C-------- Read data of next title bank --------
283 61 IDNUM = MAX (IDNUM,0)
284 IF (NAME(4).NE.0) GO TO 63
286 C-- read the data through the scratch area
288 IF (JFMTC1.NE.0) GO TO 93
290 LPUTE = LPUTA + NQWKTT
293 C-- pre-lift the bank for filling
296 CALL MZLIFT (IXTITL,LOLD,LQT(KQT+1),1,NAME,-1)
297 LPUTA = KQS + LOLD + 9
298 LPUTE = LPUTA + NAME(4)
299 IF (JFMTC1.EQ.0) GO TO 66
301 C-- Read data en block with Fortran FORMAT
304 #include "zebra/tzread2.inc"
307 C-- Read data in free-field format
310 IF (NFAULT.NE.0) THEN
311 NFATAL = NFATAL + NFAULT
312 IF (IFLPRE.EQ.0) GO TO 77
316 NWOCC = LPUTX - LPUTA
318 C-- lift the bank and copy the data
320 IF (IFLPRE.EQ.0) THEN
322 CALL MZLIFT (IXTITL,LOLD,LQT(KQT+1),1,NAME,-1)
323 CALL UCOPY (LQ(LPUTA),IQ(KQS+LOLD+1),NAME(4))
326 C-- handle 'exact' or 'size'
328 IF (IFLEXA.NE.0) THEN
329 IF (NWOCC.NE.NAME(4)) GO TO 97
332 IF (IFLSIZ.EQ.0) GO TO 68
334 IF (N.NE.0) CALL VZERO (IQ(KQS+LOLD+1+NWOCC),N)
339 68 IQ(KQS+LOLD-5) = IDNUM
340 IF (IFLTZU+IFLUSE.EQ.0) GO TO 71
344 CALL TZUSER (LQT(KQT+1))
345 IF (LNEW.LT.-1) GO TO 98
346 IF (LNEW.EQ.0) GO TO 71
348 69 CALL MZDROP (IXTITL, LQT(KQT+1), '.')
349 IF (LNEW.EQ.-1) GO TO 77
351 C-- possibly reduce the bank
353 71 N = NAME(4) - NWOCC
356 CALL MZPUSH (IXTITL,L,0,-N,'I')
359 77 IF (NREADY.GE.0) GO TO 12
364 CALL ZTOPSY (IXTITL,L)
366 IF (NFATAL.NE.0) THEN
367 IF (IFLANY.EQ.0) CALL ZFATAM ('TZINIT fails.')
369 #include "zebra/qtrace99.inc"
374 C-- unheaded data line
375 91 IF (IGNORE.NE.0) GO TO 12
376 WRITE (IQLOG,9091) LINE(1:NCHORG)
377 9091 FORMAT (' !!i> ',A)
378 IF (IFLKIL.GT.0) NFATAL = NFATAL + 1
381 C-- faulty control line *xxx
382 92 IF (IFLLOG.EQ.0) WRITE (IQLOG,9012) LHEAD(1:NHEAD)
383 WRITE (IQLOG,9092) BLANK(1:JA)
384 9092 FORMAT (' !!f ',A,'^-> !!! fault')
390 93 IF (IFLLOG.EQ.0) WRITE (IQLOG,9012) LHEAD(1:NHEAD)
392 9093 FORMAT (' !!f fault : -F(...) requires -Nn')
397 94 IF (IFLLOG.EQ.0) WRITE (IQLOG,9012) LHEAD(1:NHEAD)
399 9094 FORMAT (' !!f fault : contradictory bank sizes')
405 96 IF (IFLLOG.EQ.0) WRITE (IQLOG,9012) LHEAD(1:NHEAD)
407 9096 FORMAT (' !!f fault : premature EoF')
412 97 IF (IFLLOG.EQ.0) WRITE (IQLOG,9012) LHEAD(1:NHEAD)
413 WRITE (IQLOG,9097) NAME(4),NWOCC
414 9097 FORMAT (' !!f fault : # of words expected / read=',2I6)
419 98 IF (IFLLOG.EQ.0) WRITE (IQLOG,9012) LHEAD(1:NHEAD)
421 9098 FORMAT (' !!f fault : kill requested by TZUSER')
425 * ==================================================
426 #include "zebra/qcardl.inc"