📜  COBOL-子例程(1)

📅  最后修改于: 2023-12-03 14:40:07.720000             🧑  作者: Mango

COBOL 子例程

COBOL 是一种面向企业的编程语言,已经存在了几十年。子例程,也称为“子程序”,是 COBOL 中的一个重要概念,用于组织和重用代码。它们类似于其他编程语言中的函数或过程。

子例程可以有参数,也可以返回值。它们可以被其他程序调用,也可以递归调用自己。在 COBOL 中,子例程在“DIVISION”部分声明,可以在同一程序中定义多个子例程。任何需要复杂操作的部分,都可以被转换为子例程,以帮助保持代码的可读性和可维护性。

子例程的声明和调用

COBOL 中的子例程可以使用“SECTION”关键字在程序的“DIVISION”中声明。以下是一个用于打印“Hello, World!”的简单子例程的示例:

IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN-PROGRAM.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  WS-MSG             PIC X(11) VALUE 'Hello, World'.

PROCEDURE DIVISION.
MAIN-SECTION.
    PERFORM PRINT-MSG.
    STOP RUN.

PRINT-MSG SECTION.
    DISPLAY WS-MSG.
    EXIT.

在这个程序中,子例程“PRINT-MSG”被定义在了“PROCEDURE DIVISION”中,并使用关键字“SECTION”定义。当“PRINT-MSG”被调用时,COBOL 将执行该子例程并打印“Hello, World!”。 要调用子例程,请使用“PERFORM”关键字,提供子例程的名称和可选参数列表(如果有的话)。以下是调用上述子例程的示例:

MAIN-SECTION.
    PERFORM PRINT-MSG.
    STOP RUN.
子例程的参数和返回

子例程可以带有参数,并且可以返回值。在 COBOL 中,参数以“CALL USING”语句的形式传递。以下是一个带有两个参数的子例程示例:

IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN-PROGRAM.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  WS-NUM1            PIC 9(05) VALUE 10.
01  WS-NUM2            PIC 9(05) VALUE 5.

PROCEDURE DIVISION.
MAIN-SECTION.
    CALL "ADD-NUMBERS" USING WS-NUM1, WS-NUM2, WS-SUM.
    DISPLAY "The sum is ", WS-SUM.
    STOP RUN.

ADD-NUMBERS SECTION USING NUM1, NUM2, SUM.
    COMPUTE SUM = NUM1 + NUM2.
    EXIT.

在这个示例中,子例程“ADD-NUMBERS”包含了三个参数:NUM1、NUM2和SUM。在主程序中调用这个子例程时,使用“CALL”和“USING”语句指定了NUM1和NUM2。子例程将计算两个数字的和,并将结果存储在SUM参数中。

子例程也可以带有返回值。在 COBOL 中,使用“RETURN”语句从子例程返回值。以下是一个返回平方值的子例程示例:

IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN-PROGRAM.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  WS-NUM             PIC 9(05) VALUE 5.
01  WS-SQUARE          PIC 9(05).

PROCEDURE DIVISION.
MAIN-SECTION.
    CALL "SQUARE" USING WS-NUM, WS-SQUARE.
    DISPLAY "The square of ", WS-NUM, " is ", WS-SQUARE.
    STOP RUN.

SQUARE SECTION USING NUM, SQUARE-RESULT.
    COMPUTE SQUARE-RESULT = NUM ** 2.
    RETURN.

在这个示例中,子例程“SQUARE”接受一个参数NUM,计算它的平方值,并将结果存储在SQUARE-RESULT参数中。在主程序中调用子例程时,使用“CALL”和“USING”语句传递NUM和SQUARE-RESULT参数。子例程使用“RETURN”语句返回计算出的平方值。

总结

子例程是 COBOL 程序的基本组件,用于组织和重用代码。它们带有参数,并且可以返回值。在 COBOL 中,使用“SECTION”关键字定义子例程,使用“PERFORM”和“CALL USING”语句调用它们。使用子例程可提高代码的可读性和可维护性。