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



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.