我被給了一些Fortran代碼(我相信90),我試圖找出它的作用。我不知道Fortran,但知道Perl。Fortran代碼是做什麼的?
這裏是一個片段,我已經無法弄清楚:
fmly='I:\CEX\Fmly'
fmlyfile=fmly(1:23)//yearqtr(qtrcnt)
open(unit=13,file=fmlyfile)
我知道//
是連接運算符,但我感到困惑的是什麼fmly(1:23)
部分在做什麼。
我被給了一些Fortran代碼(我相信90),我試圖找出它的作用。我不知道Fortran,但知道Perl。Fortran代碼是做什麼的?
這裏是一個片段,我已經無法弄清楚:
fmly='I:\CEX\Fmly'
fmlyfile=fmly(1:23)//yearqtr(qtrcnt)
open(unit=13,file=fmlyfile)
我知道//
是連接運算符,但我感到困惑的是什麼fmly(1:23)
部分在做什麼。
fmly(1:23)
正在將字符串fmly
從位置1
切片到位置23
。請注意,在Fortran中,字符串索引從1
開始,而不是從0
開始。 fmly(1:23)
相當於fmly(:23)
。
string(A:B)
是一個子串,選擇字符串A到B字符串string
。 fmly
使用少於23個字符進行初始化,因此尾隨字符將爲空白。之後,它將與字符串數組yearqtr
(或可能是字符串值函數yearqtr)的元素連接。
'yearqtr(qtrcnt)'也可能是對返回字符串的外部函數的調用。 – 2012-08-07 07:37:41
'yearqtr(qtrcnt)'沒有正確的形式作爲符合字符變量切片的(符合標準的)引用。即使只需要1個字符的切片,也需要像'yearqtr(qtrcnt:qtrcnt)'這樣的東西。 – 2012-08-07 09:51:08
@Hristo Iliev對於yearqtr(qtrcnt)的替代可能性是正確的。子字符串被語法排除。變量名稱提示「年度季度(季度計數)」,這對四元素陣列來說很容易。 – 2012-08-08 07:36:35
數組索引從「1」開始,除非該數組是用其他邊界聲明的,例如, '類型,維度(-10:10):: array'。 – 2012-08-07 07:36:53
@HristoIliev固定。 – milancurcic 2012-08-07 15:27:29