! Figure 7.7
  program zippy
     use sort
     integer, parameter                     :: array_size = 100
     type (address), dimension (array_size) :: data_array
     integer                                :: i, n, ios
     do i = 1, array_size
        read (unit=*,fmt="(/,a,/,a,/,a,/,a2,i8)", iostat=ios) &
             data_array(i)      ! For iostat= see Section 9.7;
        if (ios/=0) then
           exit
        end if
        write (unit=*,fmt="(/,a,/,a,/,a,/,a2,i8)") data_array(i)
     end do                     ! For editing see Section 9.12.
     n = i - 1
     call selection_sort (data_array(1: n))
     write (unit=*,fmt= "(/,/,a)") "after sorting:"
     do i = 1, n
        write (unit=*,fmt= "(/,a,/,a,/,a,/,a2,i8)") data_array(i)
     end do
  end program zippy
