構文:
/fpscomp[:keyword...] または /nofpscomp
/fpscomp オプションは,Visual Fortran または Microsoft Fortran PowerStation とコンパイラが互換性を持つ範囲内で,実行システムと言語機能解釈の様相を制御します。
Fortran PowerStation からアプリケーションを移植するときに問題が生じた場合,/fpscomp:keyword (または /fpscomp:all) を指定します。アプリケーションを Compaq Fortran から移植するときには,/fpscomp:none または /fpscomp:libs (基本設定) を使用します。
ビジュアル開発環境では,「Fortran」タブの「Compatibility」カテゴリの「PowerStation 4.0 Compatibility Options」を指定します。
/fpscomp オプションには以下のものがあります。括弧内はビジュアル環境での名称を示しています。
/fpscomp:[no]filesfromcmd (Filenames from Command Line) |
/fpscomp:[no]general (Other Run-time Behaviour) |
/fpscomp:[no]ioformat (I/O Format) |
/fpscomp:[no]ldio_spacing (List Directed I/O Spacing) |
/fpscomp:[no]libs (Libraries) |
/fpscomp:[no]logicals (Logical Values) |
/fpscomp:[no]symbols (Predefined Preprocessor Symbols) |
/fpscomp:all および /fpscomp |
/nofpscomp または /fpscomp:none |
/fpscomp:[no]filesfromcmd (Filenames from Command Line)
OPEN 文の FILE 指定子が空白 (FILE=' ') であるファイルに対して /fpscomp:filesfromcmd を指定すると,実行時に次の動作を行うように要求したことになります。
プログラムは,プログラムを呼び出したコマンド行の引数並びからファイル名を読み取ります (存在する場合)。いずれかのコマンド行引数が空文字列 ('') を含んでいると,プログラムはユーザーに対して,対応するファイル名を入力するように求めます。名前のない FILE 指定子を持つ個々の OPEN 文 が,コマンド行引数を 1 つずつ読み取っていきます。
コマンド行引数よりも多くの名前を持たない OPEN 文が存在した場合,プログラムはさらにファイル名を入力するように求めます。
QuickWin アプリケーションでは,ファイル名を要求するために「File Select」ダイアログボックスが表示されます。
/fpscomp:nofilesfromcmd を指定すると,実行システムは,OPEN 文の FILE 指定子が省略されていたときに,コマンド行で指定されたファイル名を使えなくなります。これにより,Visual Fortran の基本ディレクトリ,ファイル名,および拡張子,たとえば FORTn 環境変数や FORT.n ファイル名 (n は装置番号) などを適用することができます。
/fpscomp:filesfromcmd を指定すると,次の Fortran 機能に影響が及びます。
たとえば,プログラム OPENTEST が次の文を含んでいるとします。
OPEN(UNIT = 2, FILE = ' ') OPEN(UNIT = 3, FILE = ' ') OPEN(UNIT = 4, FILE = ' ')
以下のコマンド行は,ファイル TEST.DAT を装置番号 2 に割り付け,装置番号 3 に関連付けるファイル名の入力をユーザーに求め,さらに装置番号 4 に関連付けるファイル名の入力を求めます。
opentest test.dat " "
READ または WRITE 文で引用されているまだ開かれていないファイルは,名前がすべて空白の OPEN 文が存在していたかのように暗黙のうちに開かれます。名前はコマンド行から読み取られます。
WRITE(UNIT = 8, FMT='(2I5)') int1, int2 ! "8"は明示的にファイルに結合されていない。
/fpscomp:filesfromcmd オプションを設定した Visual Fortran プログラムを実行する方法についての詳細は,「Fortran アプリケーションの実行」を参照してください。
/fpscomp:[no]general (Other Run-time Behaviour)
Visual Fortran と Microsoft Fortran PowerStation の間に相違点が存在し,どちらかの解釈を互換性の理由から有効にしなければならない時,/fpscomp:[no]general を指定することで,どちらの実行時動作を使用するかを制御します。
/fpscomp:general を指定すると Fortran PowerStation の解釈を要求することができます。
/fpscomp:nogeneral を指定すると Visual Fortran の解釈を要求することができます。
これは次の Fortran の機能に影響を与えます。
ACCESS="APPEND" で開かれたファイルを BACKSPACE 文で使用できます。
ACCESS="DIRECT" で開かれたファイルを BACKSPACE 文で使用できます。
注意:順番探査で開かれていないファイル (ACCESS="DIRECT" など) を BACKSPACE 文で使用するこは,Fortran 90 標準に違反しており,将来廃止される可能性があります。Fortran 90 標準の第 9.5 節を参照してください。
直接探査の書式付きファイルの読み取りでは,/fpscomp:general が設定されていると,Fortran PowerStation と同じ記録書式を持つ記録が読み取られます。これは,記録の一部である末尾の復帰と改行の組 (<CR><LF>) を考慮に入れるためです。直接探査の書式付きファイルから順番読み取りを行うことができます。
注意:順番探査で開かれていないファイル (ACCESS="DIRECT" など) を READ 文で使用することは,Fortran 90 標準に違反しており,将来廃止される可能性があります。Fortran 90 標準の第 9.2.1.2.2 節を参照してください。
FORM="FORMATTED" で開かれたファイルの最後の記録と,正しい記録終端文字 (<LF> または <CR>) で終わっていない STREAM_LF または STREAM_CR の記録書式を,エラーなしに読み取ることができます。
直接探査として開かれた書式なしファイルから順番読み取りを行うことができます。
注意:順番探査で開かれていないファイル (ACCESS="DIRECT" など) を READ 文で使用することは,Fortran 90 標準に違反しており,将来廃止される可能性があります。Fortran 90 標準の第 9.2.1.2.2 節を参照してください。
CARRIAGECONTROL 指定子は,復帰制御が不明で,/fpscomp:general が設定されている場合,値 "UNKNOWN" の代わりに "UNDEFINED" を戻します。
NAME 指定子は,ファイル名が不明で,/fpscomp:general が設定されている場合,ファイル名を空白で埋めるかわりにファイル名 "UNKNOWN" を戻します。
SEQUENTIAL 指定子は,/fpscomp:general が設定されている場合に,書式付きファイルの直接探査で "NO" の代わりに "YES" を戻します。
注意:この指定子に対して "UNKNOWN" の代わりに "NO" を返す動作は,Fortran 90 標準に違反しており,将来廃止される可能性があります。Fortran 90 標準の第 9.6.1.12 節を参照してください。
OPEN (UNIT = 4)
一方,STATUS 値が指定されておらず,FILE 指定子がないときに,/fpscomp:nogeneral が有効になっていると,FORTn 環境変数と FORT.n ファイル名が使用されます (n は装置番号です)。
STATUS 値が指定されておらず,ファイル名が "USER" だった場合,/fpscomp:general が設定されていると,ファイルを閉じる際に削除印が付けられます。
/fpscomp:general が設定されていると,ファイルを APPEND および READONLY 特性で開くことができます。
CARRIAGECONTROL 指定子が基本設定になっている場合,/fpscomp:general が設定されていると,"LIST" 復帰制御は "NONE" の代わりに直接探査書式付きファイルに与えれれます。
/fpscomp:general が設定されていると,開かれたファイルに書き出し共有の設定が基本設定として追加されます。
/fpscomp:general が設定されていると,ファイルの基本ブロックの大きさが,8192 ではなく 1024 になります (「記録バッファとディスク I/O を効率的に使用する」を参照)。
MODE および ACTION 指定子が基本設定になっており,ファイルを開いたときにエラーが発生した場合,ファイルを読み取り専用で開き,さらに書き出し専用で開いてみてください。
CARRIAGECONTROL 指定子が基本設定になっており,装置形式がターミナル・ファイルになっている場合,/fpscomp:general が設定されていると,ファイルの基本復帰制御値は "LIST" ではなく "FORTRAN" になります。
再び開かれるファイルが現在の既存ファイルとは異なるファイル形式である場合,/fpscomp:general が設定されていると,エラーが返されます。
/fpscomp:general が設定されていると,直接探査の書式付きファイルに,Fortran PowerStation と同じ記録書式が割り付けられます。これは,記録の一部である末尾の復帰と改行の組 (<CR><LF>) を考慮に入れるためです。
STOP 文
/fpscomp:general が設定されていると,Fortran PowerStation 出力文字列の書き出しを行い,同じ終了条件値を戻します。
直接探査のために開かれた書式付きファイルに書き出すとき,/fpscomp:general が設定されていると,記録は Fortran PowerStation と同じ記録書式で書き出されます。この際には,記録の一部である末尾の復帰と改行の組 (<CR><LF>) が追加されます。
書式付きの直接探査ファイルに書き出すときには,CARRIAGECONTROL 指定子の設定を無視します。
書式付き I/O で,Fortran の復帰制御文字を解釈するとき,/fpscomp:general が設定されていると,復帰制御列は Fortran PowerStation と同じように書き出されます。これは空白,0,1,および + の文字にも当てはまります。
ターミナルへの停留 I/O を実行するとき,/fpscomp:general が設定されていると,出力は Fortran PowerStation と同じ書式で書き出されます。
書式付き I/O で,バックスラッシュとドル記号の編集記述子を解釈するとき,/fpscomp:general が設定されていると,列は Fortran PowerStation と同じように書き出されます。
直接探査のために開かれた書式なしファイルからの順番書き出しができます。
注意:順番探査で開かれていないファイル (ACCESS="DIRECT" など) を順番 WRITE 文で読み取ることは,Fortran 90 標準に違反しており,将来廃止される可能性があります。Fortran 90 標準の第 9.2.1.2.2 節を参照してください。
/fpscomp:general を指定すると,/fpscomp:ldio_spacing が設定されます。
/fpscomp:[no]ioformat (I/O Format)
書式付き並び I/O と書式なし並び I/O の書式解釈に,どの実行時の動作を使用するのかを制御します。/fpscomp:ioformat を指定すると,Microsoft Fortran PowerStation の解釈変換と記録書式を要求することができます (「Microsoft Fortran PowerStation 互換ファイル」を参照してください)。/fpscomp:noioformat を指定すると,Compaq Fortran の解釈規則を要求することができます。これは次の Fortran の規則に影響を与えます。
書式付き並び:WRITE(eunit, * [, iostat]...)
書式付き内部並び:WRITE(iunit, * [, iostat]...)
/fpscomp:ioformat が設定されていると,出力行,欄幅の値,および並びデータ型の解釈は,次の実定数の例に従います。
1 <= N < 10**7 では,単精度には F15.6 を,倍精度には F24.15 を使用します。
10**7 <= N < 1 では,単精度には E15.6E2 を,倍精度には E24.15E3 を使用します。
影響を受ける他のデータ型については,Fortran PowerStation ドキュメントを参照してください。
/fpscomp:ioformat が設定されていると,書式なしファイルの解釈は,Fortran PowerStation ドキュメントに従います。ファイル書式が Compaq Fortran の使用する書式と違うことに注意してください。詳細については,Fortran PowerStation ドキュメントを参照してください。
次表は,組込みデータ型での並び出力の基本出力書式を要約しています。
並び出力の基本書式
データ型 | /fpscomp:noioformat の出力書式 |
/fpscomp:ioformat の出力書式 |
---|---|---|
BYTE | I5 | I12 |
LOGICAL (すべて) | L2 | L2 |
INTEGER(1) | I5 | I12 |
INTEGER(2) | I7 | I12 |
INTEGER(4) | I12 | I12 |
INTEGER(8) | I22 | I22 |
REAL(4) | 1PG15.7E2 | 1PG16.6E2 |
REAL(8) | 1PG24.15E3 | 1PG25.15E3 |
COMPLEX(4) | '( ',1PG14.7E2, ', ',1PG14.7E2, ') ' |
'( ',1PG16.6E2, ', ',1PG16.6E2, ') ' |
COMPLEX(8) | '( ',1PG23.15E3, ', ',1PG23.15E3, ') ' |
'( ',1PG25.15E3, ', ',1PG25.15E3, ') ' |
CHARACTER | Aw | Aw |
書式付き並び:READ(eunit, * [, iostat]...)
書式付き内部並び:READ(iunit, * [, iostat]...)
/fpscomp:ioformat が設定されていると,並び解釈は,次の実定数の例に従います。
1 <= N < 10**7 では,単精度には F15.6 を,倍精度には F24.15 を使用します。
10**7 <= N < 1 では,単精度には E15.6E2 を,倍精度には E24.15E3 を使用します。
影響を受ける他のデータ型については,Fortran PowerStation ドキュメントを参照してください。
/fpscomp:ioformat が設定されていると,書式なしファイルの解釈は,Fortran PowerStation ドキュメントに従います。ファイル書式が Compaq Fortran の使用する書式と違うことに注意してください。詳細については,Fortran PowerStation ドキュメントを参照してください。
/fpscomp:[no]ldio_spacing (List Directed I/O Spacing)
並び出力に対して,数値の後で文字 (区切り文字ではない) の前に実行時に空白を挿入するかどうかを制御します。基本設定は /fpscomp:noldio_spacing で,数値の後で文字の前に空白を挿入します (Fortran 95 標準に準拠)。Microsoft Fortran PowerStation と Visual Fortran V6.6 以前のバージョンとの互換性のために非標準を要求するには,/fpscomp:ldio_spacing を指定するか,/fpscomp:ldio_spacing を設定する /fpscomp:general を指定します。
ライブラリー dfport.lib (可搬用ライブラリー) がコンパイラとリンカーに渡されるかどうかを制御します。基本設定は /fpscomp:libs で,このライブラリーが渡されます。/fpscomp:nolibs を指定すると,このライブラリーは渡されません。
/fpscomp:[no]logicals (Logical Values)
論理値の true に使用される値を制御します。Microsoft Fortran PowerStation と,/fpscomp:logical オプションが設定された Compaq Fortran は,true の値として,ゼロ以外の値 (基本値は 1) を使用します。/fpscomp:nological オプションが設定された Compaq Fortran は,値の最下位ビットだけを見て,true の値としては -1 を使用します。このため,論理値が整数に格納されると違いが生じることがあります。どちらも 0 (ゼロ) を false の値として使用します。
これは,すべての論理式の結果に影響を与え,次の Fortran 機能の戻り値に影響を与えます。
INQUIRE 文の指定子,OPENED,IOFOCUS,EXISTS,および NAMED
EOF 組込み関数
BTEST 組込み関数
文字比較組込み関数 LLT,LLE,LGT,および LGE
/fpscomp:[no]symbols (Predefined Preprocessor Symbols)
プリプロセッサーとコンパイラの起動の際に,Microsoft Fortran PowerStation に関連する 1 個以上のシンボルを設定します。現在,/fpscomp:symbols を指定することで設定されるシンボルは _MSFORTRAN_=401 です。
Microsoft Fortran PowerStation との完全な互換性を実現します。
/fpscomp:(filesfromcmd,general,ioformat,ldio_spacing,libs,logicals,symbols) と同じです。
Compaq Fortran との完全な互換性を実現します。
/fpscomp:(nofilesfromcmd,nogeneral,noioformat,noldio_spacing,nolibs,nologicals,nosymbols) と同じです。
/fpscomp を省略すると,基本設定は /nofpscomp (/fpscomp:libs) となります。
/fpscomp オプションと /vms オプションを同じコマンドで指定することはできません。