Fortran on ubuntu using f95 code help

  • Context: Fortran 
  • Thread starter Thread starter bkent9
  • Start date Start date
  • Tags Tags
    Code Fortran Ubuntu
Click For Summary

Discussion Overview

The discussion revolves around troubleshooting Fortran code errors encountered while compiling on Ubuntu using the f95 compiler. Participants are addressing syntax issues and exploring alternative compilers.

Discussion Character

  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant reports errors related to missing parentheses and syntax issues in their Fortran code.
  • Another participant provides a revised version of the code, suggesting corrections to the syntax and structure.
  • A third participant shares the complete code and indicates ongoing compilation errors, seeking further assistance.
  • One participant suggests using the gfortran compiler instead of f95, mentioning potential column length limitations in Fortran code that may cause errors.
  • Another participant confirms that the code compiles without errors using gfortran on Ubuntu 12.04.

Areas of Agreement / Disagreement

There is no consensus on the best approach to resolve the compilation issues, with differing opinions on the choice of compiler and code structure. Some participants advocate for corrections to the existing code, while others suggest switching compilers.

Contextual Notes

Participants mention potential limitations related to Fortran's column length requirements for continuation lines, which may affect code compilation.

bkent9
Messages
4
Reaction score
0
I have the following code with error- I want this general flow. Errors I get are missing ')' at the do while line,
syntax error on the line started with ****(not part of program added after fact)
and expecting END Program statement at line end do

counter=1
user_reaction =3
do while (counter .le. 3 .and. user_reaction .ne. 1 .and. user_reaction .ne. 2)

counter= counter+1
print *, "What reaction would like to look at:"
print *, "1)GP to EP"
print *, "2)GP to Klo"
if (counter.eq. 3) then
**** print *, "Please type a '1' for reaction GP to EP" &
"and '2' for the reaction GP to Klo"
end if
read *, user_reaction
end do
if (user_reaction .ne. 1 .and. user_reaction .ne. 2)
print *, "Failed to get a valid result. Program terminates in error."
STOP
end if
 
Last edited:
Technology news on Phys.org
Code:
      program bkent
      implicit none

      integer :: counter, user_reaction

      counter=1
      user_reaction =3
      do while ((counter .le. 3) .and. (user_reaction .ne. 1) .and. &
                (user_reaction .ne. 2))
      
         counter = counter + 1
         print *, "What reaction would like to look at:"
         print *, "1)GP to EP"
         print *, "2)GP to Klo"
         if (counter.eq. 3) then
            print *, "Please type a 1 for reaction GP to EP", &
            "and 2 for the reaction GP to Klo"
         end if
         read *, user_reaction
      end do
      if ((user_reaction .ne. 1) .and. (user_reaction .ne. 2)) then
         print *, "Failed to get a valid result. Program terminates in error."
         STOP
      end if

      stop
      return

      end program bkent
 
still seeing an error. something else must be off. here is the whole (non commented out) program. I am compiling using the command f95 -o extract extract_file.f

program extract_file

C this program is designed to obtain data from the two files for my two reactions

C user input variables
integer user_reaction
double precision user_energy, user_binWidth
integer counter

c values obtained from data files are stored in these variables
integer num_data_at_mmtm
integer r
real momentum_val
integer gpep, gpklo, SGTi, DSGi
real min_energy(2)
character headerline*50, obs*3 !there is a headerline that I don't want
! obs=observable for given data

C file names and creation
character directory*24
character*9 subdirectory(2)
character*10 filename(2)
directory = '/home/usersname/Desktop/' !usersname entered later on--> temp line
subdirectory(1) = 'GP to EP'
subdirectory(2) = 'GP to KLo'
filename(1) = 'gpep072211'
filename(2) = 'gpkl060311'
c open (unit=gpep,file=filename(1),blank='null')
c open (unit=gpklo,file=filename(2),blank='null')
c open (unit=SGTi,file=gpep_SGT,status='new')
c open (unit=DSGi,file=gpep_DSG,status='new')

C this section pertains to user selected reaction type to analyze
counter=1
user_reaction =3
do while ((counter .le. 3) .and. (user_reaction .ne. 1) .and. &
(user_reaction .ne. 2))

counter = counter + 1
print *, "What reaction would like to look at:"
print *, "1)GP to EP"
print *, "2)GP to Klo"
if (counter.eq. 3) then
print *, "Please type a 1 for reaction GP to EP", &
"and 2 for the reaction GP to Klo"
end if
read *, user_reaction
end do
if ((user_reaction .ne. 1) .and. (user_reaction .ne. 2)) then
print *, "Failed to get a valid result. Program terminates in error."
STOP
end if
stop
return
end program extract_file
 
Try gfortran. Also, why you get the missing ) error is because fortran code can only be 71 or 81 (I can't remember) column spaces long. You need to do a continuation.
 
Works perfectly OK (compiles without any errors) in gfortran on Ubuntu 12.04.
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 20 ·
Replies
20
Views
3K
  • · Replies 17 ·
Replies
17
Views
7K
  • · Replies 19 ·
Replies
19
Views
3K
  • · Replies 8 ·
Replies
8
Views
4K
  • · Replies 5 ·
Replies
5
Views
5K
  • · Replies 8 ·
Replies
8
Views
2K