2012-08-01 115 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)来自一个字符串。