当前位置:文档之家› Fortran 95内在过程

Fortran 95内在过程

附录B Fortran 95内在过程
FORTRAN 95标准提供了115个内在过程,其中包括109个内在函数和6个内在子例行子程序。

很多编译系统还提供额外的内在过程。

按照形式,内在过程分为如下两类:通用过程;专用过程。

所谓通用过程是一个集合名称,通用过程与专用过程是一个集合与其元素的关系。

一个通用过程由两个或多个专用过程组成。

在所有的115个内在过程当中,除了如下4个内在函数外,其他都是通用过程:LGE、LGT、LLE和LLT。

专用过程针对具体类型与种别的变量。

例如,求一个变量的绝对值的通用过程为ABS(X),而求一个整型变量的绝对值的专用过程为IABS(X),求一个复型变量的绝对值的专用过程为CABS(X),如此等等。

所以,每个通用过程属下的专用过程都必定具有相应的类型,种别,甚至维的属性。

这些专用过程的名称的主要用途是作为实元来传递,这时就必须使用专用过程名称。

注意,在表中注明了少数专用过程不能作为实元。

按照功能,FORTRAN 95的内在过程主要分为如下5类:查询与数字操作函数;转换,置空以及传递函数;计算函数;数组函数;内在子例行程序。

如果从功能的角度来对内在过程分类,那么除了上面的比较具体的5类之外,还可以从内在过程对数组的作用方式的角度,把内在过程分为两大类:逐元过程和变换过程。

所谓逐元过程,就是从数学的观点来看,这些专用过程的计算对象并不是数组,但是可以运用一种自然的方式使得这专用过程能够作用于数组对象,并且得到相同形状的数组结果。

也就是使得该过程分别作用于数组的每个元素,把所有的过程结果再集合起来作为结果数组。

内在过程当中的大部分都属于逐元过程,包括:转换函数;计算函数(除了REPEA T,TRIM,DOT_PRODUCT,MA TMUL之外);子例行程序MVBITS。

其他的所有内在过程就都不是逐元过程了。

所谓变换过程,就是内在过程里面逐元过程之外的所有过程都称为变换过程,因为从它们的定义的实质上看,就是作用于一个数组数据对象,得到一个标量或者数组结果,也就是一个变换的过程,而不是单独地作用于每个元素。

因此除了函数NULL之外,所有的变换过程或者是具有一个取数组值的哑元,或者是具有一个取数组值的实元,它们对数组的作用都是某种整体变换作用。

例如对于向量的乘积,就不能逐个元素地进行。

内在过程的引用正如一般过程的引用一样,可以使用关键词变量。

由于某些内在过程的变量是可选项,因此使用关键词能够省略相应的实元。

常见的关键词哑元名称含义如下:
● DIM:DIM主要用于数组简化函数以及其他一些数组函数,表示在函数的作用对象不是整个数组的情况下,数组的哪个维被过程作用。

DIM取值为标量整型值,并且常常是可选变量。

●KIND:KIND一般用于转换函数,说明转换结果的种别参数。

KIND实元必须是一个标量整型初始化表达式,一般是可选的。

●BACK:BACK作为一个可选的逻辑型变量用来表示逆序过程,即它所出现的内在过程的对于数据对象的反方向操作。

例如,如果在内在过程INDEX当中出现了BACK=.TRUE.,那么INDEX的搜索操作就必须与正常方向相反,即从字符串的右端开始。

注意内在函数的非指针哑元都具有INTENT(IN)的属性,而指针哑元则不能改变其关联的实元或目标。

注1:该函数没有相应的通用过程名称,它的结果为默认整型。

注2:该函数没有相应的通用过程名称,它的结果为默认实型。

注3:标注星号*的函数不能用作实元。

注4:某些专用过程名称与其通用过程名称一样。

注:表B2中哑元名表示其类型:I 整型; R 实型; C 复型; S 字符型; L 逻辑型; X 多种类型; CH 单字符;
A 数组;M 矩阵; P 指针; V 向量; LA 逻辑型数组; IA 整型数组。

相关主题