JZOS 批处理启动器 - 使用 SYSIN DD 中的 java 源代码运行 JCL 作业 *

Posted

技术标签:

【中文标题】JZOS 批处理启动器 - 使用 SYSIN DD 中的 java 源代码运行 JCL 作业 *【英文标题】:JZOS Batch launcher - Run JCL job with java source code within SYSIN DD * 【发布时间】:2016-01-14 16:50:16 【问题描述】:

作业描述:JVMLDM76 库位于数据集 WLM.ABC.DEF.LINKLIB.PDSE 中。 JVMLDM76(加载模块)自带jzos批量启动工具包安装。

这是我的工作:

    //JHELLO JOB MSGLEVEL=(1,1),REGION=0M,CLASS=Q,MSGCLASS=A 
    /* NOTIFY=&SYSUID */                                     
    //JOMVS EXEC PGM=JVMLDM76,REGION=0M,TIME=NOLIMIT         
    //STEPLIB  DD DSN=WLM.ABC.DEF.LINKLIB.PDSE,DISP=SHR  
    //SYSIN    DD  *                                         
    /* program starts here */                                
    public class JHelloWorld                              
                                                         
        public static void main(String args[])              
                                                          
           System.out.println("Hello :)");                 
                                                          
                                                        
    //*                                                      
    //STDOUT   DD SYSOUT=*                                   
    //SYSPRINT DD SYSOUT=*                                   
    //STDERR   DD SYSOUT=*                                   
    //

错误:

没有提供 java 类名参数。 Jzos 批量启动器失败,返回码=101

查询:

    我可以只发送 java 程序作为类文件吗 JOMVS EXEC PGM=JVMLDM76,REGION=0M,TIME=NOLIMIT,JAVACLS = 你好?(这工作正常)

    有没有办法将 java 源代码与 jcl 集成?我无法更改加载模块。它是加密的。

    当我将我的 java 程序从工作站传输到主机(ascii 传输模式)时,'main(String args[])' 处的程序中的特殊字符 [] 正在消失。如果我在 jcl 中输入它,它工作正常。有人能说出原因吗?我已经看到了这个链接。但是,没有找到任何关于此的文档。 Is there a list of Special characters to be avoided in JCL/MVS Script variables

感谢您的关注,

【问题讨论】:

第 3 号是一个单独的问题,如果您无法解决。看起来你有一个“代码页”问题。您正在使用的 ASCII 代码页中的 [ 值未转换为您正在使用的 EBCDIC 代码页中的正确符号。请咨询您的技术人员。 不要使用 TIME=NOLIMIT。如果你得到一个 Big Fat Loop,你会占用大量的 CPU 时间,这会让某些人感到不安。 TIME=(,2) 会给你大量的处理时间。 为什么Java程序源必须是instream? @BillWoodger 谢谢。 @BillWoodger,我发现我的错误在第三个查询中。当我将粘贴从 Windows 工作站剪切到其他平台时,字符变得不可见。当我在 ftp 传输期间选择将 ascii 转换为 ebcdic 选项时,字符会正常显示。 【参考方案1】:

Java 不是解释型语言。它需要编译成字节码 *.class 或 *.jar 文件然后执行。要执行您想做的事情,需要更复杂的批处理启动器,例如来自 Dovetailed 技术https://dovetail.com/docs/coz/coz_index.html 的 Co:Z 批处理。 Dovetailed 是 JZOS 的原作者。

//COZBATCH JOB CLASS=W,NOTIFY=&SYSUID                                  
//*                                                                    
//JOBLIB  DD DISP=SHR,DSN=COZ.LOADLIB                                  
//*                                                                    
//*====================================================================
//* Batch job to run the CoZLauncher.                                  
//*====================================================================
//RUNCOZ  EXEC PGM=COZBATCH                                            
//STDIN  DD *                                                          
cd /tmp                                                                
mkdir -p hello                                                         
cd hello                                                               
cat >HelloWorld.java <<EOF                                             
public class HelloWorld                                               
   public static void main(String[] args)                             
        System.out.println("Hello World!");                            
                                                                      
                                                                      
EOF                                                                    
export JAVA_HOME=/usr/lpp/java/J7.1_64                                 
export PATH=$PATH:$JAVA_HOME/bin                                       
javac HelloWorld.java                                                  
java HelloWorld                              
/*   

【讨论】:

感谢@David Crayford

以上是关于JZOS 批处理启动器 - 使用 SYSIN DD 中的 java 源代码运行 JCL 作业 *的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 中模拟/测试 Java 程序的大型机文件 I/O (JZOS)?

访问 ZFile (JZOS) 的统计信息/成员信息

从 z/OS 批处理作业运行 XA/JTA 事务

在子程序中接受 SYSIN

z/OS 上 Java 程序的用户指定 ABEND 代码

Apple iWork(PagesNumbersKeynote)13.0