tbESQL/COBOL 프리컴파일러 옵션

tbESQL/COBOL 프리컴파일러를 동작시킬 때 사용할 수 있는 옵션에 대해 설명합니다.

개요

tbESQL/COBOL 프리컴파일러 옵션은 프리컴파일러를 동작시킬 때 프리컴파일러가 추가적인 기능을 수행하도록 설정하기 위해서 사용됩니다.

우선 먼저 프리컴파일러를 사용하려면, 다음과 같이 입력합니다.

[예 1] tbESQL/COBOL 프리컴파일 실행

tbpcb test1.tbco

위 예를 보면 tbpcb 유틸리티를 통해 프리컴파일을 실행하게 된다. 'test1.tbco'은 프리컴파일을 실행할 대상 파일의 이름입니다. 프리컴파일을 실행할 때 대상 파일의 확장자가 '.tbco'일 경우 확장자를 생략하고 사용해도 무방합니다. 'test1.tbco'는 tbESQL/COBOL에서 제공하는 프리컴파일러의 옵션 중 하나인 INAME 에 해당합니다.

모든 프리컴파일러의 옵션 중에서 옵션의 이름을 생략할 수 있는 것은 INAME 하나뿐입니다. 따라서 INAME을 생략하지 않고, 다음과 같이 사용해도 위의 예와 동일한 의미를 갖습니다.

tbpcb INAME=test1.tbco

다음은 INAME과 INCLUDE 옵션을 사용한 예입니다.

[예 2] tbESQL/COBOL 프리컴파일러의 옵션을 사용한 프리컴파일 실행

tbpcb test1.tbco INCLUDE=/home/tibero/include

위의 예는 tbESQL/COBOL에서 제공하는 프리컴파일러 옵션을 두 개를 함께 사용한 것입니다. 앞서 언급했 듯이 'INAME='은 생략할 수 있습니다. INCLUDE 옵션은 'test1.tbco' 안에서 사용된 각종 COPY, ESQL INCLUDE 파일이 같은 디렉터리에 있지 않을 경우 프리컴파일을 실행할 때 에러를 발생하게 됩니다. 따라서 이런 파일 들이 존재하는 디렉터리를 지정해줄 때 사용하는 옵션입니다.

tbESQL/COBOL 프리컴파일러 옵션 지정

프리컴파일러 옵션은 명령 프롬프트에서 직접 입력할 수도 있지만, 환경설정 파일이나 프로그램 내부에 서도 지정할 수 있습니다. 옵션의 종류에 따라 지정할 수 있는 장소가 다릅니다. 어떤 곳에서도 옵션을 지정하지 않았을 경우 기본값이 적용됩니다.

옵션이 적용되는 순서는 다음과 같습니다.

  1. 기본값

  2. 환경설정 파일

  3. 명령 프롬프트

  4. 프로그램 내부

하나의 항목만을 허용하는 동일한 한 가지 옵션에 여러 번에 걸쳐 다른 항목이 지정되었을 경우 항상 마지막에 지정된 내용만 유효합니다. 또한 옵션을 프로그램 내부에서 지정할 경우 옵션의 영향 범위는 COBOL 프로그래밍 언어의 문법에서의 변수의 영향 범위와는 무관합니다.

무조건 프로그램의 소스 코드의 진행 순서에서 가장 마지막에 지정된 옵션이 적용됩니다. INAME의 경우는 다른 옵션과 달리, 두 번 이상 INAME이 나타날 경우 에러가 발생합니다.

환경설정 파일

옵션을 지정할 때 환경설정 파일을 사용하는 방법에는 다음의 두 가지가 있습니다.

기본 환경설정 파일

tbESQL/COBOL에서는 기본적으로 tbpcb.cfg라는 환경설정 파일을 $TB_HOME/client/config 디렉터리에 두고 있습니다. 이 환경설정 파일을 수정해서 원하는 옵션을 지정할 수 있습니다. 만약 별도의 환경설정 파일이 지정되지 않으면 tbpcb 유틸리티는 자동으로 이 환경설정 파일을 먼저 읽습니다.

다음은 tbpcb.cfg 파일을 사용하여 프리컴파일러 옵션을 지정하는 예입니다.

위의 예에서처럼 #을 이용해서 행 전체에 대해 주석 처리를 할 수 있습니다. 환경설정 파일에서도 하나의 항목 만 허용하는 옵션이 두 번 이상 나타났을 경우 마지막에 지정된 옵션이 적용됩니다.

사용자 환경설정 파일

