1

好的,这可能会有点复杂。

在属性 4 中有一个具有多值的文件

我想编写另一个字典项,循环遍历多值列表,调用子例程并返回属性 4 中每个项的计算值。

类似的东西

<4> a]b]c]d]e

新属性

@RECORD<4>;SUBR("SUB.CALC.AMT", @1)

结果

<4> AMT a 5.00 b 15.00 c 13.50 d 3.25

不太确定如何从 RECORD<4> 传递值,对 @CNT 系统变量有一个模糊的概念,但这不起作用,这可能意味着它来自 SB+ 或其他 4GL 之一。

4

1 回答 1

0

你可能想多了。

您应该能够在不执行“;”的情况下引用它 和@1 件事(我不熟悉那个约定)。使用 I-Descriptor 这应该可以解决问题,尽管我传统上使用实际的字典名称而不是 @RECORD 的东西。

 SUBR("SUB.CALC.AMT", @RECORD<4>) 

如果您的子例程已编译、编目并返回所需的值,则这应该可以工作,其值/子值结构与子例程的第一个参数中的 @RECORD<4> 相同。

SUBROUTINE SUB.CALC.AMT(RETURN.VALUE,JUICY.BITS)
JBC = DCOUNT(JUICY.BITS<1>,@VM)
FOR X=1 TO JBC
   RETURN.VALUE<1,X> = JUICY.BITS<1,X>:" or something else"
NEXT X
RETURN
END

祝你好运。

于 2018-11-05T15:40:06.703 回答