맨위로가기

IEFBR14

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

IEFBR14는 OS/360 및 파생 메인프레임 운영 체제에서 데이터 세트를 생성, 삭제 또는 할당 해제하는 데 사용되는 프로그램이다. 이 프로그램은 JCL(작업 제어 언어) 내에서 EXEC PGM=IEFBR14 문을 사용하여 실행되며, 주로 데이터 세트의 DISPOSITION 매개변수를 통해 파일을 관리한다. IEFBR14는 IBM 어셈블리어 명령 "BR 14"에서 유래되었으며, 프로그램의 구현은 레지스터 14로 분기하는 단일 명령어로 시작하여 0의 반환 코드를 설정하는 명령어가 추가되었다.

더 읽어볼만한 페이지

  • 무 (철학) - 절대 영도
    절대영도는 열역학적으로 정의된 최저 온도로, 물질 입자의 에너지가 최소 상태이며, 엔트로피가 0이 되지만, 양자역학적 영점 진동으로 인해 실험적으로 도달할 수 없고, 극저온에서 특이한 양자 현상이 나타나며, 열역학 제3법칙에 따라 유한 번의 조작으로 도달할 수 없다.
  • 무 (철학) - 무색
    무색은 특정한 색깔이 없는 상태로, 투명, 흰색, 무채색 등의 의미로 사용되며 투명과 밀접한 관련이 있지만 동일한 의미는 아니다.
  • IBM 메인프레임 운영 체제 - OS/390
    OS/390은 1995년에 출시된 IBM의 운영 체제 패키지로, MVS 운영 체제 핵심 요소를 통합하여 신뢰성, 가용성, 서비스 가능성을 향상시켰으며, 2004년에 지원이 종료되었다.
  • IBM 메인프레임 운영 체제 - OS/360
    OS/360은 IBM System/360 제품군을 위해 개발된 범용 운영 체제로, 상업 및 과학 기술 계산을 지원하고 일괄 처리 시스템에서 발전하여 EBCDIC 문자 코드를 채용하고 자기 디스크 장치를 다루는 최초의 OS가 되었으며, 현재의 IBM 메인프레임 OS인 z/OS의 계승자로서 퍼블릭 도메인으로 공개되어 Hercules 에뮬레이터를 통해 실행 가능하다.
IEFBR14
IEFBR14
종류프로그램
개발사IBM
운영 체제z/OS 및 유사 시스템
용도아무것도 하지 않음 (종료 코드 0 반환)
설명z/OS 및 유사 시스템에서 리턴 코드를 0으로 설정하고 종료하는 간단한 프로그램. 디스크 공간 할당, 데이터 세트 생성, 더미 작업 실행 등 다양한 작업에 사용됨.

2. 목적

IEFBR14는 작업 제어 언어(JCL)를 사용하여 데이터셋을 관리한다. JCL을 통해 파일을 만들거나, 기존 파일을 사용하거나, 작업 후 파일을 삭제 또는 유지하는 등의 작업을 할 수 있다.[2]

2. 1. 할당

OS/360 파생 메인프레임 운영 체제에서 대부분의 프로그램들은 파일(일반적으로 데이터셋)을 직접 규정하지 않으며, 대신 프로그램들을 호출하는 작업 제어 언어(JCL) 문을 통해 간접적으로 이들을 참조한다. 이러한 데이터 정의문(DD)들은 DISP(DISPOSITION) 매개변수를 포함하여 파일을 어떻게 관리할지 지정할 수 있다. 이를테면, 새로운 파일이 만들어질지 아니면 오래된 것을 다시 사용할지, 또 완료 후에 파일을 삭제해야 하는지 아니면 그대로 남겨두어야 하는지 등을 정할 수 있다.[2]

IEFBR14는 DD 문들이 파일들을 쉽게 만들거나 지울 수 있게 하는 반면, 프로그램을 실행하지 않고서는 그렇게 할 수 없었기 때문에 만들어졌다. JCL에 쓰이는 프로그램은 실제로 생성 또는 삭제를 위해 파일을 사용할 필요가 없다. DD DISP=... 사양으로 모든 작업이 수행된다. 그러므로 해당 역할을 메우기 위해서는 매우 단순한 do-nothing 프로그램이 필요하였다.[2]

이에 따라 IEFBR14는 JCL을 이용하여 데이터셋을 만들거나 삭제할 수 있다.[2]

2. 2. 할당 해제

IEFBR14는 이전 작업에서 마운트된 상태로 남겨진 테이프 또는 디스크 장치의 마운트를 해제하는 데에도 사용될 수 있다. 시스템 운영자는 DEALLOC 시작 태스크를 사용하여 이 작업을 수행할 수 있다.[1]

