- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have this error and my code is just below, can someone help me?
read_co2atm.f90(1): error #5082: Syntax error, found '(' when expecting one of: <END-OF-STATEMENT> ;
program read_co2atm(futr_scen, nco2rec, yrco2rec, atmco2rec)
--------------------------^
read_co2atm.f90(21): error #5082: Syntax error, found END-OF-STATEMENT when expecting one of: <REAL_KIND_CON> <REAL_CONSTANT> <DBLPRC_CONSTANT> <DBLPRC_KIND_CON> <QUAPRC_CONSTANT> ...
OPEN(luco2+1, FILE='splmlo_co2_noces.dat', FORM='formatted',
--------------------------------------------------------------------^
read_co2atm.f90(22): error #5082: Syntax error, found '&' when expecting one of: <LABEL> <END-OF-STATEMENT> ; TYPE INTEGER REAL COMPLEX BYTE CHARACTER CLASS DOUBLE ...
& STATUS='old')
------------^
read_co2atm.f90(22): error #5276: Unbalanced parentheses
& STATUS='old')
------------------------^
read_co2atm.f90(22): error #5082: Syntax error, found ')' when expecting one of: <END-OF-STATEMENT> ;
& STATUS='old')
------------------------^
read_co2atm.f90(33): error #5082: Syntax error, found '&' when expecting one of: <LABEL> <END-OF-STATEMENT> ; TYPE INTEGER REAL COMPLEX BYTE CHARACTER CLASS DOUBLE ...
& yrco2rec(irec),atmco2rec(irec)
-------------^
read_co2atm.f90(39): error #5082: Syntax error, found END-OF-STATEMENT when expecting one of: <REAL_KIND_CON> <REAL_CONSTANT> <DBLPRC_CONSTANT> <DBLPRC_KIND_CON> <QUAPRC_CONSTANT> ...
WRITE(*,*) 'Atm. CO2: No. of entries for 1-box atmosphere =',
---------------------------------------------------------------------^
read_co2atm.f90(40): error #5082: Syntax error, found '&' when expecting one of: <LABEL> <END-OF-STATEMENT> ; TYPE INTEGER REAL COMPLEX BYTE CHARACTER CLASS DOUBLE ...
& nco2rec
------------------^
compilation aborted for read_co2atm.f90 (code 1)
My code
program read_co2atm(futr_scen, nco2rec, yrco2rec, atmco2rec)
IMPLICIT NONE
INTEGER maxrec, nmxr
PARAMETER (maxrec=1200, nmxr=700)
REAL yrco2rec(maxrec), atmco2rec(maxrec)
INTEGER luco2, irec
INTEGER nco2rec
INTEGER is, ireadf
INTEGER nsipl, nstab
REAL futco2(nmxr,8)
REAL dummy
CHARACTER*4 futr_scen
luco2=50
OPEN(luco2+1, FILE='splmlo_co2_noces.dat', FORM='formatted',
& STATUS='old')
WRITE(*,*)' '
WRITE(*,*)'--------------------------------------------------'
WRITE(*,*)'Atm. CO2 from fit to Siple-Mauna Loa record'
WRITE(*,*)'--------------------------------------------------'
DO irec=1,maxrec
READ(luco2+1,*,ERR=222,END=222)
& yrco2rec(irec),atmco2rec(irec)
nco2rec = irec
END DO
222 CONTINUE
WRITE(*,*) 'Atm. CO2: No. of entries for 1-box atmosphere =',
& nco2rec
CLOSE(luco2+1)
RETURN
END
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- The Program statement should not have an argument list.
- Most of your lines have seven leading blanks instead of the usual six.
- Continuation marks '&' should be in column-6, but you have them in column-7.
- The main program unit should not contain a RETURN statement
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks mecej4
>$ifort read_co2atm.f90
/opt/intel/opt/intel/compilers_and_libraries_2016.2.181/linux/compiler/lib/intel64_lin/for_main.o: In function `main':
for_main.c:(.text+0x2a): undefined reference to `MAIN__'
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry, I overlooked the name that you gave the file a suffix of ".f90", which is meant to be used for free-format Fortran source. Your file is fixed-format source, so you should call it "read_co2atm.f".
Please attach your updated code and state what name you gave to the source file.
When you attach source code, please do so using the {...} code button on the tool bar, and choose "Fortran".
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ERROR
$ifort read_co2atm.f
read_co2atm.f(21): error #5082: Syntax error, found '&' when expecting one of: <REAL_KIND_CON> <REAL_CONSTANT> <DBLPRC_CONSTANT> <DBLPRC_KIND_CON> <QUAPRC_CONSTANT> ...
OPEN(luco2+1, FILE='splmlo_co2_noces.dat', FORM='formatted', &
-------------------------------------------------------------------^
read_co2atm.f(23): error #5276: Unbalanced parentheses
STATUS='old')
-----------------------^
read_co2atm.f(23): error #5082: Syntax error, found ')' when expecting one of: <END-OF-STATEMENT> ;
STATUS='old')
-----------------------^
read_co2atm.f(33): error #5082: Syntax error, found '&' when expecting one of: , <REAL_KIND_CON> <REAL_CONSTANT> <DBLPRC_CONSTANT> <DBLPRC_KIND_CON> <QUAPRC_CONSTANT> ...
READ(luco2+1,*,ERR=222,END=222) &
--------------------------------------^
read_co2atm.f(34): error #5082: Syntax error, found ',' when expecting one of: => = . [ % (
yrco2rec(irec),atmco2rec(irec)
-------------------------^
read_co2atm.f(40): error #5082: Syntax error, found '&' when expecting one of: <REAL_KIND_CON> <REAL_CONSTANT> <DBLPRC_CONSTANT> <DBLPRC_KIND_CON> <QUAPRC_CONSTANT> ...
WRITE(*,*) 'Atm. CO2: No. of entries for 1-box atmosphere =', &
---------------------------------------------------------------------^
read_co2atm.f(41): error #5082: Syntax error, found END-OF-STATEMENT when expecting one of: => = . [ % ( :
nco2rec
-----------------------^
compilation aborted for read_co2atm.f (code 1)
CODE
SUBROUTINE read_co2atm(futr_scen, nco2rec, yrco2rec, atmco2rec) IMPLICIT NONE INTEGER maxrec, nmxr PARAMETER (maxrec=1200, nmxr=700) REAL yrco2rec(maxrec), atmco2rec(maxrec) INTEGER luco2, irec INTEGER nco2rec INTEGER is, ireadf INTEGER nsipl, nstab REAL futco2(nmxr,8) REAL dummy CHARACTER*4 futr_scen luco2=50 OPEN(luco2+1, FILE='splmlo_co2_noces.dat', FORM='formatted', & STATUS='old') WRITE(*,*)' ' WRITE(*,*)'--------------------------------------------------' WRITE(*,*)'Atm. CO2 from fit to Siple-Mauna Loa record' WRITE(*,*)'--------------------------------------------------' DO irec=1,maxrec READ(luco2+1,*,ERR=222,END=222) & yrco2rec(irec),atmco2rec(irec) nco2rec = irec END DO 222 CONTINUE WRITE(*,*) 'Atm. CO2: No. of entries for 1-box atmosphere =', & nco2rec CLOSE(luco2+1) END
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Well, you converted the program to a subroutine.
You used incorrect notation for indicating continuation lines. An '&' character at the end of a line is used to indicate continuation in free-format. In fixed-format, you place one of the acceptable continuation characters in column-6. Please read your Fortran textbook/manual to get these requirements right.
A subroutine cannot be run by itself. It has to be called by another subprogram or main program. Every program must contain one and only one main program unit and, if needed, any number of subroutine and function subprograms.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear mecej4
I was confused and sent the wrong codes...
PROGRAM try_read_co2atm C ------------------------------------------------------------------ C Test PROGRAM to READ historical atmospheric CO2 (uatm) C IMPLICIT NONE INTEGER maxrec, nmxr PARAMETER (maxrec=1200, nmxr=700) REAL yrco2rec(maxrec), atmco2rec(maxrec) INTEGER luco2, irec INTEGER nco2rec INTEGER is, ireadf INTEGER nsipl, nstab REAL futco2(nmxr,8) REAL dummy CALL read_co2atm('test', nco2rec, yrco2rec, atmco2rec) DO irec=1,nco2rec WRITE(*,'(2f8.2)') yrco2rec(irec),atmco2rec(irec) END DO STOP END
SUBROUTINE read_co2atm(futr_scen, nco2rec, yrco2rec, atmco2rec) IMPLICIT NONE INTEGER maxrec, nmxr PARAMETER (maxrec=1200, nmxr=700) REAL yrco2rec(maxrec), atmco2rec(maxrec) INTEGER luco2, irec INTEGER nco2rec INTEGER is, ireadf INTEGER nsipl, nstab REAL futco2(nmxr,8) REAL dummy CHARACTER*4 futr_scen C OPEN FILE C --------- luco2=50 OPEN(luco2+1, FILE='splmlo_co2_noces.dat', FORM='formatted', & STATUS='old') C -------------------------- C Get atmospheric CO2 data C -------------------------- WRITE(*,*)' ' WRITE(*,*)'--------------------------------------------------' WRITE(*,*)'Atm. CO2 from fit to Siple-Mauna Loa record' WRITE(*,*)'--------------------------------------------------' C ---------------------------------- C READ historical co2 concentrations C ---------------------------------- C READ(luco2+1,200) C 200 FORMAT(////) DO irec=1,maxrec C Read from splco2.dat (historical emissions) READ(luco2+1,*,ERR=222,END=222) & yrco2rec(irec),atmco2rec(irec) nco2rec = irec END DO 222 CONTINUE WRITE(*,*) 'Atm. CO2: No. of entries for 1-box atmosphere =', & nco2rec CLOSE(luco2+1) RETURN END
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The program comprising the two files that you displayed in #7 compile and link fine. However, I cannot run the program since I do not have the data file that it needs to read.
Is your problem solved at this point?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Not yet..
Now I have this
$ ifort try_read_co2atm.f
/tmp/iforteO9RD2.o: In function `MAIN__':
try_read_co2atm.f:(.text+0x51): undefined reference to `read_co2atm_'
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You need to specify all the sources needed. If your subroutine is in a file that you named read_co2atm.f, the command to compile and link would be
$ ifort try_read_co2atm.f read_co2atm.f
If you had more subroutines/functions in more source files, and those routines are needed to run your program, you should have listed all of them, as well.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you very much
I had a little thought about my knowlodge in Fortran
Clearly I was wrong
Thanks again..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am unable to get my results from this code and I cant understand what are the errors can someone correct my code?
thankyou
! program to trace the path of a charged particle under certain magnetic field
program tracer
implicit none
real*8 etahe,etaox,alphastar,KE,omega,t,k,Bx
!initial values
ke=ke*2*10**6*e
omega=0.001
t=0
k=0.21
etahe = 0.2
etaox=0
alpstar=0.01
x=0.24
!dispersion relation to obtain wave vector(number) k
eps1=(1/alphastar*eps)*[(1-etahe-etaox)/(1-x**2)+4*etahe/(1-4**2*
&x**2)+16*etaox/(1-16**2*x**2)]
eps2=(1/alphastar*eps*x)*[1-(1-etahe-etaox)/(1-x**2)+etahe/
&(1-4**2*x**2)-etaox/(1-16**2*x**2)]
eps3=-(1/alphastar*eps**2*x**2)
n**2=1/2*(cos(theta))**2*(eps1*(1+(cos(theta))**2))+sqrt(eps1**2*
&(1-(cos(theta))**2)+4*eps2**2*(cos(tehta)**2))
! Normalization of equations
!choice of normalization
KE=KE/mc**2
ω=ω/Ωeo
t=tΩeo
k=kc/Ωeo
Bx=Bx/Bzo
E=E/cBzo
p=p/mc
x=x/(c/Ωeo)
y=y/(c/Ωeo)
z=z/(c/Ωeo)
pꞌ⊥o=sqrt(KE**2+2KE)
pꞌzo=sqrt(KE**2+2KE)
γ=KE+1
!polarization equations in normalized form
Bꞌwx=(kꞌ/ωꞌ)*cos(ψ)*Eꞌwy
Eꞌwy=(1/cos(ψ))*[(ωꞌ/kꞌ)*Bꞌwx]
Bꞌwz=(kꞌ/ωꞌ)*sin(ψ)*Eꞌwy
Eꞌwx=Eꞌwy*(ϵ1-(kꞌ/ωꞌ)**2)/ϵ2
Eꞌwz=Eꞌwx*((kꞌ/ωꞌ)**2)*cos(ψ)*sin(ψ))/(ϵ3-(kꞌ/ωꞌ)**2)*sin**2(ψ) ! < 0 for ψ<π/2
Bꞌwy=(kꞌ/ωꞌ)*cos(ψ)*Eꞌwx+(kꞌ/ωꞌ)*sin(ψ)*Eꞌwzwe
ω1=(-Ωe/2)*(Bꞌwx+Bꞌwy)
ω2=(-Ωe/2)*(Bꞌwx-Bꞌwy)
a1=(-e*Bzo*c/2)*(Eꞌwx+Eꞌwy)
a2=(-e*Bzo*c/2)(Eꞌwx-Eꞌwy)
!using the normalization parameters
dpꞌ/dtꞌ=-(Eꞌw+(pꞌ×Bꞌw)/γ)-(1/γ)*(pꞌ×Bꞌo)
!Normalization of equation
dpꞌz/dtꞌ=-Eꞌwz*sin(Φ)+(1/2*γ)*(Bꞌwx*pꞌ⊥)[(1+ϵ)*sin(η)+(1-ϵ)
&*sin(η-2Φ)]-(pꞌ⊥/2*γ)*(dBꞌoz/dzꞌ)*[xꞌ*sin(η-Φ)-yꞌ*cos(η-Φ)]
!normalization
dpꞌ⊥/dtꞌ={-pꞌz*Bꞌwx*(1+ϵ)*(1/2*γ)+[Bꞌwx*ωꞌ*(ϵ+1)*(1/2*kꞌ*cos(ψ))
&-Eꞌwz*tan(ψ)(1/2)]}*sin(η)+{-pꞌz*Bꞌwx*(1-ϵ)*(1/2*γ)+[-Bꞌwx*ωꞌ
& *(ϵ-1)*(1/2*kꞌ*cos(ψ))+Eꞌwz*tan(ψ)(1/2)]}*sin(η-2Φ)}+(pꞌz/2*γ)
&*[xꞌ*sin(η-Φ)-yꞌ*cos(η-Φ)]*(dBꞌoz/dzꞌ)
!Normalization
dꞌθ/dtꞌ=(Ωe/Ωeo*γ)-(Ωe/Ωeo*dpꞌ⊥){-pꞌz*Bꞌwx*(1+ϵ)*(1/2γ)+[Bꞌwx*ωꞌ
&*(ϵ+1)*(1/2*kꞌ*cos(ψ))-Eꞌwz*tan(ψ)*(1/2)]}*sin(η)+{-pꞌz*Bꞌwx*
&(1-ϵ)*(1/2*γ)+[-Bꞌwx*ωꞌ*(ϵ-1)*(1/2*kꞌ*cos(ψ))-Eꞌwz*tan(ψ)*(1/2)]}
&*sin(η-2Φ)-(Ωe*Bꞌwz/γ)*(cos(Φ))-(Ωe*pꞌz/γ)*(pꞌ⊥*Bꞌo⊥/pꞌ⊥**2)
!normalization
dphi/dt=Φꞌ=ωꞌ-(kꞌ*pꞌz/γ)*cos(ψ)-(kꞌ*pꞌz/γ)*cos(η-Φ)*sin(ψ)
!normalization
(dη/dtꞌ)=(dθ/dtꞌ)+ωꞌ-kꞌz(dxꞌ/dtꞌ)-kꞌx(dxꞌ/dtꞌ)
!normalization
dz/dt=pz/γ*m
dꞌz/dtꞌ=pꞌz/γ
!normalization
dxꞌ/dtꞌ=(1/γ)*pxꞌ*cos(η-Φ)
!normalization
dyꞌ/dtꞌ=(1/γ)*pꞌ⊥*sin(η-Φ)
!evolution of pitch angle
cos(alpha)=pz/sqrt(pz**2+p⊥**2)
!runge-kutta subroutine
!------------------------------------------------
! Classical 4th-order Runge-Kutta method(OK)
!------------------------------------------------
SUBROUTINE rk4(y,x,h,derivs)
!----------------------------------
include "data.inc"
!----------------------------------
REAL*8 h,x,dydx(ndim,nv),y(ndim,nv)
EXTERNAL derivs
! Given values for the variables y(1:n) and their derivatives dydx(1:n) known at x, use
! the fourth-order Runge-Kutta method to advance the solution over an interval h and return
! the incremented variables as yout(1:n), which need not be a distinct array from y. The
! user supplies the subroutine derivs(x,y,dydx), which returns derivatives dydx at x.
INTEGER i,j
REAL*8 h6,hh,xh,dym(ndim,nv),dyt(ndim,nv),yt(ndim,nv)
hh=h*0.5
h6=h/6.
xh=x+hh
!----------------------------------------------
call derivs(x,y,dydx) ! First step
!----------------------------------------------
do 10 j=1,nv
do 10 i=1,ndim
yt(i,j)=y(i,j)+hh*dydx(i,j)
10 continue
call derivs(xh,yt,dyt) ! Second step
do 11 j=1,nv
do 11 i=1,ndim
yt(i,j)=y(i,j)+hh*dyt(i,j)
11 continue
call derivs(xh,yt,dym) ! Third step
do 12 j=1,nv
do 12 i=1,ndim
yt(i,j)=y(i,j)+h*dym(i,j)
dym(i,j)=dyt(i,j)+dym(i,j)
12 continue
call derivs(x+h,yt,dyt) ! Fourth step
do 13 j=1,nv ! Accumulate increments with proper weights
do 13 i=1,ndim
y(i,j)=y(i,j)+h6*(dydx(i,j)+dyt(i,j)+2.*dym(i,j))
13 continue
return
END
! before obtianing re-genaralize the equations
KE=KE*mc**2
ω=ω*Ωeo
t=t/Ωeo
k=k*Ωeo/c
Bx=Bx*Bzo
E=E*cBzo
p=p*mc
x=x*(c/Ωeo)
y=y*(c/Ωeo)
z=z*(c/Ωeo)
!results
open(1,file='my_code_output.txt',status='new')
read(1,*)x
write(*,*)x
read(1,*)y
write(*,*)y
read(1,*)z
write(*,*)z
read(1,*)location
write(*,*)location
read(1,*)p⊥
write(*,*)p⊥
read(1,*)pz
write(*,*)pz
pitch angle
x, y, z location
pㅗ
p//
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Large parts of your "code" are not Fortran at all. Simply listing equations will not result in their getting solved. You have a subroutine, RK4, which presumably integrates ODEs. However, that subroutine is never called from any of the lines that you showed.
Please take a course in Fortran and numerical methods, or learn the required material by reading textbooks and online tutorials.
Let's look at the last part of your "code". You open a file with STATUS='NEW'; this action, if it succeeds, will create a new file with no contents. You then attempt to read from that file, but there is nothing in the file to read!
Mathematical symbols such as ㅗ cannot be used in variable names.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
' cannot be use as symbol constituent. 'this is text' "in addition to this"
Jim Dempsey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There are very many sample of ODE solvers on the web with many manuals.
If you are able to do the math for program to trace the path of a charged particle under certain magnetic field - then learning Fortran is simple and really you should have learnt to program before you got to a physics course that set a problem such as -- program to trace the path of a charged particle under certain magnetic field
Usually in the academic world you are expected to do your own work --

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page