我们不得不将一些旧的Fortan77代码转换成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))
发布于 2012-08-01 23:13:14
DECLN(MN:MN)
看起来像是从一个名为DECLN
的字符变量中提取的1个字符。表达式
(DECLN(MN:MN),MN=1,30)
(这是一个io-implied-do
表达式)会使程序将DECLN
的前30个字符写成30个单独的字符。表单
(DECLN(1:30))
在一个30个字符的go中写入相同的字符。
可能DECLN(MN:MN)
是秩1数组DECLN
的1个元素部分,在这种情况下,编写DECLN(MN)
是一种奇怪的方式
发布于 2012-08-01 23:13:32
DECLN(MN:MN)用于从字符串中提取单个字符。
发布于 2018-06-11 08:10:02
正如更新中所指出的,DECLN不是字符;它是1字节的逻辑数组(包含有关证券的信息)。(DECLN(MN:MN),MN=1,30)识别前30个元素,但我认为更容易写(DECLN(MN),MN=1,30)。CUSIP(9位代码)是用A8编写的,它截断了校验和(典型的足够的过程,我相信Brian知道这一点,因为大多数结算机构都忽略它)
https://stackoverflow.com/questions/11762081
复制相似问题