gpt4 book ai didi

hpcc - 使用查询结果控制 ECL 循环宏

转载 作者:行者123 更新时间:2023-12-01 01:56:38 25 4
gpt4 key购买 nike

我们正在尝试编写一个带有中断函数的循环宏。基本上我们想重复某个 Action 直到 X(从数据集派生)为真。然而,编译器似乎不喜欢这种方法(返回“预期的常量表达式”),所以我们想知道是否有已知的解决方法?

下面提供了一个完全人为的示例,调用者为:

LoopFunction(5);  

从 BWR 窗口。
EXPORT LoopFunction(NMax = 5) := MACRO

Rec := RECORD
INTEGER i;
END;

#DECLARE(i);


OUTPUT(DATASET([1], REC), ,'~TEMP::MB::LOOPTEST' + %i%, COMPRESSED, OVERWRITE);

#SET(i, 2);

shouldIbreak := DATASET('~TEMP::MB::LOOPTEST' + (%i% - 1), Rec, THOR);

#LOOP

OUTPUT(shouldIbreak +DATASET([%i%], REC), ,'~TEMP::MB::LOOPTEST' + %i%, COMPRESSED, OVERWRITE);

#SET (i, %i%+1);

#IF (COUNT(shouldIbreak) > Nmax);
#BREAK
#END
#END

ENDMACRO;

最佳答案

您不能对模板语言代码具有运行时依赖性(例如从逻辑文件加载的数据集),因为模板语言指令是由编译器处理的,目的是生成 ECL 代码。

您可以使用数据集,但前提是它们是常量表达式(例如内联数据集)。

将模板语言视为 C 中的宏。如果您确实需要根据运行时依赖项生成代码,那么您可以做的解决方法是编写一个生成 STRING 的函数。使用您的代码,然后使用 SOAPCALL 将其提交到集群.

关于hpcc - 使用查询结果控制 ECL 循环宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40088244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com