× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi Rob,

Thanks for the response. You're right, '123.45' would not get picked up as numeric. I like Birgitta's response about using %dec with a monitor around it.

To my taste, I prefer to only use the %dec test when the incoming text value has a period in it to avoid getting job log entries for values that are not numeric and don't contain periods. So I added in the following code after the %check.

// If not all numbers, but contains a period, then check to
// see if this is a number with a decimal.
ElseIf %scan( '.': checkText ) > 0;
Monitor;
number = %dec( checkText: 33: 9 );
rtnNumeric = *On;
On-Error;
rtnNumeric = *Off;
EndMon;

I'm glad my attempt to help resulted in others helping me as well.

-Kurt

-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of rob@xxxxxxxxx
Sent: Tuesday, January 15, 2013 11:54 AM
To: Midrange Systems Technical Discussion
Subject: RE: SQL is numeric function

Gives an example of how to extend your rpg subprocedure to become a UDF and then be used by SQL but the rpg may be a bit simplistic. For example,
123.45 would not be numeric. Just adding a period to the check string may not be sufficient for the example another poster gave: 123.156.121.45 or some such thing. That's 'numeric' enough for an IP address but not numeric for mathematical functions.


Rob Berendt
--
IBM Certified System Administrator - IBM i 6.1 Group Dekko Dept 1600 Mail to: 2505 Dekko Drive
Garrett, IN 46738
Ship to: Dock 108
6928N 400E
Kendallville, IN 46755
http://www.dekko.com





From: "Anderson, Kurt" <KAnderson@xxxxxxxxxxxx>
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx>,
Date: 01/15/2013 12:47 PM
Subject: RE: SQL is numeric function
Sent by: midrange-l-bounces@xxxxxxxxxxxx



Hi Joel,

I actually created my own and don't mind sharing.

Here's the function. xxxLIB is the library you'll be placing it in.
Create or Replace Function xxxlib/isNumeric ( VALUE VarChar(25) )
returns Char(1)
language rpgle
no sql
specific ccdlib/isNumericV
external name 'xxxLIB/TEXTPROCS($ISNUMERIC)'
parameter style general
;

I have a second overloaded function that handles being passed a number.
Sounds obvious I suppose, but meh.
Create or Replace Function xxxlib/isNumeric ( VALUE dec(25,9) )
returns char(1)
language sql
deterministic
specific xxxlib/isNumericN
return '1'
;

Here's the procedure to check if the input is numeric.
As you see in the procedure above, I have it in a service program called
TEXTPROCS (text procedures service program). You can put it wherever.


//=======================================================================*
// Procedure: $isNumeric *
// Description: Is the Input Numeric? *
// *
// Notes: This procedure is also wrapped in a SQL User
Defined *
// Function located in CCDLIB/QSQL(ISNUMERIC) *
// *
// Parameters: *
// Input - Text to test *
// Inp/Out - n/a *
// Output - n/a *
// *
// Return Value: '1' - Numeric *
// '0' - Not Numeric *
// *

//-----------------------------------------------------------------------*
P $isNumeric B Export
D PI n
D epText 25a Const Varying

// Local Constants
D NUMBERS C '0123456789'

// Local variables
D checkText S Static Like( epText )
D rtnNumeric S n Static

//-----------------------------------------------------------------------*
/free

checkText = %trim( epText );

// If the length is zero, it's not numeric.
If %len( checkText ) = 0;
rtnNumeric = *Off;

// If only numbers were found, it is numeric.
ElseIf %check( NUMBERS: checkText ) = 0;
rtnNumeric = *On;

// Otherwise it's not numeric.
Else;
rtnNumeric = *Off;
EndIf;

Return rtnNumeric;

/end-free
P $isNumeric E

//-----------------------------------------------------------------------*


- Kurt Anderson

-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx [
mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of Stone, Joel
Sent: Tuesday, January 15, 2013 10:51 AM
To: midrange-l@xxxxxxxxxxxx
Subject: SQL is numeric function

Does Iseries SQL have a numeric test?

For example:

Runsql 'select * from ItemMaster where itemNbr is not numeric'



______________________________________________________________________
This outbound email has been scanned for all viruses by the MessageLabs
Skyscan service.
For more information please visit http://www.symanteccloud.com
______________________________________________________________________
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take a
moment to review the archives at http://archive.midrange.com/midrange-l.


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.