如何从Python调用RPG程序

2024-09-28 13:24:58 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从IBM的Python为PASE调用RPG程序?在

我试过了操作系统, subprocess.popen/call但他们没用。在

更新

我在IBM的网站上发现了一些东西。我尝试了下面的方法;它没有给我任何错误,但是RPG程序没有执行(这意味着它不会给出预期的结果)。在

from itoolkit import * 
from itoolkit.lib.ilibcall import * 

itool = iToolKit()                                       
itransport = iLibCall()                                  
itool.add(iCmd('CALL', 'CALL TEMPLIB/TEMPPGM'))      
itool.call(itransport)    

Tags: 方法fromimport程序网站callibmrpg
3条回答

此答案假定您使用的是iSeriesPython。如果您不使用IBM的一个eem>发行版。在

首先,os.system应该可以工作。它只是将一个命令传递到命令行,所以您可以

import os
os.system('CALL TEMPLIB/TEMPPGM')

它应该会起作用的。在

但是,就像你在命令行上调用的任何程序一样,你不能以这种方式接收参数。如果需要获取输出参数的值,请使用os400.Program调用任何*PGM对象。在

documentation不是最全面或最新的,但它告诉你你需要知道什么。在本例中,由于您的示例没有参数,所以我不在我的示例中包含参数:

^{pr2}$

不过,通常您需要参数。以下是文档中的示例:

getprice = os400.Program('GETPRICE', '*LIBL', (('c', 10), ('d', 9, 0)))
getprice('PART_A', 0)
price = getprice[1]

基于XMLSERVICE的pythonitoolkit的文档是here,特别是您想要的iPgm。在

一个没有参数的简单示例是:

from itoolkit import * 
from itoolkit.lib.ilibcall import *

itransport = iLibCall()
itool = iToolKit()

itool.add(iPgm('pgmcall','TEMPPGM', {'lib': 'TEMPLIB'}))
itool.call(itransport)

output = itool.dict_out('pgmcall')
if 'success' in output:
    print('Success!')

另一种指定库的解决方案是首先添加一个iCmd操作,它将TEMPLIB添加到库列表中。你可以在这里找到更多的例子:http://python-itoolkit.readthedocs.io/en/latest/examples.html

我不是Python方面的专家,但请查看youngi专业网站上的iPgm。在

相关问题 更多 >

    热门问题