시스템 콘솔에 "S DEALLOC" 명령을 입력하면 시작된 작업을 실행할 수 있는데, 이 작업은 오직 하나의 스텝으로만 구성된다.[1]

```

//STEP01 EXEC PGM=IEFBR14

```

그러나 작업 관리 설계로 인해 시작 명령이 실패하지 않으려면 DEALLOC이 시스템 프로시저 라이브러리 SYS1.PROCLIB에 실제로 존재해야 한다.[1]

또한, 그러한 모든 시작된 태스크는 운영 체제의 작업 관리 구성 요소 내의 "시작 태스크 제어"(STC) 모듈이 단일 단계 작업만 허용하고 예외 없이 모든 다단계 작업을 실패시키므로 단일 작업 단계여야 한다.[1]

2. 3. 구문 분석 및 유효성 검사

최소한 z/OS에서는 다른 프로그램을 실행하기 위해 분기할 때 해당 시점에서 호출 프로그램의 구문 오류가 평가된다.[3]

3. 명명

IEFBR14라는 이름은 IBM 메인프레임 컴퓨터 프로그램의 명명 규칙에서 유래되었다. "IEF"는 작업 관리 그룹에서 제작한 프로그램을 나타내는 접두사이다.[4] "BR 14"는 서브루틴에서 반환하는 데 사용되는 어셈블러 명령어 "Branch to Register 14"의 약자이다.

4. 사용법

IEFBR14는 작업 제어 언어(JCL) 내에서 `EXEC PGM=IEFBR14` 문을 사용하여 실행된다. OS/360 파생 메인프레임 운영 체제에서 대부분의 프로그램들은 파일(데이터셋)을 직접 지정하지 않고 JCL 문을 통해 간접적으로 참조한다. 이러한 데이터 정의문(DD)들은 `DISPOSITION(DISP=...)` 매개변수를 포함하여 파일을 어떻게 관리할지 지정할 수 있다. 예를 들어, 새로운 파일을 만들지, 오래된 파일을 다시 사용할지, 완료 후에 파일을 삭제할지 아니면 그대로 남겨둘지 등을 정할 수 있다.[2]

IEFBR14는 DD 문들이 파일을 쉽게 만들거나 지울 수 있지만, 프로그램을 실행하지 않고서는 그렇게 할 수 없었기 때문에 만들어졌다. JCL에 쓰이는 프로그램은 실제로 생성 또는 삭제를 위해 파일을 사용할 필요가 없으며, `DD DISP=...` 사양으로 모든 작업이 수행된다. 그러므로 해당 역할을 메우기 위해서는 매우 단순한 do-nothing 프로그램이 필요하였다.

4. 1. 데이터 세트 삭제 예시

jcl

//IEFBR14 JOB ACCT,'데이터 세트 삭제',MSGCLASS=J,CLASS=A

//STEP0001 EXEC PGM=IEFBR14

//DELDD DD DSN=xxxxx.yyyyy.zzzzz,

// DISP=(MOD,DELETE,DELETE),UNIT=DASD

4. 2. 파티션 데이터 세트 생성 예시

jcl

//TZZZ84R JOB NOTIFY=&SYSUID,MSGCLASS=X

//STEP01 EXEC PGM=IEFBR14

//DD1 DD DSN=TKOL084.DEMO,DISP=(NEW,CATLG,DELETE),

// DCB=(RECFM=FB,LRECL=80,BLKSIZE=80,DSORG=PO),

// SPACE=(TRK,(1,1,1),RLSE),

// UNIT=SYSDA

5. 구현

IEFBR14는 원래 "레지스터로 분기" 명령어 하나로 구성되었다(BR 14, BCR 15,14와 동일). BR은 BCR 15에 대한 의사 명령어이며, 표준 System/360 명령어와 논리적으로 동일하다. '''BR 14'''의 표준 인스턴스는 '''BCR 15,14'''이다.

OS/360 및 그 후속 버전에서는 프로그램 완료 시 제어를 반환할 주소를 레지스터 14에, 호출된 프로그램이 메모리에 로드되는 주소를 레지스터 15에 저장하여 호출한다. 완료 시 프로그램은 레지스터 15에 반환 코드를 로드하고 레지스터 14의 주소로 분기한다.

초기에는 작업 제어 언어의 모든 속성을 사용하지 않아 반환 코드가 불확정적이어도 문제가 되지 않았지만, 이후에는 결정된 상태가 필요해졌다. IEFBR14 수정은 자리 표시자로서의 원래 사용에 영향을 미치지 않았다.

수정된 프로그램의 기계어 코드는 다음과 같다.

