fortranを使用して、別の商用パッケージにインポートするためのコンマ区切りファイルを書き出そうとしています。問題は、データ列の数が不明なことです。私の出力は次のようになる必要があります:
a_string,a_float,a_different_float,float_array_elem1,float_array_elem2,...,float_array_elemn
これにより、次のようになります。
L1080,546876.23,4325678.21,300.2,150.125,...,0.125
L1090,563245.1,2356345.21,27.1245,...,0.00983
私には3つの問題があります。1つは、要素を厳密にグループ化すること(可変の列幅)、2つは、formatステートメントで可変数の配列要素を定義する方法がわからないこと、3つは、配列要素が広い範囲に及ぶ可能性があることです。多分12桁。次のコードは概念的には私が望むことを実行しますが、変数'n'と列幅の定義がないため、エラーが発生します(もちろん)。
WRITE(50,900) linenames(ii),loc(ii,1:2),recon(ii,1:n)
900 FORMAT(A,',',F,',',F,n(',',F))
(nは実行時に固定されることに注意してください。)writeステートメントは、幅で区切られていることを除いて、WRITE(50、*)を実行するときに必要な処理を実行します。
このスレッドは私の質問にほとんど答えたと思いますが、私はかなり混乱しました:SO。現在、問題を修正するawkを備えたシェルスクリプトがありますが、その解決策は...不適切です。出力を文字列にするための操作を行ってから、それを書き込むこともできますが、可能な限りそのオプションは避けたいと思います。
私はこれをFortran90で行っていますが、コードを可能な限り下位互換性を保つようにしています。