【问题标题】:Is it possible to use external indicator to activate display attribute in display file?是否可以使用外部指示器来激活显示文件中的显示属性?
【发布时间】:2012-07-25 12:40:54
【问题描述】:

我目前正在修改现有的 RPG 程序。目的是设置一个指标,以便该指标将激活显示文件中的显示属性 ND 以隐藏字段。问题是所有的通用指标IN01~IN99都用完了,我不能在不干扰现有程序流程的情况下重用它们。是否可以使用外部指示器 U1~U8 代替?如果不可能,还有其他选择吗?还是我搞砸了?

【问题讨论】:

  • 这太棒了。这个程序有多大(有多少行代码,有多少打开的文件)?我很难想象编写任何使用这么多指标的东西,即使在 RPG III 中也是如此。我非常有信心使用不需要的指标。 (并不是说清理指标的使用是最快或最好的解决方案;只是惊叹于创造这个怪物的以前的程序员。)
  • 该程序大约有4000行,它引用了20多个文件。但真正的问题是我的公司在 DDS 中使用 ERRMSGID 关键字在显示文件中显示消息。该程序中将显示大约 90 条消息。我可以告诉你,这不是我公司唯一使用所有 99 个指标的程序。当然可以重写程序以防止不必要的指标使用,但所涉及的工作量太大,我的老板不推荐。真可惜……

标签: ibm-midrange indicator


【解决方案1】:

考虑使用程序来系统字段而不是指标。 http://wiki.midrange.com/index.php/Program_To_System_Fields

另一种可能性是通过 DDS 关键字 INDARA http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frzakc%2Frzakcmstdfindar.htm 外部化所有显示文件指示符

【讨论】:

  • 外部指标在这里不是一个好的选择吗?或者它在这里根本不起作用?
  • DDS 允许的唯一指标是 01-99。
  • 对于 INDARA 解决方案,您的意思是从缓冲区中移除一个响应指示器并使用它来激活新的显示属性吗?
  • 没有。 INDARA 为记录格式上的所有指标留出一个单独的 99 字节缓冲区。如果您使用 INDARA,您将需要更改现有代码使用 DSPF 指示器的所有位置,并将其更改为使用 INDARA 数组。如果您只需要添加更多指标,则使用 Program to System 字段会更容易。这是一个旧示例:archive.midrange.com/rpg400-l/200402/msg00197.html
【解决方案2】:

检查每个指标 01-99 的使用情况,以确定您是否可以将它们释放以在您的显示文件中使用。

如果它们中的任何一个仅用于控制程序流程,而不直接涉及显示文件、打印文件、I-specs 或 O-specs,那么您可以将其使用替换为指标类型变量。将内部数据类型为 N(D-spec 的第 40 位)的变量声明为字符指示符格式字段。使用此变量代替仅用于程序流控制的指示器。

如果没有这样的指标,那么您可能应该使用 Buck 推荐的方法之一。

一种旧式替代方案,您可以将整个指示器阵列 *IN 保存到一个保持区域,暂时重新使用一些 I/O 指示器,然后将保持区域放回指示器阵列。您可能有多个 99 指标结构,您可以在适当的时间移动到 *IN 或从 *IN 加载。对于每种记录格式,您可以有一个这样的结构,您可以在该记录格式的 I/O 之前移动到 *IN,并在 I/O 之后加载回来。这为您的程序中提供了几乎无限数量的指标,尽管每种显示格式仍限制为 99 个。

【讨论】:

  • 希望旧程序没有充满疯狂和/或组合的悬挂指标。
猜你喜欢
  • 2021-11-24
  • 1970-01-01
  • 2015-04-13
  • 2017-04-26
  • 2021-10-17
  • 2012-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多