

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

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

# 設定受管應用程式的公用程式存取權
<a name="applications-m2-ba-utilities"></a>

當您使用適用於大型主機的 AWS Transform 重構大型主機應用程式時，如果您的應用程式依賴於 IDCAMS、INFUTILB、SORT 等各種舊版平台公用程式，您可能需要提供支援。適用於大型主機重構的 AWS Transform 提供此存取權，其中包含與現代化應用程式一起部署的專用 Web 應用程式。此 Web 應用程式需要`application-utility-pgm.yml`您必須提供的組態檔案 。如果您不提供此組態檔案，則 Web 應用程式無法與您的應用程式一起部署，也無法使用。

**Topics**
+ [組態屬性](#applications-m2-ba-utilities-props)

本主題說明您可以在`application-utility-pgm.yml`組態檔案中指定的所有可能屬性，以及其預設值。主題說明必要和選用屬性。下列範例是完整的組態檔案。它依我們建議的順序列出屬性。您可以使用此範例做為您自己的組態檔案的起點。

```
# If the datasource support mode is not static-xa, spring JTA transactions autoconfiguration must be disabled
 spring.jta.enabled: false
 logging.config: 'classpath:logback-utility.xml'
 
 # Encoding
 encoding: cp1047
 
 # Encoding to be used by INFUTILB and DSNUTILB to generate and read SYSPUNCH files
 sysPunchEncoding: cp1047
 
 # Utility database access
 spring.aws.client.datasources.primary.secret: `arn:aws:secretsmanager:us-west-2:111122223333:secret:business-FfmXLG`
 
 treatLargeNumberAsInteger: false
 
 # Zoned mode : valid values = EBCDIC_STRICT, EBCDIC_MODIFIED, AS400 
 zonedMode: EBCDIC_STRICT
 
 jcl.type: mvs
 
 # Unload properties 
 # For date/time: if use database configuration is enabled, formats are ignored
 # For nbi; use hexadecimal syntaxe to specify the byte value
 unload:
  sqlCodePointShift: 384
  nbi:
    whenNull: "6F"
    whenNotNull: "00"
  useDatabaseConfiguration: false
  format:
    date: MM/dd/yyyy
    time: HH.mm.ss
    timestamp: yyyy-MM-dd-HH.mm.ss.SSSSSS
  chunkSize:500
  fetchSize: 500
  varCharIsNull: false
  columnFiller: space  
 
 # Load properties 
 # Batch size for DSNUTILB Load Task
 load:
  sqlCodePointShift: 384
  batchSize: 500
  format:
    localDate: dd.MM.yyyy|dd/MM/yyyy|yyyy-MM-dd
    dbDate: yyyy-MM-dd
    localTime: 'HH:mm:ss|HH.mm.ss'
    dbTime: 'HH:mm:ss'
 
 table-mappings:
  TABLE_1_NAME : LEGACY_TABLE_1_NAME
  TABLE_2_NAME : LEGACY_TABLE_2_NAME
```

## 組態屬性
<a name="applications-m2-ba-utilities-props"></a>

您可以在組態檔案中指定下列屬性。

**spring.jta.enabled**  
 （選用） 控制是否啟用 JTA 支援。對於公用程式，我們建議您將此值設定為 `false`。  

```
spring.jta.enabled : false
```

**logging.config**  
 （必要） 指定專用記錄器組態檔案的路徑。我們建議您使用 名稱`logback-utility.xml`，並提供此檔案做為現代化應用程式的一部分。組織這些檔案的常見方法是將所有記錄器組態檔案放在相同位置，通常是在子資料夾中`/config/logback`，其中 `/config` 是包含 YAML 組態檔案的資料夾。如需詳細資訊，請參閱 [Logback 文件中的第 3 章：Logback 組態](https://logback.qos.ch/manual/configuration.html)。  

```
logging.config : classpath:logback-utility.xml
```

**編碼**  
 （必要） 指定公用程式使用的字元集。在大多數情況下，當您從 z/OS 平台遷移時，此字元集是 EBCDIC 變體，且應與針對現代化應用程式設定的字元集相符。如果未設定 ，則預設為 `ASCII`。  

```
encoding : cp1047
```

**sysPunchEncoding**  
 （選用） 指定 INFUTILB 和 DSNUTILB 用來產生和讀取 SYSPUNCH 檔案的字元集。如果您使用舊版平台中的 SYSPUNCH 檔案，則此值應為 EBCDIC 變體。如果未設定 ，則預設為 `ASCII`。  

```
sysPunchEncoding : cp1047
```

### 資料來源組態
<a name="applications-m2-ba-utilities-props-data"></a>

有些資料庫相關的公用程式，例如 LOAD 和 UNLOAD，需要透過資料來源存取目標資料庫。如同 AWS 大型主機現代化中的其他資料來源定義，此存取需要您使用 AWS Secrets Manager。指向 Secrets Manager 中適當秘密的屬性如下：

#### 主要資料來源
<a name="applications-m2-ba-utilities-props-data-primary"></a>

這是主要商業應用程式資料庫。

**spring.aws.client.datasources.primary.secret**  
 （選用） 在 Secrets Manager 中指定包含資料來源屬性的秘密。  

```
spring.aws.client.datasources.primary.secret: datasource-secret-ARN
```

**spring.aws.client.datasources.primary.dbname**  
（選用） 如果資料庫名稱未直接在資料庫秘密中提供，請使用 `dbname` 屬性指定目標資料庫名稱。  

```
spring.aws.client.datasources.primary.dbname: target-database-name
```

**spring.aws.client.datasources.primary.type**  
（選用） 指定要使用的連線集區實作的完整名稱。預設值為 `com.zaxxer.hikari.HikariDataSource`。  

```
spring.aws.client.datasources.primary.type: target-datasource-type
```
如果主要資料來源的類型為 `com.zaxxer.hikari.HikariDataSource`，您可以指定其他屬性，如下所示：

**spring.datasource.primary.【property\$1name】**  
（選用） 您可以使用此格式來指定額外的屬性，以設定主要資料來源連線集區實作。  
以下是類型 之主要資料來源的範例`com.zaxxer.hikari.HikariDataSource`。  

```
spring:
   datasource:
       primary:
         autoCommit: XXXX
         maximumPoolSize: XXXX
         keepaliveTime: XXXX
         minimumIdle: XXXX
         idleTimeout: XXXX
         connectionTimeout: XXXX
         maxLifetime: XXXX
```

#### 其他公用程式資料來源
<a name="applications-m2-ba-utilities-props-data-other"></a>

除了主要資料來源之外，您還可以提供其他公用程式資料來源。

**spring.aws.client.utility.pgm.datasources.names**  
（選用） 指定公用程式資料來源名稱的清單。  

```
spring.aws.client.utility.pgm.datasources.names: dsname1, dsname2, dsname3
```

**spring.aws.client.utility.pgm.datasources.【dsname】.secret**  
（選用） 指定 SSM 中託管資料來源屬性的秘密 ARN。在 中指定的名稱清單中提供 【dsname】`spring.aws.client.utility.pgm.datasources.names`。  

```
spring.aws.client.utility.pgm.datasources.dsname1.secret: datasource-secret-ARN
```

**spring.aws.client.utility.pgm.datasources.【dsname】.dbname**  
（選用） 如果資料庫名稱未使用 `dbname` 屬性直接在資料庫秘密中提供，則指定目標資料庫名稱。在 中指定的名稱清單中提供 【dsname】`spring.aws.client.utility.pgm.datasources.names`。  

```
spring.aws.client.utility.pgm.datasources.dsname1.dbname: target-database-name
```

**spring.aws.client.utility.pgm.datasources.【dsname】.type**  
（選用） 指定要使用的連線集區實作的完整名稱。預設值為 `com.zaxxer.hikari.HikariDataSource`。在 中指定的名稱清單中提供 【dsname】`spring.aws.client.utility.pgm.datasources.names`。  

```
spring.aws.client.utility.pgm.datasources.dsname1.type: target-datasource-type
```
如果公用程式資料來源類型為 `com.zaxxer.hikari.HikariDataSource`，您可以提供其他屬性，如下所示：

**spring.datasource.【dsname】.【property\$1name】**  
（選用） 指定額外屬性的集合，以設定公用程式資料來源連線集區實作。在 中指定的名稱清單中提供 【dsname】`spring.aws.client.utility.pgm.datasources.names`。以下列格式指定屬性： `property_name : value`  
以下是 類型之其他公用程式資料來源的範例`com.zaxxer.hikari.HikariDataSource`：  

```
spring:
   datasource:
       dsname1:
         connectionTimeout: XXXX
         maxLifetime: XXXX
       dsname2:
         connectionTimeout: XXXX
         maxLifetime: XXXX
       dsname3:
         connectionTimeout: XXXX
         maxLifetime: XXXX
```

**treatLargeNumberAsInteger**  
 （選用） 與 Oracle 資料庫引擎詳細資訊和 DSNTEP2/DSNTEP4 公用程式用量相關。如果您將此旗標設定為 true，則來自 Oracle 資料庫 (NUMBER (38，0)) 的大型數字會視為整數。預設：`false`  

```
treatLargeNumberAsInteger : false
```

**zonedMode**  
（選用） 設定分區模式來編碼或解碼分區的資料類型。此設定會影響符號數字的表示方式。有效值如下：  
+ *EBCDIC\$1STRICT*：預設。對符號處理使用嚴格定義。根據字元集是 EBCDIC 還是 ASCII，符號位數表示會使用下列字元：
  + 對應至位元組 (`Cn+Dn`) 的 EBCDIC 字元，代表正負位數範圍 (`+0` 到 `+9`、 `-0`到 `-9`)。字元顯示為 `{`、`A` 到 `}`、、 `I``J`到 `R`
  + 對應至位元組 (`3n+7n`) 的 ASCII 字元，代表正負位數範圍 (`+0` 到 `+9`、 `-0`到 `-9`)。字元顯示為 `0` 到 `9`，`p`顯示為 `y`
+ *EBCDIC\$1MODIFIED*：使用修改後的符號處理定義。對於 EBDIC 和 ASCII，相同的字元清單代表符號數字，即`+0``+9`映射至 `{` \$1 `A`至 ，`I`以及`-0``-9`映射至 `}` \$1 `J`至 `R`。 \$1 
+ *AS400*：用於來自 iSeries (AS400) 平台的現代化舊版資產。

```
zonedMode:EBCDIC_STRICT
```

**jcl.type**  
 （選用） 指出現代化 JCL 指令碼的舊版類型。如果叫用 JCL 的類型為 ，IDCAMS 公用程式會使用此設定來量身打造傳回碼`vse`。有效值如下：  
+ `mvs` (預設值)
+ `vse`

```
jcl.type : mvs
```

### 資料庫卸載公用程式相關屬性
<a name="applications-m2-ba-utilities-props-unload"></a>

 使用這些屬性來設定公用程式，將資料庫資料表卸載至資料集。下列所有屬性都是選用的。

 此範例顯示所有可能的卸載屬性。

```
# Unload properties 
 # For date/time: if use database configuration is enabled, formats are ignored
 # For nbi; use hexadecimal syntaxe to specify the byte value
 unload:
 sqlCodePointShift: 0
 nbi:
 whenNull: "6F"
 whenNotNull: "00"
 useDatabaseConfiguration: false
 format:
 date: MM/dd/yyyy
 time: HH.mm.ss
 timestamp: yyyy-MM-dd-HH.mm.ss.SSSSSS 
 chunkSize: 0
 fetchSize: 0
 varCharIsNull: false
 columnFiller: space
```

**sqlCodePointShift**  
 （選用） 指定整數值，代表資料上使用的 SQL 程式碼點轉移。預設值為 0。這表示不會進行程式碼點轉移。將此設定與用於現代化應用程式的 SQL 程式碼點轉移參數對齊。使用程式碼點轉移時，此參數最常見的值為 384。  

```
unload.sqlCodePointShift: 0
```

**nbi**  
 （選用） 指定 null 指標位元組。這是新增至資料值右側的十六進位值 （做為字串）。兩個可能的值如下所示：  
+ *whenNull*：當資料值為 null 時新增十六進位值。預設值為 `6``。有時候`FF`會改用高值。

  ```
  unload.nbi.whenNull: "6F"
  ```
+ *whenNotNull*：當資料值不是 null 但資料欄為 null 時，新增十六進位值。預設值為 `00`（低值）。

  ```
  unload.nbi.whenNotNull: "00"
  ```

**useDatabaseConfiguration**  
 （選用） 指定日期和時間格式屬性。這用於處理 UNLOAD 查詢中的日期/時間物件。預設值為 `false`。  
+ 如果設定為 `true`， 會使用主組態檔案 () 中的 `pgmDateFormat``pgmTimeFormat`、 和 `pgmTimestampFormat` 屬性`application-main.yml`。
+ 如果設定為 `false`， 會使用下列日期和時間格式屬性：
  + `unload.format.date`：指定日期格式模式。預設值為 `MM/dd/yyyy`。
  + `unload.format.time`：指定時間格式模式。預設值為 `HH.mm.ss`。
  + `unload.format.timestamp`：指定時間戳記格式模式。預設值為 `yyyy-MM-dd-HH.mm.ss.SSSSSS`。

**chunkSize**  
 （選用） 指定用於建立 SYSREC 資料集的資料區塊大小。這些資料集是具有平行操作的資料集卸載操作的目標。預設為 `0`（無區塊）。  

```
unload.chunkSize:0
```

**fetchSize**  
 （選用） 指定資料擷取大小。此值是使用資料區塊策略時，一次要擷取的記錄數目。預設：`0`。  

```
unload.fetchSize:0
```

**varCharIsNull**  
 （選用） 指定如何處理含空白內容的非 null varchar 資料欄。預設值為 `false`。  
 如果您將此值設定為 `true`，資料欄內容會被視為空字串以用於卸載，而非單一空格字串。將此旗標設定為 ，僅適用於 `true` Oracle 資料庫引擎案例。  

```
unload.varCharIsNull: false
```

**columnFiller**  
 （選用） 指定用於填補 varchar 資料欄中卸載資料欄的值。可能的值為空格或低值。預設為空格。  

```
unload.columnFiller: space
```

### 資料庫載入相關屬性
<a name="applications-m2-ba-utilities-props-load"></a>

 使用這些屬性來設定公用程式，將資料集記錄載入目標資料庫，例如 DSNUTILB。下列所有屬性都是選用的。

 此範例顯示所有可能的負載屬性。

```
# Load properties 
 # Batch size for DSNUTILB Load Task
 load:
 sqlCodePointShift: 384
 batchSize: 500
 format:
 localDate: dd.MM.yyyy|dd/MM/yyyy|yyyy-MM-dd
 dbDate: yyyy-MM-dd
 localTime: HH:mm:ss|HH.mm.ss
 dbTime: HH:mm:ss
 
 table-mappings:
 TABLE_1_NAME : LEGACY_TABLE_1_NAME
 TABLE_2_NAME : LEGACY_TABLE_2_NAME
```

**sqlCodePointShift**  
 （選用） 指定整數值，代表用於資料上的 SQL 程式碼點轉移。預設為 0，這表示應用程式不會轉移程式碼點。將此設定與用於現代化應用程式的 SQL 程式碼點轉移參數對齊。當您使用程式碼點轉移時，此參數最常見的值為 384。  

```
load.sqlCodePointShift : 384
```

**batchSize**  
 （選用） 指定整數值，代表在將實際批次陳述式傳送至資料庫之前要處理的記錄數。預設為 0。  

```
load.batchSize: 500
```

**格式**  
 （選用） 指定資料庫載入操作期間用於日期/時間轉換的日期和時間格式模式。  
+ `load.format.localDate`：本機日期格式模式。預設值為 `dd.MM.yyyy|dd/MM/yyyy|yyyy-MM-dd`。
+ `load.format.dbDate`：資料庫日期格式模式。預設值為 `yyyy-MM-dd`。
+ `load.format.localTime`：本機時間格式模式。預設值為 `HH:mm:ss|HH.mm.ss`。
+ `load.format.dbTime`：資料庫時間格式模式。預設值為 `HH:mm:ss`。

**資料表映射**  
 （選用） 指定舊版和現代資料表名稱之間客戶提供的映射集合。DSNUTILB 公用程式會使用這些映射。  
以下列格式指定值：*MODERN\$1TABLE\$1NAME：LEGACY\$1TABLE\$1NAME*  
請見此處範例：  

```
table-mappings:
 TABLE_1_NAME : LEGACY_TABLE_1_NAME
 TABLE_2_NAME : LEGACY_TABLE_2_NAME
 ...
 TABLE_*N*_NAME : LEGACY_TABLE_*N*_NAME
```
當公用程式應用程式啟動時，它會明確記錄所有提供的映射。