DBMaker 5.4  OhLgpWIN32 UDF

1. n߂
2. UDF dll t@C\bh̍쐬
3.  - UDF̍쐬 NG[܂


1. n߂

UDF - [U`t@NV
DBMaker WIN32 platforms̃[U[`t@NV쐬T|[g. [UUDF߂C source file ̃ev[gɏ]. 
DBMaker UDF܂ƁADBMaker ͐Vȋ@\ǉꂽ悤ɌBƂ̂́AUDFgp邱ƂDBMaker's 
built-in functionƑSƂɂȂ邩ł.udf dll file𗧂グ邽߂ɁAUDF's source fileɃNlibrary - dmudf.lib񋟂. 
܂A[U̎QlƂtemplate C source file񋟂.

2. UDF dll t@C\bh쐬@

Microsoft VC++ 6.0gp҂Ql邽߂template.c template񋟂. 
Lł́Audf60.makƂ.

܂n߂ɁAudf60.makɂƁAdmudf.lib file͂ǂɂ߂.̌AVisual C++ύX̕Kvȏ𖾊mɂ邽߂IDE gp.

Step 1. Copy udf60.mak templateRs[ACӂdirectoryɍ쐻t@C
Step 2. Choose <File> -> <Open Workspace> IAfile project  WorkspaceJ.

Step 3. <Project Workspace>ł<File View>IAtemplate.c NbNADelete keyō폜.̌Ac[o[<Insert>IсA< Files into project> NbNA 쐬project workspace̒  .c fileǉ.

Step 4. <Build> -> <Settings>.WIN32 DebugɂƂƁA Project Settings <General>Ńt@Co͂ύX邱Ƃł.ev[g쐬t@C        fBNg̏o͂intermediate60Debݒ肳Ă.

Step 5. Project Settings <Link>ŁAJeS[ACe<General>IԂƁAt@C̕ύX<Output file name>璼ډ\ƂȂ. 
        ܂Aworking directory̐ݒ莞Ɏgp<Object/Library modules>T|[gdmudf.lib fileɃNpXύX邱Ƃł.

L̍ƏIAgdllmake file.悭XebvgAWIN32 Release version dll file̍쐬\ł.LȊÓAftHg̐ݒςȂ. 

: VC ++̃p[[ÚAL̕@dllmake fileō쐬邱Ƃ\ł. structure member alignment  4 bytesɐݒ肷邱Ƃ̐Sł. 
    ( In VC ++ 4.2 IDE project@Workspace̎, C/C++ itemI,Category dialog box,<Code Generation>I. structure member alignment optionoĂ,
      4 bytesI.


ȉ̐ݒłtemplate make filedllݎî߂Ɏgp.


template.c, libudf.h (DBMaker provides)܂܂Ă܂@\o͂ɂȂĂ邱ƂmFKvL.     
                                                               
 :                                                       
   __declspec(dllexport) datatype YOUR_FUNCTION( ...... )      
                                                               
 ʂ̕@Ƃċ@\o͂̂߂def file project workspaceɍ쐬邱Ƃ\ł.   

ꂪIdebug/release dll fileł.̌udf60.dll file.       

1. make file C default t@Cl[ƂĂtemplate.c ]܂ȂȂ template.cmake file폜AC filemake file udf60.mak 
        project workspaceɑ}邱Ɓioj.

2. UDF̋@\UPPERCASEɂ邱.


3. - UDF쐬NG[܂


UDF쐬@̗͈̋ȉ̒ʂ.

:

DMDEMOɃf[^x[XA̒t1邻table schema c1 int, c2 char(10))ɂ. ܂t1Ƀf[^.

dmSQL> t1ZNg;

    c1          c2     
=========== ========== 
         10 1          
         20 2          
         30 3          

3I


Xebv1. DBMaker ɃT|[gꂽexample template.c ɂudf60.dll.
Xebv2. dmconfig.ini t@C, UDF dll t@ĈDMDEMOZNVPCǉ.

        [DMDEMO]
        DB_DBDir = D:\UDFDEMO
        DB_FODIR = D:\UDFDEMO\FO
        DB_LBDIR = D:\UDF\60Deb <- ǉ
        ^^^^^^^^^^^^^^^^^^^^^^^
Xebv3. f[^x[XDMDEMOX^[g,UDF @\쐬:

[Grammer] create function UDF_DLL_NAME.UPPERCASE_FUNCTION_NAME
          (FUNCTION_DATATYPE) RETURNS FUNCTION_OUTPUT_DATATYPE;

          ̒UDF_DLL_NAME udf60 ,the UPPERCASE_FUNCTION
          _NAME INT2STR, FUNCTION_DATATYPE int, FUNCTION_OUTPUT
          _DATATYPE varchar(11)ł.

          function udf60.INT2STR(int)쐬Ăvarchar(11)ɖ߂;

Xebv4. NG[ UDF @\INT2STR ̌.

[Grammer] RELATED_TABLE UPPERCASE_FUNCTION_NAME(RELATED_TABLE_COLUMNNAME)I;
        
          ̒UPPERCASE_FUNCTION_NAME  INT2STR,RELATED_TABLE_COLUMNNAME c1ARELATED_TABLEt1ł.

          dmSQL> t1INT2STR(c1)I;

          INT2STR(c1) 
          =========== 
          10          
          20          
          30          

          3I

Xebv5. UDF function STR2INT̐VK쐬.


        dmSQL> function udf60.STR2INT(varchar(11))쐬intɖ߂;

        dmSQL> t1STR2INT(c2) I; 

        STR2INT(c2) 
        =========== 
                  1 
                  2 
                  3 

        3I
