1

テキストを含む Fortran コードの行があります。テキストを変更しているため、Fortran ではコード行が長くなりすぎるため、'a' を使用して 2 行に分割しています。

だった:

  IF (MYVAR .EQ. 1) THEN
    WRITE(iott,'(A) (A)') 'ABC=', SOMEVAR

変更:

  IF (MYVAR .EQ. 1) THEN
    WRITE(iott,'(A) (A)') 'ABC DEF GHI JK
a ' // 'L=', SOMEVAR

私の質問は、新しい行 (「a」で始まる) で、「a」と最初の「」の間の空白が文字列に追加されるかどうかです。または、追加の空白を防ぐために ' を a の隣の文字にする必要がありますか?

お分かりのように、私は Fortran に慣れていません...

4

4 に答える 4

3

72列の制限を超えることが心配な場合は、Fortran 77を使用していると想定します。Fortran77の構文では、6列目に継続文字が必要な連続行を除いて7列目から開始する必要があります。次のメソッドを使用して、1つのステートメントで継続される行数を教えてください(最初の行は列を表示するためだけのものです)。

!234567890
      write(*,*)"Lorem Ipsum",
     1 " Foo",
     2 " Bar"

これは印刷されます:

Lorem Ipsum Foo Bar

引用符で囲まれていないスペースについて心配する必要はありません。とにかく、すべての空白はFortranで圧縮されます。

formatステートメントの使用方法を学ぶことは価値があります。それらは出力を非常に簡単にすることができます。Cから来ている場合は、printfステートメントにいくぶん似ています。さまざまなタイプのパラメーターを使用してフォーマットを指定し、変数またはリテラルを指定してそのフォーマットに入力します。

そして、あなたがその日のホットで新しい言語で働いていないことを心配しないでください。あなたはFortranから多くを学ぶことができます、Fortran 77でさえ、そして適切に使われるとき、Fortranはエレガントでさえありえます。私は、Fortran 77が、動的メモリを備えたオブジェクト指向言語であるかのように書かれているのを見てきました。私は「old.ne.bad」と言いたいです。

于 2008-12-17T03:46:54.660 に答える
0
  1. はい、これaは継続文字であり、基本的には、継続文字(列6、右?)の後に始まるこの行の残りの部分を前の行に追加することを意味します。
  2. あなたのFortranコンパイラには、おそらく「固定形式」入力を使用する代わりに「自由形式」入力をオンにするオプションがあります。これを使用すると、行の長さを気にする必要がなくなります。
  3. お使いのFortranコンパイラがF90よりも古い場合(自由形式の入力機能が開始されたと思うとき)、お悔やみ申し上げます。
于 2008-12-17T01:50:56.593 に答える
0

@マイクB:

理想的な世界ではそうですが、この場合、コードは1台のマシンで開発され、ビルドに使用できる適切なサードパーティソフトウェア/SDK/ライセンスを持つビルドサーバーに送信されます。ビルドも正確には速くありません。

于 2008-12-17T01:52:53.127 に答える
0

FORTRANの古い列の要件を思い出すのは長すぎました(そして、それらは昔ほど厳格ではないかもしれません)。

しかし、これは簡単なテスト実行ですぐにわかることではありませんか?

于 2008-12-17T01:38:20.580 に答える