반응형

본 자료는

파워빌더 개발자 싸이트 PBDN( http://www.pbdn.net )에서
김태훈(guroom@hanmail.net) 님께서 올리신 자료 입니다


===================================================================

[ 파워빌더의 기초문법 ]

VC++(OOP개념)과 VB를 합쳐놓은것

   1) 코딩시 대소문자 구분이 없다 but 가독성을 높이기 위해 가능한 구분하자
     -> VB을 따왔음...가능한 단어의 첫글자는 대문자로 쓰자

   2) 주석 : 주석다는 습관!
     //             ->한 줄 주석
     /*  ......  */ ->여러줄 주석

   3) 명령문은 line단위로 이뤄진다
     한줄에 여러 개의 명령어를 입력하고 싶을 경우 ";"으로 구분한다
      ex) a=a+b ; b=b+10 ; c=c+7
     하나의 명령어를 여러 줄로 나눠 입력할 경우 " &"
        -> a=a+b+c
            a=a+ &
            b+ &
            c
   4) 변수
    ① Variable Types
      정수형 - integer(2byte) - 32768 ~ 32767
                - long형(4byte) - 20억 ~ 20억
      실수형 - real형(4byte)
                - double형(8byte)
      문자형 - char : 문자 한글자 저장 ex) char a='t'
                - string형 :문자열 저장 ex) string a="korea"
      논리형 - boolean ex) a,b=true
      시간형(data저장형식) - time a
                                       a=Gettime//PB의 내장함수
      날짜형 - date a
      시간날짜형 - DateTime a

    ② PB만이 갖고있는 변수형!!!
     - Blob형 : 아주 긴 문자열이나 image data저장
     - Any형  : 가변길이형 data
           +=========================================+
           :!!!  변수선언시 초기값을 주지 않을 경우      :
           :                                                               :
           :      default     숫자      = 0                          :
           :                    문자      = null                       :
           :                    boolean = false                     :
           +=========================================+

    ③ 변수의 규칙
      - 변수길이는 40자까지 가능
      - 모든 변수는 반드시 선언해줘야 한다:사용자가 만들어 쓸 경우
      - 대소문자 구분이 없다
      - 영문자, 숫자, -, _, #, %, $로 조합
        "-"는 반드시 창의 design/option에서 해제해줘라!!!

   5) 배열
          +=====================================+
          :   !!! tool마다의 배열                            :
          :    a(10):0번째~9  ->C                         :
          :    a(10):0번째~10 ->Visual Basic         : 
          :    a[10]:1번째~10 ->Power Builder       :
          +=====================================+
     ex) integer a[20]
         c[3]=20
         integer a[5]={1,5,3,16,4}
         integer a[10 to 20]=a[10]~a[20]

    ① 가변길이
     - 편리하지만 프로그램 속도를 떨어뜨린다
     - 1 차원배열에서만 가능

    ② 다차원배열
       integer a[행,열]
       ex) a[2,3]
       integer a[면,행,열]
       ex) a[2,3,3]

   6) PB의 내장함수
    ① 날짜함수                               ② 시간함수
      Now() "현재의 시스템의 날짜         hour()
      Year() "년도                                  minute()
      month()                                        second()
      day()
      이외에도 아주 많습니다.

   7) 용어
    ① This : 현재 사용중인 객체(object)를 의미
      ex) cb_1에 코딩할 경우: cb_1.text="종료"
                                    ->this.text="종료"


    ② Parent : 현재 사용중인 객체의 부모window
                    menu없는 창을 닫을 때 ->close(parent)
          +=============================================+
          :  참고!!                                                          :
          :       객체를 복사할 때 두가지 방법                  :
          :     -duplication :개체만 copy                           :
          :     -edit/copy후 paste :개체+코딩까지 copy      :
          :                                                                     :
          : 따라서...                                                       :
          :  close(parent)하는게 편하다                           :
          :          ->코딩을 일일이 고칠 필요가 없다         :
          +=============================================+

    ③ Parent Window : 메뉴가 있는 window를 말함
                      종료시 close(parent window)


    ④ 종료
      Halt : application 종료 but 메모리는 해제되지 않는다
      Halt Close : application의 close 이벤트를 발생시키면서 종료

   8) 제어문:프로그램의 흐름을 통제
      형식> 컨트롤이름.속성=값
    ① if문
       +=======================+
       :  if 조건식 then              :
       :     명령1                      :
       :  end if                         :
       :                                   :
       :         OR                      :
       :                                   :
       :  if 조건식 then 명령1     :
       +=======================+
       +=================================+
       :  if 조건 then                                :
       :     명령1                                     :
       :  else                                          :
       :     명령2                                     :
       :  end if                                        :
       :                                                  :
       :              OR                                :
       :                                                  :
       :  if 조건 then 명령1 else 명령2       :
       +=================================+

    ② choose case문
       +========================+
       :    choose case 변수       :
       :       case a1                   :
       :       case a2                   :
       :       case a3                   :
       :       case a4                   :
       :       case else                :
       :    end choose                :
       +========================+


   9) 연산자
      +, -, *, /, >, <, >=, <=, <>
      and, or, not

   10) 반복문
    ① for~ next문
       +=========================================================+
       :    for 변수명=초기값 to 최종값 step 증가(+)/감소(-)값         :
       :          .......                                                                      :
       :   .......                                                                             :
       :    next                                                                             :
       : -> 횟수가 정해져 있는 경우 :   계산                                   :
       :    무제한적으로 돌아갈 경우                                             :
       +=========================================================+

    ② do while
       +=======================================================+
       :    do while 조건                                                            :
       :        ....                                                                        :
       :    loop                                                                          :
       : ->조건식이 참인 동안 실행                                            :
       :   조건식이 맞지 않으면 실행을 시작하지 않을 수도 있다  :
       +=======================================================+
         
       +======================================================================+
       :   do                                                                                                   :
       :   ......                                                                                                 :
       :   loop while 조건                                                                                 :
       : ->조건식이 틀리더라도 한 번은 실행이 된다//조건식이 뒤에 있으므로    :
      +=======================================================================+

   ③ do until
        +=====================================================+
        :   do until 조건식                                                        :
        :     .......                                                                    :
        :     loop                                                                     :
        : ->조건식이 참이 될때까지 실행//조건이 거짓인 동안   :
        +=====================================================+
        +=====================+
        :   do                          :
        :     .......                    :
        :   loop until 조건         :
        +=====================+


   ④ 분기문(go to문)
        +========================+
        :     go to 문이름              :
        :        ........                     :
        :     문이름                      :
        +========================+
      ex)삼중 loop문...loop가 중첩된 경우

   ⑤ 기타문
        exit : 현재 수행중인 loop탈출
        continue :skip의 개념이 강하다
        +===========================+===========================+
        : ex1) for i=1 to 10                  :       ex2) for i=1 to 10           :
        :          .....                           :         .....                           :
        :       if i=5 then                      :       if i=5 then                    :
        :          exit                           :         continue                    :
        :       end if                           :       end if                          :
        :      sle_1.text=string(i)          :      sle_1.text=string(i)          :
        :      next                              :      next                             :
        :  print=> 1 2 3 4                    : print=>1 2 3 4 6 7 8 9 10        :
        +===========================+===========================+

   11) 추가 연산자
       a=a+1 -> a++  증가
                 --  감소
       a=a*b -> a*=b
                 +=
                 -=
                 /=

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1) 변수
   - 전역변수 :A pp.내에 전반적으로 사용이 가능
     => \declare\global variable에서...
   - 지역변수 : 해당 스크립트문장내에서만 사용가능
    (instance variable) 해당window에서만 사용할 수 있는 변수
                               window가 닫히면 자동소멸!
                               window가 열리면 생성,
     cf) 다른 win에서 참조할 경우->win이름.변수명
        if 다른win이 닫히면 참조한 창도 에러 떨어짐
        why? instance 변수는 창이 없어지면 같이 소멸한다
   - 공용변수 shared variable :해당win에서 사용가능
                              해당win이 open하면 생성,
                              해당win이 close해도 소멸되지 않는다.
2) 함수
   함수명(인수1,인수2,인수3,...)
   - 지역 :\declare\function in window
   - 전역 :아이콘


   ① 사용자함수의 종류
    - 리턴값이 있는 경우 :실행된 결과값을 보여준다 ex)계산
      형식> 함수명(인수1, 인수2, ...) 인수 :함수가 처리해야 하는 값
    - 리턴값이 없는 경우 :반복적인 처리를 많이 하는 경우


   ② 자체함수 : PB함수
     +==============================================+
     : 참고!!! tool bar의 함수 : 전역함수                      :
     :         Declare\Windows Function : 지역함수      :
     :         Declare\Windows Structure : 구조체         :
     +==============================================+

3) 배열
   같은 data형의 변수를 잡아 줄때 모든 변수를 하나의 변수로 잡아준다고 생각
   즉 하나의 보따리에 각각의 보따리를 넣는다고 생각하면...?
   랜덤하게 섞이는것을 막을 수 있다
   ex)학생성적표 관리:여러과목(문자)과 그에 따른 각각의 점수(정수)

4) 구조체
   서로 다른 data형의 변수를 하나의 커다란 변수로 잡는다
   ex)회사의 사원관리
   하나의 사원에 해당하는 것들 (사원이름 주소 성별 나이)->각각의 성질이 다르다

5) Pointer
   - 번지에 있는 값을 전달한다. -> call by value
   - 번지값을 전달해준다 -> call by reference

반응형

파워빌더 함수정리

 

 1. 배열(Array) 처리 함수 

LowerBound : 지정한 배열의 하위 경계

UpperBound : 지정한 배열의 상위 경계

 

