1

我正在尝试将一些 UniData 子例程包装到 SOAP Web 服务。我计划使用 C# 和 UODOTNET 库(IBM U2 Data Management Interface for .NET)。此外,我希望创建一个引擎来从数据服务器读取所有可用的子例程,并读取所有必需的参数并动态生成 W​​eb 服务所需的代码。

我的代码将是这样的:

var session = UniObjects.OpenSession(
        "192.168.0.1",
        "user",
        "password",
        "account"
        );

var cmd = session.CreateUniCommand();
cmd.Command = "LIST SUBURB.INDEX"; // ?????
cmd.Execute();
var res = cmd.Response;

问题 1:我可以使用任何命令来检索所有可用子例程的列表吗?

问题 2:我可以使用任何命令来检索特定子程序的所有参数列表吗?

干杯

4

2 回答 2

4

最简洁的答案是不。

更长的答案是肯定的,但需要做很多工作。

既然你问这个问题,我会假设你错过了很多关于平台的一般知识。因此,为了能够做到这一点,您需要:

  • 了解 VOC 的工作原理,特别是如何在此处对可执行代码进行编目。
  • 了解 CATALOG 以及全球、本地和直接的编目程序有何不同。
  • 了解您的系统是如何设计的。有些地方的所有东西都直接在 VOC 中编目,而另一些地方则是混合的。如果是前者,你的问题会更容易。

一旦你了解了上面的内容,你就会知道如何从VOC、本地目录和全局目录中获取所有可执行程序的列表。例如,VOC 的一个简化示例是 UniQuery 命令LIST VOC WITH F1="C"

困难的部分是获取参数列表,其中没有任何系统命令。为此,您有 2 个选项。

  1. 对每个子程序的字节码进行逆向工程,梳理出参数数量
  2. 如果您有权访问相关源代码,请对其进行解析以生成列表。
于 2016-05-31T13:34:11.387 回答
3

只是想对此添加评论,在 UniData 中有一个 MAKE.MAP.FILE 命令,它将识别程序和子例程(以及参数的数量),它将信息放在“_MAP_”文件中。这不会告诉您参数的用途,但它会有所帮助。

于 2016-11-03T14:30:54.340 回答