|
there is another thought... UDFs are pretty specific about parameter types. If you declared function as (CHAR (8), CHAR (10)), you got to be sure that you call it with exactly these types of parameters. Try to cast parameters explicitly to CHAR(8) and CHAR(10) respectively. Alexei Pytel this is just a personal opinion rob@dekko.com Sent by: To: rpg400-l@midrange.com rpg400-l-admin@mi cc: drange.com Subject: Re: UDF: SQL0204-VALIDTPNBR in *LIBL type *N not found. 04/26/2002 03:52 PM Please respond to rpg400-l This is a multipart message in MIME format. -- [ Picked text/plain from multipart/alternative ] Thank you but that resulted in SQL0206-Column WEB not in specified tables. Rob Berendt -- "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." Benjamin Franklin "Alexei Pytel" <pytel@us.ibm.com> Sent by: rpg400-l-admin@midrange.com 04/26/2002 03:41 PM Please respond to rpg400-l To: rpg400-l@midrange.com cc: Fax to: Subject: Re: UDF: SQL0204-VALIDTPNBR in *LIBL type *N not found. I think you should qualify a call to UDF: select tpttype, tpt400, tptlib, tptfile, tptfield, web/VALIDTPNBR(tpttype,'19049 ') from web/tptype Alexei Pytel speaking for myself rob@dekko.com Sent by: To: rpg400-l@midrange.com rpg400-l-admin@mi cc: drange.com Subject: UDF: SQL0204-VALIDTPNBR in *LIBL type *N not found. 04/26/2002 03:31 PM Please respond to rpg400-l This is a multipart message in MIME format. -- [ Picked text/plain from multipart/alternative ] I've created a UDF, or User Defined Function, with the following: P*-------------------------------------- P* Procedure name: VALIDTPNBR P* Purpose: Validates Trading partner number P* Returns: '1'=Yes the tp number is valid, '0'=No it is not P* Parameter: tpttype => Trading partner type P* Parameter: tpnbr => Trading partner number P*-------------------------------------- P VALIDTPNBR B EXPORT D VALIDTPNBR PI N D tpttype LIKE(tpnbr.tpttype) CONST D tpnbr LIKE(tpnbr.tpnbr) CONST D* Local fields D rValidTpNbr S N D wTpName s 100a /free wTpName=RtvTpData(tpttype:tpnbr:'TPTPNAME'); Select; When wTpName=*loval or wTpName=*blanks or wTpName='*NONE'; rValidTpNbr=*off; Other; rValidTpNbr=*on; EndSl; return rValidTpNbr; /end-free P VALIDTPNBR E create function WEB/VALIDTPNBR (CHAR (8), CHAR (10)) returns CHAR (1) simple call language rpgle deterministic reads sql data returns null on null input no external action allow parallel external name 'WEB/WEBSRV(VALIDTPNBR)'; This select tpttype, tpt400, tptlib, tptfile, tptfield from web/tptype results in: Trading AS/400 Library File Field Partner Partner Partner Partner Type Type Type Nbr V01.073 GDISYS DATDIVF AVM VENDOR This: select tpttype, tpt400, tptlib, tptfile, tptfield, VALIDTPNBR(tpttype,'19049 ') from web/tptype Results in: Additional Message Information Message ID . . . . . . : SQL0204 Severity . . . . . . . : 30 Message type . . . . . : Diagnostic Message . . . . : VALIDTPNBR in *LIBL type *N not found. Cause . . . . . : VALIDTPNBR in *LIBL type *N was not found. If this is an ALTER TABLE statement and the type is *N, a constraint was not found. If this is not an ALTER TABLE statement and the type is *N, a function, procedure, or trigger was not found. Recovery . . . : Change the name and try the request again. If the object is a node group, ensure that the DB2 Multisystem product is installed on your system and create a nodegroup with the CRTNODGRP CL command. QSYS2/SYSFUNCS has: SPECIFIC_SCHEMA SPECIFIC_NAME ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_CREATED ROUTINE_DEFINER ROUTINE_BODY QDIRSRV QGLDRSDX QDIRSRV QGLDRSDX 2001-03-10-08.21.26.962000 QDIRSRV EXTERNAL ROB3 ONHAND ROB3 ONHAND 2001-11-30-08.02.52.040000 ROB EXTERNAL ROUTINES FAXA ROUTINES FAXA 2002-02-13-08.41.04.050000 ROB EXTERNAL ROUTINES FAXN ROUTINES FAXN 2002-02-13-08.41.04.695000 ROB EXTERNAL ROUTINES FAXAREACODE ROUTINES FAXAREACODE 2002-02-13-08.41.04.796000 ROB EXTERNAL ROUTINES FAXEXCHANGE ROUTINES FAXEXCHANGE 2002-02-13-08.41.04.884000 ROB EXTERNAL ROUTINES FAXNUMBER ROUTINES FAXNUMBER 2002-02-13-08.41.05.021000 ROB EXTERNAL ROUTINES FAXNEWAREA ROUTINES FAXNEWAREA 2002-02-13-08.41.05.127000 ROB EXTERNAL ROB ONHAND ROB ONHAND 2002-02-13-10.16.20.950000 ROB EXTERNAL ROUTINES FAXNEWPHONEA ROUTINES FAXNEWPHONEA 2002-02-14-10.57.21.240000 ROB EXTERNAL ROUTINES FAXNEWSTRING ROUTINES FAXNEWSTRING 2002-02-14-10.59.46.287000 ROB EXTERNAL ROUTINES FAXNEWPHONEN ROUTINES FAXNEWPHONEN 2002-02-14-13.54.38.057000 ROB EXTERNAL WEB VALIDTPNBR WEB VALIDTPNBR 2002-04-26-15.21.50.249000 ROB EXTERNAL EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS QSYS/QGLDRSDX C SQL YES NONE ROB3/INVENTORY(ONHAND) RPGLE GENERAL YES NONE ROUTINES/SRVPGM(FAXA) RPGLE GENERAL YES NONE ROUTINES/SRVPGM(FAXN) RPGLE GENERAL YES NONE ROUTINES/SRVPGM(FAXAREACODE) RPGLE GENERAL YES NONE ROUTINES/SRVPGM(FAXEXCHANGE) RPGLE GENERAL YES NONE ROUTINES/SRVPGM(FAXNUMBER) RPGLE GENERAL YES NONE ROUTINES/SRVPGM(FAXNEWAREA) RPGLE GENERAL YES READS ROB/ONHAND(ONHAND) RPGLE GENERAL YES NONE ROUTINES/SRVPGM(FAXNEWPHONEA) RPGLE GENERAL YES NONE ROUTINES/SRVPGM(FAXNEWSTRING) RPGLE GENERAL YES NONE ROUTINES/SRVPGM(FAXNEWPHONEN) RPGLE GENERAL YES NONE WEB/WEBSRV(VALIDTPNBR) RPGLE GENERAL YES READS Rob Berendt -- "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." Benjamin Franklin _______________________________________________ This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@midrange.com To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l or email: RPG400-L-request@midrange.com Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l. _______________________________________________ This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@midrange.com To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l or email: RPG400-L-request@midrange.com Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l. _______________________________________________ This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@midrange.com To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l or email: RPG400-L-request@midrange.com Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 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.