我已经有绿屏的RPG4程序,我希望能够用Java调用rpg程序并绕过绿屏。
我已经对此做了一些研究,IBM OAR(Open Access:RPG)不断涌现。但我还没有找到一个有效的例子。
我的目标是创建一个网络应用来收集相同的信息并将其提供给后端RPG
任何帮助将不胜感激
答案 0 :(得分:3)
修改强>
删除:您无法
插入:在解决此问题之前,初学者需要掌握几个复杂的新概念。
<强> END-修改
至少,不是没有改变RPG计划。 Web请求由批处理运行的服务器作业处理 - 它们未连接到5250终端。因为它们没有连接到终端,所以当RPG程序试图打开显示文件时,它会因为没有要附加的终端而崩溃。
为了实现这一点,你必须改变RPG程序,以便在像Java应用程序这样的批处理程序调用时不尝试显示文件I / O(尽管在这个网络中不需要Java)场景)。
改变RPG程序的一种方法是使用输入参数;如果你有它们,那么不要试图打开显示文件,但是将输入参数填入显示文件可能完成的字段中。由于显示文件也从程序输出,因此您还需要为输出信息保留一些参数。如果涉及子文件,这可能会非常难看,因为可能存在数千个参数。
OAR进入了画面,因为可以编写一个继续使用相同显示文件I / O操作的OAR处理程序,但是将实际I / O引导到其他地方,例如HTTP类型应用程序的STDIN和STDOUT。 Jon Paris和Susan Gantner撰写了一篇名为Getting a Handle on RPG's Open Access的文章,您可能会发现它很有用。它出现在2010年7月的IBM Systems Magazine电子版中。
最好也许是在RPG程序中提取业务逻辑,将其实现为可由Web应用程序通过传统ODBC / JDBC调用的存储过程。可以在RPG中编写存储过程,因此不会像看起来那么难。
答案 1 :(得分:2)
OAR可能是你最好的选择....
但是,我能想到的每个例子都已经解决了构建处理程序以替换打印机文件(PRTF)或物理文件(PF)的问题。
更换显示文件(DSPF)是一个完整的其他球类游戏。主要是因为5250协议是一个&#34;智能&#34;协议;不像DM / VT100使用的哑字符类型协议。
当然可以而且已经完成了。如果您只有一个基本屏幕,则可以执行此操作。但对于具有多个屏幕和子文件的复杂应用程序,您可能会遇到困难。特别是如果您对5250协议没有深入的了解。
我建议您查看一个供使用OAR的供应商工具集,将5250屏幕替换为网页。这些供应商花费了多年的时间和精力来开发所需的处理程序
http://www.profoundlogic.com/solutions/rpg-application-modernization.html
https://asna.com/us/products/wings
您可能会发现以下出版物有用:
Modernizing IBM i Applications
最后请注意,ROA不是唯一的选择。这是一种较旧的技术,&#34;屏幕抓取&#34;您的应用程序基本上模拟5250终端。它比完整的ROA处理程序更简单,但最终结果也更简单。 IBM拥有自己的工具HATS。例如,Profound逻辑也有一个工具GENIE。但是你可以想象建立自己的屏幕抓取器,开源TN5250J可能是一个开始的地方。但即便如此,这也是不平凡的。
答案 2 :(得分:0)
你应该混合使用parsin json on the iseries(这可以消除子文件问题),一个很好的javascript框架(我使用Extjs)和The Apache server for I。
我开发了一个基于json参数的HTTP服务框架,使用Ajax直接从浏览器发送,使用任何ILE语言程序(主要是rpgle)处理每个请求,并将结果返回到程序内创建的纯json中。使用这种方法,您只需发送/接收业务数据,将前端留给Javascript框架。
希望这会有所帮助。如果您需要更多帮助,请与我联系。