5 * Revision 1.2 1996/04/18 16:10:40 mclareni
6 * Incorporate changes from J.Zoll for version 3.77
8 * Revision 1.1.1.1 1996/03/06 10:47:11 mclareni
12 #include "zebra/pilot.h"
13 #if defined(CERNLIB_FZMEMORY)
16 C- Read next physical record from memory .
17 C- Service routine to FZIN, called only via FZIREC
19 C- Input : IFLAGI = 0 normal read
20 C- -1 recover to next steering block
22 C- N4SKII is used for rapid skip of fast blocks
24 C- Output : IFLAGI = 0 all is well
25 C- otherwise : ready for re-start
27 #include "zebra/zbcd.inc"
28 #include "zebra/zmach.inc"
29 #include "zebra/zunit.inc"
30 #include "zebra/mqsys.inc"
31 #include "zebra/eqlqf.inc"
32 #include "zebra/fzci.inc"
34 C-------------- End CDE --------------
35 EQUIVALENCE (LRTYP,IDI(2))
36 * Declaratives, DIMENSION etc.
37 #include "fziphrd1.inc"
40 #include "fzstamp.inc"
41 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
43 DATA NAMESR / 4HFZIP, 4HHM /
45 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
46 DATA NAMESR / 6HFZIPHM /
48 #if !defined(CERNLIB_QTRHOLL)
50 PARAMETER (NAMESR = 'FZIPHM ')
54 #include "fziphrd2.inc"
57 #include "zebra/qtrace.inc"
59 C---- Prepare to transfer next record
61 LBUF = IQ(KQSP+LQFI+1)
62 NWMREC = IQ(KQSP+LBPARI+1)
63 NFASTI = IQ(KQSP+LBPARI-5)
65 NBLK = IQ(KQSP+LQFI+22)
67 C-- Skip complete records
69 N4SKIP = MIN (N4SKII,N4RESI)
70 IF (N4SKIP.LT.MAXREI) GO TO 20
71 IF (NFASTI.EQ.0) GO TO 20
72 NRSKIP = MIN (NFASTI, N4SKIP / MAXREI)
73 NW4S = NRSKIP * MAXREI
74 NWMS = NRSKIP * NWMREC
76 N4SKII = N4SKII - NW4S
77 N4RESI = N4RESI - NW4S
78 NWRDAI = NWRDAI + NW4S
79 NFASTI = NFASTI - NRSKIP
85 IQ(KQSP+LBPARI-6) = NFASTI
87 C---- READ ONE PHYSICAL RECORD
89 #if defined(CERNLIB_QDEBPRI)
91 + WRITE (IQLOG,9031) NBLK+1,NW4IN,NWMIN,NFASTI,NRSKIP
92 9031 FORMAT (1X/' FZIPHM- Reading Block',I7,
93 F', NW32,NWmach,NRfast,NRskip=',4I6)
96 C-- Copy, with unpacking or byte-swop if nec.
98 #if defined(CERNLIB_FQNEEDCV)
99 #include "fziphm42.inc"
101 44 CALL UCOPY (LQ(LBUF),LQ(L4STAI),NW4IN)
104 C-- Short/full dump of record read
106 #if defined(CERNLIB_QDEBPRI)
107 IF (LOGLVI.GE.3) CALL FZIDUM (LQ(L4STAI),NW4IN)
110 C-----------------------------------------------------------
111 C---- FAST RECORD EXPECTED
112 C-----------------------------------------------------------
114 51 IF (NFASTI.EQ.0) GO TO 61
117 N4ENDI = MIN (N4RESI,MAXREI)
119 58 NWRDAI = NWRDAI + MAXREI
120 IQ(KQSP+LBPARI-5) = NFASTI
121 IQ(KQSP+LQFI+22) = NBLK + 1
122 IQ(KQSP+LQFI+1) = LBUF + NWMIN
124 #include "zebra/qtrace99.inc"
127 C-----------------------------------------------------------
128 C---- STEERING RECORD EXPECTED
129 C-----------------------------------------------------------
131 61 CALL FZICHH (0, LQ(L4STAI),0)
132 IF (IQUEST(1).NE.0) GO TO 64
136 IF (N4ENDI.EQ.0) N4ENDI=MAXREI
137 IQ(KQSP+LQFI+23) = IQ(KQSP+LQFI+23) + 1
141 C---- Physical record length mis-match
142 C-- Reset if possible
144 64 IF (IQUEST(1).NE.3) GO TO 801
145 IF (LBUF.NE.IQ(KQSP+LQFI+8)) GO TO 802
147 IF (IQUEST(1).EQ.2) GO TO 803
148 IF (IQUEST(1).NE.0) GO TO 802
149 NWMREC = IQ(KQSP+LBPARI+1)
153 C-----------------------------------------------------------
155 C-----------------------------------------------------------
157 C- JERROR = 521 Block header faulty
161 C- JERROR = 522 Block size does not match expectation
164 C- JERROR = 523 Block size larger than buffer
165 803 JERROR = JERROR + 523
170 817 IQ(KQSP+LBPARI-9) = -1
171 IQ(KQSP+LBPARI-6) = 0
172 IQ(KQSP+LBPARI-5) = 0
173 IQ(KQSP+LBPARI-1) = 0
179 * ==================================================
180 #include "zebra/qcardl.inc"