如何将当前日期从一个UniQuery段落传递给另一个段落

时间:2018-04-03 21:49:56

标签: unidata uniquery

如何在UniQuery中将当前日期从一个PA传递到另一个?一位同事告诉我将cron写入文件的日期并使用内联提示用<<F(HOLD,X.DATE.TODAY,1)>>读取它的技巧,但这会增加可能失败的额外部分,我宁愿保持简单(也就是一次)文件没有更新,哎呀)。

我基本上需要这样的东西。

AE VOC MY.PROCESS.TODAY
001: PA
002: MY.PROCESS ?????

使用当前日期运行我的第二个PA。

AE VOC MY.PROCESS
001: PA
002: SELECT PERSON WITH PER.CHANGE.DATE EQ <<I2,Enter Date:>>

这确实有效,MY.PROCESS <<F(HOLD,X.DATE.TODAY,1)>>,但无论如何我可以使用像DATE()那样更可靠的东西作为第二段中的参数传递结果吗?

2 个答案:

答案 0 :(得分:1)

您可能会得到答案“不要在段落中执行此操作”,并且在某种程度上这是正确的 - 除了简单的命令列表之外的任何事情都会变得复杂。

那就是说,下面对我有用:

AE VOC MY.PROCESS
001: PA
002: CLEARPROMPTS
003: SELECT PERSON WITH PER.CHANGE.DATE EQ <<I2,Enter Date:>>

来自:https://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew20/unidata/v8.2.1/unidata_userguide_v821.pdf

我在测试时使用I选项:“I和S选项类似于C选项。如果未指定n,则In选项会提示输入文本,而Sn选项会将n的值传递给叫段落。“

另请阅读上面“始终使用内联提示提示”的部分,解释为什么需要CLEARPROMPTS。如果没有这个,如果你没有传递参数,它将很乐意使用提供的最后一个参数。

[编辑:提供BASIC选项]段落非常适用于非常简单的事情,并且可能有一种方法可以解决问题。但这是一个让一些工作变得有效的基本程序:

EXECUTE "MY.PROCESS ":OCONV(DATE(),"D4/")

MY.PROCESS.TODAY难以成为段落吗?如果您将这个单行程序编译并编目为BP MY.PROCESS.TODAY,那么它将完全按照需要工作。

答案 1 :(得分:1)

您还可以创建一个他今天的日期

的Vitrual Dictionary项目

ED DICT PERSON TODAYSDATE

I @DATE D2/ TODAY'S DATE 10L S

然后你的select语句变为:

使用PER.CHANGE.DATE EQ TODAYSDATE选择PERSON

这肯定会比查看存储日期慢,因为它是根据查询的每个记录而不是存储来计算的。如果PERSONS是一个大文件,这可能不是一个好主意。