
      SUBROUTINE SORTI (A,IS,IW,IV,N,KX,KY)
C   
C  sort of 2-dimensional Integer array 
C
C  input: A    = array
C         IS   = column index to sort by
C         IW   = number of columns to sort 
C         IV,N = lower, upper limit on line numbers to sort 
C         KX,KY= dimension of array A (lines,columns) 
C  output:  A  = same array after sort
                                                                                
      DIMENSION A(KX,KY),IL(30),IU(30),T(30),TT(30) 
      INTEGER A,T,TT 
      M=1  
      I=IV 
      J=N  
      II=I 
      GOTO114 
  111 IJ=0.01+0.5*(I+J)  
      DO115IX=1,IW 
  115 T(IX)=A(IJ,IX) 
      K=I 
      L=J 
      IF(A(I,IS).GT.T(IS))THEN 
      DO116IX=1,IW 
      A(IJ,IX)=A(I,IX) 
      A(I,IX)=T(IX)
  116 T(IX)=A(IJ,IX) 
      END IF 
      IF(A(J,IS).LT.T(IS))THEN
      DO117IX=1,IW
      A(IJ,IX)=A(J,IX)
      A(J,IX)=T(IX) 
  117 T(IX)=A(IJ,IX) 
      IF(A(I,IS).GT.T(IS))THEN 
      DO118IX=1,IW 
      A(IJ,IX)=A(I,IX) 
      A(I,IX)=T(IX) 
  118 T(IX)=A(IJ,IX) 
      END IF 
      END IF
  112 L=L-1  
      IF(A(L,IS).GT.T(IS))GOTO112 
      DO119IX=1,IW 
  119 TT(IX)=A(L,IX) 
  113 K=K+1 
      IF(A(K,IS).LT.T(IS))GOTO113 
      IF(K.LE.L)THEN 
      DO120IX=1,IW 
      A(L,IX)=A(K,IX) 
  120 A(K,IX)=TT(IX) 
      GOTO112 
      END IF 
      IF((L-I).GT.(J-K))THEN 
      IL(M)=I 
      IU(M)=L 
      I=K 
      ELSE
      IL(M)=K  
      IU(M)=J 
      J=L  
      END IF 
      M=M+1 
  114 IF(J-I.GT.10)GOTO 111
      IF(I.EQ.II)THEN 
      IF(I.LT.J)GOTO111 
      END IF 
      NI=I+1 
      DO121IZ=NI,J  
      I=IZ 
      DO122IX=1,IW  
  122 T(IX)=A(IZ,IX) 
      K=I-1 
      IF(A(K,IS).GT.T(IS))THEN 
  123 DO124IX=1,IW 
  124 A(K+1,IX)=A(K,IX) 
      K=K-1 
      IF(A(K,IS).GT.T(IS))GOTO123 
      DO125IX=1,IW 
  125 A(K+1,IX)=T(IX)
      END IF 
  121 CONTINUE 
      M=M-1 
      IF(M.GE.1)THEN 
      I=IL(M) 
      J=IU(M) 
      GOTO114 
      END IF  
      RETURN 
      END    ! subr. <sorti>
