COBOL考古(三)

使用 Code4z 开源扩展包的 VS Code

本节介绍 Code4z 扩展包,特别是 COBOL 语言支持扩展。

  • 什么是 Code4z?
  • 已知的文件扩展名
  • 语法突出显示和着色
  • 语法和语义检查
  • 代码导航
    • 跳转到定义
    • 查找所有引用
  • Copybook 支持
  • 自动完成
  • 总结

Code4z是什么?

Code4z 是一个为 Visual Studio Code 提供的一站式开源主机扩展包。Code4z 包含了提供 COBOL 和高级汇编语言支持的扩展,以及用于 COBOL 程序的调试器,还包括一些工具,让开发人员可以使用 Visual Studio Code 界面访问主机数据集和 CA Endevor 代码存储库。本指南主要关注 COBOL 语言支持扩展。Zowe Explorer 扩展也包含在 Code4z 包中。

COBOL 语言支持扩展利用了 Language Server Protocol 来为 COBOL 代码提供自动完成、高亮显示和诊断功能。搭配 Zowe Explorer 使用,您可以从主机数据集加载 COBOL 代码,并使用扩展的 LSP 功能进行编辑。编辑完成后,您可以将文件保存回主机,并在本地保存一份副本。

Code4z 扩展包可以通过在 Visual Studio Code 的扩展市场中搜索 “Code4z” 并选择安装来安装。扩展包包含许多扩展,可以在与主机工作时使用,包括 COBOL 语言支持扩展,提供了与前面讨论的 Z Open Editor 扩展类似的功能。因此,请确保只启用这两个扩展中的一个。扩展包中包含的其他扩展可以与 COBOL 语言支持或 Z Open Editor 一起使用。有关更详细的安装说明,请参阅 “安装 VSCode 和扩展”。

已知的文件扩展名

Code4z 识别扩展名为 .COB 和 .CBL 的文件为 COBOL 文件。这适用于本地文件和主机上的 PDS 文件。只要您打开一个具有标识为 COBOL 文件的扩展名的文件,COBOL 语言支持功能就会自动启用。

语法高亮和着色

COBOL 语言支持扩展使关键字、段落和变量以不同的颜色进行着色,以便更轻松地浏览代码。

语法和语义检查

COBOL 语言支持扩展会检查 COBOL 代码中的错误和问题。语法检查功能会审查整个代码的内容,突出显示错误并提供建议修复方法。

图1语法和语义检查功能突出显示一个错误

代码导航

COBOL 语言支持扩展提供了多种用于轻松导航代码的功能。

跳转到定义

当光标位于变量或段落名称上时,您可以按 F12CTRL+单击 来使用跳转到定义功能,以显示定义变量或段落的代码部分。

图2跳转到定义显示了首次定义 USA-STATE 变量的代码部分

查找所有引用

查找所有引用功能(SHIFT+ALT+F12)会突出显示对变量或段落的所有引用,并将它们列在侧边栏中的列表中,以便您可以轻松在它们之间导航。

图3. 查找所有引用列出了代码中对 STREET-ADDR 变量的所有引用。

复制本支持

复制本是存储在单独数据集中的源代码片段,程序中会引用这些复制本。COBOL 语言支持扩展使您能够从主机下载程序中引用的所有复制本到您工作区的文件夹中。为了使此功能正常工作,您需要设置和配置一个 Zowe CLI zosmf 配置文件。您还可以启用对存储在工作区文件夹中的复制本的支持。当与存储在 Github 存储库中的 COBOL 项目一起工作时,这将非常有用。

COBOL 语言支持扩展通过对复制本中的关键字、变量和段落进行语义分析,确保代码中调用的复制本保持兼容,并通过在复制本中定义变量和段落来确保代码的一致性。该扩展还有助于防止由于递归或缺失的复制本导致的不希望的错误。

转到定义查找所有引用 功能已扩展,以处理程序中引用的变量和段落的出现,以及程序本身。您还可以在复制本名称上使用 转到定义 功能以打开它。

自动完成

