本教程展示如何在 Micro Focus Enterprise Developer 中导入、编辑、编译和运行 BankDemo 示例应用程序,然后提交更改以触发 CI/CD 管道。
目录
先决条件
下载以下文件。
-
basic-infra.yaml
-
pipeline.yaml
-
m2-code-sync-function.zip
-
config_git.yml
-
BANKDEMO-source.zip
-
BANKDEMO-exercise.zip
每个文件的用途如下:
basic-infra.yaml
-
该 AWS CloudFormation 模板创建 CI/CD 管道所需的基本基础设施:VPC、Amazon S3 存储桶等。
pipeline.yaml
-
Lambda 函数使用此 AWS CloudFormation 模板来启动管道堆栈。请确保此模板位于可公开访问的 Amazon S3 存储桶中。将指向此存储桶的链接添加为
basic-infra.yaml
模板中PipelineTemplateURL
参数的默认值。 m2-code-sync-function.zip
-
此 Lambda 函数创建 CodeCommit 存储库和基于
config_git.yaml
的目录结构,并使用pipeline.yaml
启动管道堆栈。确保此 zip 文件位于所有支持 AWS Mainframe Modernization 的 AWS 区域中可公开访问的 Amazon S3 存储桶中。我们建议您将文件存储在一个 AWS 区域的存储桶中,然后将其复制到所有 AWS 区域的存储桶中。使用以下存储桶命名约定:带有标识特定 AWS 区域的后缀(例如m2-cicd-deployment-source-eu-west-1
),添加前缀m2-cicd-deployment-source
作为参数DeploymentSourceBucket
的默认值,并使用 AWS CloudFormation 替换函数!Sub {DeploymentSourceBucket}-${AWS::Region}
形成完成的存储桶名称,同时针对资源SourceSyncLambdaFunction
引用basic-infra.yaml
模板中的存储桶。 config_git.yml
-
CodeCommit 目录结构定义。有关更多信息,请参阅 示例 YAML 触发器文件 config_git.yml。
BANKDEMO-source.zip
.-
从 CodeCommit 存储库中创建的 BankDemo 源代码和配置文件。
BANKDEMO-exercise.zip
.-
从 CodeCommit 存储库中创建的用于教程练习的 BankDemo 源。
创建 CI/CD 管道基本基础设施
通过 AWS CloudFormation 控制台,使用 AWS CloudFormation 模板 basic-infra.yaml
创建 CI/CD 管道基本基础设施堆栈。此堆栈创建可用于上传应用程序代码和数据的 Amazon S3 存储桶,以及一个用于创建其他必要资源(例如 AWS CodeCommit 存储库和 AWS CodePipeline 管道)的支持 AWS Lambda 函数。
注意
要启动此堆栈,您需要管理 IAM、Amazon S3、Lambda 和 AWS CloudFormation 的权限以及使用 AWS KMS 的权限。
-
登录到 AWS Management Console 并打开 AWS CloudFormation 控制台 https://console.aws.amazon.com/cloudformation
。 -
使用以下其中一个选项创建堆栈:
-
选择创建堆栈。如果您当前有正在运行的堆栈,这将是唯一选项。
-
在堆栈页面上,选择 创建堆栈。仅当您没有运行堆栈时,才可以看到此选项。
-
-
在指定模板页面上:
-
在准备模板中,选择模板已就绪。
-
在指定模板中,选择 Amazon S3 URL 作为模板来源,并根据您的 AWS 区域,输入以下 URL 之一。
-
https://m2-us-east-1.s3.us-east-1.amazonaws.com/cicd/mf/basic-infra.yaml
-
https://m2-eu-central-1.s3.eu-central-1.amazonaws.com/cicd/mf/basic-infra.yaml
-
-
接受您的设置,选择下一步。
随后会打开创建堆栈页面。
进行以下更改:
-
为堆栈名称和网络配置参数提供适当的值。
-
部署配置中的大多数参数都已适当预先填充,因此您无需对其进行修改。根据您的 AWS 区域,将管道 AWS CloudFormation 模板更改为以下 Amazon S3 URL 之一。
-
https://m2-us-east-1.s3.amazonaws.com/cicd/mf/pipeline.yaml
-
https://m2-eu-central-1.s3.eu-central-1.amazonaws.com/cicd/mf/pipeline.yaml
-
-
选择下一步。
注意
除非您自己修改了 AWS CloudFormation 模板,否则,请勿更改默认参数值。
-
-
在配置堆栈选项中,选择下一步。
-
在功能中,选择我确认 AWS CloudFormation 可能会创建 IAM 资源,以便允许 AWS CloudFormation 代表您创建 IAM 角色。选择创建堆栈。
注意
该堆栈配置需要花费 3 到 5 分钟。
-
成功创建堆栈后,导航至新配置堆栈的输出部分。在此,您可以找到需要上传大型机代码和相关文件的 Amazon S3 存储桶。
创建 AWS CodeCommit 存储库和 CI/CD 管道
在此步骤中,创建一个 CodeCommit 存储库,并通过调用 Lambda 函数(调用 AWS CloudFormation 来创建管道堆栈)来配置 CI/CD 管道堆栈。
-
将 BankDemo 示例应用程序
下载到本地机器中。 -
将
bankdemo.zip
从本地机器上传到创建 CI/CD 管道基本基础设施中创建的 Amazon S3 存储桶。 -
下载
config_git.yml
。 -
按如下方式修改
config_git.yml
(如有必要):-
添加您自己的目标存储库名称、目标分支和提交消息。
repository-config: target-repository: bankdemo-repo target-branch: main commit-message: Initial commit for bankdemo-repo main branch
-
输入您用于接收通知的电子邮件地址。
pipeline-config: # Send pipeline failure notifications to these email addresses alert-notifications: - myname@mycompany.com # Send notifications for manual approval before production deployment to these email addresses approval-notifications: - myname@mycompany.com
-
-
将包含 CodeCommit 存储库文件夹结构定义的
config_git.yml
文件上传到创建 CI/CD 管道基本基础设施中创建的 Amazon S3 存储桶。这将调用 Lambda 函数,该函数将自动配置存储库和管道。这将创建一个 CodeCommit 存储库,该存储库使用
config_git.yml
文件中定义的target-repository
中提供的名称,例如bankdemo-repo
。Lambda 函数还将通过 AWS CloudFormation 创建 CI/CD 管道堆栈。AWS CloudFormation 堆栈使用提供的
target-repository
名称作为前缀,后跟一个随机字符串(例如bankdemo-repo-
)。您可以在 AWS Management Console 中找到 CodeCommit 存储库 URL 和用于访问已创建管道的 URL。01234567
-
CodeCommit 存储库创建完成时,将立即触发 CI/CD 管道来执行完整的 CI/CD。
-
推送文件后,将自动触发管道,该管道将构建、分阶段部署、运行一些测试并等待手动批准,然后再将其部署到生产环境中。
示例 YAML 触发器文件 config_git.yml
repository-config:
target-repository: bankdemo-repo
target-branch: main
commit-message: Initial commit for bankdemo-repo main branch
directory-structure:
- '/':
files:
- build.xml
- '*.yaml'
- '*.yml'
- '*.xml'
- 'LICENSE.txt'
readme: |
# Root Folder
- 'build.xml' : Build configuration for the application
- tests:
files:
- '*.py'
readme: |
# Test Folder
- '*.py' : Test scripts
- config:
files:
- 'BANKDEMO.csd'
- 'BANKDEMO.json'
- 'BANKDEMO_ED.json'
- 'dfhdrdat'
- 'ESPGSQLXA.dll'
- 'ESPGSQLXA64.so'
- 'ESPGSQLXA64_S.so'
- 'EXTFH.cfg'
- 'm2-2021-04-28.normal.json'
- 'MFDBFH.cfg'
- 'application-definition-template-config.json'
readme: |
# Config Folder
This folder contains the application configuration files.
- 'BANKDEMO.csd' : CICS Resource definitions export file
- 'BANKDEMO.json' : Enterprise Server configuration
- 'BANKDEMO_ED.json' : Enterprise Server configuration for ED
- 'dfhdrdat' : CICS resource definition file
- 'ESPGSQLXA.dll' : XA switch module Windows
- 'ESPGSQLXA64.so' : XA switch module Linux
- 'ESPGSQLXA64_S.so' : XA switch module Linux
- 'EXTFH.cfg' : Micro Focus File Handler configuration
- 'm2-2021-04-28.normal.json' : M2 request document
- 'MFDBFH.cfg' : Micro Focus Database File Handler
- 'application-definition-template-config.json' : Application definition for M2
- source:
subdirs:
- .settings:
files:
- '.bms.mfdirset'
- '.cbl.mfdirset'
- copybook:
files:
- '*.cpy'
- '*.inc'
readme: |
# Copy folder
This folder contains the source for COBOL copy books, PLI includes, ...
- .cpy COBOL copybooks
- .inc PLI includes
# - ctlcards:
# files:
# - '*.ctl'
# - 'KBNKSRT1.txt'
# readme: |
# # Control Card folder
# This folder contains the source for Batch Control Cards
# - .ctl Control Cards
- ims:
files:
- '*.dbd'
- '*.psb'
readme: |
# ims folder
This folder contains the IMS DB source files with the extensions
- .dbd for IMS DBD source
- .psb for IMS PSB source
- jcl:
files:
- '*.jcl'
- '*.ctl'
- 'KBNKSRT1.txt'
- '*.prc'
readme: |
# jcl folder
This folder contains the JCL source files with the extensions
- .jcl
# - proclib:
# files:
# - '*.prc'
# readme: |
# # proclib folder
# This folder contains the JCL procedures referenced via PROCLIB statements in the JCL with extensions
# - .prc
- rdbms:
files:
- '*.sql'
readme: |
# rdbms folder
This folder contains any DB2 related source files with extensions
- .sql for any kind of SQL source
- screens:
files:
- '*.bms'
- '*.mfs'
readme: |
# screens folder
This folder contains the screens source files with the extensions
- .bms for CICS BMS screens
- .mfs for IMS MFS screens
subdirs:
- .settings:
files:
- '*.bms.mfdirset'
- cobol:
files:
- '*.cbl'
- '*.pli'
readme: |
# source folder
This folder contains the program source files with the extensions
- .cbl for COBOL source
- .pli for PLI source
subdirs:
- .settings:
files:
- '*.cbl.mfdirset'
- tests:
files:
- 'test_script.py'
readme: |
# tests Folder
This folder contains the application test scripts
pipeline-config:
alert-notifications:
- myname@mycompany.com
approval-notifications:
- myname@mycompany.com
创建 Enterprise Developer AppStream 2.0
要在 AppStream 2.0 上设置 Micro Focus Enterprise Developer,请参阅教程:在 AppStream 2.0 上设置 Micro Focus Enterprise Developer。
要将 CodeCommit 存储库连接到 Enterprise Developer,请使用示例 YAML 触发器文件 config_git.yml中 target-repository
指定的名称。
Enterprise Developer 设置和测试
主题
连接到您在创建 Enterprise Developer AppStream 2.0 中创建的 Enterprise Developer AppStream 2.0 实例。
-
从 Windows“开始”中,启动 Enterprise Developer。选择“Micro Focus Enterprise Developer”,然后选择“Enterprise Developer for Eclipse”。如果您是初次启动,则可能需要一些时间。
-
在 Eclipse 启动器中的工作区中,输入
C:\Users\<username>\workspace
然后选择启动。注意
请确保在重新连接到 AppStream 2.0 实例后选择相同的位置。工作区选择不是永久性的。
-
在欢迎中,选择打开 COBOL 透视图。这仅在新工作区首次使用时显示。
在 Enterprise Developer 中克隆 BankDemo CodeCommit 存储库
-
选择窗口 / 透视图 / 打开透视图 / 其他... / Git。
-
选择克隆 Git 存储库。
-
在克隆 Git 存储库中,输入以下信息:
-
在位置 URI 中,输入 CodeCommit 存储库的 HTTPS URL。
注意
在 AWS Management Console 中复制 CodeCommit 存储库的克隆 URL HTTPS 并将其粘贴到此处。URI 将分为主机和存储库路径。
-
在身份验证用户和密码中,输入用户 CodeCommit 存储库凭证,然后在安全存储中选择存储。
-
-
在分支选择中,选择主分支,然后选择下一步。
-
在本地目标的目录中,输入
C:\Users\<username>\workspace
并选择完成。Git 存储库视图中显示
BANKDEMO [main]
时,即表示克隆过程完成。
创建 BankDemo 大型机 COBOL 项目并构建应用程序
-
更改为 COBOL 透视图。
-
在项目 中,禁用自动构建。
-
在文件中,选择新建,然后选择大型机 COBOL 项目。
-
在新建大型机 COBOL 项目中,输入以下信息:
-
在项目名称中,输入
BankDemo
。 -
选择 Micro Focus 模板 [64 位]。
-
选择完成。
-
-
在 COBOL 资源管理器 中,展开新的 BankDemo 项目。
注意
方括号中的
[BANKDEMO main]
表示该项目已连接到本地 BankDemo CodeCommit 存储库。 -
如果树视图未显示 COBOL 程序、Copybook、BMS 源和 JCL 文件的条目,请从 BankDemo 项目上下文菜单中选择刷新。
-
从 BankDemo 上下文菜单中选择属性 / Micro Focus / 项目设置 / COBOL:
-
选择字符集 – ASCII。
-
选择应用,然后选择确定。
-
-
如果 BMS 和 COBOL 源的构建没有立即启动,在项目菜单中检查是否已启用自动构建选项。
构建输出将显示在控制台视图中,应在几分钟后完成,并显示消息
BUILD SUCCESSFUL
和Build finished with no errors
。BankDemo 应用程序现在应该已经编译完毕,可以进行本地执行。
创建用于测试的本地 BankDemo CICS 和批处理环境
-
在 COBOL 资源管理器中,展开
BANKDEMO / config
。 -
在编辑器中,打开
BANKDEMO_ED.json
。 -
找到字符串
ED_Home=
并更改路径以指向 Enterprise Developer 项目,如下所示:D:\\<username>\\workspace\\BANKDEMO
。请注意在路径定义中使用双斜杠 (\\
)。 -
保存并关闭文件。
-
选择服务器资源管理器。
-
从默认上下文菜单中,选择打开管理页面。随后,Micro Focus Enterprise Server 管理页面在默认浏览器中打开。
-
(仅适用于 AppStream 2.0 会话)进行以下更改,以便可以保存本地 Enterprise Serve 区域以供本地测试使用:
-
在目录服务器 / 默认中,选择属性 / 配置。
-
将存储库位置替换为
D:\<username>\My Files\Home Folder\MFDS
。
注意
每次与 AppStream 2.0 实例建立新连接后,都必须完成步骤 5 – 8。
-
-
在目录服务器 / 默认中,选择导入,然后完成以下步骤:
-
在步骤 1:导入类型中,选择 JSON,然后选择下一步。
-
在步骤 2:上传中,单击以在蓝色方块中上传文件。
-
在选择要上传的文件中,输入:
-
文件名:
D:\<username>\workspace\BANKDEMO\config\BANKDEMO_ED.json
。 -
选择打开。
-
-
选择下一步。
-
在步骤 3 中:区域中,取消选中从端点清除端口。
-
选择下一步。
-
在步骤 4:导入中,选择导入。
-
选择完成。
此时,列表中将显示一个新的服务器名称
BANKDEMO
。 -
从 Enterprise Developer 启动 BANKDEMO 服务器
-
选择Enterprise Developer。
-
在服务器资源管理器中,选择默认,然后从上下文菜单中选择刷新。
此时,服务器列表中也应该显示 BANKDEMO。
-
选择 BANKDEMO。
-
从上下文菜单中,选择与项目关联,然后选择 BANKDEMO。
-
从上下文菜单中,选择启动。
控制台视图中应显示服务器启动的日志。
如果显示消息
BANKDEMO CASSI5030I PLTPI Phase 2 List(PI) Processing Completed
,则服务器已准备好用于测试 CICS BANKDEMO 应用程序。
启动 Rumba 3270 终端
-
从 Windows“开始”中,启动 Micro Focus Rumba+ Desktop / Rumba+ Desktop。
-
在欢迎中,选择创建新会话 / 大型机显示。
-
在大型机显示中,选择连接 / 配置。
-
在会话配置中,选择连接 / TN3270。
-
在主机名 / 地址中,选择插入并输入 IP 地址
127.0.0.1
。 -
在 Telnet 端口中,输入端口
6000
。 -
选择 应用。
-
选择连接。
CICS 欢迎屏幕显示的屏幕带有第 1 行消息:
This is the Micro Focus MFE CICS region BANKDEMO
。 -
按 Ctrl+Shift+Z 可清除屏幕。
运行 BankDemo 事务
-
在空白屏幕中,输入
BANK
。 -
在屏幕 BANK10 中,在用户 ID...:输入字段中,输入
guest
并按 Enter。 -
在屏幕 BANK20 中,在计算贷款成本之前的输入字段中,输入
/
(正斜杠),然后按 Enter。 -
在屏幕 BANK70 中:
-
在希望借贷的金额...:中,输入
10000
。 -
在利率为...:中,输入
5.0
。 -
在借期(月)为...:中,输入
10
。 -
按 Enter。
此时应显示以下结果:
Resulting monthly payment.............: $1023.06
Enterprise Developer 中的 BANKDEMO 应用程序设置到此完成。
-
从 Enterprise Developer 停止 BANKDEMO 服务器
-
在服务器资源管理器中,选择默认,然后从上下文菜单中选择刷新。
-
选择 BANKDEMO。
-
从上下文菜单中,选择停止。
控制台视图中应显示服务器停止的日志。
如果显示消息
Server: BANKDEMO stopped successfully
,即表示服务器已成功关闭。
练习 1:在 BANKDEMO 应用程序中增强贷款计算
主题
在此场景中,逐步完成对代码进行示例更改、部署和测试的过程。
贷款部门希望在贷款计算屏幕 BANK70 上添加一个新字段来显示贷款总额。这需要更改 BMS 屏幕 MBANK70.CBL,添加一个新字段和相应的屏幕处理程序 SBANK70P.CBL 以及相关的copybook。此外,BBANK70P.CBL 中的贷款计算例程需要使用额外的公式进行扩展。
要完成本练习,请确保满足以下先决条件。
-
将 BANKDEMO-exercise.zip
下载到 D:\PhotonUser\My Files\Home Folder
。 -
将 zip 文件解压缩到
D:\PhotonUser\My Files\Home Folder\BANKDEMO-exercise
。 -
创建文件夹
D:\PhotonUser\My Files\Home Folder\AnalysisRules
。 -
将规则文件
Loan+Calculation+Update.General-1.xml
从BANKDEMO-exercise
文件夹复制到D:\PhotonUser\My Files\Home Folder\AnalysisRules
。
注意
在本练习中,*.CBL 和 *.CPY 中的代码更改在 1 – 6 列用 EXER01 标记。
向 Enterprise Developer 代码分析添加贷款分析规则
可从 Enterprise Analyzer 导出 Micro Focus Enterprise Analyzer 中定义的分析规则,并将其导入到 Enterprise Developer 中,以便在 Enterprise Developer 项目中跨源运行相同的分析规则。
-
打开
Window/Preferences/Micro Focus/COBOL/Code Analysis/Rules
。 -
选择编辑... 并输入文件夹名称
D:\PhotonUser\My Files\Home Folder\AnalysisRules
(其中包含规则文件Loan+Calculation+Update.General-1.xml
)。 -
选择完成。
-
选择应用,然后选择关闭。
-
从 BANKDEMO 项目上下文菜单中,选择代码分析。
您会看到贷款计算更新条目。
步骤 1:执行贷款计算代码分析
借助新的分析规则,我们可以在表达式、语句和变量中识别出与搜索模式 *PAYMENT*
、*LOAN*
和 *RATE*
相匹配的 COBOL 程序和代码行。这将有助于浏览代码并确定所需的代码更改。
-
从 BANKDEMO 项目上下文菜单中,选择代码分析/贷款计算更新。
该操作将运行搜索规则,并在名为代码分析的新选项卡中列出结果。当右下角的绿色进度条消失时,即表示分析运行完成。
代码分析选项卡应显示
BBANK20P.CBL
、BBANK70P.CBL
和SBANK70P.CBL
的扩展列表,每个列表都列出了与搜索模式匹配的语句、表达式和变量。从
BBANK20P.CBL
的结果来看,只移动了与搜索模式匹配的文字。因此,可以忽略此程序。 -
在选项卡菜单栏中,选择 - 图标,可全部折叠。
-
双击,按任意顺序展开
SBANK70P.CBL
并选择任意行,查看如何打开源代码并突出显示源代码中选定的行。您还将看到,所有已识别的源行都已标记。
步骤 2:修改 CICS BMS 映射和 COBOL 程序并进行测试
首先,我们更改 BMS 映射 MBANK70.BMS
、屏幕处理程序 SBANK70P.CBL
和 copybook CBANKDAT.CPY
,以便显示新字段。为避免在本练习中进行不必要的编码,D:\PhotonUser\My
Files\Home Folder\BANKDEMO-exercise\Exercise01
文件夹中提供了修改后的源模块。通常,开发人员会使用代码分析结果来浏览和修改源代码。如果您有时间并想手动进行更改,请使用 *MBANK70.BMS 和 SBANK70P.CBL 中的手动更改(可选)* 中提供的信息进行手动更改。
要进行快速更改,请复制以下文件:
-
..\BANKDEMO-exercise\Exercis01\screens\MBANK70.BMS
到D:\PhotonUser\workspace\bankdemo\source\screens
。 -
.\BANKDEMO-exercise\Exercis01\cobol\SBANK70P.CBL
到D:\PhotonUser\workspace\bankdemo\source\cobol
。 -
..\BANKDEMO-exercise\Exercis01\copybook\CBANKDAT.CPY
到D:\PhotonUser\workspace\bankdemo\source\copybook
。 -
为确保受更改影响的所有程序都进行编译,请选择 项目/清理.../清理所有项目。
要手动更改 MBANK70.BMS
和 SBANK70P.CBL
,请完成以下步骤:
-
要手动更改 BMS
MBANK70.BMS
源,请在PAYMENT
字段后面添加:-
TXT09(具有与 TXT08 相同的属性,INITIAL 值为“贷款总额”)
-
TOTAL(与 PAYMENT 具有相同属性)
-
测试更改
要测试这些更改,请重复以下各节中的步骤:
-
此外,您此时还应该看到文本
Total Loan Amount.....................:
。
步骤 3:在 COBOL 程序中添加总金额计算
在第二步中,我们更改 BBANK70P.CBL
并添加贷款总额的计算。D:\PhotonUser\My Files\Home
Folder\BANKDEMO-exercise\Exercise01
文件夹中提供经过必要更改的可用源。如果您有时间并想手动进行更改,请使用 *BBANK70P.CBL 中的手动更改(可选)* 中提供的信息进行手动更改。
要进行快速更改,请复制以下文件:
-
..\BANKDEMO-exercise\Exercis01\source\cobol\BBANK70P.CBL
到D:\PhotonUser\workspace\bankdemo\source\cobol
。
要手动更改 BBANK70P.CBL
,请完成以下步骤:
-
使用代码分析结果来确定所需的更改。
测试更改
要测试这些更改,请重复以下各节中的步骤:
-
此外,您此时还应该看到文本
Total Loan Amount.....................: $10230.60
。
步骤 4:提交更改并运行 CI/CD 管道
将更改提交到中央 CodeCommit 存储库并触发 CI/CD 管道来构建、测试和部署更改。
-
从 BANKDEMO 项目的上下文菜单中,选择团队/提交。
-
在 Git 暂存选项卡中,输入以下提交消息:
Added Total Amount Calculation
。 -
选择提交并推送...。
-
打开 CodePipeline 控制台并查看管道执行状态。
注意
如果您在使用 Enterprise Developer 或团队功能“提交”或“推送”时遇到任何问题,请使用 Git Bash 命令行界面。
练习 2:在 BANKDEMO 应用程序中提取贷款计算
在本练习中,您将完成另一个示例变更请求。在此场景中,贷款部门希望将贷款计算例程作为独立的 Web 服务重复使用。该例程应保留在 COBOL 中,并且仍然可以从现有的 CICS COBOL 程序 BBANK70P.CBL
中调用。
步骤 1:将贷款计算例程重构为 COBOL 部分
首先,我们将贷款计算例程提取到 COBOL部分中。需要执行此步骤才能在下一步骤中将代码提取到独立的 COBOL 程序中。
-
在 COBOL 编辑器中打开
BBANK70P.CBL
。 -
在编辑器中,从上下文菜单中选择代码分析/贷款计算更新。这只会扫描当前来源中是否存在分析规则中定义的模式。
-
在代码分析选项卡的结果中,找到第一条算术语句
DIVIDE WS-LOAN-INTEREST BY 12
。 -
双击该语句可在编辑器中导航到源代码行。这是贷款计算例程的第一个语句。
-
标记贷款计算例程的以下代码块,以便将提取到某个部分。
DIVIDE WS-LOAN-INTEREST BY 12 GIVING WS-LOAN-INTEREST ROUNDED. COMPUTE WS-LOAN-MONTHLY-PAYMENT ROUNDED = ((WS-LOAN-INTEREST * ((1 + WS-LOAN-INTEREST) ** WS-LOAN-TERM)) / (((1 + WS-LOAN-INTEREST) * WS-LOAN-TERM) - 1 )) * WS-LOAN-PRINCIPAL. EXER01 COMPUTE WS-LOAN-TOTAL-PAYMENT = EXER01 (WS-LOAN-MONTHLY-PAYMENT * WS-LOAN-TERM).
-
从编辑器的上下文菜单中,选择重构/提取到部分...。
-
输入新部分名称:LOAN-CALCULATION。
-
选择“确定”。
标记的代码块现已提取到新的
LOAN-CALCULATION
部分,并且该代码块已替换为PERFROM LOAN-CALCULATION
语句。
测试更改
要测试这些更改,请重复以下各节中所述的步骤:
-
此外,您此时还应该看到文本
Total Loan Amount.....................: $10230.60
。 -
从 Enterprise Developer 停止 BANKDEMO 服务器
注意
如果要避免上述步骤将代码块提取到某个部分,则可以将步骤 1 中的已修改源从
..\BANKDEMO-exercise\Exercis02\Step1\cobol\BBANK70P.CBL
复制到D:\PhotonUser\workspace\bankdemo\source\cobol
。
步骤 2:将贷款计算例程提取到独立的 COBOL 程序中
在步骤 2 中,LOAN-CALCULATION
部分中的代码块将被提取到独立程序中,原始代码将替换为用于调用新子程序的代码。
-
在编辑器中打开
BBANK70P.CBL
,找到在步骤 1 中创建的新PERFORM LOAN-CALCULATION
语句。 -
将游标置于部分名称内。它将被标记为灰色。
-
从上下文菜单中,选择重构->提取部分/段落到程序...。
-
在提取部分/段落到程序中,输入新文件名:LOANCALC.CBL。
-
选择确定。
新的
LOANCALC.CBL
程序将在编辑器中打开。 -
向下滚动并查看正在为调用接口提取和生成的代码。
-
在编辑器中选择
BBANK70P.CBL
,然后转至LOAN-CALCULATION SECTION
。查看正在生成的用于调用新子程序LOANCALC.CBL
的代码。注意
CALL
语句正在使用DFHEIBLK
和DFHCOMMAREA
调用带 CICS 控制块的LOANCALC
。由于我们希望将新的LOANCALC.CBL
子程序作为非 CICS 程序调用,因此必须通过注释或删除从调用中移除DFHEIBLK
和DFHCOMMAREA
。
测试更改
要测试这些更改,请重复以下各节中所述的步骤:
-
此外,您此时还应该看到文本
Total Loan Amount.....................: $10230.60
。 -
从 Enterprise Developer 停止 BANKDEMO 服务器
注意
如果要避免上述步骤将代码块提取到某个部分,则可以将步骤 1 中的已修改源从
..\BANKDEMO-exercise\Exercis02\Step2\cobol\BBANK70P.CBL
和LOANCALC.CBL
复制到D:\PhotonUser\workspace\bankdemo\source\cobol
。
步骤 3:提交更改并运行 CI/CD 管道
将更改提交到中央 CodeCommit 存储库并触发 CI/CD 管道来构建、测试和部署更改。
-
从 BANKDEMO 项目的上下文菜单中,选择团队/提交。
-
在 Git 暂存选项卡中
-
在未暂存的阶段 LOANCALC.CBL 和 LOANCALC.CBL.mfdirset 中,添加内容。
-
输入提交消息:
Added Total Amount Calculation
。
-
-
选择提交并推送...。
-
打开 CodePipeline 控制台并查看管道执行状态。
注意
如果您在使用 Enterprise Developer 或团队功能“提交”或“推送”时遇到任何问题,请使用 Git Bash 命令行界面。
清理资源
如果您不再需要为本教程创建的资源,请将其删除,以免继续产生费用。完成以下步骤:
-
删除 CodePipeline 管道。有关更多信息,请参阅《AWS CodePipeline 用户指南》中的在 CodePipeline 中删除管道。
-
删除 CodeCommit 存储库。有关更多信息,请参阅《AWS CodeCommit 用户指南》中的删除 CodeCommit 存储库。
-
删除 S3 存储桶。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的删除存储桶。
-
删除 AWS CloudFormation 堆栈。有关更多信息,请参阅《AWS CloudFormation 用户指南》中的在 AWS CloudFormation 控制台上删除堆栈。