! shellitst.f90 for comparison with shellitst.ada and shellitst.c ! shelli.f90 subroutine shelli(size,arr1,arr2) implicit integer (a-z) character*3 arr1(*),temp1 real arr2(*),temp2 m=size do while( m > 1 ) m=m/2 do j=1,size-m i=j do while( i > 0 ) if(arr1(i) > 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 else exit end if end do end do end do return end ! shellitst.f90 program shellitst character*3 arr1(20) real arr2(20) data arr1/'MMM','NNN','AAA','CCC','BBB','ZZZ','XXX', & 'PPP','QQQ','DDD','EEE','FFF','GGG','HHH', & 'III','JJJ','KKK','LLL','OOO','RRR'/ data arr2/1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14., & 15.,16.,17.,18.,19.,20./ do i=1,20 print *,arr1(i),' ',arr2(i) end do call shelli(20,arr1,arr2) print *, 'sorted by name' do i=1,20 print *,arr1(i),' ',arr2(i) end do end