임시 스토리지 사용

CICS®에서, 임시 스토리지는 여러 트랜잭션에 사용 가능해야 하는 데이터를 저장하기 위한 기본 방법입니다. 임시 스토리지의 데이터 항목은 데이터를 저장하는 프로그램에서 동적으로 지정되는 이름으로 큐에 배치됩니다. 임시 스토리지는 두 가지 다른 방법으로 구현됩니다(기본 임시 스토리지 및 보조 임시 스토리지).
  • 기본은 큐가 동적 스토리지 영역에서 가져온 공간에 저장됨을 표시합니다.
  • 보조는 큐가 입력순 VSAM 데이터 세트에 작성됨을 표시합니다.
비존 및 보조 스토리지의 특성을 다음과 같습니다.
  • CICS가 기본 스토리지에서 항목의 색인을 유지보수합니다.
  • 기본 임시 스토리지에 보조보다 많은 가상 스토리지가 필요합니다. 이는 수명이 짧거나 자주 액세스되는 작은 큐에 사용되어야 합니다.
  • 보조 임시 스토리지는 장기간 저장되어야 하거나 드물게 액세스되는 많은 양의 데이터에 대해 설계됩니다.
  • 보조 임시 스토리지에서 큐를 복구할 수 있습니다.
    참고: 한 번에 하나의 트랜잭션만 복구 가능한 임시 스토리지 큐를 업데이트할 수 있습니다. 프로그램을 설계할 때 큐에 입력할 수 있습니다. 또한 가능한 많은 경합을 제거하는 데 VSAM 문자열이 충분한지 확인해야 합니다.
  • 태스크가 임시 스토리지에 쓰려고 시도하고 공간이 사용 가능하지 않은 경우, CICS가 태스크를 일시중단합니다. 이 태스크는 다른 태스크가 기본 스토리지 또는 VSAM 데이터 세트에서 필요한 공간을 해제할 때까지 재개되지 않습니다.
  • zSeries용 Rational® COBOL Runtime이 임시 스토리지를 사용하여 세그먼트된 컨버스 중 프로그램에 대한 정보를 저장하거나 show 명령문으로 전송 중 양식의 사본을 저장합니다. workDBType 빌드 디스크립터 옵션을 사용하여 기본 또는 보조 임시 스토리지가 사용될지 여부를 지정할 수 있습니다.

EGL에서 임시 스토리지에 액세스

CICS 환경에서 생성된 EGL 프로그램이 CICS 임시 스토리지에 일련의 또는 상대적인 레코드로 액세스할 수 있습니다. 임시 스토리지에 액세스할 때 다음 I/O 명령문이 유효합니다.
  • add
  • close
  • delete
  • get
  • get next
  • get forUpdate
  • replace

프로그램이 생성될 때 파일의 자원 연관에 EGL 파일 유형이 tempaux(보조 스토리지 파일) 또는 tempmain(기본 스토리지 파일)으로 지정되어야 있어야 합니다. 시스템 자원 이름(systemName 특성)은 임시 스토리지 파일과 연관된 큐 이름입니다.

임시 스토리지 파일은 한 번에 하나의 태스크에서만 사용할 수 있습니다. EGL은 사용자를 위해 다음 CICS 명령을 생성합니다.
  • 큐에 처음 액세스할 때, EGL은 자원 이름 EZETEMP-queuename에서 CICS ENQ 명령(NOSUSPEND 옵션)으로 큐에 입력합니다.
  • 파일이 닫히거나(close 명령문 또는 프로그램의 종료) 복구 가능한 자원이 커미트되면, EGL이 CICS DEQ 명령으로 큐에서 삭제합니다.

동일한 파일에 액세스하는 비EGL 프로그램은 파일에 액세스하는 동안 동일한 시스템 자원 이름을 큐에 입력해야 합니다.

임시 스토리지의 레코드는 레코드의 상태를 표시하는 레코드의 앞에 바이트가 추가되어 있습니다.
X'01'
레코드가 논리적으로 삭제되었음을 표시합니다.
X'00'
레코드가 논리적으로 파일에 있음을 표시합니다.
바이트가 레코드 정의에 추가되어 z/Series용 Rational COBOL Runtime에서 관리됩니다. EGL 레코드 정의에서 추가 바이트를 포함하지 마십시오. 그러나 임시 스토리지 파일이 비EGL 프로그램에서도 사용되는 경우 비EGL 프로그램이 바이트의 공간을 할당하고 바이트를 해석하며 EGL의 경우와 같이 이를 업데이트해야 합니다. 다음과 같이 추가 바이트를 처리합니다.
add or replace
바이트가 X'00'으로 설정됩니다.
delete
바이트가 X'01'로 설정되고 레코드 길이가 1로 설정됩니다.
get next
X'01'의 값이 포함된 레코드를 건너뜁니다.
get or get forUpdate
X'01'의 값이 포함된 레코드로 인해 noRecordFound 레코드 상태가 설정됩니다.
close 명령문은 임시 스토리지 파일을 삭제하지 않습니다. sysLib.purge() 시스템 함수를 사용하여 파일을 삭제하십시오. EGL은 큐가 삭제된 후 sysLib.purge() 가 사용되고 큐에서 삭제하는(DEQ 명령) 경우 자원 이름 EZETEMP-queuename에서 NOSUSPEND 옵션으로 CICS ENQ 명령을 생성하여 큐에 입력합니다.