IMS 프로그램 디버깅

이 주제에서는 다음 태스크에 대해 설명합니다.

TSO 포그라운드에서 BTS를 실행하여 IMS Batch 프로그램을 대화식으로 디버깅

IMS Batch 프로그램을 대화식으로 디버깅하는 경우 전용 터미널을 통한 전체 화면 모드 또는 원격 디버그 모드를 사용할 수 있습니다. 이 주제에서는 다음 단계를 수행하여 TSO 포그라운드에서 BTS를 실행하는 세 번째 옵션에 대해 설명합니다.

  1. ./T 명령에 더미 트랜잭션 코드를 정의하여 프로그램을 초기화하십시오.
  2. BTS 입력 스트림에 더미 트랜잭션을 포함하십시오.
  3. TSO 포그라운드에서 BTS를 시작하십시오.

    FSS는 TSO 포그라운드에서 BTS를 시작할 때 사용되는 기본 옵션이며 TSO 포그라운드에서 BTS를 실행할 때만 사용할 수 있습니다. ./O 명령에 TSO=NO를 지정해서만 FSS를 끌 수 있습니다. TSO 포그라운드에서 FSS를 실행할 때는 기본적으로 TSO 터미널에 모든 호출 추적이 표시됩니다. 이 기능은 ./O 또는 ./T 명령에 매개변수를 지정해서 끌 수 있습니다.

주:
Debug Tool을 실행할 때 Debug Tool에 소스(C 및 C++) 또는 목록(COBOL 및 PL/I)이 표시되지 않으면 목록 또는 소스 파일명이 MVS 라이브러리명과 일치하는지와 이 MVS 라이브러리에 대해 최소한 읽기 권한을 가지고 있는지 확인하십시오.

Batch 모드로 IMS Batch 프로그램 디버깅

Debug Tool을 사용하여 Batch 모드로 IMS 프로그램을 디버깅할 수 있습니다. 디버그 명령은 미리 정의되어 Debug Tool 명령 파일 또는 명령 문자열 중 하나에 포함되어 있어야 합니다. 명령 문자열은 TEST 런타임 옵션에서, 또는 CALL CEETEST__ctest가 사용될 때 매개변수로 지정할 수 있습니다. Batch 모드에서는 자원 사용량이 줄어들지만 Batch 모드를 사용하려면 실행해야 할 디버깅 명령을 정확하게 알고 있어야 합니다. Batch Job으로 BTS를 실행할 때는 Debug Tool의 Batch 모드만 사용할 수 있습니다.

예를 들어, BTS에서 실행되는 IMS 트랜잭션에 대해 테스트 입력 데이터의 개별 멤버를 사용하여 데이터셋 userid.CODE.BTSINPUT을 할당할 수 있습니다.

비Language Environment IMS MPP 디버깅

다음 태스크를 수행하여, Language Environment에서 실행되지 않는 IMS 메시지 처리 프로그램(MPP)를 디버깅할 수 있습니다.

  1. 시스템이 올바르게 구성되었는지 확인하고 새 리젼을 시작하십시오. 지시사항은 구성 확인 및 비Language Environment IMS MPP의 리젼 시작을 참조하십시오.
  2. 디버그 인터페이스를 선택하십시오. 지시사항은 인터페이스 선택 및 비Language Environment IMS MPP에 대한 정보 수집을 참조하십시오.
  3. EQASET 트랜잭션을 실행하여, 선택한 디버그 인터페이스를 식별하고 디버깅을 사용 가능하게 설정하십시오. 비Language Environment IMS MPP의 EQASET 트랜잭션 실행을 참조하십시오.
  4. 디버깅할 프로그램과 연관된 IMS 트랜잭션을 시작하십시오.

프로그램 디버깅을 완료하면 다음 중 하나를 수행할 수 있습니다.

구성 확인 및 비Language Environment IMS MPP의 리젼 시작

Language Environment에서 실행되지 않는 IMS MPP를 디버깅하기 전에 다음 단계를 수행하십시오.

  1. 시스템 관리자에게 문의하여 Language Environment에서 실행되지 않는 IMS 프로그램을 디버그할 수 있도록 시스템이 구성되었는지 확인하십시오. 리젼과 EQANISET를 시작하는 APPLFE=EQANIAFE 매개변수 문자열을 JCL에 포함하는 방법에 대한 지시사항은 Debug Tool Customization Guide를 참조하십시오.
  2. 메시지 처리 프로그램(MPP)를 예약할 때마다 EQANIAFE 애플리케이션 프론트 엔드 루틴을 실행하는 IMS 메시지 처리 리젼(MPR)을 시작하십시오.

