]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MINICERN/packlib/zebra/qutil/zsorth.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / qutil / zsorth.F
diff --git a/MINICERN/packlib/zebra/qutil/zsorth.F b/MINICERN/packlib/zebra/qutil/zsorth.F
new file mode 100644 (file)
index 0000000..ce81ffe
--- /dev/null
@@ -0,0 +1,135 @@
+*
+* $Id$
+*
+* $Log$
+* Revision 1.3  1998/09/25 09:33:27  mclareni
+* Modifications for the Mklinux port flagged by CERNLIB_PPC
+*
+* Revision 1.2  1996/04/18 16:13:45  mclareni
+* Incorporate changes from J.Zoll for version 3.77
+*
+* Revision 1.1.1.1  1996/03/06 10:47:15  mclareni
+* Zebra
+*
+*
+#include "zebra/pilot.h"
+#if (defined(CERNLIB_VAX))||((defined(CERNLIB_LINUX) && !defined(CERNLIB_PPC)))||(defined(CERNLIB_QMVMI))||(defined(CERNLIB_QMDOS))
+#include "qutyvax/zsorth.F"
+#else
+      SUBROUTINE ZSORTH (IXSTOR,LGOP,JWORD)
+
+C-    SORT BANKS AT LGO FOR WORDS Q(L+JWORD) TO BE IN INCREASING ORDER
+
+C-    ALPHABETIC SORT DONE WITH INTEGER COMPARISON
+C-    THE SIGN-BIT IS CONSIDERED AS AN ORDINARY BIT, FOR CONSISTENCY
+C-    ON ANY GIVEN MACHINE THIS MAY NOT BE VERY SATISFACTORY
+
+#include "zebra/mqsys.inc"
+C--------------    END CDE                             --------------
+      DIMENSION    JWORD(9), LGOP(9)
+#if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
+      DIMENSION    NAMESR(2)
+      DATA  NAMESR / 4HZSOR, 4HTH   /
+#endif
+#if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
+      DATA  NAMESR / 6HZSORTH /
+#endif
+#if !defined(CERNLIB_QTRHOLL)
+      CHARACTER    NAMESR*8
+      PARAMETER   (NAMESR = 'ZSORTH  ')
+#endif
+
+#include "zebra/q_jbyt.inc"
+
+      LGO = LGOP(1)
+      IF (LGO.EQ.0)          RETURN
+
+#include "zebra/qtraceq.inc"
+#include "zebra/qstore.inc"
+
+      JW    = JWORD(1)
+      KGONG = LQSTA(KQT+2) - 1
+      LLNG  = KGONG
+      KGOPL = KGONG - 1
+      LLPL  = KGOPL
+      KEYPL = -1
+      KEYNG =  0
+      IFL   =  0
+
+      LN    = LGO
+      KEYN  = IQ(KQS+LN+JW)
+      IF (KEYN.GE.0 )              GO TO 22
+      GO TO 62
+
+C--------          +VE IN-SEQUENCE LOOP FOR BANKS WITH +VE KEY
+C--                          KEEP GOING FOR INCREASING KEYS
+
+   21 IFL = 7
+   22 LQ(KQS+LLPL) = LN
+      GO TO 24
+
+   23 KEYPL = KEYN
+      LLPL  = LN
+      LN    = LQ(KQS+LN)
+      IF (LN.EQ.0)                 GO TO 81
+      KEYN  = IQ(KQS+LN+JW)
+      IF (KEYN.LT.0 )              GO TO 62
+   24 IF (KEYN-KEYPL)        28, 23, 23
+
+   28 LS = KGOPL
+
+C--------          OUT-SEQUENCE LOOP, FIND PLACE FOR BANK IN THE CHAIN
+C--                          OF BANKS ALREADY SORTED, +VE OR -VE CHAIN
+
+   41 LNX = LQ(KQS+LN)
+      IFL = 7
+   43 KS  = LS
+      LS  = LQ(KQS+LS)
+      IF (KEYN-IQ(KQS+LS+JW))   48, 43, 43
+
+   48 LQ(KQS+LN) = LS
+      LQ(KQS+KS) = LN
+      IF (LNX.EQ.0)                GO TO 81
+      LN   = LNX
+      KEYN = IQ(KQS+LN+JW)
+      IF (KEYN.GE.0 )              GO TO 22
+
+C--------          -VE IN-SEQUENCE LOOP FOR BANKS WITH -VE KEY
+C--                          KEEP GOING FOR INCREASING KEYS
+
+   62 LS = KGONG
+      LQ(KQS+LLNG) = LN
+      IF (KEYNG.NE.0 )             GO TO 64
+
+   63 KEYNG = KEYN
+      LLNG  = LN
+      LN    = LQ(KQS+LN)
+      IF (LN.EQ.0)                 GO TO 81
+      KEYN  = IQ(KQS+LN+JW)
+      IF (KEYN.GE.0 )              GO TO 21
+   64 IF (KEYN-KEYNG)        41, 63, 63
+
+C----              FINISHED, LINK +VE AND -VE STREAMS, CHAIN K-LINKS
+
+   81 IF (IFL.EQ.0)                GO TO 999
+      LQ(KQS+LLNG) = 0
+      LQ(KQS+LLPL) = LQ(KQS+KGONG)
+
+      K = LQ(KQS+LGO+2)
+      L = LQ(KQS+KGOPL)
+      LQ(KQS+L+2) = K
+      IF (K.NE.0)  LQ(KQS+K)=L
+      LGOP(1) = L
+
+   84 K = L
+      L = LQ(KQS+K)
+      IF (L.EQ.0)                  GO TO 999
+      LQ(KQS+L+2) = K
+      GO TO 84
+
+#include "zebra/qtrace99.inc"
+      RETURN
+      END
+*      ==================================================
+#include "zebra/qcardl.inc"
+#endif