0

大家好,

这是我关于stackoverflow的第一个问题,所以如果有问题请告诉我。但是,我需要知道是否可以从 DB2 下的 Java 存储过程中读取数据集,该数据集使用 COBOL 程序中声明的 DD 名称定义。

程序流程是: - 一个 JCL 调用一个 STORED PROCEDURE - STORED PROCEDURE 调用 jar - jar 尝试通过 DD 名称打开数据集

我尝试使用 jZos 库中的 ZFile 类,但 Java 代码在 z/OS 上既看不到 DD 名称也看不到相关文件。我的疑问是:因为 DB2 上的 JVM 运行在一个隔离的环境中,或者有一个特定的类/过程来访问数据集,所以没有办法完成这个任务?

提前致谢!

4

1 回答 1

5

“是否可能”、“是否允许”和“这是一个好主意”之间存在显着差异。

因为您知道文件名,我相信通过动态分配与 DD 关联的文件可能可以实现您的目标。ZFile的javadoc表明它“包括 BPXWDYN 的接口(基于文本的 MVS 动态分配接口)”。

您的 IT 部门是否允许这样做是您的架构人员和 DB2 系统程序员(负责安装、配置和执行 DB2 的人员)的问题。仅仅因为某事是可能的并不意味着它是允许的——可能存在性能、安全或审计方面的考虑。

即使事实证明这种架构是可能的并且被允许的,也可能有更好的解决方案。与您的架构人员、z/OS 和 DB2 系统程序员讨论您的需求以及您希望采用此特定解决方案的原因。向他们询问有关仍能满足您的要求的改进建议。

例如,如果您打算在批处理作业中执行此存储过程一百万次,并动态分配文件,打开它,读取其内容,关闭它,然后为每次执行释放它 - 这不太可能执行良好并且可能对使用 DB2 存储过程的其他应用程序产生不利影响。也许将文件的内容存储在 DB2 表中是一个更好的解决方案——我不能这么说,因为我不知道您的业务需求或应用程序其余部分的上下文,我只是将其作为示例。

于 2018-10-23T15:35:35.840 回答