이 단계를 완료한 후 인터페이스 선택 및 비Language Environment IMS MPP에 대한 정보 수집을 참조하여 디버그 인터페이스를 선택하십시오.

인터페이스 선택 및 비Language Environment IMS MPP에 대한 정보 수집

다음 디버그 인터페이스 중 하나를 선택하고 표시된 정보를 수집하십시오.

디버그 인터페이스를 선택한 후 비Language Environment IMS MPP의 EQASET 트랜잭션 실행을 참조하여 EQASET 트랜잭션을 실행하십시오.

비Language Environment IMS MPP의 EQASET 트랜잭션 실행

EQASET 트랜잭션 실행은 다음 기능 중 하나를 수행하려는 EQANIAFE 애플리케이션 프론트 엔드 루틴에 대해 표시합니다.

디버깅 세션을 사용하려면 다음 옵션 중 하나를 선택하십시오.

EQASET 명령을 입력한 후 동일한 터미널에서, 디버깅할 애플리케이션 프로그램과 연관된 트랜잭션을 시작하십시오.

기존 환경 설정에 대한 정보를 요청하는 경우 EQASET STATUS 명령을 입력하십시오.

디버깅 세션을 사용하지 않으려면 EQASET OFF 명령을 입력하십시오.

EQASET OFF를 사용한 후 디버깅 세션을 다시 사용 가능하게 하려면 EQASET ON 명령을 입력하십시오.

비Language Environment MPP의 EQASET 트랜잭션 구문

다음 다이어그램에는 비Language Environment MPP의 EQASET 트랜잭션 구문이 표시됩니다.

구문 도표 읽기시각적 구문 도표 생략>>-EQASET--+-MFI=--+------------------------------------------+-+-><
           |       '-+---------------------+-terminal_LU_name-' |
           |         '-network_identifier.-'                    |
           +-VTAM=--+---------+---------------------------------+
           |        '-user_ID-'                                 |
           +-TCP=--+----------------------------+---------------+
           |       '-IP_address--%--port_number-'               |
           +-VTCP=--+----------------------------+--------------+
           |        '-IP_address--%--port_number-'              |
           +-ON-------------------------------------------------+
           +-OFF------------------------------------------------+
           '-STATUS---------------------------------------------'
 

EQASET 트랜잭션은 트랜잭션을 실행하는 사용자마다 별도로 디버깅 설정을 관리합니다. 각 설정은 트랜잭션이 실행되는 터미널에 로그온하는 데 사용된 사용자 ID로 식별됩니다. 각 사용자 ID에 대해, 입력된 마지막 디버깅 환경 설정(MFI, TCP, VTCP 또는 VTAM)만 저장됩니다. STATUS 옵션을 사용하여 현재 디버깅 환경 설정을 볼 수 있습니다.

다음 TEST 런타임 옵션 문자열은 디버깅 환경 설정을 사용하여 구성되었습니다.

TEST(ALL,INSPIN,,debuggingPreference:*)

다른 런타임 옵션은 사용자 정의할 수 없습니다.

MFI=
Debug Tool Terminal Interface Manager 없이 전용 터미널을 통한 전체 화면 모드를 사용합니다. 디버그 세션에 대해 전용 터미널 LU명을 지정해야 합니다. 사이트에서 VTAM 네트워크 ID를 지정해야 하는 경우, 터미널 LU명을 VTAM 네트워크 ID 이름의 접두부로 사용하십시오. 터미널 LU명을 지정하지 않으면 디버깅이 꺼집니다. 등호(=) 뒤에 공백을 사용할 수 없습니다. 이 환경 설정은 디버깅이 켜져 있음을 나타냅니다.
VTAM=
Debug Tool Terminal Interface Manager와 함께 전용 터미널을 통한 전체 화면 모드 사용. Y디버그 세션에 대해 지정된 전용 터미널에 로그온하는 데 사용된 사용자 ID를 지정해야 합니다. 사용자 ID를 지정하지 않으면 디버깅이 꺼집니다. 등호(=) 뒤에 공백을 사용할 수 없습니다. 이 환경 설정은 디버깅이 켜져 있음을 나타냅니다.
TCP= or VTCP=
원격 디버그 모드 사용. 원격 디버그 디먼을 실행 중인 워크스테이션의 TCP/IP 주소 및 포트 번호를 지정하십시오. IP 주소와 포트 번호를 지정하지 않으면 디버깅이 꺼집니다. 등호(=) 뒤에 공백을 사용할 수 없습니다. 이 환경 설정은 디버깅이 켜져 있음을 나타냅니다. 다음 형식 중 하나로 TCP/IP 주소를 지정할 수 있습니다.
IPv4
기호 주소(예: some.name.com) 또는 숫자 주소(9.112.26.333)로 주소를 지정할 수 있습니다.
IPv6
숫자 주소(예: 1080:0:FF::0970:1A21)로 주소를 지정해야 합니다. IPv6 형식을 사용하는 경우에는 TCP= 옵션을 사용해야 합니다. VTCP= 옵션은 사용할 수 없습니다.
ON
디버깅을 켭니다. 디버깅 환경 설정(MFI, TCP, VTCP 또는 VTAM)이 설정된 경우에만 유효합니다.
OFF
디버깅을 끕니다.
STATUS
현재 디버깅 환경 설정을 표시합니다. EQASET 트랜잭션은 IP 주소의 처음 25자만 표시합니다.

