

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="system-datasets-utilities"></a>

## BLUESAMCOPY/BLUESAMCREATE/BLUESAMDELETE/BLUESAMCLEAR
<a name="bluesam-utilities"></a>

이러한 유틸리티 프로그램은 [Blusam 데이터 세트에 필수 데이터 세트](https://docs.aws.amazon.com/m2/latest/userguide/ba-shared-blusam.html) 조작 기능을 제공합니다.

`bypassBluesamStatus` 플래그(JobContext에 저장됨)는 온라인 프로세스와 배치 프로세스 간의 동시 액세스 충돌을 방지하는 일반 데이터 세트 상태 검증을 우회할지 여부를 결정합니다.

`bypassBluesamStatus`가 true인 경우:
+ 작업 중 정상적인 데이터 세트 상태 확인 건너뛰기
+ 일반적으로 차단될 수 있는 데이터 세트에 대한 액세스를 허용합니다.

### 블루삼코피
<a name="bluesamcopy"></a>

BlueSAMCOPY 프로그램은 한 Bluesam 데이터 세트에서 다른 Bluesam 데이터 세트로 데이터 및 메타데이터 구조를 복사합니다.

#### 파라미터
<a name="bluesamcopy-parameters"></a>

blueSAMCOPY 프로그램은 두 가지 파라미터를 사용합니다.
+ `FROM=<source dataset name>` - 복사할 소스 데이터 세트
+ `TO=<target dataset name>` - 복사할 대상 데이터 세트

#### 동작
<a name="bluesamcopy-behavior"></a>
+ 대상 데이터 세트가 없는 경우는 소스의 메타데이터 구조로 데이터 세트를 생성합니다.
+ 대상이 있는 경우 복사하기 전에 지웁니다(기존 데이터 덮어쓰기).
+ 온라인 프로세스에서 데이터 세트를 사용하지 않거나이 true로 `bypassBluesamStatus` 설정된 경우 작업이 진행됩니다.
+ 키, 압축, 레코드 길이 및 기타 메타데이터 속성을 보존합니다.

#### 오류 처리
<a name="bluesamcopy-error"></a>

소스 데이터 세트가 없거나 온라인 프로세스에서 데이터 세트를 사용 중인 경우 코드 1을 반환합니다.

#### 샘플 사용량
<a name="bluesamcopy-sample"></a>

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

// copy bluesam dataset
res = mpr.withArguments("FROM=MYBLUESAMTABLE","TO=MYBLUESAMTABLE2").runProgram("BLUESAMCOPY")
```

### 블루SAMCREATE
<a name="bluesamcreate"></a>

블루SAMCREATE 프로그램은 지정된 파라미터를 사용하여 Bluesam 데이터 세트를 생성합니다.

#### 파라미터
<a name="bluesamcreate-parameters"></a>

블루SAMCREATE 프로그램은 7개의 파라미터를 사용합니다.
+ `name=<dataset name>` - 생성할 데이터 세트(필수)
+ `compress=<true/false>` - 압축 활성화(선택 사항, 기본값: false)
+ `fixedLength=<true/false>` - 고정 길이 레코드 상태(선택 사항, 기본값: false)
+ `recordLength=<integer>` - 바이트 단위의 레코드 길이(선택 사항, 기본값: -1)
+ `primaryKey=<key id>,duplicates=<true/false>,fields=<offset,length,...>` - 기본 키 사양(선택 사항)
+ `key=<altkey id>,duplicates=<true/false>,fields=<offset,length,...>` - 대체 키(여러 또는 0이 있을 수 있음)
+ `clearExisting=true/false` - 기존 데이터 세트 지우기(선택 사항 기본값: true)

 특정 키 파라미터 설명:
+ `duplicates`: 지정된 키에 중복 값이 허용되는지 여부
+ `fields`: 키를 정의하는 필드 위치(1 기반) 및 길이

#### 동작
<a name="bluesamcreate-behavior"></a>
+ 데이터 세트가 없는 경우는 지정된 파라미터로 데이터 세트를 생성합니다.
+ 데이터 세트가 있는 경우는 다음과 같은 경우 데이터 세트를 지웁니다. `clearExisting=true` 
+ 온라인 프로세스에서 데이터 세트를 사용하지 않거나이 로 `bypassBluesamStatus` 설정된 경우 작업이 진행됩니다. `true` 

#### 오류 조건
<a name="bluesamcreate-error"></a>

모든 경우에 코드 0을 반환합니다.

#### 샘플 사용량
<a name="bluesamcreate-sample"></a>

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

// create bluesam dataset
mpr.withArguments(
      "name=MYBLUESAMTABLE",
      "compress=FALSE", 
      "fixedLength=true", 
      "recordLength=54",
      "primaryKey=MYKEY_PK,duplicates=FALSE,fields=0,6")
    .runProgram("BLUESAMCREATE")
```

### 블루SAMDELETE
<a name="bluesamdelete"></a>

blueSAMDELETE 프로그램은 Bluesam 데이터 세트를 삭제합니다.

#### 파라미터
<a name="bluesamdelete-parameters"></a>

블루SAMDELETE 프로그램은 1개 이상의 파라미터를 사용합니다.
+ `<dataset name>` - 삭제할 데이터 세트(여러 개가 있을 수 있음)

#### 동작
<a name="bluesamdelete-behavior"></a>
+ 온라인 프로세스에서 데이터 세트를 사용하지 않거나이 로 `bypassBluesamStatus` 설정된 경우 작업이 진행됩니다. `true` 
+ 데이터 세트가 있는 경우 삭제합니다.

#### 오류 조건
<a name="bluesamdelete-error"></a>

모든 경우에 코드 0을 반환합니다.

#### 샘플 사용량
<a name="bluesamdelete-sample"></a>

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

// delete bluesam datasets
res = mpr.withArguments("MYBLUESAMTABLE","MYBLUESAMTABLE2","MYBLUESAMTABLE3").runProgram("BLUESAMDELETE")
```

### 블루삼클리어
<a name="bluesamclear"></a>

BLUESAMCLEAR 프로그램은 구조와 메타데이터를 유지하면서 기존 데이터 세트에서 모든 데이터를 제거합니다.

#### 파라미터
<a name="bluesamclear-parameters"></a>

blueSAMCLEAR 프로그램은 1개 이상의 파라미터를 사용합니다.
+ `<dataset name>` - 지울 데이터 세트(여러 개가 있을 수 있음)

#### 동작
<a name="bluesamclear-behavior"></a>
+ 온라인 프로세스에서 데이터 세트를 사용하지 않거나이 로 `bypassBluesamStatus` 설정된 경우 작업이 진행됩니다. `true` 
+ 데이터 세트가 있는 경우 지웁니다.

#### 오류 조건
<a name="bluesamclear-error"></a>

모든 경우에 코드 0을 반환합니다.

#### 샘플 사용량
<a name="bluesamclear-sample"></a>

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

// clear bluesam datasets
res = mpr.withArguments("MYBLUESAMTABLE","MYBLUESAMTABLE2").runProgram("BLUESAMCLEAR")
```

## BPXWDYN
<a name="bpxwdyn"></a>

이 유틸리티 프로그램은 동적 데이터 세트 할당 및 할당 해제를 위해 z/OS BPXWDYN 서비스를 시뮬레이션합니다. 최신 애플리케이션에서 파일 할당은 `FileConfigurationUtils`빌더 API를 통해 Groovy 스크립트에서 수행됩니다. 이 프로그램을 사용하면 현대화된 애플리케이션에서 대화형 또는 조건부 파일 처리에 필수적인 Groovy 없이 이러한 할당을 동적으로 관리할 수 있습니다.

### 파라미터
<a name="bpxwdyn-parameters"></a>

레거시 인수 형식은 보존됩니다. 2바이트 크기 헤더와 명령 문자열이 포함된 단일 인수가 필요합니다.

할당을 위한 명령 문자열 형식: `ALLOC DD(<name>) DSN('<dsn>') SHR?`

할당 해제를 위한 명령 문자열 형식: `FREE DD(<name>)`

### 오류 처리
<a name="bpxwdyn-error"></a>
+ 오류 코드 0을 성공으로 설정하고 1을 실패로 설정합니다.
+ 잘못된 명령 또는 파라미터에 대한 RuntimeException 발생

### 샘플 사용량
<a name="bpxwdyn-sample"></a>

다음은 AWS 변환을 통한 COBOL 현대화로 인한 BPXWDYN 프로그램의 Java 샘플 사용량입니다.

COBOL 코드:

```
   01  WK-AREA.
       03  DS-ALLOC-STRING.
           05  DS-LENGTH          PIC S9(004) COMP VALUE 100.
           05  DS-TEXT            PIC  X(100) VALUE
            "ALLOC DD(INFILE) DSN('A.B.JCLLIB(XYZ470)') SHR".
...
           01  RC-RETURN-CODE-AREA.
       03  RC-RETURN-CODE         PIC S9(008) COMP.
...
     CALL  'BPXWDYN'  USING  DS-ALLOC-STRING RETURNING RC-RETURN-CODE.
```

및 일치하는 Java 현대화:

```
private final Group dsAllocString = new Group(root).named("DS-ALLOC-STRING");
private final Elementary dsLength = new Elementary(dsAllocString,new BinaryType(4, 0, "STD", false, false, true),Short.valueOf("100")).named("DS-LENGTH");
private final Elementary dsText = new Elementary(dsAllocString,new AlphanumericType(100),"ALLOC DD(INFILE) DSN('A.B.JCLLIB(XYZ470)') SHR").named("DS-TEXT");
...
private final Group root = new Group(getData()).named("RC-RETURN-CODE-AREA"); 
private final Elementary rcReturnCode = new Elementary(root,new BinaryType(8, 0, "STD", false, false, true)).named("RC-RETURN-CODE");
...
    // Call to utility program  BPXWDYN
ctrl.callSubProgram(
       "BPXWDYN", 
        CallBuilder.newInstance().byReference(ctx.getWkArea().getDsAllocStringReference()).getArguments(), ctx);
 
ctx.getRcReturnCodeArea().setRcReturnCode(NumberUtils.convert(ctx.getProgramReturned()).intValue());
```

## GDGUTILS
<a name="gdgutils"></a>

GDGs(생성 데이터 그룹)를 사용하면 애플리케이션이 이전 세대에 대한 액세스를 유지하면서 각 실행이 새 세대를 생성하는 버전이 지정된 데이터 세트로 작업할 수 있습니다. 이 유틸리티는 이러한 데이터 세트 생성을 생성하고 관리합니다. 이 유틸리티는 groovy 스크립트에서 호출됩니다.

### 파라미터
<a name="gdgutils-parameters"></a>

파라미터 순서는 중요하지 않습니다.
+ `action=<create|refreshevents>` - 수행할 작업(필수)
+ `gdgname=<name>` - GDG 기반 이름(필수)
+ `storageProvider=<filesystem|bluesam>` - 스토리지 백엔드
+ `relativeGeneration=<+integer>` - 상대 생성 번호(예: 다음에 대해 \+1)
+ `absoluteGeneration=integer` - 절대 생성 번호
+ `recordLength=<integer>` - 데이터 세트의 레코드 크기
+ `fixedLength=<true/false>` - 레코드의 데이터 세트 길이가 고정되도록 지정합니다.
+ `ownerPath=<File system path>` - 데이터 세트를 저장하는 경로(파일 시스템별,이 경우 필수)
+ `compress=<true/false>` - 데이터가 데이터 스토어에서 압축된 경우 메모리에서 데이터를 압축해야 함을 나타냅니다(블루삼만 해당)(선택 사항, false는 기본값).
+ `catalog` - 카탈로그화할 데이터 세트를 지정합니다(선택 사항).
+ `warmUp` - 데이터 세트를 열 때 메모리에 로드해야 함을 나타냅니다(블루삼만 해당). (선택 사항)

relativeGeneration 또는 absoluteGeneration: 이러한 속성 중 하나를 설정해야 합니다.

### 운영
<a name="gdgutils-operations"></a>
+ create: GDG 메타데이터에 따라 새 GDG 데이터 세트 생성을 생성합니다(파일 시스템과 Bluesam 스토리지 모두 처리).
+ refreshevents: 새 데이터 세트를 생성하지 않고 생성 수(Gdg 메타데이터)를 조정합니다(데이터 세트를 이미 생성한 실패한 작업을 다시 시작할 때 사용됨).

### 오류 처리
<a name="gdgutils-error"></a>
+ 오류 코드 0을 성공으로 설정하고 1을 실패로 설정합니다.
+ 잘못된 명령 또는 파라미터에 대한 RuntimeException 발생

### 샘플 사용량
<a name="gdgutils-sample"></a>

Gdg 생성 작업: 다음 코드는 `IC.PLI.GDGTEST` 데이터 세트에 대한 블루삼 생성(43)을 생성합니다.

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

Map params = new Hashtable()
params.put("jobContext", jobContext)
Object[] args =["action=create","gdgname=IC.PLI.GDGTEST","absoluteGeneration=43","storageProvider=bluesam","recordLength=80"]
mpr.withParameters(params).withArguments(args).runProgram("GDGUTILS")
```

Gdg refreshevents 작업: relativeGeneration만이 작업과 관련이 있습니다. 다음 코드는 `IC.PLI.GDGTEST` 데이터 세트의 생성 번호(현재 세대와 비교하여 \+1)를 업데이트합니다.

```
import ...

mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)

