

AWS Mainframe Modernization Service （受管執行期環境體驗） 不再向新客戶開放。對於與 AWS Mainframe Modernization Service （受管執行期環境體驗） 類似的功能，探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS 大型主機現代化可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學課程：在 中將程式碼從 Assembler 轉換為 COBOL AWS Mainframe Modernization
<a name="assembler-conversion-steps"></a>

您可以使用本文件做為step-by-step指南，了解如何將大型主機現代化組件程式碼轉換為 COBOL。此外，您也可以參考[從 Assembler 到 COBOL 的自動化程式碼轉換研討會](https://catalog.workshops.aws/awsm2ccm-assembler-cobol/en-US)，以進一步了解轉換程序。

**Contents**
+ [先決條件](#tutorial-assembler-conversion-prerequisites)
+ [步驟 1：與 共用建置資產 AWS 帳戶](#tutorial-assembler-conversion-share-assets)
+ [步驟 2：建立 Amazon S3 儲存貯體](#tutorial-assembler-conversion-create-bucket)
+ [步驟 3：建立 IAM 政策](#tutorial-assembler-conversion-IAM-policy)
+ [步驟 4：建立 IAM 角色](#tutorial-assembler-conversion-IAM-role)
+ [步驟 5：將 IAM 政策連接至 IAM 角色](#tutorial-assembler-conversion-attach)
+ [步驟 6：建立 CodeBuild 專案](#tutorial-assembler-conversion-create-project)
  + [步驟 6.1：建立定義專案](#tutorial-conversion-define-project)
  + [步驟 6.2：建立程式碼分析專案](#tutorial-conversion-analysis-project)
  + [步驟 6.3：建立程式碼轉換專案](#tutorial-conversion-code-project)
+ [步驟 7：定義專案並上傳原始碼](#tutorial-assembler-conversion-define-upload)
+ [步驟 8：執行分析並了解報告](#tutorial-assembler-conversion-run-analysis)
+ [步驟 9：執行程式碼轉換](#tutorial-assembler-conversion-run-code)
+ [步驟 10：驗證程式碼轉換](#tutorial-assembler-conversion-verify)
+ [步驟 11：下載轉換後的程式碼](#tutorial-assembler-conversion-download)
+ [清除資源](#tutorial-assembler-conversion-clean-resources)

## 先決條件
<a name="tutorial-assembler-conversion-prerequisites"></a>

請閱讀 [了解 Assembler 轉換的程式碼轉換帳單](assembler-conversion-billing.md)一節以了解 Assembler 程式碼轉換如何產生 費用 （帳單報告） AWS Account Management，以及帳單的運作方式。

## 步驟 1：與 共用建置資產 AWS 帳戶
<a name="tutorial-assembler-conversion-share-assets"></a>

在此步驟中，請確定您與 共用建置資產 AWS 帳戶，尤其是在使用資產的區域中。

1. 在 https：//[https://console.aws.amazon.com/m2/](https://us-west-2.console.aws.amazon.com/m2/home?region=us-west-2#/) 開啟 AWS Mainframe Modernization 主控台。

1. 在左側導覽中，選擇**工具**。

1. 在 **AWS Mainframe Modernization Code Conversion with mLogica** 中，選擇**與我的共用資產 AWS 帳戶**。

**重要**  
您需要在每個要進行建置的 AWS 區域中執行此步驟一次。

## 步驟 2：建立 Amazon S3 儲存貯體
<a name="tutorial-assembler-conversion-create-bucket"></a>

在此步驟中，您會建立 Amazon S3 儲存貯體。第一個儲存貯體是 的專案儲存貯體 AWS CodeBuild ，用於保留原始程式碼，然後推送輸出儲存貯體以保留輸出 AWS CodeBuild （轉換程式碼）。如需詳細資訊，請參閱《[Amazon S3 使用者指南》中的建立、設定和使用 Amazon S3 儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html)體。 *Amazon S3 *

1. 若要建立專案儲存貯體，請登入 Amazon S3 主控台，然後選擇**建立儲存貯**體。

1. 在**一般組態**中，提供儲存貯體的名稱，並指定您要建立儲存貯 AWS 區域 體的 。範例名稱為 `codebuild-regionId-accountId-bucket`，其中：
   + `regionId` 是 儲存貯 AWS 區域 體的 。
   +  `accountId` 是您的 AWS 帳戶 ID。
**注意**  
如果您要在與美國東部 （維吉尼亞北部） AWS 區域 不同的 中建立儲存貯體，請指定 `LocationConstraint` 參數。如需詳細資訊，請參閱《*Amazon Simple Storage Service API 參考*》中的[建立儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)體。

1. 保留所有其他設定，然後選擇**建立儲存貯**體。

無論您為這些儲存貯體選擇的名稱為何，請務必在本教學課程中使用這些儲存貯體。

## 步驟 3：建立 IAM 政策
<a name="tutorial-assembler-conversion-IAM-policy"></a>

在此步驟中，您會建立 [IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。提供的 IAM 政策授予與 Amazon S3、Amazon Elastic Container Registry、CodeBuild 產生的 [Amazon CloudWatch logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)以及程式碼轉換 Amazon Elastic Compute Cloud 資源 AWS CodeBuild 互動的特定許可。此政策不會為客戶自訂。政策會授予 AWS Mainframe Modernization 互動的許可，並擷取程式碼轉換統計資料，以適當地向客戶收費。

若要了解如何建立 IAM 政策，請參閱《[IAM 使用者指南》中的建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。 **

**建立政策**

1. 登入 IAM 主控台，然後在左側導覽窗格中選擇**政策**。

1. 選擇**建立政策**。

1. 將下列 JSON 政策複製並貼到政策編輯器中。

------
#### [ JSON ]

****  

   ```
   { 
       "Version":"2012-10-17",		 	 	  
       "Statement": [ 
           { 
               "Action": [
                   "s3:PutObject", 
                   "s3:GetObject", 
                   "s3:GetBucketLocation", 
                   "s3:ListBucket", 
                   "s3:PutObjectAcl", 
                   "s3:GetBucketAcl" 
               ], 
               "Resource": [ 
                   "arn:aws:s3:::codebuild-regionId-accountId-bucket", 
                   "arn:aws:s3:::codebuild-regionId-accountId-bucket/*", 
                   "arn:aws:s3:::aws-m2-repo-*" ], 
                       "Effect": "Allow" 
             }, 
             {
                 "Action": [ 
                   "ecr:GetAuthorizationToken", 
                   "ecr:BatchCheckLayerAvailability", 
                   "ecr:BatchGetImage", 
                   "ecr:GetDownloadUrlForLayer", 
                   "logs:*", 
                   "ec2:DescribeSecurityGroups", 
                   "ec2:DescribeSubnets", 
                   "ec2:DescribeNetworkInterfaces", 
                   "ec2:DeleteNetworkInterface", 
                   "ec2:CreateNetworkInterface", 
                   "ec2:DescribeDhcpOptions", 
                   "ec2:DescribeVpcs", 
                   "ec2:CreateNetworkInterfacePermission" 
               ], 
               "Resource": "*", 
               "Effect": "Allow" 
            } 
       ] 
   }
   ```

------

1. 您可以選擇將標籤新增至政策。標籤是索引鍵/值對，可協助您組織、追蹤或控制政策的存取。

1. 選擇 **Next:Review (下一步：檢閱)**。

1. 提供政策的名稱，例如 `CodeBuildAWSM2CCMPolicy`。

1. 您可以選擇性地輸入政策的描述，並檢閱政策摘要以確保其正確。

1. 選擇**建立政策**。

## 步驟 4：建立 IAM 角色
<a name="tutorial-assembler-conversion-IAM-role"></a>

在此步驟中，您會建立新的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)，在您將先前建立的 IAM 政策與此新 IAM 角色建立關聯之後，允許 CodeBuild 與您 AWS 資源互動。

如需建立服務角色的相關資訊，請參閱《*IAM 使用者指南*》中的[建立角色以委派許可給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

1. 登入 IAM 主控台，然後在左側導覽窗格中選擇**角色**。

1. 選擇建**立角色**。

1. 在**信任的實體類型**下，選擇 **AWS 服務**。

1. 在**其他 AWS 服務的使用案例**下，選擇 **CodeBuild**，然後再次選擇 **CodeBuild**。

1. 選擇**下一步**。

1. 在 **Add permissions** (新增許可) 頁面上，選擇 **Next** (下一步)。您稍後會將政策指派給角色。

1. 在**角色詳細資訊**下，提供角色的名稱，例如 `IAMRoleTaskExecutionRoleForCodeBuild`。

1. 在**選取信任的實體**下，確認政策文件如下所示：

------
#### [ JSON ]

****  

   ```
   {
             "Version":"2012-10-17",		 	 	 
             "Statement": [
               {
                 "Effect": "Allow",
                 "Principal": {
                   "Service": "codebuild.amazonaws.com"
                 },
                 "Action": "sts:AssumeRole"
               }
             ]
   }
   ```

------

1. 選擇建**立角色**。

## 步驟 5：將 IAM 政策連接至 IAM 角色
<a name="tutorial-assembler-conversion-attach"></a>

在此步驟中，您將先前建立的 IAM 政策連接至 IAM `IAMRoleTaskExecutionRoleForCodeBuild` 角色。

1. 登入 IAM 主控台，然後在左側導覽窗格中選擇**角色**。

1. 在**角色**中，選擇您先前建立的角色，例如 `IAMRoleTaskExecutionRoleForCodeBuild`。

1. 在**許可政策**中，選擇**新增許可**，然後選擇**連接政策**。

1. **在其他許可政策**中，選擇您先前建立的政策，例如 `CodeBuildAWSM2CCMPolicy`。

1. 選擇**連接政策**。

## 步驟 6：建立 CodeBuild 專案
<a name="tutorial-assembler-conversion-create-project"></a>

在此步驟中，您會根據上述`buildspec.yml`檔案建立三個不同的 CodeBuild 專案。

### 步驟 6.1：建立定義專案
<a name="tutorial-conversion-define-project"></a>

**建立定義專案**

1. 登入 CodeBuild 主控台，然後選擇**建立建置專案**。

1. 在**專案組態**區段中，提供專案的名稱，例如 `1-awsm2ccm-define-project`。

1. 在**來源**區段中，對於**來源提供者**，保留預設選擇。

1. 在**環境**區段中，選擇**自訂映像**。

1. 在**環境類型**欄位中，選擇 **Linux**。

1. 在**映像登錄**檔下，選擇**其他登錄檔**。

1. 在**外部登錄 URL** 欄位中，遵循 [AWS Mainframe Modernization 容器](assembler-conversion-components-process.md#assembler-conversion-components-container)一節。

1. 在**服務角色**下，選擇**現有服務角色**，然後在**角色 ARN** 欄位中，選擇您先前建立的服務角色 （例如 `IAMRoleTaskExecutionRoleForCodeBuild`)。

1. 展開**其他組態**區段，執行下列動作：

   1. VPC：視需要根據您的設定進行設定。

   1. 逾時：設定為 **60 分鐘**。

   1. 佇列逾時：設定為 **480 分鐘**。

   1. 加密：選擇適當的加密設定 （預設值沒問題）。

   1. 在**環境變數**區段中，逐一新增下列項目：
      + 名稱：**PROJECT\_BUCKET**。值 ：`codebuild-regionId-accountId- bucket`。類型 ：**純文字**
      + 名稱：**PROJECT\_DIR**。值 ：`prj_codebuild_01`。類型 ：**純文字**
      + 名稱：**AWSM2CCM\_ACTION**。值 ：`define_project`。類型 ：**純文字**
      + 名稱 ：**AWSM2CCM\_LOGGING\_BUCKET**。值 ：`s3:// codebuild-regionId-accountId-bucket`。類型 ：**純文字**

1. 在 **Buildspec** 區段中，選擇**插入建置命令**，然後**切換到編輯器**。

1. 將目前的值取代為：

   ```
   version: 0.2 
   phases: 
       build: 
           commands: 
               - . /app/awsm2ccm_prod/bin/setup_env.sh 
               - run_awsm2ccm.sh $PROJECT_DIR 
   artifacts: 
       files: 
           - '**/*' 
       discard-paths: no 
       base-directory: $PROJECT_DIR
   ```

   其中，PROJECT\_DIR 是 CodeBuild 中可用的環境變數。如需詳細資訊，請參閱[建置環境中的環境變數](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。

1. 在**成品**區段中，執行下列動作：
   + 在**類型**下，選擇 **Amazon S3**，然後選擇輸出儲存貯體，例如 `codebuild-regionId-accountId-bucket`。
   + 對於**路徑**，請將此欄位保留空白。
   + 針對**名稱**，輸入 `prj_codebuild_01`。
   + 針對**成品封裝**，選取**無**。
   + 針對**覆寫成品名稱**，請取消勾選此選項。
   + 對於**加密**，將其保留為預設設定。

1. 針對**日誌**區段，執行下列動作：
   + CloudWatch 日誌：**已停用**
   + S3 日誌：**已啟用**
   + 儲存貯體： `codebuild-regionId-account-bucket`
   + 日誌路徑： `CODEBUILD-LOGS`

1. 選擇 **Create build project (建立建置專案)**。

### 步驟 6.2：建立程式碼分析專案
<a name="tutorial-conversion-analysis-project"></a>

**建立程式碼分析專案**

1. 登入 CodeBuild 主控台，然後選擇**建立建置專案**。

1. 在**專案組態**區段中，提供專案的名稱，例如 `2-awsm2ccm-analysis`。

1. 在**來源**區段中，針對**來源提供者**選擇 **Amazon S3**，然後選擇您先前建立的輸入儲存貯體 （例如 `codebuild-regionId-accountId-bucket`)。

1. 在 **S3 物件金鑰**或 **S3 資料夾**欄位中，輸入 `prj_codebuild_01`。

1. 在**環境**區段中，選擇**自訂映像**。

1. 在**環境類型**欄位中，選擇 **Linux**。

1. 在**映像登錄**檔下，選擇**其他登錄檔**。

1. 在**外部登錄 URL** 欄位中，遵循 [AWS Mainframe Modernization 容器](assembler-conversion-components-process.md#assembler-conversion-components-container)區段。

1. 在**服務角色**下，選擇**現有服務角色**，然後在**角色 ARN** 欄位中，選擇您先前建立的服務角色 （例如，`IAMRoleTaskExecutionRoleForCodeBuild`)。

1. 展開**其他組態**區段，執行下列動作：

   1. VPC：視需要根據您的設定進行設定。

   1. 逾時：設定為 **60 分鐘**。

   1. 佇列逾時：設定為 **480 分鐘**。

   1. 加密：選擇適當的加密設定 （預設值沒問題）。

   1. 在**環境變數**區段中，逐一新增下列項目：
      + 名稱：**PROJECT\_BUCKET**。值 ：`codebuild-regionId-accountId-bucket`。類型 ：**純文字**
      + 名稱：**PROJECT\_DIR**。值 ：`prj_codebuild_01`。類型 ：**純文字**
      + 名稱：**AWSM2CCM\_ACTION**。值 ：`analysis`。類型 ：**純文字**
      + 名稱：**AWSM2CCM\_LOGGING\_BUCKET**。值 ：`s3:// codebuild-regionId-accountId-bucket`。類型 ：**純文字**

1. 在 **Buildspec** 區段中，選擇**插入建置命令**，然後**切換到編輯器**。

1. 將目前的值取代為：

   ```
   version: 0.2 
   phases: 
       build: 
           commands: 
               - ln -s $CODEBUILD_SRC_DIR $PROJECT_DIR 
               - . /app/awsm2ccm_prod/bin/setup_env.sh 
               - run_awsm2ccm.sh $PROJECT_DIR
   artifacts: 
       files: 
           - '*.log' 
           - '_Converted/*/*' 
           - '_Reports/*' 
       secondary-artifacts: 
           reports: 
               files: 
                   - '_Reports/AWSM2CCM*' 
       discard-paths: no 
       base-directory: $PROJECT_DIR
   ```

   其中，PROJECT\_DIR 是 CodeBuild 中可用的環境變數。如需詳細資訊，請參閱[建置環境中的環境變數](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。

1. 在**成品**區段中，執行下列動作：
   + 在**類型**下，選擇 **Amazon S3**，然後選擇輸出儲存貯體 （例如 `codebuild-regionId-accountId-bucket`)。
   + 針對**路徑**，輸入 **ARTIFACTS**。
   + 針對**名稱**，輸入 `prj_codebuild_01`。
   + 針對**成品封裝**，選取**無**。
   + 對於**覆寫成品名稱**，請取消勾選此選項。
   + 對於**加密**，將其保留為預設設定。

1. 針對**日誌**區段，執行下列動作：
   + CloudWatch 日誌：**已停用**
   + S3 日誌：**已啟用**
   + 儲存貯體： `codebuild-regionId-account-bucket`
   + 日誌路徑： `CODEBUILD-LOGS`

1. 選擇 **Create build project (建立建置專案)**。

### 步驟 6.3：建立程式碼轉換專案
<a name="tutorial-conversion-code-project"></a>

**建立程式碼轉換專案**

1. 登入 CodeBuild 主控台，然後選擇**建立建置專案**。

1. 在**專案組態**區段中，提供專案的名稱 （例如`3-awsm2ccm-convert`)。

1. 在**來源**區段中，針對**來源提供者**選擇 **Amazon S3**，然後選擇您先前建立的輸入儲存貯體 （例如，`codebuild-regionId-accountId-bucket`)。

1. 在 **S3 物件金鑰**或 **S3 資料夾**欄位中，輸入 `prj_codebuild_01`。

1. 在**環境**區段中，選擇**自訂映像**。

1. 在**環境類型**欄位中，選擇 **Linux**。

1. 在**映像登錄**檔下，選擇**其他登錄檔**。

1. 在**外部登錄 URL** 欄位中，遵循 [AWS Mainframe Modernization 容器](assembler-conversion-components-process.md#assembler-conversion-components-container)區段。

1. 在**服務角色**下，選擇**現有服務角色**，然後在**角色 ARN** 欄位中，選擇您先前建立的服務角色；例如，`IAMRoleTaskExecutionRoleForCodeBuild`。

1. 展開**其他組態**區段，執行下列動作：

   1. VPC：視需要根據您的設定進行設定。

   1. 逾時：設定為 **60 分鐘**。

   1. 佇列逾時：設定為 **480 分鐘**。

   1. 加密：選擇適當的加密設定 （預設值沒問題）。

   1. 在**環境變數**區段中，逐一新增下列項目：
      + 名稱：**PROJECT\_BUCKET**。值 ：`codebuild-regionId-accountId-bucket`。類型 ：**純文字**
      + 名稱：**PROJECT\_DIR**。值 ：`prj_codebuild_01`。類型 ：**純文字**
      + 名稱：**AWSM2CCM\_ACTION**。值 ：`conversion`。類型 ：**純文字**
      + 名稱 ：**AWSM2CCM\_LOGGING\_BUCKET**。值 ：`s3:// codebuild-regionId-accountId-bucket`。類型 ：**純文字**

1. 在 **Buildspec** 區段中，選擇**插入建置命令**，然後**切換到編輯器**。

1. 將目前的值取代為：

   ```
   version: 0.2 
   phases: 
       build: 
           commands: 
               - export AWSM2CCM_PUSH_RUNTIME_COPYBOOKS=y 
               - ln -s $CODEBUILD_SRC_DIR $PROJECT_DIR 
               - . /app/awsm2ccm_prod/bin/setup_env.sh
               - run_awsm2ccm.sh $PROJECT_DIR
   artifacts: 
       files: 
           - '*.log' 
           - '_Converted/*/*' 
           - '_Reports/*'  
       discard-paths: no 
       base-directory: $PROJECT_DIR
   ```

   其中，PROJECT\_DIR 是 CodeBuild 中可用的環境變數。如需詳細資訊，請參閱[建置環境中的環境變數](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。

1. 在**成品**區段中，執行下列動作：
   + 在**類型**下，選擇 **Amazon S3**，然後選擇輸出儲存貯體 （例如 `codebuild-regionId-accountId-bucket`)。
   + 針對**路徑**，輸入 **ARTIFACTS**。
   + 針對**名稱**，輸入 `prj_codebuild_01`。
   + 針對**成品封裝**，選取**無**。
   + 對於**覆寫成品名稱**，請取消勾選此選項。
   + 對於**加密**，將其保留為預設設定。

1. 針對**日誌**區段，執行下列動作：
   + CloudWatch 日誌：**已停用**
   + S3 日誌：**已啟用**
   + 儲存貯體： `codebuild-regionId-account-bucket`
   + 日誌路徑： `CODEBUILD-LOGS`

1. 選擇 **Create build project (建立建置專案)**。

## 步驟 7：定義專案並上傳原始碼
<a name="tutorial-assembler-conversion-define-upload"></a>

定義專案會設定專案資料夾和組態檔案，並以預設組態初始化。在此步驟中，您會啟動建置。若要執行此作業：

1. 登入 AWS CodeBuild 主控台。

1. 在左側導覽窗格中，選擇**建置專案**。

1. 選取要建置的先前建立的專案 (`1-awsm2ccm-define-project`)

1. 選擇**開始建置**，然後**立即開始**定義專案。建置開始後，狀態會變更為*進行中*。

1. 選擇**階段詳細資訊**，以查看專案協調的每個步驟的進度 AWS CodeBuild 。

1. 等到所有步驟的狀態變更為**成功**。

1. 前往 Amazon S3 主控台。

1. 找到並按一下名為 的 Amazon S3 儲存貯體 `codebuild-regionId-accountId-bucket`
   + **`CODEBUILD-LOGS/`** 資料夾包含執行 AWS CodeBuild 中專案的 AWS CodeBuild 日誌。
   + **`prj_codebuild_01/`** 資料夾，其中包含專案結構。它用於分析、explication\_macros 和轉換步驟。您可以選擇 `prj_codebuild_01/`來探索詳細資訊
   + **`cobol_reserved.rsw`** 為轉換器保留的組態檔案 (COBOL 單字清單）。其會在轉換步驟期間使用。
   + **`Macro_Expansion/`** 資料夾包含巨集以擴展至 Assembler 程式。它在 expand\_macros 步驟期間使用。
   + **`macro_settings.json`** 組態檔案包含自訂巨集替換。它在 expand\_macros 步驟期間使用。
   + **`macrolib/`** 資料夾包含要轉換的 Assembler 巨集。它會在分析和轉換步驟期間使用。

     1. 選取 `macrolib/`。

     1. 根據預設，一個名為 的 Assembler 巨集`MACRO1.mac`會以範例檔案的形式提供。刪除此檔案，因為分析不需要。

     1. 在此目錄中上傳您的巨集。
   + **`project_settings_aux.json`** 組態檔案包含與程式碼頁面相關的設定。其會在轉換步驟期間使用。
   + **`project_settings.json`** 組態檔案包含轉換器的設定。其會在轉換步驟期間使用。
   + **`srclib/`** 資料夾包含要轉換的 Assembler 程式。它會在分析和轉換步驟期間使用。

     1. 選擇 `srclib/`。

     1. 根據預設，兩個名為 `SQtest01.asm`和 的 Assembler 程式`SQtest02.asm`會以範例形式提供。刪除這些檔案，因為分析和轉換不需要這些檔案。

     1. 在此目錄中上傳您的 Assembler 程式。

1. 驗證`1-awsm2ccm-define-project`步驟的狀態。它應該在**最新建置狀態**索引標籤下成功。

您已準備好進行下一個步驟：**程式碼分析**。

## 步驟 8：執行分析並了解報告
<a name="tutorial-assembler-conversion-run-analysis"></a>

**注意**  
AWS Mainframe Modernization 程式碼轉換*分析*步驟是免費的。

在此步驟中，您會啟動另一個組建：

1. 在左側導覽窗格中，選擇**建置專案**。

1. 選擇您在步驟 6.2 中建立的專案來建置：。 `2-awsm2ccm-analysis`

1. 選擇**開始建置**，然後**立即開始**產生分析報告。這將啟動建置並將狀態變更為*進行中*。

1. 選擇**階段詳細資訊**，其中您將看到專案協調的每個步驟的進度 AWS CodeBuild 。等待狀態變更為所有步驟*成功*。

1. 從 AWS 管理主控台前往 Amazon S3 服務主控台。

1. 找到並按一下 Amazon S3 儲存貯體： `codebuild-regionId-accountId-bucket`

   1. **`ARTIFACTS/`** 資料夾包含*分析*和*轉換*步驟的輸出。

   1. 選擇 `ARTIFACTS/prj_codebuild_01/_Reports/`。

   1. 下列報告將可供使用：
      + `AWSM2CCM-Analysis-Report-<timestamp>.pdf` 是一項執行報告，提供 AWS Mainframe Modernization 程式碼轉換帳單和範圍，改善轉換、轉換摘要和詳細的轉換統計資料。它也會摘要專案層級的程式碼計數和可計費程式碼計數，並提供每個元件的指標和參考成員清單。在執行實際轉換之前，執行和檢查此報告至關重要。
      + `Conversion_Detailed_Statistics.txt` 針對每個元件中找到的每個指令，提供頻率和預期的轉換結果 （顯示為「轉換狀態」)。這可讓您快速識別指示是否明確表示轉換器不支援。可能的*轉換狀態*結果為：
        + **完全轉換**：指示將準確轉換為 COBOL。
        + **部分轉換**：支援 指令，但使用不支援的參數或表達式。轉換後可能需要手動調整。
        + **未轉換**：轉換器不支援 指令。
        + **預先編譯要驗證的指示**：這些通常包含在巨集中，並參考在大型主機上也稱為*條件式組合語言* （例如 AIF、AGO) 的指示。這些是由前置編譯器處理，這些編譯器是由這類指示或指令所驅動，會選取並產生*乾淨/靜態*的 ASM 程式碼。這些指示取決於要編譯之巨集參數的實際值。因此，相同的巨集可以產生不同的 ASM 程式碼片段，取決於傳遞參數的值。這是因為存在這類*預先編譯指示*。在這種情況下，請考慮擴展或重新設計巨集。
      + `Conversion_Global_Statistics.txt` 提供元件層級的 *Conversion 狀態*摘要。
      + `CrossReference_PgmToCpyMacro.txt` 報告 Macros 上的 Assembler 程式相依性。它提供快速方法來判斷上傳的程式碼中是否有任何巨集遺失。
      + `CrossReference_PgmToPgm.txt` 報告其他 Assembler 程式的 Assembler 程式相依性。它提供快速方法來判斷上傳的程式碼中是否有任何 Assembler 程式遺失。

1. 返回 AWS CodeBuild 服務主控台。

1. 驗證 **2-awsm2ccm-analysis** 步驟的狀態。它應該在**最新建置狀態**索引標籤下**成功**。

您已準備好進行下一個步驟：**程式碼轉換**。

## 步驟 9：執行程式碼轉換
<a name="tutorial-assembler-conversion-run-code"></a>

**重要**  
AWS Mainframe Modernization 程式碼*轉換*步驟將根據您的用量計費。如需計費的詳細資訊，請參閱[了解 Assembler 轉換的程式碼轉換帳單](assembler-conversion-billing.md)。

在此步驟中，您將設定轉換程序，然後啟動建置。

1. 從 AWS 管理主控台前往 Amazon S3 服務。

1. 找到並按一下 Amazon S3 儲存貯體：`codebuild-regionId-accountId-bucket`。

   1. 前往 `prj_codebuild_01/`。

   1. 選取 `project_settings.json`，然後選擇**下載**。

   1. 開啟 `project_settings.json` 檔案以查看下列 JSON 結構：

      ```
      { 
      "Source programs directory":"srclib", 
      "Source copybooks/macros directory":"macrolib", 
      "Copybook/Macros Conversion":"Called_only", 
      "Do not regenerate the Copy/Macro if already exists":"false", 
      "Target Compiler":"IBM", 
      "Endianess":"Big", 
      "Converted programs extension":"", 
      "Converted CICS programs extension":"", 
      "Converted copies/macros extension":"", 
      "Trace Level":"STANDARD", 
      "Trace file open mode":"append", 
      "Data definition level":5, 
      "Start picture column":40, 
      "Generate Sync FILLER with name":"FILL-SYNC", 
      "Use SYNC clause":"yes", 
      "Decimal Point Comma":"true", 
      "Original Source Placement":"RIGHT" 
      }
      ```

      其中，
      + **來源程式目錄**： 包含轉換所需的 Assembler 程式。
      + **來源複製手冊/巨集目錄**： 包含轉換所需的 Assembler Macros 和複製手冊。
      + **Copybooks/Macros 轉換**可以是：
        + **全部**：此選項按鈕表示*完整轉換*將轉換目錄中可用的所有複本手冊/巨集，無論程式是否正在使用。
        + **Called\_only**：此選項按鈕表示*完整轉換*只會轉換程式實際使用的複製手冊/巨集。
      + 
**重要**  
如果 Copy/Macro 已存在，則不需要重新產生。

        當這是 true 時，如果工具已轉換 （存在於輸出資料夾中），則工具不會再次轉換 copybook/Macro。
      + **目標**：程式的轉換 （產生的程式碼） 取決於目標 COBOL 編譯器。支援下列選項：
        + IBM 大型主機的「IBM」
        + Micro Focus COBOL 的「MF」 
        + Veryant isCOBOL 的「VERYANT」
        + NTT DATA Enterprise COBOL (Unikix) 的「NTT」
      + **結尾和位元：**程式的轉換 （產生的程式碼） 取決於目標平台 （位元/結尾）。此組合允許選取下列支援的選項：
        + Endianess：*Big* （適用於 Big-Endian)/Little (Little-Endian)。例如，IBM z/OS 大型主機為 Big-Endian、Windows 為 Little-Endian、Linux 因發行版本而異 （例如 EC2 上的 Amazon Linux 2 為 Little-Endian)。
        + 位元：32/64 （如果未指定，則預設為 32)。建議設定為 32 位元。
      + **轉換的程式延伸**：這是為產生的 COBOL 程式設定副檔名。空白 (“”)：無延伸。對於 Rocket Software （先前稱為 Micro Focus) COBOL 目標，建議 *CBL* 讓 Rocket Enterprise Developer 正確識別檔案。
      + **轉換 CICS 程式延伸**：這是為產生的 CICS COBOL 程式設定副檔名。空白 (“”)：無延伸。對於 Rocket Software COBOL 目標，建議 *CBL* 讓 Rocket Enterprise Developer 正確辨識檔案。
      + **轉換的複製手冊/巨集延伸**：這是為產生的 COBOL 複製手冊設定副檔名。空白 (“”)：無延伸。對於 Rocket Software COBOL 目標，建議 *CPY* 讓 Rocket Enterprise Developer 正確辨識檔案。
      + **追蹤層級**：追蹤是在轉換期間使用 CodeBuild 記錄的資訊。使用者可以透過選取其中一個提供的選項來選取詳細資訊層級。
        + **ERROR** = TRACE ERROR：只會顯示轉換錯誤。
        + **STANDARD** = TRACE STANDARD：會顯示轉換錯誤和標準資訊。這是建議的設定。
        + **ALL** = TRACE ALL：追蹤層級上限
      + **追蹤檔案開啟模式**：未使用。建議預設設定為*附加*。
      + **資料定義層級**：這表示工作儲存和連結區段中定義的子欄位初始層級 （在層級「01」之後）。必須是數字。
      + **開始圖片欄**：這與產生的 COBOL 程式碼格式有關，並指出放置 *PIC *子句的欄 （在欄位名稱之後）。必須是數字。
      + **原始來源置放：**這表示註解放置在程式中的位置。它有兩個選項：
        + **右**：此選項會將註解或其他資訊放在七十三 (73) 欄之後的正確位置。在 COBOL 中，程式碼會寫入前七十二 (1-72) 欄，而來自七十三 (>= 73) 欄的任何內容都會視為註解。
        + **上述**：此選項會將註解放在翻譯內容上方。
      + **使用名稱產生同步 FILLER**：此選項與二進位欄位記憶體中的對齊有關 (Assembler "H"、"F"、"D" 資料類型，這些資料類型會轉換為 COBOL "COMP" 資料類型）。為了確保適當的*對齊界限*，轉換期間會新增明確的*填充*欄位。這是文字型選項，值必須是字串 （例如 FILL-SYNC)。
      + **使用 SYNC 子句**：此選項是指二進位欄位記憶體中的對齊。是 = 轉換為 COBOL 的所有欄位。「COMP」將以「SYNC」子句定義 （例如，05 WRKFLD PIC S9(09) COMP SYNC)。
      + **小數點逗號**：如果為 true，*DECIMAL-POINT IS COMMA* 子句會新增至 "SPECIAL-NAMES" COBOL 段落。

   1. 根據您的需求，變更適當的參數，然後儲存 `project_settings.json`。

   1. 從 Amazon S3 儲存貯`prj_codebuild_01/`體中移除現有`project_settings.json`檔案，然後上傳新版本。

1. 返回 AWS CodeBuild 服務。

1. 選取要建置您先前建立的專案： `3-awsm2ccm-convert`

   1. 選擇**開始建置**，然後**立即開始**將 Assembler 程式和巨集轉換為 COBOL 程式和複製手冊。

   1. 等待此專案的建置狀態變更為**成功**。它將在**最新建置狀態**索引標籤下。

## 步驟 10：驗證程式碼轉換
<a name="tutorial-assembler-conversion-verify"></a>

1. 從 AWS 管理主控台，前往 Amazon S3 服務。

1. 找到並按一下 Amazon S3 儲存貯體：`codebuild-regionId-accountId-bucket`。

1. 導覽至 **`awsm2ccm-do-not-delete `**. AWS Mainframe Modernization Code 轉換會在轉換過程中為每個 Assembler 或 Macro 模組建立編碼的二進位檔案。這些檔案對於防止向客戶重複計費，以及追蹤分析和轉換多少提供的 Assembler 程式碼至關重要。檔案會存放在下列位置：`codebuild-regionId-accountId- bucket/awsm2ccm-do-not-delete/<your_AWS_account_id>/Hash`。編碼的檔案不包含任何 Assembler 程式碼，也無法從這些檔案中擷取客戶程式碼。
**重要**  
既不手動編輯這些檔案，也不刪除這些檔案。編輯或刪除這些檔案可能會導致相同元件的多個帳單。

   將**`awsm2ccm-do-not-delete/`**資料夾視為系統受管目錄。在對此目錄或其內容進行任何變更 支援 之前，請參閱 。

1. 按一下`codebuild-regionId-accountId-bucket`以返回儲存貯體。

1. 選擇 **`ARTIFACTS/prj_codebuild_01/`**。**\_Converted/** 資料夾包含程式碼轉換步驟所產生的 COBOL 輸出。它將具有下列子目錄：
   + **copybooks/** 資料夾包含產生的 COBOL 複製手冊。
   + **程式/**資料夾包含產生的 COBOL 程式。
   + **runtime\_lib/** 資料夾包含解決方案提供的其他 COBOL 程式和複製手冊。

1. 如果*分析報告*和其他報告指出轉換成功，且 AWS CodeBuild 專案`3-awsm2ccm-convert`標記為**成功**，請從 **\_Converted/** 目錄下載 COBOL 程式碼和複製手冊。

## 步驟 11：下載轉換後的程式碼
<a name="tutorial-assembler-conversion-download"></a>

在此步驟中，從 **\_Converted/** 目錄下載 COBOL 程式碼和複製手冊，並在目標 COBOL 環境中編譯它們。

1. 從 AWS 管理主控台，前往 Amazon S3 服務。

1. 找到並按一下 Amazon S3 儲存貯體：`codebuild-regionId-accountId-bucket`。

1. 導覽至位置：` ARTIFACTS/prj_codebuild_01/_Converted/`。

1. 從 **\_Converted/** 下的所有子目錄下載轉換後的 COBOL 程式碼。您也可以使用下列 CLI 命令一次下載：

   ```
   aws s3 cp s3://codebuild-regionId-accountId- 
   bucket/ARTIFACTS/prj_codebuild_01/_Converted/ . --recursive
   ```

1. 在目標 COBOL 環境中分析和編譯轉換後的 COBOL。

## 清除資源
<a name="tutorial-assembler-conversion-clean-resources"></a>

如果您不再需要為本教學課程建立的資源，請將其刪除以避免額外費用。若要這樣做，請完成下列步驟：
+ 刪除您為此教學課程建立的 S3 儲存貯體。如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[刪除儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)體。
+ 刪除您為此教學課程建立的 IAM 政策。如需詳細資訊，請參閱《[IAM 使用者指南》中的刪除 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-delete.html)。 **
+ 刪除您為此教學課程建立的 IAM 角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[刪除角色或執行個體描述](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html)檔。
+ 刪除您為此教學課程建立的 CodeBuild 專案。如需詳細資訊，請參閱*AWS CodeBuild 《 使用者指南*》中的在 [ CodeBuild 中刪除組建專案](https://docs.aws.amazon.com/codebuild/latest/userguide/delete-project.html)。