nAG Fortran コンパイラ 6.2 マニュアル

 
ナビゲーション:前へ   上へ   次へ

5.2 旧拡張仕様

以下の拡張仕様はFortran 77の時代には一般的だったもので、現在でも頻繁に使用 されています(これらは新仕様で置き換えられているため不必要なものなのですが)。 これらの旧仕様が見つかると、その都度‘Extension:’の付された警告メッセ ージが発行されることになります。これらは-w=x77 オプションを 使用することで抑止できます。

5.2.1 バイトサイズ

REAL, INTEGER, LOGICAL, COMPLEXに対するバイトサイ ズは許容され、Fortran 90/95 KINDSにマップされます。

バイトサイズ指定 標準Fortran F90_KIND
REAL*4 Real Real(real32)
REAL*8 Double Precision Real(real64)
REAL*16 Real(Selected_Real_Kind(30)) Real(real128)
COMPLEX*8 Complex Complex(real32)
COMPLEX*16 Complex(Kind(0d0)) Complex(real64)
COMPLEX*32 Complex(Selected_Real_Kind(30)) Complex(real128)
INTEGER*1 Integer(Selected_Int_Kind(2)) Integer(int8)
INTEGER*2 Integer(Selected_Int_Kind(4)) Integer(int16)
INTEGER*4 Integer Integer(int32)
INTEGER*8 Integer(Selected_Int_Kind(18)) Integer(int64)
LOGICAL*1 Logical(1) Logical(byte)
LOGICAL*2 Logical(2) Logical(twobyte)
LOGICAL*4 Logical Logical(word)
LOGICAL*8 Logical(logical64)

文字長の際と同様に、バイト長も型宣言でオーバーライドが可能です。 例)

    REAL X*4, Y*(8)

5.2.2 TAB書式

固定形式のソース中でTAB文字が使われたときの扱いは次のようになります:
(a)
先頭のTABに数字が続いた場合は5個のスペースに展開されます(数字を継続用の桁に 置きます)。
(b)
先頭のTABにその他の文字が続いた場合には6個のスペースに展開されます(TABに続く 文字を7桁目に配置、その行は文の先頭行となります)。
(c)
その他のTAB文字は一つの空白として扱われます。ただし文字文脈中ではTABのまま留 まります(行長という意味においては1桁占有するものとして扱われます)。

5.2.3 ホレリス定数

ホレリス定数は実引数としても使えますし、DATA中のオブジェクトを初期化するため にも使用できます。いずれの場合にも、それらはCHARACTERや構造体オブジェ クトに対してではなく、組込み型数値データ型のオブジェクトに結び付けられている 必要があります。

ホレリス入出力(すなわち非CHARACTERデータを伴うA形編集記述子の使用) は、使用しているサブプログラムが-hollerith_io または -dusty オプションを使ってコンパイルされている場合にのみ有効 になります。

5.2.4 固定形式のD(debug)行

1列目が‘D’もしくは‘d’の行はD行と呼ばれます。 オプション-d_linesが指定されると、 このような行について、Dを空白で置き換えて解釈し、通常の行として取り扱います。 このオプションが指定されない場合には、このような行はDをCで置換て解釈し、 コメント行として取り扱われます。

例えば以下のコードでは

      SUBROUTINE TEST(N)
      INTEGER N
D     PRINT *,'TESTING N'
      ...
PRINT文は-d_linesを指定した場合のみコンパイル対象となります。

継続行の最初の行がD行である場合、 継続される行もすべてD行でなければなりません。 同様に、最初の行がD行でない場合、継続される行もすべてD行であってはなりません。

D行はTAB書式を用いる事ができます。この場合、TABが空白に展開される際に (D文字が空白として解釈済なので)一つ少ない空白で展開されます。

5.2.5 固定ソース形式の場合の行長拡大

-132 オプションを用いることによって、固定形式の入力行の実効 長を72文字から132文字に拡大できます。

