

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)。

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

# 教學課程：在 NTT DATA 上部署 CardDemo 應用程式
<a name="tutorial-unikix-runtime"></a>

此頁面會逐步引導您 step-by-step 透過 NTT DATA Unikix 執行時間，在 AWS 大型主機現代化平台部署 CardDemo 範例應用程式。

CardDemo 範例應用程式是一種簡化的大型主機應用程式，旨在測試和展示大型主機遷移和現代化使用案例的 AWS 合作夥伴技術。

如需此應用程式的詳細資訊，請參閱 [ CardDemo 的 GitHub 儲存庫](https://github.com/aws-samples/aws-mainframe-modernization-carddemo)。

**Topics**
+ [部署流程圖](#tutorial-unikix-workflow)
+ [先決條件](#tutorial-unikix-prerequisites)
+ [步驟 1：準備環境](#tutorial-unikix-prepare)
+ [步驟 2：建立 TPE 區域](#tutorial-unikix-tpe)
+ [步驟 3：建立 BPE 節點和子系統](#tutorial-unikix-bpe)
+ [步驟 4：編譯和部署 CardDemo 應用程式](#tutorial-unikix-compile)
+ [步驟 5：匯入 BPE 和 TPE 目錄](#tutorial-unikix-import)
+ [步驟 6：啟動並連接 TPE 與 BPE](#unikix-tutorial-connect)
+ [步驟 7：執行 CardDemo 應用程式](#unikix-tutorial-run-application)
+ [疑難排解](#tutorial-unikix-troubleshoot)

## 部署流程圖
<a name="tutorial-unikix-workflow"></a>

下圖顯示工作流程中在 NTT DATA Unikix 執行時間部署應用程式的每個步驟。

![在 NTT DATA Unikix 執行時間部署應用程式的整體工作流程。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-process.png)


## 先決條件
<a name="tutorial-unikix-prerequisites"></a>
+ 遵循 中的指示，[AWS 使用 NTT DATA 進行大型主機現代化轉換](unikix.md)使用 [NTT DATA UniKix Marketplace AMI](https://aws.amazon.com/marketplace/pp/prodview-eg227ymldsnx2)。
+ 將執行個體中繼資料選項 **IMDSv2** 修改為**選用**，如《*Amazon EC2*[Amazon EC2 使用者指南》中的還原 IMDSv1 的使用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-IMDS-existing-instances.html)所述。
+ 從 下載 NTT DATA UniKix 的 CardDemo 執行期元件 

  [GitHub 儲存庫](https://github.com/aws-samples/aws-mainframe-modernization-carddemo/blob/main/samples/m2/unikix/UniKix_CardDemo_runtime_v1.zip)。
+ 以 身分登入 UniKix 執行期 EC2 執行個體`ec2-user`。
+ 使用此連結解壓縮下載的 CardDemo 執行期元件：[UniKix\_CardDemo\_runtime\_v1.zip](https://github.com/aws-samples/aws-mainframe-modernization-carddemo/blob/main/samples/m2/unikix/UniKix_CardDemo_runtime_v1.zip)。
  + 解壓縮的目錄應包含 `bin`和 `migrated_app`目錄。
  + 在`$HOME`目錄下同時移動 `bin`和 `migrated_app` 目錄。路徑看起來像 `/home/ec2-user`。
  + 您的 中應該有下列目錄`$HOME`：
    + `/home/ec2-user/bin`
    + `/home/ec2-user/migrated_app`
  + 使用下列命令在 $HOME/bin 目錄內移動所有檔案：
  + 
    + `chmod +x $HOME/bin/*`

## 步驟 1：準備環境
<a name="tutorial-unikix-prepare"></a>

完成先決條件後，第一步是準備要部署 CardDemo 應用程式的環境。

1. 以 身分登入 UniKix 執行期 EC2 執行個體`ec2-user`。

1. 在 EC2 執行個體中使用下列命令，觀察 AMI 中預先封裝的 UniKix 軟體清單，例如 TPE、BPE 和 COBOL，以及其他來自 NTT DATA UniKix 產品位置的清單：

   ```
   ls -l /opt/software/
   ```

1. 檢查遷移的 CardDemo 應用程式。您將會看到所有原始程式碼，包括：BMS 地圖、COBOL 程式、COBOL 複製手冊和 JCLs。您也可以執行下列動作，找到 BPE 和 TPE 目錄的匯出、CICS 資源定義，以及循序檔案和 VSAM 檔案等遷移資料：

   ```
   ls  $HOME/migrated_app/*/*
   ```

1. 使用以下命令執行`create_project`指令碼來建立資料夾結構：

   ```
   sh $HOME/bin/create_project
   ```

1. 使用 來源`carddemo.env`設定檔案來啟用 CardDemo 環境：

   ```
   source $HOME/bin/carddemo.env
   ```

## 步驟 2：建立 TPE 區域
<a name="tutorial-unikix-tpe"></a>

啟用要部署應用程式的環境後，您需要建立 TPE 區域。

1. 使用 `kixregion createRegion`命令建立 TPE 區域，該命令需要輸入，例如 `$KIXSYS`、 `$JAVA_HOME`和 `$KIXLICDIR`。這些環境變數已在設定檔案中`carddemo.env`設定。

   ```
   kixregion createRegion $KIXSYS $JAVA_HOME $KIXLICDIR
   ```

1. 使用 `kixregion setAttr`命令設定 TPE 區域。

   ```
   kixregion setAttr $KIXSYS server.tx.languages.cobol.enabled true
   kixregion setAttr $KIXSYS server.tx.languages.cobol.flavor vcobol
   kixregion setAttr $KIXSYS server.tx.languages.cobol.home $VCOBOL
   kixregion setAttr $KIXSYS maps.location $PROJECT_ROOT/maps
   kixregion setAttr $KIXSYS programs.location $PROJECT_ROOT/loadlib
   kixregion setAttr $KIXSYS environment.KIXDATA $KIXDATA
   kixregion setAttr $KIXSYS td.jobq.submission.node $EBMHOME
   kixregion setAttr $KIXSYS td.jobq.submission.subsys $EBMSYS
   ```

1. 執行 `kixregion createScript`命令，產生此 TPE 區域特有的使用者環境檔案。此命令`$KIXSYS/bin/userenv`會根據 TPE 區域組態建立或更新。

   ```
   kixregion createScript $KIXSYS
   ```

1. 透過來源使用者環境檔案 () 來啟用 TPE 區域`$KIXSYS/bin/userenv`。

   ```
   source $KIXSYS/bin/userenv
   ```

1. 執行 `kixinstall2`命令來建置 TPE 區域。

   ```
   kixinstall2
   ```

## 步驟 3：建立 BPE 節點和子系統
<a name="tutorial-unikix-bpe"></a>

建立 TPE 區域之後，您需要依照下列步驟建立 BPE 節點和子系統。

1. 變更 的擁有權和許可`INSTEBM`。

   ```
   sudo chown root $INSTEBM 
   sudo chmod 4755 $INSTEBM
   ```

1. 使用 `INSTEBM`命令建立 BPE 節點。BPE 節點目錄做為輸入參數提供。

   ```
   $INSTEBM $EBMHOME
   ```

1. 從新建立的 BPE 節點取得`batchenv`檔案，以啟用批次環境。

   ```
   source $EBMHOME/batchenv
   ```

1. 使用 Batch Administration Manager (bam) 在此節點內建立 BPE 子系統。`bam` 命令將開啟 Batch Administration Manager 介面。

   ```
   bam
   ```

   1. 使用 BAM 介面啟動 BPE 節點。從主功能表中選擇選項 2，**系統環境**。  
![在批次管理員中，選擇選項 2 系統環境。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-1.png)

   1. 選擇選項 2、**開始/（停止） 批次節點**來啟動 BPE 節點。  
![在系統環境中，選擇選項 2 開始/停止批次節點。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-2.png)

   1. 啟動後，按兩次 **Return 鍵**以返回 BAM 主功能表。  
![批次節點啟動完成畫面。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-3.png)

   1. 若要建立 BPE 子系統，請選擇選項 3，**應用程式和子系統**。  
![在 Batch Administrator Manager 頁面上選取的選項 3 應用程式和子系統。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-4.png)

   1. 然後選擇選項 3，**建立子系統**。  
![選項 3 在應用程式和子系統畫面上建立選取的子系統。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-5.png)

   1. 將子系統名稱輸入為 `sys1`。  
![在建立畫面上輸入的 sys1。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-6.png)

   1. 選擇選項 3，**資料管理**。  
![在應用程式和子系統中的建立畫面上選擇選項 3 資料管理。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-7.png)

   1. 選擇選項 5，因為 CardDemo 應用程式同時涉及序列和 VSAM 檔案。  
![選擇選項 5 以包含序列和 VSAM 檔案。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-8.png)

   1. (選用)。按 "R" 返回**建立選單**頁面，檢閱可用的不同組態選項。

   1. 在**建立**頁面上，輸入 "C" 來建立子系統 `sys1`。  
![在鍵盤上按下「C」以建立子系統 sys1。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-9.png)

   1. 檢閱設定，然後輸入 "C" 以繼續其餘的環境設定。由於`carddemo.env`設定檔案中定義的必要環境變數和建議的資料夾結構已就位，這些環境設定會預先填入。

   1. 輸入「y」以確認並儲存目前的環境設定。  
![顯示已完成的 sys1 子系統環境設定。另請輸入「y」來儲存目前的設定。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-10.png)

   1. 輸入「y」以在建置子系統時顯示日誌。  
![在畫面上顯示建置 sys1 的 NTT DATA COBOL 執行期系統。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-11.png)

   1. 按**傳回鍵**，直到您返回主功能表，然後選取**結束**選項以結束 BAM 介面。  
![顯示已建立的 COBOL 執行期系統。也會提示按傳回以繼續。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-12.png)  
![返回建立功能表，並顯示已建立子系統 sys1。且組態已更新。提示按傳回以繼續。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-13.png)  
![批次管理員的主功能表。提示輸入 Q 以退出此功能表。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-bpe-14.png)

1. 透過使用子系統名稱 來源 來啟用 BPE `batchenv`子系統`sys1`。

   ```
   source $EBMHOME/batchenv sys1
   ```

## 步驟 4：編譯和部署 CardDemo 應用程式
<a name="tutorial-unikix-compile"></a>

在此步驟中，您將編譯 COBOL 程式並部署應用程式成品，例如 JCL、程序、資料檔案和 CICS 資源定義。

1. 透過來源`carddemo.env`設定檔案再次啟用 CardDemo 環境。

   ```
   source $HOME/bin/carddemo.env
   ```

1. 導覽至 COBOL 來源目錄。

   ```
   cd $MIGAPP_DIR/cbl
   ```

1. `CBACT01C.cbl` 使用`compile`指令碼編譯 Cobol 程式。

   ```
   compile CBACT01C.cbl
   ```

1. 使用`compile.all`指令碼編譯所有 Cobol 程式。

   ```
   compile.all
   ```

1. 導覽至 BMS 映射來源目錄。

   ```
   cd $MIGAPP_DIR/bms
   ```

1. `COACTUP.bms` 使用`compbms`指令碼編譯 BMS 映射。

   ```
   compbms COACTUP.bms
   ```

1. 使用`compbms.all`指令碼編譯所有 BMS 映射。

   ```
   compbms.all
   ```

1. 驗證 COBOL 和 BMS 映射的編譯二進位檔。

   ```
   ls $PROJECT_ROOT/loadlib
   ls $PROJECT_ROOT/maps
   ```

1. 使用`deploy_app`指令碼部署其他應用程式成品，例如 JCL、程序、資料檔案和 CICS 資源定義。

   ```
   deploy_app
   ```

1. 導覽至專案 JCL 目錄。

   ```
   cd $PROJECT_ROOT/jcl
   ```

1. 將 JCL ACCTFILE 轉換為 BPE JCL Macro。使用 `mvstrans`命令，利用「-v」選項進行 JCL 驗證，並使用「-f」選項來建立巨集。

   ```
   mvstrans ACCTFILE -v
   mvstrans ACCTFILE -f
   ```

1. 將 JCL 程序 REPROC 轉換為 BPE JCL 程序巨集。使用 `mvstrans`命令搭配 "-p" 選項以及用於驗證的 "-v" 選項，以及用於建立巨集的 "-f" 選項。

   ```
   mvstrans REPROC -v -p
   mvstrans REPROC -f -p
   ```

1. 翻譯所有 JCLs和 JCL 程序。

   ```
   for file in "./jmvs/*"; do mvstrans $file -f; done > jmvs.out
   for file in "./mvsp/*"; do mvstrans $file -p -f; done > mvsp.out
   ```

## 步驟 5：匯入 BPE 和 TPE 目錄
<a name="tutorial-unikix-import"></a>

在此步驟中，您會使用不同的命令匯入 BPE 和 TPE 目錄。

1. 使用 `loadcat`命令匯入 BPE 目錄。

   ```
   loadcat $MIGAPP_DIR/catlg/bpe/BPECAT*
   ```

1. 導覽至 $KIXSYS 目錄。

   ```
   cd $KIXSYS
   ```

1. 使用 `kiximpcat`命令匯入 TPE 目錄。

   ```
   kiximpcat -c CATALOG -l CATALOG.lst
   ```

1. 使用 kiximptbl 命令匯入 CICS 資源定義。

   ```
   kiximptbl
   ```

## 步驟 6：啟動並連接 TPE 與 BPE
<a name="unikix-tutorial-connect"></a>

在此步驟中，您需要啟動先前建立的 TPE 區域與 BPE 管理員，並連接這些區域，才能執行範例 CardDemo 應用程式。

1. 針對所有 VSAM 檔案執行 `kixverify`命令，以確保它們已重設且任何先前開啟的檔案都已關閉。

   ```
   kixverify -r ALL
   ```

1. 啟動 TPE 區域。

   ```
   kixregion start $KIXSYS
   ```

1. 確定 BPE 和 TPE 都已連線。這很重要，因為 VSAM 檔案由 TPE 擁有，存取 VSAM 的任何批次操作都需要連線至 TPE。

   ```
   ebmsys -t
   ```  
![將子系統名稱顯示為 sys1。TPE 已連線，且 TPE 使用者是 ec2-user。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-start-1.png)

## 步驟 7：執行 CardDemo 應用程式
<a name="unikix-tutorial-run-application"></a>

在此步驟中，您會在 TN3270 終端機模擬器中執行 CardDemo 應用程式。

UniKix 執行期 AMI 隨附 TN3270 終端機模擬器，您可以直接從 UniKix EC2 執行個體啟動。

**使用 TN3270 終端機模擬器連線至 TPE**
+ 使用 `kixterm`命令啟動 TN3270 終端機。

  ```
  kixterm
  ```  
![適用於大型主機的 TPE UniKix CardDemo 範例應用程式的主要畫面。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-carddemo-00.png)

(選用)。如果您想要使用自己的終端機模擬器：

1. 從 Amazon EC2 主控台取得 UniKix 執行時間執行個體的 IP 地址。

1. 取得連接埠號碼，以使用 TN3270 終端機模擬器連線至 TPE 區域。您可以從 unikixrc.cfg 檔案的 TNServer ListenPort 找到此項目。

   ```
   cat $KIXSYS/unikixrc.cfg
   ```  
![顯示 UniKix unikixrc.cfg 檔案的詳細資訊，接聽程式連接埠為 15440。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-carddemo-1.png)

1. 將 TN3270 終端機模擬器設定為使用 UniKix 執行時間執行個體的 IP 地址和連接埠號碼 15440。

**線上交易**

本節假設您已使用 `kixterm`命令連線至 TN3270 終端機模擬器。

1. 從 TN3270 終端機模擬器連線後，按「Enter」鍵清除 TPE 畫面並輸入初始交易。

1. 在初始交易 CC00 （登入畫面） 上，輸入`USER001`使用者名稱`PASSWORD`和密碼。  
![CardDemo 的主畫面。顯示這是 Mainframe Modernization 的CardDemo應用程式。要求輸入您的使用者 ID 和密碼。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-carddemo-2.png)

1. 從**主功能表**中選擇選項 “01” 以檢視帳戶。  
![模擬器中 CardDemo 應用程式的主選單，選取選項為 1。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-carddemo-3.png)

1. 在**檢視帳戶**畫面中，輸入帳戶號碼 （例如 00000000010)。您應該會看到從遷移資料填入的帳戶資訊。  
![輸入帳號為 00000000010 的 CardDemo 應用程式詳細資訊。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-carddemo-4.png)

1. 按兩次「PF03」鍵返回登入畫面，然後按「Ctrl\+C」(Windows) 或「Cmd\+C」(Macbook) 結束 TN3270 終端機。

**批次任務**

1. 導覽至 JCL 目錄。

   ```
   cd $MBMSUB
   ```

1. 提交任務`MFCATGL1`並觀察任務日誌輸出。

   ```
   BPESUB READCARD
   ```

1. 或者，您可以從 `$SUBSYS_OUTDIR`目錄檢視任務日誌。

   ```
   ls -lrt $SUBSYS_OUTDIR/*
   ```

您現在已成功將 CardDemo 應用程式部署到 NTT DATA UniKix 執行時間，並透過瀏覽幾個 CICS 線上畫面和批次任務來驗證執行中的應用程式。

## 疑難排解
<a name="tutorial-unikix-troubleshoot"></a>

以下是您在設定 CardDemo 應用程式時可能發現的一些常見錯誤。

### 錯誤：授權錯誤
<a name="tutorial-unikix-troubleshoot-license-issue"></a>

如果您在遵循本教學課程期間收到授權失敗錯誤，可能是您的 EC**IMDSv2**2。 EC2 您可以透過將執行個體中繼資料選項 **IMDSv2** 修改為**選用**來解決此問題，如《*Amazon EC2 使用者指南*》中的[還原 IMDSv1 的使用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-IMDS-existing-instances.html)所述。

### 錯誤：TPE 未連線至 BPE
<a name="tutorial-unikix-troubleshoot-tpe-connection"></a>

如果 TPE 未連線至 BPE，請確定 **VSAM 組態表**已使用 BPE 節點目錄正確設定。若要存取 VSAM 組態表，請使用下列命令啟動 TN3270 終端機模擬器：

```
kixterm
```

1. 將交易名稱輸入為 `CTBL`。

1. 在**資料表管理員**功能表中，選擇**標準資料表**選項。

1. 在標準資料表畫面上，選擇選項 **VSAM 組態資料表**。

1. 檢查是否**連線至批次節點？** 設定為「**Y**」且 Node Directory 正確。

![TN3270 終端機模擬器中的 VSAM 組態表。顯示資料表中每個欄位的值。](http://docs.aws.amazon.com/zh_tw/m2/latest/userguide/images/unikix-troubleshoot.png)
