5 * Revision 1.2 1996/04/18 16:10:31 mclareni
6 * Incorporate changes from J.Zoll for version 3.77
8 * Revision 1.1.1.1 1996/03/06 10:47:13 mclareni
12 #include "zebra/pilot.h"
13 #if defined(CERNLIB_FZFFNAT)
14 SUBROUTINE FZIFFN (JSTAGE)
16 C- Read operations for file format native
19 C- Controlling parameter : JSTAGE
21 C- JSTAGE = 1 : read the first pilot record
22 C- 2 : read the tables into memory
23 C- 3 : read the bank material
25 #include "zebra/zbcd.inc"
26 #include "zebra/zmach.inc"
27 #include "zebra/zunit.inc"
28 #include "zebra/mqsys.inc"
29 #include "zebra/eqlqf.inc"
30 #include "zebra/mzcn.inc"
31 #include "zebra/mzct.inc"
32 #include "zebra/mzcwk.inc"
33 #include "zebra/fzci.inc"
34 #include "zebra/fzcseg.inc"
35 #include "zebra/fzcocc.inc"
36 C-------------- End CDE --------------
39 #if defined(CERNLIB_QMVDS)
42 EQUIVALENCE (MPILOT(1),IPILI(1))
43 EQUIVALENCE (LRTYP,IDI(2)), (ICHDAT,CHDATA)
44 #if defined(CERNLIB_QREADFULL)
45 COMMON /SLATE/ NRSLAT, DUMMY(39)
47 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
49 DATA NAMESR / 4HFZIF, 4HFN /
51 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
52 DATA NAMESR / 6HFZIFFN /
54 #if !defined(CERNLIB_QTRHOLL)
56 PARAMETER (NAMESR = 'FZIFFN ')
58 DATA CHDATA / 12345.0 /
60 #include "zebra/q_jbyt.inc"
62 #include "zebra/qtrace.inc"
64 GO TO (101,201,301), JSTAGE
66 C-----------------------------------------------------
67 C- obtain and digest next pilot record
68 C-----------------------------------------------------
73 CALL XINBS (LUNI,LRTYP,1,LQ(LIN),NWR)
74 #if defined(CERNLIB_QDEBPRI)
75 IF (LOGLVI.GE.3) WRITE (IQLOG,9102) NRECAI+1,NWR,LRTYP
76 9102 FORMAT (' FZIFFN- hunt for pilot, seen LR #',I7,
77 F' with NWRL/LRTYP=',I7,I3)
79 IF (NWR.EQ.0) GO TO 412
80 IF (NWR.LT.0) GO TO 751
82 NWRDAI = NWRDAI + NWR + 3
83 IF (LRTYP.LE.0) GO TO 741
84 IF (LRTYP.GT.9) GO TO 741
85 IF (LRTYP.GE.4) GO TO 102
86 IF (LRTYP.EQ.1) GO TO 427
90 IQ(KQSP+LQFI+15) = IQ(KQSP+LQFI+15) + 1
91 IF (IOPTIR.NE.0) GO TO 102
92 IF (IEVFLI.LT.IOPTIE) GO TO 102
94 CALL UCOPY (LQ(LIN),IPILI,26)
95 #if defined(CERNLIB_QDEBPRI)
96 IF (LOGLVI.GE.3) WRITE (IQLOG,9107,ERR=107) MPILOT,MPILOT
98 9107 FORMAT (10X,'the 10 pilot control words : ',
100 #if (defined(CERNLIB_QDEBPRI))&&(!defined(CERNLIB_HEX))
101 F/1X,4O23/1X,4O23/1X,2O23
102 F/1H0,9X,F13.1,3(9X,I14)/1X,4(9X,I14)/1X,2(9X,I14))
104 #if (defined(CERNLIB_QDEBPRI))&&(defined(CERNLIB_HEX))
105 F/10X,4Z17/10X,4Z17/10X,2Z17
106 F/1H0,9X,F17.1,3I17/10X,4I17/10X,2I17)
108 IF (IPILI(1).NE.ICHDAT) GO TO 742
115 LFIIOC = LQFI + JAUIOC
117 IF (NWUMXI.LE.0) GO TO 121
119 IF (NWUHCI.EQ.0) THEN
124 NWIOI = JBYT (IOCHI(1),7,5)
127 IF (IOCHI(1).GE.8) GO TO 743
128 IF (IOCHI(1).LT.0) GO TO 743
129 IF (IOCHI(1).EQ.0) IOCHI(1)=1
131 J = JBYT (IOCHI(1),12,5)
132 IF (J+1.NE.NWIOI) GO TO 743
134 IQ(KQSP+LFIIOC) = NWIOI
135 CALL UCOPY (IOCHI,IQ(KQSP+LFIIOC+1),NWIOI)
137 NWUHI = NWUHCI - NWIOI
138 LUHEAI = LIN + 10 + NWIOI
139 #if defined(CERNLIB_QDEBPRI)
140 IF (LOGLVI.GE.3) THEN
142 IF (LOGLVI.GE.4) THEN
143 WRITE (IQLOG,9113) NWIOI
144 WRITE (IQLOG,9115) (IOCHI(J),J=1,NWIOI)
147 WRITE (IQLOG,9114) NWUHI,N
148 WRITE (IQLOG,9115) (LQ(LUHEAI+J),J=0,N-1)
150 9113 FORMAT (10X,I2,' words I/O characteristic for UHV =')
151 9114 FORMAT (10X,I4,' words of User Header accepted, dump the first'
154 #if (defined(CERNLIB_QDEBPRI))&&(!defined(CERNLIB_HEX))
155 9115 FORMAT (1X,4O23)
157 #if (defined(CERNLIB_QDEBPRI))&&(defined(CERNLIB_HEX))
158 9115 FORMAT (10X,4Z17)
161 C---- Save the segment table
163 121 LFISEG = LQFI + JAUSEG
164 IF (NWSEGI.EQ.0) GO TO 124
165 IF (NWSEGI.GE.61) GO TO 744
166 IF (NWSEGI.LT.0) GO TO 744
167 IF (NWTABI.EQ.0) THEN
168 NWDONE = NWDONE + NWSEGI
171 CALL UCOPY (LQ(LIN+NWDONE),IQ(KQSP+LFISEG+1),NWSEGI)
172 NWDONE = NWDONE + NWSEGI
174 124 IQ(KQSP+LFISEG) = NWSEGI
176 C---- Save the text vector
178 LTEXT = LQ(KQSP+LQFI-2)
179 IF (LTEXT.NE.0) IQ(KQSP+LTEXT+1)=0
180 IF (NWTXI.EQ.0) GO TO 141
182 C-- Increase the size of the text buffer if necessary
184 IF (LTEXT.EQ.0) GO TO 131
185 NINC = NWTXI + 4 - IQ(KQSP+LTEXT-1)
186 IF (NINC.LE.0) GO TO 131
189 CALL MZPUSH (JQPDVS,LTEXT,0,NINC,'.')
191 C-- Read the text vector
193 131 IF (NWDONE.LT.NWR) GO TO 136
196 CALL XINBS (LUNI,MRTYP,1,LQ(LIN),NWR)
197 #if defined(CERNLIB_QDEBPRI)
198 IF (LOGLVI.GE.3) WRITE (IQLOG,9132) NRECAI+1,NWR,MRTYP
199 9132 FORMAT (10X,'expect pilot continuation, seen LR #',I7,
200 F' with NWRL/LRTYP=',I7,I3)
202 IF (NWR.EQ.0) GO TO 411
203 IF (NWR.LT.0) GO TO 751
205 NWRDAI = NWRDAI + NWR + 3
207 IF (MRTYP-4) 134, 135, 133
208 133 IF (MRTYP.LT.7) GO TO 132
210 IF (LRTYP.EQ.1) GO TO 424
215 C-- Store into the text buffer
217 136 IF (NWR-NWDONE.LT.NWTXI) GO TO 745
219 IQ(KQSP+LTEXT+1) = NWTXI
220 CALL UCOPY (LQ(LIN+NWDONE),IQ(KQSP+LTEXT+5),NWTXI)
222 NWDONE = NWDONE + NWTXI
224 C---- Save early table words
226 141 NTBE = NWR - NWDONE
227 LFIEAR = LQFI + JAUEAR
228 IQ(KQSP+LFIEAR) = NTBE
231 IF (NTBE.NE.NWTABI) GO TO 746
232 IF (NTBE.GE.41) GO TO 746
233 CALL UCOPY (LQ(LIN+NWDONE),IQ(KQSP+LFIEAR+1),NTBE)
237 C-------------------------------------------------
239 C-------------------------------------------------
241 201 LIN = LQTA + NWTABI
243 CALL XINBS (LUNI,LRTYP,1,LQ(LIN),NWR)
244 #if defined(CERNLIB_QDEBPRI)
245 IF (LOGLVI.GE.3) WRITE (IQLOG,9204) NRECAI+1,NWR,LRTYP
246 9204 FORMAT (' FZIFFN- expect table, seen LR #',I7,
247 F' with NWRL/LRTYP=',I7,I3)
249 IF (NWR.EQ.0) GO TO 411
250 IF (NWR.LT.0) GO TO 751
252 NWRDAI = NWRDAI + NWR + 3
253 IF (LRTYP.EQ.1) GO TO 424
254 IF (LRTYP.LT.4) GO TO 732
255 IF (LRTYP.GE.7) GO TO 732
256 IF (LRTYP.GE.5) GO TO 204
258 IF (LIN-LQTE) 204, 999, 747
260 C-------------------------------------------------
262 C-------------------------------------------------
265 302 IF (LQ(LMT+1).NE.0) GO TO 311
267 C-- Skip segment to be ignored
271 #if defined(CERNLIB_QREADFULL)
273 CALL XINBS (LUNI,LRTYP,1,LQ(LIN+2),NWR)
277 #if !defined(CERNLIB_QREADFULL)
279 CALL XINBF (LUNI,LQ(LIN),NWR)
284 #if defined(CERNLIB_QDEBPRI)
285 IF (LOGLVI.GE.3) WRITE (IQLOG,9314) NRECAI+1,IDI
287 IF (NWR.EQ.0) GO TO 411
288 IF (NWR.LT.0) GO TO 751
290 NWRDAI = NWRDAI + IDI(1) + 3
291 IF (LRTYP.EQ.1) GO TO 421
292 IF (LRTYP.LT.5) GO TO 733
293 IF (LRTYP.LT.7) GO TO 304
294 IF (LRTYP.GE.9) GO TO 733
296 IF (NWSK.GE.0) GO TO 307
297 IF (LRTYP.EQ.7) GO TO 304
300 307 IF (NWSK.EQ.0) GO TO 318
303 C-- Read segment to accept
310 CALL XINBS (LUNI,LRTYP,1,LQ(KQS+LIN),NWR)
311 #if defined(CERNLIB_QDEBPRI)
312 IF (LOGLVI.GE.3) WRITE (IQLOG,9314) NRECAI+1,NWR,LRTYP
313 9314 FORMAT (' FZIFFN- expect bank material, seen LR #',I7,
314 F' with NWRL/LRTYP=',I7,I3)
316 IF (NWR.EQ.0) GO TO 411
317 IF (NWR.LT.0) GO TO 751
319 NWRDAI = NWRDAI + NWR + 3
320 IF (LRTYP.EQ.1) GO TO 424
321 IF (LRTYP.LT.5) GO TO 733
322 IF (LRTYP.LT.7) GO TO 314
323 IF (LRTYP.GE.9) GO TO 733
325 IF (LIN.GE.LEND) GO TO 317
326 IF (LRTYP.EQ.7) GO TO 314
329 317 IF (LIN.GT.LEND) GO TO 735
331 IF (LMT.LT.LQMTE) GO TO 302
332 IF (LRTYP.NE.8) GO TO 736
335 C-------------------------------------------------
336 C- end-of-file / end-of-run
337 C-------------------------------------------------
339 C-- Unexpected end-of-file
349 C------ Unexpected start/end of run
356 LFIIOC = LQFI + JAUIOC
357 IQ(KQSP+LFIIOC) = NWRU
358 CALL UCOPY (LQ(LIN),IQ(KQSP+LFIIOC+1),NWRU)
361 C---- Normal S/E-OF-RUN
368 C-------------------------------------------------
370 C-------------------------------------------------
374 C- JERROR = 137 emergency stop record seen
379 C- JERROR = 136 last bank material record needed is not type 8
383 C- JERROR = 135 end of segm read does not coincide with LR
385 IQUEST(14)= (LMT-LQMTA)/8 + 1
386 IQUEST(15)= LEND - LSTA
387 IQUEST(16)= LIN - LEND
391 C- JERROR = 134 end of segm skipped does not coincide with LR
393 IQUEST(14)= (LMT-LQMTA)/8 + 1
394 IQUEST(15)= -LQ(LMT+3)
399 C- record of unexpected record type read
400 C- JERROR = 133 expect bank material
403 C- JERROR = 132 expect pilot continuation for table
404 732 JERROR = JERROR + 1
406 C- JERROR = 131 expect pilot continuation for text vector
407 731 JERROR = 131 + JERROR
408 IF (LRTYP.EQ.9) GO TO 737
415 C- JERROR = 147 table end does not coincide with LR
418 IQUEST(15)= LIN - LQTE
422 C- JERROR = 146 number of early table words wrong
429 C- JERROR = 145 text vector NWTXI words longer than its record
432 IQUEST(15)= NWR - NWDONE
437 C- JERROR = 144 NWSEGI wrong
443 C- JERROR = 143 control wd of I/O char. for user header invalid
451 C- JERROR = 142 check-word which should be 12345.0 is wrong
460 C- JERROR = 141 LRTYP invalid when hunting for pilot
474 #include "zebra/qtrace99.inc"
477 * ==================================================
478 #include "zebra/qcardl.inc"