zos视频

    技术2024-01-23  99

    典型的大型机批处理应用程序包括薪资,租赁和融资,信用卡处理,电信用户开票,生成采购订单和提出库存维护应用程序的运输请求等。 这些应用程序通过运行作业来启动,作业是一组作业控制语言(JCL)语句。 这些作业控制程序的执行。 例如,第一个程序可能会选择性地从数据库中提取记录。 下一个程序可能会根据某些条件对记录进行排序,而另一个程序可能会执行一些业务逻辑(数据库更新,一些数学运算等)。 JCL还具有选择性执行程序的功能。 例如,如果第一个程序由于任何原因失败,那么JCL可能会执行一个通知相应人员的程序,依此类推。

    每个人都清楚Java™的所有优点以及Internet的影响。 一般而言,来自Web的用户可以发起可能与大型机数据库(DB2®,信息管理系统(IMS)等)或什至与虚拟存储访问方法(VSAM)文件进行通信的事务。 结果,大型机然后在格式正确的Web页面中返回数据。 Web用户还可以在大型机数据库上启动更新。

    缺少的链接

    一方面,您拥有高度健壮和可扩展的大型机。 另一方面,您具有Java和Web世界的灵活性。 如上所述,典型的Web应用程序将启动一个事务,该事务将执行一次性数据库访问。 是否不可能触发批处理周期或一组程序来实现业务逻辑? 既然已经有一些程序在JCL的控制下执行,那么当这些程序仍然可以从Web访问它们时,是否可以重用这些程序? 使用以下解决方案,答案是“是”。

    基本解决方案

    大型机使用文件传输协议(FTP)与外部世界进行通信。 可以使用FTP在桌面上的大型机上提交作业。 让我们回顾一下步骤。

    创建一个名为job.txt的文本文件,该文件中编码了一个典型的大型机作业。 在Windows®计算机上,转到命令提示符 。 通过连接到大型机来启动FTP会话。 输入ID和密码 。 使用quote site命令将文件标识为具有JCL语句。 使用FTP put命令将此文件发送到大型机。

    以下是一个示例作业,可以将其另存为文本文件job.txt :

    清单1.示例文本文件
    //XXXXXXXJ JOB (ACCTCODE),'NAGESH',NOTIFY=D245241,CLASS=I, // MSGLEVEL=(1,1),MSGCLASS=C //* //STEP1 EXEC PGM=IEFBR14

    注意 :不同的大型机安装有其自己的标准,这些标准可能会使先前的工作无效。 您应该与系统程序员联系,以获取正确的标准建议。

    典型的FTP会话如下所示:

    清单2.典型的FTP会话
    ftp my.zos.mainframe userid password quote site filetype=jes put job.txt quit

    Java解决方案

    Java解决方案扩展了先前的基本解决方案,如下所示:

    清单3. Java解决方案
    package fileTransferProtocol; import org.apache.commons.net.ftp.*; import java.io.*; public class FileTransferProtocol { public static void main (String [ ] args) { String serverName ="my.zos.mainframe" ; String userName ="userid" ; String password ="********" ; FTPClient ftp = new FTPClient() ; //Connect to the server try { ftp.connect (serverName) ; String replyText =ftp.getReplyString() ; System.out.println (replyText) ; } catch (Exception e) { e.printStackTrace () ; } //Login to the server try { ftp.login (userName, password) ; String replyText = ftp.getReplyString() ; System.out.println (replyText); } catch (Exception e) { e.printStackTrace(); } //Tell server that the file will have JCL records try { ftp.site ("filetype=jes") ; String replyText = ftp.getReplyString() ; System.out.println (replyText) ; } catch (Exception e) { e.printStackTrace() ; } //Submit the job from the text file.Use \\ to avoid using escape notation try { FileInputStream inputStream = new FileInputStream ("C:\\job.txt") ; ftp.storeFile (serverName,inputStream) ; String replyText = ftp.getReplyString() ; System.out.println (replyText) ; } catch (Exception e) { e.printStackTrace() ; } //Quit the server try { ftp.quit() ; } catch (Exception e) { e.printStackTrace() ; } } }

    在上一个示例中,导入了一个基本的FTP软件包,该软件包用于执行所有FTP命令,如基本解决方案中所述。 使用的软件包是Apache的Commons / Net 。 可从以下网址下载: http : //jakarta.apache.org/commons/index.html 。

    为了使该程序成功编译,CLASSPATH必须指向commons-net-1.0.0.jar 。

    到目前为止,以上代码对文本文件使用了硬编码名称。 您可以对其进行修改以自动读取文件名。

    结论

    在本文中,您学习了如何使用Java程序从z / OS大型机提交批处理作业。 该程序是大型机的传统批处理功能与Web灵活性之间缺少的链接。 您可以按需安排批处理作业,而不必依赖某些日期/时间限制。 您还可以重用现有程序。 不需要更改,因为执行模式(通过作业计划程序或使用FTP的Web)对于程序是透明的。

    根据设计,FTP是纯文本协议,因此容易被窃听。 使用FTP也有可能出于恶意目的潜入某些作业。 但是,您可以通过设置适当的资源和访问控制设施(RACF)组和/或防火墙来解决此威胁。


    翻译自: https://www.ibm.com/developerworks/systems/library/es-batch-zos.html

    相关资源:TSO指南(z/OS)
    Processed: 0.024, SQL: 9