我的任务是将一些旧的(大约1986年)代码移植到c++,并遇到了一些绊脚石。以下两行代码是计算goto的一部分。
WRITE(2'N) (Y (I), I = 1, 5)
READ(2'N, ERR = 48) (Y (I), I = 1, 5)我的问题是单位代号"2'N“,如果这是真的。"N“是传入子例程的整数变量。我已经做了相当多的谷歌这个模式和阅读什么VMS文档,我可以找到,但一直无法找到与此模式的任何信息与撇号。我理解写和读语句后面隐含的do循环,但我不明白这是从哪里写到和读的。浏览FORTRAN代码的其余部分不会显示可能与此调用相关联的unit=2 open语句,因此似乎它不是磁盘文件,但我不确定。我希望这里的人能回到他们的记忆里帮助我。
发布于 2016-05-23 18:14:59
如果我正确地读取了VMS VAX FORTRAN手册,'N将在单元2中指定N-th记录。从Cl。7.1.1.6“记录指定者”:
记录说明符标识要在具有相对组织的文件中访问的记录的数量。它采取下列任何一种形式: 参考值r 'r r 是一个数值表达式,其值表示要访问的记录的直接访问文件中的位置。..。
请注意,这是不符合标准的Fortran!大多数编译器不会接受这种语法。相反,使用REC=...
WRITE(2, REC=N) (Y (I), I = 1, 5)
READ(2, REC=N, ERR = 48) (Y (I), I = 1, 5)单元2中的文件不需要显式打开。这是在同一文档Cl中指定的。7.1.1.2“逻辑单元说明”:
逻辑单元号通过以下两种方式之一分配给文件或设备:
在后一种情况下,使用的文件名在Cl。4.2.2.1 VAX Fortran用户手册的"FORTRAN逻辑名称“中定义:
VAX以下列形式提供预定义的逻辑名称: FOR0nn.DAT 例如: 写(17,200) 如果输入前面的语句而不包括显式文件规范,则将数据写入默认目录下默认磁盘上名为FOR017.DAT的文件中。
在这种情况下,大多数现代编译器都会创建一个文件fort.nn。
https://stackoverflow.com/questions/37397173
复制相似问题