Tmax
|
|
- 익 구
- 5 years ago
- Views:
Transcription
1 Tmax FDL Reference Manual Copyright 2000 TmaxSoft Co., Ltd. All Rights Reserved
2 Copyright Notice Copyright 2000 TmaxSoft Co., Ltd. All Rights Reserved. TmaxSoft Co., Ltd. 대한민국서울시강남구대치동 글라스타워 18 층우 ) Restricted Rights Legend This software and documents are made available only under the terms of the TmaxSoft License Agreement and may be used or copied only in accordance with the terms of this agreement. No part of this document may be reproduced, transmitted, or translated in any form or by any means, electronic, mechanical, manual, or optical, without the prior written permission of TmaxSoft Co., Ltd. 소프트웨어및문서는오직 TmaxSoft Co., Ltd. 와의사용권계약하에서만이용이가능하며, 사용권계약에따라서사용하거나복사할수있습니다. 또한이매뉴얼에서언급하지않은정보에대해서는보증및책임을지지않습니다. 이매뉴얼에대한권리는저작권에보호되므로발행자의허가없이전체또는일부를어떤형식이나, 사진녹화, 기록, 정보저장및검색시스템과같은그래픽이나전자적, 기계적수단으로복제하거나사용할수없습니다. Trademarks Tmax, WebtoB, WebT, and JEUS are registered trademarks of TmaxSoft Co., Ltd. All other product names may be trademarks of the respective companies with which they are associated. Tmax, WebtoB, WebT, JEUS 는 TmaxSoft Co., Ltd. 의등록상표입니다. 기타모든제품들과회사이름은각각해당소유주의상표로서참조용으로만사용됩니다. Document Edition Date Version TMFR Jan 7, 2006 Tmax 4.0 Tmax 제품은아래표와같습니다. 본서는 Tmax Standard 와옵션중에굵게기울임꼴로인쇄되어있는내용을포함하고있습니다. Tmax Standard Tmax Options TP Function + 2 Phase Commit Web Admin Console, X.25 Gateway, TCP/IP Gateway, Host- 1
3 Link, Power Builder Interface Module, SERIAL Gateway, TCP/IP Service Gateway 2
4 이책에관하여 누구를위한책인가? 본매뉴얼은 Tmax 에서 FDL(Field Definition Language) 버퍼타입을사용하는 3-tier architecture system 을구현하는개발자들을대상으로한다. 본매뉴얼은개발자들이서비스프로그램 ( 서버 ) 및클라이언트프로그램을개발할때 FDL buffer type 과관련된 API 함수를좀더깊이있게이해하고사용할수있도록도움을줄것을목표로하고있다. 본매뉴얼에기술되어있는내용은 SUN 32bit, SUN 64bit, Compaq, HP 32bit, HP64bit, Linux, Windows NT 3.0/4.0 and Windows 2000 에서테스트및검증되었다. 본매뉴얼은 Tmax System 을사용하는환경이 UNIX 라고가정하고있고, 사용자가 UNIX 환경및현재사용되고있는각 UNIX 기종의특성들에기본지식이있다는가정하에작성되었다. 만약사용자가 UNIX 의명령어나유틸리티사용법등에관한기본지식이없다면, 관련서적을참고하거나시스템매뉴얼을참고해야할것이다. 어떻게사용하는가? 본매뉴얼은크게두부분으로구성되어있으며그내용은다음과같다. 제 1장 : FDL 개요및특징제 2장 : FDL 관련 API 에대한기능설명및사용법 제 1 장은개발자들이 FDL 에대한개념을정확하게이해하는데도움을줄것이며, 제 2 장은개발자들이 FDL 을사용하는프로그램 ( 서비스프로그램및클라이언트프로그램 ) 을구현할때사용되는 API 함수의 prototype, 기능, 파라미터, 리턴값, 발생할수있는에러메시지및간단한예제프로그램등을설명하고있다. 관련서 Tmax Programming Guide ( C ) Tmax Administration Guide 3
5 Tmax Reference Manual 규약 규 약 설 명 { } [ ] ( ) Numeric String Literal 필수항목옵션항목지정된여러개의값중배타적인선택구분자디폴트값숫자 abc 형태의문자열 abc 형태의문자열 4
6 차례 1 FDL 개요및특징 FDL 개요 용어정의 FDL 소개 C 구조체에관하여 필드버퍼에관하여 FDL 테이블생성 demo.f 사용방법 사용예제 FDL Reference FDL API fballoc fbbufop fbbufop_proj fbcalcsize fbchg_tu fbchg_tut fbdelall fbdelall_tu fbdelete fbextread fbfldcount fbfprint fbfree fbftos fbget fbgetalloc_tu fbgetalloc_tut fbget_fbsize fbget_fldkey
7 fbget_fldname fbget_fldno fbget_fldtype fbgetlast_tu fbget_strfldtype fbget_tu fbget_tut fbget_unused fbget_used fbgetf fbgetlen fbgetnth fbgetntht fbgetval fbgetvali fbgetval_last_tu fbgetvall_tu fbgetvals fbgetvals_tu fbgetvalt fbinit fbinsert fbisfbuf fbispres fbkeyoccur fbmake_fldkey fbnext_tu fbprint fbput fbputt fbrealloc fbread fbsnull fbstelinit fbstinit fbstof fbstrerror fbtypecvt fbupdate fbwrite getfberrno getfberror
8 7
9 1 FDL 개요및특징 1.1 FDL 개요 데이터형과그유형에할당되는메모리의양은각각의플랫폼마다다르다. 이러한메모리할당의방법차로인해같은데이터형을사용하더라도통신후의데이터값은예상과다를수있었다. 각각의서로다른플랫폼간에데이터값을동일하게인식하기위해서보통사용하는방법이데이터를문자열로변환하여통신하는것인데, 이러한방식을이용할경우추가적인네트워크의부하가발생할수있다. Tmax 는이러한통신상의문제를해결하기위해 FDL 방식을제공하고있다. FDL(Field Definition Language) 은필드버퍼라고하는저장구조를정의하고조작하는일련의 C 함수의집합이라할수있다. FDL 방식은식별자와식별자에대응하는필드버퍼에서의데이터값이하나의쌍으로존재하여서로다른종류의프로세스간에데이터를상호교환할수있도록구현된방식이다. FDL 함수는필드버퍼를사용하여서로다른프로세스간에데이터를교환하기위해필드를조작 ( 저장, 수정, 삭제 ) 하는데사용하는함수이다. 따라서이러한 FDL 함수들을이용하여효율적인프로그램을구현하기위해 FDL 의장단점을잘파악하고앞으로소개될함수의정의와사용예제프로그램을통하여 FDL 의모든기능들을잘활용할수있도록개발자들에게도움을주는것이본매뉴얼의목적이다 용어정의 필드식별자 : FDL 레코드나필드버퍼내에서독립적인데이터항목에대한태그로본매뉴얼전반에서필드키 (fieldkey) 로불려질것이다. 필드버퍼 : 데이터와데이터를식별하는필드키를보관하는버퍼이다. 필드형 : 필드의형은표준 C(ANSI C) 에서제공하는 short, integer, long, float, double, char 등어느것이든될수있다. Tmax에서 지원하는또다른형으로는 string과 carray가있다. 8
10 필드순번 : 필드를조작및처리하는데있어필드키버퍼내에서동일한 필드키가여러번반복해서나타날경우지정하는인덱스이 다. 1.2 FDL 소개 레코드를표현하는방법은매우다양하다. 그중에서 C 언어에서제공되는데이터구조체인 struct 를사용하여레코드를표현하는방법과필드버퍼를사용하여레코드를표현하는방법의차이점에대해서살펴보기로한다 C 구조체에관하여 예를들어 C 언어로작성된프로그램에서어떤학생의 id, 이름, 주소, 나이및성별등의정보를포함하고자한다면, 다음과같이구조체를사용하여필드를나눌수있을것이다. struct student { long stid; char name[10]; char addr[40]; short age; char sex; } ; 여기에서 stid 는 long 형의변수로선언되어있고, name 과 addr 은문자형배열 [carray], age 는 short 그리고 sex 는 character 형의변수로선언되어있다. 변수 x 를지정하여구조체 student 를가리키게한다면다음과같이표현될수있으며이들을필드의주소로사용할수있게된다. x->stid, x->name, x->addr, x->age, x->sex 구조체를다른프로세스에전달하려면, 해당구조체의필드중사용하지않는필드를포함하여모든필드의데이터를전달하여야한다. 즉고정된길이의레코드로통신하여야한다. 또한구조체필드의이름이바뀌면해당구조체의필드를사용하는모든프로그램을재컴파일해야한다. 9
11 1.2.2 필드버퍼에관하여 필드버퍼는이와다른방법으로레코드를필드로분할한다. 필드버퍼는레코드들의각필드들간에연관성있는접근을제공하는데이터구조이다. 필드명은필드의데이터유형과함께데이터가저장된필드키값을나타내는것으로 16 자까지사용할수있다. 필드버퍼의주된장점은데이터의독립성이다. 해당필드를사용하는모든프로그램을재컴파일하지않고도필드의데이터유형과길이를변경할수있을뿐만아니라각필드의길이를가변적으로사용할수있다. 그리고위에서설명한구조체에서는사용하지않는필드도함께전체구조체를전송해야만했지만, 필드키방식은실제사용하는필드의값만전송할수있다. 필드버퍼의각필드는데이터유형과유일한식별번호의조합으로구성된다. 이러한정수형의식별번호를필드키라고하며필드버퍼는필드키와데이터의쌍들을저장한다. 다음장에서는필드테이블을생성하는과정을살펴보도록하겠다. 1.3 FDL 테이블생성 필드테이블은 Tmax 에서제공하는 fdlc 유틸리티를이용하여일정한형식에맞춘일반텍스트파일을컴파일하여만든다. 다음은필드유형과유일한번호가정의된사용자정의파일의예이다. 이파일의형식만이 Tmax 에서의사용이가능하다 demo.f # name number type flags comments *base 100 INPUT 101 string - - OUTPUT 102 string
12 SEQNO 201 string - - CORPNO 202 string - - COMPDATE 203 string - - TOTMON 204 long - - GUARAT 205 float - - GUAMON 206 float - T_BITMAP 900 carray - - FILENAME 901 string - - NEWFILE 902 string - - *base 1000 data1 301 long - - data2 302 long - - data3 303 long - - sumdata 304 long - - data4 305 long - - 이필드테이블은 name, number, type 을반드시정의해야사용할수있다. name 은최대 48 자이하로정의된필드이름이며이이름을 fbget_fldkey() 의인자로사용하여필드식별자를얻어오는기능들을한다. 11
13 number 는 type 와조합되어필드식별자를만드는데사용되는번호이다. 말한바와같이 number 와 type 을조합하여필드식별자를만드는데, type 은유일할수없으므로반드시 number 는모든필드테이블에서유일한번호이어야한다. 위의 demo.f 예제에서 *base 번호 는 base 가쓰인이후의 number 에대한 base 가되는것으로실제로 INPUT 의 number 를 201 이라고쓴것과같은역할을한다. 이 base 는또다른 base 가나오기전까지유효하다. type 은해당필드의타입을설정한다. 사용할수있는필드타입은 char, short, int, long, float, double, string, carray 로총 8 가지이다. 사용자는이파일을 fdlc 유틸리티를이용하여필드테이블을생성할수있다 사용방법 fdlc [-a -c -u -d] {-i 필드키테이블파일이름 } [-o 결과물이름 ] [-h 헤더파일이름 ] [-f 대상파일이름 ] [-ji -jc] [-p 패키지이름 ] -a : 이미존재하는이진파일 (default 는 tmax.fdl) 에 i 옵션뒤에나오는필드키테이블파일을컴파일하여추가한다. -c : 필드키테이블을컴파일하여이진형태의파일을만든다. 이미이진파일 (default 는 tmax.fdl) 이존재한다면새내용을덮어쓴다. -u : 이미존재하는이진파일 (default 는 tmax.fdl) 에 i 옵션뒤에나오는필드키테이블파일을컴파일하여정정하거나추가하는옵션이다. -d : 이미존재하는이진파일 (default 는 tmax.fdl) 에 i 옵션뒤에나오는필드키테이블파일을컴파일하여삭제한다. -i : 필드키테이블을정의한파일을지정한다. 이옵션은필수옵션이며절대경로를지정할수있다. -o : 결과물 (.fdl) 파일을지정한다. 이옵션을설정하지않은경우 tmax.fdl 이결과물파일이된다. -h : 헤더파일을지정한다. 이옵션을설정하지않은경우 fdl 헤더파일이름은 필드키테이블이름 _fdl.h 이다. 12
14 -f : -a,-u,-d 옵션사용시에설정하는옵션으로결과물파일을지정하는옵션이다. 이옵션을설정하지않은경우 tmax.fdl 이결과물파일이된다. -ji : webt 를사용하여 Tmax 를사용하는경우에사용하기위한옵션으로서 fdlc 유틸리티를사용하여 java interface 를생성한다. -jc : webt 를사용하여 Tmax 를사용하는경우에사용하기위한옵션으로서 fdlc 유틸리티를사용하여 java class 를생성한다. -p : class 또는 interface 의패키지를설정한다 사용예제 $fdlc -c -i demo.f 위의 demo.f 를 fdlc 를사용하여컴파일하면 demo_fdl.h 와 tmax.fdl 이라는파일이기본적으로생성된다. 여기에서생성되는파일이름을변경하고싶다면다음과같이 o 옵션을사용하여원하는파일이름으로이진파일을생성할수있다. $fdlc -c -i demo.f -o filename.fdl 이러한과정을통하여생성되는파일은클라이언트와서버가필드버퍼를사용하여통신하는경우참조 ( 프로그램과함께컴파일됨 ) 되어원하는데이터유형의필드를사용할수있도록해준다. 필드버퍼를사용할때는반드시환경변수인 FDLFILE 에 filename.fdl 의위치를다음과같이정의해주어야한다. ( 여기에서 filename.fdl 이란, fdlc 에의해서생성된이진파일을말한다. default 인 tmax.fdl 이나, -o 옵션을주어생성한이진파일을적는다.) FDLFILE=/home/tmax/sample/fdl/filename.fdl 필드테이블을사용할때는반드시필드키는도메인내에서유일해야한다는점을주의해야한다. fdlc 에대한더자세한사항은 Tmax Reference Manual 을참조하기바란다. 13
15 2 FDL Reference 2.1 FDL API fballoc 이름 fballoc : 필드버퍼의크기계산및메모리할당 사용방법 #include <fbuf.h> #include <atmi.h> FBUF *fballoc(int count, FLDLEN datalen) 설명 이함수는 fbcalcsize(),tpalloc() 와 tpinit() 을조합한것으로서사용하고자하는필드의개수와데이터의길이를 argument 로전달하면필드버퍼의크기를계산하고계산된크기만큼의필드버퍼를메모리에할당한다. argument 로전달된값으로계산한결과가 1024 byte 보다작은경우에는 default 로 1024 byte 가할당된다. 이함수를사용하면사용하고자하는크기만큼만메모리를할당받으므로메모리의낭비를막을수있다. 또한이함수에의해서할당받은버퍼는사용을마친후에는반드시 fbfree() 함수를사용하여해제해야한다. count 는데이터를저장할필드의개수를의미하고 datalen 은필드버퍼에저장될데이터의전체크기를바이트단위로지정한다.(allocation 되는 memory size 는 count*sizeof(int) + datalen + 필드키헤더사이즈 가된다.) 14
16 반환값 함수수행을성공하면메모리의포인터를리턴하고, 필드버퍼를메모리에할당하는것을실패할경우 NULL 을리턴하고 fberror 에에러번호를 setting 한다 오류 다음과같은상황에서 fballoc() 은실패하고, fberrno 에아래값중하나가설정된다. FBEMALLOC 시스템에러 필드버퍼를메모리에할당하는것을실패하였다 예제 #include <fbuf.h> #include <atmi.h>... FBUF *fbuf; if ((fbuf = fballoc(100, 1000)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... /* result allocated size : 1408 bytes */ 필드버퍼를메모리에할당하는다른방법은 tpalloc() 을이용하는것이다. 아래의예제프로그램에서볼수있는바와같이 tpalloc() 함수의세번째 argument 에 0 을넣으면 default 값인 1024 byte 가할당된다. 물론이 argument 에 1024 byte 보다작은수를넣어도역시 default 값인 1024 byte 가할당된다.... FBUF *fbuf; if ((fbuf = (FBUF *)tpalloc( FIELD, NULL, 0)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... 15
17 /* result allocated size : 1024 bytes */ 참조 fbisfbuf(), fbcalcsize(), tpalloc(), fbinit() 16
18 2.1.2 fbbufop 이름 fbbufop : 필드버퍼내에서필드데이터의이동, 복사, 비교, 결합 사용방법 #include <fbuf.h> #include <atmi.h> int fbbufop(fbuf *dest, FBUF *src, int mode) 설명 이함수는필드버퍼와관련하여필드데이터의이동, 복사, 비교등을 input argument mode 에명시되어있는처리모드에따라수행하는함수이다. fbbufop() 함수의처음두 argument 인 dest 와 src 필드버퍼는같은버퍼를사용할수없고반드시따로메모리에할당된다른버퍼를사용하여야한다. Process Modes FBMOVE src 필드버퍼의내용을 dest 필드버퍼로복사한다. 이모드에서는 dest argument 에 string 또는 carray 버퍼를사용할수있다. 단 string 또는 carray 버퍼를사용하려면 dest argument 를사용할때필드버퍼 (FBUF *) 로 type casting 을해주어야한다. FBCOPY src 필드버퍼의내용을 dest 필드버퍼로복사한다. 이모드에서는반드시 dest, src argument 모두필드버퍼이어야한다. FBCOMP 17
19 dest, src 두필드버퍼의내용을비교하여 matching 되면 1또는 0 을리턴하며 matching 되지않으면 1 을 return 한다. 0 을리턴하는경우는 dest, src 두필드버퍼의 value, 구조, 개수, 순서등이완전히일치할경우이며 1 을리턴하는경우는구조, 개수, 순서등이모두일치하지만 value 는일치하지않을경우이다. FBCONCAT src 필드버퍼의내용을 dest 필드버퍼에덧붙인다. 즉 dest 필드버퍼에기존에있던데이터는그대로있고거기에 src 필드버퍼의내용이덧붙여진다. FBJOIN 필드키와필드순번이 matching 되는필드에한해그데이터를 src 필드버퍼에서 dest 필드버퍼에복사한다. 단 dest 필드버퍼에기존에존재하던데이터는모두사라지므로주의해야한다. FBOJOIN FBJOIN 모드와유사하게동작하지만이함수를수행하고난후필드키와필드순번이 matching 되지않는필드의데이터는함수수행이전의상태로보존된다 FBUPDATE FBOJOIN 모드와유사하게동작한다. 즉필드키와필드순번이 matching 되는필드의데이터를 src 필드버퍼에서 dest 필드버퍼에복사하는것은 FBOJOIN 모드와유사하지만 FBUPDATE 모드는필드키와필드순번이 matching 되지않는 src 필드버퍼에있는필드의데이터까지도 dest 필드버퍼에복사된다. dest 와 src 모두 fballoc() 또는 tpalloc() 으로메모리에할당된필드버퍼이어야하고 Mode 는위에서설명된 process mode 중하나이어야한다. 18
20 반환값 함수수행이성공할경우 1 을, 에러가발생할경우 1 을리턴하고 fberror 에에러번호를 setting 한다 오류 다음과같은상황에서 fbbufop() 은실패하고, fberrno 하나가설정된다. 에아래값중 FBENOSPACE 필드버퍼에데이터를저장하거나복사할공간이부족할경우 fberror 는 FBENOSPACE 로 setting 된다. FBEMALLOC 시스템에러. 필드버퍼를메모리에할당하는것을실패할경우 fberror 는 FBEMALLOC 으로 setting 된다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다 예제 #include "demo_fdl.h" main() { FBUF *destbuf, *srcbuf; destbuf=fballoc(5,5); fbput(destbuf, INPUT, "5555", 0); fbput(destbuf, INPUT, "7777", 0); fbput(destbuf, OUTPUT, "3333", 0); fbput(destbuf, SEQNO, "8888", 0); 19
21 srcbuf=fballoc(5,5); fbput(srcbuf, INPUT, "1111", 0); fbput(srcbuf, OUTPUT, "2222", 0); fbput(srcbuf, CORPNO, "3333", 0); /* Mode 를 select 할수있게한다. */ printf("input : "); scanf("%d", &a); switch(a) { /*FBMOVE mode */ case 1: iret=fbbufop(destbuf, srcbuf, FBMOVE); fbprint(destbuf); break; /* destbuf : 1111, 2222, 3333 */ /*FBCOMP mode */ case 2: iret=fbbufop(destbuf, srcbuf, FBCOMP); printf("ret = %d\n", iret); if(iret < 0) { printf("do not match!!!\n"); fbfree(destbuf); fbfree(srcbuf); exit(0); } printf("match!!!\n"); break; /* Do not match!!! */ 20
22 /*FBCOPY mode */ case 3: iret=fbbufop(destbuf, srcbuf, FBCOPY); fbprint(destbuf); break; /* destbuf : 1111, 2222, 3333 */ /*FBCONCAT mode */ case 4: iret=fbbufop(destbuf, srcbuf, FBCONCAT); fbprint(destbuf); break; /* destbuf : 5555, 7777, 3333, 8888, 1111, 2222, 3333 */ /*FBJOIN mode */ case 5: iret=fbbufop(destbuf, srcbuf, FBJOIN); fbprint(destbuf); break; /* destbuf : 1111, 2222 */ /*FBOJOIN mode */ case 6: iret=fbbufop(destbuf, srcbuf, FBOJOIN); fbprint(destbuf); break; /* destbuf : 1111, 7777, 2222, 8888 */ /*FBUPDATE mode */ case 7: iret=fbbufop(destbuf, srcbuf, FBUPDATE); 21
23 fbprint(destbuf); break; /* destbuf : 1111, 7777, 2222, 8888, 3333 */ } fbfree(destbuf); fbfree(srcbuf); } 참조 fbbufop_proj() 22
24 2.1.3 fbbufop_proj 이름 fbbufop_proj : 지정한필드의데이터를 dest 필드버퍼에복사 사용방법 #include <fbuf.h> #include <atmi.h> int fbbufop_proj(fbuf *dest, FBUF *src, FLDKEY *fldkey) 설명 이함수는 src 필드버퍼의지정한필드의필드데이터를 dest 필드버퍼에복사하는함수이다. 즉세번째 argument 인 fieldkey 포인터를배열로선언한후그배열에복사하고자하는필드를복수개로지정하면 src 필드버퍼에서 dest 필드버퍼로 fieldkey 에지정한필드의데이터만복사된다. fbbufop_proj() 함수의처음두 argument 인 dest 와 src 필드버퍼는같은버퍼를사용할수없고반드시따로메모리에할당된다른버퍼를사용하여야한다. 만약두번째 argument 를 NULL 로 setting 한다면 dest 필드버퍼자체에서지정된필드의데이터가복사된다. dest 와 src 는 fballoc() 또는 tpalloc() 으로메모리에할당된필드버퍼이어야한다. fieldkey 포인터에는복사하고자하는필드를배열형태로지정할수있다. 그리고배열의마지막에는반드시 0 을지정해주어야한다 반환값 함수수행이성공할경우 1 을, 에러가발생할경우 1 을리턴하고 fberror 에에러번호를 setting 한다. 23
25 오류 다음과같은상황에서 fbbufop_proj() 은실패하고, fberrno 에아래값중하나가설정된다. FBEMALLOC 시스템에러. 필드버퍼를메모리에할당하는것을실패할경우 fberror 는 FBEMALLOC 으로 setting 된다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다. 예를들면 fbuf 가 NULL 일경우이에러가발생한다 예제 #include demo_fdl.h... int iret, i; FBUF *destbuf, *srcbuf; FLDKEY fkey[4];... fbput(destbuf, INPUT, "aaa", 0); fbput(destbuf, OUTPUT, "bbb", 0); fbput(destbuf, SEQNO, "ccc", 0);... fbput(srcbuf, TEST1, "AAA", 0); fbput(srcbuf, TEST2, "BBB", 0); fbput(srcbuf, TEST3, "CCC", 0); fkey[0]=fbget_fldkey("input"); fkey[1]=fbget_fldkey("seqno"); fkey[2]=0; /* The last entry in the array must be 0 */ ret=fbbufop_proj(destbuf, NULL, fkey); 24
26 ... /* destbuf : aaa, ccc */... fkey[0]=fbget_fldkey("test3"); fkey[1]=fbget_fldkey("test1"); fkey[2]=fbget_fldkey("test2"); fkey[3]=0; /* The last entry in the array must be 0 */ ret=fbbufop_proj(destbuf, srcbuf, fkey);... /* destbuf : AAA, BBB, CCC */ /* fkey array is sorted if the entries are not in numeric order */ 참조 fbbufop() 25
27 2.1.4 fbcalcsize 이름 fbcalcsize : 필드버퍼의크기계산 사용방법 #include <fbuf.h> #include <atmi.h> long fbcalcsize(int count, FLDLEN datalen) 설명 fballoc() 또는 tpalloc() 함수로필드버퍼를메모리에할당받을때적정한메모리를할당받기위하여필드버퍼의크기를계산하는함수이다. 이함수는사용하고자하는필드의개수와총데이터의길이 (byte 단위 ) 를 argument 로전달하면필드버퍼의크기를계산해준다. count 는데이터를저장할필드의개수를의미하고 datalen 은필드버퍼의전체데이터크기를바이트단위로지정한다 반환값 주어진 input argument(count, datalen) 에근거하여필드버퍼의크기를 byte 단위로리턴한다 예제 #include demo_fdl.h... FBUF *fbuf; long size; size = fbcalcsize(100, 1000); printf( size : [%ld]\n, size); /* output : size : [1408] */ 26
28 if ((fbuf = (FBUF *)tpalloc( FIELD, NULL, size)) == NULL) { printf( tpalloc failed, errno = %d\n, tperrno);... } /* fbuf is set in 1024 bytes by default if size is less than 1024*/ 참조 fballoc(), tpalloc() 27
29 2.1.5 fbchg_tu 이름 fbchg_tu : 필드버퍼에서지정한필드키의필드순번의데이터를변경 사용방법 #include <fbuf.h> #include <atmi.h> int fbchg_tu(fbuf *fbuf, FLDKEY fldkey, int nth, char *value, FLDLEN fldlen) 설명 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼에서 input argument 에서지정한필드키의필드순번의데이터를변경하는함수이다. Input argument 에서지정한필드순번 (nth) 에기존의데이터가없었을경우에는필드순번 (nth) 에주어진데이터가자동적으로필드로추가된다. 그러므로이함수를이용해서필드데이터를변경할때는관계가없지만, 필드순번을추가할경우에는처리속도가저하된다는사실을주의해야한다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고 fldkey 는필드버퍼에변경할필드의필드키이다. nth 는 fldkey 에서지정한필드키의데이터중변경하고자하는필드순번을나타낸다. 그리고 value 가 (char *) 형이므로변경하고자하는필드키의 type 이정수형이나실수형인경우에는반드시 (char *) 형으로 type casting 을해주어야한다. 만약 value 에 NULL 이설정된경우해당필드키를지우게된다. fldlen 은일반적으로는필드의길이를지정하지않아도된다. 그러나필드키의 type 이 FB_CARRAY 인경우에는반드시필드데이터의길이를 byte 단위로지정해주어야한다. 28
30 반환값 함수수행이성공할경우 1 을, 에러가발생할경우 1 을리턴하고 fberror 에에러번호를 setting 한다 오류 다음과같은상황에서 fbchg_tu() 은실패하고, fberrno 하나가설정된다. 에아래값중 FBENOENT 지정한필드키가 FDLFILE( 환경변수 : default 값은 tmax.fdl) 에정의되어있지않으므로필드버퍼에서사용할수없는경우 fberror 는 FBENOENT 로 setting 된다. FBENOSPACE 필드버퍼에데이터를저장하거나복사할공간이부족할경우 fberror 는 FBENOSPACE 로 setting 된다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다 예제 #include demo_fdl.h... long rcvlen, ret; char buffer[100]; FLDLEN fldlen; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, tperrno);... } 29
31 fbput(fbuf, INPUT, aaaa, 0); /* 영번째순번에는 aaaa 가있음. */ ret = fbchg_tu(fbuf, INPUT, 1, bbbb, 4); /* 첫번째순번에 bbbb 를추가함. */ if (ret < 0) { error processing... } ret = fbget_tu(fbuf, INPUT, 1, buffer, &fldlen); /* 첫번째순번에있는데이터를 buffer 에넣음. */ if (ret < 0) { error processing... } printf( Field Data: [%s]\n, buffer); /* output : Field Data: [bbbb] */ fbprint(fbuf); /* output : aaaa, bbbb */ 참조 fbput(), fbchg_tut(), fbget_tu(), fbchg_tu(), fbgetval(), fbgetval_last_tu(),fbgetvals_tu(), fbgetvall_tu() 30
32 2.1.6 fbchg_tut 이름 fbchg_tut : 필드버퍼에서지정한필드키의필드순번의데이터를변경 사용방법 #include <fbuf.h> #include <atmi.h> int fbchg_tut(fbuf *fbuf, FLDKEY fldkey, int nth, char *value, FLDLEN fldlen, int type) 설명 fballoc() or tpalloc() 함수로메모리에할당된필드버퍼에서 input argument 에서지정한필드키의필드순번의데이터를사용자가지정한타입에서필드키의타입으로변환한후변경하는함수이다. 즉이함수는 fbchg_tu() 함수와유사하지만데이터의타입이변경하고자하는필드키의필드타입과다른경우필드데이터를변경하기전에먼저저장하고자하는데이터의타입을필드키의타입으로변환한후필드데이터를변경하여저장할수있다는점이다르다. Input argument 에서지정한필드순번에기존에데이터가없었을경우에는필드순번이주어진데이터로자동적으로필드가추가된다. 그러므로이함수를이용해서필드데이터를변경할때는관계가없지만, 필드순번을추가할경우에는처리속도가저하된다는사실을주의해야한다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고 fldkey 는필드버퍼에변경할필드의필드키이다. nth 는 fldkey 에서지정한필드키의데이터중변경하고자하는필드순번을나타낸다. 그리고 value argument 가 char * 형이므로변경하고자하는필드키의타입이정수형이나실수형인경우에는반드시 char * 형으로 type casting 을해주어야한다. fldlen 은일반적으로는필드의길이를지정하지않아도된다. 그러나필드키의타입이 FB_CARRAY 인경우에는반드시필드데이터의길이를 byte 단위로지정해주어야한다. 그리고 type 은사용자가지정한데이터의타입을나타낸다. 31
33 type 에지정해줄수있는값들은다음과같다. FB_CARRAY, FB_SHORT, FB_DOUBLE, FB_LONG, FB_STRING, FB_CHAR, FB_FLOAT, FB_INT 반환값 함수수행이성공할경우 1 을, 에러가발생할경우 1 을리턴하고 fberror 에에러번호를 setting 한다 오류 다음과같은상황에서 fbchg_tut() 은실패하고, fberrno 에아래값중하나가설정된다. FBENOENT 지정한필드키가 FDLFILE( 환경변수 : default 값은 tmax.fdl) 에정의되어있지않으므로필드버퍼에서사용할수없는경우 fberror 는 FBENOENT 로 setting 된다. FBENOSPACE 필드버퍼에데이터를저장하거나복사할공간이부족할경우 fberror 는 FBENOSPACE 로 setting 된다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다.(FB_CARRAY 타입인경우데이터길이를지정하지않으면이번호가설정된다.) FBETYPE Tmax 에서지원하지않는 type 이사용되었다. FBEBADFLD 32
34 잘못된필드를사용하였다 예제 #include demo_fdl.h... long ret, lval=100000; FBUF *fbuf;... fbputt(fbuf, INPUT, "aaaa", 0, FB_STRING); fbchg_tut(fbuf, INPUT, 0, (char *)&lval, 0, FB_LONG); printf("1st occurrence of INPUT field is changed as follows : \n"); fbprint(fbuf);... /* fkey = , fname = INPUT, type = string, value = */ 참조 fbput(), fbchg_tu(), fbget_tu(), fbgetval(), fbgetval_last_tu(), fbgetvals_tu(), fbgetvall_tu() 33
35 2.1.7 fbdelall 이름 fbdelall : 필드버퍼에서지정한필드키의전체데이터를삭제 사용방법 #include <fbuf.h> #include <atmi.h> int fbdelall(fbuf *fbuf, FLDKEY fldkey) 설명 이함수는필드버퍼에서두번째 argument 로지정한특정필드키에저장되어있는모든필드데이터를삭제하는함수이다. 여기에서두번째 argument 에서지정할필드키는반드시이함수를호출하기이전에지정한필드버퍼에필드순번의데이터가하나이상저장되어있어야한다. 그렇지않으면이함수는 1 을리턴하며 fberror 는 FBENOENT 로 settinge 된다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고, fldkey 는필드버퍼에서삭제하고자하는필드키이다 반환값 함수수행중필드버퍼에지정한필드키가존재하지않을경우에러가발생하며, 이경우 1 을리턴하고 fberror 에에러번호를 setting 한다. 함수수행이성공할경우에는 fbdelall() 은삭제한필드의개수를리턴한다 오류 다음과같은상황에서 fbdelall() 은실패하고, fberrno 에아래값중하나가설정된다. FBENOENT 34
36 지정한필드키가 FDLFILE( 환경변수 : default 값은 tmax.fdl) 에정의되어있지않으므로필드버퍼에서사용할수없는경우 fberror 는 FBENOENT 로 setting 된다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다 예제 #include demo_fdl.h... int ret; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } fbput(fbuf, INPUT, aaaa, 0); fbput(fbuf, INPUT, bbbb, 0); fbput(fbuf, INPUT, cccc, 0); ret = fbdelall(fbuf, INPUT); printf( Delete Field Number: [%d]\n, ret); /* output: Delete Field Number: [3] */ 참조 fbput(), fbget(), fbdelete(), fbdelall_tu() 35
37 2.1.8 fbdelall_tu 이름 fbdelall_tu : 필드키배열에지정된모든필드의전체데이터를삭제 사용방법 #include <fbuf.h> #include <atmi.h> int fbdelall_tu(fbuf *fbuf, FLDKEY *fldkey) 설명 이함수는필드버퍼에서두번째 argument 인필드키배열에지정된모든필드키에저장되어있는모든필드데이터를삭제하는함수이다. 그러므로여러개의필드키를동시에삭제할경우에는 fbdelall_tu() 함수를한번호출하는것이 fbdelall() 함수를여러번호출하는것보다훨씬효율적이다. 여기에서두번째 argument 에서지정할필드키포인터는배열로선언하여삭제하고자하는필드키를명시해주어야한다. 필드키배열에삭제할필드키를지정한후마지막 index 에는반드시 0 을지정해주어야한다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고, fieldkey 포인터는필드버퍼에서삭제하고자하는필드키를복수개로지정한필드키배열이다 반환값 fbdelall_tu() 은삭제한필드의개수를리턴한다 오류 다음과같은상황에서 fbdelall_tu() 은실패하고, fberrno 에아래값중하나가설정된다. FBENOENT 36
38 fldkey 배열에서마지막에지정된필드키에해당하는데이터가없는경우 fberror 는 FBENOENT 로 setting 된다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다 예제 #include demo_fdl.h... FLDKEY fkey[3]; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } fbput(fbuf, INPUT, aaaa, 0); fbput(fbuf, INPUT, bbbb, 0); fbput(fbuf, OUTPUT, cccc, 0); fkey[0] = INPUT; fkey[1] = OUTPUT; fkey[2] = 0; /* The last entry in the array must be 0 */ ret = fbdelall_tu(fbuf, fkey); printf( The Number of deleted fields: [%d]\n, ret); /* output: Number of deleted fields: [3] */ 참조 fbput(), fbget(), fbdelete(), fbdelall() 37
39 2.1.9 fbdelete 이름 fbdelete : 지정한필드키의지정한필드순번에해당하는필드데이터삭제 사용방법 #include <fbuf.h> #include <atmi.h> int fbdelete(fbuf *fbuf, FLDKEY fldkey, int nth) 설명 이함수는 fballoc() 또는 tpalloc() 함수로메모리에할당한필드버퍼에서지정한필드키의지정한필드순번에해당하는특정필드의데이터를삭제하는함수이다. fbchg_tu() 함수는지정한필드순번에해당하는필드가존재하지않을경우자동으로필드를추가해주었지만 fbdelete() 에서는지정한필드순번에해당하는필드가필드버퍼에존재하지않을경우에러를발생시키며 fberror 는 FBENOENT 로 setting 된다. 그러므로이함수에서는반드시함수수행이전에필드버퍼에존재하는필드를 argument 로지정해야한다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고, fieldkey 는필드버퍼에서삭제하고자하는필드키를나타내고, nth 는삭제하고자하는특정필드순번을나타낸다 반환값 argument 로지정한필드키의순번에해당하는필드가필드버퍼에존재하지않을경우 fbdelete() 는 1 을리턴하고 fberror 에에러번호를 setting 한다. 함수수행을성공하였을경우에는 1 을리턴한다. 38
40 오류 다음과같은상황에서 fbdelete() 은실패하고, fberrno 하나가설정된다. 에아래값중 FBENOENT 지정한필드키가 FDLFILE( 환경변수 : default 값은 tmax.fdl) 에정의되어있지않으므로필드버퍼에서사용할수없는경우 fberror 는 FBENOENT 로 setting 된다. 지정한필드순번에해당되는데이터가필드버퍼에존재하지않는경우에도 fberror 이 FBENOENT 로 setting 된다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다 예제 #include demo_fdl.h... char buffer[100]; int ret; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } fbput(fbuf, INPUT, aaaa, 0); /* fbuf 의 0 번째데이터는 aaaa 이다. */ fbput(fbuf, INPUT, bbbb, 0); /* fbuf 의 1 번째데이터는 bbbb 이다. */ fbput(fbuf, INPUT, cccc, 0); /* fbuf 의 2 번째데이터는 cccc 이다. */ 39
41 fbdelete(fbuf, INPUT, 1); 삭제하게된다. */ /* fbuf 의 1 번째데이터인 bbbb 를 ret=fbdelete(fbuf, INPUT, 3); if(ret<0){ printf("fbdelete error : %s\n", fbstrerror(fberror)); } /* fbuf 의 3 번째순번에는데이터가없기때문에 fbdelete error : FBENOENT (not found) 가출력된다. */ fbget(fbuf, INPUT, buffer, 0); printf( INPUT: [%s]\n, buffer); /* output: INPUT: [aaaa] */ fbget(fbuf, INPUT, buffer, 0); printf( INPUT: [%s]\n, buffer); /* output: INPUT: [cccc] */ 참조 fbput(), fbget(), fbdelall(), fbdelall_tu() 40
42 fbextread 이름 fbextread : 파일로부터필드키와그에해당하는값을읽어서필드버퍼에저장 사용방법 #include <stdio.h> #include <usrinc/fbuf.h> int fbextread(fbuf *fbuf, FILE *iop) 설명 이함수는 iop 에서지정하는특정파일로부터필드키와그에해당하는값을읽어서 fballoc() 또는 tpalloc() 함수로메모리에할당한필드버퍼에저장하는함수이다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이며 iop 는읽어올필드키와그에해당하는값이저장되어있는파일의포인터이다. 필드키와값이저장되어있는파일의형식은아래와같다. flag 가 + 이거나 flag 를사용하지않을경우 [flag] field_name or field_id (tab) field_value flag 가 = 일경우 [flag] field_name1 or field_id1 (tab) field_name2 or field_id2 flag 가 일경우 [flag] field_name or field_id 여기서사용할수있는 flag 에는 4 가지가있는데각각플래그의의미는다음과같다. 41
43 + : 필드버퍼에서필드키에해당하는값을 0 번째순번에저장한다. - : 필드버퍼에서해당되는필드키의 0 데이터를삭제한다. 번째순번에해당하는 = : 필드버퍼에서첫번째필드이름 (field_name1) 에해당하는데이터중 0 번째순번의필드값을두번째필드이름 (field_name2) 에해당하는데이터중 0 번째순번의필드값으로교체한다. # : comment ( 주석 ) 으로처리 없음 : 필드버퍼에새로운필드를추가 이함수는내부적으로아무런 flag 가쓰이지않은경우 fbput() 함수를호출하도록되어있으며, flag 가 + 인경우 fbchg_tu() 를, -인경우 fbdelete() 를, = 인경우 fbget_tu() 를호출한후 fbchg_tu() 를호출하도록되어있다. 따라서이들함수에서나타날수있는오류와동일한오류가 fbextread() 에서발생할수있다 반환값 함수수행이성공할경우 1 을, 에러가발생할경우 1 을리턴하고 fberror 에에러번호를 setting 한다 오류 다음과같은상황에서 fbinsert() 은실패하고, fberrno 하나가설정된다. 에아래값중 FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다. 예를들면 fbuf 가 NULL 일경우이에러가발생한다 예제 #include <stdio.h> #include <usrinc/atmi.h> #include <usrinc/fbuf.h> 42
44 #include "demo_fdl.h" int main() { long len; int ret; FILE *fp; FBUF *fbuf; FLDLEN fldlen; char buffer[100]; fbuf = (FBUF *)tpalloc("field", NULL, 0); if (fbuf == NULL) { printf("fbuf tpalloc fail[%d]\n", tperrno); } ret = fbput(fbuf, INPUT, "user_input", 10); if (ret < 0) { printf("fbput fail[%d]\n", fberror); return -1; } ret = fbput(fbuf, OUTPUT, "user_output", 10); if (ret < 0) { printf("fbput fail[%d]\n", fberror); return -1; } ret = fbput(fbuf, STATLIN, "user_statlin", 10); if (ret < 0) { printf("fbput fail[%d]\n", fberror); return -1; } fp = fopen("file", "r"); fbprint(fbuf); ret = fbextread(fbuf, fp); if (ret < 0) printf("fextread fail[%s]\n", fberror); 43
45 printf("\n\n<after Fextread> \n"); fbprint(fbuf); tpfree((char *)fbuf); } < 파일 1> +STATLIN statlin0_ < 결과 1> user_input, user_output, statlin0_, user_statlin < 파일 2> OUTPUT INPUT INPUT OUTPUT0_ INPUT0_ INPUT1_ < 결과 2> user_input, user_output, user_statlin, OUTPUT0_, INPUT0_, INPUT1_ < 파일 3> =OUTPUT INPUT < 결과 3> user_input, user_input, user_statlin < 파일 4> INPUT < 결과 4> user_output, user_statlin 참조 fbput(), fbchg_tu(), fbdelete(), fbget_tu() 44
46 fbfldcount 이름 fbfldcount : 필드버퍼내에있는모든필드의수를반환 사용방법 #include <fbuf.h> #include <atmi.h> int fbfldcount(fbuf *fbuf) 설명 이함수는 fballoc() 또는 tpalloc() 함수로메모리에할당한필드버퍼에현재저장되어있는모든필드의수를리턴하는함수이다. 이미구현되어있는여러 API 함수들을이용하여필드버퍼에몇개의필드들이실질적으로저장되어있는지도확인해볼수있다. 하나의필드키에순번을달리하여여러데이터들이저장되어있다하더라도이러한경우 fbfldcount() 함수는별개의필드로인식한다. 즉, 이함수는필드버퍼내에필드데이터가몇개저장되어있는지계산해주는함수라고할수있다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이다 반환값 필드버퍼에현재저장되어있는필드의수를리턴하고, 필드버퍼에저장되어있는필드가없는경우에는 0 을리턴한다 오류 다음과같은상황에서 fbinsert() 은실패하고, fberrno 하나가설정된다. 에아래값중 FBEINVAL 45
47 input argument 로지정된값들중유효하지않은 argument 가있다. 예를들면 fbuf 가 NULL 일경우이에러가발생한다 예제 #include demo_fdl.h... int cnt; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } fbput(fbuf, INPUT, aaaa, 0); fbp ut(fbuf, INPUT, bbbb, 0); fbput(fbuf, OUTPUT, cccc, 0); cnt = fbfldcount(fbuf); printf( Field Count: [%d]\n, cnt); /* output: Field Count: [3] */... } 참조 fbgetnth(), fbkeyoccur() 46
48 fbfprint 이름 fbfprint : 필드버퍼에저장되어있는필드데이터를지정한파일스트림에출력 사용방법 #include <fbuf.h> #include <atmi.h> int fbfprint(fbuf *fbuf, FILE *iop) 설명 이함수는필드버퍼에저장되어있는필드데이터를지정한파일 스트림에출력하는함수이다. 이 때 지정한파일은텍스트파일이고, 출력형식은 fbprint() 함수의출력 형식과같다. fbuf 는 fballoc() 또는 tpalloc() 저장할 함수로메모리에할당된필드버퍼이고, iop 는출력데이터를파일스트림을나타낸다 반환값 함수수행이성공할경우 1 을, 에러가발생할경우 1 을리턴하고 fberror 에에러번호를 setting 한다 오류 다음과같은상황에서 fbfprint() 은실패하고, fberrno 에아래값중하나가설정된다. FBEBADFB 47
49 필드버퍼가유효하지않다. 그러므로현재의필드버퍼이외의다른정상적으로메모리에할당된버퍼를사용해야한다. FBEINVAL 예제 input argument 로지정된값들중 유효하지않은 argument 가 있다. #include demo_fdl. h... FILE *iop; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } iop = fopen( sample.text, w ); fbput(fbuf, INPUT, 5555, 0); fbput(fbuf, INPUT, 7777, 0); fbfprint(fbuf, iop); fclose(iop); 참조 fbprint() 48
50 fbfree 이 름 fbfree : 필드버퍼의메모리를해제 사용방 법 #include <fbuf.h> #include <atmi.h> int fbfree(fbuf *fbuf) 설 명 이함수는 fballoc() 또는 tpalloc() 함수에의해서할당된필드버퍼의메모리를해제하는함수이다. 이함수는이전에할당받았던버퍼를메모리로부터해제하는함수이므로이함수를수행한후에는다시그버퍼를사용할수없다. 그러므로버퍼의사용이완전히끝난이후에이함수를호출해주어야한다. fbuf 는 fballoc() 또는 tpalloc() 함수에의해할당된필드버퍼이다 반환값 필드버퍼의메모리를해제하지못하면 1 을리턴하고, 버퍼를정상적으로해제하면 1을리턴한다 오류 다음과같은상황에서 fbinsert() 은실패하고, fberrno 하나가설정된다. 에아래값중 FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다. 예를들면 fbuf 가 NULL 일경우이에러가발생한다. 49
51 예제 #include demo_fdl.h... int ret; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } fbput(fbuf, INPUT, aaaa, 0); ret = fbfree(fbuf); printf( fbfree, ret = %d\n, ret); /* output : fbfree, ret = 1 */ fbp ut(fbuf, INPUT, bbbb, 0); fbprint(fbuf); /* an error occurs since memory was not allocated. */ 참조 fbcalcsize(), tpalloc(), fballoc(), fbinit() 50
52 fbftos 이 름 fbftos : 필드전송 버퍼에저장되어있는데이터를 matching 되는 struct 버퍼로 사용방법 #include <fbuf.h> #include <atmi.h> int fbftos(fbuf *fbuf, char *cstruct, char *stname) 설명 이함수는 fballoc() 또는 tpalloc() 함수를통하여메모리에할당된필드버퍼에저장되어있는필드데이터들을 matching 되는 C Structure 버퍼 (stname) 로전송하는함수이다. 여기에는일반구조체파일인 ***.s 와는약간다른구조체파일이미리정의되어있어야한다. 구조체파일내의필드키는정의되는구조체의멤버변수와 1 : 1 mapping 이되어있어야한다. 아래에필드버퍼와 C struct 를 mapping 시키는구조체파일의예가설명되어있다. VIEW demo #type cname Fldkey count flag size null string demodata INPUT 5-20 carray carraydata CARRAYDATA 1-20 star char chardata CHARDATA c int inum INTDATA short snum SHORTDATA long lnum LONGDATA float fnum FLOATDATA double dnum DOUBLEDATA END 51
53 여기에서 type 은구조체안의멤버변수의데이터형을나타내고 cname 은멤버변수의이름을나타낸다. fldkey 는지정한멤버변수와 mapping 되는필드키를나타내고 ( 이필드키는 ***.f 에정의되어있어야한다.) count 는구조체에서저장할수있는최대의필드순번을나타낸다. size 는 string type 인경우배열의크기를나타내고 null 은초기화될때의값을나타내는것으로필드버퍼에아무런값이저장되어있지않은상태에서필드데이터들을 C Structure 버퍼로전송하고자하는경우기본적으로 C Structure 에복사되는값이다. 만약에 null 항목에아무런값도주지않은상태에서필드버퍼에아무런값이저장되어있지않은경우각자료형에맞는디폴트값이 C Structure 에저장된다. string, carray, char 의디폴트값은 NULL 이며 int, short, long 의디폴트값은 0, float, double 의디폴트값은 0.0 이다. 위와같이 demo.s 또는 demo.v 에 VIEW 를정의해놓은후클라이언트에서는 sdlc utility(structure file compiling utility) 를이용하여 VIEW file 을다음과같이컴파일해야한다. $TMAXDIR$/sample/sdl> sdlc c v demo.s o tmax.sdl $TMAXDIR$/sample/sdl> sdlc c v demo.v o tmax.sdl 환경파일 (korn shell 을사용하는경우.profile) 에 SDLFILE 로지정된이름으로 o 옵션으로.sdl 파일을생성한다. 이렇게함으로써필드키와구조체간의변환정보를 SDLFILE 에서가지고있게된다. 이떄주의할점은위의 VIEW 파일에정의되어있는필드키는반드시 ***.f 에정의되어있어야한다는점이다. 위와같이 VIEW 파일을컴파일하면 demo_sdl.h 와 tmax.sdl 파일이생성된다. 클라이언트프로그램에서는 demo_sdl.h 파일을 include 해서사용하면된다. 서버에서는 sdlc utility(structure file compiling utility) 를이용하여 VIEW file 을다음과같이컴파일해야한다. $TMAXDIR$/sample/s dl> sdlc v demo.s 위와같이구조체파일을컴파일하면 demo_sdl. c 와 demo_sdl.h 파일이생성된다. 필드키와구조체간의변환정보가 demo_sdl.c 파일에들어있으므로이정보를사용해야하는서버프로그램을컴파일할때 demo_sdl.c 파일과함께컴파일이되어야한다. 즉서버프로그램내에서는필요한정보를컴파일시에모두가지게되므로 tmax.sdl 파일이필요하지않게된다. 52
54 필드버퍼에서구조체로데이터를전송할때필드키와구조체의멤버변수의데이터와 mapping 되지않을경우에는필드키가무시된다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고, cstruct 는사용할구조체타입의변수를 (char *) 으로 type casting 하여사용하면된다. stname 은 VIEW 에서정의한구조체의이름을문자열로지정하면된다 반환값 필드버퍼에저장되어있는데이터들을성공적으로 cstruct 에전송하였을경우에는 1 을리턴하고, 실패하였을경우에는 -1 을리턴고 fberror 에에러번호를 setting 한다 오류 다음과같은상황에서 fbftos() 은실패하고, fberrno 에아래값중하나가설정된다. FBENOENT 지정한필드키가 FDLFILE( 환경변수 : default 값은 tmax.fdl) 에정의되어있지않으므로필드버퍼에서사용할수없는경우 fberror 는 FBENOENT 로 setting 된다. FBENOSPACE 필드버퍼에데이터를저장하거나복사할공간이부족할경우 fberror 는 FBENOSPACE 로 setting 된다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다. FBEBADFLD 유효하지않은필드키가사용되었다. 일반적으로필드키가 fdlc utility 를사용하여컴파일되지않은필드키가사용되었을경우 fberror 는 FBEBADFLD 로 setting 된다. 53
55 FBEBADSTRUCT 예제 유효하지않은구조체가사용되었다. 일반적으로 Tmax system 에서알아보지못하는형태의구조체가사용되었거나구조체정의파일이잘못컴파일되었을경우에발생하는에러이다. #include demo_fdl.h #include demo_sdl.h... int ret, fdllen, val = 1000; struct demo temp; FBUF *fbuf; Char *cstruct; if(tpstart((tpstart_t *)NULL) == -1) { printf( tpstart failed\n );... } if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } cstruct = (char *)&temp; if(fbstinit((char *)&temp, demo ) < 1) { printf( fbstinit failed, errno = %d\n, fberror);... } fbput(fbuf, INPUT, aaaa, 0); fbput(fbuf, INTDATA, (char *)&val, 0); if(fbftos( fbuf, cstr uct, demo ) < 0) {... 54
56 } 참 조 fbstof(), fbstinit(), fbstelinit() 55
57 fbget 이름 fbget : 필드버퍼에서필드키에해당하는필드데이터를얻어옴 사용방법 #include <fbuf.h> #include <atmi.h> int fbget(fbuf *fbuf, FLDKEY fldkey, char *loc, FLDLEN *fldlen) 설명 이함수는필드버퍼에서두번째 argument 에서지정한필드키에해당하는필드의데이터를읽어오는함수이다. 데이터를필드버퍼에서읽어내는함수로서동일한필드키로저장된데이터는순차적으로읽어서세번째 argument 인 loc 에저장한다. 즉수동적으로순번을증가시키지않고단지저장되어있는필드순번만큼이함수를호출하면함수내에서자동적으로필드순번을증가시켜서다음데이터를읽을준비가되어있으므로그필드키내에저장되어있는모든필드데이터를읽어올수있는것이다. 그러므로이함수를사용할경우에는한번읽어온데이터는다시읽을수없으므로주의해야한다. 그리고저장되어있는필드순번보다더많이이함수를호출하면마지막필드순번의필드데이터가계속리턴된다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고, fieldkey 는필드버퍼에서읽어오고자하는필드키를나타내고, loc 은순차적으로읽어온필드데이터를가리키는포인터이다. 만약필드키의타입이정수또는실수인경우에는반드시각타입에맞는변수를사용하되위의함수프로토타입에맞게 type casting 을해주어야한다. fldlen 은읽어온데이터의길이를나타낸다. 56
58 반환값 지정한필드키를필드버퍼에서찾지못하면 1 을리턴하고 fberror 에에러번호를 setting 한다. 지정한필드키의필드데이터를정상적으로읽어왔다면 1을리턴한다 오류 다음과같은상황에서 fbget() 은실패하고, fberrno 에아래값중하나가설정된다. FBENOENT 지정한필드키가 FDLFILE( 환경변수 : default 값은 tmax.fdl) 에정의되어있지않으므로필드버퍼에서사용할수없는경우 fberror 는 FBENOENT 로 setting 된다. FBEINVAL 예제 input argument 로지정된값들중유효하지않은 argument 가있다. (CARRAY 타입인경우 fldlen 을지정하지않은경우도해당된다.) FBETYPE Tmax 에서지원하지않는 type 이사용되었다. #include demo_fdl.h... long rcvlen, ret; FLDLEN fldlen; char buffer[100]; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... 57
59 } fbput(fbuf, INPUT, aaaa, 0); fbput(fbuf, INPUT, bbbb, 0); fbput(fbuf, INPUT, cccc, 0); fbget(fbuf, INPUT, buffer, &fldlen); printf( Field Data: [%s]\n, buffer); /* output: Field Data: [aaaa] */ 참 조 fbput(), fbchg_tu(), fbget_tu(), fbchg_tu(), fbgetval(), fbgetval_last_tu(), fbgetvals_tu(), fbgetvall_tu() 58
60 fbgetalloc_tu 이름 fbgetalloc_tu : 필드버퍼에서지정한필드키의필드순번에해당하는필드데이터를지정한길이만큼버퍼를새로할당받아저장하여리턴 사용방법 #in clude <fbuf.h> #include <atmi.h> char *fbgetalloc_tu(fbuf *fbuf, FLDKEY fldkey, int nth, int *extralen) 설명 이함수는두번째및세번째 argument 로지정한필드키의필드순번에해당하는필드데이터를읽어오는데이때네번째 argument 로지정한길이만큼의새로운버퍼를할당하여그버퍼에데이터를저장하고그버퍼의포인터를리턴하는함수이다. 이때 extralen 을 0 으로지정하면함수수행후새로할당해야하는버퍼의크기가필드데이터의길이로 setting 된다. 그리고 extralen 은할당한버퍼의크기가설정된다. 여기에서새로할당받은버퍼는사용한후반드시사용자가메모리해제를해주어야한다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고, fieldkey 는필드버퍼에서읽어오고자하는필드키를나타내고, nth 는데이터를읽어오고자하는필드키의필드순번을나타낸다. 그리고 extralen 은새로할당받아야하는버퍼의크기를나타낸다 반환값 필드버퍼에서지정한필드키를찾지못하거나함수수행중다른에러가발생하였을경우에는이함수는 NULL 을리턴하고 fberror 에에러번호를 setting 한다. 성공했을경우에는필드데이터를저장한새로할당받은버퍼의포인터를리턴한다. 59
61 오류다음과같은상황에서 fbgetalloc_tu() 은실패하고, fberrno 에아래값중하나가설정된다. FBENOENT 지정한필드키가 FDLFILE( 환경변수 : default 값은 tmax.fdl) 에정의되어있지않으므로필드버퍼에서사용할수없는경우 fberror 는 FBENOENT 로 setting 된다. FBEMALLOC 시스템에러, 필드버퍼를메모리에할당하는것을실패할경우 fberror 는 FBEMALLOC 로 setting 된다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다. FBETYPE Tmax 에서지원하지않는 type 이사용되었다 예 제 #include demo_fdl.h... long ret; int extralen; char *buffer; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } 60
62 fbput(fbuf, INPUT, aaaa, 0); fbput(fbuf, INPUT, bbbb, 0); fbput(fbuf, INPUT, cccc, 0); extralen = 4; buffer = fbgetalloc_tu(fbuf, INPUT, 0, &extralen); printf( Field Data: [%s]\n, buffer); /* output: Field Data: [aaaa], returned after adding 4 bytes to the length of the field value. */ fbfree(fbuf); 참 조 fbgetalloc_tut(), fbput(), fbchg_tu(), fbget_tu(), fbchg_tu(), fbgetval(), fbgetval_last_tu(), fbgetvals_tu(), fbgetvall_tu() 61
63 fbgetalloc_tut 이름 fbgetalloc_tut : 필드버퍼에서지정한필드키의필드순번에해당하는 필드데이터를지정한타입으로필요한길이만큼 버퍼를 새로할당받아 저장하여리턴 사용방법 #include <fbuf.h> #include <atmi.h> char *fbgetalloc_tut(fbuf *fbuf, FLDKEY fldkey, int nth, int type, int *extralen) 설명 이함수는두번째및세번째 argument 로지정한필드키의필드순번에해당하는필드데이터를읽어오는데이때필드데이터의타입과상관없이지정한타입으로변환하여다섯번째 argument 로지정한길이만큼의새로운버퍼를할당하여그버퍼에데이터를저장하고그버퍼의포인터를리턴하는함수이다. fbgetalloc_tut() 함수는 fbgetalloc_tu() 함수와매우유사하지만가져오는필드데이터의타입을변환할수있다는점이다르다. 단 char * 형으로표현할수없는타입 int, long, double, long, float 의경우에는상황에맞게 type casting 을해주어야한다. 이때 extralen 을 0 으로지정하면함수수행후새로할당해야하는버퍼의크기가필드데이터의길이으로 setting 된다. 그리고 extralen 은할당한버퍼의크기가설정된다. 여기에서새로할당받은버퍼는사용한후반드시사용자가메모리해제를해주어야한다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고, fieldkey 는필드버퍼에서읽어오고자하는필드키를나타내고, nth 는데이터를읽어오고자하는필드키의필드순번을나타낸다. 그리고 type 은필드데이터를변환하고자하는데이터타입을지정해주면되고, extralen 은새로할당받아야하는버퍼의크기를 byte 단위로나타낸다. 62
64 type 에지정해줄수있는값들은다음과같다. : FB_CARRAY, FB_SHORT, FB_DOUBLE, FB_LONG, FB_STRING, FB_CHAR, FB_FLOAT, FB_INT 반환값 필드버퍼에서지정한필드키를찾지못하거나함수수행중다른에러가발생하였을경우에는이함수는 NULL 을리턴하고 fberror 에에러번호가 setting 된다. 성공했을경우에는필드데이터를저장한새로할당받은버퍼의포인터를리턴한다 오류 다음과같은상황에서 fbgetalloc_tut() 은실패하고, fberrno 에아래값중하나가설정된다. FBENOENT 지정한필드키가 FDLFILE( 환경변수 : default 값은 tmax.fdl) 에정의되어있지않으므로필드버퍼에서사용할수없는경우 fberror 는 FBENOENT 로 setting 된다. FBEMALLOC 시스템에러. 필드버퍼를메모리에할당하는것을실패할경우 fberror 는 FBEMALLOC 로 setting 된다. FBENOSPACE 필드버퍼에데이터를저장하거나복사할공간이부족할경우 fberror 는 FBENOSPACE 로 setting 된다. FBEBADFLD 유효하지않은필드키가사용되었다. 일반적으로필드키가 fdlc utility 를사용하여컴파일되지않은필드키가사용되었을경우 fberror 는 FBEBADFLD 로 setting 된다. 63
65 FBETYPE Tmax 에서 지원하지않는 type 이사용되었다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다. 예를들면 fbuf 가 NULL 일경우이에러가발생한다 예 제 #include demo_fdl.h... long ret; int extralen; char *buffer; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } fbput(fbuf, INPUT, aaaa, 0); fbput(fbuf, INPUT, bbbb, 0); fbput(fbuf, INPUT, cccc, 0); extralen = 4; buffer = fbgetalloc_tut(fbuf, INPUT, 0, FB_STRING, &extralen); printf( Field Data: [%s]\n, buffer); /* output: Field Data: [aaaa], returned after adding 4 bytes to the length of the field value. */ fbfree(fbuf); 참 fbgetalloc_tu 조 (), fbput(), fbget_tu(), fbchg_tu(), fbgetval(), fbgetval_last_tu(), fbgetvals_tu(), 64
66 fbgetvall_tu() 65
67 fbget_fbsize 이름 fbget_fbsize : 필드버퍼의크기를리턴 사용방법 #include <fbuf.h> #include <atmi.h> long fbget_fbsize(fbuf *fbuf) 설명 이함수는 fballoc() 또는 tpalloc() 함수에의해서할당된필드버퍼의크기를리턴하는함수이다. fballoc() 또는 tpalloc() 함수를통하여메모리에필드버퍼를 1024 byte 보다작은버퍼를할당하려고할때기본적으로메모리는 1024 byte 로할당하므로이러한경우 fbget_fbsize() 함수는 1024 byte 를리턴한다. 그이외의경우에는 fbget_fbsize() 함수의리턴값은 fbcalcsize() 함수로계산한결과와같다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이다 반환값 메모리에할당된필드버퍼의크기를리턴한다 오류 다음과같은상황에서 fbget_fbsize() 은실패하고, fberrno 에아래값중하나가설정된다 FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다. 예를들면 fbuf 가 NULL 일경우이에러가발생한다. 66
68 예제 #include demo_fdl.h... long ret; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } fbput(fbuf, INPUT, 1111, 0); ret = fbget_fbsize(fbuf ) ; printf( Field Buffer Size: [%ld]\n, ret); /* output: Field Buffer Size: [1024] */ 참조 fbcalcsize(), tpalloc(), fballoc(), fbfree(), fbinit() 67
69 fbget_fldkey 이름 fbget_fldkey : 지정한필드명과 matching 되는필드키를리턴 사용방법 #include <fbuf.h> #include <atmi.h> FLDKEY fbget_fldkey(char *name) 설명 이함수는 fdlc utility 를통하여컴파일되어생성된필드테이블 (FDLFILE 에설정된 fdl 파일 ) 을참조하여지정한필드명과 matching 되는식별자 (identifier) 를리턴하는함수이다. 여기에서는이식별자를필드키라고부른다. name 은필드테이블을생성하는데사용되는필드이름이다. 필드버퍼에데이터를저장하기위해서는지정한필드이름에해당하는필드키를알아야한다. 왜냐하면필드버퍼에저장되는데이터의형식은필드키와필드데이터의조합이기때문이다 반환값 지정한필드이름이필드테이블에존재하지않는경우 fbget_fldkey() 는 0 을리턴하고그렇지않은경우에는필드이름과 matching 되는필드키를리턴한다 예제 #include demo_fdl.h... FLDKEY fkey; 68
70 FBUF *sndbuf; fkey = fbget_fldkey( INPUT ); pri ntf( Field Key : [%d]\n, fkey); /* output : Field Key : [ ] */... fbput(sndbuf, fkey, 1111", 0); 참조 fbget_fldname(), fbget_fldno(), fbget_fldtype(), fbget_strfldtype(), fbtypecvt() 69
71 fbget_fldname 이름 fbget_fldname : 지정한필드키와 matching 되는필드이름을리턴 사용방법 #include <fbuf.h> #include <atmi.h> char *fbget_fldname(fldkey fldkey) 설명 fbget_fldkey() 함수와는반대로, fbget_fldname() 함수는 fdlc utility 를통하여 컴파일되어생성된필드테이블 (FDLFILE 에설정된 fdl 파일 ) 을참조하여 지정한필드키와 matching 되는필드이름을리턴하는함수이다. fldkey 는 필드 테이블을 생성하기 위하여 필요한 데이터를 정의해 놓은 파일 (***.f) 을 fdlc utility 를 통하여 컴파일하여 생성된 헤더 파일 (***_fdl.h) 을 참조하거나 또는 fbget_fldkey() 를 이용해서 얻은 필드키이다 반환값지정한필드키에대한필드이름이필드테이블에존재하지않을경우함수는 NULL 을리턴하고그렇지않은경우에는지정한필드키와 matching 되는필드이름을리턴한다 예제 #include demo_fdl.h... FLDKEY fkey; char *name; 70
72 fkey = fbget_fldkey( INPUT ); printf( Field Key : [%d]\n, fkey); /* output : Field Key : [ ] */ name = fbget_fldname(fkey); printf( Field Name : [%s]\n, name); /* output : Field Name : [INPUT] */ 참조 fbget_fldkey(), fbget_fldno(), fbget_fldtype(), fbget_strfldtype(), fbtypecvt() 71
73 fbget_fldno 이름 fbget_fldno : 지정한필드키와 matching 되는필드번호를리턴 사용방법 #in clude <fbuf.h> #include <atmi.h> int fbget_fldno(fldkey fldkey) 설명 필드테이블을생성하기위해서는필드의타입, 필드이름, 필드번호등이필요하며이들의조합으로 unique 한필드키를만들수있다. 이러한필드키들을모아서관리하는것이필드테이블이다. fbget_fldno() 함수는필드테이블을생성하기위하여필요한데이터중지정한필드키와 matching 되는필드번호를리턴하는함수이다. fldkey 은필드테이블을생성하기위하여필요한데이터를정의해놓은파일 (***.f) 을 fdlc utility 를통하여컴파일하여생성된헤더파일 (***_fdl.h) 을참조하거나또는 fbget_fldkey() 를이용해서얻은필드키이다 반환값 함수수행이성공했을경우에는지정한필드키와 matching 번호를정수로리턴한다. 되는필드 예제 #include demo_fdl.h"... FLDKEY fkey; int no; 72
74 fkey = fbget_fldkey( INPUT ); printf( Field Key : [%d]\n, fkey); /* output : Field Key : [ ] */ no = fbget_fldno(fkey); printf( Field No. : [%d]\n, no); /* output : Field No. : [101] */ 참조 fbget_fldname(), fbget_fldkey(), fbget_fldtype(), fbget_strfldtype(), fbtypecvt() 73
75 fbget_fldtype 이름 fbget_fldtype : 지정한필드키의필드 타입을정수로반환 사용방법 #in clude <fbuf.h> #include <atmi.h> int fbget_fldtype(fldkey fldkey) 설명 이함수는지정한필드키에저장될필드데이터의타입을미리지정된정수로리턴하는함수이다. 이함수에서반환되는필드타입과그에 matching 되는리턴값은다음과같다. RETURN VALUE (real type number) (real type number) Field type 1 character 2 short integer 3 integer 4 long integer 5 float 6 double 74
76 7 string 8 character array(carray) fldkey 은필드테이블을생성하기위하여필요한데이터를정의해놓은 파일 (***.f) 을 fdlc utility 를 통하여 컴파일하여 생성된 헤더 파일 (***_fdl.h) 을 참조하거나 또는 fbget_fldkey() 를 이용해서 얻은 필드키이다 반 환 값 반환값은위와같이 1~8 까지의 int 값이다 예 제 #include demo_fdl.h... FLDKEY fkey; int type; fkey = fbget_fldkey( INPUT ); printf( Field Key : [%d]\n, fkey);/* output: Field Key : [ ] */ type = fbget_fldtype(fkey); printf( Field Type : [%d]\n, type);/* output : Field Type : [7] */ 참조 fbget_fldname(), fbget_fldno(), fbget_fldkey(), fbget_strfldtype(), fbtypecvt() 75
77 fbgetlast_tu 이 름 fbgetlast_tu : 필드버퍼에서지정한필드키에저장되어있는필드데이터중마지막순번의데이터를리턴 사용방법 #include <fbuf.h> #include <atmi.h> in t fbgetlast_tu(fbuf *fbuf, FLDKEY fldkey, int *nth, char *loc, int *len) 설명이함수는필드버퍼에서지정한필드키에저장되어있는필드데이터중마지막순번의데이터를리턴하는함수이다. 함수가리턴할때리턴되는데이터가필드데이터중몇번째순번인지와필드데이터의길이를데이터와함께리턴한다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고, fieldkey 는필드버퍼에서읽어오고자하는필드키를나타내고, nth 는지정한필드키에저장되어있는필드데이터중마지막순번이저장되는포인터이다. 그러니까 nth 는데이터를읽어오고자하는필드키의필드순번을저장하는포인터이다. loc 는가져온필드데이터를저장하는포인터이고, len 은가져온필드데이터의길이를저장하는포인터이다 반환값 필드버퍼에서지정한필드키를찾지못하거나함수수행중다른에러가발생하였을경우에는이함수는 -1 을리턴하고 fberror 에에러번호를 setting 한다. 성공했을경우에는 1 을리턴한다. 76
78 오류다음과같은상황에서 fbgetlast_tu() 은실패하고, fberrno 에아래값중하나가설정된다. FBENOENT 지정한필드키가 FDLFILE( 환경변수 : default 값은 tmax.fdl) 에정의되어있지않으므로필드버퍼에서사용할수없는경우 fberror 는 FBENOENT 로 setting 된다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다. FBETYPE Tmax 에서 지원하지않는 type 이사용되었다. FBEBADFL D 잘못된필드를사용하였다 예 제 #include demo_fdl.h... long ret; FLDKEY len; int nth; cha r buffer[100] ; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } 77
79 fbput(fbuf, INPUT, aaaa, 0); fbput(fbuf, INPUT, bbbb, 0); fbput(fbuf, INPUT, cccc, 0); fbgetlast_tu(fbuf, INPUT, &nth, buffer, &len); printf( Field Data: [%s], occurrence = %d, len = %d\n, buffer, nth, len ); /* output: Field Data: [cccc], occurrence = 2, len = 4 */ 참조 fbput(), fbchg_tu(), fbgetalloc_tu() fbget_tu(), fbgetval(), fbgetval_last_tu(), fbgetvals_tu(), fbgetvall_tu(), 78
80 fbget_strfldtype 이름 fbget_strfldtype : 지정한필드키의필드타입을문자열로반환 사용방법 #include <fbuf.h> #in clude <atmi.h> char *fbget_strfldtype(fldkey fldkey) 설명 이함수는지정한필드키에저장될필드데이터의타입을문자열로 리턴하는함수이다. fbget_fldtype() 은지정한필드키의필드타입을미리 지정한정수로리턴하지만이함수는필드타입을문자열그대로 리턴한다. fldkey 은필드테이블을생성하기위하여필요한데이터를 정의해놓은파일 (***.f) 을 fdlc utility 를통하여컴파일하여생성된헤더 파일 (***_fdl.h) 을 참조하거나 또는 fbget_fldkey() 를 이용해서 얻은 필드키이다 반환값 Argument 로지정한필드키에해당하는필드타입이없거나필드키가잘못지정된경우에는빈문자열을리턴하고존재할경우에는지정한필드키에대한필드타입을문자열로리턴한다 예제 #include demo_fdl.h... FLDKEY fkey; char *stype; 79
81 .. fkey = fbget_fldkey( INPUT ); printf( Field Key : [%d]\n, fkey); /* output : Field Key : [ ] */ stype = fbget_strfldtype(fkey); printf( Field Type : [%s]\n, stype); /* output : Field type : [string] */ 참조 fbget_fldname(), fbget_fldno(), fbget_fldtype(), fbtypecvt() 80
82 fbget_tu 이름 fbget_tu : 지정한필드키의필드순번에해당하는필드데이터를리턴 사용방법 #include <fbuf.h> #include <atmi.h> int fbget_tu(fbuf *fbuf, FLDKEY fldkey, int nth, char *value, FLDLEN *len) 설명 이함수는필드버퍼에서두번째 argument 에서지정한필드키의세번째 argument 에서지정한필드순번에해당하는필드의데이터를읽어오는함수이다. fbget() 함수와거의같은역할을하지만 fbget() 함수는읽어오고자하는필드키만지정해주면그필드키에저장되어있는필드데이터를처음부터차례로순번을증가시켜가면서읽어오지만 fbget_tu() 함수는지정한필드키에저장되어있는데이터중필드순번까지도지정할수있다는점이다르다. 그리고 fbget() 함수는한번읽어온데이터는더이상 access 할수없지만 fbget_tu() 함수는필드순번까지지정해줄수있으므로하나의필드데이터에대하여여러번읽어올수있다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고, fieldkey 는필드버퍼에서읽어오고자하는필드키를나타내고, nth 는읽어오고자하는필드순번을나타낸다. value 는읽어온필드데이터를가리키는포인터이다. 만약필드키의타입이정수또는실수인경우에는반드시각타입에맞는변수를사용하되위의함수프로토타입에맞게 type casting 을해주어야한다. fldlen 은읽어온데이터의길이를나타낸다. 81
83 반환값이함수에서는두가지를가져오는데하나는읽어온필드데이터를 value 에저장하고읽어온필드데이터의길이를 len 에저장하여그것들을포인터로리턴한다. 만약지정한필드키가필드버퍼에존재하지않는경우에는 1 을리턴하고 fberror 에에러번호를 setting 한다. 그렇지않은경우에는 1 을리턴한다 오류 다음과같은상황에서 fbget_tu() 은실패하고, fberrno 하나가설정된다. 에아래값중 FBENOENT 지정한필드키가 FDLFILE( 환경변수 : default 값은 tmax.fdl) 에 정의되어있지않으므로필드버퍼에서 사용할수 없는경우 fberror 는 FBENOENT 로 setting 된다. FBEINVAL input argument 있다. 로지정된값들중유효하지않은 argument 가 FBETYPE Tmax 에서지원하지않는 type 이사용되었다. FBEBADFLD 잘못된필드를사용하였다 예제 #include demo_fdl.h... char buffer[100]; 82
84 long rcvlen; FLDLEN fldlen; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } fbput(fbuf, INPUT, aaaa, 0); fbput(fbuf, INPUT, bbbb, 0); fbput(fbuf, OUTPUT, cccc, 0); fbget_tu(fbuf, INPUT, 1, buffer, &fldlen); printf( Data: [%s]\n, buffer) /* output: Data: [bbbb] */ 참 조 fbput(), fbget(), fbget_tut(), fbgetval(), fbgetval_tu(), fbgetvals_tu(), fbgetvall_tu(), fbgetval_last_ tu() 83
85 fbget_tut 이름 fbget_tut : 지정한필드키의필드순번에해당하는필드타입으로변환하여리턴 데이터를지정한 사용방법 #include <fbuf.h> #include <atmi.h> int fbget_tut(fbuf *fbuf, FLDKEY fldkey, int nth, char *value, FLDLEN *len, int type) 설명 이함수는필드버퍼에서두번째 argument 에서지정한필드키의세번째 argument 에서지정한필드순번에해당하는필드의데이터를읽어오는함수이다. fbget_tu() 함수와거의같은역할을하지만 fbget_tu() 함수는지정한필드키의필드순번에해당하는필드데이터를그대로읽어오지만 fbget_tut() 함수는필드데이터를지정한타입으로변환하여읽어올수있다는점이다르다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고, fieldkey 는필드버퍼에서읽어오고자하는필드키를나타내고, nth 는읽어오고자하는필드순번을나타낸다. value 는읽어온필드데이터를가리키는포인터이다. 만약필드키의타입이정수또는실수인경우에는반드시각타입에맞는변수를사용하되위의함수의 prototype 에맞게 type casting 을해주어야한다. fldlen 은읽어온데이터의길이를나타내고, type 은읽어온데이터를변환하고자하는데이터의타입을지정해주면된다. type 에지정해줄수있는값들은다음과같다. : FB_CARRAY, FB_SHORT, FB_DOUBLE, FB_LONG, 84
86 FB_STRING, FB_CHAR, FB_FLOAT, FB_INT 반환값이함수에서는두가지를가져오는데하나는읽어온필드데이터를 value 에저장하고읽어온필드데이터의길이를 len 에저장하여그것들을포인터로리턴한다. 만약지정한필드키가필드버퍼에존재하지않는경우에는 1 을리턴하고 fberror 에에러번호를 setting 한다. 그렇지않은경우에는 1 을리턴한다 오류 다음과같은상황에서 fbget_tut() 은실패하고, fberrno 하나가설정된다. FBENOENT 에아래값 중 지정한필드키가 FDLFILE( 환경변수 : default 값은 tmax.fdl) 에정의되어있지않으므로필드버퍼에서사용할수없는경우 fberror 는 FBENOENT 로 setting 된다. FBETYPE Tmax 에서지원하지않는 type 이사용되었다. FBEBADFLD 잘못된필드를사용하였다. FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다. 예를들면 fbuf 가 NULL 일경우이에러가발생한다 예 제 #include demo_fdl.h 85
87 ... FBUF *fbuf; int ret, val=65; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } fbputt(fbuf, INPUT, (char *)&val, 0, FB_INT); fbputt(fbuf, INTDATA, "1111", 0, FB_ STRING); fbprint(fbuf); fbget_tut(fbuf, INTDATA, 0, (char *)&ret, &fldlen, FB_INT); printf("field Data: [%d]\n", ret); /* output: Field Data: [1111] */ 참 조 fbput(), fbget(), fbget_tu(), fbgetval(), fbgetval_tu(), fbgetvals_tu(), fbgetvall_tu(), fbgetval_last_tu() 86
88 fbget_unused 이름 fbget_unused : 메모리에할당된필드버퍼중아직버퍼의크기계산 사용되지않은필드 사용방법 #include <fbuf.h> #include <atmi.h> long fbget_unused(fbuf *fbuf) 설명 이함수는 fballoc() 또는 tpalloc() 함수에의해서메모리에할당된필드버퍼중아직사용되지않은필드버퍼의크기를계산하여 byte 단위로리턴하는함수이다. fbuf 는 fballoc() 또는 tpalloc() 함수에의해서메모리에할당된필드버퍼이다 반환값 메모리에할당된필드버퍼중아직사용되지않은메모리의크기를 byte 단위로리턴한다 오류 다음과같은상황에서 fbget_used() 은실패하고, fberrno 에아래값중하나가설정된다 FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다. 87
89 예제 #include demo_fdl.h... long ret; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } fbput(fbuf, INPUT, 1111, 0); ret = fbget_unused (fbuf); printf( Unused Buffer Size: [%d]\n, ret); /* output: Unused Buffer Size: [1000] */ 참조 fbcalcsize(), fbget_fbsize(), fbget_used() 88
90 fbget_used 이름 fbget_used : 메모리에크기계산 할당된필드버퍼중현재사용중인필드버퍼의 사용방법 #include <fbuf.h> #include <atmi.h> long fbget_used(fbuf *fbuf) 설명 이함수는 fballoc() 또는 tpalloc() 함수에의해서메모리에할당된필드버퍼중현재사용중인필드버퍼의크기를계산하여 byte 단위로리턴하는함수이다. fbuf 는 fballoc() 또는 tpalloc() 함수에의해서메모리에할당된필드버퍼이다 반환값 메모리에할당된필드버퍼중현재사용중인메모리의크기를 byte 단위로리턴한다 오류 다음과같은상황에서 fbget_used() 은실패하고, fberrno 에아래값중하나가설정된다 FBEINVAL input argument 로지정된값들중유효하지않은 argument 가있다. 89
91 예제 #include demo_fdl.h... long ret; FBUF *fbuf; if ((fbuf = fballoc(10, 100)) == NULL) { printf( fballoc failed, errno = %d\n, fberror);... } fbput(fbuf, INPUT, 1111, 0); ret = fbget_used(fbuf); printf( Used Buffer Size: [%d]\n, ret); /* output: Used Buffer Size: [24] */ 참조 fbcalcsize(), fbget_fbs ize(), fbget_unused() 90
92 fbgetf 이름 fbgetf : 필드버퍼에 저장되어있는필드데이터를순차적으로리턴 사용방법 #include <fbuf.h> #include <atmi.h> int fbgetf(fbuf *fbuf, FLDKEY fldkey, char *loc, int *fldlen, int *pos) 설명 이함수는 fballoc() 또는 tpalloc() 함수를통하여메모리에할당된필드버퍼에저장되어있는필드데이터들을순차적으로읽어오는함수이다. fbgetf() 함수는 fbget() 함수와똑같은기능을하는함수이지만내부적으로다음필드의위치를저장하고있으므로 fbget() 함수보다수행속도가월등하게빠르다. (e.g. 실제테스트해본결과 Visual Basic 에서 20,000 개의필드데이터를받는경우, fbget() 을이용하면 400 초가걸리는반면, fbgetf() 를이용하면단 2.5 초만걸린다.) pos 는 fbgetf() 함수를사용할필드키마다따로두어야하고, fbgetf() 함수를호출하기전에반드시 0으로초기화해주어야한다. fbuf 는 fballoc() 또는 tpalloc() 함수로메모리에할당된필드버퍼이고, fldkey 는데이터를가져오고자하는필드키를나타내고, 읽어온데이터는 loc 에리턴되고, 읽어온데이터의길이는 fldlen 에리턴된다. pos 는읽어올다음데이터의위치를리턴하는포인터이다 반환값 지정한필드키를필드버퍼에서찾지못하면 1 을리턴하고 fberror 에에러번호를 setting 한다. 지정한필드키의필드데이터를정상적으로읽어왔다면 1 을리턴한다. 91
Tmax FDL Reference Manual : TMFR : Tmax 3.8 : Sep 20, 2003 : Sep 20, 2003
Tmax FDL Reference Manual : TMFR-0702-08-380 : Tmax 3.8 : Sep 20, 2003 : Sep 20, 2003 Tmax FDL Reference Manual Tmax 3.8 1 2 Copyright (c) 2001 Tmax Soft Co., Ltd. All Rights Reserved.,,, Tmax soft.,,,.....
More informationTmax
Tmax FDL Reference Guide Tmax v5.0 SP1 Copyright 2009 TmaxSoft Co., Ltd. All Rights Reserved. Copyright Notice Copyright 2009 TmaxSoft Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구서현동 263 분당스퀘어 (AK 프라자
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationMicrosoft PowerPoint - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More information구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을
(structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More informationMicrosoft PowerPoint - chap03-변수와데이터형.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.
More informationAPI 매뉴얼
PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More informationKNK_C_05_Pointers_Arrays_structures_summary_v02
Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",
More informationMicrosoft Word - AnyLink Introduction v3.2.3.doc
Copyright 2007 Tmax Soft Co., Ltd. All Rights Reserved. AnyLInk Copyright Notice Copyright 2007 Tmax Soft Co., Ltd. All Rights Reserved. Tmax Soft Co., Ltd. 대한민국서울시강남구대치동 946-1 글라스타워 18 층우 )135-708 Restricted
More information이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
More information강의 개요
DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE
More informationPowerPoint Presentation
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More information슬라이드 1
/ 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file
More informationMicrosoft PowerPoint 웹 연동 기술.pptx
웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우
More informationMicrosoft PowerPoint - chap06-5 [호환 모드]
2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More information기초컴퓨터프로그래밍
구조체 #include int main() { } printf("structure\n"); printf("instructor: Keon Myung Lee\n"); return 0; 내용 구조체 (struct) Typedef 공용체 (union) 열거형 (enum) 구조체 구조체 (structure) 어떤대상을표현하는서로연관된항목 ( 변수 )
More informationMicrosoft PowerPoint - chap11-포인터의활용.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에
More informationPowerPoint 프레젠테이션
Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More information컴파일러
YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",
More informationThe Pocket Guide to TCP/IP Sockets: C Version
인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)
More informationPoison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3
Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드
More information<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>
쉽게풀어쓴 C 언어 Express 제 17 장동적메모리와연결리스트 이번장에서학습할내용 동적메모리할당의이해 동적메모리할당관련함수 연결리스트 동적메모리할당에대한개념을이해하고응용으로연결리스트를학습합니다. 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More information02장.배열과 클래스
---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More information윤성우의 열혈 TCP/IP 소켓 프로그래밍
C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct
More informationChapter 4. LISTS
C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More informationMicrosoft PowerPoint - [2009] 02.pptx
원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include
More informationuntitled
int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015
More informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More information<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>
#include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More informationPowerPoint Template
16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //
More information목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate
ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition
More informationPowerPoint 프레젠테이션
KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된
More informationPowerPoint Presentation
FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org
More informationPowerPoint Presentation
Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More informationMicrosoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600
균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at
More information비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2
비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,
More information<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>
의료프로그래밍실습 의료공학과이기영 1 Chap. 11 파일입출력 2 1 이장의목표 텍스트파일의입출력방법을익힌다. (284 쪽그림참조 ) 3 C 언어의파일종류 텍스트파일 (text file) 사람들이읽을수있는문자들을저장하고있는파일 텍스트파일에서 한줄의끝 을나타내는표현은파일이읽어들여질때, C 내부의방식으로변환된다. 이진파일 (binary file) : 자료형그대로의바이트수로연속해서저장
More informationPowerPoint 프레젠테이션
Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2
More information제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터
More informationData Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager
Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager are trademarks or registered trademarks of Ari System, Inc. 1 Table of Contents Chapter1
More informationuntitled
if( ) ; if( sales > 2000 ) bonus = 200; if( score >= 60 ) printf(".\n"); if( height >= 130 && age >= 10 ) printf(".\n"); if ( temperature < 0 ) printf(".\n"); // printf(" %.\n \n", temperature); // if(
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현
More informationPowerPoint Presentation
FORENSIC INSIGHT; DIGITAL FORENSICS COMMUNITY IN KOREA SQL Server Forensic AhnLab A-FIRST Rea10ne unused6@gmail.com Choi Jinwon Contents 1. SQL Server Forensic 2. SQL Server Artifacts 3. Database Files
More informationMicrosoft PowerPoint - a10.ppt [호환 모드]
Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는
More informationC 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More informationadfasdfasfdasfasfadf
C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.
More informationbn2019_2
arp -a Packet Logging/Editing Decode Buffer Capture Driver Logging: permanent storage of packets for offline analysis Decode: packets must be decoded to human readable form. Buffer: packets must temporarily
More informationC++ Programming
C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationDBMS & SQL Server Installation Database Laboratory
DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.
More information슬라이드 1
정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More informationMySQL-.. 1
MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition
More informationC 언어 프로그래밊 과제 풀이
과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍
More informationThe Pocket Guide to TCP/IP Sockets: C Version
얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow
More informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
More information<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>
/* */ /* LZWIN.C : Lempel-Ziv compression using Sliding Window */ /* */ #include "stdafx.h" #include "Lempel-Ziv.h" 1 /* 큐를초기화 */ void LZ::init_queue(void) front = rear = 0; /* 큐가꽉찼으면 1 을되돌림 */ int LZ::queue_full(void)
More information중간고사
중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 16 강. 파일입출력목차 파일입출력기초 파일입출력모드 텍스트파일과이진파일 이진파일입출력 임의접근 1 /18 16 강. 파일입출력파일입출력기초 파일입출력과정 파일스트림객체생성 파일열기 사용 : 기본적으로표준입출력객체 (cin, cout) 사용방법과동일 파일닫기 파일스트림클래스의종류
More informationPowerPoint 프레젠테이션
@ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program
More informationMicrosoft PowerPoint - chap11.ppt [호환 모드]
2010-1 학기프로그래밍입문 (1) 11 장입출력과운영체제 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr k 0 특징 printf() - 임의의개수의인자출력 - 간단한변환명세나형식을사용한출력제어 A Book on C, 4ed. 11-1 printf() printf(control_string, other_argument) -
More informationMicrosoft PowerPoint - e pptx
Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells
More informationuntitled
Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.
More information쉽게 풀어쓴 C 프로그래밍
제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using
More informationMicrosoft PowerPoint - additional01.ppt [호환 모드]
1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능
More information버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
More information인디쓔피-IOM핸돜벁닄큐1014pdf, page 59 @ Preflight ( IOM핸돜벁닄큐__1014 )
Publisher: International Organization for Migration 17, route des Morillons 1211 Geneva 19 Switzerland Tel: +41.22.717 91 11 Fax: +41.22.798 61 50 E-mail: hq@iom.int Internet: http://www.iom.int ISBN 978
More informationJUNIT 실습및발표
JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected
More information슬라이드 1
Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치
More information< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>
Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법
More information