CHARACTER*(*) string, substr n = INDEX (string, substr)
INTEGER*4 FUNCTION rindex CHARACTER*(*) string, substr n = rindex (string, substr)
INTEGER*4 FUNCTION lnblnk CHARACTER*(*) string n = lnblnk (string)
CHARACTER*(*) string n = LEN (string)
INDEX(a1,a2) 返回字符串 a1 中第一次出现的字符串 a2 的索引,如果未出现该字符串,将返回零(内部函数)。
rindex(a1,a2) 返回字符串 a1 中最后一次出现的字符串 a2 的索引,如果未出现该字符串,将返回零。
lnblnk( a1 ) 返回 a1 中最后一个非空字符的索引。此函数非常有用,因为所有 f77 字符对象都是固定长度的且填充空白。
LEN 返回字符串参数的声明大小(内部函数)。
针对 64 位环境进行编译时(使用编译器选项 -m64),当应用于非常大的字符串(大于 2 GB)时,例程 len、index、rindex 和 lnblnk 可能会返回大于 INTEGER*4 数据的数据范围的值。在这种情况下,这些函数必须声明为 INTEGER*8,接收其结果的变量也是如此。
Example: LEN(), INDEX(), rindex() , lnblnk()(): CHARACTER s*32 / '123456789 123456789 1234' / INTEGER*4 declen, first, last, lnblnk, rindex declen = LEN( s ) first = INDEX( s, '123' ) last = rindex( s, '123' ) lastnb = lnblnk( s ) PRINT*, declen, lastnb, first, last END demo% f77 -silent tindex.f demo% a.out 32 24 1 21 demo%
在上面的示例中,declen 是 32 而不是 24。这是字符串变量的声明长度,而不是它包含的字符串的长度。
libfui.a