사용자가 환경설정 파일을 임의로 생성하여 사용할 수도 있습니다. 파일의 위치와 파일의 이름 등을 사용자가 임의로 정할 수 있습니다. 이 경우 명령 프롬프트를 통해 사용할 환경설정 파일을 지정합니다. 이렇게 환경설정 파일을 지정하면, tbpcb.cfg 파일은 사용되지 않습니다.

다음은 사용자 환경설정 파일을 지정하는 예입니다.

명령 프롬프트

tbESQL/COBOL 프리컴파일러 옵션은 명령 프롬프트에서 지정할 수도 있습니다. 명령 프롬프트에서는 다음과 같은 형태로 옵션을 지정할 수 있습니다.

다음은 명령 프롬프트에서 프리컴파일러 옵션을 지정하는 예입니다.

프로그램 내부

프로그램 내부에서도 프리컴파일러 옵션을 지정할 수 있습니다.

이 방법은 프리컴파일을 실행하는 도중에 옵션을 변경하고자 할 때 유용하게 사용할 수 있습니다. 또한 운영체 제에 따라 입력할 수 있는 글자 길이의 제한으로 인해 명령 프롬프트에서 옵션을 지정할 수 없는 경우가 있습니다. 이러한 경우 환경설정 파일을 사용할 수도 있지만 프로그램 내부에서 옵션을 지정할 수도 있습니다.

프로그램 내부에서는 다음과 같은 형태로 옵션을 지정할 수 있습니다.

프로그램 내부에서 프리컴파일러의 옵션을 지정할 때 한 가지 주의할 점은 프로그램 내부에서 지정한 옵션은 COBOL 프로그래밍 언어의 문법에 따른 변수의 영향 범위와는 전혀 무관하다는 것입니다.

즉, EXEC TIBERO OPTION으로 프로그램 내부에 준 옵션 값은 소스 프로그램에서 그 문장 이후에 나오는 tbESQL/COBOL 문장에만 영향을 미칩니다.

예를 들면 다음과 같습니다.

tbESQL/COBOL 프리컴파일러 옵션 목록

본 절에서는 Tibero에서 제공하는 프리컴파일러 옵션을 알파벳 순으로 설명합니다.

다음은 tbESQL 프리컴파일러 옵션을 요약한 목록입니다.

옵션
설명

CLOSE_ON_COMMIT

커밋할 때 커서를 닫을 것인가를 지정

CODE

전처리기로 전처리하여 생성되는 결과 파일의 코드를 지정

COLUMNS

프로그램을 작성할 때 유효한 컬럼 범위를 지정

COMP5

프리컴파일을 실행할 때 COMP 타입에 대하여 COMP-5 타입으로 변경 할 것인지를 지정

CONFIG

옵션이 기록될 환경설정 파일을 지정

DB2_SYNTAX

DB2 array select/insert 문법 사용 여부를 지정

DECLARE_SECTION

프리컴파일을 통해 DECLARE SECTION 내에 선언된 COMP 타입의 변수를 COMP-5로 변환하여 소스를 생성

DYNAMIC

Dynamic SQL 문장의 타입을 지정

END_OF_FETCH

END-OF-FETCH 상황에 대한 SQLCODE 값을 지정

ERROR_CODE

ESQL 애플리케이션에서 많이 사용되는 3개의 에러 코드를 Tibero와 Oracle 중에 어느 것으로 사용할지 지정

HOLD_CURSOR

커서가 닫힌 후 커서 정보를 유지할 것인가를 지정

INAME

프리컴파일을 실행할 파일의 이름을 지정

INCLUDE

COPY, ESQL INCLUDE 파일의 경로를 지정

INSERT_NO_DATA_ERROR

INSERT, SELECT할 때에도 NO_DATA_FOUND 기능을 사용할 것인지를 지정

MODE

프로그램이 전반적으로 Tibero의 형식을 따를 것인가 아니면 ANSI의 기준을 따를 것인가를 지정

ONAME

출력 파일의 이름 지정

ORACA

ORACA 구조체 사용 여부를 지정

PARSE

전처리를 할 때 입력 파일의 내용을 어느 범위까지 파싱할 것인가를 지정

PIC9_WITH_SIGN

PIC 9 타입에 (+) 부호를 가지게 할 것인지를 지정

PICX

PIC X (CHAR Array)와 PIC N (NCHAR Array) COBOL 타입의 데이터 타입을 지정

PREFETCH

프로그램의 속도 향상을 위해 몇 개의 로우를 미리 가져올지 지정

