Fortran暗示用冒号做什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (38)

我们不得不将一些旧的Fortan 77代码转换为vb.net。由于我们都不知道任何Fortran,我们取得了重大进展。但是,我们遇到了以下write语句,它有几个嵌套的隐含do循环。我们熟悉隐含的do循环,但不知道MN中结肠的意义:MN是。我们只见过使用逗号的隐含do循环,例如本声明中的后者(NREC,MN)。

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

任何帮助将不胜感激。

更新:逻辑* 1 DECLN(492)

根据要求,这里是行中引用的格式语句:

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

布赖恩

提问于
用户回答回答于
DECLN(MN:MN)

看起来像一个名为变量的1字符提取DECLN。表达方式

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

(这是一个io-implied-do表达式)使程序将前30个字符写DECLN为30个单独的字符。表格

(DECLN(1:30))

将相同的字符写入一个30个字符的长度。

它可能是DECLN(MN:MN)rank-1数组的1元素部分DECLN,在这种情况下,它是一种奇怪的写入方式DECLN(MN)

用户回答回答于

如更新中所述,DECLN不是字符; 它是1字节的LOGICAL数组(包含有关证券的信息)。(DECLN(MN:MN),MN = 1,30)正在识别前30个元素,但我认为可以更容易地写入(DECLN(MN),MN = 1,30)。CUSIP(9位代码)正在编写A8,它会截断校验和(典型的足够程序,我相信Brian知道,因为大多数清算机构忽略它)

扫码关注云+社区

领取腾讯云代金券