Sun Studio 12: Fortran ライブラリ・リファレンス

第 3 章 FORTRAN 77 および VMS 組み込み関数

この章では、以前の FORTRAN 77 から Fortran 95 へのプログラムの移行をサポートするために f95 に組み込まれ、提供される FORTRAN 77 組み込み関数のセットを一覧で示します。

f95 は、この章で一覧表示している FORTRAN 77 および VMS 関数すべてを組み込み関数として認識します。前の章で一覧表示した Fortran 95 の関数すべても同様です。以前の FORTRAN 77 プログラムを f95 に移行するサポートとして、-f77=intrinsics を指定してコンパイルすると、コンパイラは FORTRAN 77 および VMS 関数のみを組み込み関数として認識し、Fortran 95 組み込み関数は認識しません。

ANSI FORTRAN 77 規格以外の組み込み関数には、¤ 印を付けています。非標準組み込み関数およびライブラリ関数を使用するプログラムは、ほかのプラットフォームへの移植性がない可能性があります。

組み込み関数が複数のデータ型の引数を受け取る場合、組み込み関数には「個別名」と「総称名」があります。通常、個別名を使用した場合の戻り値は、引数と同じデータ型になりますが、型変換関数 (表 3–2) や照会関数 (表 3–7) などの例外もあります。特定のデータ型の引数を扱う場合には個別名によって関数を呼び出します。

複数のデータ項目 (たとえば sign(a1,a2) ) を扱う関数では、すべての引数が同じデータ型である必要があります。

それぞれの組み込み関数について、次の項目が示されています。

3.1 算術関数と数学関数

算術関数、型変換関数、三角関数、およびその他の数学関数について説明します。a は、関数の 1 つの引数を表わします。 a1 および a2 はそれぞれ、関数の 1 つ目の引数、2 つ目の引数を表わしています。 ar および ai はそれぞれ、関数の複素の引数の実部と虚部を表わしています。

3.1.1 算術関数

表 3–1 算術関数

組み込み関数 

定義 

引数 

の数 

総称 

名 

個別 

名 

引数の 

型 

関数の型 

絶対値 

注 (6) 参照

|a|= 

(ar2+ai2)1/2

ABS

IABS

ABS

DABS

CABS

QABS ¤

ZABS ¤

CDABS ¤

CQABS ¤

INTEGER

REAL

DOUBLE

COMPLEX

REAL*16

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

INTEGER

REAL

DOUBLE

REAL

REAL*16

DOUBLE

DOUBLE

REAL*16

切り捨て 

注 (1) 参照

int(a) 

AINT

AINT

DINT

QINT ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

四捨五入 

a ≥ 0 の場合 int(a+.5)  

a < 0 の場合 int(a-.5)  

ANINT

ANINT

DNINT

QNINT ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

四捨五入の整数化 

a ≥ 0 の場合 int(a+.5)  

a < 0 の場合 int(a-.5)  

NINT

NINT

IDNINT

IQNINT ¤

REAL

DOUBLE

REAL*16

INTEGER

INTEGER

INTEGER

剰余 

注 (1) 参照

a1-int(a1/a2)*a2 

MOD

MOD

AMOD

DMOD

QMOD ¤

INTEGER

REAL

DOUBLE

REAL*16

INTEGER

REAL

DOUBLE

REAL*16

符号の付け替え 

a2 ≥ 0 の場合 |a1| 

a2 < 0 の場合 -|a1|  

SIGN

ISIGN

SIGN

DSIGN

QSIGN ¤

INTEGER

REAL

DOUBLE

REAL*16

INTEGER

REAL

DOUBLE

REAL*16

超過分 

a1 > a2 の場合 a1-a2  

a1≤ a2 の場合 0  

DIM

IDIM

DIM

DDIM

QDIM ¤

INTEGER

REAL

DOUBLE

REAL*16

INTEGER

REAL

DOUBLE

REAL*16

倍精度化または 4 倍精度化乗算 

a1 * a2 

-

DPROD