발행/시작 없이 Language Environment IMS MPP 디버깅

Language Environment for IMS 사용자 EXIT(EQADICXT)은 TEST 런타임 옵션을 포함해서 Language Environment 런타임 옵션이 있는 MVS 데이터셋명을 구성합니다. EQADICXT는 데이터셋명에 각 규정자를 표시하는 토큰에 값을 지정해서 MVS 데이터셋명을 구성합니다. 이는 IMS 사용자 ID를 &USERID 토큰에 대한 값으로 지정합니다. 그러나 IMS를 시작하지 않는 경우(/SIGN ON 사용), IMS 사용자 ID는 IMS LTERM ID와 동일하거나 정의되지 않습니다. 어떤 경우든 EQADICXT는 MVS 데이터셋을 찾을 수 없습니다. EQADICXT가 TSO 사용자 ID를 &USERID 토큰에 대한 값으로 지정하는지 지정하려면 TSOID 옵션을 지정해서 EAQSET 트랜잭션을 실행하십시오. TSOID 옵션을 사용하는 EQASET 트랜잭션에 대한 설명은 Language Environment MPP의 EQASET 트랜잭션 구문의 내용을 참조하십시오.

Language Environment MPP의 EQASET 트랜잭션 구문

다음 다이어그램에는 Language Environment MPP의 EQASET 트랜잭션 구문이 표시됩니다.

구문 도표 읽기시각적 구문 도표 생략>>-EQASET--+-TSOID=--+-------------+-+-------------------------><
           |         '-tso_user_ID-' |
           '-STATUS------------------'
 

Language Environment MPP에 EQASET 트랜잭션을 사용하는 경우, 이는 현재 IMS LTERM ID를 지정된 TSO 사용자 ID와 연관시킵니다. EQADICXT는 &USERID 토큰에 TSO 사용자 ID를 사용하여 MVS 데이터셋에 올바른 이름을 구성합니다.

TSOID=
Language Environment® 사용자 EXIT에서 &USERID 토큰 대신 사용할 TSO 사용자 ID를 식별하십시오. TSO 사용자 ID는 TEST 런타임 옵션 데이터셋 작성 및 관리에 설명된 대로 데이터셋명 작성에 사용된 사용자 ID와 일치해야 합니다.
STATUS
TSOID에 대한 현재 값을 표시합니다.

이 옵션은 비Language Environment MPP의 디버깅 환경 설정에 대한 정보도 표시할 수 있습니다.

Debug Tool Utilities를 사용하여 IMS 프로그램의 설정 파일 작성

사용자 정의 리젼을 작성하는 방법을 설명하고 IMS 프로그램의 로드 모듈 및 Debug Tool 로드 모듈에 대한 데이터셋을 참조하는 STEPLIB 연결 문을 정의하는 IMS BMP(Batch Messaging Process) 프로그램에 대한 설정 파일을 작성할 수 있습니다. 설정 파일을 작성하고 사용자 정의하여 IMS 메시지 처리 프로그램(MPP)을 테스트하는 데 사용할 수 있는 개인용 메시지 리젼을 작성할 수도 있습니다. 클래스 X를 사용하여 개인 메시지 리젼을 작성하면 트랜잭션 X에 의해 실행되는 IMS 프로그램을 테스트할 수 있고 다른 IMS 프로그램에서 사용 중인 다른 리젼을 방해하는 위험을 줄일 수 있습니다.