RELEASE_CURSOR

커서가 닫힌 후 커서 정보의 해제 여부를 지정

RESERVED_WORD_COL

예약어 'COL' 사용 여부를 지정

RESERVED_WORD_CUR SOR

예약어 'CURSOR' 사용 여부를 지정

RUNTIME_MODE

런타임에 사용할 드라이버를 지정

SELECT_ERROR

주어진 수 보다 많은 로우가 결과로 나왔을 때 에러를 발생시킬 것인가 의 여부를 지정

SQLCHECK

SQL 문장의 내용을 어느 범위까지 검사할 것인가를 지정

STMT_CACHE

Dynamic SQL 문장에 대해 cache size를 지정

SYS_INCLUDE

전처리를 할 때 사용될 시스템 헤더 파일의 경로를 지정

THREADS

멀티 스레드를 지원할 것인가를 지정

TYPE_CODE

Dynamic SQL 문장의 방법 4를 사용하는 방법을 지정

UNSAFE_NULL

지시자 변수가 없어도 NULL 값을 허용할 것인가를 지정

USERID

SQLCHECK가 SEMANTICS으로 지정되었을 때 서버에 접속하기 위한 사용자 정보를 지정

VARCHAR

사용자의 암시적인 varchar structure 사용을 허용

WORDSIZE

생성되는 결과 파일을 사용할 플랫폼의 WORDSIZE를 지정

CLOSE_ON_COMMIT

CLOSE_ON_COMMIT은 커밋을 할 때 커서를 닫을 것인가 아니면 닫지 않을 것인가를 지정하는 옵션입니다.

CLOSE_ON_COMMIT의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

EXEC SQL COMMIT을 실행할 때 해당 트랜잭션이 처리되는 동안에 열려있던 커서를 자동으로 닫음

NO

EXEC SQL CLOSE cursor_name을 사용해서 사용자가 직접 열린 커서를 닫아야 함 (기본값)

  • 지정 장소 환경설정 파일, 명령 프롬프트

CODE

CODE는 전처리기로 전처리하여 생성되는 결과 파일의 코드를 지정하는 옵션입니다.

CODE의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

COBOL

프리컴파일러는 COBOL 코드를 생성 (기본값)

NET-COBOL

프리컴파일러는 NET-COBOL 코드를 생성

MF-COBOL

COBOL 항목과 동일

  • 지정 장소 환경설정 파일, 명령 프롬프트

COLUMNS

COLUMNS는 프로그램을 작성할 때 유효한 컬럼 범위를 지정하는 옵션입니다.

COLUMNS의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

integer

기본값은 72

  • 지정 장소 환경설정 파일, 명령 프롬프트

COMP5

COMP5는 프리컴파일을 실행할 때 COMP 타입에 대하여 COMP-5 타입으로 변경할 것인지를 지정하는 옵션입니다.

COMP5의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

COMP 타입을 COMP-5 타입으로 변경 (기본값)

NO

COMP 타입을 COMP-5 타입으로 변경하지 않고 사용

  • 지정 장소 환경설정 파일, 명령 프롬프트

CONFIG

CONFIG는 옵션이 기록될 환경설정 파일을 지정하는 옵션입니다.

CONFIG의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

filename

옵션이 기록될 환경설정 파일의 이름을 명시

(기본값: $TB_HOME/client/config 디렉터리의 tbpcb.cfg 파일)

  • 지정 장소 명령 프롬프트

DB2_SYNTAX

DB2_SYNTAX는 array select/insert 구문에 대한 DB2 문법을 사용할 것인지를 지정하는 옵션입니다.

DB2_SYNTAX의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

DB2 array select/insert 문법만을 지원

NO

지원하지 않음 (기본값)

  • 지정 장소 명령 프롬프트

DECLARE_SECTION

DECLARE_SECTION은 DECLARE SECTION 내에 기술된 COMP 타입 변수에 대해 COMP-5로 변환하여 소스를 생성할지 결정하는 옵션입니다.

DECLARE_SECTION의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

  • DECLARE SECTION 내에 선언된 COMP 타입의 변수를 프리컴파일 후에 COMP- 5로 변환하여 소스에 기술

  • DECLARE SECTION이 아닌 곳에 선언된 변수 는 변환 대상이 아님

NO

COMP 타입의 변수를 COMP-5로 변환하지 않음 (기본값)

  • 지정 장소 명령 프롬프트

DYNAMIC

DYNAMIC은 Dynamic SQL 문장의 타입을 지정하는 옵션입니다.