COBOL 语言支持扩展在您输入时提供实时建议,包括 COBOL 关键字以及已在代码或程序使用的复制本中引用的变量和段落。

图 4. 自动完成列出了以键入的字符串开头的可能变量和关键字的列表。

图 4. 自动完成列出了以键入的字符串开头的可能变量和关键字的列表。

总结

在本章中,您已经了解了用于 VS Code 的开源扩展包 Code4z 的所有 COBOL 语言支持功能。这些功能将有助于改进 COBOL 开发体验,使其更加高效和便捷。

Zowe CLI 和 Zowe CLI 插件

在这一章中,我们将解释什么是 CLI,以及为什么要使用它,如何在交互式环境中使用 Zowe CLI,如何将 CLI 命令抽象成有用的脚本,以及如何在开发主机上的 COBOL 应用程序时,Zowe CLI 可以使用熟悉的开源工具。

  • 什么是 CLI 以及为什么要使用它?

  • 什么是 Zowe CLI?

  • Zowe CLI 的交互式使用

    • 安装 Zowe CLI
    • 交互式帮助
    • Zowe 配置文件
    • 与 z/OS 数据集交互
    • 与 z/OS 作业交互
  • 使用 Zowe CLI 自动化任务

    • 自动作业提交
    • 使用其他编程语言和持续集成
    • 其他示例
  • 现代开源工具的世界

  • 总结

什么是 CLI 以及为什么要使用它?

CLI 代表命令行界面(Command Line Interface)。它是一种通过基于文本的输入进行用户交互的程序。在计算机早期,命令行界面是与操作系统交互的唯一方式。鼠标的发明和图形用户界面的发展导致了我们今天熟悉的体验。设计良好的 GUI 显然可以提供更好的交互体验。然而,CLI 仍然在今天广泛使用,并且非常强大。Windows shell 和 bash 是常见的终端示例,其中可以交互运行命令行工具。

如果设计良好的 GUI 提供了更好的交互体验,那么为什么要使用 CLI 呢?简而言之,自动化。命令行界面可以用于交互式使用,允许快速探索可用命令。它们通常是自导向的,一些甚至通过在浏览器中启动内容来提供现代帮助显示。但是,它们也是程序化界面,其中命令序列和任务可以轻松抽象为脚本。

什么是 Zowe CLI?

Zowe CLI 是用于主机的开源命令行界面(CLI)。它是一种可在Windows、Linux和Mac上运行的工具,提供了一种在现代开源工具环境中与主机进行交互的方式。云平台,如Amazon Web Services、Azure和Google Cloud Platform,都提供了广泛使用的 CLI。Zowe CLI 帮助使与主机的交互类似于与其他云服务的交互。

在其核心,Zowe CLI 提供了与 z/OS 数据集和作业、Unix 系统服务文件、TSO 和控制台命令以及配置服务的远程交互。Zowe CLI 还是一种可扩展的技术,存在许多插件,可以将其扩展到 z/OS 子系统和供应商软件中。

Zowe CLI 是分布式系统和主机之间的桥梁工具。选择您喜欢的编程语言或开源工具,并在 Zowe CLI 的帮助下利用它进行主机开发。想要在 Python 中开发自动化任务?想要使用 Node 编写测试?想要运行 Jenkins 流水线进行持续集成?想要使用像 Mocha 或 Facebook 的 Jest 这样的开源测试框架?想要利用 SonarQube 等代码质量工具?都可以实现!

命令行界面非常适用于自动化重复任务。对于主机 COBOL 应用程序,Zowe CLI 可以帮助您自动化构建、部署和测试过程。查看这篇博客以获取更多信息和实现这一目标的示例代码!Zowe CLI 还可以帮助您自动化管理任务。

大多数集成开发环境(IDE)也都具有集成的终端,因此可以从您喜欢的分布式开发环境中利用 CLI,包括 VS Code!

Zowe CLI 用于快速探索 z/OS 服务以及执行尚未在您选择的 IDE 中提供的命令。在开发自动化之前,通常首先使用 CLI 以交互方式完成常见的重复任务。

