返回具有字母数字或本地函数的变量结果
字母数字 或本地 函数的结果可能具有不同的长度和值,具体取决于函数自变量。
关于此任务
在以下示例中,移至 R3 的数据量以及 COMPUTE 语句的结果取决于 R1 和 R2的值和大小:
01 R1 Pic x(10) value "e".
01 R2 Pic x(05) value "f".
01 R3 Pic x(20) value spaces.
01 L Pic 99.
. . .
Move Function Max(R1 R2) to R3
Compute L = Function Length(Function Max(R1 R2))
此代码具有以下结果:
R2求值为大于R1。- 字符串 "fbbbb" 将移至
R3,其中 b 表示空格。 (R3中未填充的字符位置用空格填充。) L求值为值 5。
如果 R1 包含 "g" 而不是 "e" ,那么代码将具有以下结果:
R1将求值为大于R2。- 字符串 'gbbbbbbbbb' 将移至
R3。 (R3中未填充的字符位置将用空格填充。) - 值 10 将分配给
L。
如果程序将国家数据用于函数自变量,那么函数结果的长度和值也可能不同。 例如,以下代码与之前的片段完全相同,但使用了国家数据,而不是字母数字数据。
01 R1 Pic n(10) national value "e".
01 R2 Pic n(05) national value "f".
01 R3 Pic n(20) national value spaces.
01 L Pic 99 national.
. . .
Move Function Max(R1 R2) to R3
Compute L = Function Length(Function Max(R1 R2))
此代码具有以下结果,这些结果类似于第一组结果,但这些结果用于本地字符:
R2求值为大于R1。- 此处以十六进制表示法显示的字符串
NX"6600 2000 2000 2000 2000"(相当于 'fbbbb' ,其中 b 表示空格) 将移至R3。R3中未填充的字符位置将用本地空格填充。 L求值为值 5 ,即R2的本地字符位置中的长度。
您可能正在处理来自字母数字 或本地 函数的可变长度输出。 相应地规划您的计划。 例如,当您正在写入的记录的长度可能不同时,您可能需要考虑使用可变长度文件:
File Section.
FD Output-File Recording Mode V.
01 Short-Customer-Record Pic X(50).
01 Long-Customer-Record Pic X(70).
Working-Storage Section.
01 R1 Pic x(50).
01 R2 Pic x(70).
. . .
If R1 > R2
Write Short-Customer-Record from R1
Else
Write Long-Customer-Record from R2
End-if