操作输入数据以在 LINKAGE SECTION 中运行而不是在 Working Storage 中运行

Manipulating input data to function in LINKAGE SECTION instead of Working Storage

在 COBOL 中(无论实现或平台如何),在用户定义的函数中做这样的事情不好吗?

IDENTIFICATION DIVISION.
       FUNCTION-ID. FF.    
LINKAGE SECTION.
    01   TXT     PIC X(100).
    01   RESULTS PIC X(100).
    PROCEDURE DIVISION
                               USING          TXT
                               RETURNING      RESULTS.
                  MOVE FUNCTION TRIM(TXT)  TO TXT.

虽然此代码有效(至少在我测试过的地方),但我不确定修改输入数据是否是个好主意。例如,可以创建一个 Working-Storage 字段并使用它来代替,但这会增加执行程序的大小,特别是如果存在许多这样的字段。 当然,输入中的操作数据不会传回给调用者。仅用于函数内的逻辑运算。

感谢您的建议。

这完全取决于您的函数是如何定义和记录的,并不是特定于 COBOL 的。

它也适用于“普通”CALL(但在这种情况下,程序员可以显式请求 BY CONTENT 以确保传递的数据是一个副本,因此不会在调用者中更改)。