5 * Revision 1.2 1996/04/18 16:10:44 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 FZOAPK (LBUFCP,LBUFEP)
16 C- Unpack the set of words LQ(LBUFC) to LQ(LBUFE-1) at most
17 C- into LQ(LUPKA) to LQ(LUPKE-1) at most;
18 C- service routine to FZOASC.
20 C- Return LUPKE the adr of the first word after the unpack vector.
21 C- For each word unpacked recognise the type and store 8 numbers:
23 C- normal number repetition N+1 times
24 C- L + 0 type L + 0 -43 to signal repeat
25 C- + 1 sub-type + 1 N for N+2 numbers in all
31 #include "zebra/zstate.inc"
32 #include "zebra/mqsysh.inc"
33 C-------------- End CDE --------------
34 DIMENSION LBUFCP(9), LBUFEP(9)
36 EQUIVALENCE (LUPKA,IQUEST(93)), (LUPKE, IQUEST(94))
39 #include "zebra/q_jbyt.inc"
46 #if defined(CERNLIB_QDEVZE)
47 IF (NQDEVZ.NE.0) CALL VZERO (LQ(LUPK),LUPKE+8-LUPK)
53 M31 = JBYT (IWORD,31,2)
55 C-- Short cut if integer 0->9
57 IF (M31.NE.0) GO TO 14
58 IF (IWORD.GE.10) GO TO 14
67 LQ(LUPK+2) = JBYT (IWORD,26,5)
68 LQ(LUPK+3) = JBYT (IWORD,21,5)
69 LQ(LUPK+4) = JBYT (IWORD,16,5)
70 LQ(LUPK+5) = JBYT (IWORD,11,5)
71 LQ(LUPK+6) = JBYT (IWORD, 6,5)
72 LQ(LUPK+7) = JBYT (IWORD, 1,5)
74 C-- Type : small +ve integer
76 IF (M31.NE.0) GO TO 21
77 IF (LQ(LUPK+2).NE.0) GO TO 31
80 IF (LQ(LUPK+J).NE.0) GO TO 38
84 C-- Type : small negative integer
86 21 IF (M31.NE.3) GO TO 31
87 IF (LQ(LUPK+2).NE.31) GO TO 31
90 IF (LQ(LUPK+J).NE.31) GO TO 38
94 C-- Type : normal words, check short mantissa
98 IF (LQ(LUPK+J).NE.0) GO TO 38
101 C-- Store Main type and sub-type, check repeat
106 IF (LBUFC.EQ.LBUFE) GO TO 49
107 IF (LQ(LBUFC).EQ.IWORD) GO TO 61
108 39 IF (LUPK.LT.LUPKE) GO TO 11
114 C---- Check set of identical words
116 61 NL = LBUFE - LBUFC - 1
119 IF (LQ(LBUFC+J).NE.IWORD) GO TO 64
123 IF (JTYPE.EQ.0) GO TO 39
130 * ==================================================
131 #include "zebra/qcardl.inc"