IMS/VS에 EGL COBOL 런타임 작업 데이터베이스 사용

EGL 프로그램은 지연된 프로그램 대 프로그램 메시지 전환에 대해 양식과 레코드를 둘 다 전달할 수 있습니다. 세그먼트된 프로그램이 비대화식으로(SPA 없이) 생성되는 경우에는 show 문이 양식과 레코드를 둘 다 지정하면 작업 데이터베이스가 데이터를 저장하는 데 사용됩니다. Rational® COBOL Runtime for zSeries는 비EGL 프로그램이 작업 데이터베이스에서 데이터를 저장하거나 검색하는 데 사용할 수 있는 서브루틴을 제공합니다. 소스 및 대상 프로그램 또는 트랜잭션은 모두 동일한 실제 작업 데이터베이스를 사용해야 합니다.

비EGL 프로그램이 작업 데이터베이스와 상호작용하는 데 사용할 수 있는 두 가지 서비스 루틴은 다음과 같습니다.
  • 작업 데이터베이스로부터 데이터를 검색하는 ELATSGET.
  • 작업 데이터베이스에 데이터를 저장하는 ELATSPUT.

IMS™의 작업 데이터베이스에서 읽기(ELATSGET)

EGL 프로그램에서의 지연된 프로그램 전환 후에 ELATSGET을 사용하여 작업 데이터베이스로부터 레코드를 읽을 수 있습니다. 논리 터미널 ID가 작업 데이터베이스 키로 사용됩니다.

ELATSGET 모듈은 런타임 시에 다음 호출 시퀀스에서 동적으로 로드됩니다. 이 방법을 사용하면 모듈을 사용하는 각 프로그램에 대해 이 모듈을 링크할 필요가 없습니다.
MOVE "ELATSGET" TO modname.
CALL modname USING parm1, parm2, parm3, parm4, parm5, parm6.
앞의 예제에서 modname은 8바이트 문자 필드이며 parm1 - parm6은 다음과 같습니다.
  • 레코드 버퍼
  • 버퍼 길이(전자 2진)
  • 대상 트랜잭션 코드(공백으로 채워진 8바이트)
  • I/O PCB
  • ELAWORK PCB(또는 DB2® 작업 데이터베이스가 사용되는 경우 전자 2진 0)
  • 리턴 코드(전자 2진)
ELATSGET는 다음 리턴 코드를 제공합니다.
표 1. ELATSGET 리턴 코드
코드 의미
0 읽기 성공
4 읽기 성공(자름 발생)
8 읽기 실패(레코드를 찾지 못함)
12 읽기 실패(기타 오류)

호출 프로그램이 이전에 저장된 데이터보다 작은 버퍼에 데이터를 복원하려 시도하는 경우 잘림이 발생합니다. 이전에 저장된 데이터보다 버퍼가 큰 경우에는 버퍼의 뒷부분이 공백으로 초기화됩니다.

ELATSGET은 오류 메시지를 발행하지 않습니다. 오류가 발생하는 경우에는 호출 프로그램이 적절한 조치를 취해야 합니다. DL/I 작업 데이터베이스가 사용되는 경우에는 PCB에 오류를 표시하는 상태 코드가 포함됩니다. DB2 작업 데이터베이스가 사용되는 경우에는 전자 2진(다섯 번째 매개변수)에 오류를 표시하는 SQL 코드가 포함됩니다.

IMS의 작업 데이터베이스에 쓰기(ELATSPUT)

EGL 프로그램으로의 지연된 프로그램 전환을 수행하기 전에 ELATSPUT을 사용하여 작업 데이터베이스에 레코드를 기록할 수 있습니다. 논리 터미널 ID가 작업 데이터베이스 키로 사용됩니다.

ELATSPUT 모듈은 런타임 시에 다음 호출 시퀀스에서 동적으로 로드됩니다. 이 방법을 사용하면 모듈을 사용하는 각 프로그램에 이 모듈을 링크할 필요가 없습니다.
MOVE "ELATSPUT" TO modname.
CALL modname USING parm1, parm2, parm3, parm4, parm5, parm6. 
앞의 예제에서 modname은 8바이트 문자 필드이며 parm1 - parm6은 다음과 같습니다.
  • 레코드 버퍼
  • 레코드 길이(fullword binary)
  • 대상 트랜잭션 코드(공백으로 채워진 8바이트)
  • I/O PCB
  • ELAWORK PCB(또는 DB2 작업 데이터베이스가 사용되는 경우 전자 2진 0)
  • 리턴 코드(전자 2진)
ELATSPUT은 다음 리턴 코드를 제공합니다.
표 2. ELATSPUT 리턴 코드
코드 의미
0 쓰기 성공(새 레코드가 추가됨)
4 쓰기 성공(기존 레코드가 대체됨)
12 쓰기 실패(기타 오류)

ELATSPUT은 오류 메시지를 발행하지 않습니다. 오류가 발생하는 경우에는 호출 프로그램이 적절한 조치를 취해야 합니다. DL/I 작업 데이터베이스가 사용되는 경우에는 PCB에 오류를 표시하는 상태 코드가 포함됩니다. DB2 작업 데이터베이스가 사용되는 경우에는 전자 2진(다섯 번째 매개변수)에 오류를 표시하는 SQL 코드가 포함됩니다.