Fortran on ubuntu using f95 code help

  • Context: Fortran 
  • Thread starter Thread starter bkent9
  • Start date Start date
  • Tags Tags
    Code Fortran Ubuntu
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
4 replies · 3K views
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:
Physics 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.