2012-08-06 67 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