Ibm midrange IBM i RPG代码到过程

Ibm midrange IBM i RPG代码到过程,ibm-midrange,db2-400,rpgle,Ibm Midrange,Db2 400,Rpgle,我正在看一个RPG程序。有些子程序是这样的:有工具吗 这是一个程序,可以在单独的过程中使用 C Eval FinQty# = 0 C Eval OdCom# = OhCom# C Eval OdOrd# = OhOrd#

我正在看一个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                                           
 *                                                      
C Eval FinQty#=0
评估OdCom#=OhCom#
C评估气味=OhOrd
C OdKey Setll OeOrd1
C OdKey Reade OeOrd1
道琼斯指数%eof=*关闭
*                                                                  
C如果OdPrt#=OdAls#和
c%subst(odprt#:1:3)'FRT'
C评估FinQty#+=OdQty#
C Endif
*                                                                  
C OdKey Reade OeOrd1
肯多
*                                                      

我特别喜欢Linoma的RPG向导

Arcade还有另一个工具,但它有更多的功能和更多的$$$。

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


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

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

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


就我的钱来说,一个自动化工具所能做的就是将语法从EXSR转换为CALLP。“子过程”仍在使用全局变量,接口仍对程序员隐藏。要点是什么?

要求提供工具是离题的,尽管我不知道有什么现成的。从一个RPG程序解构一个完整的链是有问题的——当像表分区这样的事情直到运行时才知道时会发生什么?。对于类似的内容,我可能会从SQL中的视图开始。您是指RPG过程还是SQL存储过程?还是服务项目?您可能会更幸运地定义原始代码的意图,并在此基础上重新创建;我在回答之前考虑了一下。据我所知,真正的禁令是主观上的“哪种工具最好”。考虑到这里RPG社区的规模以及存在问题的工具显然不那么广为人知或容易找到。我觉得答案是可以接受的。询问工具是离题的,而询问使用工具时遇到的问题可能是离题的。但是示例代码看起来不像是能够很好地转换为过程的代码。看起来最好用一个SQL SELECT SUM()替换它,其中。。。语句并将其放入一个过程中。+1自动工具获取现有代码并创建新代码可能会有问题,而且它们可能无法以最有效的方式创建代码。自己编写,不会花那么长时间(特别是如果你复制粘贴代码的话)。Linoma的工具确实只是将EXSR转换为CALLP…我认为这至少是合理的第一步。另外,我认为Arcade's可以在observer模块的支持下更进一步。我不明白,如果没有某种工具或一大群顾问,你怎么可能在合理的时间框架内转换整个系统;虽然我通常更喜欢手工制作的解决方案,但将子例程转换为过程的工具是一个相当好的第一步。转换子例程后,可以手动调整它以将其隔离。