Debug Tool Utilities를 사용하여 IMS 프로그램에 대한 설정 파일을 작성하려면 다음 단계를 수행하십시오.

  1. Debug Tool Utilities를 시작하십시오. Debug Tool Utilities를 시작하는 방법을 모르는 경우 Debug Tool Utilities 시작을 참조하십시오.
  2. Debug Tool Utilities 패널(EQA@PRIM)에서 옵션 행에 4를 입력하고 Enter를 누르십시오.
  3. IMS 프로그램 관리 패널(EQAPRIS)에서 옵션 행에 2를 입력하고 Enter를 누르십시오.
  4. 설정 파일 편집 패널(EQAPFORA)의 개인 메시지 리젼 작성에서 새 설정 파일을 작성하기 위한 정보를 입력하거나 기존 설정 파일을 편집하십시오. Enter를 누르십시오.

    애플리케이션을 디버깅하는 중에 애플리케이션 또는 Debug Tool 라이브러리를 사용자 정의하는 개인 메시지 리젼을 작성하여 다른 사용자의 활동에 영향을 주지 마십시오. 시스템 관리자에게 개인 메시지 리젼의 작성과 관련된 권한 및 규칙을 문의하십시오.

    IMS 프로그램 실행에 필요한 설정 정보를 지정하면 IMS 프로그램을 테스트하거나 BMP 프로그램 실행 방법을 지정하는 데 사용할 수 있는 개인 메시지 리젼의 작성에 필요한 정보를 지정할 수 있습니다. 이 설정 정보를 지정하려면 다음 단계를 수행하십시오.

  5. 설정 파일 편집 패널(EQAPFORI)에 IMS Batch 프로세서를 시작하기 위한 정보를 입력하십시오. Enter / 필드에 슬래시(/)를 입력하여 매개변수를 수정한 다음 Enter를 눌러 Batch 프로세서에 대한 매개변수를 수정하십시오.
  6. IMS 프로시저 패널(EQAPRIPM)에 대한 매개변수에서 TYPE 필드에 다음 값 중 하나를 사용하여 완료하려는 액션을 나타내십시오.

    필요한 다른 매개변수를 입력하십시오. 매개변수에 대한 정보는 PF1를 누르십시오.

  7. 스펙을 입력한 후에 PF10을 누르면 처리할 Job을 제출할 수 있습니다.

Debug Tool이 느리게 표시되는 것을 피하기 위해 IMS 애플리케이션에 중단점 배치

IMS 애플리케이션 프로그램을 디버그할 때 IMS가 자원을 관리하는 방법이 가끔 Debug Tool이 반응이 없는 것 처럼 보일 수 있습니다. 이 상황을 방지하려면 중단점을 최대한 디버그 해야 하는 위치 가까이에 설정하거나 GU(GetUnique) 호출문에 설정하십시오. 이 주제의 정보를 통해 IMS의 자원 관리가 Debug Tool이 반응하지 않는 것 처럼 보이는 원인을 파악하고 이 상황을 방지하기 위해 중단점을 설정하기 위한 대략의 위치를 판별할 수 있습니다.

IMS 트랜잭션을 시작한 후 IMS는 해당 트랜잭션과 연관된 애플리케이션 프로그램을 로드하고 실행합니다. IMS는 해당 애플리케이션 프로그램이 요청하고 이로 리턴된 모든 메시지와 더불어 동시에 실행 중인 기타 애플리케이션 프로그램이 요청하고 이로 리턴된 모든 메시지도 관리합니다. IMS는 처리 한계 계수(PLCT) 및 기타 툴을 사용하여 애플리케이션 프로그램이 자원을 적합하게 공유하는지 확인합니다. IMS 애플리케이션 프로그램이 PLCT를 초과하지 않는 한 8, 계속 메시지를 실행하고 처리하거나 다음 메시지를 기다립니다. 그러나 애플리케이션 프로그램의 디버그를 계속 시도하는 경우 계속되는 메시지 처리 또는 메시지에 대한 대기 상황으로 인해 Debug Tool이 반응하지 않는 것 처럼 보입니다. 이 상황을 방지하려면 애플리케이션 프로그램을 실행하기 전에 디버그 세션 초기에 다음 옵션 중 하나를 시도하십시오(예: GO 명령 입력).

관련 참조


8.
애플리케이션 프로그램은 IMS 빠른 일정 변경을 사용해서 각 실제 스케줄에 대해 PLCT 이상을 처리할 수 있습니다. 빠른 일정 변경을 사용하면 애플리케이션 프로그램의 불필요한 일정 변경 및 재로드로 야기된 처리 오버헤드를 제거할 수 있습니다.