高品质的佛山网站建设,成都科技网站建设联系,网页ui设计的排版,久久建筑网外墙岩棉保温板施工工艺Fortran快速入门: 参考: https://blog.csdn.net/tyskfs2/article/details/48859857 详细的字典教程: https://www.yiibai.com/fortran/fortran_data_types.html#article-start 前言
由于是快速入门, 所以就不进行详细的字典级别介绍了, 仅记录常用部分, 充分利用触类旁通的特性…Fortran快速入门: 参考: https://blog.csdn.net/tyskfs2/article/details/48859857 详细的字典教程: https://www.yiibai.com/fortran/fortran_data_types.html#article-start 前言
由于是快速入门, 所以就不进行详细的字典级别介绍了, 仅记录常用部分, 充分利用触类旁通的特性
基本程序结构:
program program_name
implicit none ! type declaration statements
! executable statements end program program_name头尾标记程序的开始和结束 implicit 作用类似using, 用于隐式类型, 是老版本中的东西 一般不用, 但是不能没有, 所以一般都用的implicit none来关闭隐式类型 注意全部的数据定义需要放到程序的开头
命令行编译程序:
cd d:\Develop\fortran\fortranTest\
gfortran -ffree-form helloworld.f -o helloworld.exe
.\helloworld.exe注意一个关键参数 -ffree-form 表示自由格式, 否则程序不能随便空格缩进啥的非常傻逼
数据类型:
integerrealcomplexcharacterlogical
变量声明
变量类型[([kind]数字)] [::] 变量名[,变量名……]
类型说明:
integer(kind2) :: shortval
integer(kind4) :: longval
integer(kind8) :: verylongval就是在变量声明的后头 (kind数字), 这部分对于科学计算很重要, 因为至少需要知道运算时变量的精度, 并且可以通过 kind(标识符) 来获取数据的字节数
program checkKind
implicit noneinteger :: i real :: r character*1 :: c logical :: lg complex :: cp print *, Integer , kind(i) print *, Real , kind(r) print *, Complex , kind(cp)print *, Character , kind(c) print *, Logical , kind(lg)end program checkKind但是, fortran不支持长整型/长小数
逻辑类型:
.true .false 注意要带点
常量
用parameter修饰
real, parameter :: pi 3.1415927运算符:
关系运算符:
由于! 变成了注释, 所以!就变成了 /
逻辑运算符
这里重点看逻辑运算符, 非常的奇怪
操作符描述示例.and.所谓逻辑与运算符。如果这两个操作数都为非零则条件变为真。(A .and. B) 为 false..or.所谓逻辑OR运算符。如果有两个操作数不为零则条件变为真。(A .or. B) 为 true..not.所谓逻辑非运算符。使用反转操作数的逻辑状态。如果条件为真则逻辑非运算符将返回false。!(A .and. B) 为 true..eqv.所谓逻辑上相当于运算符。用于检查两个逻辑值等价。(A .eqv. B) 为 false..neqv.所谓逻辑非对等操作。用于检查两个逻辑值的非对等。(A .neqv. B) 为 true.
运算优先级:
这里先记着
分类运算符关联逻辑NOT和负号.not. (-)从左到右幂**从左到右乘* /从左到右加 -从左到右关系 从左到右相等 !从左到右逻辑与.and.从左到右逻辑或.or.从左到右赋值从右到左
分支语句
支持嵌套
if (logical expression) then statement
end ifif (logical expression) then statement(s)
elseother_statement(s)
end if[name:]
if (logical expression 1) then ! block 1
else if (logical expression 2) then ! block 2
else if (logical expression 3) then ! block 3
else ! block 4
end if [name][name:] select case (expression) case (selector1) ! some statements ... case (selector2) ! other statements ... case default ! more statements ...
end select [name]循环语句
这个类似于for循环, 范围[start, stop] , step为步进
do var start, stop [,step] ! statement(s)…
end do这个就是while循环
do while (logical expr) statements
end do循环 break continue
通过给循环添加name, 并exit name
program nestedLoop
implicit noneinteger:: i, j, kiloop: do i 1, 3 jloop: do j 1, 3 kloop: do k 1, 3 print*, (i, j, k): , i, j, k if (k2) thenexit jloop end ifend do kloop end do jloop end do iloop end program nestedLoop cycle continue
program cycle_example
implicit none integer :: i do i 1, 20 if (i 5) then cycle end if print*, i end do end program cycle_example程序突然终止:
program stop_example
implicit noneinteger :: i do i 1, 20 if (i 5) then stop end if print*, i end do end program stop_example字符串:
直接一个例子来看:
program hello
implicit nonecharacter(len15) :: surname, firstname character(len6) :: title character(len25)::greetingstitle Mr. firstname Rowan surname Atkinsongreetings A big hello from Mr. Beansprint *, Here is , title, firstname, surnameprint *, greetingsend program hello字符串拼接:
title Mr.
firstname Rowan
surname Atkinsonname title//firstname//surname常用字符串函数:
函数描述len(string)它返回字符串的长度index(string,sustring)在一个字符串找出子串的位置如果没有找到则返回0。achar(int)将整数转换成一个字符iachar©它可将一个字符转换为整数trim(string)它返回去掉尾随空格的字符串。scan(string, chars)它会搜索“string”由左到右除非back.true包含在“string”任何字符的第一次出现。它返回一个整数该字符或零的位置如果没有文字的“字符”已被找到。verify(string, chars)它扫描“string”由左到右除非back.true不包含在“string”任何字符的第一次出现。它返回一个整数该字符的位置如果只在“字符”的字符被找到或者没有找则返回零。adjustl(string)它留下左截于“string”包含的字符adjustr(string)它留下右截于“string”包含的字符len_trim(string)它返回一个整数等于“string”(len(string))减去尾随空白的数量repeat(string,ncopy)它返回一个字符串长度等于“ncopy”次数“string”的长度并含有“string”的“ncopy”串联拷贝
函数描述lle(char, char)进行比较的第一个字符是否是词汇上小于或等于所述第二字符lge(char, char)进行比较的第一个字符是否是词汇上大于或等于所述第二字符lgt(char, char)进行比较的第一个字符是否是词汇上比第二字符大llt(char, char)比较第一个字符是否是词汇上比小于第二字符
其他的内容之后有用到再看:
https://www.yiibai.com/fortran/fortran_strings.html#article-start
数组:
Fortran允许最多创建7维数组
program helloworld
implicit noneinteger:: arr(5), matrix(5,5), i, jdo i1,5do j1,5matrix(i, j)ijend doend dodo i1,5do j1,5print *,matrix(i, j)end doend do
end program helloworld注意, fortran的数组默认起始下标是1, 不是0
可以修改数组的起始下标
integer:: arr(5), matrix(0:5,4:5), i, j数组切片
使用下标三元组, 默认情况为数组自身的上下限, stride1 default
array ([lower]:[upper][:stride], ...)program arraySubsectionreal, dimension(10) :: a, binteger:: i, asize, bsizea(1:7) 5.0 ! a(1) to a(7) assigned 5.0a(8:) 0.0 ! rest are 0.0 b(2:10:2) 3.9b(1:9:2) 2.5!displayasize size(a)bsize size(b)do i 1, asizePrint *, a(i)end dodo i 1, bsizePrint *, b(i)end doend program arraySubsection数组内部函数
用于科学计算
函数描述dot_product(vector_a, vector_b)函数返回两个输入向量它必须具有相同长度的标量积。matmul (matrix_a, matrix_b)它返回两个矩阵的矩阵乘积它必须是一致的即具有相似大小 (m, k) 和 (k, n)
函数描述all(mask, dim)它返回一个逻辑值指明掩码的所有关系是 .true。以及只有所需的维度如果第二个参数是给定的。any(mask, dim)它返回一个逻辑值指明掩码的任何关系是.true。以及只有所需的维度如果第二个参数是给定的。count(mask, dim)它返回一个数字值该值为掩码为 .true 关系的数目。以及所需的维数如果第二个参数给出。maxval(array, dim, mask)它返回 的数组的数组中最大的值那些遵守于第三个参数掩码的关系如果一个给定的以及具有只有所需的维数如果第二个参数 dim给出的。minval(array, dim, mask)它返回数组的数组中那些遵守于第三个参数掩码的关系的最小值如果一个给定的以及具有仅在第二个参数 dim 给出所期望的维度。product(array, dim, mask)它返回该产品遵守于第三个参数掩码的关系如果一个给定的以及具有只有所需的维数如果第二个参数 dim 给出的所有数组的数组中的元素。sum (array, dim, mask)它返回 遵守于第三个参数掩码关系的总和如果给定以及具有只有所需的维数如果第二个参数 dim给出的所有数组的数组中的元素。
函数描述allocated(array)它是一个逻辑功能它指示该阵列被分配。lbound(array, dim)它返回的数组的维数较低的限制。如果dim(尺寸)不给出一个参数会得到一个整数向量如果dim计算在内得到的整数值正好具有较低维数的限制。shape(source)它返回一个阵列源为一个整数向量的形状。size(array, dim)它返回在数组元素的数目。如果dim没有给出并在相关维数的元素个数如果dim也包括在内。ubound(array, dim)它返回尺寸的限制。
函数描述merge(tsource, fsource, mask)该功能连接两个阵列。它给出了tsource及元素如果mask条件是.true。如果掩码的条件是.false。这两个字段tsource 和fsource 必须是相同的类型并具有相同的形状。其结果也就是这种类型和形状。还掩码必须具有相同的形状。pack(array, mask, vector)它包一个阵列以使用掩码的控制向量。逻辑阵列掩模的形状具有以符合一个用于阵列要不然掩码必须是一个标量。如果载体被包括在内它必须是秩1与至少一样多的元素是在掩码为真并且具有相同的类型的数组的数组(即一个向量)。如果掩码的值为.true。然后矢量代替必须的元件阵列的数量相同。spread(source, dim, ncopies)它返回相同类型作为参数源与秩增加一个阵列。参数dim 和ncopies都是整数。如果ncopies是负则用零值来代替。如果source是一个标量然后扩散变得所有具有相同值 ncopies 元素的向量。参数dim 指示哪个索引将被延长。它必须是范围为1和1(源级)中如果 source 是一个标量dim 必须是1。参数 ncopies 是在新的尺寸元素的数量。unpack(vector, mask, array)它散射一个载体掩码下的控制阵列。逻辑阵列掩模的形状具有以符合一个用于数组。阵列载体必须具有等级1(即它是一个向量)与至少一样多的元素是那些掩码内值都为true并且还必须具有相同类型阵列。如果阵列被给定为一个标量然后它被认为是使用相同形状的掩码并在同一标量元素无处不在的阵列。其结果将是具有相同形状的掩码和类型相同的矢量阵列。该值将是那些从所接受的载体而在阵列的剩余位置的旧值被保留。
函数描述reshape(source, shape, pad, order)它构造一个特定形状的形状从一个给定source阵列中的元素开始的数组。如果垫不包含则soure的尺寸必须至少为产物(形状)。如果pad包括在内它必须具有相同的类型的soure。如果order被包括它必须使用相同的形状的形状的整数数组值必须是一个排列(1,2,3…n)其中n是在形状要素的数量它必须小于或等于7。
函数描述cshift(array, shift, dim)它执行循环移位由移位置的左边如果移位是正和到右侧如果它是负的。如果阵列是一个矢量移位正在做以自然的方式中如果它是一个较高级的阵列则移是沿着维数dim的所有部分。若dim缺少它被认为是1在其它情况下它必须是1和n(其中n等于阵列的等级)之间的标量整数。该参数换档是一个标量整数或秩n-1个整数的数组和形状相同的阵列中除沿维数dim(在较低级的因为它被移除)。不同的部分因此可以转移在各个方向上并与各种数目的位置。eoshift(array, shift, boundary, dim)这是端关闭的转变。它执行向左移动如果移位是正和到右侧如果它是负的。相反的元素移出新元素均取自边界。如果阵列是一个矢量移位正在做以自然的方式中如果它是一个较高级的阵列在所有各节中的移位是以及该维度暗淡。若 dim 丢失它被认为是1但在其它情况下它为1和n(其中n等于阵列的秩)之间有一个标量的整数值。该参数换档是一个标量整数如果阵列具有秩1在其他情况下它可以是一个标量整数或秩n-1和形状相同的阵列排列的与除沿维数dim 的整数数组(其被取出因为较低级的)。transpose (matrix)其转置矩阵这是秩2的阵列它取代了的行和列矩阵。
函数描述maxloc(array, mask)它返回数组中的最大元素的位置上如果掩码仅包含那些其中满足条件的掩码则返回位置其结果是一个整数向量。minloc(array, mask)它返回数组的数组中的最小元素的位置如果掩码仅包含那些其中满足条件的掩码则返回位置其结果是一个整数向量。
动态数组
实际上就好C 中使用malloc动态申请内存一样
但不是变长数组
real, dimension (:,:), allocatable :: darray
allocate ( darray(s1,s2) )
deallocate (darray) 数组初始化
data初始化
data variable / list / ...program dataStatement
implicit noneinteger :: a(5), b(3,3), c(10),i, jdata a /7,8,9,10,11/ data b(1,:) /1,1,1/ data b(2,:)/2,2,2/ data b(3,:)/3,3,3/ data (c(i),i1,10,2) /4,5,6,7,8/ data (c(i),i2,10,2)/5*2/Print *, The A array:do j 1, 5 print*, a(j) end do Print *, The B array:do i lbound(b,1), ubound(b,1)write(*,*) (b(i,j), j lbound(b,2), ubound(b,2))end doPrint *, The C array: do j 1, 10 print*, c(j) end do end program dataStatementThe A array:
7
8
9
10
11
The B array:
1 1 1
2 2 2
3 3 3
The C array:
4
2
5
2
6
2
7
2
8
2结构体
语法
type type_name declarations
end type 定义
type Bookscharacter(len50) :: titlecharacter(len50) :: authorcharacter(len150) :: subjectinteger :: book_id
end type Books创建
type(Books) :: book1 访问
book1%title C Programming
book1%author Nuha Ali
book1%subject C Programming Tutorial
book1%book_id 6495407结构体数组
创建
type(Books), dimension(2) :: list访问
list(1)%title C Programming
list(1)%author Nuha Ali
list(1)%subject C Programming Tutorial
list(1)%book_id 6495407指针
声明
integer, pointer :: p1 ! pointer to integer
real, pointer, dimension (:) :: pra ! pointer to 1-dim real array
real, pointer, dimension (:,:) :: pra2 ! pointer to 2-dim real array简单的指针malloc分配空间
program pointerExample
implicit noneinteger, pointer :: p1allocate(p1)p1 1Print *, p1p1 p1 4Print *, p1end program pointerExample指针指向变量:
program pointerExample
implicit noneinteger, pointer :: p1integer, target :: t1 p1t1p1 1Print *, p1Print *, t1p1 p1 4Print *, p1Print *, t1t1 8Print *, p1Print *, t1end program pointerExample1
1
5
5
8
8基本输入输出
自由格式简单I/O
read(*,*) item1, item2, item3...
print *, item1, item2, item3
write(*,*) item1, item2, item3...格式化IO
read fmt, variable_list
print fmt, variable_list
write fmt, variable_list 格式化标准
描述符描述示例I这是用于整数输出。此采用的形式为“rIw.m’其中 r, w 和m 的含义在下面的表格中给出。真正的值在它们字段右侧适应。如果字段宽度不足以容纳一个整数则用星号代替。print “(3i5)”, i, j, kF这是用于实数输出。此采用的形式为“rFw.d’其中r, w 和 d 的含义在下面的表格中给出。真正的值在它们字段右侧适应。 如果字段宽度不足够大以容纳所述实数则字段用星号表示。print “(f12.3)”,piE这是用于指数形式实时输出。在“E”描述语句的形式为’rEw.d’其中rw和d的含义如下表中给出。真正的值在它们字段右侧适应. 如果字段宽度不足够大以容纳所述实数则字段用星号表示。请注意打印出与三位小数实数至少10需要一个字段宽度。一个用于尾数2为零4为尾数部分和两个用于指数本身的符号。在一般情况下w≥ d 7。print “(e10.3)”,123456.0 gives ‘0.123e06’ES这是用于实时输出科学计数法。此采用的形式为“rESw.d’其中 r, w 和 d的含义在下面的表格中给出。上述的“E”描述从传统的众所周知的“科学表示法”略有不同。科学表示法具有尾数范围为1.0至10.0对E描述符它具有在范围0.1到1.0的尾数不同。真实的值在字段的右侧。如果字段宽度不足够大以容纳所述实数则字段用星号表示。这里字段宽度必须满足 w ≥ d 7print “(es10.3)”,123456.0 gives ‘1.235e05’A这是用于字符输出。 此采用的形式为“rAw”其中r和w的含义在下面的表格中给出。字符类型是在它们的字段右侧。如果字段宽度不足于以容纳该字符串则字段的第一个“w”字符的字符串。print “(a10)”, strX这是用于空间输出。这需要形式’nX’其中“n”是所需的空间数量。print “(5x, a10)”, str/斜杠描述 - 用于插入空行。这需要的形式’/’并强制下一个数据输出为一个新行。print “(/,5x, a10)”, str
符号描述c列数d右侧的小数位数为真正的输入或输出m要显示的最小位数n跳过的空格数r重复次数 - 使用描述或组描述符的次数w字段宽度- 字符数用于输入或输出
常用格式化方法:
指定浮点输出位数
program printPipi 3.141592653589793238 Print (f6.3), pi Print (f10.7), piPrint (f20.15), pi Print (e16.4), pi/100 end program printPi3.142
3.1415927
3.141592741012573
0.3142E-01留空x格
program printName
implicit nonecharacter (len15) :: first_nameprint *, Enter your first name. print *, Up to 20 characters, pleaseread *,first_name print (10x,a),first_nameend program printNameEnter your first name.Up to 20 characters, please
WDNMDWDNMD数字格式化
program formattedPrint
implicit nonereal :: c 1.2786456e-9, d 0.1234567e3 integer :: n 300789, k 45, i 2character (len15) :: strTutorials Pointprint (i6), k print (i6.3), k print (3i10), n, k, i print (i10,i3,i5), n, k, i print (a15),str print (f12.3), dprint (e12.4), c print (/,3x,n ,i6, 3x, d ,f7.4), n, dend program formattedPrint45045300789 45 2300789 45 2
Tutorials Point123.4570.1279E-08n 300789 d *******文件输入输出:
打开 关闭文件
open (list-of-specifiers)详细的修饰符还是建议看这里比较好: http://blog.sina.com.cn/s/blog_12bc540820102xuhn.html 修辞符描述[UNIT] u设备号说明, 必须是0的正整数, 就相当于文件标识符IOSTAT ios它是在I/O状态标识符和应为整数的变量。如果打开的语句是成功则返回IOS值为零否则为一个非零值。ERR err它是一个标签到该控制跳以防有错误。FILE fname文件名一个字符串。STATUS sta它示出了该文件的先前状态。一个字符串可以有三个值NEW, OLD 或 SCRATCH。一个临时文件被创建和删除当关闭或程序结束。ACCESS acc文件的访问模式, APPEND追加模式, SEQUENTIAL顺序访问, DIRECT直接访问默认值是SEQUENTIAL。FORM frm它给该文件的格式的状态。可以有FORMATTED 或UNFORMATTED两个值。默认值是UNFORMATTEDRECL rl它指定的每个记录中的一个直接访问文件的长度。
close ([UNIT]u[,IOSTATios,ERRerr,STATUSsta])demo
program outputdata
implicit nonereal, dimension(100) :: x, y real, dimension(100) :: p, qinteger :: i ! data do i1,100 x(i) i * 0.1 y(i) sin(x(i)) * (1-cos(x(i)/3.0)) end do ! output data into a file open(1, filedata1.dat, statusnew) do i1,100 write(1,*) x(i), y(i) end do close(1) end program outputdata读写文件
read ([UNIT]u, [FMT]fmt, IOSTATios, ERRerr, ENDs)
write([UNIT]u, [FMT]fmt, IOSTATios, ERRerr, ENDs)实际使用方式和之前的print 差不多
demo
program outputdata
implicit none real, dimension(100) :: x, y real, dimension(100) :: p, qinteger :: i ! data do i1,100 x(i) i * 0.1 y(i) sin(x(i)) * (1-cos(x(i)/3.0)) end do ! output data into a file open(1, filedata1.dat, statusnew) do i1,100 write(1,*) x(i), y(i) end do close(1) ! opening the file for readingopen (2, filedata1.dat, statusold)do i1,100 read(2,*) p(i), q(i)end do close(2)do i1,100 write(*,*) p(i), q(i)end do end program outputdata函数 子程序
函数
标准语法 这样要使用返回值的话需要用 dummy argument
function name(arg1, arg2, ....) [declarations, including those for the arguments] [executable statements]
end function [name]指定返回值的变量名, 代替dummy argument
function name(arg1, arg2, ....) result (return_var_name) [declarations, including those for the arguments] [executable statements]
end function [name]demo
注意, 这里主程序里没有implicit none
program calling_funcreal :: aa area_of_circle(2.0) Print *, The area of a circle with radius 2.0 isPrint *, aend program calling_func! this function computes the area of a circle with radius r
function area_of_circle (r) result(argv)! function result
implicit none ! dummy arguments real :: argv ! local variables real :: r real :: pipi 4 * atan (1.0) argv pi * r**2 end function area_of_circle子程序
与function的几个不同 子程序没有返回值, 但是可以修改参数 即function中的参数都是形参, 除非是指针传递, 否则无法修改外部变量的值, 而子程序可以直接修改 需要使用call调用子程序
subroutine name(arg1, arg2, ....) [declarations, including those for the arguments] [executable statements]
end subroutine [name]program calling_func
implicit nonereal :: a, ba 2.0b 3.0Print *, Before calling swapPrint *, a , aPrint *, b , bcall swap(a, b)Print *, After calling swapPrint *, a , aPrint *, b , bend program calling_funcsubroutine swap(x, y)
implicit nonereal :: x, y, temp temp x x y y temp end subroutine swap模块
其实就是包package
module name [statement declarations] [contains [subroutine and function definitions] ]
end module [name]在一个文件中调用一个模块 (就是include / import)
use nameuse 模块之后就和 include / import 的效果基本相同
module constants
implicit none real, parameter,private :: pi 3.1415926536 real, parameter, private :: e 2.7182818285 contains subroutine show_consts() print*, Pi , pi print*, e , e end subroutine show_consts end module constants program module_example
use constants
implicit none real :: x, ePowerx, area, radius x 2.0radius 7.0ePowerx e ** xarea pi * radius**2 call show_consts() print*, e raised to the power of 2.0 , ePowerxprint*, Area of a circle with radius 7.0 , area end program module_example访问控制
模块中的变量可以设置为private, 之后在模块之外就无法被访问, 就像类的private成员
内部函数 (库函数)
数值函数
Function描述ABS (A)返回A的绝对值AIMAG (Z)返回复数Z的虚部AINT (A [, KIND])截断Z小数部分接近零返回一个实数。ANINT (A [, KIND])返回一个实数值最接近的整数或整数。CEILING (A [, KIND])返回比最小整数大于或等于数A.CMPLX (X [, Y, KIND])其转换实数变量X和Y的一些复数X iY; 如果Y不存在则使用0。CONJG (Z)返回复数Z的复共轭DBLE (A)转换A成到双精度实数。DIM (X, Y)返回X和Y的正差DPROD (X, Y)返回实数 X 和 Y 产生的双精度FLOOR (A [, KIND])提供了比最大的整数小于或等于数A.INT (A [, KIND])将其转换为数字真实或整数为整数截断向零的实部。MAX (A1, A2 [, A3,…])返回的参数的最大值相同类型MIN (A1, A2 [, A3,…])返回的参数的最小值相同类型MOD (A, P)返回用P除以A余数部分这两个参数类型相同 (A-INT(A/P)*P)MODULO (A, P)返回一个模P(A-FLOOR(A/P)*P)NINT (A [, KIND])返回一个最接近整数A的数REAL (A [, KIND])将其转换为实数类型SIGN (A, B)返回一个乘以P. 符号的绝对值基本上它转移B的标志为A.
数学函数
函数描述ACOS (X)返回该反余弦在范围0π以弧度的形式。ASIN (X)返回该反正弦在范围-π/ 2π/ 2单位为弧度。ATAN (X)返回反正切的范围-π/ 2π/ 2单位为弧度。ATAN2 (Y, X)返回反正切的范围-ππ以弧度表示。COS (X)返回参数的弧度的余弦值。COSH (X)返回参数的弧度的双曲余弦值。EXP (X)返回X的指数值LOG (X)返回X的自然对数值LOG10 (X)返回常用对数10为基数X的值SIN (X)返回参数的弧度的正弦值。SINH (X)返回参数的弧度双曲正弦。SQRT (X)返回X的平方根TAN (X)返回参数的弧度的切线。TANH (X)返回参数弧度的双曲正切值。
数字查询函数
函数描述DIGITS (X)返回显著模型的位数。EPSILON (X)返回相比一个是几乎可以忽略不计的数目。换句话说它返回最小值使得REAL( 1.0, KIND(X)) EPSILON(X)为不等于REAL( 1.0, KIND(X))。HUGE (X)返回模型最多数量MAXEXPONENT (X)返回该模型的最大指数MINEXPONENT (X)返回该模型的最小指数PRECISION (X)返回小数精度RADIX (X)返回该模型的基数RANGE (X)返回十进制指数范围TINY (X)返回该模型的最小正数
浮点操作函数
函数描述EXPONENT (X)返回一个模型数的指数部分FRACTION (X)返回一个数的小数部分NEAREST (X, S)返回给定的方向最近的不同处理器编号RRSPACING (X)返回型号的邻近给定数量的相对间隔的倒数SCALE (X, I)乘以一个实数由基数的整数次幂SET_EXPONENT (X, I)返回一个数的指数部分SPACING (X)返回型号的绝对间隔接近指定数值
位操作函数
函数描述BIT_SIZE (I)返回该模型的比特数BTEST (I, POS)位测试IAND (I, J)逻辑与IBCLR (I, POS)清除位IBITS (I, POS, LEN)位提取IBSET (I, POS)设置位IEOR (I, J)异或IOR (I, J)包括或ISHFT (I, SHIFT)逻辑移位ISHFTC (I, SHIFT [, SIZE])循环移位NOT (I)逻辑补
字符函数
函数描述ACHAR (I)它返回ASCII整理序列中的第i个字符。ADJUSTL (STRING)它通过调节删除任何前导空格和插入尾随空白留下的字符串ADJUSTR (STRING)它去除右尾随空白和插入前导空格调整字符串。CHAR (I [, KIND])它返回特定机器整理序列中的第i个字符IACHAR ©它返回字符的ASCII码排序序列中的位置。ICHAR ©它返回字符在机器处理器特定排序序列中的位置。INDEX (STRING, SUBSTRING [, BACK])它返回SUBSTRING内STRING最左边最右边如果返回.TRUE。起始位置。LEN (STRING)它返回字符串的长度。LEN_TRIM (STRING)它返回一个字符串的长度没有结尾的空白字符。LGE (STRING_A, STRING_B)词汇上大于或等于LGT (STRING_A, STRING_B)词汇上大于LLE (STRING_A, STRING_B)词汇上大于或等于以下LLT (STRING_A, STRING_B)词汇上小于REPEAT (STRING, NCOPIES)重复并置SCAN (STRING, SET [, BACK])它返回STRING属于集或者0如果都不属于最左边最右边如果返回.TRUE。字符的索引。TRIM (STRING)删除结尾的空白字符VERIFY (STRING, SET [, BACK])验证字符集的字符串
类型函数
函数描述KIND (X)它返回种类类型的参数值。SELECTED_INT_KIND ®它返回一种为特定网络版的指数范围类型的参数。SELECTED_REAL_KIND ([P, R])实数类型的参数值指定精度和范围
逻辑函数
Function描述LOGICAL (L [, KIND])逻辑型的不同种类型参数对象之间转换