Map params = new Hashtable()
params.put("jobContext", jobContext)
Object[] args =["action=refreshevents","gdgname=IC.PLI.GDGTEST","relativeGeneration=1","storageProvider=bluesam"]
mpr.withParameters(params).withArguments(args).runProgram("GDGUTILS")
```

## ICEGENER/SYNCGENR
<a name="icegener"></a>

이 유틸리티 프로그램은 z/OS 시스템 유틸리티 ICEGENER의 동작을 모방하고 입력(SYSUT1 데이터 세트)에서 출력(SYSUT2 데이터 세트)으로 데이터 세트를 복사합니다. 이 Java 구현은 파일 시스템과 Bluesam 스토리지를 모두 지원하는 동등한 기능을 제공합니다.

### 파라미터
<a name="icegener-parameters"></a>

인수 없음

### 필수 데이터 세트
<a name="icegener-datasets"></a>
+ SYSUT1: 입력 데이터 세트/파일
+ SYSUT2: 출력 데이터 세트/파일

### SYSUT2 데이터 세트의 처리 처리
<a name="icegener-disposition"></a>
+ 신규: 새 데이터 세트/파일 생성
+ OLD/SHR: 기존 데이터 세트/파일 사용(반드시 존재해야 함)
+ MOD: 수정, 누락된 경우 생성, 있는 경우 추가

### 오류 처리
<a name="icegener-error"></a>
+ 복사에 성공하면 오류 코드 0을 설정하고, 실패하면 1을 설정합니다.
+ Bluseam 데이터 세트의 `IllegalStateException` 잘못된 사용 발생

### 샘플 사용량
<a name="icegener-sample"></a>

다음은 AWS 변환을 통한 JCL 현대화로 인한 ICEGENER 프로그램의 Groovy 샘플 사용입니다.

JCL 코드:

```
//STEP01    EXEC PGM=ICEGENER
//SYSUT1   DD DSN=POI.INPUT,DISP=SHR
//SYSUT2   DD DSN=POI.OUTPU,
//            DISP=(,CATLG,DELETE),
//            UNIT=3490,
//            DCB=(RECFM=FB,LRECL=100)
/*
```

및 일치하는 Groovy 현대화:

```
mpr
    .withFileConfigurations(new FileConfigurationUtils()
        .withJobContext(jobContext)
        .bluesam("SYSUT1")
        .dataset("POI.INPUT")
        .disposition("SHR")
        .build()
        .bluesam("SYSUT2")
        .dataset("POI.OUTPU")
        .normalTermination("CATLG")
        .abnormalTermination("DELETE")
        .build()
        .getFileConfigurations())
    .withParameters(params)
    .runProgram("ICEGENER")
```

## IDCAMS/KQCAMS
<a name="idcams"></a>

이 유틸리티 프로그램은 VSAM(가상 스토리지 액세스 방법) 파일 작업에 사용되는 메인프레임 데이터 관리 도구인 레거시 프로그램 IDCAMS의 동작을 모방합니다. 레거시 IDCAMS 명령을 처리하여 원래 SYSIN 입력과 동일한 구문을 유지합니다.

### 컨텍스트
<a name="idcams-context"></a>

프로그램 동작은에 정의된 두 파라미터로 구성할 수 있습니다`application-utility-pgm.yml`.
+ jclType: JCL 유형 식별자(vse 또는 mvs). 비 vse jcl용 파일이 비어 있는 경우 IDCAMS 유틸리티 PRINT/REPRO 명령은 4를 반환합니다.
+ forcedCharsetIdcams: IDCAMS 처리를 위한 선택적 문자 집합 재정의

### 파라미터
<a name="idcams-parameters"></a>

인수가 없습니다. 작업은 SYSIN 데이터 세트를 통해 전달됩니다.

### 필수 데이터 세트
<a name="idcams-datasets"></a>
+ SYSIN - IDCAMS 명령문 포함
+ 입력/출력 데이터 세트 - IDCAMS 명령에서 참조(IDCAMS 문에 따라 다름)

### 주요 기능/지원되는 명령
<a name="idcams-commands"></a>

SYSIN 제어 카드에 있는 IDCAMS 명령에 대한 세부 정보는 여기에 제공되지 않지만 기존 관련 레거시 플랫폼 설명서에서 가져와야 합니다.
+ 정의 - VSAM 클러스터 및 데이터 세트를 생성합니다.
+ DELETE - 데이터 세트 제거(와일드카드 지원)
+ REPRO - 데이터 세트 간에 데이터 복사
+ PRINT - 데이터 세트 콘텐츠를 표시합니다.
+ 확인 - 데이터 세트의 존재 및 무결성을 검증합니다.
+ ALTER - 데이터 세트 속성을 수정합니다(이름 변경).
+ ALLOC - 데이터 세트를 동적으로 할당합니다.
+ SET - 조건 코드(LASTCC/MAXCC)를 관리합니다.
+ IF-THEN-ELSE - 조건부 명령 실행
+ 취소 - 작업 실행을 종료합니다.

### 오류 처리
<a name="idcams-error"></a>
+ 마지막 명령이 성공하면 오류 코드 0을 설정하고, 실패하면 -1을 설정합니다.
+ SET(LASTCC) 명령을 사용하여 오류 코드를 재정의할 수 있습니다. 예: `SET LASTCC = 0`

### 샘플 사용량
<a name="idcams-sample"></a>

다음은 AWS 변환을 통한 JCL 현대화로 인한 IDCAMS 프로그램의 Groovy 샘플 사용입니다.

JCL 코드:

```
//STEP15 EXEC PGM=IDCAMS
//SYSPRINT DD   SYSOUT=*
//ACCTDATA DD DISP=SHR,
//         DSN=AWS.M2.CARDDEMO.ACCTDATA.PS
//ACCTVSAM DD DISP=SHR,
//         DSN=AWS.M2.CARDDEMO.ACCTDATA.VSAM.KSDS
//SYSIN    DD   *
  REPRO INFILE(ACCTDATA) OUTFILE(ACCTVSAM)
/*
```

및 일치하는 Groovy 현대화:

```
mpr.withFileConfigurations(new FileConfigurationUtils()
    .withJobContext(jobContext)
    .systemOut("SYSPRINT")
    .output("*")
    .build()
    .bluesam("ACCTDATA")
    .dataset("AWS.M2.CARDDEMO.ACCTDATA.PS")
    .disposition("SHR")
    .build()
    .bluesam("ACCTVSAM")
    .dataset("AWS.M2.CARDDEMO.ACCTDATA.VSAM.KSDS")
    .disposition("SHR")
    .build()
    .fileSystem("SYSIN")
    .stream("REPRO INFILE(ACCTDATA) OUTFILE(ACCTVSAM)", getEncoding())
    .build()
    .getFileConfigurations())
.withParameters(params)
.runProgram("IDCAMS")
```

## IEBGENER/JSDGENER
<a name="iebgener"></a>

이 프로그램은 IEBGENER 유틸리티를 복제합니다. 순차 데이터 세트를 복사하고 조작하는 데 사용됩니다. 이 구현은 고급 데이터 처리 작업에 대한 IEBGENER 제어 문을 지원하여 기본 복사 기능을 확장합니다.

### 파라미터
<a name="iebgener-parameters"></a>

인수가 없습니다. 작업은 SYSIN 데이터 세트를 통해 전달됩니다.

### 필수 데이터 세트
<a name="iebgener-datasets"></a>
+ SYSIN: 제어 문 포함(선택 사항, 정의되지 않은 경우 IEBGENER 프로그램은 ICEGENER와 동일)
+ SYSUT1: 입력 데이터 세트/파일
+ SYSUT2: 출력 데이터 세트/파일

### 주요 기능/지원되는 IEBGENER 컨트롤 스테이트먼트
<a name="iebgener-commands"></a>

SYSIN 컨트롤 카드에 있는 IEBGENER 컨트롤 문에 대한 세부 정보는 여기에 제공되지 않지만 기존 관련 레거시 플랫폼 설명서에서 가져와야 합니다.
+ GENERATE - 처리할 최대 레코드 유형 수(MAXNAME) 및 필드 수(MAXFLDS)를 지정하여 데이터 조작 프로세스의 전체 구조를 정의합니다.
+ 레코드 - 입력 데이터 세트에서 복사하거나 특정 값으로 생성할 개별 필드의 위치, 길이 및 형식을 지정하여 각 레코드 유형의 실제 레이아웃 및 콘텐츠를 정의합니다.
+ LABEL/MEMBER/EXIT은 지원되지 않습니다.

예:

```
GENERATE MAXNAME=3,MAXFLDS=5
RECORD TYPE=1,
       FIELD=(1,1,CH,VALUE='H'),
       FIELD=(2,30,CH,VALUE='EMPLOYEE REPORT 2024         ')
RECORD TYPE=2,
       FIELD=(1,1,CH,VALUE='D'),
       FIELD=(2,10,CH),              /* Name */
       FIELD=(12,8,CH),             /* Birth date */
       FIELD=(20,8,CH,VALUE='ACTIVE')