2. Bolb관련 함수 

Blob        : 텍스트 데이터를 Blob 데이터로 변환 또는 복사

BlobEdit   : PB가 지원하는 데이터를 Blob변수로 복사

BlobMid   : Blob 데이터 문자열에서 N번째 문자를 반환

Len         : 문자열의 길이

 

3. 데이터형 검사 및 변환 함수 

Char         : blob,정수,문자열을 문자로 바꿔서 반환

Dec          : 문자열의 내용을 십진수로 바꿔서 반환

Double      : 문자열의 내용을 Double로 바꿔서 반환

Integer      : 문자열의 내용을 정수로 바꿔서 반환

Long         : 문자열의 내용을 long으로 바꿔서 반환

Real         : 문자열의 내용을 실수로 바꿔서 반환

Date         : 데이터베이스로부터 읽은 DateTime값에서 Date부분만 빼온다.

DateTime   : Date나 Time을 DateTime 값으로 변환한다.

IsDate       : 지정한 문자열이 유효한 Date값을 지녔는지 검사한다.  

IsNull        : 넘어온 인자가 NULL인지 검사한다.

IsNumber   : 지정한 문자열이 숫자값을 지녔는지 검사한다.

IsTime       : 지정한 문자열이 유효한 Time값을 지녔는지 검사한다.

String        : 지정한 형식으로 문자열을 얻는다.

Time         : 데이터베이스로부터 읽은 DateTime값에서 Time부분만 빼온다.

 

4. 날짜,요일,시간 처리 함수 

Day               : 일자를 구한다(1에서 31 사이의 정수)

DayName       : 주간의 요일명을 구한다.

DayNumber    : 주간의 요일을 숫자로 표현한다.(예를들면 일요일은1, 목요일은 5)

DaysAfter       : 지정한 날짜에 n일전,후를 구한다.

Hour             : 주어진 시간의 시 값을 구한다.

Minute          : 주어진 시간의 분 값을 구한다.

Month           : 주어진 날짜의 월 값을 구한다.(1에서 12까지)

Now             : 클라이언트의 시스템 시간을 구한다.

RelativeDate  : 주어진 날짜를 기준으로 n일 후 날짜를 구한다.

RelativeTime  : 주어진 시간을 기준으로 n초 후 시간을 구한다.

Second         : 주어진 시간의 초 값을 구한다.

Today           : 클라이언트의 현재 날짜를 구한다.

Year             : 주어진 날짜의 년 값을 구한다.(1000에서 3000년까지임)

 

5.DDE클라이언트 함수 

CloseChannel        : OpenChannel함수로 열린 DDE서버 어플리케이션의 채널을 닫는다.

ExecRemote          : 서버 어플리케이션에게 명령 실행을 요구한다.

GetDataDDE          : 연결된 서버 어플리케이션으로부터 새로운 데이터를 받아온다.

GetDataDDEOrigin  : 연결된 서버 어플리케이션으로부터 원래의 데이터를 받아온다.

GetRemote            : 서버 어플리케이션에게 데이터를 요구한다.

OpenChannel        : DDE서버 어플리케이션을 연다.

RespondRemote     : 서버에게 명령 또는 데이터가 클라이언트에게 받아들여졌는지를 알려준.

SetRemote             : 서버 어플리케이션에게 지정한 값을 설정하도록 한다.

StartHotLink           :서버 어플리케이션과의 연결을 시작한다.

StopHotLink           : 서버 어플리케이션과의 연결을 종료한다.

 

6. DDE서버 함수 

GetCommandDDE           : 클라이언트 어플리케이션이 보낸 명령을 구한다.

GetCommandDDEOrigin   :어떤 클라이언트 어플리케이션이 명령을 보냈는지 구한다.

GetDataDDE                  : 클라이언트 어플리케이션이 보낸 데이터를 구한다.

GetDataDDEOrigin          :어떤 클라이언트 어플리케이션이 데이터를 보냈는지 구한다.

RespondRemote            :클라이언트에게 명령 또는 데이터가 서버에게 받아들여졌는지를 알려준.

SetDataDDE                  : 클라이언트 어플리케이션에게 데이터를 보낸다.

StartServerDDE              :파워빌더를 서버로 동작하게 한다.

StopServerDDE              :파워빌더가 서버로 동작하는 것을 중지한다.

 

7. 파일처리 함수 

FileClose                  : 파일 닫기

FileDelete                 : 파일 삭제

FileExists                 : 파일 존재 유/무

FileLength                : 파일 길이

FileOpen                  : 파일 열기

FileRead                  : 파일 읽기

FileSeek                  : 파일 내 위치 이동

FileWrite                  : 파일에 쓰기

GetFileOpenName     : 파일 열기 공통 다이얼로그 열기

GetFileSaveName     : 파일 저장 공통 다이얼로그 열기

 

8. 라이브러리 함수 

LibraryCreate    : 라이브러리 생성

LibraryDelete    : 라이브러리 삭제

LibrarDirectory  : pb라이브러리 파일의 모든 오브젝트의 리스트를 구한다.

LibraryExport    : 라이브러리 파일의 모든 오브젝트를 Export한다.

Library Import    : 지정한 라이브러리 파일에서 오브젝트를 Import한다.

 

9.MAPI함수 

mailAddress                : 메일 메세지에 주소를 주거나 주소 리스트를 보여준다.

mailDELETEMessage   : 메일 메시지를 지운다.

mailGetMessages        : 메지시 id를 얻어온다.

mailHandle                  : 내부 메일 시스템 핸들을 얻어온다.

mailLogOff                   : 메세징 시스템과의 세션을 끊는다.

mailLogOn                   : 메세징 시스템과의 세션을 시작한다.

mailReadMessage        : 메일 메시지를 읽는다.

mailRecipientDetails      : 지정된 수취인의 주소 정보를 보여준다.

mailResolveRecipient    : 불분명한 수취인 명을 결정한다.

mailSaveMessage        : 사용자 수신함에 새로운 메시지를 생성하거나 기존에 있는 메시지를 대체한다.

mailSend                     : 메일 메시지를 보낸다.

 

10. 수치 처리 함수 

Abs              : 수치의 절대값을 얻는다.

Ceiling         : 지정한 수보다 크거나 같은 최소 정수를 구한다.

Cos             : 주어진 각도의 코사인 값을 구한다.

Exp              : e를 Number만큼 거듭제곱한 값을 구한다.(e=2.71828182845904)

Fact             : 계승값을 구한다. Number의 계승값은 1*2*3*...* Number이다.

Int                : 소수점 이하를 버리고 가장 가까운 정수로 변환한다.

Log              : 지정 숫자의 자연로그값을 구한다.

LogTen         : 지정한 숫자에 대해 밑이 10인 로그값을 구한다.

Max             : 두 수 중 큰 수를 구한다.

Min              : 두 수 중 작은 수를 구한다.

Mod             : 두 수를 나눈 나머지를 구한다.

Pi                 : 3.14159265358979를 구한다.

Rand            : 난수를 구한다.

Randomize    : 난수 발생기를 초기화한다.

Round          : 숫자를 지정한 자릿수로 반올림한다.

Sign             : 숫자의 부호를 결정한다. Number가 양수이면 1을 표시해주고 0이면 0, 음수이면 -1을 표시한다.

Sin               : 주어진 각도의 사인 값을 구한다.

Sqrt              : 양의 제곱근을 구한다.

Tan              : 주어진 각도의 탄젠트 값을 구한다.

Truncate       : 숫자의 소수점 이하를 버리고 정수로 변환한다.

 

 

11. 출력(Print)함수 

Print                  : 현재 글꼴로 문자열을 인쇄한다.

PrintBitmap         : 지정한 인쇄공간에 비트맵 이미지를 인쇄한다.

PrintCancel        : 인쇄를 취소한다.

PrintClose          : 현재 페이지를 프린터에 보내고 인쇄를 멈춘다.

PrintDefineFont    : 인쇄작업시 폰트를 정의한다. 파워빌더는 각각의 인쇄 작업에 대해 8가지 폰트를 제공한다.

PrintLine             : 지정한 위치에 지정한 굵기로 타원을 그린다.

PrintOpen           : 현재 페이지를 프린터에 보내고 새로운 페이지를 셋한다.

PrintOval            : 지정한 위치에 지정한 굵기로 타원을 그린다.

PrintPage           : 지정한 위치에 지정한 굵기로 둥근 모서리의 사각형을 그린다.

PrintRect            : 지정한 위치에 지정한 굵기로 사각형을 그린다.

PrintRouneRect   : 지정한 위치에 지정한 굵기로 둥근 모서리의 사각형을 그린다.

PrintSend           : 지정한 문자열을 프린터에게 보낸다.

PrintSetFont        : 현재 인쇄 작업에 대한 글꼴을 지정한다.

PrintSetSpacing  : 라인간 너비를 지정한다.

PrintSetup          : 프린터 설정 다이얼로그 박스를 부른다.

PrintText            : 지정한 위치에 지정한 문자를 인쇄한다.

PrintWidth          : 현재 글꼴에서 지정된 문자열의 너비를 구한다.

PrintX                : 커서의 X좌표를 구한다.

PtintY                : 커서의 Y좌표를 구한다.

 

 

 

12. 문자열 처리 함수 

Asc        : 문자열의 첫번째 문자의 ASCII값을 구한다.

Char       : 주어진 ASCII값에 해당하는 문자를 구한다.

Fill          : 지정한 문자를 반복시켜서 문자열을 만든다.

Left         : 문자열의 시작부터 지정한 수의 문자를 읽어온다.

LeftTrim   : 문자열의 시작에 있는 공백을 없앤다.

