DB2 및 COBOL 생성에 대한 엑시트 작성

이 주제에서는 "DB2®의 EGL 액세스에 대한 엑시트 작성"을 확장하며, 이 내용은 COBOL 생성에만 적용됩니다.

소스 코드

전달되는 엑시트에 대한 소스를 확인하려면 z/OS® 기반 z/Series용 Rational® COBOL Runtime 설치에 포함되어 있는 SELASAMP PDS의 멤버를 검토하십시오. 다음 표에는 해당 멤버가 나열되어 있습니다.

멤버 이름 용도 입력 및 출력 유형
ELADT2DB 데이터베이스 입력 전에, 유형이 DATE인 호스트 변수로부터 데이터베이스에 지정될 값을 수정합니다. CHAR(10)에 대한 포인터
ELADT2PG 데이터베이스 입력 후에, 유형이 DATE인 호스트 변수에 삽입될 값을 수정합니다. CHAR(10)에 대한 포인터
ELATI2DB 데이터베이스 입력 전에, 유형이 TIME인 호스트 변수로부터 데이터베이스에 지정될 값을 수정합니다. CHAR(8)에 대한 포인터
ELATI2PG 데이터베이스 입력 후에, 유형이 TIME인 호스트 변수에 삽입될 값을 수정합니다. CHAR(8)에 대한 포인터
ELATS2DB 데이터베이스 입력 전에, 유형이 TIMESTAMP인 호스트 변수로부터 데이터베이스에 지정될 값을 수정합니다. CHAR(26)에 대한 포인터
ELATS2PG 데이터베이스 입력 후에, 유형이 TIMESTAMP인 호스트 변수에 삽입될 값을 수정합니다. CHAR(26)에 대한 포인터

날짜, 시간 및 시간소인에 설정하는 마스크는 이러한 엑시트와의 사이에서 전송되거나 수신되는 데이터에 영향을 주지 않습니다. StrLib.defaultDateFormat, StrLib.defaultTimeFormatStrLib.defaultTimeStampFormat 함수를 설정하여 코드에 마스크를 설정할 수 있으며, 이들 함수는 이름이 같은 빌드 디스크립터 옵션으로부터 기본값을 수신할 수 있습니다.

예제 및 로직 플로우

다음 SQL문은 두 개의 문자 필드를 사용하며, 각 필드에는 관련된 열의 유형이 DATE임을 나타내는 sqlDataCode 값이 있습니다.
get myrec with #sql{ 
   SELECT COL1 FROM TBL WHERE :dateChar1 = '2010-04-01' }
   into dateChar2;
조회는 다음과 같이 생성됩니다.
  1. dateChar1 필드의 값을 가져옵니다.
  2. 이 값을 ELADT2DB 엑시트 프로그램에 전달합니다.
  3. 데이터베이스와 상호작용할 때, 이 엑시트 프로그램으로부터 리턴된 새 날짜 값을 사용합니다.
다음 내용은 예제 데이터를 페치할 때의 이벤트입니다.
  1. COL1의 값을 데이터베이스에서 가져옵니다.
  2. 이 값을 ELADT2PG 프로그램에 전달합니다.
  3. 이 프로그램에서 리턴된 값을 dateChar2 필드에 지정합니다.

로드 모듈

전달되는 로드 모듈은 z/OS 기반 z/Series용 Rational COBOL Runtime 설치에 포함되어 있는 SELALMD PDS의 멤버입니다.

이러한 엑시트를 사용하도록 설정하면 EGL 생성기는 이러한 각 필수 엑시트에 대해 링크 편집 제어 카드에 INCLUDE SELALMD(exitpgm) 문을 생성합니다.
  • 이 엑시트를 수정하지 않으면 샘플 엑시트가 링크되어 실행됩니다. 이들은 값을 수정하지 않습니다.
  • 엑시트를 수정하여 이를 새 데이터 세트에 삽입하는 경우에는 빌드 스크립트의 링크-편집 단계에서 새 데이터 세트를 참조해야 합니다. 구체적으로는 전달된 JCL의 항목 이전에 있는 SELALMD DD 문에 참조를 추가해야 합니다.
  • 수정된 엑시트가 이후에 변경되는 경우에는 변경사항을 적용하려면 프로그램을 다시 생성하거나 다시 링크해야 합니다.