このオプションが使われた場合、nAG FortranコンパイラはFortran言語標準に準拠 しなくなるので注意してください。 行の境界をまたがった文字定数が含まれている場合、プログラムの意味が変化する ことになります。 行の境界をまたがるH形編集記述子を含む標準準拠のプログラムはほとんどの場合 拒否されます。

新しくFortranプログラムを作る場合にはこのオプションを用いるのではなく、自 由ソース形式を使用するようにしてください。自由ソース形式は誤植の検出に優れ、 またFortran標準の一部でもあるため、万全な移植性が維持されます。

5.2.6 継続行の最大数の拡大

-maxcontin=N オプションは継続行の最大数上限をN に増加 させます。 このオプションは固定ソース形式と自由ソース形式の双方に対して影響しますが、 その上限値を標準値より小さくすることはない点に注意してください。

Fortran 90と95標準では継続行の最大数を固定ソース形式の場合は19、自由ソース 形式の場合は39と規定しています。 Fortran 2003標準ではソース形式によらずこれを255行に拡大しています。

5.2.7 異なる種別が混在した引数を持つ組込関数MAX及びMIN

MAX及びMIN組込関数は異なる種別の引数が混在していても利用可能となりました。 結果の種別は種別混合算術と同様となります。(INTEGERの場合は最も広い範囲を表現可能な種別、 REALの場合は最も精度の高い種別となります)

例えば、XREAL(real32)YREAL(real64)の場合、 MAX(X,Y)は種別がreal64で値がMAX(REAL(X,real64),Y)と同等です。 subsection{異なる種別が混在した引数を持つ組込関数} ATAN, ATAN2, DIM, MAX, MIN, MOD, MODULO 及び SIGN組込関数は異なる種別の実数もしくは整数引数が混在していても利用可能です。 しかしながら整数引数と実数引数は組込関数の1回の参照では混在できませんので注意が必要です。

SIGNの結果の種別は第一引数(結果の大きさの指定)と同じ種別となり、第二引数(結果の符号を指定)の種別は無視されます。 その他の組込関数の結果の種別は種別混合算術と同様となります。(INTEGERの場合は最も広い範囲を表現可能な種別、 REALの場合は最も精度の高い種別となります)

例えば、XREAL(real32)YREAL(real64)の場合、

MAX(X,Y)は種別がreal64で値がMAX(REAL(X,real64),Y)と同等です。
SIGN(X,Y)は種別がreal32で値がSIGN(X,REAL(SIGN(1.0_real64,Y),real32))と同等です。

5.2.8 レガシーアプリケーションサポート

-dusty オプションは“レガシー”ソフトウェアに共通的な エラーの区分を“Error”から“Warning”にダウングレードさせます。 これによってそれらのプログラムのコンパイルと実行が可能になります。 (-w オプションも指定すればメッセージの完全抑止も行えます。)

このオプションにより、COMMONブロックのBLOCK DATAの外での初期 化と、VAX形式の8進、16進定数(それぞれ'...'O'...'Xとい う形を取る)の受入れという拡張も実効的に提供されることになります。

5.2.9 不整合な引数リスト

-mismatch オプションは手続きに対する引数リストのチェックを ダウングレードさせるので、処理対象の現行ファイルにはないルーチンへのコール に不整合があってもエラーメッセージではなく警告メッセージが発せられることに なります。

-mismatch_all オプションの場合には引数リストのチェックをさ らにダウングレードさせるため、処理対象の現行ファイル中にあるルーチンへのコ ールに不正があってもエラーメッセージではなく警告メッセージが発せられること になります。

5.2.10 倍精度複素数に関する拡張

倍精度複素数要素を標準仕様である‘Complex(Kind(0d0))’ではなく DOUBLE COMPLEXという形で宣言できます。

-dcfuns オプションを使用した場合には追加の組込み関数も利用 できるようになります(詳細についてはオプションに関する記述をご参照ください)。 これらの関数はFortran 90以来すべて旧仕様となっています。

© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks