我找到了http://www.iseriespython.com/,这是 iSeries 的 Python 版本,显然包括一些系统特定的数据访问类。我很想尝试一下,但必须在工作中获得批准才能这样做。我的问题是:
端口是否运行良好,或者与标准 Python 实现相比,解释器可以处理的内容是否存在限制?
iSeries 数据库访问层是否工作良好,从表定义创建可用对象?
我找到了http://www.iseriespython.com/,这是 iSeries 的 Python 版本,显然包括一些系统特定的数据访问类。我很想尝试一下,但必须在工作中获得批准才能这样做。我的问题是:
端口是否运行良好,或者与标准 Python 实现相比,解释器可以处理的内容是否存在限制?
iSeries 数据库访问层是否工作良好,从表定义创建可用对象?
从我目前看到的情况来看,它工作得很好。请注意,我使用的是 iSeries Python 2.3.3。字符串本身就是 EBCDIC 的事实可能是个问题。这绝对是许多第三方软件包无法按原样运行的原因之一,即使它们是纯 Python。(在某些情况下,可以对它们进行调整和调整,以便明智地使用编码和解码。)据说 2.5 原生使用 ASCII,这在原则上会提高兼容性,但我无法对此进行测试,因为我太 -旧版本的 OS/400。
部分是因为 EBCDIC,部分是因为 OS/400 和 QSYS 文件系统既不是类 Unix 也不是类 Windows,有些标准库没有实现或实现不完善。这对你的影响有多严重取决于你想要做什么。
从好的方面来说,特定于 iSeries 的功能运行良好。处理物理文件和流文件非常容易。从 Python 调用 CL 或 RPG 程序相当轻松。总的来说,我发现 iSeries Python 非常有用且非常值得。
更新(2012 年): 自从提出这个问题以来,iSeries Python 已经做了大量工作。 版本 2.7现在可用,这意味着它是最新的 2.x 版本。论坛的一些参与者相当活跃并提供了惊人的支持。其中一个已经让 Django 在 i 上工作。正如预期的那样,迁移到原生 ASCII 字符串解决了很多 EBCDIC 问题,并大大提高了与第三方包的兼容性。我热情地向 V5R3 或更高版本的任何人推荐 iSeries Python 2.7。(对于那些使用早期版本操作系统的人,我仍然强烈推荐 iSeries Python 2.3.3。)
更新(2021 年):不幸的是,iSeriesPython 不再维护,旧网站和论坛已不复存在。您仍然可以从其 SourceForge 存储库中获取该软件,对于那些停留在旧版本(7.2 之前)操作系统的人来说,它仍然是一个非常有用且有价值的资产。对于使用 7.2 或更高版本的用户,IBM 提供了用于 PASE 的 Python,它应该被视为在中端平台上运行 Python 的首选方式。这个版本的 Python 是IBM i 上不断发展的开源软件生态系统的一部分。
听起来它会按预期工作。不过,对其他库的支持可能非常有限。
Timothy Prickett 在本文中谈到了 iSeries 的一些 Python 端口:
http://www.itjungle.com/tfh/tfh041706-story02.html
此外,Python 邮件档案中也出现了一些讨论:
http://mail.python.org/pipermail/python-list/2004-January/245276.html
iSeriesPython 运行良好。我们从 2005 年(或更早)开始在我们的开发和生产环境中将它用作实用语言,用于生成 COBOL 源代码、生成 PCML 接口、发送 SMS、验证/纠正某些数据……等等。使用 iSeriesPython,您可以以 2 种方式访问 iSeries 数据库:使用 File400 和/或 db2 模块。您可以执行 OS/400 命令并且可以使用 QSYS.LIB 成员和 IFS 流文件。恕我直言,iSeries Python 是非常强大的工具,比 iSeries 附带的 REXX 更好。试试看!
大约 3 年前,我获得了在一个盒子上安装 iSeries Python 的许可。我发现它的工作原理和宣传的差不多。我联系了开发人员,他非常善于回答问题。但是,在我考虑在生产中使用它之前,我不得不就支持合同与开发人员联系。那真的不是他的演出,所以他拒绝了,我们放弃了这个想法。我发现的主要限制是它在其他平台上落后于 Python 的几个版本。
我在 iSeries 上使用 Jython 也有很好的经验。iSeries 完全支持 Java。从理论上讲,您可以在 iSeries 上的 RPG 中执行的所有操作都可以在 Java 中执行,这意味着您可以在 Jython 中执行。1999 年或 2000 年,我通过 JPython(Jython 的旧名称)和 smtplib.py 从 AS/400(iSeries 的旧名称)发送电子邮件。
另一个可以查看的地方是邮件列表MIDRANGE-L或在midrange.com的档案中搜索该列表。我知道他们已经谈过这件事了。