2016-03-29 3 views
0

私は古いコードを近代化しようとしていますが、少なくともそれはもう少し分かりやすくしていますが、FORMAT文のために奇妙な形式になっています。旧式のFortran:HollerithはFormat文の記述子構文を編集します

具体的には、それはそれでホレリス定数(nは数あるnH)とFORMAT声明だ:これが閉じていないカッコを持って現れるよう

FORMAT(15H ((C(I,J),J=1,I3,12H),(D(J),J=1,I3, 6H),I=1,I3,') te'   
1,'xt' ) 

これは、構文強調表示で台無し。この形式のステートメントでそのままコンパイルされますが、かっこを閉じるとコンパイルエラーが発生します(intelコンパイラまたはgfortranコンパイラを使用)。

私の理解では、ホレリス定数は、Fortran 66の生き物だったと私は一般的に文字のようなものとして使用された場合、それらを理解し、しかしFORMATが私を混乱させるとして使うのFortran 77でCHARACTERの出現に置き換えられました。

さらに、15H ((...から15H ((...に変更すると(つまり1つのスペースを削除すると)コンパイルされません。実際には、それは私がこれにコードを変更してもコンパイルされません。

FORMAT(15H ((C(I,J),J=1,I3,12H),(D(J),J=1,I3, 6H),I=1,I3,') text' ) 

私は、これは代わりに、より正常な(F77 +)形式であることがしたいと思います。どんな助けもありがとうございます。彼らは同じ構文を使用しますが、あなたが持っているもの

答えて

5

は、実際には(DATAまたはCALL文で発生するであろう)ホレリス編集記述子、ない定数です。ホレリスの定数はF77で置き換えられました。それはchar-literal編集記述子を(もっと!)より良い代替手段として追加しましたが、H編集記述子はF95まで標準にとどまっていました(互換性機能としてまだ受け入れられていませんでした)。

いずれにしても、Hより前の数字は、Hの後にその文字数を他の区切り文字なしで使用します。だからこそ、文字を削除(または追加)した後に、Hはそれをねじ込みます。あなたのフォーマットを解析すると(明確にするため、オプションのスペースで)これらの作品これ

15H ((C(I,J),J=1, 
I3, 
12H),(D(J),J=1, 
I3, 
6H),I=1, 
I3, 
') te' 
'xt' 

と現代同等にそれを破ることは、あなたが継続した後、そのテキストを置くことができる好む場合(括弧を含む

nn FORMAT(' ((C(I,J),J=1,', I3, '),(D(J),J=1,', I3, '),I=1,', I3 
    1,') text') 

ですか)は、FORMATラベルの代わりにI/Oステートメントで使用されるCHARACTER値、変数またはパラメーターに入れられますが、利便性の低いCHARACTER値でそれらを取得するには、すべての引用文字を二重にする必要があるためです。

おそらくデフォルトでは固定形式を使用していて、各ソース行の最初の72文字だけが固定形式で受け入れられているため、すべての1行バージョンはコンパイルされませんでした。最初の6文字は文番号と継続インジケータのために予約されているだけで、残りの66文字は私のカウントで71文字です。現時点で見られるコンパイラは、長い形式の行を許可し、新しいコードに対しても利点がありますが、既存のコードに変更が必要な場合があります。

関連する問題