2025 年 COBOL 面试题 Top 50

本文为初学者和有经验的求职者提供了 COBOL 面试问题及答案,助您找到梦想中的工作。

 

COBOL 面试问题及答案(初学者)

1)什么是 COBOL?

COBOL 的缩写是 Common Business Oriented Language(通用商务导向语言),它是最古老的编程语言之一。主要用于公司的业务、金融和管理系统。


2)COBOL 中有哪些不同的数据类型?

Cobol 中有三种数据类型:

  • 字母数字 (X)
  • 字母 (A) 和
  • 数字 (9)

👉 免费 PDF 下载:COBOL 面试问题及答案


3)下标(subscript)和索引(index)有什么区别?

下标指数组的出现次数,而索引是指从数组开头开始的偏移量。

索引只能通过 PERFORM、SEARCH 和 SET 进行修改。


4)执行 SECTION 和执行 PARAGRAPH 有什么区别?

SECTION 会执行属于该 SECTION 的所有段落。

PARAGRAPH 只会执行该段落。


5)CONTINUE 和 NEXT SENTENCE 有什么区别?

CONTINUE 就像一个空语句,它会继续执行;而 NEXT SENTENCE 会将控制转移到下一个句子。


6)Cobol 中有哪些不同的 OPEN 模式?

Open 模式可用于:

  • 输入
  • 输出
  • 输入-输出
  • 扩展

7)什么是静态链接和动态链接?

在静态链接中,被调用的子程序链接到调用程序中;而在动态链接中,子程序和主程序作为独立的模块存在。可以通过选择 DYNAM 或 NODYNAM 链接编辑选项来实现动态和静态链接。

COBOL Interview Questions


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)COPY 语句的 REPLACING 选项有什么作用?

REPLACING 允许通过更改替换值,在同一代码中多次使用相同的 COPY。

COPY REPLACING BY


11)ON SIZE ERROR 选项可以捕获哪种错误?

ON SIZE ERROR 选项会在以下情况时触发:

  • 定点溢出
  • 零的零次方
  • 除以 0
  • 零的负数次方
  • 负数次方的分数次方。

12)结构化 COBOL 编程和面向对象 COBOL 编程有什么区别?

结构化编程是一种逻辑编程方式,其中功能被划分为模块,有助于逻辑化地编写代码。

面向对象 COBOL 语言是一种自然编程方式,您在此方式中识别对象,然后围绕该对象编写函数和过程。


13)什么是 LOCAL-STORAGE SECTION?

Local-Storage 在每次调用程序时分配,并在程序通过 EXIT PROGRAM、GOBACK 或 STOP RUN 停止时取消分配。它在 DATA DIVISION 的 WORKING-STORAGE SECTION 之后定义。


14)什么是 INPUT PROCEDURE 和 OUTPUT PROCEDURE?

在 INPUT PROCEDURE 中,输入文件被打开,记录被读取和编辑,然后释放给排序操作。最后,文件将被关闭。

[plain]RELEASE recordname FROM inputrecord[/plain]

在 OUTPUT PROCEDURE 中,输出文件被打开,排序后的记录被返回到输出记录,然后写入该记录。最后,文件将被关闭。

[plain]RETURN file RECORD into outputrecord[/plain]


15)LINKAGE SECTION 的用途是什么?

Linkage section 用于在程序之间传递数据,或将数据从一个过程传递到一个程序。它是被调用程序的一部分,映射到调用程序工作存储区中的数据项。


16)START 语句的访问模式有哪些?

START 语句的访问模式为 SEQUENTIAL 或 DYNAMIC。


17)什么是内联 PERFORM?

内联 PERFORM 语句允许被执行的例程嵌套在 PERFORM 语句本身中,而不是作为一个单独的段落。

PERFORM 和 END-PERFORM 语句用于分隔它们之间的 COBOL 语句。只要没有内部 GO TO(即使是跳出),内联 PERFORM 就可以正常工作。


18)COBOL 程序必须包含哪些段和段落?

Identification division 和 Program ID 对 COBOL 程序是必需的。


19)全局变量和外部变量有什么区别?

全局变量只能被批处理程序访问,而外部变量可以被同一系统库中的任何批处理程序引用。


20)Pic 9v99 表示什么?

Pic 9v99 是一个三位数字字段,在第一位之后有一个隐含的或假定的小数点。

这里,v 表示隐含小数点。


COBOL 面试问题及答案(有经验者)

21)编写结构化 COBOL 程序应遵循哪些准则?

编写 Cobol 程序时应遵循以下准则:

  • 使用 'EVALUATE' 语句构建 case。
  • 使用范围终止符进行嵌套。
  • 使用内联 Perform 语句编写 'do' 结构。
  • 在 Perform 语句中使用 Test Before 和 Test After 来编写 Do-While 语句。

22)如何从系统获取带世纪的当前日期?

使用称为 FUNCTION CURRENT-DATE 的内建函数可以获取带世纪的当前日期。


23)COBOL 程序有哪些分部?

