2017-12-19 14 views
1

従来のFortranコードをfort77でコンパイルしようとしています。コマンド:古いFortranコードをコンパイルするときの構文エラー

fort77 -c leg_code.f leg_code.o 

がで失敗します。

Error on line XXX: syntax error 

ラインXXX読み取り:

MAXFを持つ上でいくつかの行に定義されて
CHARACTER(LEN=10) TREE(2,MAXF) 

:私は削除した場合

INTEGER MAXF, MAXC 
    PARAMETER (MAXF=400, MAXC=20) 

(LEN=10)、コードは問題なしでコンパイルされます。

誰でもこのエラーの原因を知っていますか?

+1

で有効です。文字(10)木(2、MAXF )より現代的なfortranコンパイラ(> = f90)でコンパイル –

+1

あなたのコードはlesst Fortran 90にあり、Fortran 77コンパイラを使用しているようです。 –

+0

かなり古いコードなので、コンパイルする必要があります。より現代的なコンパイラを試してみると思いませんでした。私は 'gfortran'で試してみましたが、問題なく動作しました。私はそれを受け入れることができるようにあなたのコメントを答えに変えることができますか?あなたがた両方に感謝します! – Gabriel

答えて

2

コメントで述べたように、宣言文

CHARACTER(LEN=10) TREE(2,MAXF) 

は、長さ10の文字のランク2の配列は、Fortranで標準のFortranに導入された宣言し、Fortranの77にこの形式は有効ではありません90改訂。代替形態

CHARACTER*10 TREE(2,MAXF) 

又は

CHARACTER TREE(2,MAXF)*10 

が必要とされるのFortran 77でこのような変数を宣言する

。単に

CHARACTER TREE(2,MAXF) 

のように、(len=10)を削除すると、変数は、長さ1の文字の配列であることを宣言しますが、これは単に試すのFortran 77

+0

私はf77 –

+0

@ aka.niceについてまだ何かを学んでいいのですが、以前は変種 'CHARACTER TREE * 10'にさらされていることを覚えていません。' character x * 10'という形式は現代Fortranにまだあります。実際には、 'character(len = 27)x、y * 10、z'などの文字長宣言をオーバーライドする唯一の方法です(配列サイズの宣言をオーバーライドするのと同じように' integer、dimension 12):: a、b(5)、c')。 – francescalus

関連する問題