vms fortran read/write 单位名称
vms fortran read/write unit designation
我的任务是将一些旧的(大约 1986 年的)VAX VMS FORTRAN 代码移植到 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 循环,但我不理解 'where' 这是写入和读取。浏览 FORTRAN 代码的其余部分并没有显示可能与此调用关联的 unit=2 open 语句,因此它似乎不是磁盘文件,但我不确定。我希望这里有人可以回到他们的记忆中并帮助我。
如果我没看错 VMS VAX FORTRAN manual,'N
指定单元 2
中的第 N
条记录。
来自Cl。 7.1.1.6 "Record Specifier":
The record specifier identifies the number of the record you wish to access in a file with relative organization. It takes either one of the following forms:
REC = r
'r
r
Is a numeric expression with a value that represents the position in a direct access file of the record to be accessed. [...]
请注意这不是符合标准的 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 "Logical Unit Specifier":
A logical unit number is assigned to a file or device in one of the two ways:
- Explicitly trough an OPEN statement [...]
- Implicitly by the system [...]
在后一种情况下,使用的文件名在Cl. 4.2.2.1 "FORTRAN Logical Names" of the VAX Fortran user manual中定义:
VAX FORTRAN provides predefined logical names in the
following form:
FOR0nn[.DAT]
[...]
For example:
WRITE (17,200)
If you enter the preceding statement without including an
explicit file specification, the data is written to a file named
FOR017.DAT on your default disk under your default
directory.
在这种情况下,大多数现代编译器都会创建一个文件 fort.nn
。
我的任务是将一些旧的(大约 1986 年的)VAX VMS FORTRAN 代码移植到 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 循环,但我不理解 'where' 这是写入和读取。浏览 FORTRAN 代码的其余部分并没有显示可能与此调用关联的 unit=2 open 语句,因此它似乎不是磁盘文件,但我不确定。我希望这里有人可以回到他们的记忆中并帮助我。
如果我没看错 VMS VAX FORTRAN manual,'N
指定单元 2
中的第 N
条记录。
来自Cl。 7.1.1.6 "Record Specifier":
The record specifier identifies the number of the record you wish to access in a file with relative organization. It takes either one of the following forms:
REC = r 'r
r
Is a numeric expression with a value that represents the position in a direct access file of the record to be accessed. [...]
请注意这不是符合标准的 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 "Logical Unit Specifier":
A logical unit number is assigned to a file or device in one of the two ways:
- Explicitly trough an OPEN statement [...]
- Implicitly by the system [...]
在后一种情况下,使用的文件名在Cl. 4.2.2.1 "FORTRAN Logical Names" of the VAX Fortran user manual中定义:
VAX FORTRAN provides predefined logical names in the following form:
FOR0nn[.DAT]
[...]
For example:
WRITE (17,200)
If you enter the preceding statement without including an explicit file specification, the data is written to a file named FOR017.DAT on your default disk under your default directory.
在这种情况下,大多数现代编译器都会创建一个文件 fort.nn
。