DYNAMIC의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

ANSI

  • ANSI 타입의 동적 SQL을 사용하도록 지정

  • 이 옵션 값이 지정되었을 경우 Tibero 타입의 동적 SQL을 사용하면 프리컴파일러에서 문법 에러를 발생

ISO

ANSI와 같은 결과를 가짐

TIBERO

  • Tibero 타입의 동적 SQL을 사용하도록 지정

  • 이 옵션 값이 지정되었을 경우 ANSI 타입의 동적 SQL을 사용하면 프리컴파일러에서 문법 에러를 발생 (기본값)

ORACLE

TIBERO와 같은 결과를 가짐

circle-info

참고

ANSI 타입과 ISO 타입은 실제로 동작 방법이 완전히 일치합니다. 또한 TIBERO 타입과 ORACLE 타입 도 동작 방법이 같습니다.

  • 지정 장소 환경설정 파일, 명령 프롬프트

END_OF_FETCH

END_OF_FETCH는 SQL 문장의 수행 후 END-OF-FETCH 상황에서 사용자에게 반환할 SQLCODE 값을 지정하는 옵션입니다.

END_OF_FETCH의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

1403

미설정할 경우 1403이 SQLCODE 값이 됨(기본값)

100

ANSI 모드 또는 사용자를 지정할 경우 100이 SQLCODE 값이 됨

  • 지정 장소 환경설정 파일, 명령 프롬프트

ERROR_CODE

ERROR_CODE는 ESQL 애플리케이션에서 많이 사용되는 3개의 에러 코드를 Tibero와 Oracle 중에 어느 것으로 사용할지 지정합니다.

관련된 에러 코드는 다음과 같습니다.

ERROR_CODE의 사용법은 다음과 같습니다.

  • 문법

항목
설명

TIBERO

Tibero 에러 코드를 사용

ORACLE

Oracle 에러 코드를 사용 (기본값)

  • 지정 장소 환경설정 파일, 명령 프롬프트

HOLD_CURSOR

HOLD_CURSOR는 커서가 닫힌 후 커서 정보를 유지할 것인가를 지정하는 옵션입니다.

HOLD_CURSOR의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

커서가 닫힌 후 커서의 정보를 유지

NO

커서가 닫힌 후 커서의 정보를 삭제 (기본값)

  • 지정 장소 명령 프롬프트, 프로그램 내부

IGNORE_ERROR

IGNORE_ERROR는 SQLCHECK가 SEMANTICS 또는 FULL로 설정된 경우, 존재하지 않는 객체(프로시 저, 함수 등)를 참조할 때 발생하는 TBR-15044 에러를 무시하고 프리컴파일을 계속 진행할지 여부를 지정하는 옵션입니다.

IGNORE_ERROR의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

  • TBR-15044 에러가 발생해도 프리컴파일을 계속 진행

  • 에러 메시지는 여전히 출력되지만 프리컴파일은 성공적으로 완료

NO

TBR-15044 에러가 발생하면 프리컴파일을 중단 (기본값)

  • 지정 장소 명령 프롬프트

  • 사용법 PSM 블록에서 존재하지 않는 프로시저나 함수를 호출하는 경우, TBR-15044 에러를 무시하고 오라클 Pro*Cobol와 유사한 동작을 위해 이 옵션을 YES로 설정할 수 있습니다.

INAME

INAME은 프리컴파일을 실행할 대상 파일을 지정하는 옵션입니다.

INAME의 세부 내용은 다음과 같습니다.

  • 문법

다음은 INAME의 항목에 대한 설명입니다.

항목
설명

filename

프리컴파일을 실행할 대상 파일의 이름을 명시 (기본값: 없음)

  • 지정 장소 명령 프롬프트

  • 사용법 파일의 이름을 지정할 때 'INAME=' 부분과 파일의 확장자가 tbco일 경우 .tbco도 생략할 수 있습니다. 따라서 다음의 예는 모두 같은 의미입니다.

INCLUDE

INCLUDE는 COPY, ESQL INCLUDE 파일이 위치한 경로를 지정하는 옵션입니다.

프로그램 소스 내부에 사용된 COPY, ESQL INCLUDE 파일이 같은 디렉터리에 있지 않은 경우 프리컴파일할 때 에러가 발생합니다. COPY, ESQL INCLUDE 파일이 존재하는 디렉터리를 지정해 주어야 하며, 그 경우 이 옵션을 사용합니다.

INCLUDE의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

pathname

COPY, ESQL INCLUDE 파일이 존재하는 디렉터리를 명시