코드설명
SR R15,R15레지스터 15에 0 완료 코드를 넣는다.
BR R14레지스터 14의 주소로 분기한다. (통신 벡터 테이블의 SVC 3 명령어)



BR을 제거하면 다음과 같다.

코드설명
SR R15,R15레지스터 15에 0 완료 코드를 넣는다.
SVC 3작업 단계를 종료하기 위해 SVC를 실행한다.



이는 OS/360 시작 관리자가 ATTACH 매크로 명령어(SVC 42)로 작업 단계 태스크를 "첨부"하고, EXIT 매크로(SVC 3)로 "되감는" 방식과 일치한다.

5. 1. 초기 버전

IEFBR14는 처음에 "레지스터로 분기" 명령어 하나로 구성되었다. IBM 어셈블리어에서 사용된 니모닉은 BR이었고, 따라서 IEF '''BR 14'''라는 이름이 붙었다. BR 14는 BCR 15,14와 동일하다. OS/360 및 그 후속 버전의 링크 규칙에 따르면 프로그램은 레지스터 14와 레지스터 15를 사용해야 한다. 완료 시 프로그램은 레지스터 15에 반환 코드를 로드한 다음 레지스터 14에 포함된 주소로 분기한다. 그러나 처음에는 IEFBR14가 실행 가능한 모듈이 아니라 단순히 호출자에게 반환하는 더미 제어 섹션으로 사용되었으므로 이러한 특성을 염두에 두고 코딩되지 않았다.

프로그램의 원래 버전은 레지스터 15를 전혀 변경하지 않았는데, 그 이유는 원래 용도가 실행 가능한 프로그램 자체가 아니라 ''Sysgen''(시스템 생성) 중에 생성된 특정 로드 모듈의 자리 표시자였기 때문이다. IEFBR14는 항상 표준 '''BALR 14,15''' 명령어와 기능적으로 동일하게 호출되었으므로 레지스터 15의 반환 코드는 항상 0이 아니었다. 나중에 반환 코드를 지워 결정된 상태, 즉 0으로 종료되도록 하기 위해 두 번째 명령어가 추가되었다.

5. 2. 수정된 버전

IBM 어셈블리어에서 사용된 니모닉 BR(Branch to Register, 레지스터로 분기)로 인해 IEF '''BR 14'''라는 이름이 붙여졌다. BR 14는 BCR 15,14와 동일하며, 항상 범용 레지스터 14에 포함된 주소로 분기한다. 시스템 어셈블러는 표준 System/360 명령어와 논리적으로 동일한 여러 의사 명령어를 허용한다.

OS/360 및 후속 버전의 링크 규칙에 따르면, 프로그램 완료 시 제어 반환 주소는 레지스터 14에, 호출된 프로그램이 로드되는 주소는 레지스터 15에 저장되어 호출된다. 프로그램은 완료 시 레지스터 15에 반환 코드를 로드하고 레지스터 14의 주소로 분기한다. 초기 IEFBR14는 실행 가능한 모듈이 아닌 더미 제어 섹션으로 사용되어 이러한 특성을 고려하지 않았다.

처음 IEFBR14는 레지스터 15를 변경하지 않아 반환 코드가 항상 0이 아니었다. 이후 반환 코드를 0으로 설정하기 위해 두 번째 명령어가 추가되었다. 초기에는 프로그래머들이 작업 제어 언어의 모든 속성을 사용하지 않아 문제가 되지 않았지만, 이후 결정된 상태가 필요해졌다.

수정된 프로그램의 기계어 코드는 다음과 같다.

코드설명
SR R15,R15레지스터 15에 0 완료 코드를 넣는다.
BR R14레지스터 14의 주소로 분기한다. (통신 벡터 테이블의 SVC 3 명령어)



BR을 제거하고 명확하게 표현한 동등한 기계어 코드는 다음과 같다.

코드설명
SR R15,R15레지스터 15에 0 완료 코드를 넣는다.
SVC 3작업 단계를 종료하기 위해 SVC를 실행한다.



이는 OS/360 시작 관리자가 ATTACH 매크로(SVC 42)로 작업 단계 태스크를 "첨부"하고, EXIT 매크로(SVC 3)로 "되감는" 방식과 일치한다.

참조

[1] 웹사이트 IBM Knowledge Center https://www.ibm.com/[...] IBM Corporation 2016-12-26
[2] 웹사이트 True in a Nutshell Appendix: IEFBR14 http://www.miketaylo[...] Mike Taylor 2016-12-27
[3] 웹사이트 IBM Knowledge Center https://www.ibm.com/[...] IBM Corporation 2016-12-26
[4] 웹사이트 True in a Nutshell Appendix: IEFBR14: Clarification http://www.miketaylo[...] Mike Taylor 2016-12-27



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com