2012-08-01 29 views
0

我們不得不將一些舊的Fortan 77代碼轉換爲vb.net。我們沒有人知道任何Fortran,我們已經取得了重大進展。 但是,我們遇到了下面的寫有語句的嵌套隱含do循環。我們熟悉隱含的do循環,但不知道MN中結腸的意義:MN是。我們只使用逗號(如本文後面的逗號)(NREC,MN)暗示了do循環。Fortran暗含用冒號做?

WRITE(6,9238)NPERMN(NREC),CUSIPS(NREC),TICKRS(NREC),NAMES(NREC),(DECLN(MN:MN),MN=1,30),(SCORES(NREC,MN),MN=1,30)) 

任何幫助將不勝感激。

UPDATE: 邏輯* 1個DECLN(492)

按要求,這裏是該行引用的格式聲明:

format(I7, 1X, A8, 1X, A8, 1X, A20, 1X, 12A1, 1X, 12A1, 1X, 6A1/(12F10.5))

布賴恩

+1

'我們不得不將一些舊的Fortan 77代碼轉換爲vb.net'。爲什麼不cobol? – 2012-08-01 15:12:47

+0

這段代碼很奇怪 - 變量列表裏面有'WRITE'語句。 'WRITE(6,*)NPERMN(NREC),...'或'WRITE(6,fmt_or_line_number)NPERMN(NREC),...'會更合適。 – 2012-08-01 15:23:00

+0

因爲此代碼將被合併到一些現有的.net進程中。 – LordJ40 2012-08-01 15:23:17

回答

4
DECLN(MN:MN) 

外觀就像名爲DECLN的字符變量的1個字符的提取。表達

(DECLN(MN:MN),MN=1,30) 

(這是一個io-implied-do表達)導致程序前30個字符寫入的DECLN 30分離的字符。表格

(DECLN(1:30)) 

在一個30個字符長的行中寫入相同的字符。

這可能是DECLN(MN:MN)是秩1陣列DECLN的1元件部分,在這種情況下,它寫DECLN(MN)

+0

不知道Fortran 77支持任何不同於字符數組的數組部分... – 2012-08-01 15:18:37

+0

我原本以爲它可能是一個字符的提取,但後來是,爲什麼不只是(DECLN(1:30))? – LordJ40 2012-08-01 15:29:14

+0

我不確定FORTRAN77是否支持常規的數組部分,但FORTRAN77程序很少是純粹的FORTRAN77,通常它們是用FORTRAN77 +擴展編寫的,而且我不會通過我的記憶庫來拖拉以試圖回憶所有的擴展FORTRAN77,我見過:-) – 2012-08-01 15:29:47

2

DECLN一種奇怪的方式:用於提取一個字符(MN MN)來自一個字符串。