11

Fortran で簡単な出力を書いていますが、空白の区切り文字が必要です。ただし、次のステートメントを使用する場合:

format(A20,ES18.8,A12,ES18.8)

次のような出力が得られます。

p001t0000               3.49141273E+01obsgp_oden      1.00000000E+00

私はこれを好むでしょう:

p001t0000           3.49141273E+01   obsgp_oden  1.00000000E+00

(Pythonのように)幅に負の値を使用しようとしましたが、サイコロは使用しませんでした。それで、数字を左揃えにする方法はありますか?

よろしくお願いします!

4

4 に答える 4

8

特に美しい方法はありません。ただし、内部の WRITE ステートメントを使用して数値をテキスト文字列に変換し (以前は ENCODE ステートメントで行っていました)、テキストを操作することで、必要なことが行われる場合があります。

http://rsusu1.rnd.runnet.ru/develop/fortran/prof77/node168.htmlを引用

通常、内部ファイル WRITE は、適切なフォーマット仕様を使用して数値を文字列に変換するために使用されます。次に例を示します。

  CHARACTER*8 CVAL 
  RVALUE = 98.6 
  WRITE(CVAL, '(SP, F7.2)') RVALUE

WRITE ステートメントは、文字変数 CVAL に文字 ' +98.60 ' を入力します (数字の両端に 1 つの空白があることに注意してください。最初は数字が 7 文字のフィールドで右寄せされているため、2 つ目はレコードは、宣言された 8 文字の長さにパディングされます)。

数値が文字列に変換されると、セクション 7 で説明されているさまざまな方法でさらに処理できます。これにより、たとえば、フィールドに左寄せで数値を書き込むことができます。

于 2010-12-28T23:49:14.120 に答える
7

これは Fortran 95 では簡単ですが、それでも簡単ではありません。write ステートメントを使用して、数値またはその他の項目を文字列に書き込みます (最初の回答のように)。次に、Fortran 95 組み込みの "ADJUSTL" を使用して、文字列の空白以外の文字を左に調整します。

于 2010-12-29T05:29:32.223 に答える
2

そして、本当に洗練されていないのは私の方法です(私は洞窟の女性のようにプログラムします)。単純なFortran書き込み形式(LJではない)を作成した後、Excel(csv)とultraeditの組み合わせを使用してスペースを効果的に削除し、目的の結果を取得しますLJ の直後にコンマが続きます (別のソフトウェアへの特定のインポート形式に必要です)。BF

于 2014-03-12T16:05:37.770 に答える
1

空白を残すために左詰めの数字ではなく、出力フィールド間の空白が本当に必要な場合は、単にX編集記述子を使用できます。例えば

format(A20,4X,ES18.8,4X,A12,4X,ES18.8)

各フィールドと次のフィールドの間に 4 つのスペースが挿入されます。標準では 1 つのスペースが必要であることに注意してください。1X現在のコンパイラの一部は非標準Xも受け入れます。

于 2013-11-12T11:21:38.483 に答える