2012-08-06 65 views
1

我被给了一些Fortran代码(我相信90),我试图找出它的作用。我不知道Fortran,但知道Perl。Fortran代码是做什么的?

这里是一个片段,我已经无法弄清楚:

fmly='I:\CEX\Fmly' 
    fmlyfile=fmly(1:23)//yearqtr(qtrcnt) 
    open(unit=13,file=fmlyfile) 

我知道//是连接运算符,但我感到困惑的是什么fmly(1:23)部分在做什么。

回答

4

fmly(1:23)正在将字符串fmly从位置1切片到位置23。请注意,在Fortran中,字符串索引从1开始,而不是从0开始。 fmly(1:23)相当于fmly(:23)

+2

数组索引从“1”开始,除非该数组是用其他边界声明的,例如, '类型,维度(-10:10):: array'。 – 2012-08-07 07:36:53

+0

@HristoIliev固定。 – milancurcic 2012-08-07 15:27:29

3

string(A:B)是一个子串,选择字符串A到B字符串stringfmly使用少于23个字符进行初始化,因此尾随字符将为空白。之后,它将与字符串数组yearqtr(或可能是字符串值函数yearqtr)的元素连接。

+2

'yearqtr(qtrcnt)'也可能是对返回字符串的外部函数的调用。 – 2012-08-07 07:37:41

+0

'yearqtr(qtrcnt)'没有正确的形式作为符合字符变量切片的(符合标准的)引用。即使只需要1个字符的切片,也需要像'yearqtr(qtrcnt:qtrcnt)'这样的东西。 – 2012-08-07 09:51:08

+0

@Hristo Iliev对于yearqtr(qtrcnt)的替代可能性是正确的。子字符串被语法排除。变量名称提示“年度季度(季度计数)”,这对四元素阵列来说很容易。 – 2012-08-08 07:36:35