COBOL经典面试题目 下载本文

JCL ------Job Control Language(作业控制语言)

@ JCL代表作业控制语言、JCL是一组控制语句,为需要处理的JOB提供必要的规范。 @ JCL每行80个字符,至今未变 @ JCL必须包括3个JCL基本语句

作业语句(JOB):表示一个作业的开始,提供必要的运行参数

执行语句(EXEC):标识一个作业步的开始,定义本作业步所要执行的程序或过程 数据定义语句(DD):用于描述应用程序所需要的数据文件。 @ /* 语句:表示流内数据结束或调用JES控制语句 @ //* 语句:注释语句,从第4列到第80列写出注释内容 @ // 语句:空语句,用以标识一个作业的结束

@ PROC 语句:流内过程(IN-STREAM PROCEDURE)或编目过程(CATALOGED PROCEDURE)的起始标记

@ PEND 语句:表示一个流内过程的结束

@ Command 语句:操作员用这个语句在输入流中写入操作命令 @名字从第3行写,长度必须是1到8个字符

@JOBLIB 和 STEPLIB的区别

JOBLIB语句是放在JOB语句后面的,作用于所有的作业步,它不能放在编目过程里

STEPLIB语句是放在EXEC语句后面的,只作用于本作业步,但是它可以放在编目过程里。

@一个顺序文件有多少extents,VSAM?

顺序文件为在一个卷上为16 extents,VSAM文件为123

@DISP=MOD既可以扩展一个顺序DATASET,也可以创建一个没有存在的DATASET,对于一个 存在的DATASET,记录被追加到末尾。如果没存在系统将把MOD当成NEW看,提供一个没有使 用的空间参数。如果空间参数使用过了,系统则终止JOB并且不创建DATASET,MOD可以被用 来扩展一个DATASET的空间。经常用MOD为一个编目的DATASET指定CATLG的属性,既使它已 经编目了,因此在编目中可以增加任何连续的空间来写记录。

@DATASET怎么从一个STEP传递到另一个STEP?

传递由DISP参数决定,使用DATASET只能被传递到下一个STEP

@//YEARDAT DD DSN=JAN.DATA,DISP=SHR // DD DSN=FEB.DATA,DISP=SHR // DD DSN=MAR.DATA,DISP=SHR DATASET怎么级联的?

DATASET级联是通过先写一个一般的DD语句,然后加上一个没有DDNAME的DD语句, 看读取顺序被级联。

@在procs那些JCL语句不能命名 在过程中不允许的JCL语句: 1. JOB, 分隔符(/*), 或空语句 2. JOBLIB 或JOBCAT DD语句 3. DD * 或DATA语句

4. 任何 JES2 或 JES3 控制语句

@一个数据集的初次分配是什么 数据集建立时的空间

@一个数据集的主分配和从分配有什么区别 从分配是当要求更多空间时所分配的

@你如何创建一个临时数据集吗?在哪里可以使用它们?

可以创建临时数据集通过不指定任何DSNAME或指定DSN = &&TEMP。

我们把它们输出到在同意作业步上的工作。一旦作业完成,这个临时数据集就会被删除。

@甚么是S0C4错误

存储违反错误由多种原因决定,例,READING是一个美有打开的文件,??????

@SD37, SB37, SE37 abends是甚么 表示磁盘空间不足

SD37没有指定的从分配

SB37终止卷,并且没有根多的卷被指定 SE37已经分配到最大16 extents

@甚么是S322 abend

需要更多的CPU时间程序已经超过了默认的为该作业分配的CPU时间,陷入一个无限循环..

@TIME参数的意思是甚么? TIME=1440 表示甚么

TIME当程序需要更多的CPU时间时用于克服S322 abends TIME=1440表示作业的运行没有时间限制,即24小时。

@COND=EVEN

即使先前作业步异常终止,本作业步都要执行

@COND=ONLY

只有先前作业步异常终止,本作业步才执行

@如何在一个JCL中检查是否有语法错误 在JOB过程中,TYPERUN=SCAN或JSCAN.

@在PROC中的流数据可以编码吗 No

如何解决这个限制呢

在PROC内编写SYSIN DD DUMMY,然后从JCL用流数据覆盖它

@当一个JCL中既定义了JOBLIB,又定义了STEPLIB,则会怎样 JOBLIB被忽略

@在JCL里寻找库的顺序是什么?

首先在STEPLIB或JOBLIB指定的库中找,然后再系统库中找, 例如SYS1。LINKLIB。系统库在连接表中指定。

@DCB关键字是什么意思,与它相关的一些关键字有哪些?

DCB是在DD语句中用来描述DATASET的关键字,与其相关的关键字有BLKSIZE,DEN,LRECL。

@BLKSIZE和LRECL有什么不同?

LRECL是指逻辑记录长度。BLKSIZE指多个记录长度。

@实用程序介绍:

IEFBR14:什么也不做,返回码0.例如:DD语句中创建数据集 IEBGENER:建立顺序数据集,PDS。打印顺序数据集 IEBCOPY:拷贝或合并分区数据集和扩展分区数据集

COBOL & COBOL II

Q2) What are the different data types available in COBOL? Q:COBOL有哪些可用的数据类型

A:字符型(这里指的是包含字母和数字),字母型,数字型

Q3) What does the INITIALIZE verb do? - GS Q:INITIALIZE这个词做了些什么

A:将字母,字符,数字区域都置成空格(置空),将数字区置0, FILLER和OCCURS

DEPENDING ON项不处理

Q4) What is 77 level used for ? Q:77层有什么作用

A:基本层数据项,不能用做细分别的层,也不能被细分

Q5) What is 88 level used for ? Q:88层有什么作用 A:条件逻辑层

Q6) What is level 66 used for ? Q:66层有什么作用 A:重命名层

Q7) What does the IS NUMERIC clause establish ?

Q:IS NUMERIC这个子句怎么确定(也就是说确定句子的真值)

A:IS NUMERIC用在字符项,带符号数字,浮点数,不带符号数。如果目标项只含0~9则返回

TRUE。但是,如果待测项目是个带符号数,那么他就含有0-9还有+和-

Q8) How do you define a table/array in COBOL? A8) ARRAYS.

05 ARRAY1 PIC X(9) OCCURS 10 TIMES. 05 ARRAY2 PIC X(6) OCCURS 20 TIMES INDEXED BY WS-INDEX Q:COBOL中怎么建表/数组 A:如上.

Q:OCCURS 子句能用在第一层吗 A:不能

Q10) What is the difference between index and subscript? - GS Q:索引和下标有什么区别

A:下标可以指定数组中任意中位置的元素(只要知道其下标),下标只能是数字型常量或者数字型变量(但是不能在指定的时候修改,如:A(K+1)这样是不行的,要修改的话要在指定的外部改,如:ADD 1 TO K,而索引的话是从表头/数组头开始检索(以BY N的指定检索规律往后滚) 再者,索引只能通过PERFORM, SEARCH 和SET来修改,如果要在一个表中使用SEARCH, SEARCH ALL,那这个表就要有索引(因为SEARCH, SEARCH ALL的参数中指定索引,所以即使其有很多限制还是得用它)