AS400 RPGLE /运行中的自由动态变量

时间:2017-01-26 15:05:04

标签: variables dynamic ibm-midrange 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;

是否有可能对尚未知道的字段执行操作? (即IF FLDNAM(指针数据)='XXX'然后做某事)

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

简单回答,不。

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

您可能希望查看脚本语言。例如,Perl可以在运行中进行评估。安装在IBM i上的REXX具有INTERPRET关键字。

REXX Reference manual