5.1 非標準機能拡張
標準Fortran言語に対する以下の拡張はnAG Fortranコンパイラで許容されます。
5.1.1 DATA文外部での非10進定数表現
nAG Fortranコンパイラは整数リテラルが許容されるコンテクストであれば、16進、 8進、2進の定数表現も受け付けます。そのような定数のデータ型はデフォルトの INTEGERとなります。ただし非10進定数中にデフォルトのINTEGER にフィットしない数の数字が含まれている場合はこの限りではありません。例えば Z'12345678'はデフォルトのINTEGER型となりますが、 Z'123456789'は64ビット整数となります。5.1.2 High Performance Fortran
High Performance Fortran 1.0の言語は-hpf オプションを指定 することですべて使えるようになります。 このオプションを指定しなかった場合には、すべてのHPF指示文は無視され、 EXTRINSIC関数接頭句は許容されず、ILEN, NUMBER_OF_PROCESSORS, PROCESSORS_SHAPE組込み関数は認識されず、 HPF_LIBRARYモジュールは利用できないという仕様になります。5.1.2.1 HPF指示文
HPF指示文は!HPF$で始まるコメントです。詳細は HPF Language Specification をご参照ください。これは Scientific Programming の特別号(John Wiley & Sons (1993))に記載されて います。すべてのHPF指示文は文法的に、あるいは意味的に正しいかどうかがチェックされま す。しかしこれはシリアルな(単一プロセッサ用の)実装であるため、これらの指示 文を使用しても生成されるコードには何の影響も及ばないことに注意してください。
5.1.2.2 HPF組込み関数
-hpf オプションを指定することによって次に示す3つの組込み関数 が新たに利用できるようになります:- ILEN
- この関数はelemental(要素別処理)であり、一つのINTEGER型引数を取り、 同じ型の値を返します。引数の値を2の補数形式で格納するとしたときに必要となる ビット数から1を引いた数を応答として返します。 正の数の場合、それは最高位のビットに1を足した値となります(Fortran 2003仕様のセク ション13.3中のモデルによれば、最下位ビットはビット0です)。負の数の場合、 セットされていない最高位のビットに1を足した値となります。
- NUMBER_OF_PROCESSORS
- この関数はデフォルトのINTEGER型のスカラ関数であり、引数は取らず、値1を応答 として返します(nAG Fortranの場合)。
- PROCESSORS_SHAPE
- この関数はデフォルトのINTEGER型の配列を応答として返します。nAG Fortran の場合、返される値はサイズが0の配列です。
5.1.2.3 EXTRINSIC手続き
Extrinsic手続きの宣言はHPFのプログラムからHPFでないルーチンをコールできるよう にするためのものです。Extrinsic節はRECURSIVEやPUREに似た接頭句 ですが、引用仕様宣言の中でのみ使用されます。構文は次の通りです:
extrinsic-prefix is EXTRINSIC ( extrinsic-kind-keyword )
extrinsic-kind-keyword is HPF or HPF_LOCAL
手続きをextrinsic kind HPFとして宣言することはextrinsic節を全く省いて しまうのと同じことになります。nAG Fortranにおいては、手続きを extrinsic kind HPF_LOCALと宣言しても何の影響も与えません。
5.1.3 長い名前
名前は199文字長まで許されます。5.1.4 名前の中の$記号
‘$’記号を名前の中で文字として使用できます。 この名前をリンク名称としてそのまま使えるシステムもありますが、DOLLAR に変換されるシステムもあります。5.1.5 入出力エンディアン変換
書式なし入出力ファイルの実行時の変換は CONVERT= 指定子により指定します。 CONVERT= 指定子は OPEN 文の指定子で、スカラ基本文字引数を指定できます。 指定可能な値は以下のとおりです。- BIG_ENDIAN
- BIG_IEEE と同等
- BIG_IEEE_DD
- ビッグエンディアン(IEEEの単精度浮動小数点形式、IEEEの倍精度浮動小数点形式、double-double 4倍精度浮動小数点形式)
- BIG_IEEE
- ビッグエンディアン(IEEEの単精度浮動小数点形式、IEEEの倍精度浮動小数点形式、IEEEの128ビット4倍精度浮動小数点形式)
- BIG_NATIVE
- ビッグエンディアン(ネイティブの浮動小数点形式)
- LITTLE_ENDIAN
- LITTLE_IEEE と同等
- LITTLE_IEEE_DD
- リトルエンディアン(IEEEの単精度浮動小数点形式、IEEEの倍精度浮動小数点形式、double-double 4倍精度浮動小数点形式)
- LITTLE_IEEE
- リトルエンディアン(IEEEの単精度浮動小数点形式、IEEEの倍精度浮動小数点形式、IEEEの128ビット4倍精度浮動小数点形式)
- LITTLE_NATIVE
- リトルエンディアン(ネイティブの浮動小数点形式)
- NATIVE
- ネイティブのエンディアンとデータ形式
入出力エンディアン変換の指定は実行時の環境変数の設定でも行う事が可能です。 装置 n がオープンされていて且つ環境変数 FORT_CONVERTn が存在する場合にはその値が CONVERT= 指定子の値として解釈されます。 環境変数が存在する場合にはその値が OPEN 文のどの CONVERT= で指定される値よりも優先されます。 環境変数が存在しない場合で OPEN 文の CONVERT= 指定子も指定されていない場合には、 コンパイル時の -convert= で指定された値が使われます。 デフォルトの変換モードは NATIVE(つまり変換無し)です。
CONVERT= 指定子は INQUIRE 文でも利用可能で、 現在の変換モードを取得するかもしくは(ファイルが 'UNKNOWN'で接続されていない場合は) 'UNKNOWN' を取得します。