(기본값: 없음)

  • 지정 장소 환경설정 파일, 명령 프롬프트

INSERT_NO_DATA_ERROR

현재 no data found 처리는 UPDATE와 DELETE 문에대해서만 적용되고 있습니다.

INSERT_NO_DATA_ERROR는 insert, select 구문 사용 시에도 no data found 처리를 할 것인지 지정하는 옵션입니다.

INSERT_NO_DATA_ERROR의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

EXEC SQL INSERT, SELECT 사용 시에 선택된 row가 없으면 NO_DA TA_FOUND를 반환

NO

선택된 row가 없어도 NO_DATA_FOUND 처리 없이 진행 (기본값)

  • 지정 장소 환경설정 파일, 명령 프롬프트

LAZY_PSTMT_CHECK

LAZY_PSTMT_CHECK는 컴파일 시점에서 DECLARE CURSOR 구문이 참조하는 Statement의 존재 여 부를 확인하지 않는 옵션입니다. 이 옵션을 YES로 설정하면 DECLARE CURSOR와 PREPARE 구문의 실 행 순서에 관계없이 코드를 작성할 수 있습니다. 그러나 컴파일 단계에서 PREPARE 구문의 누락을 감지할 수 없어 런타임에 정의되지 않은 동작(undefined behavior)이 발생할 위험이 있습니다. 따라서 OPEN 구문을 실 행하기 전에 반드시 PREPARE 구문을 포함해야 합니다. 참고로 EXECUTE 구문에는 이 옵션이 적용되지 않는다.

LAZY_PSTMT_CHECK의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

  • 컴파일 시점에서 DECLARE CURSOR 구문이 참조하는 Statement 존재 여 부를 확인하지 않음

  • DECLARE, PREPARE 순서로 사용 가능하지만, OPEN 이전에 PREPARE를 하지 않으면 컴파일은 문제없지만 런타임 시점에 Undefined Behavior가 발 생할 수 있음

NO

컴파일 시점에서 Declare CURSOR 구문이 참조하는 Statement 존재 여부를 확인 (기본값)

  • 지정 장소 환경설정 파일, 명령 프롬프트

  • 사용법

LOG_LVL

LOG_LVL은 디버깅용 로그 생성 여부를 결정하는 옵션으로, RUNTIME_MODE가 ODBC인 경우에만 유 효하다. 구체적으로 ESQL 런타임에서 tbertl_odbc 라이브러리를 사용할 때만 동작합니다.

LOG_LVL의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

NONE

로그를 생성하지 않음(기본값)

TRACE

TRACE 레벨의 로그를 stdout으로 출력

DEBUG

DEBUG 레벨의 로그를 stdout으로 출력

  • 지정 장소 환경설정 파일, 명령 프롬프트

  • 사용법 이 옵션은 RUNTIME_MODE=ODBC로 설정된 경우에만 적용됩니다. stdout에 로그가 출력됩니다. ODBC아닌 경우에 로그를 출력하는 방법은 ESQL_LOG_DIR과 ESQL_LOG_LVL 환경변수를 사용하여 로그 파일을 생성이 가능하며, 이 경우에 stdout에 로그가 출력되는 것이 아니라 파일에 저장됩니다.

다음은 LOG_LVL=TRACE로 설정했을 때의 사용 예입니다.

위와 같이 설정하면 다음과 같은 형태의 로그가 stdout으로 출력됩니다.

MODE

MODE는 tbESQL/COBOL 프로그램이 전반적으로 Tibero의 형식을 따를 것인지 아니면, ANSI의 기준을 따를 것인지를 지정하는 옵션입니다. 이 옵션은 여러 가지 옵션을 한꺼번에 지정해 주는 역할을 합니다. 이 옵션으로 CLOSE_ON_COMMIT, DYNAMIC, TYPE_CODE 등의 옵션 값을 한꺼번에 지정할 수 있으며, 추 가로 다른 조건을 지정할 수도 있습니다.

MODE의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

ANSI

  • ANSI 타입의 동적 SQL을 사용하도록 지정

  • 이 옵션 값이 지정되었을 경우 Tibero 타입의 동적 SQL을 사용하면 프리컴파일러에서 문법 에러를 발생

ISO

ANSI와 같은 결과를 가짐

TIBERO

  • Tibero 타입의 동적 SQL을 사용하도록 지정

  • 이 옵션 값이 지정되었을 경우 ANSI 타입의 동적 SQL을 사용하면 프리컴파일러에서 문법 에러를 발생 (기본값)

