Thanks for your reply Vern
What we have satisfies out immediate need - BUT - we should come up with something that should handle all the different field lengths


Alan Shore
E-mail : ASHORE@xxxxxxxx
Phone [O] : (631) 200-5019
Phone [C] : (631) 880-8640
‘If you're going through hell, keep going.’
Winston Churchill


-----Original Message-----
From: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of Vernon Hamberg
Sent: Thursday, October 25, 2018 12:27 PM
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx>
Subject: Re: [EXTERNAL] Re: Creating an SQL function using C routines

Hi Alan

Just a thought - you probably don't need to know the last position - it is the length of the hex version of the field, so for the 18 in the example you could use

     length(digits(fieldname)) * 2

or, maybe better,

     length(hex(fieldname))

That at least gets on the way to a generic way of doing this - like you could use SYSCOLUMNS to get things like data type and lengths, then build the SELECT on the fly, maybe.

HTH
Vern

On 10/25/2018 10:28 AM, Alan Shore wrote:
A fellow worker attacked this by googling for something different She
located the following web page

https://www.itjungle.com/2005/01/19/fhg011905-story02/

Using that information, she came up with the following

select fieldname, dec(
dec(substr(inoba,1,8)||substr(hex(fieldname),18,1),9,0) * (case when
substr(hex(inoba),17,1)='D'
then -1 else 1 end) ,9,0) from filename

Now, it is field and file specific, but it DOES produce what we are
looking for Here are some of what is displayed
Field converted
00000245K 2,452-
000000000 0
00000104M 1,044-
000000000 0
000000000 0
000000000 0
000009948 9,948
000000000 0
000002330 2,330

This will obviously need to be changed depending upon the file, field
in the file and length of that field


Alan Shore
E-mail : ASHORE@xxxxxxxx
Phone [O] : (631) 200-5019
Phone [C] : (631) 880-8640
'If you're going through hell, keep going.'
Winston Churchill


-----Original Message-----
From: Alan Shore
Sent: Thursday, October 25, 2018 11:00 AM
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx>
Subject: RE: [EXTERNAL] Re: Creating an SQL function using C routines

Thanks Bryan
Let me wade through this and see if it gives me anything to work with

Alan Shore
E-mail : ASHORE@xxxxxxxx
Phone [O] : (631) 200-5019
Phone [C] : (631) 880-8640
'If you're going through hell, keep going.'
Winston Churchill

-----Original Message-----
From: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of
Bryan Dietz
Sent: Thursday, October 25, 2018 10:47 AM
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx>
Subject: [EXTERNAL] Re: Creating an SQL function using C routines

there are some working SQL that uses in-line C code.

http://www.sqliquery.com/samples.html

They are pretty sharp.

Bryan


Alan Shore wrote on 10/25/2018 10:23 AM:
Hi everyone
Before I forget, we are on V7r3

I know how to create an SQL function using procedures in service
programs and have done so many times My question is, Is there a way
to create an SQL function using C routines Without going into the
"why the %$^^ did you do it that way' explanation, we have a number
of fields that are numeric, but stored in alpha fields, where we have
to use the C routine QXXZTOI to convert it from alpha to numeric If
the numeric value is positive - then there is no problem in seeing
what the numeric value in the alpha field is However, if the numeric
value is negative - then a process I know as over punching (back from
when cards were used) is in effect For example The value '0001}" is
really
-10 The value '0002J' is really -21

Now trying to use SQL against fields such as this becomes a no no
Hence my request

I have tried googling for the answer to this, but so far, nothing

As always, any and all answers welcome

Alan Shore
E-mail : ASHORE@xxxxxxxx
Phone [O] : (631) 200-5019
Phone [C] : (631) 880-8640
'If you're going through hell, keep going.'
Winston Churchill

--
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: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD


--
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: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link: http://amzn.to/2dEadiD

As an Amazon Associate we earn from qualifying purchases.

This thread ...

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.