Error: carácter no válido en el nombre en (1)
Pregunta
Estoy tratando de compilar un archivo Fortran junto con algunos archivos .h en Fortran. Los archivos .h contienen definición de bloques comunes de variable. Cuando los compilo en Fortran, recibo el siguiente error:
integer knue,ke,knumu,kmu,knutau,ktau,ku,kd,kc,ks,kt,kb,kgamma,
1
Error: Invalid character in name at (1)
El código donde ocurre este error es,
Ahora mi pregunta es, ¿este "1" punto donde está el error?
Las líneas de código que señala es que es,
integer knue,ke,knumu,kmu,knutau,ktau,ku,kd,kc,ks,kt,kb,kgamma,
& kw,kz,kgluon,kh1,kh2,kh3,khc,ksnue,kse1,kse2,ksnumu,ksmu1,
& ksmu2,ksnutau,kstau1,kstau2,ksu1,ksu2,ksd1,ksd2,ksc1,ksc2,
& kss1,kss2,kst1,kst2,ksb1,ksb2,kn1,kn2,kn3,kn4,kcha1,kcha2,
& kgluin,kgold0,kgoldc
Además, ¿hay algo malo con la forma en que se usa la continuación? Estoy usando GFORTRAN para compilar este archivo.
Solución
Parece que está utilizando continuaciones de línea de estilo Fortran 77 e intentando compilar con el código de formato gratuito de estilo Fortran 90. O necesitas compilar usando el GFORTRAN -ffixed-form
opción, o formatear el código utilizando continuaciones de línea de estilo Fortran 90:
integer knue,ke,knumu,kmu,knutau,ktau,ku,kd,kc,ks,kt,kb,kgamma, &
kw,kz,kgluon,kh1,kh2,kh3,khc,ksnue,kse1,kse2,ksnumu,ksmu1, &
ksmu2,ksnutau,kstau1,kstau2,ksu1,ksu2,ksd1,ksd2,ksc1,ksc2, &
kss1,kss2,kst1,kst2,ksb1,ksb2,kn1,kn2,kn3,kn4,kcha1,kcha2, &
kgluin,kgold0,kgoldc
Otros consejos
Tuve este problema al modificar scipy
y tratando de compilarlo. La siguiente identación era necesaria para que funcionara, con la estrella *
en la columna 5. Funciona para Fortran 77 y 90 estilos.
double precision a,abseps,abserr,alist,area,area1,area12,area2,
* a1,a2,b,blist,b1,b2,correc,dabs,defabs,defab1,defab2,d1mach,
* dmax1,dres,elist,epmach,epsabs,epsrel,erlarg,erlast,errbnd,
* errmax,error1,error2,erro12,errsum,ertest,f,oflow,resabs,
* reseps,result,res3la,rlist,rlist2,small,uflow,areav
A su primera pregunta, sí, el "1" normalmente denota el punto en el código donde ocurre el error. El código como tal se ve bien de lo contrario.
En realidad, la columna de continuación Fortran 77 es el número seis.
http://web.stanford.edu/class/me200c/tutorial_77/03_basics.html