教 程 目 录
JCL - 概述
何时使用JCL
JCL在大型机环境中用作程序(例如:COBOL,Assembler或PL/I)与操作系统之间的通信.在大型机环境中,程序可以批量和在线模式执行.批处理系统的示例可以是通过VSAM(虚拟存储访问方法)文件处理银行交易并将其应用于相应的帐户.在线系统的示例可以是银行中的员工用来开立账户的后台屏幕.在批处理模式下,程序通过JCL作为作业提交给操作系统.
批处理和在线处理在输入,输出和程序执行请求方面有所不同.在批处理中,这些方面被输入到JCL中,而JCL又由操作系统接收.
作业处理
作业是一个单元可以由许多工作步骤组成的工作.通过一组作业控制语句在作业控制语言(JCL)中指定每个作业步骤.
操作系统使用作业输入系统(JES)将作业接收到操作系统,安排它们进行处理和控制输出.
作业处理经过以下一系列步骤:
工作提交 - 将JCL提交给JES.
工作转换 - 转换JCL和PROC到JES理解的解释文本并存储到数据集中,我们称之为SPOOL.
作业排队 - JES根据JOB语句中的CLASS和PRTY参数决定作业的优先级(在 JCL - JOB Statement 章节中有说明).如果没有错误,则检查JCL错误并将作业安排到作业队列中.
作业执行 - 当作业达到最高优先级,从作业队列中执行.从SPOOL读取JCL,执行程序并将输出重定向到JCL中指定的相应输出目标.
清除 - 作业完成后,将释放分配的资源和JES SPOOL空间.为了存储作业日志,我们需要在将作业日志从SPOOL释放之前将其复制到另一个数据集.
本文地址:https://itbaoku.cn/tutorial/jcl-index.html
相关问答
在JCL中,如何将" 0"填充添加到字符串中,以使我的字符串长度始终为 10? 我正在使用tssutil v3工具作为JCl. If input "10541", 5 padding is added = 0000010541 解决方案 如果您无法使用TSSUTIL获得解决方案: //STEP001 EXEC PGM=SORT //SORTIN DD * 24567 1456 47865 24875 1 //SORTOUT DD SYSOUT=* //SYSIN DD *
)
我需要帮助创建JCL来搜索当前年度成员(即rpxxxx,其中XXXX表示2018年).每年使用PDS文件的年度工作创建的新成员.因此,成员名称未固定在PDS文件中,即每年后缀已更改. 我们需要创建一个JCL,该JCL检查当年成员是否在PDS文件中存在.因此,继任工作将成功运行. 如果PDS文件中存在的当年成员,则新作业将使用RC 0000运行,这表明将自动触发后继作业. 如果PDS文件中的Curr年成员不存在,则该作业将在RC 0001失败,这表明下一个后继作业将在成功恢复之前不会触发. 请帮助我创建这样的JCL. 您的帮助非常感谢. 预先感谢. 解决方案 列表,TSO函数,显示数据集属性.您可以使用IKJEFT01实用程序(允许您在批处理中运行TSO功能)并运行此TSO功能.但是,列表发出的返回代码不是您想要的. 所以,我建议使用IKJEFT01实用程序来运行REXX脚本,以评估PDS中成员的存在. /* REXX */ arg dsname address tso "listds ("dsname")" if (rc \= 0) then exit 1 运行jcl看起来像下面. //JOBNAME JOB ('ACCOUNT
)
我想使用stort(Snycsort或dfsort)将记录转换为列后进行.它应该可扩展到任何数量的记录.这可能吗? DE001XYX A CD100000 B CD200000 C DE001KKK A CD100000 B DE003ZZZ A DE001XYX A CD100000 B CD200000 C DE001KKK A CD100000 B ........ transpose DE001XYX CD100000 CD200000 DE001KKK CD100000 DE003ZZZ DE001XYX CD100000 CD200000 DE001KKK CD100000 ..... 解决方案 这是我喜欢并渴望自己解决的一个问题.经过一番研究并尝试,我只是提出了一个解决方案. 更新: 即兴方法如下.它以1通过本身解决了问题,而初始方法进行了3次通过. 即兴方法: 无需3次通过. ***************************** Top of Data ****************************** //JOBNAME JOB ('ACCOUNT INFORMATIO
)
情况如下. 我有Parm参数: CSQ1 - Queue manager name CARD.PAYMENTS - Request queue name CCD3050.REPLY - Reply queue name CCD3050 - Contestant user ID 400.05 - Payment amount "MY PAYMENT" - Payment description 在我的JCL中,我写了这篇文章: //PAYMENT EXEC PGM=PAYMENT,REGION=1024K, // PARM='CSQ1,CARD.PAYMENTS,CCD3050.REPLY,CCD3050, // 400.05,"MY PAYMENT"' 我遇到了麻烦.我写道: // PARM=('CSQ1,CARD.PAYMENTS,CCD3050.REPLY,CCD3050', // '400.05,MY PAYMENT') 也遇到了麻烦. 然后我写道: PARM=(CSQ1,CARD.PAYMEN
)
我需要准备一些输入数据以通过程序运行,数据应采用以下格式. UID (1-11)|TxtLen (12-16)| Text (17-62) 我可以使用排序来正确定位字段并获取UID和文本字段. " txtlen"应包含从文本字段开始到文本字段中的最后一个字符的字符数量. i.e. “Hello”’s TxtLen is 5, “Hel lo”’s TxtLen is 6, “Hello World”’s TxtLen is 11, etc... 我想知道是否只能通过JCL获得TXTLEN,还是需要一个程序才能执行此操作? Thanks 解决方案 您将需要一个程序. 我在堆栈溢出上看到了许多大型机问题,询问"仅JCL"是否可能发生某些问题.请记住, 我可以使用排序来正确定位字段并获取UID和 文本字段 sort是一个程序.恰好是在大多数系统上找到的一个程序(尽管有不同的供应商的实现,但IBM有一个,Syncsort有一个,CA等.)有许多其他程序通常在Mainframe Systems上找到. 只是为了ped脚,jcl实际上没有做任何事情, jes 在解释jcl. 时进行工作 在您的特定情况下,您可以创建排序出口,也可以在 rexx ,或者您可以使用一些 unix系统服务 命令并通过 bpxbatch 或 cozbatch
)
我正在尝试对数据集进行分类并写入新的数据集,每次我执行工作时,它都会依靠(ABEND = U0016). 消息表格sysout. WER276B SYSDIAG= 24646562, 29667262, 29667262, 27500165 WER164B 307,288K BYTES OF VIRTUAL STORAGE AVAILABLE, MAX REQUESTED, WER164B 0 BYTES RESERVE REQUESTED, 307,272K BYTES USED WER036B G=5174,B=1,BIAS=99 WER162B 75 PREALLOCATED SORTWORK TRACKS, 3,750,000 DYNAMICALLY ALLOCATED, WER162B 26,721,480 ACQUIRED IN 2,230 SECONDARY EXTENTS, 0 RELEASED, TOTAL 30,471,555 TRACKS USED WER046A SORT CAPACITY EXCEEDED WER493I ZIIP PR
)