DL/I 상태 코드
본 부록에서는 애플리케이션이 DL/I 함수 호출 후 반환되는 DL/I 상태 코드에 대하여 설명한다.
애플리케이션에서는 DL/I 상태 코드를 참조하여 사용자가 원하는 처리를 진행할 수 있다.
-
AC
설명
GU, GHU, GN, GHN, GNP, GHNP, ISRT, DLET, REPL 등 DL/I 함수를 호출할 때 넘겨준 SSA의 오류이다.
원인
-
SSA가 Hierarchical 레벨순서로 지정되어 있지 않다.
-
DL/I가 SSA에 기술한 세그먼트 이름을 데이터베이스 PCB에서 찾지 못했다.
-
데이터베이스 PCB에 세그먼트 이름은 기술되었으나 접근한 Hierarchical sequence에 세그먼트 이름이 들어있지 않다.
-
동일한 계층 레벨의 SSA를 2번 기술했다.
대응방법
SSA에 기술한 세그먼트의 Hierarchical 레벨 순서나 이름을 확인하여 수정한다.
-
-
AD
설명
함수의 파라미터가 유효하지 않거나 지원하지 않는 함수 타입이다.
원인
-
함수의 파라미터가 유효하지 않다.
-
함수의 파라미터 순서가 유효하지 않다.
-
시스템의 서비스를 호출할 때 I/O PCB를 이용하지 않았다.
-
데이터베이스를 호출할 때 데이터베이스 PCB를 이용하지 않았다.
대응방법
기술한 함수 코드 또는 파라미터의 순서가 유효한지 확인한다.
-
-
AH
설명
1개 이상의 SSA 파라미터가 필요한 함수를 호출한 경우이다.
원인
ISRT 호출하는 경우 SSA 파라미터를 포함하지 않았다.
대응방법
ISRT 호출인 경우 SSA 파라미터의 포함 여부를 확인한다.
-
AI
설명
데이터셋을 open할 때 오류가 발생했다.
원인
-
초기화 로드가 실시되지 않은 데이터셋에 대해 L, LS 이외의 DBPCB를 사용한 함수를 호출했다.
-
이미 초기화 로드가 실시된 데이터셋에 대해 L, LS의 DBPCB를 사용하여 ISRT 함수를 호출했다.
대응방법
데이터셋에 초기화 로드가 실시되었는지 확인한다.
-
-
AJ
설명
SSA에 기술한 형식이 유효하지 않다.
원인
-
SSA가 잘못된 Command Code를 포함하고 있다.
-
조건문의 관계연산자가 유효하지 않다.
-
조건문에 괄호 문자가 빠졌거나 짝을 이루지 않는다.
-
DLET, REPL, ISRT에서 Qualified SSA를 사용했다.
대응방법
SSA의 잘못된 형식을 수정한다.
-
-
AK
설명
SSA에 유효하지 않은 필드 이름이 발견되었다.
원인
-
SSA에 잘못된 필드 이름을 기술했다.
-
SSA에 기술한 필드 이름이 DBD에 정의 되어있지 않다.
대응방법
SSA의 잘못된 필드 이름을 수정한다.
-
-
AM
설명
호출한 함수가 PCB의 PROCOPT에 기술한 Processing option과 적합하지 않다.
원인
-
DLET, REPL, ISRT를 호출하는 경우 참조하는 PCB에 적합한 Processing option을 기술하지 않았다. 기본적으로 DLET는 D, REPL은 R, ISRT는 I가 설정되어야 한다.
-
데이터베이스 초기화용 로드 프로그램에서 ISRT를 호출하는 경우 참조하는 PCB의 Processing option을 L로 기술하지 않았다.
대응방법
요청한 함수를 수정하거나 PCB의 내용을 수정한다.
-
-
AO
설명
TSAM에서 물리적 I/O 에러가 발생했다.
원인
-
TSAM에서 장애가 발생했다.
-
TSAM의 데이터베이스 파일이 삭제되었거나 접근할 수 없다.
대응방법
TSAM의 장애 여부를 확인하여 처리한다.
-
-
AP
설명
CHKP를 호출하는 경우 사용한 파라미터의 개수가 유효하지 않다.
원인
CHKP를 호출하는 경우 4개 이상의 파라미터를 기술하였다.
대응방법
CHKP의 호출문을 수정한다.
-
DA
설명
수정할 수 없는 세그먼트의 필드를 변경하려 시도했다.
원인
-
DLET 또는 REPL 호출에서 세그먼트의 키 변경을 시도했다.
-
PSB의 REPL 옵션이 NO로 기술된 필드를 수정하려 했다.
대응방법
요청사항을 수정한다.
-
-
DJ
설명
현재 hold 상태가 아닌 세그먼트에서 DLET 또는 REPL을 수행했다.
원인
-
GHU, GHN, GHNP 호출로 조회하지 않고 DLET 또는 REPL을 수행했다.
-
이미 삭제된 세그먼트 내용으로 DLET를 호출했다.
대응방법
요청사항을 확인 후 수정한다.
-
-
DX
설명
요청한 DLET 호출이 세그먼트 삭제 규칙에 위배된다.
원인
프로그램이 세그먼트 삭제 규칙에 위배된 DLET를 요청했다.
대응방법
DBA에게 세그먼트 삭제 규칙을 확인하도록 한다.
-
GA
설명
상위 레벨의 세그먼트가 조회되었다.
원인
Unqualified GN 또는 GNP를 호출하는 경우 현재 세그먼트보다 상위 레벨의 세그먼트가 조회되었다.
대응방법
정보성 상태코드이다.
-
GB
설명
순차적 조회 중 데이터베이스를 끝까지 읽었다.
원인
GN을 호출하는 경우 데이터베이스 끝까지 조회되었다.
대응방법
애플리케이션 프로그램에서 결정한다.
-
GD
설명
현재 포지션이 없는 상태에서 ISRT를 호출했다.
원인
현재 포지션이 삭제되었거나 없는 상태에서 ISRT를 시도했다.
대응방법
애플리케이션 프로그램에서 결정한다.
-
GE
설명
조건에 일치하는 세그먼트 인스턴스를 찾지 못했다.
원인
-
Get 계열을 호출할 때 기술한 조건에 일치하는 세그먼트 인스턴스를 찾지 못했다.
-
ISRT를 호출할 때 삽입할 세그먼트의 부모 세그먼트를 찾지 못했다.
대응방법
애플리케이션 프로그램에서 결정한다.
-
-
GG
설명
유효하지 않은 세그먼트 포인터를 가진 세그먼트를 조회하였다.
원인
-
세그먼트 포인터가 가리키는 위치의 세그먼트 프리픽스 영역에서 유효하지 않은 형식의 값이 발견되었다.
-
세그먼트가 존재하지 않는 위치를 가리키는 세그먼트 포인터가 발견되었다.
대응방법
-
데이터베이스의 데이터가 정상적으로 로드되었는지 확인한다. 데이터를 로드할 때 COBOL 애플리케이션 프로그램을 사용하는 경우 데이터가 정상적으로 로드되기 위해서는 해당 프로그램을 STOP RUN 대신 GO BACK 명령으로 종료시켜야 한다.
-
HDAM, HIDAM 데이터베이스의 경우 하나의 CI당 레코드가 한 개만 들어갈 수 있도록 레코드 길이를 지정했는지 확인한다.
-
-
GK
설명
현재 세그먼트와 레벨은 같으나 다른 타입의 세그먼트가 조회되었다.
원인
Unqualified GN 또는 GNP를 호출하는 경우 현재 세그먼트와 레벨은 같으나 다른 타입의 세그먼트가 조회되었다.
대응방법
정보성 상태코드이다.
-
GP
설명
설정된 parentage가 없다.
원인
-
프로그램이 parentage가 설정되지 않은 상태에서 GNP를 요청했다.
-
GNP를 요청할 때 기술한 세그먼트 레벨이 설정된 parent 보다 높은 경우이다.
대응방법
GNP 호출 전 parentage를 설정하고 GNP시 기술한 세그먼트의 레벨을 확인한다.
-
-
II
설명
세그먼트를 삽입할 때 데이터베이스에 중복된 세그먼트가 존재한다.
원인
-
ISRT를 호출할 때 이미 데이터베이스에 존재하는 세그먼트를 삽입하려 했다.
-
동일한 물리 트윈 순차 필드와 논리 트윈 순차 필드를 가진 세그먼트가 존재한다.
대응방법
중복된 세그먼트의 값을 배제한 후에 처리한다.
-
-
IX
설명
요청한 ISRT 호출이 세그먼트 삽입 규칙에 위배된다.
원인
-
논리 자식 세그먼트의 삽입을 시도한 경우 그에 대응하는 논리 또는 물리 부모 세그먼트가 존재하지 않는다.
-
Concatenated 세그먼트의 삽입을 시도한 경우 물리 경로로 삽입을 시도했을 때 논리 또는 물리 부모 세그먼트가 존재하지 않는다.
-
논리 경로로 삽입을 시도했을 때 I/O Area의 논리 또는 물리 부모의 키에 해당하는 세그먼트가 존재하지 않는다.
대응방법
ISRT 또는 프로그램을 수정한다.
-
-
LB
설명
세그먼트 로드 시 데이터베이스에 중복된 세그먼트가 존재한다.
원인
-
동일한 물리 트윈 순차 필드를 가진 트윈 세그먼트가 존재한다.
-
물리 트윈 포워드 포인터를 가지고 있지 않는 트윈 세그먼트에서 같은 타입의 두 번째 세그먼트를 삽입하려고 한다.
대응방법
ISRT 호출 또는 로드 명령을 수정한다.
-
-
LC
설명
로드된 세그먼트의 키 필드가 계층적 순서에서 벗어났다.
원인
입력한 데이터가 계층적 순서에 어긋난다.
대응방법
세그먼트를 체크하고 어디에 로드되어야 하는지 결정한다.
-
NI
설명
유일한 Secondary Index에 중복된 세그먼트가 존재한다.
원인
유일한 순차 필드인 Secondary Index가 정의된 세그먼트에서 삽입 또는 갱신하는 동안 같은 키를 가진 인덱스 세그먼트를 찾았다.
대응방법
업무요건에 따라 결정한다. 만약 중복된 Secondary Index에서 발생하면 유일하지 않는 Index를 기술하고 overflow entry-sequenced dataset을 제공한다.
-
V1
설명
유효하지 않은 세그먼트 길이가 입력되었다.
원인
-
가변길이 세그먼트의 경우 ISRT, REPL 호출에서 DBD의 SEGMENT절 BYTES 항목에 기술한 세그먼트 길이의 최대, 최소값 범위를 벗어난 세그먼트 길이를 입력하였다.
-
ISRT, REPL 호출에서 입력한 세그먼트 데이터 길이가 데이터베이스 데이터셋의 레코드 길이를 초과하였다. 입력한 세그먼트 데이터 길이는 고정길이 세그먼트의 경우 DBD의 [SEGMENT] 섹션의 BYTES 항목에 기술한 값을 따르며 가변길이 세그먼트의 경우 세그먼트 데이터 입출력 버퍼에 기술한 세그먼트 길이 값을 따른다. 또한 액세스 메서드별 세그먼트 프리픽스의 길이도 감안해야 한다.
대응방법
ISRT, REPL 호출을 수행하는 애플리케이션을 수정하거나 DBD의 SEGMENT절 BYTES 항목의 값을 수정한다.
-
-
ZZ
설명
HiDB 동작 중 내부 오류가 발생했다.
원인
HiDB가 비정상동작할 수 있는 여러 가지 이유로 발생한다.
대응방법
출력되는 OpenFrame 오류 코드를 확인해 대응한다.
특정 상태 코드에 대한 더 자세한 정보가 필요하다면 IBM 안내서 중 "IMS V7 Application Programming: Database Manager"의 "Chapter 17. DL/I Status Codes"를 참고한다. |