如何在 COBOL 中编写比最大 LRECL 更长的输出?

  • 本文关键字:LRECL 输出 COBOL cobol jcl
  • 更新时间 :
  • 英文 :


您是否曾经处理过 VBS 或 FBS 文件,其 LRECL 超过最大 COBOL? 我想编辑比 32760 长得多的 LOB(大对象(记录,将它们写入文件,并将它们传输到 Unix 服务器。 如果您已经有经验,如果您能给我一些处理技巧,那就太好了。

以下是有关 COBOL 中跨区记录注意事项的材料

您可以为 QSAM 文件中的跨区记录编写录制模式 S,这些记录是 分配给磁带或直接访问设备。不要 请求跨越 HFS 中文件的记录。您可以省略 录制模式子句。编译器将录制模式确定为 如果最大记录长度(以字节为单位(加 4 大于 S,则为 S 在块包含子句中设置的块大小。

对于程序中格式为 S 的文件,编译器将确定 最大记录长度与格式 V 使用的规则相同。 长度基于您对 RECORD 子句的使用情况。

创建包含格式 S 记录的文件时,记录 大于块中的剩余空间,COBOL 写入一段 要填充块的记录。记录的其余部分存储在 下一个块或块取决于其长度。COBOL 支持 QSAM 跨越长度达 32,760 字节的记录。

检索具有 S 格式记录的文件时,程序可以 仅检索完整的记录。

下面是存储长度超过 32,760 字节的记录的说明。 ISPF 编辑不支持分段记录。 他们有点奇怪的野兽。

您可以从 COBOL(或其他符合 LE 的语言(调用 C 运行时例程。

[...]
Working-Storage Section.
01  CONSTANTS.
05  WS-FILE-OPTN            PIC X(003) VALUE Z'rb'.
01  WORK-AREAS.
05  WS-FILE                 POINTER VALUE NULL.
05  WS-FILE-NM              PIC X(255).
[...]
Procedure Division.

[...]
CALL 'FOPEN' USING
BY REFERENCE WS-FILE-NM
BY REFERENCE WS-FILE-OPTN
RETURNING WS-FILE
END-CALL
IF WS-FILE = NULL
[error handling, maybe call perror()]
END-IF

这样,您可以将 I/O 委托给 C 运行时,并在 COBOL 中执行其余的逻辑。

有关所选 I/O 函数所需参数的文档,请参阅 C 运行时库参考。

最新更新