2016-09-14 5 views
-2

Dies ist Unterroutine StrlenWas macht Strlen eigentlich?

 subroutine strlen(string,i1,i2) 
     character string*(*) 
     do 10 i=len(string),1,-1 
     if(string(i:i).ne.' ')then 
      i2=i 
      goto 11 
     endif 
    10 continue 
    11 do 20 i=1,len(string) 
     if(string(i:i).ne.' ')then 
      i1=i 
      return 
     endif 
    20 continue 
     return 
     end 

Im Haupt

if(nfil.lt.0)then 
    call strlen(cpar,i1,i2) 
    open(unit=10,file=cpar(i1:i2),status='old') 

Wenn Cpar Charakter Cpar deklariert * (*)

es eine Regel oder Beschränkung in Bezug auf den Namen des existiert cpar richtig geöffnet werden?

Mein hx263on.sens (cpar) kann nicht gelesen werden.Warum?

+0

Im Hauptprogramm 'cpar' wird eine Deklaration über' cpar * (*) 'hinaus benötigt. Kannst du das finden? – francescalus

+0

Ist cpar gleich "hx263on.sens (cpar)" oder "hx263on.sens" oder was eigentlich? Wie lang es ist? Wie hast du versucht es zu drucken? –

+0

@VladimirF Nein, eigentlich habe ich die Datei hx263on.sens genannt. Ich benutze diese Datei als Eingabedatei, kann sie aber nicht lesen. –

Antwort

1

Die Funktion sucht nur nach dem ersten und letzten Zeichen, das kein Leerzeichen ist. Diese werden als i1 und i2 zurückgegeben. cpar(i1:i2) sollte gleich sein wie adjustl(trim(cpar)) von Fortran 90.

Dies sollte nicht notwendig sein. Fortran trimmt Dateinamen, die ohnehin geöffnet werden sollen. Dateinamen, die mit Leerzeichen enden, werden nicht unterstützt.

Wenn die Datei nicht geöffnet werden kann, existiert sie wahrscheinlich nicht oder enthält einige Sonderzeichen, die das Betriebssystem nicht mag. Oder es enthält tatsächlich etwas anderes als du denkst. Vielleicht ist die Variable zu kurz oder so. Überprüfen Sie den Wert cpar und cpar(i1:i2), indem Sie es drucken.

+0

Der Code ist Fortran 77. –

+2

Das ist nicht wirklich wichtig. –