Table of Contents | ||
---|---|---|
|
개요
...
본 문서는 SES*C/C++의 후속버전인 APRE*C/C++의 새로운 기능과 변경사항 및 업그레이드 절차에 대해 설명한다.
...
Note |
---|
이 문서는 정보 제공을 목적으로 제공되며, 사전에 예고 없이 변경될 수 있습니다. 이 문서는 오류가 있을 수 있으며, 상업적 또는 특정 목적에 부합하는 명시적, 묵시적인 책임이 일절 없습니다. 이 문서에 포함된 Altibase 제품의 특징이나 기능의 개발, 발표 등의 시기는 Altibase 재량입니다. Altibase는 이 문서에 대하여 관련된 특허권, 상표권, 저작권 또는 기타 지적 재산권을 보유할 수 있습니다. |
APRE*C/C++
...
Altibase의 새로워진 Precompiler of Embedded SQL에 대하여 설명한다. 요약형태의 설명으로 기능에 대한 상세사용법과 같은 구체적인 사항은 [Altibase Precompiler 가이드] 를 참고하도록 한다.
용어설명
...
본 문서에서 사용하는 용어에 대하여 간단히 설명한다.
...
- APRE*C/C++
Altibase 5.3.3 이상 버전의 Precompiler of Embedded SQL의 약어로 소스코드로 C와 C++을 지원한다. SES*C/C++와 비교하여 업그레이드 수준의 기능이 개선되었다.
도입배경
...
SES*C/C++는 아래와 같은 다수의 제약을 가지고 있어 사용상에 불편함이 있었다.
...
Altibase 사용자에게 Precompiler of Embedded SQL을 통한 개발편의성을 제공하기 위해서 이러한 제약은 우선적으로 개선되어야 할 사항이다.
New Features 요약
...
SES*C/C++에 존재하던 다수의 제약을 대폭 개선하였다.
기능 업데이트 수준을 넘어서는 업그레이드를 적용하면서 명칭 또한 APRE*C/C++(Altibase C/C++ Precompiler of Embedded SQL)로 변경되었다.
...
- WHENEVER 구문 사용시 함수 호출 가능
- APRE*C/C++ 실행파일(apre) 명령옵션 변경 및 추가
- 에러메세지 출력형태 변경
New Features 상세
...
APRE*C/C++에 추가된 새로운 기능은 다음과 같다.
...
-D
전처리(Preprocess) 시 사용될 매크로를 선언한다. 이 옵션은 코드 내의 #define과 같은 기능을 한다.Code Block theme DJango language sql $ apre –DALTIBASE –DOTHER_DBMS -t cpp tmp.sc
-keyword
예약된 키워드들을 보여준다.Code Block theme DJango language sql $ apre -keyword
-parse parsing_mode
파싱모드(parsing mode)를 지정하여 소스파일에 대한 precompile 범위를 결정한다.
-parse 옵션의 파싱모드와 그에 따른 처리범위는 아래와 같다.
-parse 옵션 자체를 생략한 경우는 기본적으로 파싱모드가 partial로 작동한다.파싱모드 내장 SQL(A) 매크로(B) 선언부외부/호스트변수(C) 비고 none O X X SES*C/C++와 동일하게 작동
#include 형식의 헤더파일은 처리하지 않음
partial O O X Partial C Processor 추가 작동
#include 형식의 헤더파일까지 처리
APRE*C/C++의 기본 파싱모드
full O O O C Parser가 추가 작동
#include 형식의 헤더파일까지 처리
단, C++ 스타일로 작성된 소스코드는 선언부외부 호스트변수 인식불가
[#include 형식의 헤더파일까지 처리] 의 경우, 해당 헤더파일 내의 #include 형식으로 선언한 또 다른 헤더파일까지도 모두 처리된다.
Gliffy Diagram chrome min name main.sc_header.h 예를 들어, 위 예제에서의 쿼리를 아래와 같이 매크로를 사용한 선택적인 쿼리로 변경 후
Code Block theme DJango language sql EXEC SQL select * into n from t1 #ifdef ALTIBASE where i1=:i and i > 'A'; #else where i1=:i; #endif
파싱옵션을 생략하여 기본 파싱모드인 partial로 precompile 할 경우
Code Block theme DJango language sql $ apte -t c main.sc
실제 생성코드는 아래와 같이 매크로 처리가 완료된 상태로만 남게된다.(매크로 처리 후 불필요하여 제거된 부분은 공백으로 치환된다)
Gliffy Diagram chrome min name 불필요한부분_공백 기존 SES*C/C++와 동일하게 precompile 하기 위해 -parse none을 지정한 경우에는 매크로 처리기능이 작동하지 않음으로 변수 중복선언 에러가 발생한다.
Code Block theme DJango language sql $ apre -t c -parse none main.sc ----------------------------------------------------------------- Altibase C/C++ Precompiler. Release Version 5.3.3.15 Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ----------------------------------------------------------------- [ERR-51011 : redefinition of 'i'.] [ERR-204E : The symbol name [i] can't be added on the symbol table.] File : main.sc Line : 13 Offset: 24-24 Error_token:;
유의사항
...
SES*C/C++에서 APRE*C/C++로 변경 시 다음의 내용에 대하여 유의 하여야 한다.
...
- -D, -I 옵션
C/C++ 컴파일 단계에서 –D, -I 옵션을 사용한다면 대부분의 경우 APRE*C/C++를 통한 precompile 단계에서도 동일한 옵션을 주어야 올바른 precompile이 가능하다.
참고사항
...
SES*C/C++에서 APRE*C/C++로 변경 시 다음의 내용을 참고해야 한다.
...
precompile 수행시간
SES*C/C++와 비교하여 precompile 수행시간이 다소 느려졌다.
아래는 Altibase 설치 시 제공되는 sample 예제 arrays1.sc(약 450 lines)를 SES*C/C++, APRE*C/C++로 각각 precompile을 수행한 시간을 측정한 결과이다.SES C/C++ APRE C/C++ Code Block theme DJango language sql SES C/C++ Precompiler 3 Ver 5.1.5.53 $ time sesc -t cpp arrays1.sc -silent real 0m0.203s user 0m0.168s sys 0m0.006s
Code Block theme DJango language sql APRE C/C++ Precompiler Ver 5.3.3.15 $ time apre -t cpp arrays1.sc –silent real 0m0.278s user 0m0.245s sys 0m0.004s
위 측정결과는 IBM AIX5.3 (Power5 1898 MHz 1EA)에서 precompile한 결과로 실제수행속도는 OS 환경에 따라 달라질 수 있다.
변경사항
...
SES*C/C++ 환경에서 ARPE*C/C++ 로의 업그레이드 시 고려사항과 절차에 대해 설명한다.
변경사항
...
SES*C/C++에서 APRE*C/C++ 로 명칭이 변경되면서 아래와 같이 실행파일, 헤더파일, 라이브러리파일, 링크옵션, 실행파일 명령옵션 명칭이 일부 변경되었다.
...
또한, 필수적인 요소는 아니나 -include 옵션의 경우도 -I로 변경하는 것을 권장한다.
업그레이드 절차
...
SES*C/C++ 개발환경에서 APRE*C/C++로 업그레이드시의 절차는 아래와 같다.
...
변경 관련파일이 쉽게 파악되지 않거나 양이 많아 일일이 수정할 수 없는 경우는 위 예시의 절차를 생략할 수 있지만 가급적 관련 명칭을 변경하는 정상적인 업그레이드 수행을 권장한다.
유의사항
...
SEC*C/C++에서 APRE*C/C++로 업그레이드 시 유의사항을 기술한다.
...