IBM® JZOS 工具包由 com.ibm.jzos 包中的类组成,该包与 IBM Java SDK 一起发布在一个 JAR 文件 ibmjzos.jar 中,用于 z/OS®。
这些类为 z/OS 上的 Java 应用程序提供了对传统 z/OS 数据集和文件的直接访问权,以及对用于将字节数组字段映射到 Java 数据类型的 z/OS 系统服务和转换器类的访问权。
开始之前
如果未将 JZOS Toolkit API 下载到工作站,请将 ibmjzos.jar 文件从 z/OS 上的相关版本的 IBM Java SDK 传输到工作站。
重要信息: 如果您正在使用 IBM CICS Explorer® 或基于 Eclipse的 IDE V2022-03 或更高版本,那么缺省编译器一致性级别必须与应用程序或样本所部署到的目标运行时的 Java 版本相匹配,以避免发生问题。 您可以在 IBM CICS Explorer 中通过选择 "首选项" ,然后选择 "Java" ,然后选择 "编译器" 来更改此设置。
过程
- 设置目标平台。 要准备在开发环境中使用 JCICS API ,请设置 Eclipse 目标平台以确保它可以在本地进行解析。 在 OSGi 开发环境中,目标平台定义用于定义工作空间中的应用程序所构建的插件。 对于 CICS Explorer ,使用 Eclipse 菜单 。 单击 添加,然后从提供的模板中选择运行时环境的 CICS® TS 发行版。 请不要忘记将目标平台应用于工作空间。
- 为 JZOS Toolkit 创建 OSGi 包装器捆绑软件。 如果您有 IBM CICS SDK for Enterprise Java™ (Liberty) 插件,则选择 ,以创建新的 OSGi 捆绑包项目。 确保新创建的捆绑软件导出 Java 应用程序所需的所有可用 JZOS Toolkit 包,例如 com.ibm.jzos, com.ibm.jzos.fields或 com.ibm.jzos.wlm。 这将确保这些包可供 Eclipse 工作空间中的其他 OSGi 项目导入。
例如:
Export-Package: com.ibm.jzos,
com.ibm.jzos.fields
- 创建 CICS Java 应用程序。
- 使用向导 在 Eclipse 中创建 OSGi 捆绑软件项目 。
- 创建 Java 包 com.ibm.cicsdev.jzos.sample 并添加类 ZFilePrint。
- 复制以下代码示例,这将打开 //INPUT DD 指向的 z/OS 数据集,并将输出写入 CICS 临时存储器队列。
package com.ibm.cicsdev.jzos.sample;
import com.ibm.jzos.ZFile;
import com.ibm.jzos.ZUtil;
import com.ibm.cics.server.TSQ;
public class ZFilePrint
{
public static void main(String[] args) throws Exception
{
ZFile zFile = new ZFile("//DD:INPUT", "rb,type=record,noseek");
TSQ tsqQ = new TSQ();
tsqQ.setName("JZOSTSQ");
try
{
byte[] recBuf = new byte[zFile.getLrecl()];
int nRead;
String encoding = ZUtil.getDefaultPlatformEncoding();
while ((nRead = zFile.read(recBuf)) >= 0)
{
String line = new String(recBuf, 0, nRead, encoding);
tsqQ.writeString(line);
}
}
finally
{
zFile.close();
}
}
}
- 将以下 Import-Package 语句添加到 JCICS 和 JZOS 软件包的捆绑软件清单中。 JCICS 导入应遵循最佳实践来指定应用程序操作所使用的一系列版本。 通常,此范围将达到 (但不包括) 下一个 API 中断更改。 对于版本为 3.0.0的 JCICS ,将在示例中使用范围 com.ibm.cics.server;version="[1.401.0,3.0.0)" ,因为这是支持 JCICS TSQ.writeString() 方法所需的最低级别。 JZOS 软件包不是从版本化捆绑软件获取的。 它从没有版本的底层 JAR 文件显示到运行时,因此可以在没有引用版本的情况下列出 com.ibm.jzos ,这允许选择任何可用版本 (包括 0.0.0)。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: com.ibm.cicsdev.jzos.sample
Bundle-SymbolicName: com.ibm.cicsdev.jzos.sample
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: com.ibm.cics.server;version="[1.401.0,3.0.0)",
com.ibm.jzos
- 添加 CICS-MainClass: 定义到捆绑软件清单以注册 com.ibm.cicsdev.jzos.sample.ZFilePrint 类的 MainClass 服务。
这允许使用 CICS 程序定义链接 Java 类。 您的清单现在类似于以下示例:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: com.ibm.cicsdev.jzos.sample
Bundle-SymbolicName: com.ibm.cicsdev.jzos.sample
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: com.ibm.cics.server;version="[1.401.0,2.0.0)",
com.ibm.jzos
CICS-MainClass: com.ibm.cicsdev.jzos.sample.ZFilePrint
结果
现在,应用程序已准备好进行测试,可以使用 CICS 束项目将其部署到 CICS OSGi JVM 服务器中,如下所示:
- 在 Eclipse 中创建 CICS 束项目,并使用菜单 新建 OSGi 束项目包含来添加 OSGi 束项目 。
- 使用菜单 Export Bundle Project to z/OS UNIX 文件系统, 部署到 zFS。
- 创建引用此 zFS 位置的 CICS BUNDLE 定义并进行安装。
- 创建CICS定义,在
JVMClass 属性中命名 CICS-MainClass: com.ibm.cicsdev.jzos.sample.ZFilePrint ,然后安装它。
- 在运行应用程序之前,需要在引用有效 z/OS 数据集的 CICS JCL 中定义 z/OS DD ,然后重新启动 CICS 区域。 例如:
//INPUT DD DISP=SHR,DSN=CICS.USER.INPUT
- 如果需要从 3270 控制台运行应用程序,请创建引用步骤 4 中定义的 PROGRAM 的 TRANSACTION 定义。
启动时, Java 类
ZFilePrint 将使用 JZOS Toolkit API 读取定义的 z/OS 数据集,然后使用 JCICS API 将内容写入 CICS 临时存储器队列。