Domanda

Sto cercando di compilare un file FORTRAN insieme ad alcuni file .h in FORTRAN. I file .h contengono definizione per i blocchi comuni di variabile. Quando li compilo in Fortran, ottengo il seguente errore:

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

Il codice in cui si verifica questo errore è,

Ora la mia domanda è, questo punto "1" in cui l'errore è?

Le righe di codice che questa errori punti tra

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

Inoltre, c'è qualcosa di sbagliato nel modo in continuazione vengono utilizzati. Sto usando gfortran per compilare questo file.

È stato utile?

Soluzione

Sembra che si sta utilizzando Fortran 77 continuazioni di riga stile e cercando di compilare con Fortran codice formato libero 90 stile. Si sia bisogno di compilare utilizzando l'opzione -ffixed-form gfortran, o formattare il codice utilizzando Fortran continuazioni di riga 90 stile:

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 

Altri suggerimenti

Ho avuto questo problema quando si modificano scipy e cercando di compilarlo. Il seguente identation è reso necessario per farlo funzionare, con il * stella alla colonna 5. Funziona sia per Fortran 77 e 90 stili.

      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

Per la prima domanda, sì, il "1" normalmente indica il punto del codice in cui si verifica l'errore. Il codice in quanto tale sembra ok altrimenti.

In realtà la colonna prosecuzione Fortran 77 è il numero di sei.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top