AS400 RPGLE/free 操作中的动态变量
AS400 RPGLE/free dynamic variables in operations
经过多年的搜索,我相当确定这是不可能的,但我还是会问的。
问题是当您不知道字段名称时是否可以在操作中使用动态变量。例如,我有一个包含几百个字段的数据结构。操作员选择这些字段之一,程序需要从传递的数据结构中知道哪些数据驻留在该字段中。所以我们会说有 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' 然后做某事)
简单的回答,没有。
角色扮演游戏根本就不是为此而设计的。很少有语言是。
您可能想看看脚本语言。例如,Perl 可以即时求值。 REXX 安装在 IBM i 上,有一个 INTERPRET
关键字。
如果数据结构是 externally-described 并且您知道它来自哪个文件,您可以使用 QUSLFLD API 找出数据中字段的偏移量、长度和类型structure,然后使用substring获取数据,然后使用其他计算获取值,具体取决于数据类型。
经过多年的搜索,我相当确定这是不可能的,但我还是会问的。
问题是当您不知道字段名称时是否可以在操作中使用动态变量。例如,我有一个包含几百个字段的数据结构。操作员选择这些字段之一,程序需要从传递的数据结构中知道哪些数据驻留在该字段中。所以我们会说有 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' 然后做某事)
简单的回答,没有。
角色扮演游戏根本就不是为此而设计的。很少有语言是。
您可能想看看脚本语言。例如,Perl 可以即时求值。 REXX 安装在 IBM i 上,有一个 INTERPRET
关键字。
如果数据结构是 externally-described 并且您知道它来自哪个文件,您可以使用 QUSLFLD API 找出数据中字段的偏移量、长度和类型structure,然后使用substring获取数据,然后使用其他计算获取值,具体取决于数据类型。