这是最常见的JCL面试问题及其答案的列表。
1)什么是JCL?
JCL代表作业控制语言。 JCL是在IBM大型机操作系统上使用的脚本语言, 用于指示系统执行批处理作业。这是一组语句, 你可以对其进行编码以告知操作系统你要执行的任务。有时这组语句相当大, 但是大多数作业可以使用最小的子集来运行。
JCL语句告诉OS在哪里可以找到所需的输入, 如何处理该输入以及如何处理结果输出。
2)JCL如何作用于COBOL代码?
有一组专门处理JCL的部门。
鉴定科
充当JCL的介绍性部分。它引入了程序名称, 作者, 日期等。没有交互代码到JCL。
环境部
环境划分允许JCL与OS进行交互。操作系统发送文件操作下的文件请求。
数据部
根据对读取或打印文件的操作(在OS的帮助下), 它可以与访问的文件一起使用。
程序科
它包含对文件采取的各种操作, 例如, 关闭正在使用的文件。
3)什么是JCL中的条件检查?这可能吗?
JCL支持条件检查。在作业级别和代码级别都可以进行条件检查。它是通过COND关键字以及JCL中预定义的返回码和操作数完成的。因此在JCL中是可行的。
4)JCL是否支持自动重启?
通过某些预定义的关键字参数, 可以在JCL中自动重启。 RDkeyword是用于重新启动的那些关键字之一。通常, 它会成功终止程序。在自动重启的区域设置中, 我们需要考虑检查点的重要性, 这些检查点用于定义相关程序中各个点的作业执行。
5)在JCL中解释JOB语句?
JOB语句将作业标识赋予假脱机和调度程序中的操作系统(OS)。它是JCL中的第一个控制语句。 JOB语句中的可用参数可帮助OS分配正确的调度程序。这对于分析所需的CPU时间并向用户发出通知也很有用。
语法
JCL JOB语句的基本语法如下。
//Job-name JOB Positional-param, Keyword-param
6)解释JCL EXEC语句?
JCL可以由许多工作步骤组成, 一个工作步骤可以直接执行程序, 也可以调用过程。因此, JCL可以执行一个或多个程序(作业步骤)。
包含作业步骤程序信息的语句称为EXEC语句。
EXEC语句的目的是提供所需的信息。该信息被转发到在作业步骤中执行的程序。
语法
JCL EXEC语句的基本语法如下。
//Step-name EXEC Positional-param, Keyword-param
7)EXEC语句中ADDRSPC参数的意义是什么?
ADDRSPC参数用于指定系统所需的存储。
有关ADDRSPC参数的一些要点如下。
- 它是一个可选参数。
- 存储可以是虚拟的或中央的。
- REGION参数请求为单个步骤进行存储。
- ADDRSPC阻止分页。
- ADDRSPC = VIRT用于分页。
- 一旦将ADDRSPC设置为REAL(ADDRSPC = REAL), 该步骤将在执行时锁定到实际存储中。
- 其效果不利于系统的性能。
8)JCL如何指定作业的OS?
JCL通过JCL组将作业指定给操作系统。这些小组是根据他们产生的工作来定义的。确定作业的步骤如下。
- 确定工作。
- 执行用户命名的程序。
- 几个DD定义了正在使用的文件。
- 以前的工作应关闭操作, 退出操作。
9)在JCL中解释DD语句?
数据集是大型机文件, 其中包含以特定格式组织的记录。这些文件存储在主机的直接访问存储设备(DASD)或磁带上, 并且是基本数据存储区域。如果需要在批处理程序中处理这些数据, 则在JCL中对物理数据集名称以及文件格式进行编码。
DD语句的帮助给出了JCL中使用的数据集定义。需要在DD语句中描述作业步骤所需的输入和输出资源。必须使用诸如数据集组织, 存储要求和记录长度之类的信息指定这些资源。
语法
JCL DD的基本语法如下。
//DD-name DD Parameters
10)如何在不运行JCL的情况下检查其语法?
我们可以通过在JOB卡上写TYPERUN = SCAN或使用JSCAN来检查JCL的语法而不运行它。
11)过程中不允许使用哪些JCL语句?
该过程中不允许的一些JCL语句如下。
- JOB, Delimiter(/ *)或Null语句
- JOBLIB或JOBCAT DD语句
- DD *或DATA语句
- 任何JES2或JES3控制语句
12)为什么在JCL中使用include语句?
它用作STEPLIB的替代方法。当我们在include语句中指定数据集名称时, 它将搜索包含的数据集中定义的所有数据集。
13)JOBLIB和STEPLIB语句之间有区别吗?
JOBLIB和STEPLIB之间的比较如下:
JOBLIB | STEPLIB |
---|---|
STEPLIB语句用于标识在JOB步骤中要执行的程序的位置。 | |
它在作业步骤的EXEC语句之后和DD语句之前指定。 | |
可以将其放置在分类程序中 | |
它的语法是 // STEPLIB DD DSN = dsnname, DISP = SHR |
14)符号//在JCL中的用途是什么?
这是JCL语句中使用的重要符号。每个JCL语句必须以该符号开头。这是一个预定义的规则, 用于执行JCL语句。否则, JCL语句将引发错误。
JCL执行系统首先在JCL语句的开头检查符号(//)。它避免了运行时异常。
15)解释JCL中的层次结构级别?
该级别是根据其动作描述JCL语句的步骤。
每个JCL语句均包含以下关键字:
- 名称
- 领域
- 操作
- 经营者
- 参数
- 位置性
- 关键词
- 如有评论
16)区分寻址模式和运行模式。
寻址模式和运行模式之间的主要区别如下。
寻址模式或访问模式 | 运行模式或居住模式 |
---|---|
RMODE(24)表示需要将程序加载到该行下方的存储器中。 | |
RMODE(31)指定程序需要在该行的上方或下方加载到内存中。 | |
RMODE = ANY, 它指定要在24位或31位内存中加载的程序。 |
17)使用哪个实用程序来运行COBOL-DB2程序?
IKJEFT01实用程序用于运行COBOL-DB2程序。
18)哪个语句用于标识JOB中的私有库?
JCLLIB语句用于定义作业中使用的私有库。它可以与分类过程和流式过程一起使用。
语法
JCL JCLLIB语句的基本语法如下。
//name JCLLIB ORDER=(library1, library2....)
19)JCL中的实用程序是什么?
应用程序是预先编写的程序。这些程序已被系统程序员和应用程序开发人员广泛用于大型机中, 以达到通用要求, 维护和组织数据。下面列出了其中一些。
- IEHMOVE
- IEHPROGM
- 贸易促进委员会
- IEBCOPY
- IEFBR14
- IEBEDIT
- IDCAMS
20)解释DFSORT实用程序?
DFSORT是功能强大的IBM实用程序。它用于复制, 排序和合并数据集。 SORTIN和SORTINnn DD语句用于指定输入数据集。 SORTOUT和OUTFIL语句用于确定输出数据。
DFSORT是纯粹与大型机相关的实用程序, 用于在JCL的帮助下处理或操作顺序文件。
21)什么是DISP =(NEW, PASS, DELETE)?
为了创建临时数据集, 我们使用disp =(new, pass, delete)。新建将创建一个新的数据集, 并将其传递给下一步。成功执行后, 它将传递数据集并从系统中删除数据集。
22)如何使用SORT程序将FB文件转换为VB文件?
可以通过SORT程序中的FTOV选项将FB文件转换为VB文件。
23)如何使用JCL运行COBOL程序?
需要编译该程序, 并使用所有子程序创建一个加载模块, 以便以批处理方式执行COBOL程序。 JCL在执行时使用装入模块而不是实际程序。使用JCLLIB或STEPLIB在执行时对加载库进行修补并提供给JCL。
下面我提到一个JCL示例, 其中使用输入文件MYDATA.URMI.INPUT执行程序MYPROG。该程序将产生两个输出文件, 并将其写入到后台打印程序。
//COBBSTEP JOB CLASS=6, NOTIFY=&SYSUID
//
//STEP10 EXEC PGM=MYPROG, PARM=ACCT5000
//STEPLIB DD DSN=MYDATA.URMI.LOADLIB, DISP=SHR
//INPUT1 DD DSN=MYDATA.URMI.INPUT, DISP=SHR
//OUT1 DD SYSOUT=*
//OUT2 DD SYSOUT=*
//SYSIN DD *
//CUST1 1000
//CUST2 1001
/*
24)什么是发电数据组(GDG)?
生成数据组是一组顺序的或功能相关的数据集。通过添加新的一代, 丢弃最老的一代以及有时保留前几代来定期处理它们。
25)如何创建一个临时数据集?你将在哪里使用它们?
可以通过指定DSN = && TEMP中的临时文件指示符或不指定任何DSNAME来创建临时数据集。我们使用它们将同一步骤中一步的输出转发到另一步。作业完成后将不会保留该数据集。
26)什么是NOTCAT 2-GS?
NOTCAT 2-GS是一条MVS消息, 显示存在重复的目录条目。例如, 如果我们已经有一个dsn =’xxxx.yyyy’的数据集, 并且想要使用disp new, catlg创建一个数据集, 则会出现此错误。
程序打开并编写后, 它将通过, 然后在步骤结束时, 系统将尝试将其放入系统目录中。此时, 由于我们已经存在一个条目, 因此catlg将失败并给出此消息。
我们可以通过删除第一个数据集并转到新数据集所在的卷并对其进行分类来解决该问题。
27)什么是JCL程序?
JCL过程是JCL内部语句的集合。这些语句被分组以执行特定功能。 JCL的固定部分在过程中进行编码, 而Job的可变部分在JCL中进行编码。
我们可以使用一个过程在多个输入文件的帮助下实现程序的并行执行。可以为每个输入文件创建一个JCL, 并且可以通过将输入文件名作为符号参数传递来同时调用单个过程。
语法
JCL过程定义的基本语法
//*
//Step-name EXEC procedure name
该过程的内容由JCL保留用于流内过程。
28)你如何提交待执行的工作?
在大型机上, 当我们要执行任何任务时, 我们必须编写作业并将其转发到大型机计算机进行处理。这称为提交作业。
你可以通过多种方式从CICS应用程序提交作业。我们可以使用CICS Spool Interface命令来完成此任务, 并将你的JCL直接写入JES Spool。
29)如何从CICS提交JCL?
CICS为MVS的JES(职位输入子系统)提供了编程接口。 JES界面允许CICS应用程序创建和检索假脱机文件。要使用JES界面, 应该在CICS安装中将DHFSIT SPOOL参数设置为YES(DFHSIT SPOOL = YES)。
CICS提供了在作业提交中使用的4个SPOOL接口命令。它们如下。
- 开门(输入|输出)
- 点读
- 口语
- 关闭
必须在CICS程序中的一项任务中完成对JES假脱机文件的全部访问。应当注意, 任何处理数据集超过1000条I / O记录的作业都可能会对其余CICS产生性能影响。
30)假设我有七个工作要做, 但是我想担任一份工作, 而不是我该怎么做?
在可用职位中保留一份职位是一个简单的过程。为此有一组预定义的规则。根据JCL的作业预定义规则, 每个作业中都有一个关键字。我们可以保留作业以供以后执行, 并在作业语句上指定TYPRUN。 TYPRUN用于保存变量名称为HOLD的作业。
语法
TYPRUN=HOLD
例:
你想担任的工作
//JTP JOB (P007), 'HIMANSHU' TYPRUN=HOLD,
工作/人力资源面试问题 |
JavaScript面试问题 |
Java OOP面试问题 |
JSP面试问题 |
休眠面试问题 |
SQL面试题 |
Android面试题 |
MySQL面试问题 |
JOBLIB语句用于标识要在JCL中执行的程序的位置。
它在JOB语句之后和EXEC语句之前指定。
不能将其放在分类过程中
它的语法是
//JOBLIB DD DSN=dsnname, DISP=SHR
AMODE(24)指示该行下方存储器中的24位寻址。
AMODE(31)指示该行上方和下方的内存中的31位寻址。
AMODE = ANY, 它指定24位或31位寻址方法。
面试技巧
公司面试问题与程序
Java基础面试问题
Servlet面试问题
春季面试问题
PL / SQL面试问题
Oracle面试问题
jQuery面试问题
评论前必须登录!
注册