! shellitst.f90 for comparison with shellitst.ada and shellitst.cc ! shelli.f90 module sorts implicit none contains subroutine shelli(size,arr1,arr2) integer, intent(in) :: size character (len=3), dimension(:), intent(inout) :: arr1 real , dimension(:), intent(inout) :: arr2 character (len=3) :: temp1 real :: temp2 integer :: i, j, m 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 subroutine shelli end module sorts ! shellitst.f90 program shellitst use sorts implicit none integer :: i character (len=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 program shellitst