1

我正在将第三方供应商提供的 csv 文件导入 COBOL 应用程序。.csv 格式的文件名长度为 23 个字符。交付的这些文件已成功并正确地读入 Excel、Word 和 Vi。

当我使用提供的文件名打开任何这些文件时,我收到 COBOL 错误 94,20 - 找不到文件。这发生在 SCO OpenServer 5.0.7 (Unix) 和 Windows 7 运行时环境中。

但是,如果我缩短文件名(任意缩短为 4 个字符),我可以毫无问题地打开、读取和关闭文件。

顺序输入文件名中允许的字符数是否有 COBOL 限制?还有什么可能导致这样的公开失败?

我正在运行 Micro-focus/ACUCOBOL-GT V7.00 编译器和 ACUCOBOL-GT 运行时版本 5.2.1。

4

1 回答 1

0

旧版本的 SCO Unix(SCO OpenServer 的前身)有 14 个字符的文件名限制。如果您的文件名为“something.csv”,那么“something”部分将被限制为 10 个字符。

此限制不适用于 OpenServer 5.0.7。但是,如果您使用的 COBOL 是在更旧的版本上编译的,或者如果它较新但自愿限制其文件名支持以尝试保持向后兼容性,则可能是问题所在。您可以通过针对 13、14、15 个字符的文件名对其进行测试来探测这一点——好吧,一般来说,探测不同的长度以了解实际限制。

您的 5.0.7 系统应该有系统调用跟踪器命令 truss(C),并且还可能有 trace(CP)(如果您安装了 C 开发系统)。运行truss how-you-start-a-cobol-program longfilename.csv可能会产生有用的输出,例如导致您看到的错误的实际系统调用和系统错误号。truss两者的OSR5 版本都比较不稳定trace(以不同的方式),因此请尝试两者。阅读他们的手册页以获取诸如“-o”标志之类的内容以将输出写入文件。

于 2017-05-05T02:52:03.613 回答