IBM Bob

使用 IBM Bob 在 IBM i 上工作

平台简介、日常摩擦、IBM Bob 如何融入当今 IBM i 开发者的工作流程,以及接下来的发展方向。

使用 IBM Bob 在 IBM i 上工作

作者

Peter MaTim Rowe

发布时间

分类

announcement

分享

使用 IBM Bob 在 IBM i 上工作

如果你从未写过一行 RPG,IBM i 是大规模生产中最迷人的平台之一。如果你已经写了几百万行,你已经知道日常痛点在哪里。这篇文章涵盖了两者:IBM i 独特之处的技术概述、现代化摩擦实际出现的地方、IBM Bob 如何融入当今的 IBM i 工作流程、入门的设置步骤,以及平台路线图上的下一步。

IBM i 实际上是什么

IBM i 不是"我们应该重写这个"意义上的遗留操作系统。它是一个集成平台——操作系统、数据库、安全模型和运行时被设计并作为一个整体交付——几十年来一直为银行、保险公司、医院、制造商和物流公司创造收入。所以,我们应该称它为传奇。

一些往往让第一次看到它的开发者感到惊讶的细节:

  • 单级存储。 RAM 和磁盘共享一个虚拟地址空间。对象指针在重启后持久存在。操作系统将内存和存储视为单一层,并在它们之间透明地分页。大多数现代系统仍在追赶这一点。
  • TIMI,技术独立机器接口。 在 1990 年代硬件上编译的 RPG 二进制文件在当前的 POWER 芯片上无需修改即可运行。操作系统在底层针对新指令集重新翻译。最接近的现代类比是 WebAssembly,早了几十年。
  • 基于对象的操作系统。 程序、文件、队列和权限是具有属性的类型化对象——而不是附加了元数据的文件。安全性在对象级别强制执行。
  • Db2 for i 是集成的,而不是附加的。 SQL 和原生记录级 I/O 访问相同的数据。一个 40 年前的物理文件可以通过现代 SQL 视图查询,无需迁移项目。
  • 源代码可以存在于系统上或 Git 中——你的选择。 历史上,IBM i 源代码作为成员存储在源物理文件(QSYS)中,直接在系统上编译。该平台最初将 LPAR 定位为真实来源。但 IBM i 已经发展:编译器和操作系统现在完全支持现代以 Git 为中心的工作流程、IFS 流文件和本地开发(如果你选择的话)。许多商店仍然使用 QSYS 库,但平台为你提供了选择

该平台还支持开箱即用的现代交付模式:作为操作系统一部分的原生 REST API 引擎、通过 Power Virtual Server 的混合云,以及在与事务工作负载相同的硬件上运行的 AI 推理。RPG、COBOL、CL 和 SQL 与你的工程组织其余部分已经使用的开发实践共存。

平台不是问题。摩擦在它周围。

摩擦出现的地方

几乎每个 IBM i 商店都会出现四种模式。它们都不是关于 RPG 本身——语言很好——而是关于从未写下的代码周围的上下文,以及平台存储和共享该上下文的方式。

  • 设计上的隐式上下文。 一个工作的 RPG 程序可以在一个源代码中跨越四代语言——RPG II、RPG IV、/COPY 复制本(在编译时引入的共享声明)和自由格式过程——具有列敏感语法和编号指示器(*IN01*IN99),执行大多数其他语言中结构化控制流和命名布尔值所做的工作。语法可以在一周内学会;围绕它的约定和业务规则存在于高级工程师的脑海中。
  • 变更从不是局部的。 字段的类型不是在使用它的程序中声明的——它在数据库表本身中声明,在一个单独的源文件(DDS 成员)中。读取或写入该表的每个程序只需在顶部引用文件即可继承这些定义。因此,将一列从 10 位延长到 12 位从来不是单个程序的编辑:它会波及到触及该文件的每个程序,而这些程序的列表很少在任何地方写下来。因此,对关键工作负载的每次更改都带有连续性风险,现代化停滞不前。
  • 源代码很少存在于现代工具期望的地方。 程序的规范副本在系统上,而不是在笔记本电脑上的 Git 仓库中。阅读其他人十五年前编写的代码始于在 LPAR 上找到它、导出它,然后决定导出是否是规范副本——任何假设本地工作树的工具在证明其价值之前都必须适应的工作流程。
  • 固定格式 RPG 看起来一点也不像现代代码。 大多数生产 RPG 是用固定格式编写的:列敏感语法,其中操作代码位于第 26-35 列,Factor 1 位于 12-25,注释只能放在第 80 列之后。对于任何接受过 Python 或 JavaScript 培训的人来说,它读起来像汇编语言。IBM 用完全自由格式的 RPG(RPG IV,后来简称为"RPG")重新发明了这种语言,它看起来和感觉起来像一种现代的过程语言——结构化块、命名变量、标准表达式。语法差距是真实的,但语言本身已经发展。摩擦在于几十年的工作代码仍然是固定格式,重写它带来的风险是大多数商店无法证明的。

Bob 在 IBM i 的 RPG 应用程序上做什么

将 Bob 指向一个 RPG 程序并在 Ask 模式下开始:

  • "带我了解这个程序做什么以及它触及哪些文件。"
  • "CUSTNO 在哪里设置,之后哪些程序读取它?"
  • "如果我更改此字段的长度,会破坏什么?"

当你有一个变更想法时切换到 Plan 模式:自由格式转换、从记录级 I/O 迁移 SQL,或将单体分解为模块。Bob 在修改任何文件之前生成计划、它触及的依赖项以及它打算采取的步骤。

切换到 Code 模式以应用更改。Bob:

  • 使用可重复的模式将固定格式 RPG 转换为自由格式,逐个文件。
  • 在适当的地方将记录级 I/O 迁移到嵌入式 SQL。
  • 针对现有过程生成 RPGUnit 测试套件,以便转换是可验证的,而不仅仅是编译的。
  • 从源代码生成纯语言文档和 Mermaid 图表——可搜索、可共享的工件,比任何一个工程师都长寿。

相同的工作流程处理 RPG II/III/ILE、CL、DDS、SQL 和 COBOL,因此阅读在他们出生之前编写的程序的新员工不再被语法阻止。

使你的 IBM i 源代码为 Bob 做好准备

Bob 今天针对本地计算机上的源代码工作。设置很短:

  1. 下载你的源代码。 将你的 RPG、RPGLE、CL、DDS 和 SQL 成员导出到本地文件夹。Code for i 项目资源管理器记录了从物理文件成员的导出:migrate source
  2. 在 Bob 中打开文件夹。 在源根目录上 File → Open Folder。Bob 在首次打开时索引代码库。
  3. 安装 IBM i 工具链。 从 Extensions 面板添加 IBM i Development Pack(Code for i 捆绑包)和用于 Bob 生成的图表的 Mermaid 渲染器。
  4. 在 Ask 模式下开始会话。 选择一个程序——理想情况下是团队中没有人完全理解的程序——并要求 Bob 解释它。这是查看 Bob 是否在你的工作流程中赢得一席之地的最快方法。

如果你的团队来自 SEU 或 RDi,迁移主要是上面的导出步骤加上扩展安装。编辑界面是一个现代的 VS Code 系列环境,具有语法高亮、代码完成和前面描述的 AI 工作流程;行号仍然可供想要它们的工程师使用。

IBM i 上 Bob 的下一步

最近宣布的 Premium Package for i 为 IBM i 开发团队提供原生和优化的体验。Premium Package for i 将于 6 月 24 日正式发布。

Premium Package for i。 随着 6 月 24 日的 GA,Bob 将直接连接到你的 IBM i。从单个会话中,你直接从 QSYS 读取源成员,使用上述相同的工作流程编辑它们,并直接针对系统运行编译和测试周期。除了连接性,Bob 还获得了针对 IBM i 开发调整的内置技能和工作流程——固定到自由的转换、重构、文档生成——因此在 RPG 代码库上的起始提示可以更直接地落在开箱即用的 IBM i 约定上。具体来说,这意味着:

  • 一个连接到开发 LPAR 的 Bob 会话;没有单独的导出-编辑-导入循环。
  • 来自 IBM i 的编译错误和测试结果会回到 Bob 已经在的对话中。
  • 用于 IBM i 商店重复运行的重构、转换和测试生成模式的内置技能和工作流程。

更远的未来——端到端 SDLC。 三个线程正在为未来版本进行积极设计:

  • DevOps 集成。 Bob 参与 IBM i 工作负载的构建、部署、监控和 CI/CD——针对测试 LPAR 运行回归通过、通过环境提升更改,并将运行时问题带回会话。
  • SQL 性能。 数据分析和索引优化作为一流功能,除了 Bob 今天已经生成的嵌入式 SQL 迁移模式之外。
  • IBM i 知识助手。 跨代码库、设计文档和工单的基于检索的答案——以便源代码之外的上下文可以从同一对话中访问。

对于今天采用 Bob 的团队,上面的本地文件工作流程是正确的起点;本节中的项目描述了随着 IBM i 产品的成熟,该工作流程如何缩短和扩展。

客户参考

医疗保健、农业、企业 IT 和物流领域的团队今天正在针对生产 IBM i 代码库使用 Bob:

  • MEDHOST。 跨美国医院部署的涵盖多个 RPG 代的医疗保健应用程序。该团队使用 Bob 进行影响分析和固定到自由的转换,以及将较新的开发人员引入原始作者早已离开的程序。
  • NI+C。 日本企业集成商,拥有十多年来一直未经更改运行的 RPG 程序,没有幸存的设计文档。Bob 生成的设计文档和 Mermaid 图表足够准确,以至于以前从 AI 助手那里反弹的工程师继续将其用于实际工作。
  • Heartland Co-op。 总部位于爱荷华州的农业合作社,将实时 IoT 传感器数据流式传输到其 IBM i 环境中,用于谷物质量和设备监控。Bob 帮助开发人员推理 IoT 管道、谷物会计和核心运营系统之间的相互依赖关系,并缩短新员工的上手时间。
  • Carreras Grupo Logístico。 西班牙首批企业 Bob 采用者之一,使用它来解释遗留程序逻辑、生成文档并跨物流平台的模块进行重构。

所有四个的共同点是相同的:现有的 IBM i 代码库保持原位,解释、转换和文档工作与生产系统一起运行,而不是在替换项目之前。

开始使用

  • 开始免费试用
  • 将一个 RPG 程序拉入本地文件夹并在 Bob 中打开它。
  • 在 Ask 模式下,请求演练和其数据流的 Mermaid 图表。

该会话——一个程序,一次对话——是获得关于 Bob 是否适合你的团队工作方式的真实答案的最短路径。