2017-06-23 17 views
1

現在、Fortranの行継続に関する問題を解明しようとしています。私はその言語を初めて使用しています。私は、コンパイルのすべてがifortを使って行われる、ソフトウェアパッケージABAQUSと共に使用するためにこれを書いています。FortranでのWRITE文と行継続の問題


 FILENAME = TRIM(KMC_DATADIR) // '/elementInfo.txt' 
     OPEN(1001, FILE=FILENAME, STATUS="REPLACE", ACTION="WRITE")  

     FS = '(I5,I5,I5,F12.10)' 

     DO K1=1,KMC_NUMELEM 
      WRITE(1001,FS) KMC_ELEMENTS(K1)%IDNUM, KMC_ELEMENTS(K1)%MATID, 
    &  KMC_ELEMENTS(K1)%TRANSFORMED, KMC_ELEMENTS(K1)%ORIENT%RMAT(1,1) 
     END DO 

     CLOSE(1001) 

 FILENAME = TRIM(KMC_DATADIR) // '/elementInfo.txt' 
     OPEN(1001, FILE=FILENAME, STATUS="REPLACE", ACTION="WRITE")  

     FS = '(I5,I5,I5,F12.10)' 

     DO K1=1,KMC_NUMELEM 
      WRITE(1001,FS) KMC_ELEMENTS(K1)%IDNUM, KMC_ELEMENTS(K1)%MATID, & 
      KMC_ELEMENTS(K1)%TRANSFORMED, KMC_ELEMENTS(K1)%ORIENT%RMAT(1,1) 
     END DO 

     CLOSE(1001) 

:私は WRITE文の途中で行継続については、以下の構成をすべて試してみましたが、コンパイルは、Fortranの90と互換性があるように設定されていると信じて
 FILENAME = TRIM(KMC_DATADIR) // '/elementInfo.txt' 
     OPEN(1001, FILE=FILENAME, STATUS="REPLACE", ACTION="WRITE")  

     FS = '(I5,I5,I5,F12.10)' 

     DO K1=1,KMC_NUMELEM 
      WRITE(1001,FS) KMC_ELEMENTS(K1)%IDNUM, KMC_ELEMENTS(K1)%MATID, & 
    &  KMC_ELEMENTS(K1)%TRANSFORMED, KMC_ELEMENTS(K1)%ORIENT%RMAT(1,1) 
     END DO 

     CLOSE(1001) 

コンパイルエラー取得することはこれです:

TRIPTrans.f(55):エラー#5082:構文エラー、のいずれかを期待したときに '&' が見つかり:(...

 WRITE(1001,FS) KMC_ELEMENTS(K1)%IDNUM,KMC_ELEMENTS(K1)%MATID, & 

-------- -------------------------------------------------- ------------------------------------------^

私は許可されています書き込み文を複数の行に分割するには?

+0

これは固定フォームのソースとしてコンパイルされていますか?そうであれば、最初のものはどのように失敗したでしょうか? – francescalus

+0

* "コンパイルはFortran 90と互換性があると考えられます。" *それはどういう意味ですか?どのように設定?どのようにコンパイルしますか? –

+0

コンパイルはifortによって行われ、コンパイル環境はABAQUSソフトウェアによって制御されます。私はabaqus環境ファイルにコンパイルフラグを設定しました。コンパイルフォートラン=(fortCmd + "-g -c -O0 -fPIC -r8 -save -mP2OPT_hpo_vec_divbyzero = F" + "-extend_source -w90 -w95 -WB -I%I -shared- intel -mcmodel medium ") –

答えて

0

コードはではなく、-extend_sourceインテル®Fortranコンパイラー・オプションと互換性があります。と互換性があります。

固定小数点ソースの場合、行の長さを72文字から132文字に拡張するオプションがあります。便利かもしれないが、の多くのコードは、コメントを格納するために72列の後のスペースを使用します。

実際、

WRITE(1001,FS) KMC_ELEMENTS(K1)%IDNUM,KMC_ELEMENTS(K1)%MATID, & 

でのご&は、コンパイラには見えないコメント、することになっています。これは通常、固定された形式とフリー形式のファイルを同時に作成するために行われます。しかし、それは-extend sourceのために目に見えません。

-extend sourceオプションが必要な場合は、新しい行の6番目の列にのみ&を使用できます。前の行で追加のものを使用することはできません。一方、コードが自由形式ことになって、場合


は、(あなたは私たちに語っていない!)、そして、あなたが-freeオプションを使用して、コンパイラに指示する必要があります。

1

この問題で誰かが起こった場合、私の問題は上記の回答とソースコードの空白の性質の組み合わせです。継続文字は6番目の列になければなりません。セットアップに関する何か(コンパイル設定?)によって、複数の列として 'タブ'が認識されなくなりました。私はスペースバーを使って明示的にスペースを空けて5回続けて続けなければなりませんでした。タブとスペースの組み合わせは正しくコンパイルされません。

私はFORTRANでの経験が不足しているため、共通の問題であるかどうかはわかりません。

+0

はい、Fortranでタブを使用しないでください!残念なことに、この問題は質問からは分かりません。 –

関連する問題