Cobol 程序有四个分部:

  • IDENTIFICATION DIVISION
  • ENVIRONMENT DIVISION
  • DATA DIVISION
  • PROCEDURE DIVISION

24)什么是 SSRANGE 和 NOSSRANGE?

这些是编译器用于查找下标越界的选项。NOSSRANGE 是默认选项,如果索引或下标越界,不会发生运行时错误。


25)COMP-1?COMP-2?

COMP-1 是单精度浮点数,占用四个字节。COMP2 是双精度浮点数,占用八个字节。


26)PIC 9.99 和 PIC9v99 有什么区别?

PIC 9.99 是一个四位字段,实际包含小数点;而 PIC 9v99 是一个三位数字字段,具有假定的小数点位置。


27)Pointer 在字符串中的作用是什么?

Pointer 的作用是指定接收字段中最左边的位置,第一个传输的字符将存储在那里。


28)什么是二分查找?

首先,我们需要将要查找的项与中心项进行比较。

如果匹配,则可以直接使用该值;否则,根据项所在的位置,重复该过程处理左半部分或右半部分。


29)二分查找和顺序查找有什么区别?

在二分查找中,表元素的键值按升序或降序排列。查找时,表被“对半”(分成两部分)以查找等于、大于或小于的条件,直到找到元素。

在顺序查找中,表是从上到下搜索的,因此元素不必按特定顺序排列。

二分查找对于较大的表速度更快,而顺序查找对于较小的表效果更好。SEARCH ALL 用于二分查找;SEARCH 用于顺序查找。


30)可以对带索引或不带索引的表执行搜索吗?

否,必须对表进行索引才能在表上执行搜索。


31)执行搜索有哪些不同的规则?

SEARCH 可以应用于具有以下特征的表:

  • 具有 OCCURS 子句
  • INDEXED BY 短语
  • Search 索引必须具有初始值
  • 设置索引值为 1

32)对于 PERFORM 语句,默认是 TEST BEFORE 还是 TEST AFTER?

TEST BEFORE 是默认语句,在执行 Perform 下的指令之前会检查条件。


33)SORT 操作有哪些不同的规则?

执行 SORT 时,

  • 输入和输出文件必须保持关闭状态
  • 工作文件必须有 SELECT 子句
  • 输入和输出文件具有 FD 条目
  • 工作文件在 File Section 中应有简短描述

34)一个表定义了两个索引。SEARCH 会使用哪一个?

名为第一个的索引可供搜索使用。


35)何时必须使用范围终止符?

内联 PERFORMS 和 EVALUATE 语句必须使用范围终止符。为遵循良好的编码标准,请显式使用范围终止符。


36)为什么 REWRITE 需要文件以 I-O 模式打开?

在执行 REWRITE 之前,必须从文件中打开并读取记录。因此,为了实现重写功能,文件必须以 I-O 模式打开。


37)我们如何判断一个模块是动态调用还是静态调用?

唯一的方法是查看链接编辑器或加载模块的输出。

如果模块是动态调用的,它将不存在于主模块中;如果它是静态调用的,它将存在于加载模块中。


38)哪个 Search 动词等同于 PERFORM…VARYING?

串行 SEARCH 动词等同于 Perform…Varying 语句,它就是不带 ALL 的搜索。


39)Data Division 中有多少个 Section?

Data Division 中有六个 Section:

  • File Section
  • Working Storage Section
  • Local Storage Section
  • Screen Section
  • Report Section
  • Linkage Section

40)COMP 和 COMP-3 的使用有何区别?

Comp 用于二进制使用,而 comp-3 表示打包十进制。


41)Exit 有什么作用?

如果使用 EXIT,它将只是段落中唯一的一个句子。


42)请举例说明命令终止符?

End IF 和 End Evaluate 是命令终止符的例子。


43)Call 和 Link 有什么区别?

Call 是一个实际的 COBOL 命令,它会调用一个外部程序并返回。Link 与 Call 相同,但它不属于 COBOL 动词。


44)使用哪种模式来操作顺序文件?

O-I 模式(输出/输入模式)用于文件的启动和初始化处理。文件的处理由 OPEN 语句的成功执行决定。


45)S(8) comp 字段占用多少字节,其最大值是多少?

S(8) 可以存储 4 个字节,最大值为 99999999。


46)如何在 COBOL 中定义数组?

数组可以定义为:

05 Array1 PIC X(9) 出现 10 次

05 Array2 PIC X(9) 出现 20 次


47)什么是文字常量(literals)?

文字常量是其自身具有值的的数据项。它不能通过名称引用。它们是常量数据项。文字常量有两种类型:

  • 字符串/字母数字文字常量
  • 数字文字常量

48)什么是报表项?

报表项是需要打印的字段,它具有编辑符号。


49)可以将 X(200) 字段重新定义为小于 200 吗?

是的,我们可以将值从较大的数字重新定义为较小的数字。


50)COBOL 中的 Length 是什么?

Length 就像一个特殊寄存器,用于获取组或基本项的长度。

这些面试问题也将有助于您的口试