Len         : 문자열의 길이를 구한다.

Lower     : 주어진 문자열 내의 대문자를 소문자로 고친다.

Mid        : 주어진 문자열에서 시작 위치와 끝 위치를 지정해 문자열의 일정 부분만을 구한다.

Pos        : 다른 문자열에서 주어진 문자열의 위치를 찾는다.

Replace  : 문자열의 일부를 다른 문자열로 바꾼다.

Right       : 문자열의 끝에서 주어진 수의 문자를 얻어온다.

RightTrim  : 문자열의 끝에 있는 공백을 없앤다.

Space      : 지정한 길이로 공백 문자열을 얻는다.

Trim         : 문자열의 시작과 끝의 공백을 없앤다.

Upper      : 지정한 문자열 내의 소문자를 대문자로 고친다.

 

 

 

13. 시스템 및 환경 함수(System and Environment) 

Clipboard            : 윈도우의 클립보드의 내용을 얻는다.

GetApplication     : 현재 어플리케이션의 핸들을 구한다.

CommandParm    : 어플리케이션 실행시 지정된 파라미터가 있을 경우 그값을 구한다.

DoScript             : 애플 스크립트(AppleScript)를 실행한다.(매킨토시 버전에만 해당)

GetEnvironment   :시스템의 운영체제와 프로세서 등과 같은 정보를 얻는다.

Handle               : Window SDK함수를 부르기 위해 사용한다.

Post                   : 지정한 윈도우에 대한 메시지를 메시지 큐에 마지막에 삽입한다.

ProfileInt             : 지정한 프로파일에서 숫자값을 얻어온다.

ProgileString       :지정한 프로파일에서 문자열을 얻어온다.

Restart               : 모든 스크립트의 실행을 중지하고, 모든 윈도우를 닫으며 데이터베이스     Commit한후 연결을 끊고 다시 어플리케이션을 실행시킨다.

Run                   : 지정한 어플리케이션을 실행시킨다.

Send                 : 지정한 윈도우에 메시지를 순차적으로 보낸다.

SetProfileString   : 지정한 프로파일 값을 저장한다.

ShowHelp          : 윈도우 3.x에 있는 도움말(Help)파일을 읽어 파워빌더 어플리케이션에서 사용할 수 있다.

SignalError        : 어플리케이션 레벨에서의 시스템 에러를 발생한다.

Yield                : 반복문 안에서 다른 오브젝트나 어플리케이션의 메시지가 발생 됐는지를 체크할수 있게 한다.

 

 

 

14. 시간처리 함수 

CPU   : 현재 실행중인 PB어플리케이션 프로그램의 시작 시간부터 현재까지의 CPU시간을 구해준다.

Idle    : 사용자가 아무런 입력이 없이 지정한 시간이 흐르면 Idle이벤트 발생시킨다.

Timer  : 지정한 윈도우에 일정한 간격의 타이머를 지정하여 Timer이벤트를 발생시킨다.

 

 

 

15. 그밖의 함수 

Beep              : 정해진 시간(초단위)동안 경고음을 발생한다.

DBHandle        : DBMS의 핸들을 반환한다.

IsValid            : 지정한 윈도우가 열려있는지 검사한다.

KeyDown        : 사용자가 특정한 키를 눌렀는가 검사한다.

MessageBox   : 메시지 박스를 출력한다.

PixelsToUnits   : 픽셀(Pixel)을 PB의 Unit로 바꾼다.

RGB                : 특정 색상을 표현하는 Long형 값을 반환한다.

SetNull            : 변수의 유형에 상관없이 변수를 Null로 지정한다.

SetPointer        : 마우스 포인터를 지정한 모양으로 바꾼다.

TypeOf            : 오브젝트의 형을 결정한다. 예를들면 CheckBox, Picture, RadioButton 등이다.

UnitsToPixels   : PB의 Unit를 픽셀(Pixel)로 바꾼다.

 

 

1. UpperBound(배열명,{배열차원}) : 가끔 사용

   (1) 개념 : 배열의 가장높은 경계값을 알아낸다.

       Option으로 배열의 차원을 지정할 수 있으며 Default 차원은 1차원이다.

 

   (2) Return : integer(배열의 가장높은 경계값)

 

   (3) 예제

       가)

       integer li_number[7] , li_return

       li_return = UpperBound(li_number) // li_return 은 7이 된다.

       나)

       string ls_name[5,6] integer li_return

       li_return = UpperBound(ls_name,1) // li_return 은 5가 된다

       li_return = UpperBound(ls_name,2) // li_return 은 6이 된다

 

   (4) 메모 : 가변길이 선언 배열에서 ( ls_text[] )

   위의 함수를 사용하여 0이 Return되면 배열이 아직 현 메모리에 적재되지 않았음을 의미한다.

 

   (5) 상대함수 : LowerBound()

 

 

2. IsDate(string) : 자주 사용

   (1) 개념 : 특정한 String이 정확한 Date인지를 확인한다.

 

   (2) Return : Boolean ( Date가 맞으면 True 아니면 False이다. )

 

   (3) 예제 boolean lb_check

       lb_check = IsDate("1996/05/22") // lb_check 는 True이다

       lb_check = IsDate("1996/00/22") // lb_check 는 False 이다

 

   (4) 메모 : 특정한 String등을 Date로 변환시키기 직전에 많이 사용한다.

 

   (5) 유사함수 : Isnull() , Isnumber() , Istime() , Isvalid()

 

 

3. Date(datetime) , : 자주사용 Date(string) , Date(year,month,day)

   (1) 개념 : datetime , string , 년월일의 integer값을 Date 변수타입으로 변환한

 

   (2) Return : Date ( Valid 한 Date가 아닐때는 1900-01-01을 Return한다 )

 

   (3) 예제 datetime ldt_this date ld_new

       ld_new = Date(ldt_this)

       IF ld_new = Date("1900-01-01") THEN

          Messagebox("ERROR",'정확한 일자가 아닙니다 !!')

          return

       END IF

       ld_new = Date("1996/08/15") ld_new = Date(1999,11,23)

 

   (4) 유사함수 : DateTime()

 

 

4. Control명.ClassName() : 가끔사용 ClassName(변수명)

   (1) 개념 : 특정한 Object의 Class명을 String으로 알아낸다.

 

   (2) Return : String ( Error 발생시에는 empty string "" 이 반환된다)

 

   (3) 예제

       가)

       string ls_name

       ls_name = Parent.ClassName()

       IF ls_name = "w_insa001u" THEN

          sle_1.text = ls_name

       END IF

 

       // 어떤 Object의 Dragdrop Event 에서

       string ls_name dragobject ldr_what

       ldr_what = DraggedObject() ls_name = ldr_what.ClassName()

       IF ls_name = 'em_delete' THEN

          ldr_what.Drag(end!) Messagebox("Drag Object",'Drag된 Object 는 '& + ls_name + '입니다')

       END IF

 

       나)

       long ll_qty string ls_class

       ls_class = ClassName(ll_qty) // ls_class 는 'long' 을 받아온다

       ls_class = ClassName(this) // ls_class 는 현 Object 의 Class 명칭을 받아 온다

 

5. Object명.PostEvent(event명) : 자주사용

   (1) 개념 : Script가 쓰여진 현 Event가 끝난뒤 특정 Object의 Event를 수행하게 한다.

       위의 function은 script가 쓰여진 위치에 관계없음으로 그 이후에 어떤 scrip 가 있다면        그것을 모두 수행한후에 실행된다.

 

   (2) Return : Boolean (성공하면 true , event가 없거나 script가 없으면 false)

 

   (3) 예제

       cb_close.PostEvent(clicked!) // object에 기본적으로 있는 event일때

       cb_close.PostEvent("ue_keydown") // User가 정의한 event일때

 

6. Object명.TriggerEvent(event명) : 매우 자주사용

   (1) 개념 : 현 Event에서 어떤 특정Object의 특정Event를 즉각적 수행하고 돌아온.

       Script가 쓰여진 위치가 중요하다

 

   (2) Return : Boolean (성공하면 true , event가 없거나 script가 없으면 false)

 

   (3) 예제

       cb_check.TriggerEvent(clicked!) // object에 기본적으로 있는 event일때

       cb_check.TriggerEvent("ue_check") // User가 정의한 event일때

 

   (4) 메모 : 어떤 Event의 Script를 수행한다는 면에서는 Postevent와 Triggerevent는 동일하며    두 이벤트 중 어떤것을 써야할지의 선택기준은 현재의 Event가 수행되고 난 뒤 어떤 Event를 이어서 수행시키느냐 (Postevent) , 즉각적으로 어떤 Event를 수행하느냐 (Triggerevent) 의 차이이다.

 

로맨스님 블로그에서 퍼옴

반응형

파워빌더로 DB프로그램을 개발할때 많은 프로시져와 함수가 사용된다.
일반적으로 파워빌더에서 오라클의 Procedure나 Fuction을 실행할때 Declare문을 사용한다. 다음 예제는 도움말의 Example이다.

오라클의 spu_edt_object 프로시져를 호출하기 위해서 파워빌더 스크립트에서 DECLARE, FETCH를 이용하는 예제이다.
이렇게 복잡한 방법보다 다음과 같이 한라인으로 호출하도록 설정하는 방법을 알아보자.

SQLCA.spu_edt_object(o_id_object, o_message, a_id_object, a_param, a_value)

파워빌더의 SQLCA라는 변수는 시스템 글로벌변수로 파워빌더에서 DB transaction object로 정의되어 있는 변수이다. 이 변수를 사용자 정의 transaction object로 변경해서, 그 UserObject의 Local External Functions에 함수로 정의 하는 것이다.
우선 New > PB Object > Standard Class를 선택하여 transaction을 상속받은 UserObject를 생성하자.

