📅  最后修改于: 2023-12-03 14:43:05.439000             🧑  作者: Mango
JCL(Job Control Language)是IBM的一个作业控制语言。它用于控制IBM大型机操作系统z/OS上的作业流程。JCL通过指定作业的运行参数来调用程序并将其提交到操作系统执行。
JCL常用于批处理,批处理允许作业系统在没有人类交互的情况下自动执行任务。比如,当一台银行的大型机需要处理几百万个关于客户账号的交易时,JCL可以帮助该银行自动处理这些工作。JCL也可用于定时处理,文件管理,控制数据流和与其他作业通信等方面。
下面是JCL的基本结构:
//jobname JOB (jobparm), 'job comment'
//STEP1 EXEC PGM=program, PARM='program parameters'
//INPUT DD DSN=inputfile, DISP=SHR
//OUTPUT DD DSN=outputfile, DISP=(NEW,CATLG,DELETE)
以下是上述JCL结构的说明:
jobname
是一个用户指定的名称,标识一个作业。 IBM建议使用具有实际意义的名字,以照顾程序员的需求。jobparm
是该作业的通用操作参数,可以包括线程池分配,内存限制等。job comment
是对作业的注释,可以帮助程序员更好的了解该作业的内容。STEP1
是该作业的第一步骤名称。EXEC
用于指定当前步骤需要执行的程序。program
是要执行的程序,可以是链接编辑、编译器、程序集等。program parameters
是程序的输入参数,包括选项,参数或文件名。DD
(Data Description)定义了程序用到的数据集的名称,位置和特性。DSN
是数据集的名称,包括命名空间、元素名和授权码。DISP
(Disposition)用于指定数据集如何使用。它可以被分为三个子参数:分配(ALLOC)、释放(DELETE)和保留(KEEP)。下面是一个简单的JCL示例,它定义一个作业,该作业包含两个步骤。第一个步骤使用IEBGENER
复制源数据到中间数据集中,第二个步骤使用SORT
对中间数据集进行排序。
//JOB001 JOB (ACCT),'COPY AND SORT'
//STEP1 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=INPDSN,DISP=SHR
//SYSUT2 DD DSN=INTDSN,DISP=(NEW,CATLG,DELETE)
//SYSIN DD DUMMY
//STEP2 EXEC PGM=SORT
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD DATA,DLM='@@'
SORT FIELDS=(1,10,CH,A)
INREC IFTHEN=(WHEN=INIT,OVERLAY=(21:SEQNUM,8,ZD))
OUTREC BUILD=(1,10,12,8,21,8,PD,37)
//SORTIN DD DSN=INTDSN,DISP=SHR
//SORTOUT DD DSN=OUTDSN,DISP=(NEW,CATLG,DELETE)
根据上面的JCL,第一步骤复制一个数据集到中间数据集,然后第二个步骤对中间数据集进行排序,并将排序结果写入到目标数据集。