]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/packlib/zebra/qutil/zsorti.F
Use tgt_ prefix for binary target directories
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / qutil / zsorti.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.2  1996/04/18 16:13:46  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 ZSORTI (IXSTOR,LGOP,JWORD)
14
15 C-    SORT BANKS AT LGO FOR WORDS IQ(L+JWORD) TO BE IN INCREASING ORDER
16
17 #include "zebra/mqsys.inc"
18 C--------------    END CDE                             --------------
19       DIMENSION    JWORD(9), LGOP(9)
20
21 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
22       DIMENSION    NAMESR(2)
23       DATA  NAMESR / 4HZSOR, 4HTI   /
24 #endif
25 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
26       DATA  NAMESR / 6HZSORTI /
27 #endif
28 #if !defined(CERNLIB_QTRHOLL)
29       CHARACTER    NAMESR*8
30       PARAMETER   (NAMESR = 'ZSORTI  ')
31 #endif
32
33 #include "zebra/q_jbyt.inc"
34
35       LGO = LGOP(1)
36       IF (LGO.EQ.0)          RETURN
37
38 #include "zebra/qtraceq.inc"
39 #include "zebra/qstore.inc"
40
41       JW    = JWORD(1)
42       KGONG = LQSTA(KQT+2) - 1
43       LLNG  = KGONG
44       KGOPL = KGONG - 1
45       LLPL  = KGOPL
46       KEYPL = -1
47       KEYNG =  0
48       IFL   =  0
49
50       LN    = LGO
51       KEYN  = IQ(KQS+LN+JW)
52       IF (KEYN.LT.0 )              GO TO 62
53
54 C--------          +VE IN-SEQUENCE LOOP FOR BANKS WITH +VE KEY
55 C--                          KEEP GOING FOR INCREASING KEYS
56
57    21 LQ(KQS+LLPL) = LN
58       GO TO 24
59
60    23 KEYPL = KEYN
61       LLPL  = LN
62       LN    = LQ(KQS+LN)
63       IF (LN.EQ.0)                 GO TO 81
64       KEYN  = IQ(KQS+LN+JW)
65       IF (KEYN.LT.0 )              GO TO 61
66    24 IF (KEYN-KEYPL)        28, 23, 23
67
68    28 LS = KGOPL
69
70 C--------          OUT-SEQUENCE LOOP, FIND PLACE FOR BANK IN THE CHAIN
71 C--                          OF BANKS ALREADY SORTED, +VE OR -VE CHAIN
72
73    41 LNX = LQ(KQS+LN)
74       IFL = 7
75    43 KS  = LS
76       LS  = LQ(KQS+LS)
77       IF (KEYN-IQ(KQS+LS+JW))   48, 43, 43
78
79    48 LQ(KQS+LN) = LS
80       LQ(KQS+KS) = LN
81       IF (LNX.EQ.0)                GO TO 81
82       LN   = LNX
83       KEYN = IQ(KQS+LN+JW)
84       IF (KEYN.GE.0 )              GO TO 21
85
86 C--------          -VE IN-SEQUENCE LOOP FOR BANKS WITH -VE KEY
87 C--                          KEEP GOING FOR INCREASING KEYS
88
89    61 IFL = 7
90    62 LS = KGONG
91       LQ(KQS+LLNG) = LN
92       IF (KEYNG.NE.0 )             GO TO 64
93
94    63 KEYNG = KEYN
95       LLNG  = LN
96       LN    = LQ(KQS+LN)
97       IF (LN.EQ.0)                 GO TO 81
98       KEYN  = IQ(KQS+LN+JW)
99       IF (KEYN.GE.0 )              GO TO 21
100    64 IF (KEYN-KEYNG)        41, 63, 63
101
102 C----              FINISHED, LINK +VE AND -VE STREAMS, CHAIN K-LINKS
103
104    81 IF (IFL.EQ.0)                GO TO 999
105       LQ(KQS+LLPL) = 0
106       LQ(KQS+LLNG) = LQ(KQS+KGOPL)
107
108       K = LQ(KQS+LGO+2)
109       L = LQ(KQS+KGONG)
110       LQ(KQS+L+2) = K
111       IF (K.NE.0)  LQ(KQS+K)=L
112       LGOP(1) = L
113
114    84 K = L
115       L = LQ(KQS+K)
116       IF (L.EQ.0)                  GO TO 999
117       LQ(KQS+L+2) = K
118       GO TO 84
119
120 #include "zebra/qtrace99.inc"
121       RETURN
122       END
123 *      ==================================================
124 #include "zebra/qcardl.inc"