【问题标题】:IBM i RPG Code to procedureIBM i RPG 代码到过程
【发布时间】:2014-06-18 22:46:10
【问题描述】:

我正在研究一个 RPG 程序。有一些像这样的子程序:有什么工具吗 哪个会将此创建为一个过程,可以在单独的过程中使用?

C                   Eval      FinQty# = 0                           
C                   Eval      OdCom# = OhCom#                       
C                   Eval      OdOrd# = OhOrd#                       
C     OdKey         Setll     OeOrd1                                
C     OdKey         Reade     OeOrd1                                
C                   Dow       %eof = *off                           
 *                                                                  
C                   If        OdPrt# = OdAls# and                   
c                             %subst(odprt#:1:3) <> 'FRT'           
C                   Eval      FinQty# += OdQty#                     
C                   Endif                                           
 *                                                                  
C     OdKey         Reade     OeOrd1                                
C                   Enddo                                           
 *                                                      

【问题讨论】:

  • 索要工具是题外话,尽管我不知道有任何问题。从 RPG 程序解构完整的链将是有问题的 - 当诸如表分区之类的事情直到运行时才知道时会发生什么?对于这样的事情,我可能会从 SQL 中的视图开始。您是指 RPG 过程还是 SQL 存储过程?还是服务计划?您可能会更幸运地定义原始代码的 intent,并在此基础上重新创建。
  • 我曾经看到过“要求工具是题外话”的说法;我在回复之前考虑了它。据我所知,真正的禁令是主观的“哪种工具最好”。鉴于这里 RPG 社区的规模以及所讨论的工具显然不像它们应有的那样广为人知或容易找到。我觉得答案是可以接受的。
  • for 询问工具是题外话,而询问使用工具时遇到的问题可能是题外话。但是示例代码看起来不像是可以很好地转换为过程的东西。看起来最好用单个 SQL SELECT SUM() WHERE... 语句替换它并将其放入过程中。

标签: ibm-midrange db2-400 rpgle


【解决方案1】:

是的,有工具。我不会使用它们。

可以说,子过程的主要好处是局部变量和参数化接口。没有自动化工具能够梳理出界面,并且弄清楚哪些全局变量应该变成局部变量是一项艰巨的任务。

那么,为了我的钱,自动化工具所能做的就是将语法从 EXSR 转换为 CALLP。 “子过程”仍在使用全局变量,并且接口仍然对程序员隐藏。有什么意义?

【讨论】:

  • +1 采用现有代码和创建新代码的自动化工具可能会出现问题,并且它们可能无法以最有效的方式创建它。自己写,不会花那么长时间(尤其是复制粘贴代码时)。
  • Linoma 的工具确实只是将 EXSR 转换为 CALLP...我认为这至少是合理的第一步。另外,考虑到观察者模块,我认为 Arcad 可以更进一步。我不明白如果没有某种工具……或一大群顾问,你怎么可能在合理的时间范围内转换整个系统;它有自己的一系列问题。
  • 虽然我通常更喜欢手工制作的解决方案,但将子例程转换为过程的工具是相当不错的第一步。转换子例程后,您可以手动调整它以隔离它。
【解决方案2】:

是的

我特别喜欢 Linoma 的 RPG Wizard http://www.linomasoftware.com/products/rpgtoolbox/rpgwizard

Arcad 有另一个工具,但它有更多的功能并且更多的是 $$$。 http://www.arcadsoftware.com/products/arcad-transformer-ibm-i-refactoring-tools/

请注意,Linoma 会将语法从内部子程序转换为内部程序;但是将程序移到外部是一个手动过程。

而我相信 Arcard 的工具集可以构建外部程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 2017-09-11
    • 1970-01-01
    相关资源
    最近更新 更多