有没有办法从 IBM 大型机批处理程序中的第 10 条记录开始读取 ESDS 文件?

Posted

技术标签:

【中文标题】有没有办法从 IBM 大型机批处理程序中的第 10 条记录开始读取 ESDS 文件?【英文标题】:Is there a way to start reading an ESDS file from 10th record in an IBM Mainframe batch program? 【发布时间】:2015-06-27 18:41:28 【问题描述】:

给定:

ESDS 文件的记录长度为 80。

它有 200 条记录。

我已经检查了以下链接,但没有得到满意的答案。

IBM Mainframe Forum

Geekinterview

【问题讨论】:

到目前为止你有什么尝试?任何代码?你想对读取的数据做什么?是否接受基于 Windows 内置程序的替代方法? ESDS 文件包含文本?没有 的 80 个字符的记录? @EmmadKareem 不要这么说,你会让 OP 询问“我如何从批处理程序中调用 CICS 程序?” :-) 是时候清楚地说明你想要什么了。您想在 Mainframe 中处理文件吗?你想在PC上使用它吗?您在 PC 上使用哪种编译器?如果要随机访问文件,为什么要使用 ESDS?以任何方式跳过顺序文件中的前 n 条记录有什么大不了的?在任何平台上都需要不到一秒钟的时间...... 您无法在本机 IBM COBOL 中做您想做的事。现在呢? 【参考方案1】:

这是一个奇怪的要求,但如果您想处理掉九个标准标题或其他东西,最简单的方法是在打开数据集时进行九次读取。例如

Open My-ESDS
Perform Read-My-ESDS 9 times
Perfomr Do-Normal-Stuff

还有其他可用选项——您可以将文件读取为“未格式化”,这样您就可以处理有关格式的所有内容。除非您确实需要一些非常具体的文件处理,否则我不建议这样做。

如果您不需要前九个记录,您可以在启动程序之前对它们进行排序/删除,这很容易维护。

您能否说明为什么要跳过前九个并从第十个开始?这可能会有所作为...

【讨论】:

我知道这是一个老问题,但我想提一下,原发帖人想要做的很简单,但你需要一个汇编语言或 C/C++ 子程序。诀窍是 VSAM POINT 宏——汇编程序可以直接调用它,而 C 运行时“fseek()”函数的作用几乎相同。如果您要跳过少量记录,这没什么大不了的,但如果您需要在大文件的中途指向,那么 POINT 就是这样做的方法。

以上是关于有没有办法从 IBM 大型机批处理程序中的第 10 条记录开始读取 ESDS 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将繁体中文消息从 Java 发送到 IBM MQ

如何自动化 jcl 在大型机上运行 cobol 程序

尝试使用 C# 从 IBM 大型机下载

在 Blue Prism 中使用大型机应用程序。

有没有办法从大型图像创建 xxhdpi、xhdpi、hdpi、mdpi 和 ldpi 可绘制对象?

从大型机批处理程序调用 Web 服务