QPROD ¤

REAL

DOUBLE

DOUBLE

REAL*16

最大値の選択 

max(a1, a2, …) 

≥2 

MAX

MAX0

AMAX1

DMAX1

QMAX1 ¤

INTEGER

REAL

DOUBLE

REAL*16

INTEGER

REAL

DOUBLE

REAL*16

AMAX0

AMAX0

INTEGER

REAL

MAX1

MAX1

REAL

INTEGER

最小値の選択 

min(a1, a2, …) 

≥2 

MIN

MIN0

AMIN1

DMIN1

QMIN1 ¤

INTEGER

REAL

DOUBLE

REAL*16

INTEGER

REAL

DOUBLE

REAL*16

AMIN0

AMIN0

INTEGER

REAL

MIN1

MIN1

REAL

INTEGER

3.1.2 型変換関数

表 3–2 FORTRAN 77 型変換関数

変換型 (以下の型への変換) 

引数の数 

総称名 

個別 

名 

引数の型 

関数の型 

INTEGER


 注 (1) 参照

INT

-

INT

IFIX

IDINT

-

-

-

IQINT ¤

INTEGER

REAL

REAL

DOUBLE

COMPLEX

COMPLEX*16

COMPLEX*32

REAL*16

INTEGER

INTEGER

INTEGER

INTEGER

INTEGER

INTEGER

INTEGER

INTEGER

REAL


注 (2) 参照

REAL

REAL

FLOAT

-

SNGL

SNGLQ ¤

-

-

-

FLOATK

INTEGER

INTEGER

REAL

DOUBLE

REAL*16

COMPLEX

COMPLEX*16

COMPLEX*32

INTEGER*8

REAL

REAL

REAL

REAL

REAL

REAL

REAL

REAL

REAL*4

DOUBLE


注 (3) 参照。

DBLE

DBLE

DFLOAT

DFLOATK

DREAL ¤

-

-

-

-

-

DBLEQ ¤-

INTEGER

INTEGER

INTEGER*8

REAL

DOUBLE

COMPLEX

COMPLEX*16

REAL*16

COMPLEX*32REAL*16COMPLEX*32

DOUBLE PRECISION

DOUBLE PRECISION

DOUBLE PRECISION

DOUBLE PRECISION

DOUBLE PRECISION

DOUBLE PRECISION

DOUBLE PRECISION

DOUBLE PRECISION

DOUBLE PRECISIONDOUBLE PRECISION

DOUBLE PRECISION


