Fortran I can not read character 0A in a bmp file with Compaq Visual Fortran 6.6C

AI Thread Summary
To read the character "0A" in a BMP file using Compaq Visual Fortran 6.6C, it is essential to open the file in binary mode. The character "0A" represents a linefeed, which is typically associated with text files and can cause errors when reading binary files. The discussion highlights that the error "forrtl: severe (268): end of record during read" occurs because the BMP file is being read as if it were a text file. The solution involves modifying the open statement to include FORM='BINARY' to correctly handle the binary data. Additionally, the provided subroutine for reading the BMP header needs to ensure that the file is opened with the appropriate access mode. Clarifications were made regarding the terminology used, emphasizing that FORTRAN is not interpreted in the programming sense but rather in a colloquial context.
roy437
Messages
6
Reaction score
0
I can not read character "0A" in a bmp file with "Compaq Visual Fortran 6.6C"

Hi,

How to read character "0A" in a bmp file with "Compaq Visual Fortran 6.6C"
Here's an excerpt from bmp file:
42 4D 16 02 00 00 00 00 00 00 36 00 00 00 28 00
00 00 10 00 00 00 0A 00 00 00 01 00 18 00 00 00
Because the meeting this character appears error: "forrtl: severe (268): end of record during read, unit 1, file 16x10.bmp"

Thanks
 
Technology news on Phys.org


it seems you are trying to read a binary file with an ascii read function or you've not opened the file as binary.

The 0A you mention is a linefeed character, commonly used to terminate lines of text in ascii files and stripped off when you read a line of text.

BMP files are images files (screen shots...) created on windows machines or by image editors that support that file type.
 


What fortran interpreter?
 


Here are some of the source code:

subroutine read_bmp_header(nfile, file_size, hpix, vpix)

! file_size - in bits
! hpix - numbers horizontal pixels
! vpix - numbers vertical pixels
! reading remains the first pixel

implicit none

character *54 header
character *8 fs, hm, vm
character *4 h

integer (2) i, j, nfile
integer (4) file_size, hpix, vpix

read(nfile, '(a)', advance = 'no') header
do i = 1, 4
j = 7 - i
h(i:i) = header(j:j)
j = 2 * i
write(fs(j-1:j), '(z2.2)') ichar(h(i:i))
j = 23 - i
h(i:i) = header(j:j)
j = 2 * i
write(hm(j-1:j), '(z2.2)') ichar(h(i:i))
j = 27 - i
h(i:i) = header(j:j)
j = 2 * i
write(vm(j-1:j), '(z2.2)') ichar(h(i:i))
end do

read(fs, '(z8)') file_size
read(hm, '(z8)') hpix
read(vm, '(z8)') vpix
return
end

Crashes when reading header !
 


Where is your open() statement for nfile? That is what needs changed. You need FORM='BINARY' in the compaq fortran interpreter.
 


Here is the calling unit:

implicit none

integer (4) file_size, hpix, vpix
integer (2) k, l, m

character *100 fisi
character *54 header
character *1, allocatable :: r(:), g(:), b(:)

open(1, file = fisi)

call read_bmp_header(int2(1), file_size, hpix, vpix)
 


justsomeguy said:
What fortran interpreter?

FORTRAN is interpreted?
 
  • #10


Borek said:
FORTRAN is interpreted?

Yeah, I had the same question. I think he must be using the word in the English language sense, not the computer science sense.
 
  • #11


Using it in the "vmware is melting my brain in another window" sense. Apologies.
 
  • #12


Thank you very much to jedishrfu and justsomeguy !
 

Similar threads

Replies
3
Views
4K
Replies
4
Views
3K
Replies
12
Views
2K
Replies
20
Views
6K
Replies
1
Views
16K
Replies
3
Views
4K
Back
Top