SUBROUTINE SHELL(D,MAX) INTEGER*2 D(MAX),X M=1 20 IF((2**M).GT.MAX)GO TO 30 M=M+1 GO TO 20 30 M=M-1 M=2**M C 100 K=MAX-M DO 500,J=1,K DO 300,I=J,1,-M IF(D(I+M).GE.D(I))GO TO 500 X=D(I) D(I)=D(I+M) D(I+M)=X 300 CONTINUE 500 CONTINUE M=M/2 IF(M.GT.0)GO TO 100 RETURN END