Problem in Extracting Numercial Values in fortran

  • Context: Fortran 
  • Thread starter Thread starter equillibrium
  • Start date Start date
  • Tags Tags
    Fortran
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 3K views
equillibrium
Messages
2
Reaction score
0
Hello all,I have a small doubt. I use F95/90 and IBM compiler.This is a portion of my text file
-----------------------
Alpha Singles Amplitudes
15 3 23 4 -0.186952
15 3 26 4 0.599918
15 3 31 4 0.105048
15 3 23 4 0.186952
Beta Singles Amplitudes
15 3 23 4 0.186952
15 3 26 4 -0.599918
15 3 31 4 -0.105048
15 3 23 4 -0.186952
END
---------------------
I am trying to extract the numerical values from the attached file 1.txt . and I am facing a strange error in the output which I cannot understand. Every time I execute the program it skips the loop between 'Beta' and 'END'. I am trying to read and store the values.
The number of lines inside the Alpha- and beta loop is not fixed. So a simple 'do loop' is of no use to me. I tried the 'do while' but it gives the output as :
-------------------------------------------------------------------------------------
AS 15 3 23 4 -.186952
AS 15 3 26 4 .599918
AS 15 3 31 4 .105048
AS 15 3 23 4 .186952
1525-097 A READ statement using decimal base input found the invalid digit 'a' in the input file. The program will recover by assuming a zero in its place.
1525-097 A READ statement using decimal base input found the invalid digit 'e' in the input file. The program will recover by assuming a zero in its place.
1525-097 A READ statement using decimal base input found the invalid digit 'p' in the input file. The program will recover by assuming a zero in its place.
1525-097 A READ statement using decimal base input found the invalid digit 'l' in the input file. The program will recover by assuming a zero in its place.
This is the end
--------------------------------------------------------------------------------------
Any suggestions would of of great help. I coudn't find the error in logic in my code.I have attached the code (Text.txt).

Thanks in advance
 

Attachments

Last edited by a moderator:
on Phys.org
At one point, you try to execute the statement

160 read(10,'(a4,i2,a6,i1,a4,i2,a6,i1,f12.6)')du1,b,du2,c,du3,d,du4,e,r

while the input file contains

Beta Singles Amplitudes

obviously, your program does not like that.

The inelegant solution that comes to my mind is to first read the entire file as text, counting how many AS and BS data there is. Then reread as numbers, skipping text lines. There is probably a more clever way to it, but that should do it.

And please, please remove the gotos! Having a do while that includes a goto is particularly ugly: at least use an if-then
 
Thank you Dr. Claude for the suggestion.. I used that idea and now it seems to work very nicely for the entire data set. :) :)