Question

Je suis en train de compiler un fichier Fortran ainsi que quelques fichiers .h dans FORTRAN. Les fichiers .h contiennent la définition des blocs communs de variable. Quand je les compiles en Fortran, je reçois l'erreur suivante:

integer knue,ke,knumu,kmu,knutau,ktau,ku,kd,kc,ks,kt,kb,kgamma,
                                      1
Error: Invalid character in name at (1)

Le code où cette erreur se produit est,

Maintenant, ma question est, est-ce point « 1 » où l'erreur est?

Les lignes de code qui prévoit cette erreurs est,

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

Aussi, est-il quelque chose de mal avec la poursuite de manière sont utilisés. J'utilise gfortran pour compiler ce fichier.

Était-ce utile?

La solution

Il semble que vous utilisez continuités de ligne de style Fortran 77 et essayer de compiler avec le style Fortran 90 code de format libre. Vous avez besoin soit de compiler en utilisant l'option de gfortran -ffixed-form ou formater le code en utilisant la ligne de style Fortran 90 continuations:

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 

Autres conseils

J'ai eu ce problème lors de la modification scipy et d'essayer de le compiler. Le suivant était nécessaire indentation pour le faire fonctionner, avec l'étoile * à la colonne 5. Il fonctionne à la fois Fortran 77 et 90 styles.

      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

Pour votre première question, oui le « 1 » désigne normalement le point dans le code où l'erreur se produit. Le code en tant que tel semble correct contraire.

En fait, la colonne de continuation Fortran 77 est le numéro six.

http://web.stanford.edu/class/me200c/tutorial_77/ 03_basics.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top