ORACLE

TIBERO와 같은 결과를 가짐

다음은 MODE 옵션에 지정된 값에 따라 설정되는 세부 옵션입니다.

옵션
ANSI
TIBERO

CLOSE_ON_COMMIT

YES

NO

DYNAMIC

ANSI

TIBERO

TYPE_CODE

ANSI

TIBERO

circle-info

참고: ANSI는 ISO와 TIBERO는 ORACLE과 동일한 기능을 합니다.

  • 지정 장소 환경설정 파일, 명령 프롬프트

ONAME

ONAME은 프리컴파일러의 결과물로 나오는 출력 파일의 이름을 지정하는 옵션입니다.

ONAME의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

filename

  • 원하는 출력 파일의 이름을 명시

  • 기본값은 입력된 파일 이름에서 확장자만 .cob로 바꿈

  • 지정 장소 환경설정 파일, 명령 프롬프트

ORACA

ORACA는 Oracle Communications Area 구조체를 사용할지 여부를 지정하는 옵션입니다.

ORACA의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

프로그램 내에 EXEC SQL INCLUDE ORACA 문장이 존재해야 함

NO

프로그램 내에 EXEC SQL INCLUDE ORACA 문장이 존재하지 않아도 됨 (기본값)

  • 지정 장소 환경설정 파일, 명령 프롬프트

PIC9_WITH_SIGN

PIC9_WITH_SIGN는 부호를 가지지 않는 PIC 9 타입에 (+) 부호를 가지게 할지 여부를 지정하는 옵션입니다.

PIC9_WITH_SIGN의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

PIC 9 타입이 (+) 부호를 가짐(기본값)

NO

PIC 9 타입이 부호를 가지지 않음

  • 지정 장소 환경설정 파일, 명령 프롬프트

PICX

PICX는 PIC X (CHAR Array) COBOL 타입의 데이터 타입을 지정합니다.

PICX 옵션은 INSERT와 WHERE절에 적용되는 옵션입니다. VARCHAR2 옵션으로 지정할 때에 CHAR Array 와 NCHAR Array에 저장되어 있는 공백을 모두 지운 후에 INSERT 동작을 하게 됩니다. 따라서 VARCHAR 타입의 컬럼에 INSERT하면 공백이 모두 지워진 채로 INSERT되며, CHAR 타입의 컬럼에 INSERT하면 컬럼의 크기에서 데이터의 크기를 제외한만큼 공백이 들어갑니다.

WHERE 절을 사용할 때에도 공백 제거가 적용됩니다. 데이터가 같고 공백의 수가 같더라도 VARCHAR2 옵션을 사용할 때에는 공백이 제거되기 때문에 WHERE 절에서 매칭되지 않습니다.

PICX의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

CHARF

PIC X (CHAR Array)와 PIC N (NCHAR Array)가 각각 VARCHAR, NVARCHAR 타입으로 지정됨

VARCHAR2

PIC X (CHAR Array)와 PIC N (NCHAR Array)가 각각 기존의 타입인 CHAR, NCHAR 타입으로 지정됨 (기본값)

  • 지정 장소 명령 프롬프트

PREFETCH

PREFETCH는 속도 향상을 위해 몇 개의 로우를 미리 가져올지를 지정하는 옵션입니다.

PREFETCH의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

integer

미리 가져올 로우의 개수를 지정 (기본값: 1)

  • 지정 장소 환경설정 파일, 명령 프롬프트

RELEASE_CURSOR

RELEASE_CURSOR는 커서가 닫힌 후 커서에 저장된 정보의 해제 여부를 지정하는 옵션입니다.

RELEASE_CURSOR의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

커서가 닫히면 커서의 정보를 해제

NO

커서가 닫혀도 커서의 정보를 해제하지 않음 (기본값)

  • 지정 장소 명령 프롬프트, 프로그램 내부

RESERVED_WORD_COL

RESERVED_WORD_COL는 예약어 'COL' 사용 여부를 지정하는 옵션입니다.

RESERVED_WORD_COL의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

예약어 'COL'을 사용자 변수명으로 사용할 수 없음 (기본값)

NO

예약어 'COL'을 사용자 변수명으로 사용할 수 있음

  • 지정 장소 환경설정 파일, 명령 프롬프트

RESERVED_WORD_CURSOR

RESERVED_WORD_CURSOR는 예약어 'CURSOR' 사용 여부를 지정하는 옵션입니다.

RESERVED_WORD_CURSOR의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

