COS 総称組込み関数名には,余弦を計算する個別組込み関数が 6 つあります (COS,DCOS,QCOS,CCOS,CDCOS,および CQCOS)。これらの関数は,それぞれ REAL(4),REAL(8),REAL(16) (VMS と U*X),COMPLEX(4),COMPLEX(8),および COMPLEX(16) (VMS と U*X) の異なる値を返します。
COS 総称名を使って余弦関数を呼び出すと,コンパイラは指定された引数に基づいて適切なルーチンを選択します。たとえば,引数が REAL(4) ならば COS が選択され,REAL(8) ならば DCOS が選択され,COMPLEX(4) ならば CCOS が選択されます。
また,特定のルーチンを明示的に引用することも可能です。たとえば,DCOS を宣言することで,倍精度余弦関数を呼び出すことができます。
手続選択は,個々の総称引用でそれぞれ独立に行われます。このため,同じプログラム単位で,異なる組込み手続を参照するために総称引用を繰り返して使うことができます。
総称関数名は,以下のように使った場合,組込み手続の選択には使用できません。
文関数名
仮引数名,共通ブロック名,または変数名か配列名
組込み関数を手続への実引数として渡すときには,その個別名を使用しなくてはならず,呼び出すときには,その引数はスカラでなくてはなりません。個別組込み関数の中には,実引数としては使用できないものがあります (詳細については,「実引数として許されていない関数:表」を参照してください)。
総称手続名は,それを引用するプログラム単位に対して局所的なので,他のプログラム単位では別の用途に使用することができます。
通常,組込み手続名は,その名前を持つ Fortran 95/90 ライブラリー手続を引用します。ただし,名前が EXTERNAL 文で指定されている場合,ユーザー定義手続を引用することができます。
EXTERNAL 文で使用される場合を除き,組込み手続名はそれらを引用するプログラム単位に対して局所的なので,他のプログラム単位では他の用途に使用することができます。組込み手続のデータ型は,IMPLICIT 文を使って暗黙のデータ型規則を変更しても変わりません。
組込み手続とユーザー定義手続は,同じプログラム単位にある場合,同じ名前を持つことはできません。
例
以下の例は,組込み関数名の局所および大域プロパティを示しています。これは SIN 組込み関数を次のように使用しています。
文関数名
組込み関数の総称名
組込み関数の個別名
ユーザー定義関数の名前
組込み関数名の使用と再定義
! 正弦の計算方法の比較 PROGRAM SINES DOUBLE PRECISION X, PI PARAMETER (PI=3.141592653589793238D0) COMMON V(3) ! 文関数として SIN を定義 SIN(X) = COS(PI/2-X) DO X = -PI, PI, 2*PI/100 ! 文関数 SIN を引用 WRITE (6,100) X, V, SIN(X) END DO CALL COMPUT(X) 100 FORMAT (5F10.7) END SUBROUTINE COMPUT(Y) DOUBLE PRECISION Y ! 実引数として SIN 組込み関数を使用 INTRINSIC SIN COMMON V(3) ! 総称引用を倍精度正弦に定義 V(1) = SIN(Y) ! 実引数として SIN 組込み関数を使用 CALL SUB(REAL(Y),SIN) END SUBROUTINE SUB(A,S) ! ユーザー定義関数名として SIN を宣言 EXTERNAL SIN ! DOUBLE PRECISION 型で SIN を宣言 DOUBLE PRECISION SIN COMMON V(3) ! SIN 組込み関数を評価 V(2) = S(A) ! ユーザー定義関数 SIN を評価 V(3) = SIN(A) END ! ユーザー定義関数 SIN を定義 DOUBLE PRECISION FUNCTION SIN(X) INTEGER FACTOR SIN = X - X**3/FACTOR(3) + X**5/FACTOR(5) & - X**7/FACTOR(7) END INTEGER FUNCTION FACTOR(N) FACTOR = 1 DO I=N,1,-1 FACTOR = FACTOR * I END DO END
関連情報