操作输入数据以在 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
以确保传递的数据是一个副本,因此不会在调用者中更改)。
在 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
以确保传递的数据是一个副本,因此不会在调用者中更改)。