ASP 인터페이스

본 장은 ASP 인터페이스에서 사용하는 함수와 예제를 설명한다.

1. 개요

ASP(Active Server Pages) 인터페이스는 웹 환경에서 동적으로 웹 페이지를 작성하여 사용자가 볼 수 있도록 하는 스크립트이다. ASP에서 Tmax의 서비스를 호출하려면 Tmax에서 제공하는 tmaxcomcli.dll 인터페이스를 사용해야 한다.

tmaxcomcli.dll은 인프로세스 서버로 동작하며 다음과 같은 4개의 인터페이스가 있다.

모듈 설명

Tmaxcom.Atmi

기본적인 Tmax 함수를 래핑한 메소드를 포함한다.

Tmaxcom.Etc

Tmaxcom.Atmi에서 제공하는 것 이외의 함수를 래핑한 메소드를 포함한다.

Tmaxcom.Fdl

Tmax 필드 버퍼를 처리하는 함수를 래핑한 메소드를 포함한다.

Tmaxcom.Tx

Tmax 트랜잭션 함수를 래핑한 메소드를 포함한다.

ASP에서 Tmax의 서비스는 위의 인터페이스에 대한 Object를 생성한 후 해당하는 메소드를 호출함으로써 수행할 수 있다. 이에 대한 자세한 사항은 예제 프로그램을 참고한다.

다음은 각각의 ASP 인터페이스에서 사용하는 함수의 목록이다.

  • Atmi 인터페이스 메소드

    함수 설명

    OnGettperrno

    Tmax 시스템을 호출할 때 설정된 에러값을 반환하는 함수이다.

    OnGettpurcode

    서비스에서 tpreturn할 경우 설정한 urcode를 반환하는 함수이다.

    OnTpacall

    비동기형 서비스 요청 송신 함수이다.

    OnTpalloc

    유형 버퍼(Typed Buffer) 할당 함수이다.

    OnTpcall

    동기형 서비스 요청 송수신 함수이다.

    OnTpcancel

    OnTpacall이 반환한 호출 구별자인 cd로 응답을 취소한다.

    OnTpconnect

    대화형 서비스와 통신 연결을 하는 함수이다.

    OnTpdiscon

    대화형 통신 연결 종료 함수이다.

    OnTpend

    Tmax 시스템과의 연결을 해제하는 함수이다.

    OnTpfree

    유형 버퍼(Typed Buffer)에 할당된 메모리를 해제하는 함수이다.

    OnTpget

    OnTpalloc등으로 할당한 버퍼에 대한 포인터가 가리키고 있는 값을 가져오는 함수이다.

    OnTpgetrply

    비동기적으로 요청한 서비스에 대한 응답 수신 함수이다.

    OnTpput

    OnTpalloc 등으로 할당한 버퍼에 대한 포인터가 가리키고 있는 곳에 value값을 설정하는 함수이다.

    OnTprealloc

    유형 버퍼(Typed Buffer)를 재할당하는 함수이다.

    OnTprecv

    대화형 통신으로 연결된 상대방 프로그램으로부터 송신된 데이터를 수신하기 위해 사용되는 함수이다.

    OnTpsend

    대화형 통신을 할 경우 메시지를 송신하는 함수이다.

    OnTpstart

    Tmax 시스템에 연결하는 함수이다.

    OnTptypes

    버퍼의 유형 및 하위 유형에 대한 정보를 제공하는 함수이다.

  • 기타 인터페이스 메소드

    함수 설명

    OnTmax_chk_conn

    클라이언트가 Tmax 시스템과 연결된 상태인지 체크하는 함수이다.

    OnTmaxreadenv

    환경변수를 파일로부터 로드하는 함수이다.

    OnTp_sleep

    최대 sec시간 동안 sleep하다가 그 안에 데이터가 도착하면 즉시 반환하는 함수이다.

    OnTp_usleep

    최대 usec시간 동안 sleep하다가 그 안에 데이터가 도착하면 즉시 반환하는 함수이다.

    OnTpdeq

    tpenq()를 이용하여 서비스를 요청한 결과나 또는 tpenq()를 이용할 때 서비스명을 NULL로 하여 저장한 데이터를 읽는 함수이다.

    OnTpenq

    RQ에 데이터를 저장하는 함수이다.

    OnTperrordetail

    Tmax 시스템을 호출할 때 발생한 오류의 자세한 정보를 얻을 때 사용하는 함수이다.

    OnTpextsvcinfo

    OnTpdeq()로 RQ에서 데이터를 읽은 경우 해당 데이터에 대한 상세한 정보를 알고자 할 때 사용하는 함수이다.

    OnTpextsvcname

    OnTpdeq()로 RQ에서 데이터를 읽은 경우 해당 데이터의 서비스명을 알고자 할 때 사용하는 함수이다.

    OnTpgetenv

    str이라는 이름으로 등록된 환경변수의 값을 반환하는 함수이다.

    OnTpputenv

    str로 입력된 '이름=값’을 환경변수에 적용하는 함수이다.

    OnTpqstat

    현재 큐에 저장된 데이터의 통계값을 반환하는 함수이다.

    OnTpqsvcstat

    현재 큐에 저장된 데이터 중 특정 서비스에 대한 통계값을 반환하는 함수이다.

    OnTpreissue

    OnTpdeq() 등으로 RQ를 통한 서비스 수행 중 네트워크 불안정이나 기타 서버 측의 오류로 서비스 수행을 실패하여 fail 큐에 쌓인 클라이언트의 서비스 요청 데이터를 다시 request 큐에 넣는 함수이다.

    OnTpreset

    현재 접속된 클라이언트를 즉시 해제하는 함수이다.

    OnTpset_timeout

    서버에 설정되어 있는 서비스 제한시간, 즉 Blocking Timeout 시간을 변경할 때 사용하는 함수이다.

    OnTpsubqname

    서브큐 번호에 해당하는 큐의 이름을 반환하는 함수이다.

    OnTptobackup

    클라이언트가 Tmax 백업 시스템으로 연결하는 함수이다.

  • FDL 인터페이스 메소드

    함수 설명

    OnFballoc

    필드 버퍼의 크기를 계산한 후 메모리를 할당하는 함수이다.

    OnFbcalcsize

    OnTpalloc()으로 필드 버퍼를 메모리에 할당받을 때 적정한 메모리를 할당받기 위하여 사전에 필드 버퍼의 크기를 계산하는 함수이다.

    OnFbdelall

    필드 버퍼에서 지정한 필드키의 전체 데이터를 삭제하는 함수이다.

    OnFbdelete

    필드 버퍼에 지정한 필드키의 필드 순번에 해당되는 데이터를 삭제하는 함수이다.

    OnFbfldcount

    필드 버퍼 내에 있는 모든 필드의 수를 반환하는 함수이다.

    OnFbfree

    필드 버퍼의 메모리를 해제하는 함수이다.

    OnFbget

    필드 버퍼에서 필드키에 해당되는 필드 데이터를 반환하는 함수이다.

    OnFbget_fbsize

    필드 버퍼의 크기를 반환하는 함수이다.

    OnFbget_fldkey

    지정한 필드명과 일치하는 필드키를 반환하는 함수이다.

    OnFbget_fldname

    지정한 필드키와 일치하는 필드명을 반환하는 함수이다.

    OnFbget_fldtype

    지정한 필드키의 필드 타입을 정수로 반환하는 함수이다.

    OnFbget_strfldtype

    지정한 필드키의 필드 타입을 문자열로 반환하는 함수이다.

    OnFbget_unused

    메모리에 할당된 필드 버퍼 중 아직 사용되지 않은 필드 버퍼의 크기를 계산하는 함수이다.

    OnFbget_used

    메모리에 할당된 필드 버퍼 중 아직 사용 중인 필드 버퍼의 크기를 계산하는 함수이다.

    OnFbgetc

    필드 버퍼에 저장되어 있는 필드 데이터를 지정한 타입으로 변환하여 순차적으로 반환하는 함수이다.

    OnFbgetf

    필드 버퍼에 저장되어 있는 필드 데이터를 순차적으로 반환하는 함수이다.

    OnFbgetnth

    지정한 필드키에 저장되어 있는 필드 데이터 중 지정한 데이터가 저장되어 있는 필드 개수을 반환하는 함수이다.

    OnFbgetntht

    지정한 필드키에 저장되어 있는 필드 데이터 중 지정한 데이터가 저장되어 있는 필드 순번을 반환하는 함수이다.

    OnFbgetval

    필드 버퍼에 지정한 필드키의 필드 순번에 해당하는 필드 데이터를 반환하는 함수이다.

    OnFbgetvali

    지정한 필드키의 필드 순번에 해당하는 필드 데이터를 정수로 변환하여 반환하는 함수이다.

    OnFbgetvals

    지정한 필드키의 필드 순번에 해당하는 필드 데이터를 문자열로 변환하여 반환하는 함수이다.

    OnFbgetvalt

    지정한 필드키의 필드 순번에 해당하는 필드 데이터를 지정한 타입으로 변환하여 반환하는 함수이다.

    OnFbinit

    필드 버퍼를 초기화하는 함수이다.

    OnFbinsert

    필드 버퍼에 지정한 필드키의 필드 순번에 데이터를 저장하는 함수이다.

    OnFbisfbuf

    지정한 필드 버퍼가 유효한지(OnFballoc 또는 OnTpalloc으로 버퍼를 할당받은 변수인지) 확인하는 함수이다.

    OnFbispres

    필드 버퍼에 지정한 필드키의 필드 순번에 필드 데이터가 존재하는지 확인하는 함수이다.

    OnFbkeynm_unload

    메모리로 로딩된 FDL 파일을 새로 로딩하는 경우 이 함수를 호출할 수 있다.

    OnFbkeyoccur

    필드 버퍼에서 지정한 필드키의 필드 순번을 반환하는 함수이다.

    OnFbmake_fldkey

    새로운 필드키를 동적으로 생성하는 함수이다.

    OnFbnmkey_unload

    메모리로 로딩된 FDL 파일을 새로 로딩하는 경우 이 함수를 호출할 수 있다.

    OnFbput

    필드 버퍼에 새로운 필드를 추가하는 함수이다.

    OnFbputt

    필드 버퍼에 데이터를 지정한 타입으로 변환한 후 새로운 필드를 추가하여 저장하는 함수이다.

    OnFbrealloc

    필드 버퍼를 메모리에 다시 할당하는 함수이다.

    OnFbstrerror

    필드 버퍼를 조작할 때 에러 내용을 문자열로 반환하는 함수이다.

    OnFbtypecvt

    지정한 필드 데이터를 지정한 타입으로 데이터형을 변환하여 반환하는 함수이다.

    OnFbupdate

    필드 버퍼에 지정한 필드키의 필드 순번에 해당되는 데이터를 변경하는 함수이다.

    OnGetfberrno

    필드 버퍼와 관련된 API 함수를 수행하는 도중에 에러가 발생하였을 경우 에러값을 반환하는 함수이다.

    OnGetfberror

    필드 버퍼와 관련된 API 함수를 수행하는 도중에 에러가 발생하였을 경우 에러값을 반환하는 함수이다.

  • Tx 인터페이스 메소드

    함수 설명

    OnTx_begin

    전역 트랜잭션을 시작하는 함수이다.

    OnTx_commit

    전역 트랜잭션을 Commit하는 함수이다.

    OnTx_rollback

    전역 트랜잭션을 Rollback하는 함수이다.

    OnTx_set_transaction_timeout

    전역 트랜잭션의 Timeout을 설정하는 함수이다.