새로 만든 UserObject를 저장한다. 예제에서는 uo_transaction으로 저장하였다. 그럼 SQLCA를 정의한 곳에서 transaction 대신에 지금 만든 uo_transaction 오브젝트로 재정의 해 준다.
이제 SQLCA를 uo_transaction으로 재정의 해줘야한다. SQLCA가 정의된 곳은 Application 오브젝트에 있다.
Application 페이터를 열고, Properties의 General탭 제일 아래에 보면 "Additional Properties"가 있다. 이 버튼을 클릭하면 Variable Types탭에 SQLCA를 정의하는 부분이 있다. 디폴트로 transaction으로 되어 있는 부분을 새로 만든 transaction 오브젝트인 uo_transaction으로 변경해 준다.
 
이제 기본적인 설정은 끝이 났고, 오라클의 프로시져나 함수를 uo_transaction 오브젝트의 Local External Fuction으로 정의만 하면 된다.
프로시져/함수를 등록하는 Syntax는 외부 DLL함수를 등록하는 방식도 대동소이하다. DLL 등록시 사용되는 Library 키워드 대신에 RPCFUNC라는 키워드가 사용된다. 그리고 프로시져에서 OUT변수는 REF키워드를 사용하여 정의하면 된다.

FUNCTION rtndatatype functionname ( { { REF } datatype1 arg1, ...,    { REF } datatypen argn } ) 
RPCFUNC { ALIAS FOR "spname" }
SUBROUTINE functionname ( { { REF } datatype1 arg1 , ...,    { REF } datatypen argn } ) 
RPCFUNC { ALIAS FOR "spname" }

procedure는 SUBROUTINE으로 등록하면 된다.
그럼 위 예제의 프로시져는 다음과 같이 등록하면 될것이다.

SUBROUTINE spu_edt_object(REF long o_id_object, REF string o_message, long a_id_object, string a_param, string a_value) RPCFUNC ALIAS FOR "spu_edt_object"

이렇게 정의해둔 프로시져나 함수는 SQLCA.<함수명>({변수}) 와 같은 식으로 한라인으로 처리가 가능하다.
알고 나면 쉽지만... 모르면 Example의 예처럼 많은 삽질을 해야한다. ^^;

반응형

파워빌더 11 제품발표 세미나에서 Q/A시간에 어떤 개발자 분이 했던 질문이 있었다. 데이터윈도우(DW)에서 Query를 수정하면 기존 화면이 변경되는 경우가 있는데, 이거 개발자가 의도하지 않는 경우는 변경안되도록 해달라는 요지의 질문이었다. 답변에 나선 John Strano는 파워빌더가 개발의 편의를 위해서 자동으로 DW의 컬럼명을 rebuild하는 기능인데, 개발자가 의도하지 않은 때가 있기 때문에 그런 문제가 생긴 것같고, 이 문제는 여러 개발자들의 의견을 수렴해서 EBF에 반영하겠다는 원론적이 답변을 하였다.
이 문제는 파워빌더로 레포트를 개발하다가 보면 개발자를 아주 짜증나게 하는 원인이 되기도 한다. 이쁘게 만들어 둔 레포트화면이 쿼리의 컬럼면 하나 수정으로 다 틀어져 버리는 경우가 생기기 때문이다.

세미나에서 질문을 한 개발자도 이야기 했지만, 대부분의 레포트의 개발은 우선 쿼리를 DB관리툴(TOAD)에서 만든 다음 파워빌더에서 DW를 생성하는 방법을 사용한다. 나도 대부분의 레포트를 TOAD같은 툴에서 미리 쿼리를 생성하고 Data를 검증한 후 파워빌더에서 DW를 새로 생성할때 Design > Conver to Syntax메뉴를 선택하여 TOAD에서 만든 쿼리를 복사/붙혀넣기해서 작업을 진행한다. Graphic모드가 Default로 되어 있는데 이것도 옵션으로 처리하게 했으면 좋겠는데... 외국 개발자들은 Graphic모드에서 다 처리하는지도 모르겠다. --;

우선 이렇게 생성한 DW의 쿼리가 변경되었을때 일반적으로 개발자들은 DW Painter를 오픈하고 Data Source 툴바를 클릭하고 쿼리를 수정하게된다. 여기서 문제가 발생한다. 기존 쿼리의 컬럼명을 바꾸었는데, 그 컬럼이 DW에서 Display되던 컬럼이었다면 컬럼에 적용된 디자인은 모두 날라가버리게 된다. 파워빌더가 기본으로 DW의 컬럼명을 자동으로 생성하기 때문이다. 옵션으로 이 기능을 해제할 방법도 없다.

해결방안은 Edit Source를 이용하는 것이다.

DW 오브젝트를 선택하고 오른쪽 마우스키를 클릭하면 파업메뉴가 뜨는데 그중 Edit Source를 선택하면, 파워빌더의 텍스트 에디트 페인터에 DW의 오리지널 소스가 표시되고, 수정할 수가 있게 된다. 여기서 retrieve항목의 값이 Query값이 된다. retrieve항목의 값으로 더블코테이션("")안에 쿼리가 위치하는데, Query가 멀티라인일 경우 Syntax Highlight가 조금 이상하지만 자세히 보면 쿼리부분을 금방 구분할 수가 있을 것이다. 이 부분의 쿼리를 변경해 주면 DW의 디자인은 전혀 변경이 되지않는다.

이 Tip은 또다른 경우에도 사용될 수가 있다. 바로 Update Properties의 불필요한 변경을 방지하는 경우이다.

DW화면 디자인 뿐아니라 DW의 Update()함수를 이용하여 데이터를 추가/삭제하는 기능이 있는 DW에 쿼리가 변경될 경우 Update Properties에 설정된 내용이 몽창 날라가 버리는 경우가 있다. 이 문제을 알면 다행인데, 모르고 넘어가면 잘 동작하던 프로그램이 오동작을 하게되어 버그를 찾는데 한참 삽질을 해야하는 경우가 발생한다. 나도 많이 그랬으니까... --;
이런 경우에도 Edit Source를 이용하여 쿼리를 수정하면 Update Properties에 설정했던 내용은 전혀 변경되지 않는다. Edit Source로 보면 알겠지만 Retrieve항목의 쿼리바로 다음에 Update Properties의 설정 내용이 있는 것을 알 수가 있을 것이다. DW 페인터에서는 이부분 또한 자동으로 생성되기 때문에 쿼리가 수정되면 문제가 발생하는 것이다.

이렇게 Edit Source로 소스를 자주 수정하다 보면 다른 오브젝트들도 Edit Source기능으로 수정하는 경지에 이르게 된다. ^^;

반응형

파워빌더로 개발을 진행하다가 보면 수많은 외부함수,윈도우 함수,글로벌변수,인스턴스변수,로컬변수등을 사용하게 된다. 프로그램이 커지다보면 여기저기에 있는 함수명, 변수명을 일일이 기억하기란 그리 쉬운일이 아니다. 간단하게 이런 함수명이나 변수명을 스크립트창에서 바로 찾아서 참고할수 있다면 참 편리할 것이다. 이전에 버젼 8을 사용할때도 AutoScript기능이 있었으나 솔직히 느린 반응 속도때문에 거의 사용을 하지 않았다. 오브젝트 브라우져를 통해 해당 오브젝트 열어서 일일이 함수명 변수명을 확인하고 스크립트를 작성하곤 하였다.
하지만 10버젼으로 업그레이드(9버젼은 사용해 본 경험이 없어서 논외로 하겠다)하면서 다시 이 기능을 사용해 보니 기존버젼에 비해 많이 성능이 향상되었음을 느끼게 되었다.


AutoScript 이용한 스트립트 작성

기본적으로 파워빌더는 자동으로 AutoScipt 팝업을 띄우는 기능이 비활성화 되어 있다. Edit > Activate AutoScript 메뉴를 이용하여 수동으로 AutoScirpt팝업을 실행시킬 수가 있다. 예를 들어 로컬 변수로 ll_count라는 변수가 선언되어 있다면, 이 변수를 사용할 위치에서 ll만 타이프하고 Edit > Activate AutoScript 메뉴를 선택하면 자동으로 ll_count라고 입력이 되는 것이다. Edit > Activate AutoScript 메뉴를 단축키를 등록(Tools > Keyboard Shortcuts... ; 필자는 F2를 단축키로 등록)하여 두면 사용하기 편하다.
ll로 시작하는 로컬 변수가 여러개 있다면 팝업이 떠서 개발자가 선택하도록 한다. 만약 ll로 시작하는 변수가 하나라면 자동으로 해당 변수가 입력되는 것이다.
로컬변수 뿐만이 아니라 Design > Options 창의 AutoScript화면에 설정된 것은 모두 Activate AutoScript 메뉴를 통해 팝업창으로 조회할수 가 있다.


Default로는 선택이 안되어 있는 Statement Templates항목을 활성하 시키면, if, for, do, choose, try등과 같은 제어문의 템플릿을 추가할 수도 있다. 예를 들어 if를 입력 후 Activate AutoScript 메뉴를 클릭하면 다음과 같은 if문의 템플릿을 선택할 수 있다.


두번째 if then else를 선택하면 다음과 같은 템플릿이 추가된다.
if /*condition*/ then
    /*action1*/
else
    /*action2*/