RECORD TYPE=3,
       FIELD=(1,1,CH,VALUE='F'),
       FIELD=(2,30,CH,VALUE='END OF REPORT              ')
```

### 오류 처리
<a name="iebgener-error"></a>

복사에 성공하면 오류 코드를 0으로 설정하고, 실패하면 1로 설정합니다.

### 샘플 사용량
<a name="iebgener-sample"></a>

다음은 AWS 변환을 통한 JCL 현대화로 인한 IEBGENER 프로그램의 Groovy 샘플 사용입니다.

JCL 코드:

```
//GENDATA  EXEC PGM=IEBGENER
//SYSUT1   DD DSN=INPUT.EMPLOYEE.DATA,
//            DISP=SHR
//SYSUT2   DD DSN=OUTPUT.EMPLOYEE.FILE,
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(TRK,(1,1)),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920)
//SYSIN    DD *
  GENERATE MAXNAME=2,MAXFLDS=5
  RECORD TYPE=1,
         FIELD=(1,1,CH,VALUE='H'),
         FIELD=(2,30,CH,VALUE='EMPLOYEE SALARY REPORT 2024    ')
  RECORD TYPE=2,
         FIELD=(1,1,CH,VALUE='D'),
         FIELD=(2,10,CH),              /* Name from input */
         FIELD=(12,8,CH),             /* Birth date from input */
         FIELD=(20,8,CH),             /* Dept from input */
         FIELD=(28,8,CH)              /* Salary from input */
