5 * Revision 1.2 1996/04/18 16:10:36 mclareni
6 * Incorporate changes from J.Zoll for version 3.77
8 * Revision 1.1.1.1 1996/03/06 10:47:14 mclareni
12 #include "zebra/pilot.h"
13 SUBROUTINE FZIN (LUNP,IXDIVP,LSUPP,JBIASP,CHOPT,NUHP,IUHEAD)
15 C- MAIN SEQUENTIAL INPUT ROUTINE, USER CALLED
17 #include "zebra/zbcd.inc"
18 #include "zebra/zmach.inc"
19 #include "zebra/zunit.inc"
20 #include "zebra/zvfaut.inc"
21 #include "zebra/mqsys.inc"
22 #include "zebra/eqlqf.inc"
23 #include "zebra/mzcn.inc"
24 #include "zebra/mzct.inc"
25 #include "zebra/fzci.inc"
26 #include "zebra/fzcseg.inc"
27 #include "zebra/fzcocc.inc"
28 C-------------- End CDE --------------
29 DIMENSION LUNP(9),IXDIVP(9),LSUPP(9),JBIASP(9)
30 DIMENSION NUHP(9),IUHEAD(99)
32 EQUIVALENCE (MOPTV(1),IOPTIE)
33 EQUIVALENCE (LRTYP,IDI(2))
35 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
37 DATA NAMESR / 4HFZIN, 4H /
39 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
40 DATA NAMESR / 6HFZIN /
42 #if !defined(CERNLIB_QTRHOLL)
44 PARAMETER (NAMESR = 'FZIN ')
48 #include "zebra/qtrace.inc"
52 CALL UOPTC (CHOPT,'ERSATDFGH234',IOPTIE)
53 IOPTIF = IOPTIF + IOPTIG + IOPTIH
54 IF (IOPTI2(1).NE.0) IOPTIR = 2
55 IF (IOPTI2(2).NE.0) IOPTIR = 3
56 IF (IOPTI2(3).NE.0) IOPTIR = 4
58 C-- Set current input unit
60 IF (LUNNI.NE.LUNI) CALL FZLOC (LUNNI,1)
61 #if defined(CERNLIB_QDEBPRI)
63 IF (LOGLVI.GE.3) WRITE (IQLOG,9110)
64 WRITE (IQLOG,9111) LUNNI,NUHP(1),MOPTV
67 9111 FORMAT (' FZIN- Entered for LUN=',I4,' NUH=',I5,
68 F' E/R/S/A/T/D= ',6I1)
71 NWRDAI = IQ(KQSP+LQFI+20)
72 NRECAI = IQ(KQSP+LQFI+21)
77 JOPT = IOPTIT + IOPTIA + IOPTID
78 IF (JOPT.EQ.0) GO TO 141
80 C-- Re-entry for pending d/s
82 IF (IOPTIR.NE.0) GO TO 714
83 LRTYP = IQ(KQSP+LQFI+27)
84 NWTABI = IQ(KQSP+LQFI+41)
85 NWBKI = IQ(KQSP+LQFI+42)
86 LENTRI = IQ(KQSP+LQFI+43)
87 IF (JOPT.GE.2) GO TO 711
88 IF (LRTYP.GE.5) GO TO 712
89 IF (LRTYP.LE.1) GO TO 712
90 IF (IOPTIT.NE.0) GO TO 121
93 IF (IOPTIA.NE.0) GO TO 154
96 C---- Ready segment table for the user
98 121 LFISEG = LQFI + JAUSEG
99 NQSEG = IQ(KQSP+LFISEG) / 3
102 CALL UCOPY (IQ(KQSP+LFISEG+1),IQSEGH,N)
103 CALL VZERO (IQSEGD,NQSEG)
109 C-----------------------------------------------------
110 C- obtain and digest next pilot record
111 C-----------------------------------------------------
113 141 IF (IACTVI.GE.6) GO TO 701
114 #if defined(CERNLIB_QDEBUG)
115 IF (IQVSTA.NE.0) THEN
118 IF (IQVID(2).NE.ISV) THEN
119 IQVREM(1,3) = IQVID(1)
120 IQVREM(2,3) = IQVID(2)
127 JPENDG = IQ(KQSP+LQFI+30)
129 IF (JPENDG.EQ.1) GO TO 301
130 IF (JPENDG.EQ.2) GO TO 311
132 #if defined(CERNLIB_FZFFNAT)
133 IF (IFIFOI.EQ.0) THEN
139 144 IF (JRETCD.NE.0) GO TO 391
141 IF (NWBKI.EQ.0) IQ(KQSP+LQFI+17) = IQ(KQSP+LQFI+17) + 1
143 C-- check DAT record wanted / needed
145 IF (IOPTIF+IPILI(3).EQ.0) GO TO 145
147 IF (IOPTIH.NE.0) THEN
148 IF (IPILI(3).NE.1) GO TO 142
152 IF (IPILI(3).NE.0) THEN
153 IF (IOPTIF.EQ.0) GO TO 142
156 C-- Copy header vector to user
158 145 IF (NWUMXI.LE.0) GO TO 146
159 NWUHI = MIN (NWUHI, NWUMXI)
161 IF (NWUHI.GT.0) CALL UCOPY (LQ(LUHEAI),IUHEAD,NWUHI)
163 C-- Return if selective call
165 146 IF (IOPTIS.EQ.0) GO TO 154
166 IQ(KQSP+LQFI+41) = NWTABI
167 IQ(KQSP+LQFI+42) = NWBKI
168 IQ(KQSP+LQFI+43) = LENTRI
169 #if defined(CERNLIB_QDEBPRI)
170 IF (LOGLVI.GE.3) WRITE (IQLOG,9146)
171 9146 FORMAT (' FZIN- Exit for S option.')
175 C-------------------------------------------------
176 C- read table and d/s, relocate
177 C-------------------------------------------------
179 C-- Re-entry with D-option
181 151 IF (IQSGLU.NE.LUNI) GO TO 713
184 C-- Re-entry with A-option
187 155 IF (NWBKI.NE.0) GO TO 157
195 C-- Get store / division
197 157 CALL MZSDIV (IXDIVI,7)
198 IF (JQDIVI.EQ.0) JQDIVI=2
199 LQSYSR(KQT+1) = LSUPP(1)
201 #if defined(CERNLIB_QDEBPRI)
203 + WRITE (IQLOG,9157) JQSTOR,JQDIVI,NWTABI,NWBKI
204 9157 FORMAT (' FZIN- accept d/s into STORE/def.DIV.=',2I4,
205 F' need memory for NWTB/NWBK=',I5,I7)
208 C-- Ready memory occupation table, reserve space
211 IF (JRETCD.NE.0) GO TO 390
215 LFIEAR = LQFI + JAUEAR
216 NTBE = IQ(KQSP+LFIEAR)
219 CALL UCOPY (IQ(KQSP+LFIEAR+1),LQ(LTBR),NWTABI)
223 C-- Read the long table
225 IF (NWTABI.EQ.0) GO TO 159
226 #if defined(CERNLIB_FZFFNAT)
227 IF (IFIFOI.EQ.0) THEN
233 158 IF (JRETCD.NE.0) GO TO 391
238 #if defined(CERNLIB_FZFFNAT)
239 IF (IFIFOI.EQ.0) THEN
245 160 IF (JRETCD.NE.0) GO TO 391
250 IF (JRETCD.NE.0) GO TO 391
252 C-------------------------------------------------------------
253 C- done : link and return
254 C-------------------------------------------------------------
260 LSUPP(1) = LQSYSR(KQT+1)
261 CALL ZSHUNT (IXDIVI,LENTRI,LSUPP,JB,1)
264 IQ(KQSP+LQFI+16) = IQ(KQSP+LQFI+16) + 1
267 #if defined(CERNLIB_QDEBPRI)
268 IF (LOGLVI.GE.3) WRITE (IQLOG,9189) NWTABI,NWBKI,IEVFLI
269 9189 FORMAT (' FZIN- exit for d/s with NWTB,NWBK,IEVENT=',
274 C-------------------------------------------------------------
275 C- Exit to exceptions
276 C-------------------------------------------------------------
283 C-- Pending start/end of run
285 311 LFIIOC = LQFI + JAUIOC
286 NWUHI = IQ(KQSP+LFIIOC)
288 CALL UCOPY (IQ(KQSP+LFIIOC+1),LQ(LUHEAI),NWUHI)
294 390 IF (JRETCD.LT.0) GO TO 155
295 391 IF (JRETCD.NE.-2) GO TO 781
297 C-------------------------------------------------
298 C- end-of-file / end-of-run
299 C-------------------------------------------------
301 C---- Normal S/E-OF-RUN
304 IF (LQ(LUHEAI).GT.0) GO TO 424
308 IF (IOPTIR.EQ.1) GO TO 142
309 IF (IOPTIR.GE.IACTVI) GO TO 142
314 424 IF (IOPTIR.GE.2) GO TO 142
315 427 IF (NWUMXI.LE.0) GO TO 997
316 NWUHI = MIN (NWUHI-1, NWUMXI)
318 IF (NWUHI.GT.0) CALL UCOPY (LQ(LUHEAI+1),IUHEAD(1),NWUHI)
321 C-------------------------------------------------
323 C-------------------------------------------------
325 C-- Reading beyond end-of-data
327 701 IF (IACTVI.EQ.8) GO TO 142
328 IF (IACTVI.EQ.18) GO TO 142
334 C- JERROR = 14 options (R,2,3,4) not allowed with (T,A,D)
337 C- JERROR = 13 no segment table for entry with D option
338 713 JERROR = JERROR + 1
340 C- JERROR = 12 no pending d/s for entry with T A D options
341 712 JERROR = JERROR + 1
343 C- JERROR = 11 multiple options T A D not allowed
344 711 JERROR = 11 + JERROR
347 C------ Print error message
351 C-- Abandon reserved space, if any
353 IF (NQOCC.EQ.0) GO TO 997
357 IF (IQMODE(KQT+JDIV).EQ.0) THEN
358 LQEND(KQT+JDIV) = LQEND(KQT+JDIV) - NW
360 LQSTA(KQT+JDIV) = LQSTA(KQT+JDIV) + NW
368 IQUEST(5) = IQ(KQSP+LQFI+31)
369 IQUEST(6) = IQ(KQSP+LQFI+32)
371 IQUEST(12) = IPILI(3)
374 LFIIOC = LQFI + JAUIOC
375 NWIOI = IQ(KQSP+LFIIOC)
376 CALL UCOPY (IQ(KQSP+LFIIOC),IQUEST(20),NWIOI+1)
378 IF (NWRDAI.GE.1000000) THEN
379 IQ(KQSP+LQFI+19) = IQ(KQSP+LQFI+19) + 1
380 NWRDAI = NWRDAI - 1000000
383 997 IQ(KQSP+LQFI+26) = IQUEST(1)
384 IQ(KQSP+LQFI+27) = LRTYP
385 IQ(KQSP+LQFI+2) = IACTVI
386 IQ(KQSP+LQFI+20) = NWRDAI
387 IQ(KQSP+LQFI+21) = NRECAI
389 IQUEST(3) = IQ(KQSP+LQFI+22)
392 #include "zebra/qtrace99.inc"
395 * ==================================================
396 #include "zebra/qcardl.inc"