The following is a test program that works on my PC
character tree_name*35, MESSAGE*128
integer*4 unit_use, rec_len, iostat, i, j
integer*4 rec(77)
INTEGER*2 ERROR_NUMBER
real*4 x
!
unit_use = 21
tree_name = 'c:\\tmp\\test.bin'
rec_len = size (rec)
!
write (*,*) 'opening file'
OPEN ( UNIT = Unit_Use, & ! fortran unit number
FILE = TREE_NAME, &
STATUS = 'UNKNOWN', &
ACCESS = 'DIRECT', &
FORM = 'UNFORMATTED', &
ACTION = 'READWRITE', &
RECL = Rec_Len*4, & ! RECL is bytes
IOSTAT = IOSTAT )
!
!z if (iostat /= 0) then
error_number = iostat
call FORTRAN_ERROR_MESSAGE@ (error_number, MESSAGE)
write (*,*) 'IOSTAT =',iostat, ' ', TRIM (MESSAGE)
!z end if
!
write (*,*) 'writing records'
do i = 1,15
rec = i
write (unit=unit_use, rec=i, iostat=iostat) rec
error_number = iostat
call FORTRAN_ERROR_MESSAGE@ (error_number, MESSAGE)
write (*,*) 'RECORD =',i,' IOSTAT =',iostat, ' ', TRIM (MESSAGE)
end do
write (*,*) 'File ',trim(tree_name),' should be',15*rec_len*4,' bytes long'
!
write (*,*) 'reading records'
do i = 1,10
call random_number (x)
j = int (x*15.) + 1
rec = 0
read (unit=unit_use, rec=j, iostat=iostat) rec
error_number = iostat
call FORTRAN_ERROR_MESSAGE@ (error_number, MESSAGE)
write (*,*) 'RECORD =',j,' IOSTAT =',iostat, ' ', TRIM (MESSAGE)
end do
!
end