安装 Zowe CLI

Zowe CLI 是一个 Node.js 包,是公共 npm 注册表上的超过 120 万个 Node.js 包之一。在客户端机器上安装 Node.js 和 npm 后,可以通过简单地运行 npm install -g @zowe/cli@zowe-v1-lts 来安装核心 CLI。如果您的工作站无法访问公共注册表,则还有另一种安装方法。有关安装 Zowe CLI 和 Zowe CLI 插件的更多详细信息,请参见后面标题为 “Zowe CLI 和插件的安装” 的部分。

Interactive Help

要开始使用,您可以简单地打开终端并输入 zowe。这将显示顶层帮助信息。

Figure 1. Zowe CLI Help

在上面的示例中,安装了多个扩展。命令的结构是 zowe <group> <action> <object>,然后是特定于该命令的各种参数和选项。例如,有效的命令是 zowe files list data-set "HLQ.*"。此命令将列出与模式 “HLQ.*” 匹配的数据集。您可以在任何命令后附加 -h 以获取更多信息。经常参考帮助文档可能会很困难和耗时,所以如果您的环境可以访问Web浏览器,只需在任何命令后附加 --help-web--hw 来启动交互式Web帮助。

Figure 2. Zowe CLI Web Help

Don’t have the CLI installed yet? You can also check out a copy of the web help for the core Zowe CLI and Zowe plug-ins here.

Zowe Profiles

Zowe客户端技术,比如Zowe CLI和Zowe Explorer VS Code扩展,会将连接信息存储在通常称为配置文件的文件中。这提供了便利,因为在创建服务的配置文件后,用户就不必不断地提供这些信息。为了安全地存储凭据,还有一个名为“安全凭据存储”的插件,后面的章节“安装Zowe CLI和插件”中将更详细地讨论。安全凭据存储提供了一种将凭据存储在操作系统安全凭据库中的方法。

在创建配置文件时,您还可以指定prompt*关键字,以便在命令行上提示输入用户名和密码,从而使它们在命令行上被屏蔽。图3显示了创建zosmf配置文件的示例命令。这将消除在以后的命令中提供这些详细信息的需要。

图 3. Zowe CLI z/OSMF 配置文件创建命令

与 z/OS 数据集进行交互

Zowe CLI 提供了大量的 z/OS 数据集交互功能。请参阅以下图表,了解可用操作的详细信息以及示例列表命令。

图 4. Zowe CLI zos-files 操作

图 4. Zowe CLI zos-files 操作

图 5. 示例 Zowe CLI zos-files list ds 命令

图 5. 示例 Zowe CLI zos-files list ds 命令

与 z/OS 作业进行交互

Zowe CLI 提供了大量的 z/OS 作业交互功能。请参阅以下图表,了解可用操作的详细信息以及示例作业提交命令。

图 6. Zowe CLI zos-jobs 操作

图 6. Zowe CLI zos-jobs 操作

图 7. 示例 Zowe CLI zos-jobs submit ds 命令

图 7. 示例 Zowe CLI zos-jobs submit ds 命令

自动化使用Zowe CLI

运行命令是学习Zowe CLI功能的绝佳方式。然而,为常见重复任务创建自定义自动化并利用有价值的开发工具是其中的重要价值所在。对于COBOL开发,花费大量时间来审查编译器输出和测试程序是很常见的。这些重复性任务非常适合自动化。

自动作业提交

让我们来研究如何自动提交作业并验证返回码是否为0。当然,我们也可以解析输出队列输出以查找感兴趣的特定消息,但我们现在将保持简单。对于此示例,我们将利用Node.js开发一个新的自动化套件。首先,我将创建一个package.json文件,以便其他人可以轻松管理和安装项目。它将包含我的项目的依赖项列表,以及我将开发的自动化任务。创建package.json文件的快速方法是运行npm init并回答提示。创建后,我将添加一个submitJob任务。您可以在此处添加任何您想要的自动化。我的最终package.json如下图所示。您可以在这里了解更多关于package.json文件的信息。