end if
템플릿 스크립트가 추가된 후 바로 /*condition*/부분이 선택되며, 조건을 바로 입력하여 간단하게 if문을 작성할수가 있다.
Activate AutoScript 메뉴를 선택할 필요없이 바로 관련된 팝업이 뜨도록 하고 싶다면 Automatic Popup옵션을 활성화하고 Delay(Milliseconds)항목에 팝업이 나타나는데 Delay될 시간을 설정해 준다. Defult로 1000이 설정되어 있는데 100정도로 줄여주면 빠르게 팝업을 띄울수가 있다.
Delay를 짧게 주고 Automatic Popup옵션을 활성화 시켜두면 스크립트를 작성할 때마다 AutoScript팝업이 떠서 불편하다고 느껴진다면, Delay시간을 약간 길게 조정하거나 dot이후에만 AutoScript팝업을 활성화시키는 Activate Only After a Dot 옵션을 활성화 시켜서 사용하면 된다.

그러나 아직 파워빌더의 AutoScript는 MS Visual Studio보다 많은 점이 부족하다. 특히 함수를 선택하면, Argument를 /**/와 같이 주석처리해서 스크립트에 박아버려서 개발시 참고하도록 하고 있다. 개발시 추가된 이주석을 지우고 변수명으로 대체하는 작업이 반복되다 보면 효율이 상당이 떨어진다. Visual Studio처럼 (입력하면 Argument List가 풍선도움말로 나타나는 기능이 있었으면 아주 편할텐데, 이점이 참 안타깝다.

Paste Special을 이용한 스크립트 작성

파워빌더로 스크립트 작성중에 툴바를 자세히 보면, 일반적으로 붙혀넣기로 사용되는 아이콘과 비슷한 아이콘들이 여러개 붙어 있는걸 볼수가 있다.
붙혀넣기(Paste)는 붙혀넣기인데, 파워빌더에만 있는 특별한 붙혀넣기. Paste Special을 이용하면 스크립트 작성시간을 많이 단축할수가 있다. Paste Special은 툴바의 단축아이콘뿐만 아니라 메뉴의 Edit > Paste Special를 통해서도 접근이 가능하다. 메뉴를 보면 서브메뉴로 툴바에 있는 9개에 추가로 From File...이라는 메뉴가 있다. 각각의 기능은 다음과 같다.

  • Function
    Built-in : 파워빌더의 내장함수
    User-defined : 사용자 정의 함수(ex. 윈도우 함수)
    External : External 함수(ex. win32 API 함수)
  • SQL : Cursor, SELECT문, DML문, Procedure관련된 스크립트를 작성한다. 이것을 이용하면, 스크립트 빌더툴을 실행하여 결과를 스크립트에 반영하는 방식으로 적용된다.
  • Statement : IF, FOR, DO, CHOOSE, TRY문의 템플릿을 스크립트에 추가한다.
  • Global : Global변수 리스트 팝업이 나타나고, Global변수를 선택하면 스크립트에 추가된다.
  • Shared : Shared변수 리스트 팝업이 나타나고, Shared변수를 선택하면 스크립트에 추가된다.
  • Instance : Instance변수 리스트 팝업이 나타나고, Instance변수를 선택하면 스크립트에 추가된다.
  • Window : Access가능한 윈도우 오브젝트 리스트 팝업이 나타나고, 윈도우 오브젝트를 선택하면 스크립트에 추가된다.
  • Object : Access가능한 오브젝트 리스트 팝업이 나타나고, 오브젝트를 선택하면 스크립트에 추가된다.
  • Argument : 이벤트나 함수의 Argument 리스트 팝업이 나타나고, Argument를 선택하면 스크립트에 추가된다.
  • From File... : 파일 선택 팝업이 나타나고, 선택한 파일의 내용이 스크립트에 추가된다.

이중 SQL, Window, From File 이외의 기능은 AutoScript로 추가가 가능한 메뉴라서 사용 비율이 현저히 떨어지는 것이다.
From File기능은 개발중 스크립트 해더 커맨트부분을 템플릿을 파일로 작성해 두고, 스크립트 작성전 해당 템플릿 파일을 불어와서 스크립트를 작성하도록 하면, 소스코드의 관리에 도움이 될 것이다.

파워빌더의 AutoScript기능은 기본적으로 비활성화 되어있기 때문에 개발자들이 잘 모르는 경우가 있다. 이기능을 기본으로 활성화 시켜두고, MS Visual Studio처럼 더욱 좋은 기능을 첨가하고, 보완한다면 파워빌더의 생산성 향상에 많은 도움이 될꺼라는 생각을 해본다.

반응형

많은 개발툴들이 기본적으로 디버깅모드를 제공하듯이 파워빌더도 역시 디버깅모드를 지원한다. 특정한 변수값을 체크하기위해 MessageBox문을 삽입하는 원시적인 디버깅을 해왔다면, 앞으로는 파워빌더에서 제공하는 디버깅모드를 적극 활용하여 더욱 효율적인 디버깅을 해보도록 하자.
파워빌더 10.5 데모프로그램(<PowerBuilder 설치 폴더>\PowerBuilder 10.5\Code Examples\New DataWindow and UI\pb105demos.pbw)을 기준으로 디버깅 절차를 살펴보도록 하자.

  1. 원하는 위치에 Breakpoint를 건다.


    예제로 w_tvdw_link윈도우를 디버깅하도록 하자.
    w_tvdw_link윈도우를 오픈하고 원하는 스크립트의 위치에서 오른쪽 마우스키를 눌러서 나오는 메뉴중에 Insert Breakpoint라는 메뉴가 있다. 이 메뉴를 클릭하면 소스 스크립트 앞에 빨간점이 마크되는데 이것이 Breakpoint이다.
    디버그모드로 프로그램 실행중 이 위치에서 스크립트 실행을 멈추고 제어권이 파워빌더로 넘어와서 디버깅 작업을 수행할수 있게된다.
    이 예제에서는 Instance변수인 il_OldHeight의 값을 알아보기 위해 il_OldHeight에 값을 설정하는 스크립트에 Breakpoint를 걸어 보자.
     
  2. 디버그모드로 실행한다.
    파워빌더 툴바의 디버그버튼(벌레모양)을 클릭하거나, 메뉴 Run > Debug {target명}을 클릭하면 Debugger Painter가 열리고, 디버그 툴바가 툴바메뉴에, Debug메뉴가 메뉴에 추가된다.


    Debug > Start {target명} 메뉴를 선택(단축키 Ctrl+T)하거나, 툴바의 Start {target명}을 클릭하면 디버그모드로 프로그램이 실행된다.
  3. 파워빌더는 프로그램 실행중 Breakpoint 위치에서 실행을 멈춘다.


    스크립트창에 노란색 삼각형은 현재 실행중인 위치를 표시한다. 디버그모드로 실행중 1번에서 설정한 Breakpoint에서 실행을 멈추고 파워빌더로 제어권이 넘어와 Debugger Painter화면으로 이동된 것을 볼수가 있다.
  4. Breakpoint위치에서 각 변수들의 값의 확인, Call stack확인, 변수값을 임의로 변경등과 같은 디버깅 작업을 수행한다.
    스크립트 제어툴바를 이용하여 스크립트를 진행해 가면서 각변수의 값을 체크한다.
    Continue(Ctrl+C) : 스크립트의 제어권을 프로그램에 넘겨버려서 프로그램을 실행한다.
    Step In(F8) : 현재 스크립트에서 호출하는 함수나 이벤트의 스크립트 제어권을 넘겨 계속 디버깅 한다. Call Stack에 stack이 하나더 쌓이게 된다.
    Step Over(F10) : 현재 스크립트에서 호출하는 함수나 이벤트로 제어권을 넘기지 않고 다음 라인으로 넘어간다.
    Step Out(Shift+F8) : 현재 스크립트를 호출한 함수나 이벤트쪽으로 스크립트 제어권을 넘겨 계속 디버깅 한다. Call Stack에서 stack이 하나 빠진다.
    Run To Cursor(Ctrl+F10) : 커서가 있는 스크립트까지 실행을 한다.
    Set Next Statement : 한라인씩 스크립트를 실행한다.
    각 툴바의 단축키는 이전버젼(9버젼은 사용한 적이 없어서 잘모르겠으나 8버젼 이번에는 단축키가 Continue만 있었다.)에서는 기본으로 설정이 안되어 있다. 단축키가 있으면 여러모로 편하기 때문에 Tools > Keyboard Shortcuts...에서 단축키를 설정하고 사용하도록 하자. 주의할점은 Debug메뉴는 Debugger Painter를 오픈한 상태에서 활성화 된다는 것이다. Debugger Painter를 열지않은 상태에서는 Debug메뉴가 활성화 되지 않기 때문에 Keyboard Shortcuts창에서 단축키를 설정할 수가 없다.

    Debugger Painter에는 여러가지 창들이 있는데 이 창들의 값들은 현재 스크립트 위치의 상태를 상세히 설명해주는 정보들로 가득하다. 이 정보들을 이용해서 프로그램상에 존재하는 버그를 찾는 것은 사람이 할 일이다.

    Local : scope가 현재 스크립트(함수, 이벤트)인 local변수와 그 값.
    Global : Global 변수의 값.
    Instance : scope가 현재 오브젝트인 Instance변수와 그 값.
    Parent : 현재 오브젝트의 Parent의 변수와 그 값.
    Shared : 현재 오브젝트의 Shared변수와 그 값.
    Objects In Memory : 현재 메모리상의 오브젝트.
    Call Stack : 현재 실행되는 스크립트의 Call Stack.
    Breakpoints : 현재 타겟에 설정된 Breakpoints의 리스트.
    Watch : 자주 체크하고 싶은 변수를 설정해 두고 일일이 찾는 불편을 감소시킬 목적으로 설정한 변수 리스트.

    이중에서 개발과정에서 자주 사용되는 항목은 Local, Instance, Global, Watch 정도가 될 것같다.
    특히 Watch에는 sqlca를 추가해 두면 DB에러를 체크하는데 많은 도움이 될수 있다. sqlca는 Global 변수로 transation sqlca로 정의되어 있다. Watch창에 드래그&드랍하거나,  Debug > Add Watch, 툴바의 Add Watch툴버튼, Global창에서 sqlca선택 후 오른쪽 마우스클릭 후 나오는 팝업메뉴에서 Add Watch(참 종류도 여러가지네!)등의 방법으로 Watch변수로 추가한다.


    디버깅중에 변수의 값을 임의로 변경하여 프로그램의 로직을 체크하고 싶을 때도 있을 것이다. 값을 변경하고 싶은 변수를 더블클릭하면  Modify Variable팝업이 나타난다. 이 팝업에서 원하는 값으로 변경하여 스크립트를 수행할 수가 있다.


    예제에서 스크립트의 제어가 라인 16에 있는 상황에서 Local 변수 li_cnt값은 0이다. 이값을 임의로 5로 변경하여 다음 문장인 For루프를 실행하면, For루프를 그냥빠져나가 버리게 된다. 이와 같이 변수의 값을 조정하면서, 해당 변수의 값이 어떻게 되었을 때 프로그램의 흐름이 제대로 이루어지는지 확인해 볼수가 있다.

    디버그모드로 실행중에 Breakpoint를 추가하는 작업이 가능하다. Source Browser에서 추가하고자 하는 Source를 열어서 해당 라인을 더블클릭하면 Breakpoint를 추가 할수가 있다. 또한 Breapoint에서 제어가 멈추게하는 조건을 설정할 수가 있는데, Debugger Painter의 Edit Stop()툴버튼이나, Edit > Breakpoint..., Breakpoints창에서 수정할 Breakpoint를 선택후 오른쪽 마우스 클릭하면 나타나는 팝업메뉴에서  Breakpoints...메뉴를 선택하면 Edit Breakpoints팝업창이 실행된다.


    Occurrence : 해당 Breakpoint를 몇번째 실행될때 스크립트를 멈출 것인지 설정. Occurence에 2를 설정하면 해당 Breakpoint의 스크립트가 첫번째 실행될때는 멈추지 않고 2번째 스크립트가 실행될때 스크립트를 멈추게 된다. 이 옵션은 resize이벤트 처럼 여러번 이벤트가 중복되서 발생하는 경우 유용하게 사용될 수 있을 것 같다.
    Condition : 이 옵션에는 특정 expression을 설정하고, 설정한 expression이 True가 될때에만 스크립트를 멈추는 기능이다. notisNull(val)으로 설정하면 val값이 Null이 아닐때만 해당 Breakpoint가 작동하게된다.


    Variable탭에서는 특정변수가 변경되었을때 스크립트를 멈추게하는 Breakpoint를 추가하는 화면이다. Debug모드로 실행중 New버튼을 클릭하고, 현재 스크립트상의 변수명을 Variable에 입력하고 Apply 버튼을 클릭하면 'when {Variable} changes'라는 Breakpoint가 추가되는 것을 확인 할 수가 있다.


    이 Breakpoint는 디버깅모드로 실행을 한 후에만 추가할수 있으며, 디버깅모드로 실행하지 않은 상태에서 Variable을 추가하고 Apply를 클릭하면 "The variable could not be found."라는 메시지만 나오고 Breakpoint는 추가되지 않는다. 반드시 디버깅모드로 실행후에 추가해야 한다는 것을 기억하길 바란다.
  5. 디버깅으로 찾은 버그를 수정한다.
    프로그램 버그의 판단과 수정은 전적으로 개발자의 몫이며, 디버깅모드는 개발자의 판단에 도움을 주기위한 툴일뿐이다. 디버그모드로 모든 버그를 제거할수 있다는 오류는 범하지 말기를 바란다. 디버깅 모드의 중단은 Debugger Painter 툴바의 Stop Debugging()툴버튼이나, Debug > Stop메뉴를 선택하면 된다.

지금까지 파워빌더로 디버깅하는 방법을 알아보았다. 디버깅을 잘하는 정도는 없다고 생각한다. 위에 설명한 것은 단지 방법일 뿐이지 이것으로 모든 버그를 잡을 수 있다는 것은 절대 아님을 명심하길 바란다. 가능하면 버그없는 프로그램을 만들어야겠지만, 버그가 적게 프로그래밍 할수는 있을지언정 버그가 전혀없게 프로그래밍하기는 불가능하다는 것이 지금까지의 경험이다. 그래서 이런 디버깅툴의 도움을 받아서 버그를 잡아 버그를 줄여나가는 과정은 개발과정에서 반드시 필요한 과정이다. 버그들이 벌벌떨수 있도록... ^^;

<출처 : http://www.alan-keum.info/tag/Debug >

반응형

출처 : 한다의 파워빌더

 

제목 : datawindow column 색깔 표현

 

==> datawindow/Modify datawindow / column click(전체선택) / 속성 / font메뉴

   / background color / expression! 빨간색 icon선택/ expression! 에 기술

   / if (getrow() = currentrow(), RGB(255,255,128), RGB(255,255,255))

   / ok click --> 하고 나오면 아이콘 색깔이 연두색(노란색)으로 바뀌어 있음.

 

<< 객체찾기<?xml:namespace prefix = o /><?xml:namespace prefix = o />

==> singlienedit box를 속성에서 visible check를 안하면 안보임

   안보일때 메뉴/design / show invisible check하면 보임.

 

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 


시스템 명

LOGISTEC-LIS

한단의 파워빌더

(<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Handan’s powerbuilder)

()handanCorporation

    

파빌기능

작성일

2008. 03. 28

    

IMPORT!

작성자

한단

==> excel 화일을 파워빌더를 이용하여 db에 입력하기

설명 : 1. 엑셀을 실행시키고, data를 입력한다./ 숫자를 입력할 때는 fuction 부분에서

          single quation 를 사용하여 문자로 인식하게 한다. / 파일을 저장할 때 (save as ...)

          / db II-III file의 파일 형식으로 저장.(파워빌더에서 불러오려면)

             2. create table

             3. 파워빌더에서 database를 실행시킴/ tables를 클릭/ 저장할 테이블 선택 / 오른쪽 마우스 클릭

               / Edit data/grid /   밑에 columne들이 나타나면 한 번 클릭해주고

               / 메뉴/rows/import!/select import! file/ 파일형식 클릭/

               엑셀로 저장한 db II-III file을 찾아 열기 클릭.

 

 


시스템 명

LOGISTEC-LIS

한단의 파워빌더

(Handan’s powerbuilder)

()handanCorporation

    

파빌기능

작성일

2002. 03. 28

    

SetFocus( )의 변경

작성자

한단

==> SetFocus( ) 주어진 윈도우 또는 오브젝트로 포커스를 변경하는 기능을 수행한다.

    파워빌더의 오브젝트.SetFocus( )와 유사하다. 

Global External Function:

SUBROUTINE SetFocus(long objhandle) LIBRARY "User32.dll"

 

Script:

SetFocus(handle(sle_1))  // This function gets the handle from PB.

 


시스템 명

LOGISTEC-LIS

한단의 파워빌더

(Handan’s powerbuilder)

()handanCorporation

    

파빌기능

작성일

2002. 03. 28

    

WinExec( )

작성자

한단

==>이 함수는 주어진 파일명(파일의 경로 포함) O/S 트리거에게 전달하며 O/S트리거는

주어진 파일을 실행한후 그 결과를 Return한다. 파워빌더에서는 RUN() 함수를 사용하면 된다.

(i.e. Run("c:\windows\calc.exe") 

 

Global External Function:

FUNCTION uint WinExec(ref string filename, uint wstyle) LIBRARY "kernel32.dll"

 

Script:

string ls_filename

uint rtn, wstyle

 

ls_filename = "c:\windows\calc.exe"  //계산기

wstyle = 1

rtn = WinExec(ls_filename, wstyle)

Messagebox("Return Code", string(rtn))

 


시스템 명

LOGISTEC-LIS

한단의 파워빌더

(Handan’s powerbuilder)

()handanCorporation

    

파빌기능

작성일

2002. 03. 28

    

날짜나오게 하기 & 날짜로 조회할때 data 얻기

작성자

한단

==>  edit mask에 날짜 나타나게

     editmask/속성/mask메뉴/mask : xxxx.xx

                            maskdatatype : stringmask!

 

             select TO_CHAR(ADD_MONTHS(SYSDATE, -1),'yyyymm')   

             into :em_year.text  

             from dual;

 


시스템 명

LOGISTEC-LIS

한단의 파워빌더

(Handan’s powerbuilder)

()handanCorporation

    

파빌기능

작성일

2002. 03. 28

    

pb에서 sql 실행시키는 방법

작성자

한단

==> 메뉴/database/view/interactive SQL click/ 밑에 창이 뜸

    select * from tab; 작성하고 /위 메뉴 execute click

 


시스템 명

LOGISTEC-LIS

한단의 파워빌더

(Handan’s powerbuilder)

()handanCorporation

    

파빌기능

작성일

2002. 03. 28

    

check in & check out 활용

작성자

한단

---------------------------------------------------------------------------

* check in & check out 활용

---------------------------------------------------------------------------

1. 설명

 위의 기능은 여러명이서 S/W를 개발할때 버젼관리 기능의 하나입니다.

파빌 7.0에서는 상단 메뉴의 'SOURCE'를 클릭하면 바로밑에 'CONNECT'라는것이 있습니다.

그것을 선택하여 접속을 해주면, CHACK IN, CHACK OUT 기능을 모두 사용할

수 있습니다. 그리고 접속을 종료하면 해당 기능들은 모두 사용불가로 변합니다.

 

2.설정 방법

 1) 메뉴에서 source에서 connect 를 클릭하면

 2) 조그만 팝업창이 뜨고

 3) 거기서 [pb native]를 선택하고

 4) ok 버튼 클릭

 5) [set current user id] 팝업창이 뜨면

 6) 아이디 (example : 1111)를 입력하고 엔터

 

 7) check out 걸 창을 선택

 8) 마우스 오른쪽 클릭

 9) 메뉴 check out 선택

