

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

# 大型主機來源成品集合
<a name="transform-app-mainframe-source-artifacts"></a>

本主題概述了收集大型主機原始程式碼和相關成品的程序，以支援使用 AWS Transform 的大型主機現代化計畫。正確收集和準備來源成品對於成功分析、遷移規劃和實作至關重要。

## 原始程式碼庫存
<a name="transform-app-mainframe-source-artifacts-inventory"></a>

### 應用程式原始碼類型
<a name="transform-app-mainframe-source-artifacts-app-types"></a>

支援下列應用程式原始碼類型：
+ COBOL 程式
+ JCL 指令碼
+ 組裝器程式
+ PL/I 程式
+ CICS 交易
+ 自然程式
+ REXX 指令碼
+ Easytrieve 程式
+ 複製手冊和 包含
+ Proc 程式庫

### 資料庫資產
<a name="transform-app-mainframe-source-artifacts-db-assets"></a>

支援下列資料庫資產：
+ DB2 DCLGEN 和 DDL 指令碼
+ IMS 資料庫定義 (PSBs和 DBDs)
+ VSAM 檔案定義
+ 實體和邏輯資料庫結構描述
+ 資料庫程序和觸發條件

### 原始程式碼副檔名
<a name="transform-app-mainframe-source-artifacts-extensions"></a>

如果您不確定延伸模組，請將它保留為空白或 .txt，且 AWS Transform 會為您分類。

下表列出大型主機來源成品的常見副檔名。


**大型主機原始碼副檔名**  

| 語言/類型 | 常見延伸模組 | 說明 | 
| --- | --- | --- | 
| COBOL | .cbl、.cob、.cobol | COBOL 來源程式 | 
| JCL | .jcl | 任務控制語言指令碼 | 
| 組裝器 | .asm | 組合語言程式 | 
| PL/I | .pl1 | PL/I 語言程式 | 
| CICS 定義 | .csd | CICS 系統定義 (CSD) | 
| 自然 | .nat | 自然程式 | 
| REXX | .rex、.rexx | REXX 指令碼 | 
| Easytrieve | .ezt | Easytrieve 報告程式 | 
| 複製手冊 | .cpy | COBOL 複製手冊 | 
| BMS | .bms | 基本映射支援 (BMS) | 
| PL/I 複製手冊 | .pl1\_copy | PL/I 複製手冊 | 
| Db2 DCLGEN | .dcl | Db2 宣告產生器 | 
| Db2 定義 | .sql、.ddl | Db2 資料庫定義 | 
| IMS 定義 | .ims | IMS 資源定義資料集 (IMS 階段 1) | 
| MFS | .mfs | IMSMFS （訊息格式服務） | 
| PSB | .psb | IMS PSB （程式規格區塊） | 
| DBD | .dbd | IMS 資料庫定義 | 
| JCL 處理 | .prc、.proc | JCL 程序程式庫 | 
| JCL 包括 | .inc | JCL 包含檔案 | 
| 巨集 | .mac | 組裝器巨集 | 
| 控制卡 | .ctl | JCL 公用程式控制卡 | 

## 收集方法
<a name="transform-app-mainframe-source-artifacts-collection"></a>

### 原始程式碼擷取
<a name="transform-app-mainframe-source-artifacts-extraction"></a>

使用安全 FTP 用戶端 (WinSCP/FileZilla) 從大型主機 PDS 程式庫中擷取互動式原始程式碼。

### DB2 結構描述擷取
<a name="transform-app-mainframe-source-artifacts-db2"></a>

DB2 LUW (Linux、UNIX 和 Windows) 用戶端軟體包含 `db2look`公用程式做為其安裝套件的一部分。`db2look` 公用程式會從 DB2 資料庫擷取 DDL （資料定義語言） 陳述式。

執行以下命令：

```
db2look -d {{DATABASE_NAME}} -i {{userid}} -w {{password}} -a -e -m -l -x -f -createdb -printdbcfg -o {{DATABASE_NAME}}.sql
```

