z/os视频_在z / OS上从Java提交批处理作业

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

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

缺少的链接

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

基本解决方案

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

  1. 创建一个名为job.txt的文本文件,该文件中编码了一个典型的大型机作业。
  2. 在Windows®计算机上,转到命令提示符
  3. 通过连接到大型机来启动FTP会话。 输入ID密码
  4. 使用quote site命令将文件标识为具有JCL语句。
  5. 使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值