5 * Revision 1.2 1996/04/18 16:14:52 mclareni
6 * Incorporate changes from J.Zoll for version 3.77
8 * Revision 1.1.1.1 1996/03/06 10:47:27 mclareni
12 #include "zebra/pilot.h"
15 C-- Read 1 title bank in free field format for TZINIT
17 #include "zebra/zmach.inc"
18 #include "zebra/zstate.inc"
19 #include "zebra/zunit.inc"
20 #include "zebra/mqsys.inc"
21 #include "zebra/eqlqt.inc"
22 #include "zebra/tzuc.inc"
23 #include "zebra/tzc1.inc"
24 C-------------- END CDE -----------------
25 COMMON /SLATE/ NDSLAT,NESLAT,NFSLAT,NGSLAT,NUM(2),DUMMY(34)
27 EQUIVALENCE (COL(1), LINE(1:1))
29 CHARACTER CHTYP*(*), FAULT*20
30 PARAMETER (CHTYP = '#''":')
33 IF (JCOLA.EQ.0) JCOLA = 1
34 IF (JCOLE.EQ.0) JCOLE = LGL
35 IF (NCHPW.EQ.0) NCHPW = 4
41 C-- Print delimitation, unless full line
43 IF (IFLPRI.EQ.0) GO TO 21
44 IF (JCOLE.EQ.LGL) THEN
45 IF (JCOLA.EQ.1) GO TO 21
46 WRITE (IQLOG,9016) BLANK(1:JCOLA)
50 WRITE (IQLOG,9016) BLANK(1:JCOLA), BLANK(1:NB-2)
52 WRITE (IQLOG,9017) BLANK(1:JCOLA), BLANK(1:NB)
56 9016 FORMAT (5X,A,'<-',A,'->')
57 9017 FORMAT (5X,A,'<',A,'>')
59 C---- Read line by line
62 #include "zebra/tzread1.inc"
64 IF (COL(1).EQ.'*') RETURN
66 IF (IFLPRI.NE.0) WRITE (IQLOG,9001) LINE(1:NCHORG)
70 C------ Crack field by field
73 JTKEND = MIN (NCHORG,JCOLE)
75 24 J = ICNEXT (LINE,JTKE+1,JTKEND)
77 IF (MULT.NE.0) GO TO 82
85 JTYP = INDEX (CHTYP,COL(JTKA)) + 1
86 GO TO (61, 31, 41, 41, 43), JTYP
92 31 IF (NTK.LT.2) GO TO 81
93 JIT = INDEX ('.ADNadnOo0Xx', COL(JTKA+1))
95 IF (JIT.EQ.0) GO TO 81
96 IF (JIT.GE.8) GO TO 61
97 IF (JIT.GE.5) JIT = JIT - 3
98 IF (MULT.NE.0) GO TO 82
102 JTKE = ICFIND ('#', LINE,JTKA+2,JTKEND)
106 C-- #AnCW control item
108 CALL TZACW (LINE(JTKA+1:JTKE))
109 IF (NCHPW.GE.0) GO TO 24
114 C-- #Double control item
120 C-- #Normal control item
124 C---- Handling Hollerith
126 41 JTKE = ICFIND (COL(JTKA), LINE,JTKA+1,JTKEND)
127 IF (JTKE.GT.JTKEND) GO TO 83
133 NWDH = (NTK-1) / NCHPW + 1
134 NWDS = NWDH + IFLHC + IFLHW
136 IF (MULT.NE.0) NWDT = NWDT * MULT
137 IF (LPUTX+NWDT.GT.LPUTE) GO TO 84
150 CALL UCTOH (LINE(JTKA:JTKE), LQ(JST),NCHPW, NTK)
154 IF (MULT.EQ.0) GO TO 24
157 CALL UCOCOP (LQ(JST),LQ(JST+NWDS),MULT,NWDS,0,NWDS)
163 61 CALL CKRACK (LINE,JTKA,JTKE,IFLDBL)
164 IF (NFSLAT.LE.0) GO TO 86
165 IF (NGSLAT.NE.0) GO TO 67
166 NWDS = MAX (1, NFSLAT-2)
168 IF (MULT.NE.0) NWDT = NWDT * MULT
169 IF (LPUTX+NWDT.GT.LPUTE) GO TO 84
173 IF (MULT.NE.0) GO TO 64
176 IF (NWDS.EQ.1) GO TO 24
180 64 IF (NWDS.EQ.1) THEN
181 CALL VFILL (LQ(JST),MULT,NUM(1))
183 CALL UCOCOP (NUM,LQ(JST),MULT,NWDS,0,NWDS)
191 IF (COL(JE).NE.'*') GO TO 86
192 IF (NFSLAT.GE.3) GO TO 81
193 IF (MULT.NE.0) GO TO 82
194 IF (NUM(1).LE.1) GO TO 85
206 C- 81 : nothing special
207 C- 82 : pending repeat not allowed
208 C- 83 : missing terminator " or '
209 C- 84 : more data than expected
210 C- 85 : invalid repeat count
211 C- 86 : invalid numeric
215 85 JSTATE = JSTATE + 1
216 84 JSTATE = JSTATE + 1
217 83 JSTATE = JSTATE + 1
218 82 JSTATE = JSTATE + 1
219 81 JSTATE = JSTATE + 1
221 IF (IFLPRI.EQ.0) THEN
222 IF (IPRHEA.EQ.0) THEN
223 WRITE (IQLOG,9012) LHEAD(1:NHEAD)
226 WRITE (IQLOG,9001) LINE(1:JTKEND)
229 IF (JSTATE.EQ.1) THEN
231 ELSEIF (JSTATE.EQ.2) THEN
232 FAULT = 'pending repeat'
233 ELSEIF (JSTATE.EQ.3) THEN
234 FAULT = 'missing terminator'
235 ELSEIF (JSTATE.EQ.4) THEN
236 FAULT = 'too much data'
237 ELSEIF (JSTATE.EQ.5) THEN
238 FAULT = 'invalid repeat count'
239 ELSEIF (JSTATE.EQ.6) THEN
243 WRITE (IQLOG,9091) BLANK(1:JTKA),FAULT
246 IF (JSTATE.NE.4) GO TO 21
250 9012 FORMAT (3X,' > ',A)
251 9091 FORMAT (' !!f',A,'^-> !!! ',A)
253 * ==================================================
254 #include "zebra/qcardl.inc"