예약어 'CURSOR'를 사용자 변수명으로 사용할 수 없음 (기본값)

NO

예약어 'CURSOR'를 사용자 변수명으로 사용할 수 있음

  • 지정 장소 환경설정 파일, 명령 프롬프트

RUNTIME_MODE

RUNTIME_MODE는 런타임에 사용할 드라이버를 지정하는 옵션입니다.

RUNTIME_MODE의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

ODBC

  • odbc 함수를 사용

  • 컴파일과 링크 과정에서 tbERTL 라이브러리 이외에 odbc 라이브러리를 함께 링크해야 함

TIBERO

  • tbCLI 함수를 사용

  • 컴파일과 링크 과정에서 tbERTL 라이브러리 이외에 tbCLI 라이브러리를 함께 링크해야 함 (기본값)

  • 지정 장소 명령 프롬프트, 프로그램 내부

SELECT_ERROR

SELECT_ERROR는 호스트 변수 등으로 인해 주어진 수행 결과 개수보다 실제로 질의를 수행한 결과가 더 많이 반환된 경우 에러를 발생시킬 것인가를 지정하는 옵션입니다.

SELECT_ERROR의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

더 많은 로우가 반환되었을 경우 에러를 발생시킴 (기본값)

NO

더 많은 로우가 반환되어도 에러를 발생시키지 않음

  • 지정 장소 명령 프롬프트, 프로그램 내부

  • 사용법

다음은 tbESQL/COBOL 프로그램의 예입니다.

위 예에서 만약 질의를 수행한 결과가 더 많은 로우를 반환하는 경우 SELECT_ERROR 옵션에 지정된 값에 따라 다음과 같이 나타나는 결과가 다릅니다.

항목
결과

YES

ERROR_ESQL_TOO_MANY_ROW_IN_SELECT 에러가 발생

NO

  • 수행된 질의 결과의 첫 번째 로우를 호스트 변수에 할당

  • 이때 에러는 발생하지 않음

SQLCHECK

SQLCHECK는 tbESQL/COBOL 문장의 내용을 어느 범위까지 검사할 것인가를 지정하는 옵션입니다.

SQLCHECK의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

SEMANTICS

  • SEMANTICS로 지정되면, 프리컴파일러는 서버에 접속을 시도

  • 따라서 SEMANTICS로 설정하기 위해서는 USERID 옵션이 반드시 필요

  • 접속이 성공하면 프리컴파일러는 SQL 문장을 서버로 보내 문법뿐만 아니라 SQL 문장이 참조하는 스키마 객체의 내용까지 검사하며, 컬럼의 타입 정보 등을 바탕 으로 올바른 타입끼리 호스트 변수에 바인딩 되는지도 검사

  • tbESQL/COBOL 문장뿐만 아니라 DDL이나 PSM일 경우에도 문법과 내용을 모두 검사

FULL

SEMANTICS와 동일한 의미를 가짐

SYNTAX

tbpcb 유틸리티는 서버에 접속하지 않고 자체적으로 ESQL 문법과 SQL 문법을 검사(기본값)

  • 지정 장소 명령 프롬프트, 프로그램 내부

STMT_CACHE

STMT_CACHE는 Dynamic SQL 문장에 대해 cache size를 지정하는 옵션입니다.

STMT_CACHE의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

integer

애플리케이션에서 distinct한 Dynamic SQL문에 대해 cache size를 지정(기본값: 10)

  • 지정 장소 환경설정 파일, 명령 프롬프트

SYS_INCLUDE

SYS_INCLUDE는 시스템 헤더 파일이 위치한 경로를 지정하는 옵션입니다.

SYS_INCLUDE의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

pathname

시스템 헤더 파일이 존재하는 디렉터리를 명시 (기본값: 없음)

  • 지정 장소 환경설정 파일, 명령 프롬프트

THREADS

THREADS는 멀티 스레드 지원 여부를 지정하는 옵션입니다.

THREADS의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

멀티 스레드를 지원

NO

멀티 스레드를 지원하지 않음 (기본값)

  • 지정 장소 환경설정 파일, 명령 프롬프트

  • 사용법 다음과 같은 문장에 멀티 스레드를 사용하려면, THREADS 옵션의 값은 반드시 YES로 설정되어있어야 합니다.

    • ENABLE THREADS

    • CONTEXT USE

    • CONTEXT ALLOCATE

    • CONTEXT FREE

TYPE_CODE

TYPE_CODE는 Dynamic SQL 문장을 사용하는 방법 중에 방법 4를 사용하는 방법을 지정하는 옵션입니다.

