메시지 전환을 위한 IMS SPA의 형식
EGL은 다음 빌드 디스크립터 옵션에 따라 IMS™ 스크래치패드 영역의 형식을 정의합니다.
- spaSize
- IMS에서 필요로 하는 필드(SPA 길이, SPA ID 및 IMS 트랜잭션 이름)를 포함, SPA의 전체 길이 및 세그먼테이션 상태 바이트에 대한 EGL 요구사항을 지정합니다.
- spaStatusBytePosition
- 이 선택적 필드는 15(상태 바이트가 데이터 앞에 오는 경우) 또는 spaSize와 같은 값(상태 바이트가 데이터 뒤에 오는 경우)으로 설정됩니다.
| 필드 | 길이(바이트) | 데이터 유형 | 설명 |
|---|---|---|---|
| SPA 길이 | 2 | 2진 | 세그먼트의 길이입니다. |
| SPA ID | 4 | 2진 | IMS에 SPA를 식별하는 데 사용되는 고유 이름입니다. MPP는 이 이름을 변경하지 않아야 합니다. |
| IMS 트랜잭션 이름 | 8 | 문자 | EGL 프로그램의 IMS 트랜잭션 이름입니다. |
| 세그먼테이션 상태 바이트(선택사항) | 1 | 16진 | 이 선택적 바이트는 spaSize=n이며 spaStatusBytePosition=15가 지정되었고 전환이 지연된 전환인 경우에 존재합니다. 이 바이트는 데이터가 작업 데이터베이스에 저장되었는지 표시합니다. |
| 프로그램 데이터 | 다양함 | 다양함 | 이 영역에는 transfer to transaction 명령문에 전달되어 대상 프로그램이 해당 입력 레코드로 수신한 레코드가 포함되어 있습니다. |
| 세그먼테이션 상태 바이트(선택사항) | 1 | 16진 | 이 선택적 바이트는 이 전환이 즉각적 전환이며, spaSize=n이고 spaStatusBytePosition=n인 경우에 존재합니다. 상태 바이트 위치는 항상 15(상태 바이트가 데이터 앞에 오는 경우) 또는 SPA 크기와 같은 값(상태 바이트가 데이터 뒤에 오는 경우)입니다. 이 경우에는 바이트의 컨텐츠가 무시됩니다. 이 선택적 바이트는 spaSize=n이며 spaStatusBytePosition=n이 지정되었고 이 전환이 지연된 전환인 경우에도 존재합니다. 이 경우 이 바이트는 데이터가 작업 데이터베이스에 저장되었는지 표시합니다. |
다음 예제는 대화식 처리를 위해 지연된 또는 즉각적 프로그램 대 프로그램 메시지 전환에서 전달된 스크래치패드 영역에 대한 COBOL 정의를 보여줍니다. PL/I는 COBOL에 사용되는 2바이트 길이 필드가 아니라 4바이트 길이 필드를 필요로 한다는 것을 기억하십시오. 추가 정보는 사용자의 시스템에 해당하는 IMS/VS 문서를 참조하십시오. 특정 필드 이름은 설명을 위해서만 사용되었으며 생성되는 코드의 실제 필드 이름은 다를 수 있습니다.
* SPA IO area.
01 SPA.
05 SPA-LENGTH PIC S9(4) COMP.
05 SPA-ID PIC S9(9) COMP.
05 IMS-TRAN-NAME PIC X(8).
05 CSP-OPTIONAL-SSM-BYTE PIC X(1). See Note 1.
05 CSP-APPL-WS-DATA.
10 data-item-1 PIC ........................
10 data-item-2 PIC ........................
.
.
.
05 CSP-OPTIONAL-SSM-BYTE PIC X(1). See Note 2.
이 예제에는 다음 참고사항이 적용됩니다.
- 이 선택적 바이트는 spaSize=n이며 spaStatusBytePosition=15가 지정되었고 전환이 지연된 전환인 경우에 존재합니다. 이 바이트는 데이터가 작업 데이터베이스에 저장되었는지 표시합니다.
- 이 선택적 바이트는 spaSize=n이며 spaStatusBytePosition=n이 지정되었고 이 전환이 즉각적 전환인 경우에 존재합니다. 이 경우에는 바이트의 컨텐츠가 무시됩니다. 이 선택적 바이트는 spaSize=n이며 spaStatusBytePosition=n이 지정되었고 이 전환이 지연된 전환인 경우에도 존재합니다. 이 경우 이 바이트는 데이터가 작업 데이터베이스에 저장되었는지 표시합니다.
위 표에 "프로그램 데이터"로 식별된 데이터는 대상 프로그램의 입력 레코드로 취급됩니다. 이 방법은 비EGL 프로그램이 SPA에 데이터를 저장하고 SPA 데이터를 사용하거나 수정하는 EGL 프로그램(또는 일련의 EGL 프로그램)으로 전환할 수 있게 해 줍니다. EGL 프로그램은 결국 SPA에 포함된 EGL 프로그램의 정보와 함께 비EGL 프로그램으로 다시 전환할 수 있습니다. SPA 크기의 변경에 대해서는 IMS 제한사항을 따르십시오.
SPA 크기 및 전송 레코드 크기
다음 표에는 SPA, transfer to transaction 또는 show 문에 지정된 레코드, 그리고 대상 프로그램의 입력 레코드가 대화식 처리를 위해 어떤 관계를 맺는지가 정의되어 있습니다.
| 기능 | 데이터 영역 크기 대 전송 레코드 크기 | 결과 |
|---|---|---|
| transfer to transaction | SPA에 있는 프로그램 데이터 영역의 크기가 transfer to transaction 또는 show 문에 이름 지정된 EGL 레코드의 크기를 초과합니다. | SPA의 프로그램 데이터 영역이 전체 EGL 레코드를 사용하여 작성되며 SPA의 잔여 바이트는 공백으로 초기화됩니다. |
| transfer to transaction | SPA에 있는 프로그램 데이터 영역의 크기가 transfer to transaction 문에 이름 지정된 EGL 레코드의 크기보다 작습니다. | EGL 레코드의 여분 바이트가 잘립니다. |
| 대상 프로그램 입력 레코드의 초기화 | SPA에 있는 프로그램 데이터 영역의 크기가 대상 시스템의 입력 레코드에 이름 지정된 EGL 레코드의 크기를 초과합니다. | SPA에 있는 프로그램 데이터 영역의 여분 바이트가 입력 레코드로 이동될 때 잘립니다. |
| 대상 프로그램 입력 레코드의 초기화 | SPA에 있는 프로그램 데이터 영역의 크기가 대상 시스템의 입력 레코드에 이름 지정된 EGL 레코드의 크기보다 작습니다. | 입력 레코드가 SPA에 있는 프로그램 데이터 영역으로 초기화되며 입력 레코드의 잔여 바이트가 데이터 유형에 따라 초기화됩니다. |