]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/zebra/qutil/zkrak.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / qutil / zkrak.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.2 1996/04/18 16:13:42 mclareni
6* Incorporate changes from J.Zoll for version 3.77
7*
8* Revision 1.1.1.1 1996/03/06 10:47:15 mclareni
9* Zebra
10*
11*
12#include "zebra/pilot.h"
13 SUBROUTINE ZKRAK (MFLAGP,JLP,JRP,VALP)
14
15#include "zebra/zbcd.inc"
16#include "zebra/zmach.inc"
17#include "zebra/zkrakc.inc"
18#include "zebra/zkrakqu.inc"
19C-------------- END CDE --------------
20
21 COMMON /SLATE/ NDIG, JNEXT, DUMMY(2), NUMOCT(36)
22
23 DIMENSION MFLAGP(9), JLP(9), JRP(9), VALP(9)
24 INTEGER IVAL
25 EQUIVALENCE (VAL,IVAL)
26
27
28#include "zebra/q_jbit.inc"
29#include "zebra/q_jbyt.inc"
30#include "zebra/q_sbyt.inc"
31
32
33 CALL ZKRAKN (MFLAGP,JLP,JRP,VALP)
34 IF (MFMT+1) 21, 40, 99
35
36
37C- MODE = 3 BCD
38C- 2 NUMERIC
39C- 1 EMPTY FIELD
40C- 0 FAULT
41C- -1 SEPARATOR IS FIRST CHAR. IN FIELD
42C- -2 $A, $Q CONTROL ITEM
43C- -3 $. COMMENT $
44
45C- MFMT= 3 HEX
46C- 2 OCTAL
47C- 1 INTEGER
48C- 0 FLOATING
49C- -1 BCD IN A-FORMAT
50C- -2 BCD IN Q-FORMAT
51
52C--- SIGNIFICANCE OF BITS IN MFLAG
53
54C- BIT 1 - 9 LEGAL SEPARATORS
55C- 10 MULTIPLIER LEGAL
56C- 11 NON-DELIMITED BCD STRING LEGAL
57C- 12 $A, $Q CONTROL ITEMS LEGAL
58C- 15 Q-FORMAT (ELSE A-FORMAT)
59C- 16-20 'N' FOR AN/QN
60
61
62C---- NON-DELIMITED BCD STRING
63
64 21 IF (JBIT(MFLAG,11).EQ.0) GO TO 94
65 JR = JDO
66 22 JR = JR + 1
67 IF (JR.GT.JRRAN) GO TO 23
68 NSEP = IQCETK(JR)
69 IF (NSEP.LT.40) GO TO 22
70 23 NCH = JR - JDO
71 JGOTO = 1
72 GO TO 41
73
74C---- $H'----', DELIMITED BCD STRING
75
76 25 IT = IQCETK(JDO)
77 JR = JDO
78 26 JR = JR + 1
79 IF (JR.GT.JRRAN) GO TO 94
80 IF (IQCETK(JR).NE.IT) GO TO 26
81
82 JDO = JDO + 1
83 NCH = JR - JDO
84 IF (NCH.EQ.0) GO TO 94
85 JGOTO = 1
86 GO TO 69
87
88 28 MODE = 3
89 MFMT = -1 - JBIT(MFLAG,15)
90 J = JBYT (MFLAG,16,5)
91 IF (J.EQ.0) J=31
92 IF (MFMT.EQ.-2) J=MIN (J,4)
93 CALL UTRANS (IQHOLK(JDO),VALP(1),NCH, 1,J)
94 NWORDS = JNEXT
95 IF (MFMT.NE.-2) RETURN
96 CALL ZHTOI (VALP(1),VALP(1),NWORDS)
97 99 RETURN
98
99C---- SEPARATOR IS THE FIRST CHARACTER
100
101 40 IF (NSEP.EQ.43) GO TO 51
102 MODE = -1
103 JR = JDO
104 JGOTO = 2
105
106C---- LOCALISE + VALIDATE TERMINATOR NSEP IN IQHOLK(JR)
107
108 41 IF (JR.GT.JRRAN) GO TO 48
109 IF (NSEP.NE.45) GO TO 44
110 IF (IFLBLT.NE.0) GO TO 45
111
112C-- IF NSEP IS NON-TERMINATING BLANK, STEP TO TERMINATOR
113
114 43 NSEP = IQCETK(JR)
115 IF (NSEP.NE.45) GO TO 44
116 JR = JR + 1
117 IF (JR.GT.JRRAN) GO TO 48
118 GO TO 43
119
120C-- CHECK VALID NSEP
121
122 44 NSEP = MIN (NSEP,47)
123 IF (NSEP.LT.40) GO TO 94
124 IF (JBIT(MFLAG,NSEP-39).EQ.0) GO TO 94
125 IF (NSEP.EQ.43) JR=JR-1
126
127 45 JNXGO = JR
128 46 JNXGO = JNXGO + 1
129 IF (JNXGO.GT.JRRAN) GO TO 49
130 IF (IQCETK(JNXGO).EQ.45) GO TO 46
131 GO TO 49
132
133 48 NSEP = 0
134 49 GO TO (28,99,58,89), JGOTO
135
136C---- SEPARATOR 'DOLLAR', SPECIAL ITEMS
137
138 51 IF (JDO+1.GE.JRRAN) GO TO 94
139 JDO = JDO + 2
140 J = IQCETK(JDO-1)
141 IF (J.EQ.8) GO TO 25
142 IF (J.EQ.47) GO TO 66
143 IF (J.EQ.15) GO TO 71
144 IF (J.EQ.27) GO TO 71
145
146 IF (IFLBLT.EQ.0) GO TO 54
147 JTERM = JDO - 1
148 53 JTERM = JTERM + 1
149 IF (JTERM.GT.JRRAN) GO TO 54
150 IF (IQCETK(JTERM).EQ.45) GO TO 53
151
152 54 JR = JTERM - 1
153 NCH = 2*IUFORW (IQHOLK,JDO,JR)
154 JR = JNEXT
155
156C-- HANDLE $A, $A7, $Q, $Q2
157
158 IF (J.EQ.1) GO TO 57
159 IF (J.NE.17) GO TO 94
160 NCH = NCH + 1
161 57 IF (JBIT(MFLAG,12).EQ.0) GO TO 94
162 JGOTO = 3
163 NSEP = IQCETK(JR)
164 GO TO 41
165
166 58 MFLAGP(1) = MSBYT (NCH,MFLAGP(1),15,6)
167 MODE = -2
168 RETURN
169
170C-- $. COMMENT $
171
172 66 JR = JDO - 1
173 67 JR = JR + 1
174 IF (JR.GT.JRRAN) GO TO 68
175 IF (IQCETK(JR).NE.43) GO TO 67
176
177 68 MODE = -3
178 JGOTO = 2
179 69 NSEP = 0
180 IF (JR.GT.JRRAN) RETURN
181 GO TO 45
182
183C---- $O OCTAL
184
185 71 JDO = JDO - 1
186 72 JDO = JDO + 1
187 IF (JDO.GT.JRRAN) GO TO 94
188 IF (IQCETK(JDO).EQ.45) GO TO 72
189
190 IF (IFLBLT.EQ.0) GO TO 76
191 JTERM = JDO
192 74 JTERM = JTERM + 1
193 IF (JTERM.GT.JRRAN) GO TO 76
194 IF (IQCETK(JTERM).NE.45) GO TO 74
195
196 76 NOCT = 0
197 JR = JDO - 1
198 77 JR = JR + 1
199 NSEP = IQCETK(JR)
200 IF (JR.EQ.JTERM) GO TO 81
201 IF (NSEP.EQ.45) GO TO 77
202 J = NSEP - 27
203 IF (J+NOCT.EQ.0) GO TO 77
204 IF (J.LT.0) GO TO 94
205 IF (J.GE.8) GO TO 81
206 IF (NOCT.EQ.36) GO TO 94
207 NOCT = NOCT + 1
208 NUMOCT(NOCT) = J
209 GO TO 77
210
211 81 JGOTO = 4
212 IVAL = 0
213 IF (NOCT.EQ.0) GO TO 41
214 NDOK = (IQBITW-1) / 3
215 N = MIN (NDOK,NOCT)
216 JDF = 1 + NOCT - N
217
218 DO 86 J=JDF,NOCT
219 86 IVAL = 8*IVAL + NUMOCT(J)
220 IF (N.EQ.NOCT) GO TO 41
221 J = 3*NDOK
222 N = IQBITW - J
223 IVAL = MSBYT (NUMOCT(JDF-1),IVAL,J+1,N)
224 GO TO 41
225
226 89 VALP(1) = VAL
227 MODE = 2
228 NWORDS = 1
229 MFMT = 2
230 RETURN
231
232C---- EXITS
233
234 94 MODE = 0
235 RETURN
236 END
237* ==================================================
238#include "zebra/qcardl.inc"