10) [check out library entries] 창이 뜨고

11) check out할 창이 있는 라이브러리와 다른 라이브러리를 선택

12) 창옆에 check out 표시가 나타남

 

3. 해제

 1) source 메뉴에서

 2) clear check out status 를 선택

 3) 해제

 


시스템 명

LOGISTEC-LIS

한단의 파워빌더

(Handan’s powerbuilder)

()handanCorporation

    

파빌기능

작성일

2002. 05. 19

    

단축키

작성자

한단

==> ctrl + tab : 창의 이동(마우스가 창에 있어야)

               속성창에 cursor 가 있으면 tab menu 이동 선택

    tab : 속성창에서 속성들의 선택,, 아래방향

shift + tab : 위 방향

 

ctrl + W : window close

ctrl + Q : 파워빌더 종료

ctrl + R : 실행

ctrl + F : 찾기  ,, ctrl + G : 다음 찾기

ctrl + H : replace

ctrl + L : 컴파일

ctrl + F : 찾기

shift + F10 : 라이브러리

shift + F1 : 블럭설정되어 있는 항목 도움말보기

 


시스템 명

LOGISTEC-LIS

한단의 파워빌더

(Handan’s powerbuilder)

()handanCorporation

    

파빌기능

작성일

2002. 05. 19

    

