入力ファイルのDOSコードとunixコードについて 2009.5.7 波戸 DOSコードのファイルとunixコードのファイルは、行末記号が異なる。 前者と後者はそれぞれ、CR+LF および LFである。 この違いのために、Fortranの入力ファイルでは、DOSコードとunixコード のどちらかしか使用できない場合が生じる。 例として、CG入力データucphantomcgv.dataをDOSコードまたはunixコード に変換し、代表的な5種類のコンパイラでの動作を調べると次のようになった。 =========================================================== 環境        コンパイラ  DOSコード   unixコード ----------------------------------------------------------- コマンドプロンプト lf95     ○       ○ コマンドプロンプト g77      ○       ×*2 ----------------------------------------------------------- Cygwin(DOS形式)   g77     ○       ○ ----------------------------------------------------------- Linux        ifort    ○       ○ Linux        g77     △*1      ○ =========================================================== *1 物質指定行が1行であれば使用可能。複数行の場合エラー。 *2 Fortranコマンドの一つであるbackspaceが異常動作を起こすためエラー。 backspaceは、CG入力と、HATCHで使用されている。 HATCHでは、環境に対応した形式のファイルを読み込むためこの問題は起きない。 つまり、コマンドプロンプトで使用する場合には、DOS形式のpgs5job.pegs5dat が作成され、これを問題なく読み込む。 従って、この問題はCG入力ファイルのみで起こる。 この問題に対応するため、KEK サンプルユーザーコード(uccg.tar.gz)は 次のように整理した。 1. CG入力データはDOS形式 2. それ以外の入力データはunix形式 この整理の後、DOS/unixコードの問題が発生する可能性があるのは次の場合である。 「環境がLinuxであり、コンパイラがg77であり、かつ物質指定行が複数である場合。」 これは、ucphantomcgv.dataを変更する場合や、Cgviewで新規にCG入力を作成する 場合に起こりうる。これらの場合のエラー回避策は次のようなことが可能である。 1. 入力データをDOSコードからunixコードに変更する。 dos2unix ファイル名 または、 tr d \r <入力ファイル >出力ファイル でコードの変更ができる。 2. 物質指定行を1行にする。 なお、現状では、egs5.tar.gz内のucsampcg.dataがunixコードであるため、 これを、コマンドプロンプトのg77で使用すると、上記*2のエラーが発生する。 2009年7月までにucsampcg.dataをdosコードに変更する予定である。