각 함수의 내부적으로 호출되는 함수에 대한 자세한 내용은 Tmax FDL Reference Guide 또는 Tmax Reference Guide를 참고한다.

2. Atmi 인터페이스 메소드

2.1. OnGettperrno

Tmax 시스템을 호출할 때 설정된 에러값을 반환하는 함수이다.

  • 프로토타입

    OnGettperrno()
  • 반환값

    에러값을 반환한다.

  • 관련함수

    OnTpurcode(), OnTpstrerror()

2.2. OnGettpurcode

서비스에서 tpreturn할 경우 설정한 urcode를 반환하는 함수이다.

  • 프로토타입

    OnGettpurcode()
  • 반환값

    urcode를 반환한다.

  • 관련함수

    OnGettperrno(), OnTpstrerror()

2.3. OnTpacall

비동기형 서비스 요청을 송신하는 함수로 내부적으로 tpacall을 호출한다.

  • 프로토타입

    OnTpacall(VARIANT svc, VARIANT data, VARIANT len, VARIANT flags)
  • 파라미터

    파라미터 설명

    svc

    처리를 요청할 서비스명이다.

    data

    서비스 요청의 데이터에 대한 포인터이다. 데이터가 NULL이 아닌 경우는 반드시 OnTpalloc 또는 OnFballoc으로 할당된 버퍼에 대한 포인터이어야 한다.

    len

    송신할 데이터의 길이를 지정한다.

    flags

    tpcall을 하기위한 flags를 의미한다.

  • 반환값

    반환값 설명

    구별자(descriptor)

    함수 호출에 성공한 경우이다. 구별자는 OnTpgetrply(), OnTpcancel()등의 메소드에서 파라미터로 사용된다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpcall(), OnTpgetrply(), OnGettperrno()

2.4. OnTpalloc

유형 버퍼(Typed Buffer) 할당 함수로 내부적으로 tpalloc을 호출한다.

  • 프로토타입

    OnTpalloc(VARIANT type, VARIANT subtype, VARIANT size)
  • 파라미터

    파라미터 설명

    type

    지정된 유형을 나타낸다(FIELD/STRING etc.).

    subtype

    구조체 버퍼를 사용하는 경우 사용되는 파라미터로, ASP에서는 사용되지 않는다.

    size

    버퍼의 크기를 의미한다.

  • 반환값

    반환값 설명

    적절한 유형 버퍼에 대한 포인터

    함수 호출에 성공한 경우이다.

    NULL

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTprealloc(), OnTpfree(), OnGettperrno()

2.5. OnTpcall

동기형 서비스 요청 송수신 함수로 내부적으로 tpcall을 호출한다.

  • 프로토타입

    OnTpcall(VARIANT svc, VARIANT idata, VARIANT ilen, VARIANT *odata,
             VARIANT *olen, VARIANT flags)
  • 파라미터

    파라미터 설명

    svc

    처리를 요청할 서비스명이다.

    idata

    서비스 요청의 데이터에 대한 포인터이다. 데이터가 NULL이 아닌 경우는 반드시 OnTpalloc 또는 OnFballoc으로 할당된 버퍼에 대한 포인터이어야 한다.

    ilen

    송신할 데이터의 길이를 지정한다.

    odata

    수신될 응답 버퍼에 대한 포인터로 반드시 OnTpalloc 또는 OnFballoc으로 할당된 버퍼에 대한 포인터이어야 한다.

    olen

    수신한 데이터의 길이를 받는다.

    flags

    tpcall을 하기 위한 flags를 의미한다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpalloc(), OnTpacall(), OnTpgetrply(), OnGettperrno()

2.6. OnTpcancel

OnTpacall이 반환한 호출 구별자인 cd로 응답을 취소하는 함수로 내부적으로 tpcancel을 호출한다.

  • 프로토타입

    OnTpcancel(VARIANT cd)
  • 파라미터

    파라미터 설명

    cd

    OnTpacall의 반환값으로 받아 온 구별자이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpacall(), OnTpgetrply(), OnGettperrno()

2.7. OnTpconnect

대화형 서비스와 통신 연결을 하는 함수로 내부적으로 tpconnect를 호출한다.

  • 프로토타입

    OnTpconnect(VARIANT svc, VARIANT data, VARIANT len, VARIANT flags)
  • 파라미터

    파라미터 설명

    svc

    통신 연결을 하려는 서비스명이다.

    data

    연결을 설정하는 과정에서 서비스 루틴에 전달하고자 하는 데이터의 포인터이다.

    len

    연결을 설정하는 과정에서 서비스 루틴에 전달하고자 하는 데이터의 사이즈이다.

    flags

    통신 연결할 때 flags에 다음 중에서 설정한다.

    • TPNOTRAN

    • TPSENDONLY

    • TPRECVONLY

    • TPNOTIME

    • TPSIGRSTRT

    이 중 TPSENDONLY 또는 TPRECVONLY 둘 중 하나는 OnTpconnect일 경우 반드시 설정해야 한다.

  • 반환값

    반환값 설명

    구별자(descriptor)

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTprecv(), OnTpsend(), OnTpdiscon(), OnGettperrno()

2.8. OnTpdiscon

대화형 통신 연결 종료 함수로 내부적으로 tpdiscon을 호출한다.

  • 프로토타입

    OnTpdiscon(VARIANT cd)
  • 파라미터

    파라미터 설명

    cd

    OnTpconnect에서 반환한 구별자이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpconnect(), OnTprecv(), OnTpsend(), OnGettperrno()

2.9. OnTpend

Tmax 시스템과의 연결을 해제하는 함수로 내부적으로 tpend를 호출한다.

  • 프로토타입

    OnTpend()
  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpstart(), OnGettperrno()

2.10. OnTpfree

유형 버퍼(Typed Buffer)에 할당된 메모리를 해제하는 함수로 내부적으로 tpfree를 호출한다.

  • 프로토타입

    OnTpfree(VARIANT ptr)
  • 파라미터

    파라미터 설명

    ptr

    메모리를 해제하고 싶은 버퍼의 포인터이다.

  • 반환값

    함수 호출자에 아무 값도 반환하지 않는다.

  • 관련함수

    OnTpalloc()

2.11. OnTpget

OnTpalloc 등으로 할당한 버퍼에 대한 포인터가 가리키고 있는 값을 가져오는 함수이다.

  • 프로토타입

    OnTpget(VARIANT buf, VARIANT *loc)
  • 파라미터

    파라미터 설명

    buf

    OnTpalloc으로 받아 온 버퍼에 대한 포인터이다.

    value

    값을 받아올 변수이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

  • 예제

    Dim buf
    Dim rVal
    Dim msg
    Dim i
    ...
    buf = OnTpalloc ("STRING", "", CINT(0))
    ...
    OnTpput buf, "abcd"
    rVal = OnTpcall("TOUPPER", buf, CINT(0), buf2, i, CINT(0))
    ...
    OnTpget buf, msg
    ...
  • 관련함수

    OnTpput()

2.12. OnTpgetrply

비동기적으로 요청한 서비스에 대한 응답 수신 함수로 내부적으로 tpgetrply를 호출한다.

  • 프로토타입

    OnTpgetrply(VARIANT cd, VARIANT *data, VARIANT *len, VARIANT flags)
  • 파라미터

    파라미터 설명

    cd

    OnTpacall의 반환값으로 받아 온 구별자이다.

    data

    수신될 응답 버퍼에 대한 포인터로 반드시 OnTpalloc 또는 OnFballoc으로 할당된 버퍼에 대한 포인터이어야 한다.

    len

    수신한 데이터의 길이를 받는다.

    flags

    tpcall을 하기 위한 flags이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpalloc(), OnTpacall(), OnGettperrno()

2.13. OnTpput

OnTpalloc 등으로 할당한 버퍼에 대한 포인터가 가리키고 있는 곳에 value값을 설정하는 함수이다.

  • 프로토타입

    OnTpput(VARIANT *buf, VARIANT value)
  • 파라미터

    파라미터 설명

    buf

    OnTpalloc으로 받아 온 버퍼에 대한 포인터이다.

    value

    buf에 설정할 값이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

  • 예제

    Dim buf
    Dim rVal
    Dim msg
    Dim i
    ...
    buf = OnTpalloc ("STRING", "", CINT(0))
    ...
    OnTpput buf, "abcd"
    rVal = OnTpcall("TOUPPER", buf, CINT(0), buf2, i, CINT(0))
    ...
    OnTpget buf, msg
    ...
  • 관련함수

    OnTpget()

2.14. OnTprealloc

유형 버퍼(Typed Buffer)의 재할당하는 함수로 내부적으로 tprealloc을 호출한다.

  • 프로토타입

    OnTprealloc(VARIANT ptr, VARIANT size)
  • 파라미터

    파라미터 설명

    ptr

    재할당하고자 하는 유형 버퍼의 포인터이다.

    size

    재할당하고자 하는 유형 버퍼의 사이즈이다.

  • 반환값

    반환값 설명

    적절한 유형 버퍼에 대한 포인터

    함수 호출에 성공한 경우이다.

    NULL

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpalloc(), OnTpfree(), OnGettperrno()

2.15. OnTprecv

대화형 통신으로 연결된 상대방 프로그램으로부터 송신된 데이터를 수신하기 위해 사용되는 함수로 내부적으로 tprecv를 호출한다.

  • 프로토타입

    OnTprecv(VARIANT cd, VARIANT *data, VARIANT *len, VARIANT flags, VARIANT *revent)
  • 파라미터

    파라미터 설명

    cd

    OnTpconnect에서 반환한 구별자이다.

    data

    OnTpalloc 또는 OnFballoc 등으로 할당된 수신할 데이터를 받을 버퍼이다.

    len

    데이터의 길이를 받아올 변수를 의미한다.

    flags

    대화형 서비스와의 통신에서 설정 가능한 flags이다.

    다음은 사용 가능한 flags이다.

    • TPNOCHANGE

    • TPNOBLOCK

    • TPNOTIME

    • TPSIGRSTRT

    revent

    구별자인 cd에 대한 이벤트가 존재한다면 OnTpsend는 실패하게 되며 데이터는 송신되지 않는다. 이벤트 유형은 revent로 반환된다.

    다음은 가능한 이벤트이다.

    • TPEV_DISCONIMM

    • TPEV_SVCERR

    • TPEV_SVCFAIL

    이에 대한 자세한 설명은 Tmax Reference Guide를 참고한다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. 반환할 때 revent가 TREV_SVCFAIL이면, OnGettpurcode()로 서비스에서 tpreturn()를 호출할 때 전달된 urcode값이 된다.

  • 관련함수

    OnTpconnect(), OnTpsend(), OnTpdiscon(), OnGettperrno()

