50 大 COBOL 面试问题(2025 年)
以下是 COBOL 面试问题和答案,可帮助应届毕业生和经验丰富的应聘者获得理想的工作。
面向应届毕业生的 COBOL 面试问题和答案
1)什么是COBOL?
COBOL 是通用商业导向语言的缩写,它是最古老的编程语言之一。它主要用于公司的商务、财务和管理系统。
2) COBOL 中有哪些不同的数据类型?
Cobol 中有三种数据类型:
- 字母数字 (X)
- 字母(A)和
- 数字(9)
3)下标和索引有什么区别?
下标指的是数组的出现,而索引是从数组开头的位移。
只能使用 PERFORM、SEARCH 和 SET 来修改索引。
4)执行SECTION和PARAGRAPH有什么区别?
SECTION 将包含要执行的部分的所有段落。
PARAGRAPH 将只执行该段落。
5)“继续”和“下一句”有什么区别?
CONTINUE 就像一个空语句,它继续执行,而 NEXT SENTENCE 将控制权转移到下一个句子。
6)Cobol 中有哪些不同的 OPEN 模式?
开放模式可用于
- 输入
- 输出
- 输入输出
- 延长
7)什么是静态链接和动态链接?
在静态链接中,被调用的子程序链接到调用程序中,而在动态链接中,子程序和主程序将作为单独的模块存在。动态和静态链接可以通过选择 DYNAM 或 NODYNAM 链接编辑选项来实现。
8)EVALUATE语句有什么用途?
Evaluate 就像一个 case 语句,也可以像嵌套 IF 一样使用。EVALUATE 和 case 之间的区别在于,Evaluate 语句中不使用“break”,并且一旦找到匹配项,控制权就会从 EVALUATE 中退出。
9) PERFORM … WITH TEST AFTER 和 PERFORM … WITH TEST BEFORE 之间有什么区别?
如果指定了 TEST BEFORE,则在每次重复执行指定的 PERFORM 范围时测试条件。
如果指定了 TEST AFTER,则在 PERFORM 范围的每次重复执行结束时测试条件。该范围在 TEST AFTER 中至少执行一次。
10) 复制语句的 REPLACING 选项有什么意义?
REPLACING 允许通过改变替换值在同一代码中多次使用同一份副本。
COPY <Name> REPLACING BY
11) ON SIZE ERROR 选项可以捕获什么类型的错误?
当出现以下情况时,会引发 ON SIZE ERROR 选项
- 定点溢出
- 零的零次方
- 除以 0
- 零升为负数
- 负数的分数幂。
12) 结构化 COBOL 编程和面向对象 COBOL 编程有什么区别?
结构化编程是一种逻辑的编程方式,其中功能被分为模块并有助于逻辑地编写代码。
面向对象的 Cobol 语言是一种自然的编程方式,您可以识别对象,然后围绕该对象编写函数和过程。
13)什么是本地存储部分?
每次调用程序时都会分配本地存储,当程序通过 EXIT PROGRAM、GOBACK 或 STOP RUN 停止时,将取消分配。它在 WORKING-STORAGE SECTION 之后的数据部分中定义
14)什么是输入程序和输出程序?
在输入程序中,打开输入文件,读取和编辑记录,然后将其释放到排序操作。最后关闭文件。
[plain]从输入记录中释放记录名称[/plain]
在OUTPUT PROCEDURE中,打开输出文件,将排序后的记录返回到输出记录中,然后写入记录。最后关闭文件。
[plain]将文件记录返回到输出记录中[/plain]
15)LINKAGE SECTION 有什么用途?
链接段用于将数据从一个程序传递到另一个程序,或将数据从一个过程传递到另一个程序。它是被调用程序的一部分,映射到调用程序工作存储中的数据项。
16)START语句的访问模式有哪些?
对于开始语句,访问模式为 SEQUENTIAL 或 DYNAMIC。
17)什么是在线 PERFORM?
内联执行语句允许将正在执行的例程嵌套在执行语句本身中,而不是作为单独的段落
PERFORM 和 END-PERFORM 语句用于阻止它们之间的 cobol 语句。只要没有内部 GO TO,甚至没有退出,PERFORM 就可以正常工作。
18) COBOL 程序中哪些部分和段落是必需的?
对于 COBOL 程序来说,识别部门和程序 ID 是强制性的。
19)全局变量和外部变量有什么区别?
全局变量只能由批处理程序访问,而外部变量可以被驻留在同一系统库中的任何批处理程序引用。
20)图片 9v99 表示什么?
图片 9v99 是一个三位数字字段,在第一位之后有一个隐含的或假定的小数点。
这里,v 表示隐含的小数点。
经验丰富的 COBOL 面试问题和答案
21) 编写结构化的 COBOL 程序应遵循哪些准则?
编写 Cobol 程序时应遵循以下准则:
- 使用“EVALUATE”语句构建案例。
- 使用范围终止符进行嵌套。
- 使用内联 Perform 语句来编写“do”结构。
- 在编写 Do-While 语句时,使用 Perform 语句中的 Test Before 和 Test After。
22)我们如何从系统中获取带有世纪的当前日期?
通过使用名为 FUNCTION CURRENT-DATE 的内部函数,可以获取带有世纪的当前日期。
23) COBOL 程序的所有部分是什么?
cobol 程序中有四个部分:
- 辨认科
- 环境科
- 数据部门
- 程序部
24)什么是 SSRANGE 和 NOSSRANGE?
这些是编译器用于查找超出范围的下标的选项。NOSSRANGE 是默认选项,如果索引或下标超出范围,则不会出现任何运行时错误。
25)COMP-1 是什么?COMP-2 是什么?
COMP-1 是单精度浮点数,占用四个字节。COMP2 是双精度浮点数,占用八个字节。
26)PIC 9.99 和 PIC9v99 有什么区别?
PIC 9.99 是一个实际上包含小数点的四位字段,而 PIC 9v99 是一个带有假定小数位置的三位数字字段。
27)字符串中指针的用途是什么?
指针的目的是指定接收字段内存储第一个传输字符的最左边的位置。
28)什么是二分查找?
首先,我们必须将要搜索的项目与中心的项目进行比较。
如果匹配,则最好使用该值,否则根据项目所在的位置对左半部分或右半部分重复该过程。
29)二分查找和顺序查找有什么区别?
在二分查找中,表元素键值将按升序或降序排列。表被“减半”(分成两部分)以搜索等于、大于或小于条件,直到找到元素。
在顺序搜索中,表格是从上到下进行搜索的,因此元素不必遵循特定的顺序。
对于表数较多的情况,二分查找速度更快,而对于表数较少的情况,顺序查找效果更好。SEARCH ALL 用于二分查找;SEARCH 用于顺序查找。
30)是否可以在有或没有索引的表上进行搜索?
不可以,必须对表进行索引才能在表上进行搜索。
31) 执行搜索有哪些不同的规则?
搜索可以应用于表
- 其中有 OCCURS 子句
- 按短语索引
- 搜索索引必须具有某个初始值
- 将索引值设置为 1
32) PERFORM 语句的默认值是 TEST BEFORE 还是 TEST AFTER?
TEST BEFORE 是默认语句,在执行 Perform 下的指令之前检查条件。
33)SORT 运算有哪些不同的规则?
当
- 输入和输出文件必须保持关闭
- 工作文件必须有 select 子句
- 输入和输出文件有 FD 条目
- 工作文件应在文件部分有简短的描述
34) 一个表定义了两个索引。SEARCH 将使用哪一个?
第一个索引可供搜索使用。
35)什么时候必须使用范围终止符?
作用域终止符对于内联 PERFORMS 和 EVALUATE 语句是必需的。为了符合良好的编码标准,应使作用域终止符尽可能明确。
36)为什么REWRITE需要以IO模式打开文件?
在执行 REWRITE 之前,必须打开记录并从文件中读取。因此,必须以 IO 模式打开文件才能使用重写功能。
37) 我们如何发现模块可以被调用 – 无论是动态调用还是静态调用?
唯一的方法是查看链接编辑器或加载模块的输出。
如果模块被动态调用,那么它将不会存在于主模块中,如果模块被静态调用,那么它将存在于加载模块中。
38)哪个搜索动词相当于 PERFORM...VARYING?
串行 SEARCH 动词相当于 Perform..Vary 语句,它只不过是没有 ALL 的搜索。
39) 数据部门有多少个科室?
数据部门有六个部分:
- 文件部分 文件部分
- 工作储存区
- 本地存储部分
- 屏幕部分
- 报告部分
- 联动部分
40)comp 和 comp-3 的使用有什么区别?
Comp 表示二进制,而 comp-3 表示压缩十进制。
41)Exit 起什么作用?
如果使用 EXIT,它将不会超过段落内的唯一句子。
42)请给出一些命令终止符的例子?
End IF 和 End Evaluate 是命令终止符的示例。
43)呼叫和链接有什么区别?
调用是实际的 COBOL 命令,它激发外部程序并返回。链接与调用相同,但不属于 COBOL 动词。
44) 哪种模式用于操作顺序文件?
OI 模式(输出/输入模式)用于启动和初始化处理文件。文件处理取决于 OPEN 语句是否成功执行。
45)S(8) comp 字段占用多少字节以及其最大值是多少?
S(8)可存储4个字节,最高值为99999999。
46) 如何在 COBOL 中定义数组?
数组可以定义为 –
05 Array1 PIC X(9)
出现 10 次
05 Array2 PIC X(9)
出现 20 次
47)什么是文字?
文字是本身包含值的数据项。它不能通过名称引用。它们是常量数据项。文字有两种类型:
- 字符串/字母数字文字
- 数字文字
48)什么是报告项目?
报告项是要打印的具有编辑符号的字段。
49)我们可以将X(200)的字段重新定义为小于200吗?
是的,我们可以将值从较大的数字重新定义为较小的数字。
50) Cobol 的长度是多少?
长度就像一个特殊的寄存器,用于保存一个组或一个基本项的长度。
这些面试问题也会对你的口试有帮助