Fortran暗示用冒号吗?

时间:2012-08-01 15:03:51

标签: fortran colon

我们不得不将一些旧的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))

3 个答案:

答案 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知道,因为大多数清算机构会忽略它)