text:       SUBROUTINE DLAORD( JOB, N, X, INCX )
  *
  *  -- LAPACK auxiliary routine (version 3.0) --
  *     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
  *     Courant Institute, Argonne National Lab, and Rice University
  *     February 29, 1992
  *
  *     .. Scalar Arguments ..
        CHARACTER          JOB
        INTEGER            INCX, N
  *     ..
  *     .. Array Arguments ..
        DOUBLE PRECISION   X( * )
  *     ..
  *
  *  Purpose
  *  =======
  *
  *  DLAORD sorts the elements of a vector x in increasing or decreasing
  *  order.
  *
  *  Arguments
  *  =========
  *
  *  JOB     (input) CHARACTER
  *          = 'I':  Sort in increasing order
  *          = 'D':  Sort in decreasing order
  *
  *  N       (input) INTEGER
  *          The length of the vector X.
  *
  *  X       (input/output) DOUBLE PRECISION array, dimension
  *                         (1+(N-1)*INCX)
  *          On entry, the vector of length n to be sorted.
  *          On exit, the vector x is sorted in the prescribed order.
  *
  *  INCX    (input) INTEGER
  *          The spacing between successive elements of X.  INCX >= 0.
  *
  *  =====================================================================
  *
  *     .. Local Scalars ..
        INTEGER            I, INC, IX, IXNEXT
        DOUBLE PRECISION   TEMP
  *     ..
  *     .. External Functions ..
        LOGICAL            LSAME
        EXTERNAL           LSAME
  *     ..
  *     .. Intrinsic Functions ..
        INTRINSIC          ABS
  *     ..
  *     .. Executable Statements ..
  *
        INC = ABS( INCX )
        IF( LSAME( JOB, 'I' ) ) THEN
  *
  *        Sort in increasing order
  *
           DO 20 I = 2, N
              IX = 1 + ( I-1 )*INC
     10       CONTINUE
              IF( IX.EQ.1 )
       $         GO TO 20
              IXNEXT = IX - INC
              IF( X( IX ).GT.X( IXNEXT ) ) THEN
                 GO TO 20
              ELSE
                 TEMP = X( IX )
                 X( IX ) = X( IXNEXT )
                 X( IXNEXT ) = TEMP
              END IF
              IX = IXNEXT
              GO TO 10
     20    CONTINUE
  *
        ELSE IF( LSAME( JOB, 'D' ) ) THEN
  *
  *        Sort in decreasing order
  *
           DO 40 I = 2, N
              IX = 1 + ( I-1 )*INC
     30       CONTINUE
              IF( IX.EQ.1 )
       $         GO TO 40
              IXNEXT = IX - INC
              IF( X( IX ).LT.X( IXNEXT ) ) THEN
                 GO TO 40
              ELSE
                 TEMP = X( IX )
                 X( IX ) = X( IXNEXT )
                 X( IXNEXT ) = TEMP
              END IF
              IX = IXNEXT
              GO TO 30
     40    CONTINUE
        END IF
        RETURN
  *
  *     End of DLAORD
  *
        END
  