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.