JCL I面试问题
亲爱的读者,这些JCL面试问题是专门为让您熟悉在面试JCL主题时可能遇到的问题而设计的。 根据经验,面试官在面试过程中几乎不会提出任何特定问题,通常问题会从主题的一些基本概念开始,然后根据进一步的讨论和你的回答继续进行 −
在覆盖 JCL 中为未覆盖的内容指定 DD DUMMY。
//STEP1.IN1 DD DUMMY // DD DSN=MYDATA.URMI.IN2,DISP=SHR // DD DUMMY
下面的代码显示了每个GDG版本的参考 −
Step1 input: (0) Step1 output: (+1) Step2 input: (+1) Step2 output: (+2)
当文件用作 IDCAMS 中的输入时,如果文件为空,则作业完成时会出现警告(返回代码 4)。
数据可以通过文件、PARM 参数和 SYSIN DD 语句传递到 COBOL 程序。
代码 COND = 仅在 STEP2 中。
在 JOB/EXEC 语句中使用 RD 参数。 需要执行 RESTART 的异常结束代码可以在 IBM 系统 parmlib 库的 SCHEDxx 成员中提及。
在 JCL 中使用 IEBEDIT,可以运行另一个 JCL 的选定步骤。 在上面的 JCL 中,具有 10 个步骤的输入 JCL 存在于 MYDATA.URMI.JOBS(INPUTJOB) 中。 STEP3 和 STEP7 在 IEBEDIT 的 SYSIN 中指定,以便运行这两个步骤。
//STEP001 EXEC PGM=IEBEDIT //SYSUT1 DD DSN=MYDATA.URMI.JOBS(INPUTJOB),DISP=SHR //SYSUT2 DD SYSOUT=(*,INTRDR) //SYSPRINT DD SYSOUT=* //SYSIN DD * EDIT TYPE=INCLUDE,STEPNAME=(STEP3,STEP7) /*
当它在创建时用 DISP = (NEW,KEEP) 定义时。 对于 GDG,如果在达到 LIMIT 时已使用 NOEMPTY 参数定义了 GDG 基础,则最新的生成将被取消编目。 当使用 EMPTY 编码时,所有代均未编目。
GDG 基础可以使用 IDCAMS 实用程序创建。 当达到 LIMIT 时,EMPTY 将取消所有代的编目。 当该代未编目时,SCRATCH 会物理删除该代。 (LIMIT指定GDG库可以保存的最大版本数)。
在SORT/ICETOOL程序中,可以使用SKIPREC = n,它会跳过前n条记录,然后将其余的记录复制到输出文件中。
//JSTEP020 EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT = * //DFSMSG DD SYSOUT = * //IN1 DD DSN = MYDATA.URMI.SKIPREC,DISP=SHR //OUT1 DD SYSOUT = * //TOOLIN DD * COPY FROM(IN1) TO(OUT1) USING(CTL1) /* //CTL1CNTL DD * SORT FIELDS = COPY SKIPREC = 1000 /*
STARTREC 和 ENDREC 限制从输入文件读取指定的记录号。
//URMISPLT EXEC PGM = SORT //SORTIN DD DSN=MYDATA.URMI.FILEIN,DISP=SHR //SORTOF01 DD DSN = MYDATA.URMI.FILEOUT1, // DISP = (NEW,CATLG,DELETE), // RECFM = FB, LRECL = 50 //SORTOF02 DD DSN = MYDATA.URMI.FILEOUT2, // DISP = (NEW, CATLG, DELETE), // RECFM = FB, LRECL = 50 //SORTOF03 DD DSN = MYDATA.URMI.FILEOUT3, // DISP = (NEW, CATLG, DELETE), // RECFM = FB, LRECL = 50 //SYSPRINT DD SYSOUT = * //SYSOUT DD SYSOUT = * //SYSUDUMP DD SYSOUT = * //SYSIN DD * SORT FIELDS = COPY OUTFIL FILES = 01,ENDREC=100 //*assuming input file has 300 records. OUTFIL FILES = 02, STARTREC = 101, ENDREC = 200 OUTFIL FILES = 03, STARTREC = 201 //*
当程序花费的时间超过指定类的时间限制时,可能会发生作业超时错误。 这称为 S322 异常结束。 当程序中存在一些循环错误并且未完成时会遇到此错误。
如果程序中处理的数据确实很大并且需要的时间超过类限制,则 TIME 参数可以编码为 TIME = 1440 以获得无限时间直到作业完成。
可以根据表的大小增加图像复制数据集的SPACE参数,并可以从步骤2重新启动作业。
NOTIFY = 可以在 JOB 语句中指定人员(而非提交者)的用户 ID,以便用户在作业完成时收到包含返回代码的通知。 但作业日志仅存在于提交者用户 ID 下的假脱机中。
SORT 中的 FTOV 选项有助于将 FB 转换为 VB 文件。
//URMIFTOV EXEC PGM = SORT //SORTIN DD * 123******* 4560000000 123****123 789 //SORTOF01 DD DSN = MYDATA.URMI.FILEOUT1, // DISP = (NEW, CATLG, DELETE), // RECFM = VB, LRECL = 54 //SORTOF02 DD DSN = MYDATA.URMI.FILEOUT2, // DISP = (NEW, CATLG, DELETE), // RECFM = VB, LRECL = 54 //SORTOF03 DD DSN = MYDATA.URMI.FILEOUT3, // DISP = (NEW, CATLG, DELETE), // RECFM = VB, LRECL = 54 //SYSPRINT DD SYSOUT = * //SYSOUT DD SYSOUT = * //SYSUDUMP DD SYSOUT = * //SYSIN DD * SORT FIELDS=COPY OUTFIL FNAMES = SORTOF01, FTOV, VLTRIM = C'*' //*removes trailing '*' OUTFIL FNAMES = SORTOF02, FTOV, VLTRIM = X'40'//*removes trailing space OUTFIL FNAMES = SORTOF03, FTOV, VLTRIM = X'00'//*removes trailing zeros //*
MVS 代表多重虚拟存储,它是 IBM 大型机系统的操作系统。
标识符是从第 1 列开始的两个斜杠 (//)。 所有 JCL 语句都以标识符开头,但有两个例外 - 对于分隔符语句,/* 从第 1 列开始,对于注释语句,//* 从第 1 列开始。
Input −> Conversion −> Execution −> Output −> Hard copy −> Purge
JCL 和 PROC 一起被转换为 JES 可以理解的解释文本,并存储到数据集中,我们称之为 SPOOL。
当作业达到最高优先级时,将从作业队列中获取执行。 从 SPOOL 中读取 JCL,执行程序并将输出重定向到 JCL 中指定的相应输出目的地。
指定作业假脱机所需的信息,例如作业 ID、执行优先级、作业完成时要通知的用户 ID。
JCL 由可选的 null 语句终止。 // 对于空语句代码仅从第 1 列开始。此后的所有行都不会被执行。
系统向该参数中指定的用户发送成功或失败消息(最大条件代码)。 语法 − NOTIFY = "userid | &SYSUID"
TYPRUN = SCAN 检查 JCL 的语法错误而不执行它。
DSN参数是指新创建的或现有数据集的物理数据集名称。 DSN 值可以由子名称组成,每个子名称长度为 1 到 8 个字符,以句点分隔,总长度为 44 个字符(字母数字)。
DISP参数用于描述数据集的状态、作业步骤结束时正常完成和异常完成时的处理。 仅当在同一作业步骤中创建和删除数据集(如临时数据集)时,DD 语句中才不需要 DISP。 语法 − DISP = (status, normal-disposition, abnormal-disposition)
SPACE参数指定DASD(直接访问存储磁盘)中数据集所需的空间。 句法 − SPACE = (spcunits, (pri, sec, dir), RLSE)
数据控制块(DCB)参数详细描述了数据集的物理特征。 对于作业步骤中新创建的数据集,此参数是必需的。 LRECL 是数据集中保存的每条记录的长度。 RECFM是数据集的记录格式。
临时数据集是在作业中创建和删除的数据集,声明为 DSN=&&TEMP。 不要在此提及 DSN 参数。
代码SYSOUT = *,则数据将被定向到spool。
IEFBR14 不是操作实用程序。 用于将控制权返回给用户并终止。 它通常用于创建空数据集或删除现有数据集。
显示=(新,通过)。 PASS 仅对正常处置有效。 当数据集要由 JCL 中的下一个作业步骤传递和处理时,将使用此选项。
IKJEFT01 实用程序用于运行 COBOL-DB2 程序。
DSN(Dataset Name)用于在DD语句中声明数据集的名称。
PEND语句用于结束流内过程。
为了引用最新一代的 GDG,我们使用引用作为 (+0)。
COND=(12,LT,STEP1),读取条件为 12 小于 8,为 false,因此执行该步骤。
在排序步骤中提及 SYSIN 和 SYSOUT 数据集名称并在排序卡代码 SORT FIELDS=COPY 中将数据从输入文件复制到输出文件。
此说法属实。
排序实用程序用于根据排序卡按特定顺序对文件进行排序。
IEBUPDTE 用于更新 PDS。
SPACE参数指定DASD(直接访问存储磁盘)中数据集所需的空间。 语法+ 空间 = (spcunits, (pri, sec, dir), RLSE)
此说法属实。