2.16. OnTpsend

대화형 통신을 할 경우 메시지를 송신하는 함수로 내부적으로 tpsend를 호출한다. 호출자는 반드시 통신 제어권을 가지고 있어야 한다.

  • 프로토타입

    OnTpsend(VARIANT cd, VARIANT data, VARIANT len, VARIANT flags, VARIANT *revent)
  • 파라미터

    파라미터 설명

    cd

    OnTpconnect에서 반환한 구별자이다.

    data

    OnTpalloc 또는 OnFballoc등으로 할당된 버퍼이다.

    len

    데이터의 길이를 나타낸다.

    flags

    대화형 서비스와의 통신에서 설정 가능한 flags이다.

    다음은 사용 가능한 flags이다.

    • TPNOBLOCK

    • TPNOTIME

    • TPRECVONLY

    • TPSIGRSTRT

    revent

    구별자인 cd에 대한 이벤트가 존재한다면, OnTpsend는 실패하게 되며 데이터는 송신되지 않는다. 이벤트 유형은 revent로 반환된다.

    다음은 가능한 이벤트이다.

    • TPEV_DISCONIMM

    • TPEV_SVCERR

    • TPEV_SVCFAIL

    이에 대한 자세한 설명은 Tmax Reference Guide를 참고한다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. 반환할 때 revent가 TREV_SVCFAIL이면, OnGettpurcode()로 서비스에서 tpreturn()를 호출할 때 전달된 urcode값이 된다.

  • 관련함수

    OnTpconnect(), OnTprecv(), OnTpdiscon(), OnGettperrno()

2.17. OnTpstart

Tmax 시스템에 연결하는 함수로 내부적으로 tpstart를 호출한다. TPSTART_T의 파라미터에 들어갈 멤버를 파라미터로 받아온다.

  • 프로토타입

    OnTpstart(VARIANT usrname, VARIANT cltname, VARIANT dompwd, VARIANT usrpwd,
              VARIANT flags)
  • 파라미터

    파라미터 설명

    usrname

    클라이언트명을 의미한다.

    cltname

    시스템 접속 보안에 대한 암호이다.

    dompwd

    사용자 인증 보안에 대한 계정이다.

    usrpwd

    사용자 인증 보안에 대한 암호이다.

    flags

    비요청 메시지 유형과 시스템 접근 방법을 결정한다.

  • 반환값

    반환값 설명

    0 (main)

    1 (backup)

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpend(), OnTmaxreadenv(), OnGettperrno()

2.18. OnTptypes

버퍼의 유형 및 하위 유형에 대한 정보를 제공하는 함수로 내부적으로 tptypes를 호출한다.

  • 프로토타입

    OnTptypes(VARIANT ptr, VARIANT *type, VARIANT *subtype)
  • 파라미터

    파라미터 설명

    ptr

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼의 포인터이다.

    type

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼의 포인터의 버퍼 타입이다.

    subtype

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼의 포인터의 서브 타입이다.

  • 반환값

    반환값 설명

    버퍼 크기

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpsubtypes(), OnGettperrno()

3. 기타 인터페이스 메소드

3.1. OnTmax_chk_conn

클라이언트가 Tmax 시스템과 연결된 상태인지 체크하는 함수로 내부적으로 tptobackup를 호출한다.

  • 프로토타입

    OnTmax_chk_conn(VARIANT timeout)
  • 파라미터

    파라미터 설명

    timeout

    Blocking Timeout 시간을 설정한다.

  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

3.2. OnTmaxreadenv

환경변수를 파일로부터 로드하는 함수로 내부적으로 tmaxreadenv를 호출한다.

  • 프로토타입

    OnTmaxreadenv(VARIANT file, VARIANT label)
  • 파라미터

    파라미터 설명

    file

    접속할 시스템의 환경 정보가 저장된 파일명이다.

    label

    파일 내에 등록된 환경 정보의 구분자이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

  • 관련함수

    OnTpstart()

3.3. OnTp_sleep

최대 sec시간 동안 sleep하다가 그 안에 데이터가 도착하면 즉시 반환하는 함수로 내부적으로 tp_sleep를 호출한다.

  • 프로토타입

    OnTp_sleep(VARIANT sec)
  • 파라미터

    파라미터 설명

    sec

    기다리고자 하는 시간을 초 단위인 양의 정수값으로 설정한다.

  • 반환값

    반환값 설명

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

    0

    sec 시간까지 데이터가 도착하지 않는 경우이다.

    양의 정수

    데이터가 도착한 경우이다.

  • 관련함수

    OnTp_usleep()

3.4. OnTp_usleep

최대 usec시간 동안 sleep하다가 그 안에 데이터가 도착하면 즉시 반환하는 함수로 내부적으로 tp_usleep를 호출한다.

  • 프로토타입

    OnTp_sleep(VARIANT usec)
  • 파라미터

    파라미터 설명

    usec

    기다리고자 하는 시간을 백만분의 1초 단위인 양의 정수값으로 설정한다.

  • 반환값

    반환값 설명

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

    0

    usec 시간까지 데이터가 도착하지 않는 경우이다.

    양의 정수

    데이터가 도착한 경우이다.

  • 관련함수

    OnTp_usleep()

3.5. OnTpdeq

tpenq()를 이용하여 서비스를 요청한 결과나 또는 tpenq()를 이용할 때 서비스명을 NULL로 하여 저장한 데이터를 읽는 함수로 내부적으로 tpdeq를 호출한다. 단, tpenq()를 이용할 때 flags에 TPNOREPLY를 설정한 서비스는 결과를 받을 수 없다.

  • 프로토타입

    OnTpdeq(VARIANT qname, VARIANT svc, VARIANT *data, VARIANT *len, VARIANT flags)
  • 파라미터

    파라미터 설명

    qname

    데이터를 저장할 RQ명이다.

    svc

    OnTpenq()에서 사용한 서비스명과 같은 이름이다.

    data

    서비스 처리 결과를 받을 OnTpalloc 또는 OnFballoc으로 할당된 버퍼이다.

    len

    수신하는 데이터의 길이를 의미한다.

    flags

    tpdeq와 같은 flags를 설정할 수 있다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpenq()

3.6. OnTpenq

RQ에 데이터를 저장하는 함수로 내부적으로 tpenq를 호출한다.

  • 프로토타입

    OnTpenq(VARIANT qname, VARIANT svc, VARIANT data, VARIANT len, VARIANT flags)
  • 파라미터

    파라미터 설명

    qname

    데이터를 저장할 RQ명이다.

    svc

    요청할 서비스명으로, svc명이 NULL이 아니면 즉시 서비스를 요청한다. 만약 svc명이 NULL이면 데이터는 RQ에 저장되고 서비스는 수행되지 않는다.

    data

    서비스로 요청할 데이터에 대한 포인터이다. NULL인 경우를 제외하면 항상 OnTpalloc 또는 OnFballoc으로 할당된 버퍼이어야 한다.

    len

    송신하는 데이터의 길이를 의미한다.

    flags

    tpenq와 같은 flags를 설정할 수 있다.

  • 반환값

    반환값 설명

    qd (queue descriptor)

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpdeq()

3.7. OnTperrordetail

Tmax 시스템을 호출할 때 발생한 오류에 대해 자세한 정보를 얻을 때 사용하는 함수로 내부적으로 tperrordetail를 호출한다.

  • 프로토타입

    OnTperrordetail(VARIANT i)
  • 파라미터

    파라미터 설명

    i

    에러값이다.

  • 반환값

    반환값 설명

    -1

    알 수 없는 오류가 발행한 경우이다.

    1

    애플리케이션 단계에서 오류가 발생하는 경우이다.

    2

    시스템 단계에서 오류가 발생하는 경우이다.

3.8. OnTpextsvcinfo

OnTpdeq()로 RQ에서 데이터를 읽은 경우 해당 데이터에 대한 상세한 정보를 알고자 할 때 사용하는 함수로 내부적으로 tpextsvcinfo를 호출한다.

  • 프로토타입

    OnTpextsvcinfo(VARIANT data, VARIANT *svc, VARIANT *type, VARIANT *errcode)
  • 파라미터

    파라미터 설명

    data

    OnTpalloc 또는 OnFballoc으로 할당되어 OnTpdeq()를 이용하여 RQ로 부터 읽은 데이터가 저장되어 있는 포인터이다.

    svc

    해당 서비스명을 받아올 변수이다.

    type

    해당 데이터의 처리 결과를 나타내며 다음의 값을 갖는다.

    • TPREQ(0)

    • TPFAIL(1)

    • TPSUCCESS(2)

    • TPERR(-1)

    errcode

    에러 상황인 경우 이 변수에 해당되는 에러 코드값이 저장된다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

3.9. OnTpextsvcname

OnTpdeq()로 RQ에서 데이터를 읽은 경우 해당 데이터의 서비스명을 알고자 할 때 사용하는 함수로 내부적으로 tpextsvcname를 호출한다.

  • 프로토타입

    OnTpextsvcname(VARIANT data, VARIANT *svc)
  • 파라미터

    파라미터 설명

    data

    OnTpalloc 또는 OnFballoc으로 할당되어 OnTpdeq()를 이용하여 RQ로 부터 읽은 데이터가 저장되어 있는 포인터이다.

    svc

    해당 서비스명을 받아올 변수이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

3.10. OnTpgetenv

str이라는 이름으로 등록된 환경변수의 값을 반환하는 함수로 내부적으로 tpgetenv를 호출한다.

  • 프로토타입

    OnTpgetenv(VARIANT str)
  • 파라미터

    파라미터 설명

    str

    환경변수에 등록된 이름이다.

  • 반환값

    반환값 설명

    환경변수의 값에 대한 포인터

    함수 호출에 성공한 경우이다.

    NULL

    함수 호출에 실패한 경우이다.

  • 관련함수

    OnTpputenv()

3.11. OnTpputenv

str로 입력된 '이름=값’을 환경변수에 적용하는 함수로 기존의 환경변수가 존재한다면 수정을 하며 존재하지 않는다면 새로 추가한다. 함수 내부적으로 tpputenv를 호출한다.

  • 프로토타입

    OnTpputenv(VARIANT str)
  • 파라미터

    파라미터 설명

    str

    환경변수에 등록할 값이다.

  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

  • 관련함수

    OnTpgetenv()

3.12. OnTpqstat

