C shellitst.for or .f77 for comparison with shellitst.c and shellitst.ada C SHELLITST.FOR C SUBROUTINE SHELLI(SIZE,ARR1,ARR2) IMPLICIT INTEGER (A-Z) CHARACTER*3 ARR1(*),TEMP1 REAL ARR2(*),TEMP2 M=SIZE 20 M=M/2 IF(M.LE.0) GO TO 120 DO 100 J=1,SIZE-M I=J 60 CONTINUE IF(ARR1(I).GT.ARR1(I+M)) THEN TEMP1=ARR1(I) ARR1(I)=ARR1(I+M) ARR1(I+M)=TEMP1 TEMP2=ARR2(I) ARR2(I)=ARR2(I+M) ARR2(I+M)=TEMP2 I=I-M IF(I.GT.0) GO TO 60 ENDIF 100 CONTINUE GO TO 20 120 RETURN END PROGRAM SHELLITST CHARACTER*3 ARR1(20) REAL ARR2(20) DATA ARR1/'MMM','NNN','AAA','CCC','BBB','ZZZ','XXX', 1 'PPP','QQQ','DDD','EEE','FFF','GGG','HHH', 2 'III','JJJ','KKK','LLL','OOO','RRR'/ DATA ARR2/1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14., 1 15.,16.,17.,18.,19.,20./ DO 10 I=1,20 PRINT *,ARR1(I),' ',ARR2(I) 10 CONTINUE CALL SHELLI(20,ARR1,ARR2) PRINT *, 'Sorted by name' DO 20 I=1,20 PRINT *,ARR1(I),' ',ARR2(I) 20 CONTINUE END