COBOL考古(二)
使用 VSCode 与 Zowe Explorer扩展
Zowe Explorer 是一个用于 VS Code 的开源扩展,允许开发人员和系统管理员与 z/OS 主机进行交互。
- Zowe Explorer 简介
- 使用 Zowe Explorer
- Zowe Explorer 中的配置文件
- 安全凭据
- 创建新配置文件
- 编辑配置文件
- 删除配置文件
- 总结
Zowe Explorer 简介
Zowe Explorer 扩展改进了开发人员和系统管理员与 z/OS 主机进行交互的方式。使用 VS Code 处理数据集和 USS 文件比使用 3270 仿真器更加便捷。该扩展提供以下优势:
- 直接在 z/OS 主机上创建、修改、重命名、复制和上传数据集。
- 直接在 z/OS 主机上创建、修改、重命名和上传 USS 文件。
- 访问数据集、USS 文件和作业的流程更加简化。
- 与多个 z/OS 系统轻松互动。
要安装 Zowe Explorer 到 VS Code,请在 VS Code 内部的 “扩展市场” 中搜索 “Zowe Explorer” 并选择安装。要查看有关安装此扩展的更详细说明,请参阅 “安装 VSCode 和扩展”。
使用 Zowe Explorer
Zowe Explorer 允许您处理数据集、Unix 系统服务 (USS) 文件和作业。
Zowe Explorer 提供以下功能:
数据集
- 搜索符合所需过滤条件的数据集并查看其内容。
- 下载、编辑和上传现有 PDS 成员。
- 创建和删除数据集以及数据集成员。
- 与多个系统同时互动处理数据集。
- 重命名数据集。
- 复制数据集。
- 从选定的数据集成员提交 JCL。
USS 文件
- 同时查看多个 Unix 系统服务 (USS) 文件。
- 下载、编辑和上传现有 USS 文件。
- 创建和删除 USS 文件和目录。
- 与多个系统同时互动处理 USS 文件。
- 重命名 USS 文件。
作业
- 同时查看多个作业。
- 下载输出内容。
- 与多个系统同时互动处理作业。
有关 Zowe Explorer 和不同用例的更多信息,请访问 扩展市场。
Zowe Explorer 中的配置文件
配置文件在 Zowe Explorer 和主机之间充当联系点。配置文件包含您想要连接的 API 服务的 URL 和您的凭据。您在 Zowe Explorer 中所需的主要配置文件信息是 z/OSMF 连接。如果您已安装 Zowe Explorer,可以按照本节中的步骤连接到主机。
安全凭据
Zowe Explorer 具有内置的安全凭据存储。这使您可以加密存储在您的计算机中的凭据,从而保护您与主机的连接。
要启用此功能,请按照以下步骤操作:
- 单击底部左侧的 齿轮图标,然后选择 设置。
- 单击 用户设置 > 扩展 > Zowe Explorer 设置。
查找 Zowe Security: Credential Key 字段。
- 在文本框中键入 Zowe-Plugin。这将触发内置的安全凭据存储。
或者,要通过编辑 settings.json 启用此功能,请将鼠标悬停在齿轮图标上,然后单击 “将设置复制为 JSON”。
然后,您可以将其粘贴到 settings.json 中,并将值更新为 “Zowe Plugin”。
注意:如果您正在使用 Zowe CLI,并且已安装了 Secure-Credential-Store 插件,则激活它的步骤仍然相同。
创建新配置文件
按照以下步骤操作:
- 导航到右侧的 Zowe Explorer 树,查找 + 号。
单击 + 号。
将出现一个对话框,询问是否要 “创建与 z/OS 的新连接”。按 Enter 键或单击该选择。
- 在 “连接名称” 字段中输入配置文件名称。
- 输入您在注册 COBOL 课程时通过电子邮件收到的 URL 和端口。您需要的连接信息标题为 “VSCode 扩展的 IP 地址”。
- 输入您的用户名。这也包含在电子邮件中。
注意:如果您不希望将凭据保存在计算机上,可以将此字段留空。在开始使用 Zowe Explorer 时,您将被提示输入用户名。
- 输入您的密码。
注意:如果您不希望将凭据保存在计算机上,可以将此字段留空。在开始使用 Zowe Explorer 时,您将被提示输入密码。
- 如果要接受或拒绝自签名证书,请选择 True/False。在本课程中,请选择 false。
- 输入 API 中介层实例的基本路径。在本课程中,请将其留空并按 Enter 继续。
- 输入连接所使用的协议。在本课程中,请保留默认值 (“HTTPS”) 并按 Enter 继续。
- 输入用于下载和上传 z/OS 数据集和 USS 文件的编码。在本课程中,请将其留空并按 Enter 继续。
- 输入等待响应的最长时间。在本课程中,请将其留空并按 Enter 继续。
如果成功,您将收到以下信息提示:
编辑配置文件
Zowe Explorer v1.5.0 版本引入了配置文件编辑功能。这使您可以修改现有的配置文件信息并继续使用 Zowe Explorer。
请按照以下步骤操作:
- 将您的配置文件添加到任何 Zowe Explorer 树中。
- 右键单击要编辑的配置文件。
- 在下拉菜单中选择 更新配置文件。将打开一个对话框,显示配置文件中的当前信息,您可以根据需要进行编辑。
- 如果需要更改,请编辑 URL 信息,或者确认信息仍然正确。
- 编辑您的用户名。
注意:如果您不希望将凭据保存在计算机上,可以将此字段留空。在开始使用 Zowe Explorer 时,您将被提示输入用户名。
- 编辑您的密码。
注意:如果您不希望将凭据保存在计算机上,可以将此字段留空。在开始使用 Zowe Explorer 时,您将被提示输入密码。
- 编辑您的授权连接。
- 编辑您的 API 基本路径。
- 编辑连接协议。
- 编辑编码方式。
- 编辑响应的最长等待时间。
如果成功,将显示信息提示:
删除配置文件
Zowe Explorer v1.5.0 版本引入了删除配置文件的选项。这使您可以永久删除不需要的配置文件并清理文件。您可以使用命令面板或树来删除配置文件。
请按照以下步骤操作:
命令面板:
按 CTRL+SHIFT+P 或点击 查看 > 命令面板 以打开命令面板。
输入 “Zowe: Delete”。此命令允许您永久删除一个配置文件。
- 选择要删除的配置文件。
- 确认您要删除配置文件。
确认后,将显示以下消息:
Zowe Explorer 树:
- 右键单击配置文件,然后选择 删除配置文件。
- 确认您要删除配置文件。
- 确认后,将显示以下消息:
总结
在本节中,您已经了解了 Zowe Explorer 扩展的基本功能,以及如何创建和使用与 Zowe 兼容的 zosmf
配置文件。
VSCode with Z Open Editor扩展
在本章中,我们将解释如何使用VSCode的IBM Z Open Editor扩展,以及如何使用它可以帮助您在丰富功能的环境中开发COBOL源代码。
IBM Z Open Editor简介
- 什么是IBM Z Open Editor?
- 语言服务器协议的作用
- 在VS Code中安装IBM Z Open Editor
基本编辑
- 已知的文件扩展名
- 页边距
- 变量扩展
- 语法高亮
代码导航
- 大纲视图
- 面包屑视图
- 跳转到声明/引用
代码完成
- COBOL保留字完成
- 变量完成
- CICS、MQ、DB2 API完成
代码重构
- 重命名变量
- 处理错误
总结
介绍 IBM Z Open Editor
本节介绍 IBM Z Open Editor。
什么是 IBM Z Open Editor?
IBM Z Open Editor 是 Visual Studio Code(VSCode)的免费扩展,为 COBOL、PL/I 和 JCL 语言提供语言支持。除了提供这些语言支持之外,它还为调用 CICS、MQ、IMS 和 DB2 API 的应用程序提供内容协助。源代码甚至不需要存储在 z/OS 上,它可以存储在源代码仓库中、本地文件中或 z/OS 上。尽管本课程侧重于 COBOL 作为源语言,但我们将讨论的许多功能也适用于 PL/I 和 JCL。
语言服务器协议的作用
集成开发环境始终希望为所有支持的编程语言提供丰富的平台,但编程语言的不断增多以及新编辑器迅速进入市场使跟上步伐变得困难。每个编辑器都需要为其希望支持的每种语言提供特定于编辑器的插件,因此对某种语言的支持会因不同编辑器而异。
Microsoft 设计了语言服务器协议(LSP)作为描述应如何为特定语言实现自动完成等功能的通用规范。拥有实施了 LSP 服务器的语言因此可以在支持 LSP 的任何编辑器内使用。许多公司和开源社区合作提供了各种不同语言的 LSP 服务器。
语言服务器协议定义了语言服务器必须实施的六个广泛功能,以使其符合 LSP。这些功能包括代码完成、悬停、跳转到定义、工作区符号、查找引用和诊断。IBM Z Open Editor 为 z/OS 的 Enterprise COBOL 和 Enterprise PL/I 语言提供了符合 LSP 的语言服务器。除了符合规范外,它们还提供了我们将在后面讨论的其他功能。
注意: 可以在 https://langserver.org
上找到有关语言服务器协议实现的更多信息。
安装 IBM Z Open Editor for VS Code
IBM Z Open Editor 可以通过在 VSCode 中搜索扩展市场内的 “IBM Z Open Editor” 并选择安装来安装到 VS Code 中。安装后,将启用默认编辑器,以提供丰富的 COBOL、PL/I 和 JCL 编辑体验。无需使用特定的编辑器来编辑这些语言。有关安装此扩展的更详细说明,请参阅 “安装 VSCode 和扩展”。
基本编辑
在本章的其余部分,我们将使用 CBL0001 示例程序来演示在 VSCode 中编辑 COBOL 可以有多丰富的体验。因此,让我们启动 VSCode,安装 IBM Z Open Editor(如果尚未安装),打开 CBL0001,并开始工作。
已知文件扩展名
为了让 VSCode 使用 IBM Z Open Editor 的功能,它需要知道我们正在编辑的文件是 COBOL 文件。VSCode 通过将要打开的文件的位置和名称与已知扩展名列表进行比较,以将文件映射到已知语言。对于 COBOL,使用以下关联:
*.COBOL*
*.CBL*
*.COB*
*.COBCOPY*
*.COPYBOOK*
*.COPY*
这些扩展名适用于本地文件和主机上的分区数据集或 PDS,为了简单起见,您可以将其视为文件夹。因此,名为:
1 |
|
或本地文件系统上的文件名为:
1 |
|
将被假定为 COBOL 代码。此信息存储在全局 VSCode settings.json 文件中,可通过 VSCode 首选项访问。这允许用户根据特定站点命名约定定制 VSCode 的已知扩展名。
边距
在编辑 COBOL 源代码时,您会注意到 VSCode 已经在文件中插入了五条垂直线。这些线将每行代码分割成保留给序列号、注释/续行字符、区域 A 和区域 B 的区域。在没有这种基本辅助的情况下编码时,我无法回忆起我因为在错误的列中开始编码而导致编译错误的次数。这对于新的 COBOL 程序员来说是一个非常有用的辅助。有关 COBOL 语法的更多信息,特别是关于列的内容,将在稍后讨论。
变量扩展
在浏览 CBL0001 时,键入 CTRL + G
以跳转到特定的代码行。将打开一个小对话框,询问您要跳转到哪一行,键入 87
,然后按 Enter 键。VSCode 将突出显示该行代码并直接导航到它,如图 1 所示。
图 1. 导航到特定的代码行
如果将鼠标悬停在 ‘ACCT-NO-O’ 字段上,将显示一个弹出窗口,显示该变量的声明,如图 2 所示。
图 2. 查看变量声明
由于该字段是一个嵌套在 01 级变量中的 05 级变量,所以弹出窗口显示该字段的声明为一个八字节的图片变量,父结构的名称以及所在的文件定义。如果在悬停在字段上时按住 CMD/Ctrl 键,则弹出窗口还将包含定义变量的代码行以及后面的三行代码。这些功能在分析现有代码时非常有帮助。
语法高亮
您正在编辑的 COBOL 代码也将进行语法高亮,以帮助您理解 COBOL 语言的不同元素。根据您在 VSCode 中选择的颜色主题,注释、COBOL 保留字、文字值和变量将以不同的颜色显示,使您可以在将代码提交到构建之前及早发现明显的语法问题。
代码导航
尽管我们在本节中使用的代码示例相对较小,但您可能编写的代码可能有数百或数千行。在编辑 COBOL 时,能够理解源代码的一般结构并能够在其中导航而不会迷失方向是一个重要的优势。幸运的是,有一些出色的功能可以帮助您,接下来我们将讨论这些功能。
大纲视图
在 VSCode 的资源管理器侧边栏中,有一个大纲视图,每当您编辑 COBOL 文件时,它都会被填充。此视图包含代码中的每个分区、数据结构和段落的可折叠查看。这使您可以轻松查看源代码的结构。单击特定段落、分区或数据元素将同时移动编辑器以显示代码的该部分并突出显示,如图 3 所示。这使得跳转到代码的特定部分变得非常容易。
图 3. VSCode 中的大纲视图
面包屑视图
类似地,编辑器顶部的面包屑视图可以显示当前代码行在 COBOL 源代码结构中的位置。当您在编辑器中导航源代码时,面包屑路径将自动更新以反映您在程序结构中的位置,并为您提供了一种移动到代码的其他部分的机制。同样,如果在 VSCode 中打开 CBL0001 并跳转到第 50 行,此行是 DATA-DIVISION 的 FILE-SECTION 中 ACCT-FIELDS 结构内字段 USA-STATE 的声明。在编辑器顶部,面包屑路径将显示图 4 中显示的信息。
图 4. VSCode 中的面包屑路径
单击面包屑路径中的任何项将在编辑器中突出显示该元素的代码,迅速显示该元素在代码中的位置。它还会显示代码的弹出窗口视图,如图 5 所示,类似于先前讨论的大纲视图。
图 5. 通过面包屑选择查看代码的弹出视图
Breadcrumb selection 是一个用于导航代码的功能,通常在代码编辑器中的顶部显示一个路径,显示了当前文件或代码的层次结构。这个路径通常被称为 “breadcrumb 路径”,因为它类似于面包屑,可以帮助你了解当前代码的位置和层次结构。
在上下文中,breadcrumb selection 是指通过点击 breadcrumb 路径中的不同元素来选择不同部分的代码。这允许你快速导航和跳转到代码的不同部分,而无需手动滚动或搜索整个文件。
例如,在 Visual Studio Code 中,breadcrumb 路径通常显示在编辑器的顶部,显示了当前文件的目录结构和位置。你可以点击 breadcrumb 路径中的不同部分,比如文件夹或文件名,以快速导航到该部分的代码。这使得在大型代码文件中轻松定位和编辑代码变得更加容易。
总之,breadcrumb selection 是一种在代码编辑器中使用 breadcrumb 路径进行代码导航的功能,有助于提高代码编辑的效率和可读性。
跳转到声明/引用
在浏览代码时,您会遇到 COBOL PERFORM 语句或变量引用。通常,您需要导航到该段落或变量的定义以跟踪代码的执行。在 CBL0001 的第 64 行,我们看到一组 PERFORM 语句。将光标放在第 65 行的名称 READ-RECORD 内,右键单击并选择转到定义。编辑器然后导航到第 82 行的 READ-RECORD 段落。而不是右键单击,可以使用 F12 键达到相同的功能。
转到引用执行的是此操作的反向操作,并允许您从段落或变量的定义导航到应用程序中引用该段落或变量的所有位置。为了演示这一点,导航到 CBL0001 的第 82 行,这又是 READ-RECORD 段落的声明。要查看调用此段落的所有位置,右键单击并选择转到引用,或者使用键组合 SHIFT+F12。这将召唤一个新的弹出对话框,显示代码中对此段落的所有引用,如图 6 所示。
注意: 如果 SHIFT+F12 在您的计算机上无效,您可能需要使用键组合 Fn+F12 代替。
图 6. 在 VSCode 中查找段落/变量引用
代码自动补全
代码自动补全在大多数集成开发环境(IDE)中并不是一个新概念。例如,Eclipse 编辑器长期以来一直为 Java API 提供自动补全功能。在编写代码时,可以使用相同的组合键CTRL+SPACE来触发此自动补全功能,它可以帮助你了解 COBOL 语法和 CICS、IMS API 调用。
COBOL 保留字自动补全
在输入 COBOL 保留字时,你可以按下CTRL+SPACE
组合键,IBM Z Open Editor 将在弹出窗口中列出可能的 COBOL 保留字列表,这些保留字可能是你正在尝试使用的。使用光标键或鼠标可以选择正确的推荐关键字,然后按 Enter 键选择它,剩下的保留字将会为你自动完成。
变量自动补全
同样的技巧也适用于变量的自动补全。当你引用存在于不同结构中的变量时,自动补全可能特别有用。例如,在 WRITE-RECORD 段落中创建一行新代码。在新行中,输入代码 MOVE ACCT-BA
,然后按下CTRL+SPACE来调用代码自动补全。你应该会看到类似于下图所示的弹出窗口。
图 7. 在 VSCode 中的自动补全
你可以看到不仅提示了变量 ACCT-BALANCE 作为潜在的候选项,还提供了 ACCT_BALANCE IN ACCT-FIELDS。
CICS、MQ、DB2 API 自动补全
变量的自动补全也扩展到 CICS 和 DB2 API,即 EXEC CICS 和 EXEC SQL 语句。尽管本文的重点不是 DB2 和 CICS 的 COBOL 编程,但请注意,如果你发现自己正在为其中任何一个 API 编程,这个功能是可用的。
重构代码
在处理源代码时,往往不仅仅涉及到初始创建,程序在其生命周期内还会发生变化和重构,我们通常称这种工作为重构。本节探讨了变量重命名和错误处理。
变量重命名
在维护现有代码时,你可能需要重构变量名称或段落名称。手动执行此操作可能会很痛苦,因为你可能需要更新原始声明以及源代码中的所有引用。幸运的是,有一个功能可以帮助你完成这个任务,让我们通过一个示例来了解一下。回到 CBL0001 中,按CTRL+G以调出跳转到行的功能,然后转到第 40 行。这是变量 ACCT-NO 的声明。右键点击该变量,然后选择 “查找所有引用“。从中我们可以看到,除了声明之外,该变量还在第 88 行引用。因此,如果我们重命名该变量,可能还需要更新这个引用。要执行重命名操作,请确保光标位于变量上,然后按SHIFT/Fn+F2。这将弹出一个小窗口,要求你提供一个新的变量名,如下图所示。输入 ACCT-NO-TEST
,然后按enter。
图 8. 变量重命名
你会注意到变量的声明和第 88 行的引用都已更新为新值。正如前面所述,相同的过程也适用于段落名称。例如,尝试将段落 READ-RECORD 的名称重构为 READ-NEW-RECORD。
处理错误
IBM Z Open Editor 插件还为本地源代码提供了一定程度的语法检查。虽然不像编译器那样彻底,但它是在提交代码进行编译之前快速识别代码中基本错误的一种方法。为了演示,让我们引入一个错误,然后看看编辑器如何显示它。首先,通过从编辑器菜单中选择查看,然后选择问题来打开问题视图。问题视图应该会在窗口底部打开,如图所示。
图 9. 问题视图
现在,我们需要在代码中引入一个错误。在第 87 行之后添加以下行:
1 |
|
请注意,此行不正确地标识了第二个不存在的变量。一旦输入该行,你会注意到无效的变量已被用红色下划线标记,以突出显示它为错误。此外,问题视图中出现了一个新的错误。点击错误会在编辑器中突出显示有问题的代码行,如图 10 所示,让你能够直接查看错误。
图 10. 在源代码中突出显示错误
现在你知道错误位于哪里,可以对其进行纠正。一旦错误被纠正,问题将从问题视图中消失。
总结
在本章中,你已经能够了解 Z Open Editor for VSCode 的一些编辑功能。这些功能使编辑 COBOL、PL/I 和 JCL 比市场上一些其他编辑器更加友好和容易。