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.

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top