下列清單說明參數：
+ `-d {{DATABASE_NAME}}`：指定要從中擷取結構描述的資料庫名稱
+ `-i {{userid}}`：資料庫身分驗證的使用者 ID
+ `-w {{password}}`：資料庫身分驗證的密碼
+ `-a`：擷取授權資訊 （授與）
+ `-e`：擷取所有資料庫物件 （資料表、檢視、索引等）
+ `-m`：擷取統計資料和實體特性
+ `-l`：擷取資料表和資料欄註解
+ `-x`：擷取說明資料表
+ `-f`：格式化輸出以提高可讀性
+ `-createdb`：包括資料庫建立陳述式
+ `-printdbcfg`：包括資料庫組態參數
+ `-o {{DATABASE_NAME}}.sql`：指定輸出檔案名稱

### 從大型主機擷取目錄資訊
<a name="transform-app-mainframe-source-artifacts-catalog"></a>

IDCAMS 中的 LISTCAT 命令是一種公用程式，用於擷取大型主機上資料集的目錄資訊。這在大型主機現代化專案期間非常有用，可清查資料集並了解其特性。

```
//LSTCATJ JOB 'LISTCAT',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
//*
//STEP1 EXEC PGM=IDCAMS
//*
//SYSPRINT DD DSN=AWS.M2.CATALOG.LIST,
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(CYL,(1,1),RLSE),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0)
//*
//SYSIN DD *
  LISTCAT ENT('AWS.M2.CARDDEMO.*') ALL
  LISTCAT ENT('SYS1.*') ALL
/*
```

### 擷取 CICS 定義
<a name="transform-app-mainframe-source-artifacts-cics"></a>

IBM 提供的 DFHCSDUP 公用程式可以從 CICS 系統定義 (CSD) 檔案擷取 CICS 資源定義。

使用下列 JCL 從 DFHCSD 卸載現有定義：

```
//CSDEXTJ JOB 'EXTRACT CSD',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
//*
//STEP1 EXEC PGM=DFHCSDUP,REGION=0M,
//          PARM='CSD(READONLY),PAGESIZE(60),NOCOMPAT'
//*
//STEPLIB  DD DSN={{your-hlq}}.SDFHLOAD,DISP=SHR
//DFHCSD   DD DSN={{your-hlq}}.DFHCSD,DISP=SHR
//*
//CBDOUT   DD DSN={{your-hlq}}.CSD,
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(CYL,(1,1),RLSE),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
  EXTRACT GROUP({{cics-group}}) USERPROGRAM(DFH0CBDC) OBJECTS
/*
```

### 擷取 IMS 定義
<a name="transform-app-mainframe-source-artifacts-ims"></a>

若要擷取 IMS 定義，您可以使用 DFSURDD0 公用程式產生 IMS 交易檔案。此公用程式會建立階段 1 巨集陳述式，可用於遷移。目前僅支援 IMS 階段 1。

使用下列 JCL 擷取 IMS 定義：

```
//IMSEXTJ JOB 'IMS STAGE 1',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
//*
//STEP1 EXEC PGM=DFSURDD0,MEMLIMIT=12G
//*
//STEPLIB  DD DISP=SHR,DSN={{your-hlq}}.SDFSRESL
//*
//RDDSDSN DD DISP=SHR,DSN={{your-rdds}}
//*
//SYSOUT   DD DSN={{your-hlq}}.STAGE1.IMS,
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(CYL,(1,1),RLSE),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
  OUTPUT=MAC
/*
```

### 擷取 CA-7 排程器資訊
<a name="transform-app-mainframe-source-artifacts-ca7"></a>

CA-7 任務排程資訊包含在 LJOB 報告中。使用 LJOB 公用程式搭配 `LIST=NODD` 參數來產生大型主機的報告。報告必須具有`.ca7`副檔名。每個報告在資料欄 1 中都必須有 ANSI 換行控制字元。您可以在用來執行 LJOB 公用程式的 JCL 中指定 `DCB=RECFM=FBA`（或 FA)，在資料欄 1 中建立包含換行控制字元的報告。

