|
<snip> anyone have a sample about how to using sql UDF(scratchpad) with rpgle module ? </snip> Here is example I put together. If you want source code without having to cut and paste out, send me an e-mail at alan0307d@xxxxxxxxxxx and I will send it with the copy modules included. This program is an RPG ILE version of C example "Counter" in manuals under keyword "scratchpad". Create instructions are in the header of each one to be used by my make tool COMPILE. EXUDF - Top level EXUDF_PR - Prototypes. EXUDF_B - Bindary. EXUDF_M01 - RPG/ILE module. ************************************************************************ ************* Result of using function Counter. SELECT counter(), STID, ITNBR FROM itmrva COUNTER ( ) Site Item number ID 1 1 . 2 1 ABSORBANT 3 1 ACETONE 4 1 ACID ************************************************************************ *** SQL Statement to create UDF. EXUDF_SQL CREATE FUNCTION COUNTER() RETURNS INT SCRATCHPAD NOT DETERMINISTIC NO SQL NO EXTERNAL ACTION LANGUAGE RPGLE PARAMETER STYLE DB2SQL EXTERNAL NAME 'ALANC/EXUDF(UDF_Counter)' DISALLOW PARALLEL ************************************************************************ *** Top level EXUDF *_> DLTSRVPGM SRVPGM(@5/@4) *_> CRTSRVPGM SRVPGM(@5/@4) + *_> MODULE(EXUDF_M01) + *_> SRCFILE(@2/@1) SRCMBR(EXUDF_B) + *_> TEXT('Example Scratchpad UDF') + *_> ACTGRP(QILE) *============================================================= * Service Pgm: EXUDF * By.........: Alan G. Campin * Date.......: 09/19/2006 * Purpose....: Example SQL UDF using scratchpad. RPG/ILE version * of C example in manual. *============================================================= ************************************************************************ ***** Prototype EXUDF_PR d UDF_Counter... d pr ExtProc('UDF_Counter') d PR_OutCounter... d Like(StdInt) d PR_OutCounterNull... d Like(StdIntSml) d PR_OutSQLState... d 5a Varying d PR_InFunctionName... d 139a Varying d Const d PR_InSpecificName... d 128a Varying d Const d PR_OutMessageText... d 70a Varying d PR_InOutScratchPad... d LikeDs(TD_ScratchPad) * Type definition for ScratchPad d TD_ScratchPad... d ds Qualified d Based(StdNulPtr) d DataStructureLength... d Like(StdInt) d Counter... d Like(StdInt) d UnUsed... d 96a ************************************************************************ ** Bindary source EXUDF_B STRPGMEXP PGMLVL(*CURRENT) EXPORT SYMBOL('UDF_Counter') ENDPGMEXP ************************************************************************ * RPG/ILE Module. EXUDF_M01 *_> DLTMOD MODULE(@5/@4) *_> CRTRPGMOD MODULE(@5/@4) SRCFILE(@2/@1) SRCMBR(@3) + *_> DBGVIEW(@9) OPTIMIZE(@8) OPTION(*EVENTF) *============================================================= * Module.....: EXUDF_M01 * By.........: Alan G. Campin * Date.......: 09/19/2006 * Purpose....: Example SQL UDF using scratchpad. RPG/ILE version * of C example in manual. *============================================================= h NoMain Option(*Srcstmt:*Nodebugio) /copy *libl/qsrcf,cb_std_con /copy *libl/qsrcf,cb_stdtype /copy *libl/qsrcf,exudf_pr p UDF_Counter... p b Export d pi d OutCounter... d Like(StdInt) d OutCounterNull... d Like(StdIntSml) d OutSQLState... d 5a Varying d InFunctionName... d 139a Varying d Const d InSpecificName... d 128a Varying d Const d OutMessageText... d 70a Varying d InOutScratchPad... d LikeDs(TD_ScratchPad) /Free InOutScratchPad.Counter += 1; OutCounter = InOutScratchPad.Counter; OutCounterNull = 0; Return; /End-Free p e
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.