현재 큐에 저장된 데이터의 통계값을 반환하는 함수로 내부적으로 tpqstat를 호출한다.

  • 프로토타입

    OnTpqstat(VARIANT qname, VARIANT type)
  • 파라미터

    파라미터 설명

    qname

    Tmax 환경 파일에 등록된 RQ명이다.

    type

    flags로 다음 값을 사용할 수 있다.

    • 0 : fail/request/reply 큐의 데이터 통계를 낼 때 사용한다.

    • 1 : fail 큐의 데이터 통계를 낼 때 사용한다.

    • 2 : request 큐의 데이터 통계를 낼 때 사용한다.

    • 3 : reply 큐의 데이터 통계를 낼 때 사용한다.

  • 반환값

    반환값 설명

    통계값

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpsvcstat()

3.13. OnTpqsvcstat

현재 큐에 저장된 데이터 중 특정 서비스에 대한 통계값을 반환하는 함수로 내부적으로 tpqsvcstat를 호출한다.

  • 프로토타입

    OnTpqsvcstat(VARIANT qname, VARIANT svc, VARIANT type)
  • 파라미터

    파라미터 설명

    qname

    Tmax 환경파일에 등록된 RQ명이다.

    svc

    통계를 얻고 싶은 서비스명이다. 이 이름이 NULL인 경우 OnTpqstat()와 동일한 결과를 반환한다.

    type

    flags로 다음 값을 사용할 수 있다.

    • 0 : fail/request/reply 큐의 데이터 통계를 낼 때 사용한다.

    • 1 : fail 큐의 데이터 통계를 낼 때 사용한다.

    • 2 : request 큐의 데이터 통계를 낼 때 사용한다.

    • 3 : reply 큐의 데이터 통계를 낼 때 사용한다.

  • 반환값

    반환값 설명

    통계값

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpqstat()

3.14. OnTpreissue

OnTpdeq() 등으로 RQ를 통한 서비스 수행 중 네트워크 불안정이나 기타 서버 측의 오류로 서비스 수행을 실패하여 fail 큐에 쌓인 클라이언트의 서비스 요청 데이터를 다시 request 큐에 넣는 함수로 내부적으로 tpreissue를 호출한다.

  • 프로토타입

    OnTpreissue(VARIANT qname, VARIANT filter, VARIANT flags)
  • 파라미터

    파라미터 설명

    qname

    Tmax 환경 파일에 등록된 RQ명이다.

    filter

    이 파라미터는 현재 지원하지 않으므로 NULL로 설정한다.

    flags

    이 파라미터는 현재 지원하지 않으므로 0으로 설정한다.

  • 반환값

    반환값 설명

    0 (정상)

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpenq(), OnTpdeq()

3.15. OnTpreset

현재 접속된 클라이언트를 즉시 해제하는 함수로 내부적으로 tpreset를 호출한다.

  • 프로토타입

    OnTpreset()
  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

3.16. OnTpset_timeout

서버에 설정되어 있는 서비스 제한시간인 Blocking Timeout 시간을 변경할 때 사용하는 함수로 내부적으로 tpset_timeout을 호출한다.

  • 프로토타입

    OnTpset_timeout(VARIANT sec)
  • 파라미터

    파라미터 설명

    sec

    Blocking Timeout 시간을 설정한다.

  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

3.17. OnTpsubqname

서브큐 번호에 해당하는 큐의 이름을 반환하는 함수로 내부적으로 tpsubqname를 호출한다.

  • 프로토타입

    OnTpsubqname(VARIANT type)
  • 파라미터

    파라미터 설명

    type

    다음 중에 하나를 서브큐 번호로 지정한다.

    • 0 : RQ_ANY (fail/request/reply 큐)

    • 1 : RQ_FAIL(fail 큐)

    • 2 : RQ_REQ(request 큐)

    • 3 : RQ_RPLY(reply 큐)

  • 반환값

    반환값 설명

    서브큐 이름

    함수 호출에 성공한 경우이다.

    NULL

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

3.18. OnTptobackup

클라이언트가 Tmax 백업 시스템으로 연결하는 함수로 내부적으로 tptobackup를 호출한다. 함수를 사용하려면 TMAX_BACKUP_ADDR과 TMAX_BACKUP_PORT가 설정되어 있어야 한다.

  • 프로토타입

    OnTptobackup()
  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnTpstart()

4. FDL 인터페이스 메소드

4.1. OnFballoc

필드 버퍼의 크기를 계산한 후 메모리를 할당하는 함수로 내부적으로 fballoc를 호출한다.

  • 프로토타입

    OnFballoc(VARIANT count, VARIANT len)
  • 파라미터

    파라미터 설명

    count

    데이터를 저장할 필드의 개수이다.

    len

    데이터의 전체 크기이다. (단위 : Byte)

  • 반환값

    반환값 설명

    할당한 메모리의 포인터

    함수 호출에 성공한 경우이다.

    NULL

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbcalcsize(), OnTpalloc()

4.2. OnFbcalcsize

OnTpalloc()으로 필드 버퍼를 메모리에 할당받을 때 적정한 메모리를 할당받기 위하여 사전에 필드 버퍼의 크기를 계산하는 함수로 내부적으로 fbcalcsize를 호출한다.

  • 프로토타입

    OnFbcalcsize(VARIANT count, VARIANT datalen)
  • 파라미터

    파라미터 설명

    count

    데이터를 저장할 필드의 개수이다.

    datalen

    필드 버퍼의 전체 데이터 크기를 Byte 단위로 지정한다.

  • 반환값

    주어진 count 와 datalen에 근거하여 필드 버퍼의 크기를 Byte 단위로 반환한다.

  • 관련함수

    OnFballoc(), OnTpalloc()

4.3. OnFbdelall

필드 버퍼에서 지정한 필드키의 전체 데이터를 삭제하는 함수로 내부적으로 fbdelall를 호출한다.

  • 프로토타입

    OnFbdelall(VARIANT fbuf, VARIANT fldkey)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

  • 반환값

    반환값 설명

    삭제한 필드 개수

    함수 호출에 성공한 경우이다.

    -1

    지정한 필드키를 필드 버퍼에서 찾지 못한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

4.4. OnFbdelete

필드 버퍼에 지정한 필드키의 필드 순번에 해당되는 데이터를 삭제하는 함수로 내부적으로 fbdelete를 호출한다.

  • 프로토타입

    OnFbdelete(VARIANT fbuf, VARIANT fldkey, VARIANT nth)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    nth

    필드 순번이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbupdate(), OnFbinsert()

4.5. OnFbfldcount

필드 버퍼 내에 있는 모든 필드의 수를 반환하는 함수로 내부적으로 fbfldcount를 호출한다.

  • 프로토타입

    OnFbfldcount(VARIANT fbuf)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

  • 반환값

    지정한 필드 버퍼에서 현재 저장되어 있는 필드의 수를 반환하고, 필드 버퍼에 저장되어 있는 필드가 없는 경우에는 0을 반환한다.

4.6. OnFbfree

