5 * Revision 1.2 1996/04/18 16:10:45 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 #if defined(CERNLIB_FZALFA)
14 SUBROUTINE FZOASC (LUNP,LBUFAP,LBUFEP,JFAST,LWORKA,LWORKE)
16 C- Dump one physical record to cards in ALFA mode,
17 C- service routine to FZOUT.
19 C- The record is stored in words LQ(LBUFA) to LQ(LBUFE-1)
20 C- It is a 'fast' record if JFAST .NE. 0
21 C- The working space available to FZOASC
22 C- is LQ(LWORKA) to LQ(LWORKE) if LWORKE .NE. 0
23 C- or LQ(LWORKA) to LQ(LBUFC) if LWORKE .EQ. 0
25 #include "zebra/zbcd.inc"
26 #include "zebra/zkrakc.inc"
27 #include "zebra/zstate.inc"
28 #include "zebra/zunit.inc"
29 #include "zebra/mqsysh.inc"
30 C-------------- End CDE --------------
31 DIMENSION LUNP(9), LBUFAP(9), LBUFEP(9)
33 DIMENSION MTYPTR(7), ICHSUM(2)
34 EQUIVALENCE (LUN ,IQUEST(90))
35 EQUIVALENCE (JPUT,IQUEST(91)), (IFLEND,IQUEST(92))
36 EQUIVALENCE (LUPKA,IQUEST(93)), (LUPKE, IQUEST(94))
38 #if defined(CERNLIB_QMVDS)
41 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
43 DATA NAMESR / 4HFZOA, 4HSC /
45 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
46 DATA NAMESR / 6HFZOASC /
48 #if !defined(CERNLIB_QTRHOLL)
50 PARAMETER (NAMESR = 'FZOASC ')
52 DATA MTYPTR / 0, 0, 5, 10, 15, 20, 36 /
54 #include "zebra/q_jbyt.inc"
56 #include "zebra/qtraceq.inc"
90 C-------- Do next word
94 IF (JTYPE.LT.0) GO TO 61
95 #if defined(CERNLIB_QDEVZE)
97 WRITE (IQLOG,9832) LBUFC+1-LBUFA,IWORD,(LQ(LUPK+J),J=0,9)
99 IF (IABS(LQ(LUPK+J)).GT.99) WRITE (IQLOG,9833) LQ(LUPK+J)
104 #if (defined(CERNLIB_QDEVZE))&&(defined(CERNLIB_B32))
105 9832 FORMAT (' DEVZE FZOASC, do word',I4,Z9,' Upk=',8I3,' Next',2I5)
108 #if (defined(CERNLIB_QDEVZE))&&(!defined(CERNLIB_B32))
109 9832 FORMAT (' DEVZE FZOASC, do word',I4,Z17,' Upk=',8I3,' Next',2I5)
110 9833 FORMAT (22X,Z17)
114 JTYPC = MTYPTR(JTYPE+1) + JTYPS
116 C-- same type running
117 IF (JTYPC.EQ.ITYPC) GO TO 36
119 C-- M-type 0 : integers 0 -> 9
121 IF (JTYPE.NE.0) GO TO 41
122 IF (ITYPC.EQ.24) GO TO 36
125 C------ Store next word
127 C-- terminate running type by ']', if any
128 34 IF (ITYPE.NE.0) THEN
138 IF (JBA.EQ.0) GO TO 38
140 C-- place significant bytes
143 37 IQCETK(JPUT) = LQ(LUPK+J)
146 C-- put blank separator for tests
147 #if defined(CERNLIB_FQABLANK)
152 C-- Cumulate check-sum
154 ICHSUM(1) = ICHSUM(1) + JBYT (IWORD,17,16)
155 ICHSUM(2) = ICHSUM(2) + JBYT (IWORD, 1,16)
157 C-- Write line if full
159 IF (JPUT.GE.80) CALL FZOALN
164 IF (LBUFC.EQ.LBUFE) GO TO 81
166 C-- Unpack the next lot, if necc.
168 IF (LUPK.LT.LUPKE) GO TO 31
171 IF (NWWKU.GE.LBUFC-LBUFA) THEN
182 CALL FZOAPK (LBUFC,LBUFE)
186 C------ Type analysis
187 C- come to here if the type of the current word
188 C- is not the one of the running set, and if
189 C- the current M-type is not zero
192 41 NTYPE = LQ(LUPK+8)
195 IF (NTYPE.GE.0) NTYPC = MTYPTR(NTYPE+1) + NTYPS
197 C-- Check next word after current has again ITYPC
198 C- and ITYPC covers JTYPC with 1 or 2 zero bytes
200 IF (JTYPE.NE.ITYPE) GO TO 51
201 IF (NTYPC.NE.ITYPC) GO TO 51
206 C---- The running set is definitely not continued
208 51 IF (JTYPE.LT.5) THEN
216 C---- Start of a new set if this and the next
217 C- two numbers are of the same type
219 IF (NTYPC.NE.JTYPC) GO TO 34
220 IF (LUPK+16.GE.LUPKE) GO TO 34
221 IF (LQ(LUPK+16).NE.JTYPE) GO TO 34
222 IF (LQ(LUPK+17).NE.JTYPS) GO TO 34
230 C------ Repeat last number N+1 times
233 #if defined(CERNLIB_QDEVZE)
234 IF (JTYPE.NE.-43) CALL ZFATAM ('FZOASC - trouble.')
241 LBUFC = LBUFC + IWORD
242 #if defined(CERNLIB_QDEVZE)
249 CALL FZOAPK (LUPK,LUPK+1)
255 C-------- End of record
257 81 IF (IFLEND.NE.0) GO TO 84
265 LQ(LST+1) = ICHSUM(2)
266 CALL FZOAPK (LST,LST+2)
273 84 IF (IFLEND.NE.-1) GO TO 86
282 #include "zebra/qtrace99.inc"
285 * ==================================================
286 #include "zebra/qcardl.inc"