例如：`LJOB,JOB=ZBN*,LIST=ALL`

如需詳細資訊，請參閱 [Broadcom 文件](https://www.broadcom.com/products/mainframe/job-scheduling/workload-automation)。

### 擷取 SMF 資料
<a name="transform-app-mainframe-source-artifacts-smf"></a>

System Management Facility (SMF) 記錄提供 AWS Transform 用來分析批次任務和 CICS 交易用量的活動指標。支援下列 SMF 記錄類型：14、15、30 （子類型 5)、64、102、110 （子類型 1 搭配資料類別 1、3 和 4)。

**SMF 記錄的格式需求：**
+ 必須包含記錄類型 30 和 110 （至少）
+ 必須是包含 RDW (Record Descriptor Word) 位元組的原始二進位 EBCDIC 格式
+ 必須以下列其中一種方式提供：
  + 高達 600 MB 的檔案，以 .zip 格式壓縮
  + 最多 5 GB 的檔案，以 .tar.gz 或 .gz 格式壓縮
+ 必須與 Amazon S3 中的原始程式碼存放在不同的資料夾中

提供至少 13 個月的 SMF 記錄，以擷取較短時間範圍可能遺漏的年度批次週期和季節性模式。

#### 選項 1：擷取和排序 SMF 記錄
<a name="transform-app-mainframe-source-artifacts-smf-option1"></a>

使用下列範例 JCL 來擷取和排序 SMF 記錄：

```
//SMFEXTR  JOB (ACCT),'EXTRACT SMF',CLASS=A,
//             MSGCLASS=X,NOTIFY=&SYSUID
//*-------------------------------------------------------------------*
//* SMF RECORD EXTRACTION TEMPLATE
//* CUSTOMIZE: Job card, dataset names, date range, record types
//*-------------------------------------------------------------------*
//*
//* STEP 1: EXTRACT SMF RECORDS
//*
//EXTRACT  EXEC PGM=IFASMFDP
//SYSPRINT DD SYSOUT=*
//*
//* INPUT: Specify your SMF datasets (MAN files or GDG)
//*
//DUMPIN   DD DISP=SHR,DSN={{SYS1.MAN1}}
//         DD DISP=SHR,DSN={{SYS1.MAN2}}
//         DD DISP=SHR,DSN={{SYS1.MAN3}}
//*
//* OUTPUT: Extracted SMF records
//*
//DUMPOUT  DD DSN={{your.hlq}}.SMF.EXTRACT,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=SYSDA,
//            SPACE=(CYL,(500,100),RLSE),
//            DCB=(RECFM=VBS,LRECL=32760,BLKSIZE=27998)
//*
//* CONTROL CARDS
//*
//SYSIN    DD *
  INDD(DUMPIN,OPTIONS(DUMP))
  OUTDD(DUMPOUT,TYPE(14,15,30,110))
  DATE({{yyyy/ddd,yyyy/ddd}})
  START(0000)
  END(2359)
/*
//*
//* STEP 2: SORT EXTRACTED RECORDS (OPTIONAL)
//*
//SORT     EXEC PGM=SORT
//SORTIN   DD DISP=SHR,DSN={{your.hlq}}.SMF.EXTRACT
//SORTOUT  DD DSN={{your.hlq}}.SMF.SORTED,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=SYSDA,
//            SPACE=(CYL,(500,100),RLSE),
//            DCB=(RECFM=VBS,LRECL=32760)
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(50))
//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(50))
//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(50))
//SYSOUT   DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  SORT FIELDS=(11,4,CH,A,7,4,CH,A,15,4,CH,A),EQUALS
/*
```

在上述 JCL 中自訂下列值：

1. 工作卡：更新帳戶、類別和訊息類別

1. DUMPIN：指向您的 SMF 資料集

1. DUMPOUT：指定輸出資料集名稱和 HLQ

1. TYPE：選取記錄類型 (14、15、30、110 或其他）

1. 日期：格式 yyyy/ddd （例如 2026/055、2026/056)

1. SPACE：根據預期的資料量調整

1. 如果不需要，請移除 SORT 步驟