REAL*16
注 (3') 参照。

QREAL¤

QEXT ¤

QREAL ¤

QFLOAT ¤

-

QEXT ¤

QEXTD ¤

-

-

-

-

INTEGER

INTEGER

REAL

INTEGER

DOUBLE

REAL*16

COMPLEX

COMPLEX*16

COMPLEX*32

REAL*16

REAL*16

REAL*16

REAL*16

REAL*16

REAL*16

REAL*16

REAL*16

REAL*16


COMPLEX
注 (4) と (8) 参照。

1 または 2 


CMPLX

-

-

-

-

-

-

-

INTEGER

REAL

DOUBLE

REAL*16

COMPLEX

COMPLEX*16

COMPLEX*32

COMPLEX

COMPLEX

COMPLEX

COMPLEX

COMPLEX

COMPLEX

COMPLEX


DOUBLE COMPLEX
注 (8) 参照

1 または 2 


DCMPLX@

-

-

-

-

-

-

-

INTEGER

REAL

DOUBLE

REAL*16

COMPLEX

COMPLEX*16

COMPLEX*32

DOUBLE COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX


COMPLEX*32
注 (8) 参照

1 または 2 


QCMPLX@

-

-

-

-

-

-

-

INTEGER

REAL

DOUBLE

REAL*16

COMPLEX

COMPLEX*16

COMPLEX*32

COMPLEX*32

COMPLEX*32

COMPLEX*32

COMPLEX*32

COMPLEX*32

COMPLEX*32

COMPLEX*32


INTEGER
注 (5) 参照。


-
-

ICHAR

IACHAR ¤

CHARACTER

INTEGER


CHARACTER
注 (5) 参照。


-
-

CHAR

ACHAR ¤

INTEGER

CHARACTER

ASCII プラットフォーム (Sun システムも含む) では、次のようになります。

ACHARIACHAR は、ASCII 以外のプラットフォームで ASCII を直接処理するために提供されていました。

3.1.3 三角関数

表 3–3 FORTRAN 77 三角関数

組み込み関数 

定義 

引数 

総称名 

個別 

名 

引数の型 

関数の型 

正弦 

注 (7) 参照。

sin(a) 

SIN

SIN

DSIN

QSIN ¤

CSIN

ZSIN ¤

CDSIN ¤

CQSIN ¤

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

正弦 (度) 

注 (7) 参照。

sin(a) 

SIND ¤

SIND ¤

DSIND ¤

QSIND ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

余弦 

注 (7) 参照。

cos(a) 

COS

COS

DCOS

QCOS ¤

CCOS

ZCOS ¤

CDCOS ¤

CQCOS ¤

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

余弦 (度) 

注 (7) 参照。

cos(a) 

COSD ¤

COSD ¤

DCOSD ¤

QCOSD ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

正接 

注 (7) 参照

tan(a) 

TAN

TAN

DTAN

QTAN ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

正接 (度) 

注 (7) 参照

tan(a) 

TAND ¤

TAND ¤

DTAND ¤

QTAND ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

逆正弦 

注 (7) 参照

arcsin(a) 

ASIN

ASIN

DASIN

QASIN ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

逆正弦 (度) 

注 (7) 参照

arcsin(a) 

ASIND ¤

ASIND ¤

DASIND ¤

QASIND ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

逆余弦 

注 (7) 参照

arccos(a) 

ACOS

ACOS

DACOS

QACOS ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

逆余弦 (度) 

注 (7) 参照。

arccos(a) 

ACOSD ¤

ACOSD ¤

DACOSD ¤

QACOSD ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

逆正接 

注 (7) 参照。

arctan(a) 

ATAN

ATAN

DATAN

QATAN ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

arctan 

(a1/a2) 

ATAN2

ATAN2

DATAN2

QATAN2 ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

逆正接 (度) 

注 (7) 参照

arctan(a) 

ATAND ¤

ATAND ¤

DATAND ¤

QATAND ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

arctan 

(a1/a2) 

ATAN2D¤

ATAN2D ¤

DATAN2D ¤

QATAN2D ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

双曲線正弦 

注 (7) 参照

sinh(a) 

SINH

SINH

DSINH

QSINH ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

双曲線余弦 

注 (7) 参照

cosh(a) 

COSH

COSH

DCOSH

QCOSH ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

双曲線正接 

注 (7) 参照。

tanh(a) 

TANH

TANH

DTANH

QTANH ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

3.1.4 その他の数学関数

表 3–4 その他の FORTRAN 77 数学関数

組み込み関数 

定義 

引数の数 

総称名 

個別名 

引数の型 

関数の型 

複素数の虚部 

注 (6) 参照。

ai 

IMAG

AIMAG

DIMAG ¤

QIMAG ¤

COMPLEX

DOUBLE COMPLEX

COMPLEX*32

REAL

DOUBLE

REAL*16

複素数の共役 

注 (6) 参照。

(ar,-ai) 

CONJG

CONJG

DCONJG ¤

QCONJG ¤

COMPLEX

DOUBLE COMPLEX

COMPLEX*32

COMPLEX

DOUBLE COMPLEX

COMPLEX*32

平方根 

a**(1/2) 

SQRT

SQRT

DSQRT

QSQRT ¤

CSQRT

ZSQRT ¤

CDSQRT ¤

CQSQRT ¤

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

立方根 

注 (8') 参照

a**(1/3) 

CBRT

CBRT ¤

DCBRT ¤

QCBRT ¤

CCBRT ¤

ZCBRT ¤

CDCBRT ¤

CQCBRT ¤

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

指数関数 

e**a 

EXP

EXP

DEXP

QEXP ¤

CEXP

ZEXP ¤

CDEXP ¤

CQEXP ¤

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

自然対数 

log(a) 

LOG

ALOG

DLOG

QLOG ¤

CLOG

ZLOG ¤

CDLOG ¤

CQLOG ¤

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

REAL

DOUBLE

REAL*16

COMPLEX

DOUBLE COMPLEX

DOUBLE COMPLEX

COMPLEX*32

常用対数 

log10(a) 

LOG10

ALOG10

DLOG10

QLOG10 ¤

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

誤差関数 (脚注を参照)

erf(a) 

ERF

ERF ¤

DERF ¤

REAL

DOUBLE

REAL

DOUBLE

誤差関数 

1.0 - erf(a) 

ERFC

ERFC ¤

DERFC ¤

REAL

DOUBLE

REAL

DOUBLE

3.2 文字関数

表 3–5 FORTRAN 77 文字関数

組み込み関数 

定義 

引数の数 

個別 

名 

引数の型 

関数の型 

変換 注 (5) 参照。

文字への変換 

整数への変換 

参照:

表 3–2

CHAR

ACHAR ¤

ICHAR

IACHAR ¤

INTEGER

CHARACTER

CHARACTER

INTEGER

部分列の索引 

文字列 a1 の中の部分列 a2 の位置 

注 (10) 参照。

INDEX

CHARACTER

INTEGER

長さ 

文字本体の長さ 

注 (11) 参照

LEN

CHARACTER

INTEGER

字句的に等しいか大きい 

a1 ≥ a2 

注 (12) 参照

LGE

CHARACTER

LOGICAL

字句的に大きい 

a1 > a2 

注 (12) 参照

LGT

CHARACTER

LOGICAL

字句的に等しいか小さい 

a1≤ a2 

注 (12) 参照。

LLE

CHARACTER

LOGICAL

字句的に小さい 

a1 < a2 

注 (12) 参照。

LLT

CHARACTER

LOGICAL

ASCII プラットフォーム (Sun システムも含む) では、次のようになります。

ACHARIACHAR は、ASCII 以外のプラットフォームで ASCII を直接処理するために提供されていました。

3.3 その他の関数

ビット単位関数、環境照会関数、記憶領域の割り当ておよび割り当て解除関数について説明します。

3.3.1 ビット操作 ¤

次の関数はすべて FORTRAN 77 の規格外です。

表 3–6 FORTRAN 77 ビット単位関数

ビット単位操作 

引数の数 

個別名 

引数の型 

関数の型 

補数 

NOT

INTEGER

INTEGER

論理積 

22 

AND IAND

INTEGER

INTEGER

内包的論理和 

22 

OR IOR

INTEGER

INTEGER

排他的論理和 

22 

XOR IEOR

INTEGER

INTEGER

シフト 注 (14) 参照

ISHFT

INTEGER

INTEGER

左シフト 注 (14) 参照。

LSHIFT

INTEGER

INTEGER

右シフト 注 (14) 参照。

RSHIFT

INTEGER

INTEGER

論理的右シフト 注 (14) 参照。

LRSHFT

INTEGER

INTEGER

循環シフト 

ISHFTC

INTEGER

INTEGER

ビット抽出 

IBITS

INTEGER

INTEGER

ビットセット 

IBSET

INTEGER

INTEGER

ビットテスト 

BTEST

INTEGER

LOGICAL

ビットクリアー 

IBCLR

INTEGER

INTEGER

前述の関数は、組み込み関数または外部関数として使用可能です。ライブラリのビット単位操作ルーチンについての詳細は、『Fortran ライブラリ・リファレンス』を参照してください。

3.3.2 環境照会関数 ¤

次の関数はすべて FORTRAN 77 の規格外です。

表 3–7 FORTRAN 77 環境照会関数

定義 

引数の数 

総称名 

引数の型 

関数の型 

進法の基底 

EPBASE

INTEGER

REAL

DOUBLE

REAL*16

INTEGER

INTEGER

INTEGER

INTEGER

有効ビット数 

EPPREC

INTEGER

REAL

DOUBLE

REAL*16

INTEGER

INTEGER

INTEGER

INTEGER

最小指数 

EPEMIN

REAL

DOUBLE

REAL*16

INTEGER

INTEGER

INTEGER

最大指数 

EPEMAX

REAL

DOUBLE

REAL*16

INTEGER

INTEGER

INTEGER

最小非ゼロ数 

EPTINY

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

表現可能の最大 

EPHUGE

INTEGER

REAL

DOUBLE

REAL*16

INTEGER

REAL

DOUBLE

REAL*16

イプシロン 注 (16) 参照。

EPMRSP

REAL

DOUBLE

REAL*16

REAL

DOUBLE

REAL*16

3.3.3 メモリー ¤

次の関数はすべて FORTRAN 77 の規格外です。

表 3–8 FORTRAN 77 メモリー関数

組み込み関数 

定義 

引数の数 

個別名 

引数の型 

関数の型 

位置 

アドレス 

注 (17) 参照。

LOC

任意

INTEGER*4INTEGER*8

割り当て 

記憶領域の割り当てアドレスを戻す。 

注 (17) 参照。

MALLOC

MALLOC64

INTEGER*4

INTEGER*8

INTEGER

INTEGER*8

割り当て解除 

MALLOC で割り当てられた記憶領域の割り当て解除。注 (17) 参照。

FREE

任意

サイズ 

引数のサイズをバイト数で戻す。 

注 (18) 参照

SIZEOF

任意の式

INTEGER

3.4 注意

次の注意は、本章のすべての組み込み関数表に適用されます。

3.4.1 関数の注記

表および、次の注記 (1) 〜 (12) は、ANSI X3.9-1978 『Programming Language Fortran 』の「組み込み関数の表」に Fortran 拡張機能を追加したものにもとづいています。

(1) INT

A が整数型ならば、INT(A)A です。

A が実数型または倍精度ならば、次のようになります。

|A| < 1 ならば INT(A) はゼロです。 |A|1 ならば INT(A)A の範囲を超えない最大整数で、A と同じ符号です。このような数学的整数値は、大きすぎてこのコンピュータの整数型に合わない場合があります。

A が複素数型または倍精度複素数型ならば、前述の規則が A の実部に適用されます。

A が実数型ならばIFIX(A)INT(A) と同じです。

(2) REAL

A が実数ならば、 REAL(A)A です。

A が整数型または倍精度型ならば、REAL(A) は実数データが持ち得るのと同じ精度の、A の有効部分です。

A が複素数型ならば、REAL(A)A の実部です。

A が倍精度複素数型ならば、REAL(A) は実数データが持ち得るのと同じ精度の、A の実部の有効部分です。

(3) DBLE

A が倍精度型ならば、DBLE(A)A です。

A が整数型または実数型ならば、DBLE(A) は倍精度データが持ち得るのと同じ精度の、A の有効部分です。

A が複素数型ならば、DBLE(A) は倍精度データが持ち得るのと同じ精度の、A の実部の有効部分です。

A が複素数 *16 型ならば DBLE(A)A の実部です。

(3') QREAL

A が、REAL*16 型ならば QREAL(A) は、A です。

A が整数型、実数型、または倍精度型ならば、QREAL(A)REAL*16 データが持ち得るのと同じ精度の、A の有効部分です。

A が複素数型または倍精度複素数型ならば、QREAL(A)REAL*16 データが持ち得るのと同じ精度の、 A の実部の有効部分です。

ACOMPLEX*16 型または COMPLEX*32 型ならば、QREAL(A)A の実部です。

(4) CMPLX

A が複素数型ならば、CMPLX(A) A です。

A が整数型、実数型、または倍精度型ならば、CMPLX(A)REAL(A) + 0i です。

A1A2 が整数型、実数型、または倍精度型ならば、CMPLX(A1,A2)REAL(A1) + REAL(A2)*i です。

A が倍精度複素数型ならば CMPLX(A)REAL( DBLE(A) ) + i*REAL( DIMAG(A) ) です。

CMPLX に引数が 2 個ある場合、同じ型である必要があります。 また、型は整数、実数、または倍精度のいずれかです。

CMPLX の引数が 1 個の場合、整数、実数、倍精度、複素数、COMPLEX*16 または COMPLEX*32 のいずれかです。

(4') DCMPLX

ACONPLEX*16 型ならば、DCMPLX(A)A です。

A が整数型、実数型、または倍精度型ならば、DCMPLX(A)DBLE(A) + 0i です。

A1A2 が整数型、実数型、または倍精度型ならば、DCMPLX(A1,A2)DBLE(A1) + DBLE(A2)*i です。

DCMPLX に引数が 2 個ある場合、同じ型である必要があります。また、型は整数、実数、または倍精度のいずれかです。

DCMPLX の引数が 1 個の場合、整数、実数、倍精度、複素数、 COMPLEX*16 または COMPLEX*32 のいずれかです。

(5) ICHAR

ICHAR(A) は照合シーケンスの中の A の位置です。

先頭の位置は 0 で、最後は N-1, 0 ICHAR(A)N-1 です。ここで、N は照合シーケンスの中の文字数で、A は長さが 1 の文字型です。

CHAR および ICHAR は次に示すように逆の関係です。

3.5 VMS 組み込み関数

この節では、f95 が識別する VMS Fortran 組み込みルーチンを表にして示します。これらは規格外です。¤

3.5.1 VMS 倍精度複素数

表 3–9 VMS 倍精度複素数関数

総称名 

個別名 

関数 

引数の型 

結果の型 

 

CDABS

CDEXP

CDLOG

CDSQRT

絶対値 

指数、e**a

自然対数 

平方根 

COMPLEX*16

COMPLEX*16

COMPLEX*16

COMPLEX*16

REAL*8

COMPLEX*16

COMPLEX*16

COMPLEX*16

 

CDSIN

CDCOS

正弦 

余弦 

COMPLEX*16

COMPLEX*16

COMPLEX*16

COMPLEX*16

DCMPLX

DCONJG

DIMAG

DREAL

倍精度複素数への変換 

共役複素数 

複素数の虚部 

複素数の実部 

任意の数字

COMPLEX*16

COMPLEX*16

COMPLEX*16

COMPLEX*16

COMPLEX*16

REAL*8

REAL*8

3.5.2 VMS 度単位を用いる三角関数

表 3–10 vms 度単位を用いる三角関数

総称名 

個別名 

関数 

引数の型 

結果の型 

SIND

SIND

DSIND

QSIND

正弦 

-

REAL*4

REAL*8

REAL*16

-

REAL*4

REAL*8

REAL*16

COSD

COSD

DCOSD

QCOSD

余弦 

-

REAL*4

REAL*8

REAL*16

-

REAL*4

REAL*8

REAL*16

TAND

TAND

DTAND

QTAND

正接 

-

REAL*4

REAL*8

REAL*16

-

REAL*4

REAL*8

REAL*16

ASIND

ASIND

DASIND

QASIND

逆正弦 

-

REAL*4

REAL*8

REAL*16

-

REAL*4

REAL*8

REAL*16

ACOSD

ACOSD

DACOSD

QACOSD

逆余弦 

-

REAL*4

REAL*8

REAL*16

-

REAL*4

REAL*8

REAL*16

ATAND

ATAND

DATAND

QATAND

逆正接 

-

REAL*4

REAL*8

REAL*16

-

REAL*4

REAL*8

REAL*16

ATAN2D

ATAN2D

DATAN2D

QATAN2D

a1/a2 の 逆正接 

-

REAL*4

REAL*8

REAL*16

-

REAL*4

REAL*8

REAL*16

3.5.3 VMS ビット操作

表 3–11 vms ビット操作関数

総称名 

個別名 

関数 

引数の型 

結果の型 

IBITS

IIBITS

JIBITS

KIBITS

a1 から、初期ビット a2 a3 ビット抽出

-

INTEGER*2

INTEGER*4

INTEGER*8

-

INTEGER*2

INTEGER*4

INTEGER*8

ISHFT

IISHFT

JISHFT

KISHFT

a1 を論理的に a2 ビットシフト。a2 が正ならば左へ、a2 が負ならば右へシフト

-

INTEGER*2

INTEGER*4

INTEGER*8

-

INTEGER*2

INTEGER*4

INTEGER*8

ISHFTC

IISHFTC

JISHFTC

a1 の右 a3 ビット、a2 桁だけ循環シフト

-

INTEGER*2

INTEGER*4

-

INTEGER*2

INTEGER*4

IAND

IIAND

JIAND

a1a2 のビット単位論理積

-

INTEGER*2

INTEGER*4

-

INTEGER*2

INTEGER*4

IOR

IIOR

JIOR

KIOR

a1a2 のビット単位論理和

-

INTEGER*2

INTEGER*4

INTEGER*8

-

INTEGER*2

INTEGER*4

INTEGER*8

IEOR

IIEOR

JIEOR

KIEOR

a1 a2 のビット単位排他的論理和

-

INTEGER*2

INTEGER*4

INTEGER*8

-

INTEGER*2

INTEGER*4

INTEGER*8

NOT

INOT

JNOT

KNOT

ビット単位補数 

-

INTEGER*2

INTEGER*4

INTEGER*8

-

INTEGER*2

INTEGER*4

INTEGER*8

IBSET

IIBSET

JIBSET

KIBSET

a1 で、ビット a2 を 1 に設定し、新しい a1 を戻す

-

INTEGER*2

INTEGER*4

INTEGER*8

-

INTEGER*2

INTEGER*4

INTEGER*8

BTEST

BITEST

BJTEST

BKTEST

a1 のビット a21 ならば .TRUE. を戻す

-

INTEGER*2

INTEGER*4

INTEGER*8

-

LOGICAL

LOGICAL

LOGICAL

IBCLR

IIBCLR

JIBCLR

KIBCLR

a1 で、ビット a2 を 0 に設定し、新しい a1 を戻す

-

INTEGER*2

INTEGER*4

INTEGER*8

-

INTEGER*2

INTEGER*4

INTEGER*8

3.5.4 VMS 多重整数型

Fortran 規格では多重整数型を扱えるかどうかは表明されていません。 コンパイラでは特定の INTEGER から INTEGER 関数名 (IABS 等) を総称名の特別な種類として扱うことによって、複数の整数型に対処します。引数型を使用して適当な実行時ルーチン名が選択されますが、プログラマはこの名前を関知できません。

VMS Fortran は同じような方法を取りますが、個別名が使用できます。

表 3–12 VMS 整数関数

個別名 

関数 

引数の型 

結果の型 

IIABS

JIABS

KIABS

絶対値 

INTEGER*2

INTEGER*4

INTEGER*8

INTEGER*2

INTEGER*4

INTEGER*8

IMAX0

JMAX0

最大 

INTEGER*2

INTEGER*4

INTEGER*2

INTEGER*4

IMIN0

JMIN0

最小 

INTEGER*2

INTEGER*4

INTEGER*2

INTEGER*4

IIDIM

JIDIM

KIDIM

超過分 

INTEGER*2

INTEGER*4

INTEGER*8

INTEGER*2

INTEGER*4

INTEGER*8

IMOD

JMOD

a1/a2 の剰余 

INTEGER*2

INTEGER*4

INTEGER*2

INTEGER*4

IISIGN

JISIGN

KISIGN

符号の付け替え、|a1|*sign(a2) 

INTEGER*2

INTEGER*4

INTEGER*8

INTEGER*2

INTEGER*4

INTEGER*8