我正在尝试使用IBM的JSR352实现开发Java批处理程序。由于批处理作业涉及迭代处理大量记录,因此我选择将其实现为块处理作业。
此作业涉及 3 个步骤,对文件 1 中的每条记录重复
- 读者类:从文件 1 中读取内容以形成关键文本
- 处理器类:查找文件 2 中的密钥文本
- 编写器类:使用自定义文本更新文件 2 中找到关键文本的文本
从处理器到写入器,我可以返回所有行号,其中 找到关键文本匹配项。但是,如果没有对文件的随机访问,如何 我可以从我的编写器更新文件 2 中的这些特定行号吗?
由于我只能将这些输入/输出流用于 文件处理 我无法在 之间拆分查找和更新逻辑 处理器和编写器类。我怎样才能做到这一点?
这是因为代码将在Windows机器中开发,但最终在大型机(z/os(服务器中执行。
处理器在技术上是可选的,因此您可以仅将查找/更新逻辑合并到编写器类中。 这可能会有所帮助。
在 z/OS 上,使用 VSAM 数据集(也可通过 JZOS ZFile API 访问(更容易做到这一点。 但这很难在Windows上开发/测试。 我想您可以将 ZFile 调用分开,并在 Windows 上用一些经过操纵的仿真替换它们,这些仿真可以很好地用于测试目的。
我最终不得不放弃基于 JZOS FileFactory 的方法,并使用 JZOS ZFile 的定位 API 来查找特定的行(使用键(并从编写器更新它。