Reading Integer from File End with ``Missing Format for Formatted Data Transfer Done``

Reading Integer from File End with ``Missing Format for Formatted Data Transfer Done``

I'm updating a Fortran program for my needs. The program compiles using f95 and gcc version 4.1.2 (I know it is old, but I can't update it). I want to read parameters from a file and I try this via

      inquire (file="resLast", exist=resExist)
      if (readStart.eq.1.and.resExist) then
         open (unit=18,file='resLast', status='old', action='read')
         read (18) startConf
         read (18) avlength, stdlength, avenergy
         read (18) i,h2(1)
         read (18) i,h2(2)
         read (18) i,h2(4)
         read (18) i,h2(5)
         read (18) i,h2(8)
         read (18) i,h2(9)
         read (18) i,h2(13)
         read (18) i,h2(16)
         read (18) i,h2(17)
         read (18) i,h2(18)
         read (18) i,h2(20)
         read (18) i,h2(25)
         read (18) i,h2(32)
         close (18)
      else
         startConf = 0
         do i=1,32
            h2(i)=0
            comh2(i)=0
         enddo
         avlength=0d0
         stdlength=0d0
         avenergy=0d0
      endif

The input file looks like

           0
   196.090732114834        38451.5752213317        53.4452884569457     
           1  9.188750409521163E-004
           2  4.548226133920252E-004
           4  8.704101492185146E-005
           5  2.175445697503164E-004
           8  4.992044341634028E-005
           9  2.108949411194772E-005
          13  4.304789035813883E-005
          16  4.693072696682066E-005
          17  8.976260141935199E-005
          18  2.737747854553163E-005
          20  5.637826689053327E-005
          25  3.860405195155181E-005
          32  3.193027441739105E-005

When I try to run this I get an error

Fortran runtime error: Missing format for FORMATTED data transfer
done

Which points to the first read line. The startConf variable, as well asi`` is an integer. The rest of the variables are double precision.

I've used this method to read data into integers previously (even in the same code) without problem, where is my current fault?

2 Answers

As you do not specify it explicitely, your open statement assumes a formatted (text) file. When reading from a text file, you have to provide a format as well:

read(18, *) i1

Alternatively, if your file is unformatted (binary), open your file accordingly:

 open (unit=18, file='resLast', status='old', action='read', form='unformatted')
1

read(18,*)is a better choice. you can try this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller
Author

David Miller

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.