首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UniCommand差异用于UniData

UniCommand差异用于UniData
EN

Stack Overflow用户
提问于 2009-09-09 15:09:11
回答 3查看 2.4K关注 0票数 1

我是UniObjects世界的新手,因为我在.NET的土地上首次亮相。在构建了一个简单的应用程序以返回UniCommand语句的选择列表之后,我注意到在UniData和UniObjects解析UniCommand语句的方式上存在一些重大差异。据我所见,它看起来是不同的口味的选择使用。

我要问的是其他UniObjects程序员(UniVerse或UniData),他们知道其中的区别,或者知道在这里可以执行哪些命令来列出它们。我之所以问这个问题,是因为很难找到可以和不能成为命令的文档。

下面是一个示例:(两者都从相同的源返回相同的结果)

我们将输入什么UniData:(如果在UniCommand中给出解析器错误)

  • 选择颜色= "BLU]"

在UniObject的UniCommand中应该输入什么:

  • 选择带有@ID的颜色,如“BLU.”

注意UniData的通配符是"]“(方括号),其中UniCommand是”.“(elipsis)还请注意UniData是如何接受相等运算符的,以及UniCommand如何使用LIKE运算符和WITH。

另外,如果任何人在所有可用命令上都有指向文档的链接,他们也可以在这里发布。

EN

回答 3

Stack Overflow用户

发布于 2011-10-10 23:13:50

ECLTYPE "U“命令与来自TCL的交互式会话一起工作,但我可以看到从UniObjects永久设置是多么棘手。

一个口碑式的Unidata技巧,很容易知道,就是小写动词总是以执行为ECLTYPE,所以您将得到您想要的行为,而不管帐户的风格如何。所以这应该很好:

代码语言:javascript
复制
select COLORS WITH @ID LIKE "BLU..."
票数 3
EN

Stack Overflow用户

发布于 2009-09-09 16:16:27

问题是,Unidata环境被设置为使用PICK解析器解析命令,但是UniCommand对象正在执行Unidata的本地解析器。(类似的.语法来自Unidata的本机模式,该模式是根据建模的。)

我在UniSession或UniCommand上寻找一个属性,该属性将更改用于Execute方法的解析器,但没有找到解析器。但是,UniCommand的文档表明它等同于EXECUTE basic语句。这一点和一些UDT.OPTIONS命令可能会打开一个解决方案的大门,使您可以使用PICK命令语法,即使UniObjects不直接支持它。

Unidata的EXECUTE命令可以接受由@AMs分隔的多个命令,并将一个接一个地执行它们,只有在所有这些命令被处理后才返回。(这有点像一个小程序。)因此,在属性1中至少使用一个"UDT.OPTIONS 2 ON“命令构建您的命令,然后是您可能需要的其他命令,最后是最后一个属性中您想要的PICK命令。然后通过UniCommand对象的Execute方法立即发送全部数据。

UDT.OPTIONS 2的文档如下:

代码语言:javascript
复制
Determines the parser the system uses to interpret UniQuery commands.
    ON System uses the Pick® parser.
    OFF System uses the UniData parser.

还有其他几个与PICK兼容性相关的UDT.OPTIONS。查看文档(特别是udto.pdf )中的“Pick兼容性”部分。

也就是说,当我使用UniObjects时,我只使用它来调用基本子程序,并处理服务器端例程中的其他所有内容。

编辑: C#代码示例

代码语言:javascript
复制
UniSession s = UniObjects.OpenSession("machine", "user", "password", "/path/to/account", "udcs");
UniCommand c = s.CreateUniCommand();
c.Command = "UDT.OPTIONS 2 ON" + "\xfe" + "SELECT COLORS = \"BLU]\"";
c.Execute();

"\xfe“是属性标记。(这是CHAR(254)在挑音。)希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2009-09-09 16:23:44

您所描述的差异是UniData中ECLTYPE的差异,它完全独立于UniObjects。如果您将UniData帐户的ECLTYPE设置为"U“,它将接受以下语法:

代码语言:javascript
复制
SELECT COLORS WITH @ID LIKE "BLU..."

如果您将ECLTYPE设置为"P“,它将接受以下语法:

代码语言:javascript
复制
SELECT COLORS = "BLU]"

UniObjects for .NET文档声明:

“在UniData系统上,ECLTYPE是最好的。您可能会遇到其他ECLTYPE或UDT.OPTIONS设置的变化。

从文档中我并不清楚UniCommands是否总是使用ECLTYPE "U"执行,或者是否有一个参数可以让您配置解析器类型。您可以尝试从您的ECLTYPE "P"会话中执行一个UniObjects命令,然后查看是否解析了带有"P“语法的后续UniCommands。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1400313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档