subroutine sortmm(a,n,nc,k)
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C                                                                    C
C     USAGE: SORT ONE DIMENSION DATA WITH LENGTH N                   C
C     CODE : F77 on IBMSP --- Yuejian Zhu (07/08/99)                 C
C                                                                    C
C     INPUT: array a(n,nc)                                           C
C            n  -- input data length                                 C
C            nc -- variable second dimension (using nc=3)            C
C            k  -- input data location a(*,k)                        C
C                                                                    C
C     OUTPUT: re-order array a(n,nc)                                 C
C            a(n,1) -- original data (if k=1)                        C
C            a(n,2) -- new output after sorting (low -> high)        C
C            a(n,3) -- new output at original order index            C
C                                                                    C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
c--------+----------+----------+----------+----------+----------+----------+--
      dimension a(n,nc),b(n,nc),js(n)
      do i1 = 1, n
      iless = 0
      imore = 0
      ieq   = 0
      aa=a(i1,k)
      do i2 = 1, n
       bb=a(i2,k)
       if ( aa.lt.bb ) iless = iless + 1
       if ( aa.gt.bb ) imore = imore + 1
       if ( aa.eq.bb ) then
          ieq   = ieq   + 1
          js(ieq) = i2
       endif
      enddo
       if ( ieq.eq.1) then
          b(imore+1,2)=aa
          b(imore+1,1)=i1
       else
        do i3 = 1, ieq
          b(imore+i3,2)=aa
          b(imore+i3,1)=js(i3)
        enddo
       endif
      enddo
      do jj= 1, n
        a(jj,3) = b(jj,1)
        a(jj,2) = b(jj,2)
      enddo
      return
      end