图 8. 示例 package.json

然后,我将创建一个 config.json 文件来存储我可能希望为我的项目更改的所有变量。在这种情况下,我们将设置要提交的作业以及该作业的最大允许返回代码。

示例 config.json

图 9. 示例 config.json

接下来,我们将编写自动化脚本。Zowe CLI 是为脚本编写而设计的,并且可以以 JSON 格式输出响应,可以轻松解析。

示例 Zowe CLI 响应格式 JSON 输出

图 10. 示例 Zowe CLI 响应格式 JSON 输出

现在,不再需要手动执行此命令并查看返回代码是否小于或等于 4,我们希望自动化执行它。请查看下面的 Node.js 脚本示例。

用于提交作业并验证输出是否小于或等于最大允许 RC 的示例代码

图 11. 用于提交作业并验证输出是否小于或等于最大允许 RC 的示例代码

我不得不投入精力来编写这个自动化脚本,但对于将来的作业提交,我只需运行 npm run submitJob。像 VS Code 这样的集成开发环境可以可视化这些任务,使我经常重复的任务变得像点击按钮一样容易:)。这个作业可以编译、链接和/或运行 COBOL 程序。

npm 脚本按钮点击和运行的可视化

图 12. npm 脚本按钮点击和运行的可视化

有关自动化编译、部署到测试环境以及测试 COBOL CICS 应用程序的更高级代码,请参阅此博客

另一个使用 Zowe CLI 自动化任务的好例子是当您想要将其他编程语言集成到 COBOL 开发中时。与 3.4.1 类似,您可以使用其他语言,比如 TypeScript,编写一个 COBOL 程序生成器,并使用 Zowe CLI 创建一个“一键式”流程,用于创建您的程序。下面的图表示了这个“一键式”自动化流程,其中执行了多个任务,如创建 COBOL 程序、将其上传到主机、编译它并运行 JCL 来测试它。

“一键式” COBOL 构建过程

图 13. “一键式” COBOL 构建过程

然后,您可以通过利用 CI/CD 流水线来升级此流程。什么是 CI/CD 流水线?这是一种自动化的方式,用于构建、测试和部署应用程序,您也可以对 COBOL 开发采用相同的方式。下面的图展示了我们之前执行的相同自动化任务的流水线。

“一键式” COBOL 构建过程的 CI/CD 流水线

图 14. “一键式” COBOL 构建过程的 CI/CD 流水线

要了解更多信息,请查看这里

其他示例

如果您正在寻找如何在 Zowe Explorer 和 Zowe CLI 中使用 Db2 存储过程的示例,请查看此博客

如果您对在开发中使用开源工具感兴趣,您可以查看此博客,其中讨论了如何在开发 COBOL 应用程序时使用 Zowe CLI 来利用静态代码分析工具。

有关如何利用 Zowe 技术的其他博客和文章,请访问https://medium.com/zowe

现代开源工具的世界

我们只是初步介绍了如何使用现代工具和编程语言进行主机开发,并将主机应用程序纳入企业 DevOps 流程。作为一个桥梁工具,Zowe CLI 允许使用庞大社区开发的各种工具进行主机开发。如果您是主机新手,希望这为您提供了一些熟悉感,使您能够过渡到这个领域。如果您是经验丰富的主机开发人员,希望您能抽出时间尝试一些可用的技术,看看它们是否能帮助您。

总结

作为用户和程序接口,命令行界面在将复杂的可重复过程简化为单个任务方面提供了重要价值。在像亚马逊 Web 服务等流行的云平台上开发时,通常使用 CLI。Zowe CLI 是用于主机的 CLI,已通过众多插件进行了扩展。Zowe CLI 充当桥梁工具,使您可以在处理主机应用程序时使用分布式开发工具。有大量资源和文章可用于使用 Zowe CLI 创建自定义自动化、构建 CI 流水线并将静态分析纳入 COBOL 开发流程中。分布式开源社区创建的开发工具现在可以有效用于主机开发。