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 作业 *的主要内容,如果未能解决你的问题,请参考以下文章