ODBC 설정방법

작성자

한단

1) 어려운 방법

제목 : 오라클과 파워빌더 연결(ODBC로 사용)

 

1. 유저 생성

 

 sqlplus를 실행을 시킨다(system/manager). -->  create user를 하는데 명령어는 create user bae identified by bae ;   (처음 bae는 유저명, 나중 bae는 패스워드)  --> 권한부여,  grant dba to bae ;

---> exit 를 실행시키고 빠져 나온다.

 

2. oralce net8 easy config 에서 환경설정

 

시작/프로그램/oracle for  windows 95/oracle net8easy config를 실행시킨다.  ---> choose action의 라디오 버튼을 add/new service를 선택 -->  choose service name bae를 입력 , 다음  클릭  --> baqueath(local database)를 선택,  다음을 클릭 -->다음 클릭 --> database sid :ORCL 상태에서 다음을 클릭 --> test service 를 클릭 -->  user id password system/manager를 입력하고 text

 

위 사항은 같고 --> user id password bae/bae(사용할 db)를 입력하고 text ....

 

3.데이터베이스 원본 만들기

 

설정  -->  제어판  -->  ODBC 데이터원본 click   -->

   사용자 DNS tab  ----> 추가 ---> oracle ODBC Driver 선택  ---> 마침 ---> oracle8 ODBC driver setup 창이 뜬다.  거기에서 data source name   bae ,    service name bae ,       userid   bae 를 입력하 고  ok 클릭.

  시스템 DNS tab  ----> 추가 --> oracle ODBC Driver 선택  ---> 마침 ---> oracle8 ODBC driver setup 창이 뜬다.  거기에서 data source name   bae ,    service name bae ,       userid   bae 를 입력하 고  ok 클릭.

  파일 DNS tab  ----> 추가 --> oracle odbc driver 선택 --> 다음 클릭 --> 찾아보기 클릭  --> Data Sources 에 파일이름을  bae로 입력하고 저장 ---> 마침 클릭 --> oracle8 odbc driver connect  --> service  name : bae

                                                                           user name       : bae

                                                                      password       : bae 를 입력하고 ok 클릭 하면 생성이 된다.

 

4. 파워빌더에서 만든 bae database에 연결...

주의) 처음으로 ODBC와 연결을 하려면 system/manager로 들어갔다가 나와야 한다.

파워빌더 실행 --> batabase를 클릭 --> installed database interfaces메뉴에서 O84 Oracle 8.0.4/8.0.5 를 클릭 --> 오른쪽 마우스 클릭 --> new profile을 클릭 --> profile name : 아무이름이나 (or korea) bae 로 입력

      Login ID : system

       Password : manager 로 입력하고 apply 클릭 하면 생성이 된다.

오른쪽 마우스 클릭 하여 connect 한다. 

그러면 파워빌더에서 사용할 테이블을 생성하기 위하여 5개의 테이블들이 system/manager에 들어가게 됨.  ---> sqlplus를 실행하여 5개의 테이블이 생성이 되었는지 확인한다. select * from tab;

 

 파워빌더 실행 --> batabase를 클릭 --> installed database interfaces메뉴에서 O84 Oracle 8.0.4/8.0.5 를 클릭 --> 오른쪽 마우스 클릭 --> new profile을 클릭 --> profile name : bae 로 입력

      Login ID : bae

       Password : bae 로 입력하고 apply 클릭 하면 생성이 된다.

오른쪽 마우스 클릭 하여 connect 한다. 

                                                                 

5. application open event preview내용을 그대로 copy...............

 

 

2) 다른 쉬운 방법

 

제목 : 오라클과 파워빌더 연결(ODBC로 사용)

 

 

1. 유저 생성

 

시작/프로그램/oracle8 personal edition/oralce navigator를 실행 ---> oracle8 presonal edition를 클릭  -->local batabase를 클릭 --> user에서 오른쪽 마우스 클릭 ,  new를 선택하여 bae를 만듬.

 

2. oralce net8 easy config 에서 환경설정

 

시작/프로그램/oracle for  windows 95/oracle net8easy config를 실행시킨다.  ---> choose action의 라디오 버튼을 add/new service를 선택 -->  choose service name bae를 입력 , 다음  클릭  --> baqueath(local database)를 선택,  다음을 클릭 -->다음 클릭 --> database sid :ORCL 상태에서 다음을 클릭 --> test service 를 클릭 -->  user id password system/manager를 입력하고 text

 

위 사항은 같고 --> user id password bae/bae(사용할 db)를 입력하고 text ....

 

3. 파워빌더에서 만든 bae database에 연결...

주의) 처음으로 ODBC와 연결을 하려면 system/manager로 들어갔다가 나와야 한다.

파워빌더 실행 --> batabase를 클릭 --> installed database interfaces메뉴에서 O84 Oracle 8.0.4/8.0.5 를 클릭 --> 오른쪽 마우스 클릭 --> new profile을 클릭 --> profile name : 아무이름이나 (or korea) bae 로 입력

      Login ID : system

       Password : manager 로 입력하고 apply 클릭 하면 생성이 된다.

오른쪽 마우스 클릭 하여 connect 한다. 

그러면 파워빌더에서 사용할 테이블을 생성하기 위하여 5개의 테이블들이 system/manager에 들어가게 됨.  ---> sqlplus를 실행(system/manager)하여 5개의 테이블이 생성이 되었는지 확인한다. select * from tab;

 

 파워빌더 실행 --> batabase를 클릭 --> installed database interfaces메뉴에서 O84 Oracle 8.0.4/8.0.5 를 클릭 --> 오른쪽 마우스 클릭 --> new profile을 클릭 --> profile name : bae 로 입력

      Login ID : bae

       Password : bae 로 입력하고 apply 클릭 하면 생성이 된다.

오른쪽 마우스 클릭 하여 connect 한다. 

                                                                 

4. application open event preview내용을 그대로 copy...............

 


시스템 명

LOGISTEC-LIS

한단의 파워빌더

(Handan’s powerbuilder)

()handanCorporation

    

파빌기능

작성일

2002. 05. 19

    

clipboard [클립보드, 클립판]

작성자

한단

윈도우를 사용하는 시스템에서 프로그램과 프로그램 사이의 정보 교환을 위하여

사용되는 특별한 형태의 기억 장치. , 프로그램에서는 자신이 가지고 있는 데이터의

일부를 클립보드에 저장할 수 있다. 또한 프로그램에서는 클립보드에 저장되어 있는

데이터를 읽어와서 자신의 데이터로 사용할 수 있다. 따라서 프로그램에서는 클립보드를

사용하여 데이터의 위치를 이동시킬 수도 있고, 다른 프로그램에 전달할 수도 있다.

