【发布时间】:2020-08-26 18:18:26
【问题描述】:
我们正在将一堆 COBOL 程序从 z/OS 迁移到 AIX 7。我们在 AIX 上使用 IBM COBOL Compiler (5.1)。现在我不明白 AIX 上 COBOL 的文件访问和文件系统是如何工作的。 COBOL 代码直接用
SELECT :FILE: ASSIGN TO :FILE:
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
STATUS IS S-STATUS.
然后做一个OPEN INPUT
这在 AIX 上编译得很好:
PP 5724-Z87 IBM COBOL for AIX 5.1.0 in progress ...
LineID Message code Message text
91 IGYGR1216-I A "RECORDING MODE" of "F" was assumed for file
"CUSTOMERS".
94 IGYGR1216-I A "RECORDING MODE" of "F" was assumed for file
"LIST1".
97 IGYGR1216-I A "RECORDING MODE" of "F" was assumed for file "UINPUT".
Messages Total Informational Warning Error Severe Terminating
Printed: 3 3
End of compilation 1, program xxxxx, highest severity: Informational.
现在的问题是,运行程序时找不到文件。它给出状态码:37
我知道我必须为 shell (ksh) 上的文件提供一个文件系统,例如:
export CUSTOMERS="STL-CUSTOMERS"。该文件与程序位于同一目录中。
我的问题是:使用哪个文件系统?我尝试了“STL”,它在我看来就像“标准”AIX 文件系统(即 JFS2)。但这不起作用。另一个选项是(来自 AIX 编程指南 5.1 上的 COBOL):
- DB2
- SdU(SMARTdata 实用程序)
- SFS(Encina 结构化文件服务器)
- STL(标准语言)
- QSAM(排队顺序访问方法)
- RSD(记录顺序分隔)
我们尝试了所有方法,并且工作的文件系统是“QSAM”。该文件是从大型机传输的文本文件 (ASCII)。但不是直接的,它首先通过 FTP 复制,然后在 Windows 上转换为 ASCII(我们必须修复换行符)。在玩弄它以使其工作时,我们使用 vi 编辑文件以使每行 80 个字符。所以它是在 AIX 上编辑的,在 AIX 上看起来就像一个普通的文本文件。 为什么 COBOL 仍然希望 QSAM 作为“文件系统”?术语“文件系统”在这里是什么意思?好像不是真正意义上的JFS这样的文件系统。
【问题讨论】:
-
程序员指南中有很多信息 - 对我来说太多了。你经历过吗?
-
是的,我经历了它,但无法理解它。它对 QSAM 说:“QSAM(排队顺序访问方法)文件系统支持固定、可变和跨区记录。使用 QSAM 文件系统,您可以直接访问从大型机传输到 AIX 的 QSAM 文件。”没有真正回答为什么这会起作用而 STL 不会。所有的编程指南都是关于大型机的,而不是像 AIX 这样的 Unix 系统。
-
您确实阅读了与 AIX 相关的程序员指南,不是吗?听起来你读的是 zOS 版本。我用“cobol aix 文档”进行了谷歌搜索,这是导致文档的第一次点击。
-
是的,我确实阅读了 AIX 程序员指南。听起来确实像 zOS,这就是问题所在。