TYPE_CODE의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

ANSI

  • ANSI 타입의 동적 SQL을 사용하도록 지정

  • 이 옵션 값이 지정되었을 경우 Tibero 타입의 동적 SQL을 사용하면 프리컴파일러에서 문법 에러를 발생

ISO

ANSI와 같은 결과를 가짐

TIBERO

  • Tibero 타입의 동적 SQL을 사용하도록 지정

  • 이 옵션 값이 지정되었을 경우 ANSI 타입의 동적 SQL을 사용하면 프리컴파일러에서 문법 에러를 발생 (기본값)

ORACLE

TIBERO와 같은 결과를 가짐

circle-info

참고

ANSI 타입은 ISO 타입과 동작 방법이 동일하며, TIBERO 타입은 ORACLE 타입과 동작방법이 동일합니다.

  • 지정 장소 환경설정 파일, 명령 프롬프트

UNSAFE_NULL

UNSAFE_NULL은 지시자 변수가 없을 때 NULL 값을 허용할 것인지의 여부를 지정하는 옵션입니다.

NULL 데이터가 예상되는 경우에도 편의상 지시자 변수 사용을 생략하고 싶을 때 이 옵션을 사용합니다.

UNSAFE_NULL의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

  • NULL을 허용

  • 지시자 변수 없이 NULL 데이터를 호스트 변수로 받아도 에러는 발생하지 않음

NO

  • NULL을 허용하지 않음 (기본값)

  • 지시자 변수 없이 NULL 데이터를 호스트 변수로 받으면 1405 에러를 발생

  • 1405 에러는 가져온 데이터가 NULL이나 지시자 변수가 존재하지 않아 tbESQL/COBOL 런타임 라이브러리가 개발자에게 NULL 값의 존재 여부를 알려 줄 방법이 없을 경우 발생되는 에러

  • 지정 장소 환경설정 파일, 명령 프롬프트

USERID

USERID는 서버 접속을 할 때 필요한 사용자 계정의 정보를 지정하는 옵션입니다. 이 옵션은 SQL 문장의 내용을 검사하기 위한 접속 정보일 뿐이며, 실제 데이터베이스를 실행할 때의 접속 정보와는 무관합니다.

USERID의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

username

사용자의 이름을 명시

password

사용자의 패스워드를 명시

  • 지정 장소 명령 프롬프트

  • 사용법 SQLCHECK를 SEMANTICS나 FULL로 지정할 경우 반드시 이 옵션을 사용해야 합니다.

VARCHAR

VARCHAR는 사용자가 선언한 COBOL group item을 ESQL의 VARCHAR 데이터 타입으로 인식하도록 지정하는 옵션입니다.

VARCHAR의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

  • 사용자의 implicit한 group item을 VARCHAR 데이터 타입으로 처리

  • 사용자는 반드시 49레벨에 VARNAME-LEN과 VARNAME-ARR을 필드로 선언해야 함

NO

implicit한 group item을 VARCHAR external 데이터 타입으로 허용하지 않음(기본값)

  • 지정 장소 명령 프롬프트

VARCHAR_TEXT

VARCHAR_TEXT는 COBOL에서 VARYING LENGTH 필드를 변환할 때 프리컴파일러가 변수명을 어떻 게 처리할지 지정하는 옵션입니다. YES로 설정하면 필드가 TEXT 접미사를 가진 구조체로 변환되고, NO로 설정하면 ARR 접미사를 가진 구조체로 변환됩니다.

VARCHAR_TEXT의 세부 내용은 다음과 같습니다.

  • 문법

항목
설명

YES

VARYING LENGTH 필드를 변환할 때, 필드명에 TEXT 접미사를 사용

NO

VARYING LENGTH 필드를 변환할 때, 필드명에 ARR 접미사를 사용 (기본값)

  • 지정장소 환경설정 파일, 명령 프롬프트

  • 사용법 COBOL 프로그램에서 VARYING LENGTH 필드를 선언할 때, VARCHAR_TEXT 옵션에 따라 프리컴파 일러가 자동으로 구조체를 생성합니다.

예시

WORDSIZE

WORDSIZE는 64bits에서 32bits용 소스 또는 그 반대로도 프리컴파일러로 소스를 생성할 수 있도록 하는 옵션입니다. (기본값: 64)

WORDSIZE의 세부 내용은 다음과 같습니다.

  • 문법

  • 지정 장소 환경설정 파일, 명령 프롬프트

Last updated