반응형
  • 행복한 부자의 재무설계 첫걸음에서도 소개한 바 있듯이 재무설계의 목적은 인생을 살면서 언젠가는 해야 할 지출이나 투자결정을 합리적으로 파악해 한정된 소득으로 최대한 효과를 올리는데 목적이 있다고 할 수 있다.
    즉, 재무설계는 자신의 라이프 사이클에 맞춰 벌어들인 돈과 쓸 돈을 예측하고 그에 맞는 재정 계획을 짜서 그 결과를 평가 조장하는 과정 전체를 말하며 또한 현재 하고 있는 재테크와 투자방법이 올바르게 실시되고 있는지에 대한 평가도 함께 실시되어야 한다.
    재무설계는 각각 다른 금융환경에 처해 있는 사람들의 개별적인 금융환경과 각기 다른 재무목표를 기반으로 하고 있으며 동시에 가장 빨리 가장 효율적으로 본인의 목표를 달성하도록 도와주는 충실한 안내자의 역할을 하는데 그 의의가 있다.
    그렇기 때문에 각자의 라이프 사이클에 따라 재무 설계의 주요 목표와 점검할 사항들이 무엇인지, 어떤 부분들은 준비하며 보완해 나가야 하는지를 아는 것은 대단히 중요하다.
  • ▲ 재무설계 - Life cycle
  • ▲ 시기별 재무 목표 및 점검 사항
  • 1. 20대-30 미혼 재무설계
    20대는 부를 준비하는 시기라 할 수 있다. 부모에게 일정액의 종자돈을 물려받지 않는 이상 돈을 모으는 방법 이외에는 결혼자금을 마련하는 것이 쉽지 않다. 더욱이 지금까지 부모님의 수입에 의존해 용돈을 받아쓰다가 갑자기 돈을 벌면 갖고 싶었던 것을 구입하는 등 소비의 유혹에 빠지기 싶기 때문에 사회 초년생이 계획성 있게 저축하는 일은 매우 어렵다. 하지만 오히려 이러한 유혹을 뿌리치고 꾸준히 저축하는 사람은 남보다 빨리 경제적 독립을 할 수 있다.  
    그렇다면 어떠한 재무 목표를 가지고 어떠한 부분을 중점적으로 재무설계를 해야 할까? 20대로서 혹은 30 초반 첫 사회 초년생은 무엇보다 위험설계(보험)를 설계할 것을 권한다. 저축을 열심히 하지만 예상치 못한 상황은 항상 발생할 수 있기 때문에 우연에 대비하는 risk management 가 가장 우선 설계가 되어야 한다. 그리고 여성의 경우는 결혼자금 형성을 위한 저축과 남성의 경우 전세 자금 마련을 위한 저축을 설계 하여야 한다.
    여기서 기억할 한 가지는 100에서 자신의 나이를 뺀 값만큼은 다소 공격적인 투자저축(주식형 연계 금융상품) 그 외 나머지 값은 안정적인 자산에 저축하는 것이 좋다는 것이다. 예를 들면 현재 27살인 직장인 A씨가 있다고 가정해 보자. 그의 저축의 유형은 100 - 27 = 63 ! 즉 다소 공격적인 금융 상품(투자형) 에 63%, 안정적인 보수적으로 운용하는 금융상품에 27%를 분배 하면 된다. 
    그리고 위험설계와 투자설계를 제외하면 청약 저축을 미리 가입해 두면 면 추후 부동산 설계에서 유리한 고지를 선점할 수 있다.
    (※ 외부필자의 원고는 싱글N의 편집방향과 일치하지 않을 수 있습니다.)
반응형
 연금 상품은 소득공제가 되는 반면에 연금 수령 시 연금 소득세 5.5%가 부과 되지만 변액 연금의 경우 연금 수령액 전액 비과세 혜택을 받을 수 있다. 소득공제를 받는 것이 더 이익을 클 것인가? 아니면 비과세를 받는 것이 더 이익일 클 것인가는 각자의 소득과 과세표준에 따라 틀리기 때문에 단정지어 말 할 수 없지만 대체적으로 직장인 경우 비과세 혜택이 더 실질적이라고 할 수 있다.
  • ▲ 연금은 행복한 노후를 준비하는 필수재가 되었다 [사진=조선일보]
  • 금리형으로 연동되는 연금 저축과 연금 보험과는 달리 연금 펀드와 변액 연금의 경우 주식과 채권에 투자함으로 물가 상승률보다 더 높은 수익을 올려 실질적 연금 수령액이 되도록 하는 것이 목적이다. 변액연금의 경우는 납입 기간이 지나 수령 시점까지 연금 상품을 유지하면 원금보장을 해주는 장점이 있지만, 연금 펀드의 경우 원금 보장이 안되는 점도 기억해 둘 만하다. 하지만 변액연금이나 연금 보험의 경우는 중도에 해약할 경우 해약환급금에 따른 손실액이 발생 할 수 있기 때문에 가급적 꾸준히 납입할 수 있는 금액을 게획하는 것이 중요하겠다.
    이제 연금은 노후를 위해 준비하기 우한 선택재가 아닌 필수재가 되었다. 그러나 각자마다 소득과, 현재 나이가 다르며, 투자 성향도 다르기 때문에 전문가와 상담 후 각 연금 상품의 특징과 장단점을 고려하여 자신의 소득대비 적정 수준액과 노후 생활에 자신이 희망하는 노후자금등을 고려하여 신중하게 선택하고 가입해야 한다.
     
    (※ 외부필자의 원고는 싱글N의 편집방향과 일치하지 않을 수 있습니다.)
반응형
행복한 부자의 재무설계 두 걸음
김기갑의 '싱글 재무 설계' (2)
청약 통장 편
한국 재무 설계 김기갑
입력시간 : 2007.12.04 08:57
  • 모든 이들이 내 집 마련의 꿈을 가지고 있으며, 이는 직장 생활을 처음 시작하는 사회 초년병들이나 미혼들에게도 마찬가지다. 그러나 수도권에서 내 집 마련 한다는 것이 얼마나 엄청난 목돈이 투입되는지 현실적으로 깨닫게 되면 내 집 마련이 쉽지 않다는 벽을 느끼게 된다.
    그렇다면, 효과적 내 집 마련을 위해서는 어떤 재무 설계 계획을 세워야 할까?
    많지 않은 소득으로 효과적 내 집 마련의 첫걸음은 바로 청약 통장 가입이다. 상담을 진행하다보면  청약통장을 가입하고 있는 고객들 중에 의외로 자신이 가입하고 있는 청약통장이 정확하게 어떤 유형의 통장인지 모르는 경우가 많다. 그러나 이는 중요한 문제인데, 그 이유는 청약통장의 유형에 따라 내 집 마련을 위한 분양 전략이 틀려지기 때문이다. 청약 통장은 청약 저축과 청약 부금, 청약 예금이 있으며 각 특징과 가입 방법을 자세히 알아 둘 필요가 있다
  • 청약 통장 가입에 앞서 ‘나에게 맞는 청약 통장은 어떠한 것일까?’ 혹은 ‘어떤 청약 통장을 가입해야 하는 것인가?’ 라는 질문을 할 수 있는데 소득이 많지 않다면 청약 저축 가입이 유리해 보인다. 최근 들어 청약 부금 가입자 수가 큰 폭으로 감소한 반면 청약 저축 가입자 수가 부쩍 증가 하였다.
    그러면 청약 저축 가입자 수가 증가하는 이유가 무엇일까? 이는 청약 저축을 소유할 경우 정부가 지속적으로 공급 확대를 하겠다고 하는 임대 아파트와 전환 임대 아파트 및 서울시에서 더욱 공급 확대를 하겠다는 장기 전세 아파트 등을 청약 할 수 있기 때문이며, 청약 부금을 통한 청약을 할 수 있는 민간 건설업체들은 소형주택 공급을 꺼리고 있기 때문이다. 또한, 청약 저축의 경우 청약 가점제의 영향을 받지 않기 때문에 대체적으로 나이가 젊은 20-30대에게 청약의 불리함이 적다. 청약 가점제는 무주택기간과 부양 가족수, 통장가입 기간등이 중요한 요소로써 점수가 책정되기 때문에 상대적으로 나이가 젊어 가입 기간과 보유 기간이 짧은 20-30대에게는 불리하다.
  • ▲ [사진=조선일보] 본 이미지는 위의 내용과 관련없습니다.
  • 최근 상담 내용 중 결혼을 위해 전세자금 대출에 대한 고민을 하는 경우를 종종 보는데, 전세 자금을 대출하는 것보다는 20평 임대아파트에 보증금 2000 만원과 월 임대료 20 만원 혹은, 월 임대료 대신 전세로 전환 하여 입주 하는 것이 훨씬 더 부담이 적을 수 있다. 전세의 경우 2년 단위 마다 전세 보증금을 인상할 가능성이 높다. 그러나 임대 아파트의 경우 그런 부담감이 적은 대신 내 집 마련을 위한 저축을 동시에 진행 할 수 있고, 향후 주택 청약을 받을 수 있는 기회도 상실 되는 것이 아니기 때문에 결혼 자금이나 전세자금이 충분 하지 못한 경우에는 고려 할만하다. 분양 전환 임대 아파트의 경우 보통 5년 전환 임대 아파트와 10년 전환 임대 아파트로 구분 되는데, 5년 전환 임대 아파트의 경우 5년 동안 보증금과 임대료를 내며 거주하다 5년 이 후 소유권 이전을 할 수 있는 것이다. 이 같은 경우 2005년 일산 2지구 예전 32평형을 예를 들면 보증금 6500만원 정도에 월 임대료 30만원대이다. 비슷한 평수를 가지고 있는 주위 민영 아파트의 전세 보증금 보다 싸며, 보증금 인상폭도 없는 것이 장점이고, 월 임대료 경우도 감가 상각비로 공제 되는 효과가 있다고 할 수 있는데 이는 5년 후 주위 시세의 75~80% 대에서 소유권 이전이 가능하기 때문이다. 그렇기 때문에 전환 임대 아파트를 청약 하는 경우 5년 동안 체계적 저축을 통해 부담감을 최소화 하며 내 집마련을 이룰 수 있는 장점이 있다.
    현재 청약 통장이 없기 때문에 새롭게 청약 통장을 가입할 계획이 있다면 여러모로 청약 저축통장 가입이 청약 부금 통장 보다 유리하다고 할 수 있겠다. 그러나 현재 부금 가입자의 경우 주택 청약으로 전환 해야 하는가? 라는 고민은 각 자의 상황에 따라 틀리기 때문에 전문가의 개별 조언이 필요하다.
    (※ 외부필자의 원고는 싱글N의 편집방향과 일치하지 않을 수 있습니다.)

+ Recent posts