📜  JCL(作业控制语言)(1)

📅  最后修改于: 2023-12-03 14:43:05.439000             🧑  作者: Mango

JCL(作业控制语言)

JCL(Job Control Language)是IBM的一个作业控制语言。它用于控制IBM大型机操作系统z/OS上的作业流程。JCL通过指定作业的运行参数来调用程序并将其提交到操作系统执行。

JCL的用途

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示例

下面是一个简单的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,第一步骤复制一个数据集到中间数据集,然后第二个步骤对中间数据集进行排序,并将排序结果写入到目标数据集。

参考资料