UniData 列出所有可用的子程序/所有参数

UniData List all avaiable subroutines / All parameters

我正在尝试将一些 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:是否有任何命令可用于检索特定子例程的所有参数列表?

干杯

简短的回答是否定的。

较长的答案是肯定的,但需要大量工作。

既然你问了这个问题,我假设你缺少很多关于该平台的一般知识。因此,要做到这一点,您需要:

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

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

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

  1. 对每个子程序的字节码进行逆向工程,梳理出参数个数
  2. 如果您有权访问相关源代码,请对其进行解析以生成列表。

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