/*
```

및 일치하는 Groovy 현대화:

```
mpr
    .withFileConfigurations(new FileConfigurationUtils()
        .withJobContext(jobContext)
        .systemOut("SYSPRINT")
        .output("*")
        .build()
        .bluesam("SYSUT1")
        .dataset("INPUT.EMPLOYEE.DATA")
        .disposition("SHR")
        .build()
        .bluesam("SYSUT2")
        .dataset("OUTPUT.EMPLOYEE.FILE")
        .disposition("NEW")
        .normalTermination("CATLG")
        .abnormalTermination("DELETE")
        .build()
        .fileSystem("SYSIN")
        .stream( """GENERATE MAXNAME=2,MAXFLDS=5
  RECORD TYPE=1,
         FIELD=(1,1,CH,VALUE='H'),
         FIELD=(2,30,CH,VALUE='EMPLOYEE SALARY REPORT 2024    ')
  RECORD TYPE=2,
         FIELD=(1,1,CH,VALUE='D'),
         FIELD=(2,10,CH),              /* Name from input */
         FIELD=(12,8,CH),             /* Birth date from input */
         FIELD=(20,8,CH),             /* Dept from input */
         FIELD=(28,8,CH)              /* Salary from input */""", getEncoding())
        .build()
        .getFileConfigurations())
    .withParameters(params)
    .runProgram("IEBGENER")
```

## IEFBR14
<a name="iefbr14"></a>

IEFBR14는 단순히 반환 코드 0(0)으로 반환되는 "아무것도 하지 않음" 프로그램입니다. 기본 용도는 실제 데이터 처리를 수행하지 않고 DD 문을 통한 데이터 세트 할당, 삭제 또는 카탈로그 유지 관리를 위한 것입니다.

### 파라미터
<a name="iefbr14-parameters"></a>

인수 없음

### 오류 처리
<a name="iefbr14-error"></a>

항상 오류 코드 0을 설정합니다.

### 샘플 사용량
<a name="iefbr14-sample"></a>

다음은 AWS 변환을 통한 JCL 현대화로 인한 IEFBR14 프로그램의 Groovy 샘플 사용입니다.

새 순차 데이터 세트를 생성하는 JCL 코드:

```
//STEP1    EXEC PGM=IEFBR14
//NEWSEQ   DD DSN=USER.NEW.SEQ.DATA,
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(TRK,(10,5)),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920)
```

및 일치하는 Groovy 현대화:

```
mpr
    .withFileConfigurations(new FileConfigurationUtils()
        .withJobContext(jobContext)
        .bluesam("NEWSEQ")
        .dataset("USER.NEW.SEQ.DATA")
        .disposition("NEW")
        .normalTermination("CATLG")
        .abnormalTermination("DELETE")
        .build()
        .getFileConfigurations())
    .withParameters(params)
    .runProgram("IEFBR14")
```

기존 데이터 세트를 삭제하는 JCL 코드:

```
//STEP3    EXEC PGM=IEFBR14
//DELDD    DD DSN=USER.OLD.DATASET,
//            DISP=(OLD,DELETE,DELETE)
```

및 일치하는 Groovy 현대화:

```
mpr
    .withFileConfigurations(new FileConfigurationUtils()
        .withJobContext(jobContext)
        .bluesam("DELDD")
        .dataset("USER.OLD.DATASET")
        .disposition("OLD")
        .normalTermination("DELETE")
        .abnormalTermination("DELETE")
        .build()
        .getFileConfigurations())
    .withParameters(params)
    .runProgram("IEFBR14")
```

## JCLBCICS
<a name="jclbcics-utility"></a>

이 프로그램은 데이터 세트 상태를 관리하고, 구성을 기반으로 데이터 세트를 활성화/비활성화하여 개별 파일과 와일드카드 패턴을 모두 지원합니다. JICS table file\_table에서 STATUS 필드를 변경합니다.

### 파라미터
<a name="jclbcics-parameters"></a>

인수가 없습니다. 작업은 `DatasetsConfiguration` 객체를 통해 전달됩니다. 예:

```
mpr.withDatasetsConfiguration(new DatasetsConfiguration().close(<Dataset Name>)
```

### 컨텍스트
<a name="jclbcics-context"></a>

프로그램 동작은 다음 두 가지 파라미터로 구성할 수 있습니다.

`application-utility-pgm.yml`에서:
+ `jclbcics.ddname.size` (기본값은 8): 데이터 세트 이름 크기를 전역적으로 구성합니다.이 값이 설정되고 데이터 세트 이름 길이가이 값보다 작으면 데이터 세트 이름이 잘립니다.

프로그램을 호출하는 Groovy 파일의 개별 단계에서
+ `JCLBCICS_OVERRIDDEN_SIZE`: 글로벌 데이터 세트 이름 크기를 재정의합니다.

```
TreeMap stepMapTransfo = [:]
Map stepParams = ["MapTransfo":stepMapTransfo]
stepParams["MapTransfo"]["JCLBCICS_OVERRIDDEN_SIZE"] = '6'
```

조정된 dd 이름 크기(자르기 후)가 8 미만인 경우 dd 이름은 와일드카드로 간주되며 함수는이 dd 이름으로 시작하는 모든 데이터 세트에 대해 작동합니다.

### 주요 기능
<a name="jclbcics-features"></a>

지원되는 작업은 다음과 같습니다.
+ OPEN: 데이터 세트를 ENABLED 상태로 설정합니다.
+ CLOSE: 데이터 세트를 비활성화됨 상태로 설정합니다.

이러한 작업은 `DatasetsConfiguration`빌더 클래스를 통해 선언됩니다.

```
new DatasetsConfiguration().close(<DD name>).open(<DD name>)
```

DD 이름: 데이터 세트 이름, dd 이름 크기가 최대 dd 이름 크기(8)보다 작은 경우 와일드카드 \*가 허용됩니다.

### 오류 처리
<a name="jclbcics-error"></a>

오류 코드 0 설정

### 샘플 사용량
<a name="jclbcics-sample"></a>

다음은 JCLBCICS 프로그램의 Groovy 샘플 사용입니다.

데이터 세트를 비활성화하고`UFOLJ3P`, AX로 시작하는 모든 데이터 세트를 활성화하고, DX로 시작하는 모든 데이터 세트를 활성화합니다.

```
import com.netfective.bluage.gapwalk.rt.call.MainProgramRunner
import com.netfective.bluage.gapwalk.rt.call.ProgramExecutionResult
import com.netfective.bluage.gapwalk.rt.io.support.DatasetsConfiguration

MainProgramRunner mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class)
def TreeMap stepMapTransfo = [:]
def Map stepParams = ['MapTransfo':stepMapTransfo]
stepParams['MapTransfo']['JCLBCICS_OVERRIDDEN_SIZE'] = '7'

ProgramExecutionResult res = mpr
.withDatasetsConfiguration(new DatasetsConfiguration().close("UFOLJ3P").open("AX*").open("DX"))
.withParameters(stepParams)
.runProgram("JCLBCICS")
```