Problem in Extracting Numercial Values in fortran

  • Context: Fortran 
  • Thread starter Thread starter equillibrium
  • Start date Start date
  • Tags Tags
    Fortran
Click For Summary
SUMMARY

The discussion addresses an issue with extracting numerical values from a text file using Fortran 95/90 and the IBM compiler. The user encounters errors when attempting to read data between the 'Beta' and 'END' sections, specifically due to the presence of non-numeric characters in the input. A suggested solution involves reading the entire file as text first to count the data entries, followed by a second pass to read the numeric values while skipping text lines. The user reports success after implementing this approach.

PREREQUISITES
  • Understanding of Fortran 95/90 programming
  • Familiarity with file I/O operations in Fortran
  • Knowledge of error handling in Fortran, particularly with READ statements
  • Experience with control flow structures in Fortran, such as loops and conditionals
NEXT STEPS
  • Learn advanced file handling techniques in Fortran, including reading mixed data types
  • Explore error handling strategies in Fortran to manage input/output exceptions
  • Investigate the use of arrays and dynamic memory allocation in Fortran for data storage
  • Study best practices for code structure in Fortran, including avoiding GOTO statements
USEFUL FOR

This discussion is beneficial for Fortran developers, particularly those working with data extraction and file processing, as well as programmers seeking to improve their error handling and code organization skills in Fortran.

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:
Technology news 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. :) :)
 

Similar threads

  • · Replies 12 ·
Replies
12
Views
3K
  • · Replies 22 ·
Replies
22
Views
5K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 16 ·
Replies
16
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 13 ·
Replies
13
Views
5K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 3 ·
Replies
3
Views
4K