Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
maxLevel2

 

 

개요

...

본 문서는 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++에 추가된 새로운 기능은 다음과 같다.

...

  1. -D
    전처리(Preprocess) 시 사용될 매크로를 선언한다. 이 옵션은 코드 내의 #define과 같은 기능을 한다.

    Code Block
    themeDJango
    languagesql
    $ apre –DALTIBASE –DOTHER_DBMS -t cpp tmp.sc
  2. -keyword
    예약된 키워드들을 보여준다.

    Code Block
    themeDJango
    languagesql
    $ apre -keyword
  3. -parse parsing_mode
    파싱모드(parsing mode)를 지정하여 소스파일에 대한 precompile 범위를 결정한다.
    -parse 옵션의 파싱모드와 그에 따른 처리범위는 아래와 같다.
    -parse 옵션 자체를 생략한 경우는 기본적으로 파싱모드가 partial로 작동한다.

    파싱모드내장 SQL(A)매크로(B)선언부외부/호스트변수(C)비고
    noneOXX

    SES*C/C++와 동일하게 작동

    #include 형식의 헤더파일은 처리하지 않음

    partialOOX

    Partial C Processor 추가 작동

    #include 형식의 헤더파일까지 처리

    APRE*C/C++의 기본 파싱모드

    fullOOO

    C Parser가 추가 작동

    #include 형식의 헤더파일까지 처리

     

    단, C++ 스타일로 작성된 소스코드는 선언부외부 호스트변수 인식불가

    [#include 형식의 헤더파일까지 처리] 의 경우, 해당 헤더파일 내의 #include 형식으로 선언한 또 다른 헤더파일까지도 모두 처리된다.

    Gliffy Diagram
    chromemin
    namemain.sc_header.h

    예를 들어, 위 예제에서의 쿼리를 아래와 같이 매크로를 사용한 선택적인 쿼리로 변경 후

    Code Block
    themeDJango
    languagesql
    EXEC SQL select * into n from t1
    #ifdef ALTIBASE
    where i1=:i and i > 'A';
    #else
    where i1=:i;
    #endif

     파싱옵션을 생략하여 기본 파싱모드인 partial로 precompile 할 경우

    Code Block
    themeDJango
    languagesql
    $ apte -t c main.sc

    실제 생성코드는 아래와 같이 매크로 처리가 완료된 상태로만 남게된다.(매크로 처리 후 불필요하여 제거된 부분은 공백으로 치환된다)

    Gliffy Diagram
    chromemin
    name불필요한부분_공백

    기존 SES*C/C++와 동일하게 precompile 하기 위해 -parse none을 지정한 경우에는 매크로 처리기능이 작동하지 않음으로 변수 중복선언 에러가 발생한다.

    Code Block
    themeDJango
    languagesql
    $ 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
    themeDJango
    languagesql
    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
    themeDJango
    languagesql
    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++로 업그레이드 시 유의사항을 기술한다.

...