操作中的 AS400 RPGLE/自由动态变量



经过多年的搜索,我相当确定这是不可能的,但我还是会问。

问题是,当您不知道字段名称时,是否可以在操作中使用动态变量。 例如,我有一个包含几百个字段的数据结构。 操作员选择其中一个字段,程序需要从传递的数据结构中知道哪些数据驻留在字段中。 因此,我们将说有 100 个字段,而 field50 是操作员选择操作的内容。 程序将在 FLDNAM 变量中的字段名称(即 field50)中传递。 程序将以正常方式读取如下内容:

/free
  if field50 = 'XXX'
  // do something
  endif;
/end-free

问题是我必须为每个操作编写 100 次代码。 例如:

/free
  if fldnam = 'field1';
  // do something
  elseif fldnam = 'field2';
  // do something
  ..
  elseif fldnam = 'field50';
  // do something
  endif;

有没有可能在未知的领域上执行操作的方法? (即,如果 FLDNAM(指针数据)= 'XXX' 然后做某事)

如果数据结构是外部描述的,并且您知道它来自哪个文件,则可以使用 QUSLFLD API 找出数据结构中字段的偏移量、长度和类型,然后使用子字符串获取数据,然后使用其他计算来获取值,具体取决于数据类型。

简单的答案,没有。

RPG根本不是为这个而设计的。 很少有语言是。

您可能需要查看脚本语言。 例如,Perl可以动态评估。 安装在 IBM i 上的 REXX 有一个INTERPRET关键字。

REXX 参考手册

相关内容

  • 没有找到相关文章

最新更新