14. 전처리 오류 코드/메시지
전처리 오류
전처리 과정에서 발생하는 오류 메시지의 형식에 대해서 설명한다.
오류 출력 형식
[ERR-<error code> : <error message>]
File    : <file name>
Line    : <line number>
Offset  : <n-m>
Error_token : <error token>
 
- <error code>: 발생한 오류 코드  
 
- <error message>: 오류 메시지  
 
- <file name>: 오류가 발생한 파일의 이름  
 
- <line number>: 오류가 발생한 행 번호  
 
- <n-m>: 오류가 발생한 열 위치  
 
- <error token>: 오류가 발생한 토큰  
 
예제
다음 예제는 EXEC SQL END DECLARE SECTION이 없을 경우의 오류 출력을 보여준다.
[ERR-302L : EXEC SQL END DECLARE SECTION is not exist.]
File  : tmp.sc
Line  : 4
Offset: 1-31
Error_token:EXEC SQL BEGIN DECLARE SECTION;
 
오류 코드 형식
전처리 과정에서 발생하는 오류 코드체계는 다음과 같다.
오류 번호
오류 종류에 따라 다음과 같은 범위로 오류 번호가 분류된다.
- 101 – 199 : 시스템 오류  
 
- 201 – 299 : 호스트 변수 관련 오류  
 
- 301 – 399 : 커서 관련 오류  
 
- 401 – 499 : 일반 오류  
 
- 701 – 799 : 현재 버전에서 지원하지 않는 기능
 
오류 분류
오류 분류는 오류가 어떤 전처리 과정에서 발생한 것인지를 나타낸다.
- E: 호스트 변수 선언부에서 오류가 발생한 경우  
 
- L: 내장 SQL문 처리부에서 오류가 발생한 경우  
 
- M: 매크로 처리 부분에서 오류가 발생한 경우  
 
- H: 위 경우를 제외한 처리부에서 오류가 발생한 경우
 
오류 코드/메시지
101H – 199H
| 오류 코드 | 
에러 메시지 | 
| 101H | 
File '<file name>' open error. | 
| 102H | 
FileSize(<file name>) is zero. | 
| 103H | 
The include file [<file name>] does not exist in the folder. | 
| 104H | 
File '<file name>' delete error. | 
| 105H | 
Memory allocation error. | 
| 106H | 
Latch initialize error. (<file name>:<line>) | 
| 107H | 
Latch read error. (<file name>:<line>) | 
| 108H | 
Latch release error. (<file name>:<line>) | 
| 109H | 
Latch write error. (<file name>:<line>) | 
| 110H | 
Latch destroy error. (<file name>:<line>) | 
| 111H | 
File close error. | 
| 112H | 
File <file name> write error. | 
201E – 299E
| 오류 코드 | 
에러 메시지 | 
| 201E | 
C-type Comment is not closed. | 
| 202E | 
The structure name <name> is unknown. | 
| 203E | 
The structure name <name> is a duplicate. | 
| 204E | 
The symbol name <name> cannot be added to the symbol table. | 
| 205E | 
The symbol name exceeds the maximum length. [<name>] | 
| 206E | 
Redefinition of '<name>'. | 
| 207E | 
Unknown type '<name>'. | 
| 208E | 
Invalid scope depth [<depth>]. | 
| 209E | 
Inconsistent brace count. | 
| 210E | 
Inconsistent parenthesis count error. | 
| 211E | 
The nested structure exceeds the maximum possible depth. | 
| 212E | 
VARCHAR declarations are not permitted in #include files. | 
301L – 399L
| 오류 코드 | 
에러 메시지 | 
| 301L | 
The C include file can't contain embedded SQL statements. | 
| 302L | 
EXEC SQL END DECLARE SECTION does not exist. | 
| 303L | 
EXEC SQL BEGIN DECLARE SECTION does not exist. | 
| 304L | 
EXEC SQL END ARGUMENT SECTION does not exist. | 
| 305L | 
EXEC SQL BEGIN ARGUMENT SECTION does not exist. | 
| 306L | 
Unterminated string error. | 
| 307L | 
The connection name [<name>] is too long. (max length is 50) | 
| 308L | 
The cursor name [<name>] is too long. (max length is 50) | 
| 309L | 
Statement name [<name>] is too long. (max length is 50) | 
| 310L | 
The number of FOR loop iterations must be greater than zero. | 
| 311L | 
The host variable [<name>] is unknown. | 
| 312L | 
The host variable in a FREE LOB statement must be a LOB locator. | 
| 313L | 
Unterminated embedded SQL statement. | 
| 314L | 
The indicator variable [<name>] should be of type SQLLEN or a compatible type. | 
| 315L | 
Two or more arrays of structures are bound to host variables in the same statement. | 
401M – 499M
| 오류 코드 | 
에러 메시지 | 
| 401M | 
An unknown macro is too long. (>2k) | 
| 402M | 
Macro #if statement syntax error | 
| 403M | 
Macro #elif statement syntax error | 
| 404M | 
Macro #elif statement sequence error | 
| 405M | 
Macro #else statement sequence error | 
| 406M | 
Macro #endif statement sequence error | 
| 407M | 
An empty char constant cannot be used with an #if macro expression. | 
| 408M | 
Include files are nested too deeply. (maximum <0%s>) | 
| 409M | 
No #endif error. | 
| 410M | 
A closing parenthesis ')' is missing from the macro parameter list. | 
| 411M | 
Unknown macro name, or missing parenthesis after macro name. (<0%s>) | 
| 412M | 
Unterminated string error. | 
501H – 599H
| 오류 코드 | 
에러 메시지 | 
| 501H | 
<option name> option is repeated | 
| 502H | 
Option string <option string> is too long. | 
| 503H | 
The -mt and -sea options cannot be used together. | 
| 504H | 
Input file must be a form of '*.sc'. | 
| 505H | 
Unknown embedded SQL statement type. | 
701L – 799L
| 오류 코드 | 
에러 메시지 | 
| 701L | 
No CURSOR SENSITIVITY options are supported yet. | 
| 702L | 
No CURSOR INSENSITIVITY options are supported yet. | 
| 703L | 
No CURSOR ASENSITIVITY options are supported yet. | 
| 704L | 
WITH HOLD option is not supported yet. | 
| 705L | 
WITH RETURN option is not supported yet. | 
| 706L | 
READ ONLY option does is supported yet. | 
| 707L | 
ALTER COMPACT option is not supported yet. |