필드 버퍼의 메모리를 해제하는 함수로 내부적으로 fbfree를 호출한다.

  • 프로토타입

    OnFbfree(VARIANT fbuf)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    필드 버퍼를 해제하는데 실패한 경우이다. (OnGetfberrno()를 호출하여 에러값을 가져올 수 있다.

  • 관련함수

    OnFballoc(), OnTpalloc(), OnTpfree()

4.7. OnFbget

필드 버퍼에서 필드키에 해당되는 필드 데이터를 반환하는 함수로 내부적으로 fbget을 호출한다.

  • 프로토타입

    OnFbget(VARIANT fbuf, VARIANT fldkey, VARIANT *loc, VARIANT *fldlen)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    loc

    필드 데이터를 받아올 버퍼로 반드시 OnTpalloc으로 할당된 버퍼이어야 한다.

    fldlen

    받아 온 필드 데이터의 길이이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbput(), OnFbgett()

4.8. OnFbget_fbsize

필드 버퍼의 크기를 반환하는 함수로 내부적으로 fbfree를 호출한다.

  • 프로토타입

    OnFbget_fbsize(VARIANT fbuf)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

  • 반환값

    메모리에 할당된 필드 버퍼의 크기를 반환한다.

  • 관련함수

    OnFballoc(), OnTpalloc()

4.9. OnFbget_fldkey

지정한 필드명과 일치하는 필드키를 반환하는 함수로 내부적으로 fbget_fldkey를 호출한다.

  • 프로토타입

    OnFbget_fldkey(VARIANT name)
  • 파라미터

    파라미터 설명

    name

    알고 싶은 필드키의 필드명이다.

  • 반환값

    반환값 설명

    필드키

    함수 호출에 성공한 경우이다.

    0

    지정한 필드명이 필드 테이블에 존재하지 않는 경우이다.

  • 관련함수

    OnFbget_fldname(), OnFbget_fldtype()

4.10. OnFbget_fldname

지정한 필드키와 일치하는 필드명을 반환하는 함수로 내부적으로 fbget_fldkey를 호출한다.

  • 프로토타입

    OnFbget_fldname(VARIANT fldkey)
  • 파라미터

    파라미터 설명

    fldkey

    알고 싶은 필드명의 필드키이다.

  • 반환값

    반환값 설명

    지정한 필드키와 일치하는 필드명

    함수 호출에 성공한 경우이다.

    NULL

    지정한 필드키에 대한 필드명이 필드 테이블에 존재하지 않을 경우이다.

  • 관련함수

    OnFbget_fldkey(), OnFbget_fldtype()

4.11. OnFbget_fldtype

지정한 필드키의 필드 타입을 정수로 반환하는 함수로 내부적으로 fbget_fldtype를 호출한다.

  • 프로토타입

    OnFbget_fldtype(VARIANT fldkey)
  • 파라미터

    파라미터 설명

    fldkey

    필드키이다.

  • 반환값

    반환값 필드 타입

    1

    character

    2

    short integer

    3

    integer

    4

    long integer

    5

    float

    6

    double

    7

    string

    8

    character array(CARRAY)

  • 관련함수

    OnFbget_fldkey(), OnFbget_fldname()

4.12. OnFbget_strfldtype

지정한 필드키의 필드 타입을 문자열로 반환하는 함수로 내부적으로 fbget_strfldtype를 호출한다.

  • 프로토타입

    OnFbget_strfdltype(VARIANT fldkey)
  • 파라미터

    파라미터 설명

    fldkey

    필드키이다.

  • 반환값

    반환값 설명

    빈 문자열

    파라미터로 받은 필드키에 해당하는 필드 타입이 없거나 필드키가 잘못 지정된 경우이다.

    문자열

    파라미터로 받은 필드키에 해당하는 필드 타입이 존재할 경우 해당 필드 타입을 문자열로 반환한다.

  • 관련함수

    OnFbget_fldtype()

4.13. OnFbget_unused

메모리에 할당된 필드 버퍼 중 아직 사용되지 않은 필드 버퍼의 크기를 계산하는 함수로 내부적으로 fbget_unused를 호출한다.

  • 프로토타입

    OnFbget_unused(VARIANT fbuf)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

  • 반환값

    메모리에 할당된 필드 버퍼 중 아직 사용되지 않은 메모리의 크기를 Byte 단위로 반환한다.

  • 관련함수

    OnFbget_used()

4.14. OnFbget_used

메모리에 할당된 필드 버퍼 중 아직 사용 중인 필드 버퍼의 크기를 계산하는 함수로 내부적으로 fbget_used를 호출한다.

  • 프로토타입

    OnFbget_used(VARIANT fbuf)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

  • 반환값

    메모리에 할당된 필드 버퍼 중 아직 사용 중인 메모리의 크기를 Byte 단위로 반환한다.

  • 관련함수

    OnFbget_unused()

4.15. OnFbgetc

필드 버퍼에 저장되어 있는 필드 데이터를 지정한 타입으로 변환하여 순차적으로 반환하는 함수로 내부적으로 fbgetc를 호출한다.

  • 프로토타입

    OnFbgetc(VARIANT fbuf, VARIANT fldkey, VARIANT *loc, VARIANT *len, VARIANT *pos,
             VARIANT totype)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    loc

    필드 데이터를 받아 올 버퍼로 반드시 OnTpalloc으로 할당된 버퍼이어야 한다.

    fldlen

    받아 온 필드 데이터의 길이이다.

    pos

    읽어 올 다음 데이터의 위치이다.

    totype

    받아 온 필드 데이터를 변환하고자 하는 타입이다. 다음의 타입을 사용할 수 있다.

    • FB_CARRAY(8)

    • FB_SHORT(2)

    • FB_DOUBLE(6)

    • FB_LONG(4)

    • FB_STRING(7)

    • FB_CHAR(1)

    • FB_FLOAT(5)

    • FB_INT(3)

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    지정한 필드키를 필드 버퍼에서 찾지 못한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbget(), OnFbgetf()

4.16. OnFbgetf

필드 버퍼에 저장되어 있는 필드 데이터를 순차적으로 반환하는 함수로 내부적으로 fbgetf를 호출한다.

  • 프로토타입

    OnFbgetf(VARIANT fbuf, VARIANT fldkey, VARIANT *loc, VARIANT *fldlen,
             VARIANT *pos)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    loc

    필드 데이터를 받아올 버퍼로 반드시 OnTpalloc으로 할당된 버퍼이어야 한다.

    fldlen

    받아 온 필드 데이터의 길이이다.

    pos

    읽어 올 다음 데이터의 위치이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    지정한 필드키를 필드 버퍼에서 찾지 못한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbget(), OnFbgetc()

4.17. OnFbgetnth

지정한 필드키에 저장되어 있는 필드 데이터 중 지정한 데이터가 저장되어 있는 필드 개수을 반환하는 함수로 내부적으로 fbgetnth를 호출한다.

  • 프로토타입

    OnFbgetnth(VARIANT fbuf, VARIANT fldkey, VARIANT value, VARIANT len)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    value

    비교할 데이터이다.

    len

    비교할 데이터의 길이이다.

  • 반환값

    반환값 설명

    필드의 순번

    함수 호출에 성공한 경우이다.

    -1

    지정한 필드키의 필드 순번이 필드 버퍼에 존재하지 않는 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

4.18. OnFbgetntht

지정한 필드키에 저장되어 있는 필드 데이터 중 지정한 데이터가 저장되어 있는 필드 순번을 반환하는 함수로 내부적으로 fbgetntht를 호출한다.

  • 프로토타입

    OnFbgetntht(VARIANT fbuf, VARIANT fldkey, VARIANT value, VARIANT len,
                VARIANT fromtype)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    value

    비교할 데이터이다.

    len

    비교할 데이터의 길이이다.

    fromtype

    필드 타입을 의미한다. 사용자가 fromtype에서 지정한 데이터 타입과 fldkey에서 지정한 필드키의 필드 타입이 같지 않은 경우 value의 데이터 타입을 필드 타입으로 변환한 후 value, fldlen, 필드 타입이 일치하는 필드 순번을 찾아서 반환한다.

    다음의 필드 타입을 사용할 수 있다.

    • FB_CHAR(1)

    • FB_SHORT(2)

    • FB_INT(3)

    • FB_LONG(4)

    • FB_FLOAT(5)

    • FB_DOUBLE(6)

    • FB_STRING(7)

    • FB_CARRAY(8)

  • 반환값

    반환값 설명

    필드의 순번

    함수 호출에 성공한 경우이다.

    -1

    지정한 필드키의 필드 순번이 필드 버퍼에 존재하지 않는 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbgetntht()

4.19. OnFbgetval

필드 버퍼에 지정한 필드키의 필드 순번에 해당하는 필드 데이터를 반환하는 함수로 내부적으로 fbgetval을 호출한다.

  • 프로토타입

    OnFbgetval(VARIANT fbuf, VARIANT fldkey, VARIANT nth, VARIANT *len)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    nth

    필드 순번이다.

    len

    읽어 올 데이터의 길이이다.

  • 반환값

    반환값 설명

    문자열

    함수 호출에 성공한 경우이다.

    NULL

    지정한 필드키의 필드 순번이 필드 버퍼에 존재하지 않는 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbgetvalt(), OnFbgetvals(), OnFbgetvali()

4.20. OnFbgetvali

지정한 필드키의 필드 순번에 해당하는 필드 데이터를 정수로 변환하여 반환하는 함수로 내부적으로 fbgetvali를 호출한다.

  • 프로토타입

    OnFbgetvali(VARIANT fbuf, VARIANT fldkey, VARIANT nth)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    nth

    필드 순번이다.

  • 반환값

    반환값 설명

    정수

    함수 호출에 성공한 경우이다.

    -1

    필드 버퍼에서 지정한 필드키를 찾지 못하였을 경우 또는 함수 수행 중 다른 에러가 발생한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbgetvalt(), OnFbgetvals(), OnFbgetval()

4.21. OnFbgetvals

지정한 필드키의 필드 순번에 해당하는 필드 데이터를 문자열로 변환하여 반환하는 함수로 내부적으로 fbgetvals를 호출한다.

  • 프로토타입

    OnFbgetvals(VARIANT fbuf, VARIANT fldkey, VARIANT nth)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    nth

    필드 순번이다.

  • 반환값

    반환값 설명

    문자열

    함수 호출에 성공한 경우이다.

    NULL

    필드 버퍼에서 지정한 필드키를 찾지 못하였을 경우 또는 함수 수행 중 다른 에러가 발생한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbgetvalt(), OnFbgetval(), OnFbgetvali()

4.22. OnFbgetvalt

지정한 필드키의 필드 순번에 해당하는 필드 데이터를 지정한 타입으로 변환하여 반환하는 함수로 내부적으로 fbgetvalt를 호출한다.

  • 프로토타입

    OnFbgetvalt(VARIANT fbuf, VARIANT fldkey, VARIANT nth, VARIANT *len,
                VARIANT totype)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    nth

    필드 순번이다.

    len

    읽어 올 데이터의 길이이다.

    type

    읽어 올 필드 데이터를 변환하고자 하는 타입이다.

    다음의 필드 타입을 사용할 수 있다.

    • FB_CHAR(1)

    • FB_SHORT(2)

    • FB_INT(3)

    • FB_LONG(4)

    • FB_FLOAT(5)

    • FB_DOUBLE(6)

    • FB_STRING(7)

    • FB_CARRAY(8)

  • 반환값

    반환값 설명

    문자열

    함수 호출에 성공한 경우이다.

    NULL

    지정한 필드키의 필드 순번이 필드 버퍼에 존재하지 않는 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbgetval(), OnFbgetvals(), OnFbgetvali()

4.23. OnFbinit

필드 버퍼를 초기화하는 함수로 내부적으로 fbinit를 호출한다.

  • 프로토타입

    OnFbinit(VARIANT fbuf, VARIANT len)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    len

    초기화하려는 버퍼의 크기이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    필드 버퍼를 초기화하는데 실패한 경우이다. OnGetfberrno()를 호출하여 에러값을 가져올 수 있다.

4.24. OnFbinsert

필드 버퍼에 지정한 필드키의 필드 순번에 데이터를 저장하는 함수로 내부적으로 fbinsert를 호출한다.

  • 프로토타입

    OnFbinsert(VARIANT fbuf, VARIANT fldkey, VARIANT nth, VARIANT value,
               VARIANT fldlen)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    nth

    필드 순번이다.

    value

    추가할 데이터이다.

    fldlen

    추가할 데이터의 길이이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbdelete(), OnFbupdate()

4.25. OnFbisfbuf

지정한 필드 버퍼가 유효한지(OnFballoc 또는 OnTpalloc으로 버퍼를 할당받은 변수인지) 확인하는 함수로 내부적으로 fbisfbuf를 호출한다.

  • 프로토타입

    OnFbisfbuf(VARIANT fbuf)
  • 파라미터

    파라미터 설명

    fbuf

    검사하려는 변수를 의미한다.

  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    1

    지정한 필드 버퍼가 유효한 경우이다.

  • 관련함수

    OnFballoc(), OnTpalloc()

4.26. OnFbispres

필드 버퍼에 지정한 필드키의 필드 순번에 필드 데이터가 존재하는지 확인하는 함수로 내부적으로 fbispres를 호출한다.

  • 프로토타입

    OnFbispres(VARIANT fbuf, VARIANT fldkey, VARIANT nth)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    nth

    필드 순번이다.

  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    1

    필드 버퍼에서 지정한 필드키의 필드 순번에 필드 데이터가 존재하는 경우이다.

4.27. OnFbkeynm_unload

메모리로 로딩된 FDL 파일을 새로 로딩하는 경우 이 함수를 호출할 수 있다. 이 함수를 호출하면 기존에 메모리로 로딩된 데이터는 삭제되고 환경변수인 FDLFILE에 설정된 파일이 메모리에 로딩된다. 함수 내부적으로 fbkeynm_unload를 호출한다.

  • 프로토타입

    OnFbkeynm_unload()
  • 관련함수

    OnFbnmkey_unload

4.28. OnFbkeyoccur

필드 버퍼에서 지정한 필드키의 필드 순번을 반환하는 함수로 내부적으로 fbkeyoccur를 호출한다.

  • 프로토타입

    OnFbkeyoccur(VARIANT fbuf, VARIANT fldkey)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

  • 반환값

    반환값 설명

    필드의 개수

    함수 호출에 성공한 경우이다.

    0

    필드 버퍼에 지정한 필드키에 저장된 필드 데이터가 없을 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

    -1

    함수 호출에 실패할 경우이다.

4.29. OnFbmake_fldkey

새로운 필드키를 동적으로 생성하는 함수로 내부적으로 fbmake_fldkey를 호출한다.

  • 프로토타입

    OnFbmake_fldkey(VARIANT type, VARIANT no)
  • 파라미터

    파라미터 설명

    type

    생성하고자 하는 필드의 필드 타입으로, 다음의 필드 타입을 사용할 수 있다.

    • FB_CHAR(1)

    • FB_SHORT(2)

    • FB_INT(3)

    • FB_LONG(4)

    • FB_FLOAT(5)

    • FB_DOUBLE(6)

    • FB_STRING(7)

    • FB_CARRAY(8)

    no

    생성하고자 하는 필드의 번호를 의미한다.

  • 반환값

    반환값 설명

    필드키

    지정된 type과 no를 조합하여 새로운 필드키를 생성할 경우이다.

    문자열

    파라미터로 받은 필드키에 해당하는 필드 타입이 존재할 경우이다.

4.30. OnFbnmkey_unload

메모리로 로딩된 FDL 파일을 새로 로딩하는 경우 함수를 호출할 수 있다. 이 함수를 호출하면 기존에 메모리로 로딩된 데이터는 삭제되고 환경변수인 FDLFILE에 설정된 파일이 메모리에 로딩된다. 함수 내부적으로 fbnmkey_unload를 호출한다.

  • 프로토타입

    OnFbnmkey_unload()
  • 관련함수

    OnFbkeynm_unload

4.31. OnFbput

필드 버퍼에 새로운 필드를 추가하는 함수로 내부적으로 fbput를 호출한다.

  • 프로토타입

    OnFbput(VARIANT fbuf, VARIANT fldkey, VARIANT value, VARIANT fldlen)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    value

    추가할 데이터를 의미한다.

    fldlen

    추가할 데이터의 길이이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbget(), OnFbputt()

4.32. OnFbputt

필드 버퍼에 데이터를 지정한 타입으로 변환한 후 새로운 필드를 추가하여 저장하는 함수로 내부적으로 fbputt를 호출한다.

  • 프로토타입

    OnFbputt(VARIANT fbuf, VARIANT fldkey, VARIANT value, VARIANT len, VARIANT type)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    value

    추가할 데이터이다.

    len

    추가할 데이터의 길이이다.

    type

    사용자가 지정한 데이터형으로 데이터가 필드에 저장되기 전에 여기에서 지정한 type에서 필드키의 타입으로 변환된다.

    type에 지정할 수 있는 값은 다음과 같다.

    • FB_CHAR(1)

    • FB_SHORT(2)

    • FB_INT(3)

    • FB_LONG(4)

    • FB_FLOAT(5)

    • FB_DOUBLE(6)

    • FB_STRING(7)

    • FB_CARRAY(8)

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    필드 버퍼에 필드를 추가하는 데 실패할 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbput()

4.33. OnFbrealloc

필드 버퍼를 메모리에 다시 할당하는 함수로 내부적으로 fbget_used를 호출한다.

  • 프로토타입

    OnFbrealloc(VARIANT fbuf, VARIANT ncount, VARIANT nlen)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    ncount

    데이터를 저장할 필드의 개수이다.

    nlen

    데이터의 전체 크기이다. (단위: Byte)

  • 반환값

    반환값 설명

    할당된 메모리 포인터

    함수 호출에 성공한 경우이다.

    NULL

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFballoc(), OnTpalloc()

4.34. OnFbstrerror

필드 버퍼를 조작할 때 에러 내용을 문자열로 반환하는 함수로 내부적으로 fbstrerror를 호출한다.

  • 프로토타입

    OnFbstrerror(VARIANT err_no)
  • 파라미터

    파라미터 설명

    err_no

    에러값을 의미한다.

  • 반환값

    반환값 설명

    문자열

    함수 호출에 성공한 경우이다.

    NULL

    함수 호출에 실패한 경우이다.

  • 관련함수

    OnFbcalcsize(), OnTpalloc()

4.35. OnFbtypecvt

지정한 필드 데이터를 지정한 타입으로 데이터형을 변환하여 반환하는 함수로 내부적으로 fbtypecvt를 호출한다.

  • 프로토타입

    OnFbtypecvt(VARIANT *tolen, VARIANT totype, VARIANT fromval, VARIANT fromtype,
                VARIANT fromlen)
  • 파라미터

    파라미터 설명

    tolen

    변환된 데이터의 길이이다.

    totype

    변환하려는 데이터의 타입이다.

    fromval

    변환하려는 원 데이터이다.

    fromtype

    변환하려는 원 데이터의 타입이다.

    fromlen

    변환하려는 원 데이터의 길이이다.

  • 반환값

    반환값 설명

    변환된 데이터 포인터

    함수 호출에 성공한 경우이다.

    NULL

    데이터를 변환하는 데 실패할 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

4.36. OnFbupdate

필드 버퍼에 지정한 필드키의 필드 순번에 해당되는 데이터를 변경하는 함수로 내부적으로 fbupdate를 호출한다.

  • 프로토타입

    OnFbupdate(VARIANT fbuf, VARIANT fldkey, VARIANT nth, VARIANT value,
               VARIANT fldlen)
  • 파라미터

    파라미터 설명

    fbuf

    OnTpalloc 또는 OnFballoc으로 할당된 버퍼 포인터이다.

    fldkey

    필드키이다.

    nth

    필드 순번이다.

    value

    변경할 데이터이다.

    fldlen

    변경할 데이터의 길이이다.

  • 반환값

    반환값 설명

    1

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다. OnGettperrno()를 호출해서 에러값을 가져온다.

  • 관련함수

    OnFbdelete(), OnFbinsert()

4.37. OnGetfberrno

필드 버퍼와 관련된 API 함수를 수행하는 도중에 에러가 발생하였을 경우 에러값을 반환하는 함수로 내부적으로 getfberrno를 호출한다.

  • 프로토타입

    OnGetfberrno()
  • 반환값

    현재 fberror에 설정된 값을 반환한다.

  • 관련함수

    OnGetfberror()

4.38. OnGetfberror

필드 버퍼와 관련된 API 함수를 수행하는 도중에 에러가 발생하였을 경우 에러값을 반환하는 함수로 내부적으로 getfberror를 호출한다.

  • 프로토타입

    OnGetfberror()
  • 반환값

    현재 fberror에 설정된 값을 반환한다.

  • 관련함수

    OnGetfberrno()

5. Tx 인터페이스 메소드

5.1. OnTx_begin

전역 트랜잭션을 시작하는 함수로 내부적으로 tx_begin를 호출한다.

  • 프로토타입

    OnTx_begin()
  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    음수

    함수 호출에 실패한 경우이다.

  • 관련함수

    OnTx_commit(), OnTx_rollback(), OnTx_set_transaction_timeout()

5.2. OnTx_commit

전역 트랜잭션을 Commit하는 함수로 내부적으로 tx_commit를 호출한다.

  • 프로토타입

    OnTx_commit()
  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    음수

    함수 호출에 실패한 경우이다.

  • 관련함수

    OnTx_begin(), OnTx_rollback(), OnTx_set_transaction_timeout()

5.3. OnTx_rollback

전역 트랜잭션을 Rollback하는 함수로 내부적으로 tx_rollback를 호출한다.

  • 프로토타입

    OnTx_rollback()
  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    음수

    함수 호출에 실패한 경우이다.

  • 관련함수

    OnTx_begin(), OnTx_commit(), OnTx_set_transaction_timeout()

5.4. OnTx_set_transaction_timeout

전역 트랜잭션의 Timeout을 설정하는 함수로 내부적으로 tx_set_transaction_timeout을 호출한다.

  • 프로토타입

    OnTx_set_transaction_timeout(VARIANT timeout)
  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

  • 관련함수

    OnTx_begin(), OnTx_commit(), OnTx_rollback()

6. 예제 프로그램

계정번호를 키값으로 지사번호, 전화번호, 주소를 조회, 수정, 삭제 및 입력하는 프로그램이며 사용되는 버퍼는 필드키 버퍼를 사용하였다.

6.1. 프로그램 구성

프로그램은 다음과 같이 구성된다.

프로그램 파일 설명

TmaxTestTx.asp

메인화면이다.

insert.asp

[INSERT] 버튼이 선택되면 Tmax로 요청한 후 결과를 받아서 TmaxTestTx.asp로 결과값을 전달한다.

update.asp

[UPDATE] 버튼이 선택되면 Tmax로 요청한 후 결과를 받아서 TmaxTestTx.asp로 결과값을 전달한다.

delete.asp

[DELETE] 버튼이 선택되면 Tmax로 요청한 후 결과를 받아서 TmaxTestTx.asp로 결과값을 전달한다.

select.asp

[SELECT] 버튼이 선택되면 Tmax로 요청한 후 결과를 받아서 TmaxTestTx.asp로 결과값을 전달한다.

6.2. 프로그램 특징

다음은 프로그램의 특징이다.

  • 클라이언트 프로그램

    기능 설명

    Tmax Library 연결

    Tmaxcom.Atmi, Tmaxcom.Etc, Tmaxcom.Fdl, Tmaxcom.Tx를 항목에 추가한다.

    버퍼 유형

    FIELD KEY 버퍼, 필드키 파일을 fdlc 유틸리티로 컴파일하여 'fdl' 파일의 생성이 필요하다.

    통신 유형

    OnTpcall()을 이용해서 동기 통신을 한다.

    트랜잭션 여부

    조회, 수정, 삭제, 입력을 수행할 경우 모두 트랜잭션으로 처리한다.

    Tmax 연결

    각각의 서비스를 수행할 때마다 접속 후, 서비스를 완료할 경우 접속 해제한다.

  • 서버 프로그램

    기능 설명

    서비스

    SELECT, UPDATE, DELETE, INSERT를 작성한다.

    데이터베이스 지정

    Oracle 데이터베이스를 사용한다. 시스템 구성 파일의 SVRGROUP에 데이터베이스 정보를 지정한다( XA 방식).

6.3. 클라이언트 프로그램

메인화면

프로그램을 실행하기 전에 윈도우의 실행 창에서 <regsvr32 tmaxcomcli.dll>을 실행한다.

프로그램을 실행하면 다음과 같은 화면이 나타난다. 버튼은 [INSERT], [UPDATE], [DELETE], [SELECT]로 구성되어 원하는 버튼을 클릭할 수 있다.

image

입출력 관리

다음은 계정번호를 통한 입출력관리 예제이다.

<Tmaxtest.asp>

<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<%
      Dim retStr
      Dim retAccount
      Dim retBranch
      Dim retPhone
      Dim retAddr
      retStr = request("retStr")
      retAccount = request("retAccount")
      retBranch = request("retBranch")
      retPhone = request("retPhone")
      retAddr = request("retAddr")
%>
<script language="javascript">
   function insertPage(){
        var accountValue = document.form1.taccount_id.value;
        var branchValue = document.form1.tbranch_id.value;
        var phoneValue = document.form1.tphone.value;
        var addrValue = document.form1.taddr.value;
        location.href="insert.asp?taccount_id="+accountValue+"&tbranch_id=
                     "+branchValue+"&tphone="+phoneValue+"&taddr="+addrValue;
   }
   function updatePage(){
        var accountValue = document.form1.taccount_id.value;
        var branchValue = document.form1.tbranch_id.value;
        var phoneValue = document.form1.tphone.value;
        var addrValue = document.form1.taddr.value;
        location.href="update.asp?taccount_id="+accountValue+"&tbranch_id=
                      "+branchValue+"&tphone="+phoneValue+"&taddr="+addrValue;
   }
   function deletePage(){
        var accountValue = document.form1.taccount_id.value;
        location.href="delete.asp?taccount_id="+accountValue;
   }
   function selectPage(){
        var accountValue = document.form1.taccount_id.value;
        location.href="select.asp?taccount_id="+accountValue;
   }
</script>
<BODY>
<form action="" name="form1" method="get">
<TABLE>
<TR>
      <TD colspan=2>계정번호</TD>
      <TD colspan=2><INPUT TYPE="text" NAME="taccount_id"></TD>
</TR>
<TR>
      <TD colspan=2>지사번호</TD>
      <TD colspan=2><INPUT TYPE="text" NAME="tbranch_id" value="<%if retBranch<> ""
                 then response.write retBranch else response.write "" end if %>">
                 </TD>
</TR>
<TR>
      <TD colspan=2>전화번호</TD>
      <TD colspan=2><INPUT TYPE="text" NAME="tphone" value="<%if retPhone<> ""
                 then response.write retPhone else response.write "" end if %>">
                 </TD>
</TR>
<TR>
      <TD colspan=2>주소</TD>
      <TD colspan=2><INPUT TYPE="text" NAME="taddr" value="<%if retAddr<> ""
                 then response.write retAddr else response.write "" end if %>"></TD>
</TR>
<TR>
      <TD colspan=2>결과값</TD>
      <TD colspan=2><INPUT TYPE="text" NAME="trval" value="<%if retStr<> ""
                 then response.write retStr else response.write "" end if %>"></TD>
</TR>
<TR>
      <TD>
         <INPUT TYPE="button" NAME="insert" value="INSERT" onclick="insertPage();">
      </TD>
      <TD>
        <INPUT TYPE="button" NAME="update" value="UPDATE" onclick="updatePage();">
     </TD>
      <TD >
        <INPUT TYPE="button" NAME="delete" value="DELETE" onclick="deletePage();">
      </TD>
      <TD>
        <INPUT TYPE="button" NAME="select" value="SELECT" onclick="selectPage();">
      </TD>
</TR>
</TABLE></form>

</BODY>
</HTML>
INSERT 버튼 실행 스크립트

다음은 [INSERT] 버튼의 예제이다.

<insert.asp>

<%
      Dim file
      Dim label
      Dim tmp
      'Tmax와 통신하기 위한 변수
      Dim fbuf
      'INSERT 서비스에서 fbuf에 담아온 값을 읽기 위한 변수
      Dim retStr
      'TmaxTestTx.asp에서 받아 온 값을 담을 변수
      Dim taccount_id
      Dim tranch_id
      Dim tphone
      Dim taddr

      Dim rlen
      Dim rVal
      Dim errno

      'TmaxTestTx.asp에서 받아 온 값을 설정한다.
      taccount_id = request("taccount_id")
      tbranch_id = request("tbranch_id")
      tphone = request("tphone")
      taddr = request("taddr")

      '인터페이스의 Object를 생성한다.
      Set objAtmi = Server.CreateObject("Tmaxcom.Atmi")
      Set objFdl = Server.CreateObject("Tmaxcom.Fdl")
      Set objEtc = Server.CreateObject("Tmaxcom.Etc")
      Set objTx = Server.CreateObject("Tmaxcom.Tx")
      ...
      file = "C:\\Inetpub\\wwwroot\\tmax.env"
      label = "TMAXC1"

      'Tmax와 연결하기 위해 OnTmaxreadenv로 환경변수를 읽어 온다.
      rVal = objEtc.OnTmaxreadenv (file, label)
      if rVal < 0 then
         error processing
         ...
      end if
      'Tmax와 OnTpstart로 연결한다.
      tmp = ""
      rVal = objAtmi.OnTpstart (tmp, tmp, tmp, tmp, CINT(0))
      if rVal < 0 then
         error processing
         ...
      end if
      '버퍼를 OnTpalloc으로 할당한다.
      '보낼 버퍼/받을 버퍼
      fbuf = objAtmi.OnTpalloc ("FIELD", "", CINT(0))
      '필드 데이터를 가져올 버퍼
      retStr = objAtmi.OnTpalloc ("STRING", "", CINT(0))

      '보낼 버퍼에 필드 데이터를 넣는다.
      'INSERT_ID        ((FLDKEY)201327592) /* number: 1000 type: int */
      'BRANCH_ID        ((FLDKEY)201327593) /* number: 1001 type: int */
      'PHONE        ((FLDKEY)469763050) /* number: 1002 type: string */
      'ADDRESS        ((FLDKEY)469763051) /* number: 1003 type: string */
      rVal = objFdl.OnFbput (fbuf, "201327592", taccount_id, CINT("0"))
      if rVal < 0 then
         error processing
         ...
      end if
      rVal = objFdl.OnFbput (fbuf, "201327593", tbranch_id, CINT("0"))
      if rVal < 0 then
         error processing
         ...
      end if
      rVal = objFdl.OnFbput (fbuf, "469763050", tphone, CINT("0"))
      if rVal < 0 then
         error processing
         ...
      end if
      rVal = objFdl.OnFbput (fbuf, "469763051", taddr, CINT("0"))
      if rVal < 0 then
         error processing
         ...
      end if

      '트랜잭션을 시작한다.
      rVal = objTx.OnTx_begin()
      if rVal < 0 then
         error processing
         ...
      end if

      'Tmax로 INSERT 서비스를 요청한다.
      rVal = objAtmi.OnTpcall ("INSERT", fbuf, CINT(0), fbuf, rlen, CINT("0"))
      if rVal < 0 then
         error processing
         ...
        rVal = objTx.OnTx_rollback()
        if rVal < 0 then
           error processing
           ...
        end if
        'Tmax와의 연결을 해제한다.
        ...
      else
        rVal = objTx.OnTx_commit()
        if rVal < 0 then
           error processing
           ...
        end if
      end if

      'OnTpcall의 결과로 받아 온 fbuf에서 RESULT 필드의 내용을 가져온다.
      'RESULT ((FLDKEY)469764048) /* number: 2000 type: string */
      rVal = objFdl.OnFbget (fbuf, "469764048", retStr, rlen)
      if rVal < 0 then
         error processing
         ...
      end if

      'RESULT 필드의 내용이 담긴 버퍼에서 실제 내용을 가져온다.
      rVal = objAtmi.OnTpget (retStr, tmp)
      if rVal < 0 then
         error processing
         ...
      end if

      '버퍼를 해제한다.
      objAtmi.OnTpfree(fbuf)
      objAtmi.OnTpfree(retStr)

      'Tmax와의 연결을 해제한다.
      rVal = objAtmi.OnTpend()
      if rVal < 0 then
         error processing
         ...
      end if

      'Object를 해제한다.
      Set objAtmi = nothing
      Set objFdl = nothing
      Set objEtc = nothing
      Set objTx = nothing

      response.redirect "TmaxTestTx.asp?retStr="&tmp
%>
UPDATE 버튼 실행 스크립트

다음은 [UPDATE] 버튼의 예제이다.

<update.asp>

<%
      Dim file
      Dim label
      Dim tmp
      'Tmax와 통신하기 위한 변수
      Dim fbuf
      'UPDATE 서비스에서 fbuf에 담아온 값을 읽기 위한 변수
      Dim retStr
      'TmaxTestTx.asp에서 받아 온 값을 담을 변수
      Dim taccount_id
      Dim tranch_id
      Dim tphone
      Dim taddr

      Dim rlen
      Dim rVal
      Dim errno

      'TmaxTestTx.asp에서 받아 온 값을 설정한다.
      taccount_id = request("taccount_id")
      tbranch_id = request("tbranch_id")
      tphone = request("tphone")
      taddr = request("taddr")

      '인터페이스의 Object를 생성한다.
      Set objAtmi = Server.CreateObject("Tmaxcom.Atmi")
      Set objFdl = Server.CreateObject("Tmaxcom.Fdl")
      Set objEtc = Server.CreateObject("Tmaxcom.Etc")
      Set objTx = Server.CreateObject("Tmaxcom.Tx")
%>
<script language="javascript">
        alert("taccount_id[<%=taccount_id%>] tbranch_id[<%=tbranch_id%>]
               thpone[<%=tphone%>] taddr[<%=taddr%>]");
</script>
<%
      file = "C:\\Inetpub\\wwwroot\\tmax.env"
      label = "TMAXC1"

      'Tmax와 연결하기 위해 OnTmaxreadenv로 환경변수를 읽어 온다.
      rVal = objEtc.OnTmaxreadenv (file, label)
      if rVal < 0 then
         error processing
         ...
      end if
      'Tmax와 OnTpstart로 연결한다.
      tmp = ""
      rVal = objAtmi.OnTpstart (tmp, tmp, tmp, tmp, CINT(0))
      if rVal < 0 then
         error processing
         ...
      end if
      '버퍼를 OnTpalloc으로 할당한다.
      '보낼 버퍼/받을 버퍼
      fbuf = objAtmi.OnTpalloc ("FIELD", "", CINT(0))
      '필드 데이터를 가져올 버퍼
      retStr = objAtmi.OnTpalloc ("STRING", "", CINT(0))

      '보낼 버퍼에 필드 데이터를 넣는다.
      'UPDATE_ID ((FLDKEY)201327596) /* number: 1004 type: int */
      'BRANCH_ID ((FLDKEY)201327593) /* number: 1001 type: int */
      'PHONE ((FLDKEY)469763050) /* number: 1002 type: string */
      'ADDRESS ((FLDKEY)469763051) /* number: 1003 type: string */
      rVal = objFdl.OnFbput(fbuf, "201327596", taccount_id, CINT("0"))
      if rVal < 0 then
         error processing
         ...
      end if
      rVal = objFdl.OnFbput(fbuf, "201327593", tbranch_id, CINT("0"))
      if rVal < 0 then
         error processing
         ...
      end if
      rVal = objFdl.OnFbput(fbuf, "469763050", tphone, CINT("0"))
      if rVal < 0 then
         error processing
         ...
      end if
      rVal = objFdl.OnFbput(fbuf, "469763051", taddr, CINT("0"))
      if rVal < 0 then
         error processing
         ...
      end if

      '트랜잭션을 시작한다.
      rVal = objTx.OnTx_begin()
      if rVal < 0 then
         error processing
         ...
      end if

      'Tmax로 UPDATE 서비스를 요청한다.
      rVal = objAtmi.OnTpcall("UPDATE", fbuf, CINT(0), fbuf, rlen, CINT("0"))
      if rVal < 0 then
         error processing
         ...
         if rVal < 0 then
            errno = objAtmi.OnGettperrno()
            response.write("OnTx_rollback fail["&rVal&"] ["&errno&"]")
         end if
         ...
      else
        rVal = objTx.OnTx_commit()
        if rVal < 0 then
           error processing
           ...
        end if
      end if

      'OnTpcall의 결과로 받아 온 fbuf에서 RESULT 필드의 내용을 가져온다.
      'RESULT ((FLDKEY)469764048) /* number: 2000 type: string */
      rVal = objFdl.OnFbget(fbuf, "469764048", retStr, rlen)
      if rVal < 0 then
         error processing
         ...
      end if

      'RESULT 필드의 내용이 담긴 버퍼에서 실제 내용을 가져온다.
      rVal = objAtmi.OnTpget (retStr, tmp)
      if rVal < 0 then
         error processing
         ...
      end if

      '버퍼를 해제한다.
      objAtmi.OnTpfree(fbuf)
      objAtmi.OnTpfree(retStr)

      'Tmax와의 연결을 해제한다.
      rVal = objAtmi.OnTpend()
      if rVal < 0 then
         error processing
         ...
      end if

      'Object를 해제한다.
      Set objAtmi = nothing
      Set objFdl = nothing
      Set objEtc = nothing
      Set objTx = nothing

      response.redirect "TmaxTestTx.asp?retStr="&tmp
%>
DELETE 버튼 실행 스크립트

다음은 [DELETE] 버튼의 예제이다.

<delete.asp>

<%
      Dim file
      Dim label
      Dim tmp
      'Tmax와 통신하기 위한 변수
      Dim fbuf
      'DELETE 서비스에서 fbuf에 담아온 값을 읽기 위한 변수
      Dim retStr
      'TmaxTestTx.asp에서 받아 온 값을 담을 변수
      Dim taccount_id

      Dim rlen
      Dim rVal
      Dim errno

      'TmaxTestTx.asp에서 받아 온 값을 설정한다.
      taccount_id = request("taccount_id")

      '인터페이스의 Object를 생성한다.
      Set objAtmi = Server.CreateObject("Tmaxcom.Atmi")
      Set objFdl = Server.CreateObject("Tmaxcom.Fdl")
      Set objEtc = Server.CreateObject("Tmaxcom.Etc")
      Set objTx = Server.CreateObject("Tmaxcom.Tx")
%>
<script language="javascript">
      alert("taccount_id[<%=taccount_id%>]");
</script>
<%
      file = "C:\\Inetpub\\wwwroot\\tmax.env"
      label = "TMAXC1"

      'Tmax와 연결하기 위해 OnTmaxreadenv로 환경변수를 읽어 온다.
      rVal = objEtc.OnTmaxreadenv (file, label)
      if rVal < 0 then
         error processing
         ...
      end if
      'Tmax와 OnTpstart로 연결한다.
      tmp = ""
      rVal = objAtmi.OnTpstart (tmp, tmp, tmp, tmp, CINT(0))
      if rVal < 0 then
         error processing
         ...
      end if
      '버퍼를 OnTpalloc으로 할당한다.
      '보낼 버퍼/받을 버퍼
      fbuf = objAtmi.OnTpalloc ("FIELD", "", CINT(0))
      '필드 데이터를 가져올 버퍼
      retStr = objAtmi.OnTpalloc ("STRING", "", CINT(0))

      '보낼 버퍼에 필드 데이터를 넣는다.
      'DELETE_ID ((FLDKEY)201327597) /* number: 1005 type: int */
      rVal = objFdl.OnFbput (fbuf, "201327597", taccount_id, CINT("0"))
      if rVal < 0 then
         error processing
         ...
      end if

      '트랜잭션을 시작한다.
      rVal = objTx.OnTx_begin()
      if rVal < 0 then
         error processing
         ...
      end if

      'Tmax로 DELETE 서비스를 요청한다.
      rVal = objAtmi.OnTpcall ("DELETE", fbuf, CINT(0), fbuf, rlen, CINT("0"))
      if rVal < 0 then
         error processing
         ...
         rVal = objTx.OnTx_rollback()
         if rVal < 0 then
            errno = objAtmi.OnGettperrno()
            response.write("OnTx_rollback fail["&rVal&"] ["&errno&"]")
         end if
         ...
      else
         rVal = objTx.OnTx_commit()
         if rVal < 0 then
            error processing
            ...
         end if
      end if

      'OnTpcall의 결과로 받아 온 fbuf에서 RESULT 필드의 내용을 가져온다.
      'RESULT ((FLDKEY)469764048) /* number: 2000 type: string */
      rVal = objFdl.OnFbget (fbuf, "469764048", retStr, rlen)
      if rVal < 0 then
         error processing
         ...
      end if

      'RESULT 필드의 내용이 담긴 버퍼에서 실제 내용을 가져온다.
      rVal = objAtmi.OnTpget (retStr, tmp)
      if rVal < 0 then
         error processing
         ...
      end if

      '버퍼를 해제한다.
      objAtmi.OnTpfree(fbuf)
      objAtmi.OnTpfree(retStr)

      'Tmax와의 연결을 해제한다.
      rVal = objAtmi.OnTpend()
      if rVal < 0 then
         error processing
         ...
      end if

      'Object를 해제한다.
      Set objAtmi = nothing
      Set objFdl = nothing
      Set objEtc = nothing
      Set objTx = nothing

      response.redirect "TmaxTestTx.asp?retStr="&tmp
%>
SELECT 버튼 실행 스크립트

다음은 [SELECT] 버튼의 예제이다.

<select.asp>

<%
      Dim file
      Dim label
      Dim tmp
      'Tmax와 통신하기 위한 변수
      Dim fbuf
      'DELETE 서비스에서 fbuf에 담아온 값을 읽기 위한 변수
      Dim str
      Dim branch
      Dim phone
      Dim addr
      'TmaxTestTx.asp에서 받아 온 값을 담을 변수
      Dim taccount_id
      'TmaxTestTx.asp에 값을 넘기기 위한 변수
      Dim retStr
      Dim retBranch
      Dim retPhone
      Dim retAddr

      Dim rlen
      Dim rVal
      Dim errno

      'TmaxTestTx.asp에서 받아 온 값을 설정한다.
      taccount_id = request("taccount_id")

      '인터페이스의 Object를 생성한다.
      Set objAtmi = Server.CreateObject("Tmaxcom.Atmi")
      Set objFdl = Server.CreateObject("Tmaxcom.Fdl")
      Set objEtc = Server.CreateObject("Tmaxcom.Etc")
      Set objTx = Server.CreateObject("Tmaxcom.Tx")
%>
<script language="javascript">
      alert("taccount_id[<%=taccount_id%>]");
</script>
<%
      file = "C:\\Inetpub\\wwwroot\\tmax.env"
      label = "TMAXC1"

      'Tmax와 연결하기 위해 OnTmaxreadenv로 환경변수를 읽어 온다.
      rVal = objEtc.OnTmaxreadenv (file, label)
      if rVal < 0 then
         error processing
         ...
      end if
      'Tmax와 OnTpstart로 연결한다.
      tmp = ""
      rVal = objAtmi.OnTpstart (tmp, tmp, tmp, tmp, CINT(0))
      if rVal < 0 then
         error processing
         ...
      end if
      '버퍼를 OnTpalloc으로 할당한다.
      '보낼 버퍼/받을 버퍼
      fbuf = objAtmi.OnTpalloc ("FIELD", "", CINT(0))
      '필드 데이터를 가져올 버퍼
      str = objAtmi.OnTpalloc ("STRING", "", CINT(0))
      branch = objAtmi.OnTpalloc ("STRING", "", CINT(0))
      phone = objAtmi.OnTpalloc ("STRING", "", CINT(0))
      addr = objAtmi.OnTpalloc ("STRING", "", CINT(0))

      '보낼 버퍼에 필드 데이터를 넣는다.
      'SELECT_ID ((FLDKEY)201327598) /* number: 1006 type: int */
      rVal = objFdl.OnFbput (fbuf, "201327598", taccount_id, CINT("0"))
      if rVal < 0 then
         error processing
         ...
      end if

      '트랜잭션을 시작한다.
      rVal = objTx.OnTx_begin()
      if rVal < 0 then
         error processing
         ...
      end if

      'Tmax로 SELECT 서비스를 요청한다.
      rVal = objAtmi.OnTpcall ("SELECT", fbuf, CINT(0), fbuf, rlen, CINT("0"))
      if rVal < 0 then
         error processing
         ...
         rVal = objTx.OnTx_rollback()
         if rVal < 0 then
            errno = objAtmi.OnGettperrno()
            response.write("OnTx_rollback fail["&rVal&"] ["&errno&"]")
         end if
         ...
      else
        rVal = objTx.OnTx_commit()
        if rVal < 0 then
           error processing
           ...
        end if
      end if

      'OnTpcall의 결과로 받아 온 fbuf에서 RESULT 필드의 내용을 가져온다.
      'RESULT ((FLDKEY)469764048) /* number: 2000 type: string */
      rVal = objFdl.OnFbget (fbuf, "469764048", str, rlen)
      if rVal < 0 then
         error processing
         ...
      end if
      'RESULT 필드의 내용이 담긴 버퍼에서 실제 내용을 가져온다.
      rVal = objAtmi.OnTpget (str, retStr)
      if rVal < 0 then
         error processing
         ...
      end if
      'BRANCH_ID ((FLDKEY)201327593) /* number: 1001 type: int */
      'PHONE ((FLDKEY)469763050) /* number: 1002 type: string */
      'ADDRESS ((FLDKEY)469763051) /* number: 1003 type: string */
      rVal = objFdl.OnFbget (fbuf, "201327593", branch, rlen)
      rVal = objAtmi.OnTpget(branch, retBranch)
      rVal = objFdl.OnFbget (fbuf, "469763050", phone, rlen)
      rVal = objAtmi.OnTpget(phone, retPhone)
      rVal = objFdl.OnFbget (fbuf, "469763051", addr, rlen)
      rVal = objAtmi.OnTpget(addr, retAddr)

      '버퍼를 해제한다.
      objAtmi.OnTpfree(fbuf)
      objAtmi.OnTpfree(str)
      objAtmi.OnTpfree(branch)
      objAtmi.OnTpfree(phone)
      objAtmi.OnTpfree(addr)

      'Tmax와의 연결을 해제한다.
      rVal = objAtmi.OnTpend()
      if rVal < 0 then
         error processing
         ...
      end if

      'Object를 해제한다.
      Set objAtmi = nothing
      Set objFdl = nothing
      Set objEtc = nothing
      Set objTx = nothing

      response.redirect "TmaxTestTx.asp?retStr="&retStr&"&retBranch="&retBranch&"&
                         retPhone="&retPhone&"&retAddr="&retAddr
%>