#### 選項 2：使用 DFSORT 擷取 SMF 資料
<a name="transform-app-mainframe-source-artifacts-smf-option2"></a>

您可以使用 DFSORT 來合併和報告歷史 SMF 資料。如果您依日或週將 SMF 記錄存放在 GDG 中，這會很有幫助。下列任務使用 DFSORT 從 SORTIN 檔案合併 SMF 記錄，並根據 INCLUDE COND 參數中指定的記錄進行篩選。

```
//EXTRSMF JOB 'EXTRACT SMF RECORDS',CLASS=S,MSGCLASS=H,
// MSGLEVEL=(1,1),REGION=0M,NOTIFY=&SYSUID,TIME=1440
//SORTJES2 EXEC PGM=SORT,REGION=0M
//SYSOUT DD SYSOUT=*
//SORTMSG DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN={{your.hlq}}.SMF.EXTRACT
//SORTOUT DD DSN={{your.hlq}}.SMF.OUTPUT,
// DISP=(MOD,CATLG,DELETE),
// DCB=(BUFNO=20,
// RECFM=VBS,LRECL=32760,BLKSIZE=27998),
// SPACE=(CYL,(1400,900),RLSE)
//SORTWK1 DD UNIT=SYSDA,SPACE=(CYL,(30,50))
//SORTWK2 DD UNIT=SYSDA,SPACE=(CYL,(30,50))
//SORTWK3 DD UNIT=SYSDA,SPACE=(CYL,(30,50))
//SORTWK4 DD UNIT=SYSDA,SPACE=(CYL,(30,50))
//SYSIN DD *
OPTION COPY
INCLUDE COND=(6,1,BI,EQ,X'0E',OR,6,1,BI,EQ,X'0F',OR,
6,1,BI,EQ,X'1E',OR,6,1,BI,EQ,X'40',OR,
6,1,BI,EQ,X'50',OR,6,1,BI,EQ,X'59',OR,
6,1,BI,EQ,X'5C',OR,6,1,BI,EQ,X'65',OR,
6,1,BI,EQ,X'66',OR,6,1,BI,EQ,X'6E')
```

若要在保留 RDW 資料的同時下載資料，您可以使用 FTP 伺服器來接收解壓縮的檔案。確保以二進位格式傳輸資料，並使用 RDW 選項，以便將 RDW 包含在資料傳輸中。下列任務顯示傳輸此檔案的 FTP 任務範例。

```
//EXTRSMF JOB 'EXTRACT SMF RECORDS',CLASS=A,MSGCLASS=H,
// MSGLEVEL=(1,1),REGION=0M,NOTIFY=&SYSUID,TIME=1440
//STEP1 EXEC PGM=FTP,REGION=2048K
//SYSIN DD *
{{10.10.10.10}}
{{userid}}
{{password}}
type i
LOCSITE RDW
put '{{your.hlq}}.SMF.OUTPUT' {{SMFREQS.SMF}}
quit
```

### 上傳 SCRT 報告
<a name="transform-app-mainframe-source-artifacts-scrt"></a>

您也可以將子容量報告工具 (SCRT) 報告上傳至 AWS 轉換。

## 應用程式庫存上傳
<a name="transform-app-mainframe-source-artifacts-upload"></a>

收集所有成品之後，請完成下列步驟：

1. 依成品類型將檔案整理成子資料夾 （例如 /cobol、/jcl、/copybooks、/db2、/ims、/cics、/ca7)。

1. 將頂層資料夾壓縮為單一 .zip 檔案。

1. 將 .zip 檔案上傳至連接到 AWS 轉換工作區的 Amazon S3 儲存貯體。

**注意**  
SMF 記錄必須放置在與 Amazon S3 儲存貯體中原始碼不同的資料夾中，且必須是 .tar.gz 或 .gz 格式。

如需將 Amazon S3 儲存貯體連線至 AWS 轉換的詳細說明，請參閱 [設定連接器](transform-app-mainframe-workflow.md#transform-app-mainframe-workflow-setup-connector)。