

AWS Mainframe Modernization Service(관리형 런타임 환경 환경 환경)는 더 이상 신규 고객에게 공개되지 않습니다. AWS Mainframe Modernization Service(관리형 런타임 환경 환경)와 유사한 기능은 AWS Mainframe Modernization Service(자체 관리형 환경)를 참조하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [AWS Mainframe Modernization 가용성 변경을](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html) 참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 관리형 애플리케이션의 유틸리티에 대한 액세스 구성
<a name="applications-m2-ba-utilities"></a>

메인프레임용 AWS 변환을 사용하여 메인프레임 애플리케이션을 리팩터링하는 경우 애플리케이션이 의존하는 경우 IDCAMS, INFUTILB, SORT 등과 같은 다양한 레거시 플랫폼 유틸리티 프로그램에 대한 지원을 제공해야 할 수 있습니다. 메인프레임 리팩터링을 위한 AWS 변환은 현대화된 애플리케이션과 함께 배포되는 전용 웹 애플리케이션을 통해 이러한 액세스를 제공합니다. 이 웹 애플리케이션에는 사용자가 제공해야 하는 `application-utility-pgm.yml` 구성 파일이 필요합니다. 이 구성 파일을 제공하지 않으면 웹 응용 프로그램을 응용 프로그램과 함께 배포할 수 없으며 사용할 수 없게 됩니다.

**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 구성 파일이 들어 있는 폴더입니다. 자세한 내용은 로그백 설명서의 [챕터3: 로그백 구성](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을 지정합니다. `spring.aws.client.utility.pgm.datasources.names`에 지정된 이름 목록에 [dsname]을 제공합니다.  

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

**spring.aws.client.utility.pgm.datasources.[dsname].dbname**  
(선택 사항) 데이터베이스 이름이 `dbname` 속성을 사용하여 데이터베이스 보안 암호에 직접 제공되지 않는 경우 대상 데이터베이스 이름을 지정합니다. `spring.aws.client.utility.pgm.datasources.names`에 지정된 이름 목록에 [dsname]을 제공합니다.  

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

**spring.aws.client.utility.pgm.datasources.[dsname].type**  
(선택 사항) 사용할 연결 풀 구현의 정규화된 이름을 지정합니다. 기본값은 `com.zaxxer.hikari.HikariDataSource`입니다. `spring.aws.client.utility.pgm.datasources.names`에 지정된 이름 목록에 [dsname]을 제공합니다.  

```
spring.aws.client.utility.pgm.datasources.dsname1.type: target-datasource-type
```
유틸리티 데이터 소스 유형이 `com.zaxxer.hikari.HikariDataSource`인 경우 다음과 같이 추가 속성을 제공할 수 있습니다.

**spring.datasource.[dsname].[property\$1name]**  
(선택 사항) 유틸리티 데이터 소스 연결 풀 구현을 구성할 추가 속성 모음을 지정합니다. `spring.aws.client.utility.pgm.datasources.names`에 지정된 이름 목록에 [dsname]을 제공합니다. `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로 설정하면 오라클 데이터베이스에서 오는 큰 수(NUMBER(38,0))는 정수로 처리됩니다. 기본값: `false`  

```
treatLargeNumberAsInteger : false
```

**zonedMode**  
(선택 사항) 영역 데이터 유형을 인코딩 또는 디코딩하도록 영역 모드를 설정합니다. 이 설정은 부호 숫자가 표시되는 방식에 영향을 줍니다. 유효한 값은 다음과 같습니다.  
+ *EBCDIC\$1STRICT*: 기본값. 표지판 처리에는 엄격한 정의를 사용하세요. 문자 집합이 EBCDIC인지 ASCII인지에 따라 부호 숫자 표현에는 다음 문자가 사용됩니다.
  + 바이트(`Cn+Dn`) 에 해당하는 EBCDIC 문자는 양수 및 음수 범위(`+0` \$1 `+9`, `-0` \$1 `-9`)를 나타냅니다. 문자는 `{`,`A` \$1 `I`, `}`, `J` \$1 `R`로 표시됩니다
  + 양수 및 음수 범위(`+0` \$1 `+9`, `-0` \$1 `-9`)를 나타내는 바이트(`3n+7n`)에 해당하는 ASCII 문자입니다. 문자는 `0` \$1 `9`, `p` \$1 `y`로 표시됩니다
+ *EBCDIC\$1MODIFIED*: 표지판 처리에 수정된 정의를 사용합니다. EBDIC와 ASCII 모두에서 동일한 문자 목록이 부호 숫자를 나타냅니다. 즉, `+0` \$1 `+9`은`{` \$1 `A` \$1 `I`에 매핑되고 `-0` \$1 `-9`는 `}` \$1 `J` \$1 `R`에 매핑됩니다. \$1 
+ *AS400*: iSeries(AS400) 플랫폼에서 제공되는 현대화된 레거시 자산에 사용합니다.

```
zonedMode:EBCDIC_STRICT
```

**jcl.type**  
 (선택 사항) 현대화된 JCL 스크립트의 레거시 유형을 나타냅니다. IDCAMS 유틸리티는 호출 JCL의 유형 `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 표시기 바이트를 지정합니다. 이 값은 데이터 값 오른쪽에 추가된 16진수 값(문자열)입니다. 가능한 값은 다음과 같습니다.  
+ *whenNull*: 데이터 값이 null인 경우 16진수 값을 추가합니다. 기본값은 `6``입니다. 높은 값 `FF`이 대신 사용되는 경우도 있습니다.

  ```
  unload.nbi.whenNull: "6F"
  ```
+ *whenNotNull*: 데이터 값이 null은 아니지만 열에 null을 사용할 수 있는 경우 16진수 값을 추가합니다. 기본값은 `00`(낮은 값)입니다.

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

**useDatabaseConfiguration**  
 (선택 사항) 날짜 및 시간 형식 지정 속성을 지정합니다. 이는 UNLOAD 쿼리의 날짜/시간 객체를 처리하는 데 사용됩니다. 기본값은 `false`입니다.  
+ `true`로 설정하면 기본 구성 파일(`application-main.yml`)의 `pgmDateFormat`, `pgmTimeFormat`, 및 `pgmTimestampFormat` 속성을 사용합니다.
+ `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`으로 설정하면 언로드 시 열 내용이 단일 공백 문자열 대신 빈 문자열로 처리됩니다. Oracle 데이터베이스 엔진 케이스에만 이 플래그를 `true`로 설정하세요.  

```
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`입니다.

**table-mappings**  
 (선택 사항) 기존 테이블 이름과 최신 테이블 이름 간의 고객 제공 매핑 컬렉션을 지정합니다. 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
```
유틸리티 응용 프로그램이 시작되면 제공된 모든 매핑을 명시적으로 기록합니다.