IMS 환경을 위한 EGL 프로그램 개발
- 메시지 처리 프로그램(MPP) 영역
- IFP(IMS FastPath) 영역
- 일괄처리 메시지 처리(BMP) 영역
또한 빌드 디스크립터의 영향도 자세히 설명합니다.
IMS 제어 블록과 상호작용하는 방법에 대한 자세한 정보는 런타임 PSB 및 PCB에 대한 EGL 지원의 내용을 참조하십시오.
MPP 영역에 대한 생성
- 텍스트 양식을 승인하거나 표시하는 텍스트 UI 프로그램입니다.
- 텍스트 양식을 승인하거나 표시하지 않는 기본 프로그램입니다.
- 출력을 다른 메시지 큐에 전송할 수 있고 해당 목적으로 add 문을 코드화하여 생성 시에 대체 PCB 또는 익스프레스 대체 PCB와 연관된 연속 레코드를 작성합니다. 메시지 큐에 대한 출력의 경우 연속 레코드와 연관된 파일 유형은 SMSGQ 또는 MMSGQ일 수 있습니다. 세부사항은 IMS에서 연속 파일 및 인쇄 파일 사용의 내용을 참조하십시오.
- 프린터로 출력을 전송할 수 있으며 해당 목적으로 print 문을 코드화하여 인쇄 양식을 표시합니다. 생성 시에 프린터를 대체 PCB 또는 익스프레스 대체 PCB와 연관시키고 파일 유형을 SMSGQ로 지정하며 프린터의 IMS 논리적 터미널 이름을 지정합니다. 또는 런타임 시 converseVar.printerAssociation을 사용하여 IMS 논리적 터미널 이름을 변경할 수 있습니다.
- vgLib.startTransaction()을 사용하여 비동기 트랜잭션을 시작할 수 있습니다.
- 색인화된 파일 또는 상대 파일에 액세스할 수 없습니다.
다음 두 절에서는 두 프로그램 유형 각각에 특정한 정보를 제공합니다.
텍스트 UI 프로그램
텍스트 양식을 승인하거나 표시하는 기본 프로그램을 코드화하는 경우 EGL은 I/O PCB 액세스의 세부사항을 처리합니다. 세그먼트된 프로그램 특성을 예로 설정해야 합니다.
converse 문 다음에 오는 명령문을 처리하여 사용자의 입력에 응답하고 텍스트 양식을 나타내는 converse 문을 사용하여 터미널과 상호작용할 수 있습니다. 런타임 동작의 개요는 EGL 언어 참조를 참조하십시오.
converse 문의 사용이 비교적 단순하지만 show 문을 사용하는 것이 성능에 더 좋습니다. show 문을 사용하여 동일한 프로그램 또는 다른 프로그램의 시작으로 돌아갈 수 있습니다. show 문은 수신 프로그램이 해당 inputForm으로 지정하는 양식과 동일한 양식을 지정해야 합니다. show 문을 사용하면 저장되는 데이터가 show 문에 지정된 레코드 및 양식의 정보로 제한됩니다. 그러나 양식 및 레코드가 프로그램 사용자와의 상호작용을 계속하는 데 필요한 모든 정보를 제공하도록 프로그램을 코드화해야 합니다.
사용자의 프로그램은 IMS 대화식 또는 비대화식 프로그램으로 실행할 수 있고 다른 프로그램으로 전송하거나 다른 프로그램을 호출할 수 있으며 리턴 절로 show문을 실행할 수 있습니다. 특정 명령문 유형에 적용되는 제한사항은 명령문 구문을 설명하는 주제를 참조하십시오.
기본 프로그램
텍스트 양식을 승인하거나 표시하지 않는 기본 프로그램을 코드화하는 경우 IMS 메시지 큐에서 입력을 사용할 수 있습니다. 해당 입력을 검색하기 위해 I/O PCB에 연관된 연속 레코드로 들어가는 메시지를 차례로 읽는 루프를 코드화합니다. 메시지 큐에서의 입력의 경우 연속 레코드와 연관된 파일 유형은 SMSGQ 또는 MMSGQ일 수 있습니다. 세부사항은 IMS에서 연속 파일 및 인쇄 파일 사용의 내용을 참조하십시오.
대부분의 환경에서 기본 프로그램이 시작되면 프로그램의 입력 레코드는 프로그램 전송을 통해 전달된 레코드에서 초기화됩니다. 이는 IMS BMP 환경에 대해 생성된 기본 프로그램에는 적용되지 않습니다. 대신, 대상 프로그램이 메시지 큐에서 전송된 레코드를 읽어야 합니다.
EGL 생성 호출 기본 프로그램은 다른 플랫폼의 EGL 생성 Java™ 코드에서 호출될 수 있습니다.
프로그램은 IMS 비대화식 프로그램으로 실행할 수 있으며 프로그램으로 전송하거나 동일한 MS/VS 시스템에서 다른 프로그램을 호출할 수 있습니다. 특정 명령문 유형에 적용되는 제한사항은 명령문 구문을 설명하는 주제를 참조하십시오.
IMS에서 EGL 생성 호출 프로그램은 메시지 큐에서 읽을 수 없습니다. 기본 프로그램은 transfer to transaction 문을 사용할 수 없습니다.
MPP IMS FastPath 영역에 대한 생성
프로그램이 비대화식이어야 함을 제외하고(IMS 요구사항 충족) MPP 영역에 대해 설명된 사항과 동일한 상황인 경우 텍스트 UI 및 기본 프로그램 모두를 생성하여 IFP(IMS FastPath) 영역에서 실행할 수 있습니다. 또한 다중 세그먼트 입력 메시지 큐의 사용(converse 문 사용 포함)은 성능상의 이유로 IMS 단축 경로 프로그램에 권장되지 않습니다.
- transfer to transaction 문은 비단축 경로 프로그램에만 지원됩니다. 이 경우 transferred-to program은 터미널에 대해 응답합니다. show 문이 허용됩니다.
- dliLib.AIBTDLI(), dliLib.EGLTDLI(), vgLib.VGTDLI()는 단축 경로 트랜잭션에 지원되는 호출 유형만 사용해야 합니다.
- 다중 세그먼트 입력 메시지 큐는 지원되지 않습니다.
- 다음 조치 중 하나만 I/O PCB의
각 get unique에 대해 수행할 수 있습니다.
- transfer to transaction 또는 show 문
- 대체 응답 PCB와 연관된 연속 파일의 add 문
- I/O PCB 또는 대체 응답 PCB를 사용하여 dliLib.AIBTDLI(), dliLib.EGLTDLI(), vgLib.VGTDLI() 함수 호출
- 일괄처리 지향 BMP의 종료 전에 sysLib.commit() 서비스 루틴 사용
- IMS 메시지 큐와 연관된 연속 파일에 대한 get next 문이 트랜잭션 지향 BMP 종료 전에 endOfFile(QC 상태 코드)을 수신하도록 함
IMS BMP 영역에 대한 생성
IMS BMP 영역에서 실행되는 기본 프로그램을 생성할 수 있습니다.
트랜잭션 지향 IMS BMP 프로그램을 작성하려면 I/O PCB와 연관된 연속 레코드로 메시지를 차례대로 읽는 루프를 코드화하여 IMS 메시지 큐에서 입력을 검색해야 합니다. 단일 세그먼트 및 다중 세그먼트 메시지 큐의 사용은 이전에 IMS MPP 프로그램에서 설명된 것과 같습니다. 일괄처리 지향 IMS BMP 프로그램을 작성하려면 IMS 메시지 큐에서 입력을 읽지 마십시오. 세부사항은 IMS에서 연속 파일 및 인쇄 파일 사용의 내용을 참조하십시오.
- 입력을 수신하거나 GSAM 파일로 출력을 전송하십시오. 해당 목적으로 add 문을 코드화하여 생성 시에 GSAM PCB와 연관된 연속 레코드를 작성합니다. 또한 파일 유형을 GSAM으로 지정하고 GSAM 데이터 세트의 이름을 지정합니다. 또는 런타임 시 recordName.resourceAssociation을 사용하여 데이터 세트의 이름을 변경할 수 있습니다.
- GSAM 데이터 세트에 인쇄 출력을 전송하고 해당 목적으로 print 문을 코드화합니다. 생성 시에 프린터를 GSAM PCB와 연관시키고 파일 유형을 GSAM으로 지정하며 GSAM 데이터 세트의 이름을 지정합니다. 또는 런타임 시 converseVar.printerAssociation을 사용하여 출력 GSAM 데이터 세트의 이름을 변경할 수 있습니다.
코드는 다른 IMS BMP 프로그램에 전송되거나 이를 호출합니다. 호출된 프로그램은 메시지 큐에서 읽을 수 없습니다.
빌드 디스크립터 옵션의 영향
생성 시 사용되는 빌드 디스크립터에서 옵션을 설정하여 코드 외부에서 일부 의사결정을 적용합니다.
- SPA의 크기를 요구하려면(대화식 프로그램에 필요) 빌드 디스크립터 옵션 spaSize를 설정하십시오. 프로그램이 비대화식이 되도록 하려면 해당 값을 0(기본값)으로 설정하십시오.
- 대화식 프로그램이 IMSADF II 프로그램으로부터 전송되거나 이 프로그램으로 전송됨을 표시하려면 빌드 디스크립터 옵션 spaADF를 YES로 설정하십시오.
- FastPath 프로그램(IFP 영역에서 실행)을 생성하려면 빌드 디스크립터 옵션 imsFastPath를 예로 설정하십시오.
- imsLogID
- mfsExtendedAttr
- mfsIgnore
- mfsUseTestLibrary
- formServicePgmType
- spaStatusBytePosition