我们不得不将一些旧的Fortan 77代码转换为VB.net。由于我们都不知道任何Fortran,我们取得了重大进展。
但是,我们遇到了以下write语句,它有几个嵌套的隐含do循环。我们熟悉隐含的do循环,但不知道MN中结肠的意义:MN是。我们只见过使用逗号的隐含do循环,例如本声明(NREC,MN)
中的后一个逗号。
Logical*1 DECLN(492)
WRITE(6,9238)NPERMN(NREC),CUSIPS(NREC),TICKRS(NREC),NAMES(NREC),(DECLN(MN:MN),MN=1,30),(SCORES(NREC,MN),MN=1,30))
format(I7, 1X, A8, 1X, A8, 1X, A20, 1X, 12A1, 1X, 12A1, 1X, 6A1/(12F10.5))
答案 0 :(得分:4)
DECLN(MN:MN)
看起来像一个名为DECLN
的字符变量中的1个字符的提取。表达式
(DECLN(MN:MN),MN=1,30)
(这是io-implied-do
表达式)会导致程序将DECLN
的前30个字符写为30个单独的字符。表格
(DECLN(1:30))
将一个30个字符的相同字符写入。
DECLN(MN:MN)
可能是排名1数组DECLN
的1元素部分,在这种情况下,写入DECLN(MN)
是一种奇怪的方式
答案 1 :(得分:2)
DECLN(MN:MN)用于从字符串中提取单个字符。
答案 2 :(得分:0)
如更新中所述,DECLN不是字符;它是1字节的LOGICAL数组(包含有关证券的信息)。 (DECLN(MN:MN),MN = 1,30)正在识别前30个元素,但我认为可以更容易地写入(DECLN(MN),MN = 1,30)。 CUSIP(9位代码)正在编写A8,它会截断校验和(足够典型的程序,我相信Brian知道,因为大多数清算机构会忽略它)