Re: [UD] 8 Bite Integers

2004-03-11 Thread Fawaz Ashraff
I like to thank all of you for the information. 

Cheers

Fawaz
--- Robert Colquhoun <[EMAIL PROTECTED]> wrote:
> At 12:58 PM 5/03/2004, you wrote:
> >That is because UV (and I presumed UD) work on
> two's complement integers, so
> >the top bit flips you between a positive and a
> negative integer. This is why
> >I work the algorithm with 8 bit blocks, so that bit
> 1 in the 32 bit integer
> >is never 1 and so BITAND works as expected.
> 
> The problem was it was using signed 64 bit integers
> everywhere except in 
> these functions which seem to use 32 bit integers,
> as an example program on 
> unidata:
> 
> ININT=2147483648
> CRT "ININT = ":ININT
> CRT "BITAND(ININT, 1) = ":BITAND(ININT, 1)
> CRT "BITAND(ININT, 2^31 -1) = ":BITAND(ININT,
> 2147483647)
> CRT "BITAND(ININT, 2 ^31) = ":BITAND(ININT,
> 2147483648)
> 
> :TEST
> ININT = 2147483648  // = 2 ^ 31
> BITAND(ININT, 1) = 1// should be
> 0
> BITAND(ININT, 2^31 -1) = 2147483647   // should be 0
> BITAND(ININT, 2 ^31) = 2147483647  // should be
> 2^32
> 
> In your program you have BITAND(ININT, 255) to strip
> out the smallest byte 
> which will work if and only if ININT < 2^31
> 
> I probably should report this to ibm support, but
> ibm "outsourced" our 
> support contract recently to a third party and i am
> very nervous about 
> calling them up:
>
http://www.salon.com/tech/feature/2004/02/23/no_support/index_np.html
> 
> (Sorry about the ad, but article is one of the
> funniest i have seen this year).
> 
> 
>   - Robert
> 
> 
> -- 
> u2-users mailing list
> [EMAIL PROTECTED]
> http://www.oliver.com/mailman/listinfo/u2-users


__
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com
-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


Re: [UD] 8 Bite Integers

2004-03-04 Thread Robert Colquhoun
At 12:58 PM 5/03/2004, you wrote:
That is because UV (and I presumed UD) work on two's complement integers, so
the top bit flips you between a positive and a negative integer. This is why
I work the algorithm with 8 bit blocks, so that bit 1 in the 32 bit integer
is never 1 and so BITAND works as expected.
The problem was it was using signed 64 bit integers everywhere except in 
these functions which seem to use 32 bit integers, as an example program on 
unidata:

ININT=2147483648
CRT "ININT = ":ININT
CRT "BITAND(ININT, 1) = ":BITAND(ININT, 1)
CRT "BITAND(ININT, 2^31 -1) = ":BITAND(ININT, 2147483647)
CRT "BITAND(ININT, 2 ^31) = ":BITAND(ININT, 2147483648)
:TEST
ININT = 2147483648  // = 2 ^ 31
BITAND(ININT, 1) = 1// should be 0
BITAND(ININT, 2^31 -1) = 2147483647   // should be 0
BITAND(ININT, 2 ^31) = 2147483647  // should be 2^32
In your program you have BITAND(ININT, 255) to strip out the smallest byte 
which will work if and only if ININT < 2^31

I probably should report this to ibm support, but ibm "outsourced" our 
support contract recently to a third party and i am very nervous about 
calling them up:
http://www.salon.com/tech/feature/2004/02/23/no_support/index_np.html

(Sorry about the ad, but article is one of the funniest i have seen this year).

 - Robert

--
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


Re: [UD] 8 Bite Integers

2004-03-04 Thread Craig Bennett
>> LOWESTBYTE = BITAND(ININT, 255)
>> 
>> ININT = INT(ININT/256)

>When trying to implement hash algorithms i noticed values > 32 bits do not
>work properly with some of the basic functions in unidata and i think
>universe.  Definitely MOD() and i think BITAND() had problems.

That is because UV (and I presumed UD) work on two's complement integers, so
the top bit flips you between a positive and a negative integer. This is why
I work the algorithm with 8 bit blocks, so that bit 1 in the 32 bit integer
is never 1 and so BITAND works as expected.

Not that I actually tested the code :)

Craig

-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


Re: [UD] 8 Bite Integers

2004-03-04 Thread Robert Colquhoun
Hello,

At 08:44 AM 5/03/2004, Craig Bennett wrote:

LOWESTBYTE = BITAND(ININT, 255)

ININT = INT(ININT/256)
When trying to implement hash algorithms i noticed values > 32 bits do not 
work properly with some of the basic functions in unidata and i think 
universe.  Definitely MOD() and i think BITAND() had problems.

 - Robert

--
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


RE: [UD] 8 Bite Integers

2004-03-04 Thread Logan, David (SST - Adelaide)
Hi Fawaz,

I must admit to being a little curious as to how the data is being
loaded into informix. Which server are you using? Is this Dynamic
Server?

Regards

David Logan
Database Administrator
HP Managed Services
139 Frome Street,
Adelaide 5000
Australia

+61 8 8408 4273
+61 417 268 665



-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
On Behalf Of Fawaz Ashraff
Sent: Friday, 5 March 2004 9:25 AM
To: U2 Users Discussion List
Subject: Re: [UD] 8 Bite Integers


Hi All,

Thanks for the input. It looks like Craig's suggestion
would work for me. We have to test whether this will
work with negative numbers.

Once again, thanks!

Cheers

Fawaz
--- Craig Bennett <[EMAIL PROTECTED]> wrote:
> Fawaz,
> 
> >I have a Unidata numeric field
> >(Amount- 100.00 or -100.00) and I need to convert
> it
> >to a 8 Bite integer so that Informix will recognise
> >it.
> 
> Do you mean 8bit or 8byte?
> 
> For an 8 bit integer you need to output CHAR(n)
> where n is a number between
> 0 and 255.
> 
> For an 8 byte (64 bit) integer you would need to do
> something like this. I
> aplogise if this isn't correct UD code, I usually
> work on UV. I am assuming
> that the output integer is in MSB order and that the
> bits of each byte are
> in MSb order.
> 
> ININT = 1145689
> GOSUB MAKE8BYTE
> 
> STOP
> 
> MAKE8BYTE:
> * Initialise output as 0
> OUTINT = STR(CHAR(0), 8)
> 
> FOR I = 1 TO 8
> * Get lowest 8bits
> LOWESTBYTE = BITAND(ININT, 255)
> * Convert this to a byte representation and
> place it in the output
> integer
> OUTINT[8-I, 1] = CHAR(LOWESTBYTE)
> * Remove the lowest byte 8bits from the
> integer
> ININT = INT(ININT/256)
> NEXT I
> RETURN
> 
> HTH,
> 
> Craig
> 
> 
> 
> 
> 
> -- 
> u2-users mailing list
> [EMAIL PROTECTED]
> http://www.oliver.com/mailman/listinfo/u2-users


__
Do you Yahoo!?
Yahoo! Search - Find what you're looking for faster
http://search.yahoo.com
-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users
--
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


Re: [UD] 8 Bite Integers

2004-03-04 Thread Craig Bennett
Fawaz,

>We have to test whether this will work with negative numbers.
You need to find out how informix expects you to represent a negative
number. Most likely 2s complement.

For two's complement negatives, you need to invert the bit pattern and add
1. I think this will work ...

 MAKE8BYTE:
 * Initialise output as 0
 OUTINT = STR(CHAR(0), 8)

CARRY = @TRUE
IF ININT LT 0 THEN
NEGATIVE = @TRUE
ININT = ABS(ININT)
END ELSE
NEGATIVE = @FALSE
END
 FOR I = 1 TO 7
 * Get lowest 8bits
 LOWESTBYTE = BITAND(ININT, 255)

IF NEGATIVE THEN
IF CARRY THEN
IF LOWESTBYTE LT 255 THEN
CARRY = @FALSE
LOWESTBYTE = BITAND(BITNOT(LOWESTBYTE), 255) + 1
END
END ELSE
LOWESTBYTE = BITAND(BITNOT(LOWESTBYTE), 255)
END
END

 * Convert this to a byte representation and  place it in the output
integer
 OUTINT[8-I, 1] = CHAR(LOWESTBYTE)
 * Remove the lowest byte 8bits from the
 integer
 ININT = INT(ININT/256)
 NEXT I

* Top bit is sign bit, so only work on lowest 7 bits, but when doing
inversion, still invert top bit
LOWEST7 = BITAND(ININT, 127)
IF NEGATIVE THEN
IF CARRY THEN
IF LOWEST7 LT 127 THEN
CARRY = @FALSE
LOWEST7 = BITAND(BITNOT(LOWEST7), 255) + 1
END
END ELSE
LOWEST7 = BITAND(BITNOT(LOWEST7), 255)
END
END

OUTINT[1, 1] = CHAR(LOWEST7)
 RETURN

-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


Re: [UD] 8 Bite Integers

2004-03-04 Thread Fawaz Ashraff
Hi All,

Thanks for the input. It looks like Craig's suggestion
would work for me. We have to test whether this will
work with negative numbers.

Once again, thanks!

Cheers

Fawaz
--- Craig Bennett <[EMAIL PROTECTED]> wrote:
> Fawaz,
> 
> >I have a Unidata numeric field
> >(Amount- 100.00 or -100.00) and I need to convert
> it
> >to a 8 Bite integer so that Informix will recognise
> >it.
> 
> Do you mean 8bit or 8byte?
> 
> For an 8 bit integer you need to output CHAR(n)
> where n is a number between
> 0 and 255.
> 
> For an 8 byte (64 bit) integer you would need to do
> something like this. I
> aplogise if this isn't correct UD code, I usually
> work on UV. I am assuming
> that the output integer is in MSB order and that the
> bits of each byte are
> in MSb order.
> 
> ININT = 1145689
> GOSUB MAKE8BYTE
> 
> STOP
> 
> MAKE8BYTE:
> * Initialise output as 0
> OUTINT = STR(CHAR(0), 8)
> 
> FOR I = 1 TO 8
> * Get lowest 8bits
> LOWESTBYTE = BITAND(ININT, 255)
> * Convert this to a byte representation and
> place it in the output
> integer
> OUTINT[8-I, 1] = CHAR(LOWESTBYTE)
> * Remove the lowest byte 8bits from the
> integer
> ININT = INT(ININT/256)
> NEXT I
> RETURN
> 
> HTH,
> 
> Craig
> 
> 
> 
> 
> 
> -- 
> u2-users mailing list
> [EMAIL PROTECTED]
> http://www.oliver.com/mailman/listinfo/u2-users


__
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com
-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


Re: [UD] 8 Bite Integers

2004-03-04 Thread Craig Bennett
Fawaz,

>I have a Unidata numeric field
>(Amount- 100.00 or -100.00) and I need to convert it
>to a 8 Bite integer so that Informix will recognise
>it.

Do you mean 8bit or 8byte?

For an 8 bit integer you need to output CHAR(n) where n is a number between
0 and 255.

For an 8 byte (64 bit) integer you would need to do something like this. I
aplogise if this isn't correct UD code, I usually work on UV. I am assuming
that the output integer is in MSB order and that the bits of each byte are
in MSb order.

ININT = 1145689
GOSUB MAKE8BYTE

STOP

MAKE8BYTE:
* Initialise output as 0
OUTINT = STR(CHAR(0), 8)

FOR I = 1 TO 8
* Get lowest 8bits
LOWESTBYTE = BITAND(ININT, 255)
* Convert this to a byte representation and place it in the output
integer
OUTINT[8-I, 1] = CHAR(LOWESTBYTE)
* Remove the lowest byte 8bits from the integer
ININT = INT(ININT/256)
NEXT I
RETURN

HTH,

Craig





-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


RE: [UD] 8 Bite Integers

2004-03-04 Thread Logan, David (SST - Adelaide)
Hi Fawaz,

It really shouldn't matter. You should be able to write the data out to
the flatfile and have it appear "100.00" or "-100.00" and the load
programs (onpload, High Performance Loader etc.) will just convert
according to the schema that you have defined for that table.

Can you give an example of a problem field?

Regards

David Logan
Database Administrator
HP Managed Services
139 Frome Street,
Adelaide 5000
Australia

+61 8 8408 4273
+61 417 268 665



-Original Message-
From: Fawaz Ashraff [mailto:[EMAIL PROTECTED] 
Sent: Friday, 5 March 2004 6:13 AM
To: U2 Users Discussion List
Cc: Logan, David (SST - Adelaide)
Subject: RE: [UD] 8 Bite Integers


Hi David,

Thanks for the info. May be I didn't explain my
problem correctly. I have a Unidata numeric field
(Amount- 100.00 or -100.00) and I need to convert it
to a 8 Bite integer so that Informix will recognise
it.

Cheers

Fawaz
--- "Logan, David (SST - Adelaide)" <> wrote:
> Hi Fawaz,
> 
> Is this what you are looking for?
> 
> SEQ function
> 
> Syntax
> SEQ (expression)
> 
> Description
> 
> Use the SEQ function to convert an ASCII character
> to its numeric string
> equivalent. Expression evaluates to the ASCII
> character to be converted.
> If expression
> evaluates to the null value, null is returned.
> 
> The SEQ function is the inverse of the CHAR
> function.
> 
> In NLS mode, use the UNISEQ function to return
> Unicode values in the
> range
> x0080 through x00F8.
> 
> Using the SEQ function to convert a character
> outside its range results
> in a
> run-time message, and the return of an empty string.
> 
> For more information about these ranges, see the
> UniVerse NLS Guide.
> PICK, IN2, and REALITY Flavors
> 
> In PICK, IN2, and REALITY flavors SEQ(" ") is 255
> instead of 0. In IDEAL
> and
> INFORMATION flavor accounts, use the SEQ.255 option
> of the $OPTIONS
> statement to cause SEQ(" ") to be interpreted as
> 255.
> 
> Example
> G="T"
> A=SEQ(G)
> PRINT A, A+1
> PRINT SEQ("G")
> 11-632 UniVerse BASIC
> /productinfo/alldoc/UNIVERSE10/basic/Ch11
> 1/9/02
> 
> This is the program output:
> 84 85
> 71
> 
> Regards
> 
> David Logan
> Database Administrator
> HP Managed Services
> 139 Frome Street,
> Adelaide 5000
> Australia
> 
> +61 8 8408 4273
> +61 417 268 665
> 
> 
> 
> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]
> On Behalf Of Fawaz Ashraff
> Sent: Friday, 5 March 2004 5:34 AM
> To: U2 Users Discussion List
> Subject: [UD] 8 Bite Integers
> 
> 
> Good Afternoon.
> 
> We are moving part of our application to
> Informix(From
> Unidata). I need to convert some of the data Fields
> to
> 8 bite Integers through a UniBasic program and write
> it to a flat file. Having problem converting data to
> 8
> Bite Integers. Any suggestions would be highly
> appreciated.
> 
> Cheers
> 
> Fawaz
> 
> 
> __
> Do you Yahoo!?
> Yahoo! Search - Find what you're looking for faster
> http://search.yahoo.com
> -- 
> u2-users mailing list
> [EMAIL PROTECTED]
> http://www.oliver.com/mailman/listinfo/u2-users
> --
> u2-users mailing list
> [EMAIL PROTECTED]
> http://www.oliver.com/mailman/listinfo/u2-users


__
Do you Yahoo!?
Yahoo! Search - Find what you're looking for faster
http://search.yahoo.com
--
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


RE: [UD] 8 Bite Integers

2004-03-04 Thread Pingilley, Ron
If the number's an integer, how about using 

HEX.STRING = DTX(var)

to get a hexadecimal equivalent of the number in question.  Fill on the left
with zeros to 16 characters (8 bytes worth).  Then, pick off hex characters,
2 at a time (1 byte), then do:

INFORMIX.CHAR = CHAR(XTD(this.byte))

and concatenate them together into an 8-character (byte) string.

One gotcha I can think of is if any of the bytes end up as a system
delimiter that would cause problems in the middle of a flat file.  WRITESEQ
to a type-19 file or path may overcome some of those difficulties.

--Ron P.

-Original Message-
From: Fawaz Ashraff [mailto:[EMAIL PROTECTED]
Sent: Thursday, March 04, 2004 1:43 PM
To: U2 Users Discussion List
Subject: RE: [UD] 8 Bite Integers


Hi David,

Thanks for the info. May be I didn't explain my
problem correctly. I have a Unidata numeric field
(Amount- 100.00 or -100.00) and I need to convert it
to a 8 Bite integer so that Informix will recognise
it.

Cheers

Fawaz
--- "Logan, David (SST - Adelaide)" <> wrote:
> Hi Fawaz,
> 
> Is this what you are looking for?
> 
> SEQ function
> 
> Syntax
> SEQ (expression)
> 
> Description
> 
> Use the SEQ function to convert an ASCII character
> to its numeric string
> equivalent. Expression evaluates to the ASCII
> character to be converted.
> If expression
> evaluates to the null value, null is returned.
> 
> The SEQ function is the inverse of the CHAR
> function.
> 
> In NLS mode, use the UNISEQ function to return
> Unicode values in the
> range
> x0080 through x00F8.
> 
> Using the SEQ function to convert a character
> outside its range results
> in a
> run-time message, and the return of an empty string.
> 
> For more information about these ranges, see the
> UniVerse NLS Guide.
> PICK, IN2, and REALITY Flavors
> 
> In PICK, IN2, and REALITY flavors SEQ(" ") is 255
> instead of 0. In IDEAL
> and
> INFORMATION flavor accounts, use the SEQ.255 option
> of the $OPTIONS
> statement to cause SEQ(" ") to be interpreted as
> 255.
> 
> Example
> G="T"
> A=SEQ(G)
> PRINT A, A+1
> PRINT SEQ("G")
> 11-632 UniVerse BASIC
> /productinfo/alldoc/UNIVERSE10/basic/Ch11
> 1/9/02
> 
> This is the program output:
> 84 85
> 71
> 
> Regards
> 
> David Logan
> Database Administrator
> HP Managed Services
> 139 Frome Street,
> Adelaide 5000
> Australia
> 
> +61 8 8408 4273
> +61 417 268 665
> 
> 
> 
> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]
> On Behalf Of Fawaz Ashraff
> Sent: Friday, 5 March 2004 5:34 AM
> To: U2 Users Discussion List
> Subject: [UD] 8 Bite Integers
> 
> 
> Good Afternoon.
> 
> We are moving part of our application to
> Informix(From
> Unidata). I need to convert some of the data Fields
> to
> 8 bite Integers through a UniBasic program and write
> it to a flat file. Having problem converting data to
> 8
> Bite Integers. Any suggestions would be highly
> appreciated.
> 
> Cheers
> 
> Fawaz
> 
> 
> __
> Do you Yahoo!?
> Yahoo! Search - Find what you're looking for faster
> http://search.yahoo.com
> -- 
> u2-users mailing list
> [EMAIL PROTECTED]
> http://www.oliver.com/mailman/listinfo/u2-users
> --
> u2-users mailing list
> [EMAIL PROTECTED]
> http://www.oliver.com/mailman/listinfo/u2-users


__
Do you Yahoo!?
Yahoo! Search - Find what you're looking for faster
http://search.yahoo.com
-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users
-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


RE: [UD] 8 Bite Integers

2004-03-04 Thread Peter Olson
INT( AMOUNT ) ?

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Behalf Of Fawaz Ashraff
Sent: Thursday, March 04, 2004 2:43 PM
To: U2 Users Discussion List
Subject: RE: [UD] 8 Bite Integers


Hi David,

Thanks for the info. May be I didn't explain my
problem correctly. I have a Unidata numeric field
(Amount- 100.00 or -100.00) and I need to convert it
to a 8 Bite integer so that Informix will recognise
it.

Cheers

Fawaz
--- "Logan, David (SST - Adelaide)" <> wrote:
> Hi Fawaz,
> 
> Is this what you are looking for?
> 
> SEQ function
> 
> Syntax
> SEQ (expression)
> 
> Description
> 
> Use the SEQ function to convert an ASCII character
> to its numeric string
> equivalent. Expression evaluates to the ASCII
> character to be converted.
> If expression
> evaluates to the null value, null is returned.
> 
> The SEQ function is the inverse of the CHAR
> function.
> 
> In NLS mode, use the UNISEQ function to return
> Unicode values in the
> range
> x0080 through x00F8.
> 
> Using the SEQ function to convert a character
> outside its range results
> in a
> run-time message, and the return of an empty string.
> 
> For more information about these ranges, see the
> UniVerse NLS Guide.
> PICK, IN2, and REALITY Flavors
> 
> In PICK, IN2, and REALITY flavors SEQ(" ") is 255
> instead of 0. In IDEAL
> and
> INFORMATION flavor accounts, use the SEQ.255 option
> of the $OPTIONS
> statement to cause SEQ(" ") to be interpreted as
> 255.
> 
> Example
> G="T"
> A=SEQ(G)
> PRINT A, A+1
> PRINT SEQ("G")
> 11-632 UniVerse BASIC
> /productinfo/alldoc/UNIVERSE10/basic/Ch11
> 1/9/02
> 
> This is the program output:
> 84 85
> 71
> 
> Regards
> 
> David Logan
> Database Administrator
> HP Managed Services
> 139 Frome Street,
> Adelaide 5000
> Australia
> 
> +61 8 8408 4273
> +61 417 268 665
> 
> 
> 
> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]
> On Behalf Of Fawaz Ashraff
> Sent: Friday, 5 March 2004 5:34 AM
> To: U2 Users Discussion List
> Subject: [UD] 8 Bite Integers
> 
> 
> Good Afternoon.
> 
> We are moving part of our application to
> Informix(From
> Unidata). I need to convert some of the data Fields
> to
> 8 bite Integers through a UniBasic program and write
> it to a flat file. Having problem converting data to
> 8
> Bite Integers. Any suggestions would be highly
> appreciated.
> 
> Cheers
> 
> Fawaz
> 
> 
> __
> Do you Yahoo!?
> Yahoo! Search - Find what you're looking for faster
> http://search.yahoo.com
> -- 
> u2-users mailing list
> [EMAIL PROTECTED]
> http://www.oliver.com/mailman/listinfo/u2-users
> --
> u2-users mailing list
> [EMAIL PROTECTED]
> http://www.oliver.com/mailman/listinfo/u2-users


__
Do you Yahoo!?
Yahoo! Search - Find what you're looking for faster
http://search.yahoo.com
-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


Notice of Confidentiality:  The information included and/or attached in this
electronic mail transmission may contain confidential or privileged
information and is intended for the addressee.  Any unauthorized disclosure,
reproduction, distribution or the taking of action in reliance on the
contents of the information is prohibited.  If you believe that you have
received the message in error, please notify the sender by reply
transmission and delete the message without copying or disclosing it. 

-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


RE: [UD] 8 Bite Integers

2004-03-04 Thread Fawaz Ashraff
Hi David,

Thanks for the info. May be I didn't explain my
problem correctly. I have a Unidata numeric field
(Amount- 100.00 or -100.00) and I need to convert it
to a 8 Bite integer so that Informix will recognise
it.

Cheers

Fawaz
--- "Logan, David (SST - Adelaide)" <> wrote:
> Hi Fawaz,
> 
> Is this what you are looking for?
> 
> SEQ function
> 
> Syntax
> SEQ (expression)
> 
> Description
> 
> Use the SEQ function to convert an ASCII character
> to its numeric string
> equivalent. Expression evaluates to the ASCII
> character to be converted.
> If expression
> evaluates to the null value, null is returned.
> 
> The SEQ function is the inverse of the CHAR
> function.
> 
> In NLS mode, use the UNISEQ function to return
> Unicode values in the
> range
> x0080 through x00F8.
> 
> Using the SEQ function to convert a character
> outside its range results
> in a
> run-time message, and the return of an empty string.
> 
> For more information about these ranges, see the
> UniVerse NLS Guide.
> PICK, IN2, and REALITY Flavors
> 
> In PICK, IN2, and REALITY flavors SEQ(" ") is 255
> instead of 0. In IDEAL
> and
> INFORMATION flavor accounts, use the SEQ.255 option
> of the $OPTIONS
> statement to cause SEQ(" ") to be interpreted as
> 255.
> 
> Example
> G="T"
> A=SEQ(G)
> PRINT A, A+1
> PRINT SEQ("G")
> 11-632 UniVerse BASIC
> /productinfo/alldoc/UNIVERSE10/basic/Ch11
> 1/9/02
> 
> This is the program output:
> 84 85
> 71
> 
> Regards
> 
> David Logan
> Database Administrator
> HP Managed Services
> 139 Frome Street,
> Adelaide 5000
> Australia
> 
> +61 8 8408 4273
> +61 417 268 665
> 
> 
> 
> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]
> On Behalf Of Fawaz Ashraff
> Sent: Friday, 5 March 2004 5:34 AM
> To: U2 Users Discussion List
> Subject: [UD] 8 Bite Integers
> 
> 
> Good Afternoon.
> 
> We are moving part of our application to
> Informix(From
> Unidata). I need to convert some of the data Fields
> to
> 8 bite Integers through a UniBasic program and write
> it to a flat file. Having problem converting data to
> 8
> Bite Integers. Any suggestions would be highly
> appreciated.
> 
> Cheers
> 
> Fawaz
> 
> 
> __
> Do you Yahoo!?
> Yahoo! Search - Find what you're looking for faster
> http://search.yahoo.com
> -- 
> u2-users mailing list
> [EMAIL PROTECTED]
> http://www.oliver.com/mailman/listinfo/u2-users
> --
> u2-users mailing list
> [EMAIL PROTECTED]
> http://www.oliver.com/mailman/listinfo/u2-users


__
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com
-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users


RE: [UD] 8 Bite Integers

2004-03-04 Thread Logan, David (SST - Adelaide)
Hi Fawaz,

Is this what you are looking for?

SEQ function

Syntax
SEQ (expression)

Description

Use the SEQ function to convert an ASCII character to its numeric string
equivalent. Expression evaluates to the ASCII character to be converted.
If expression
evaluates to the null value, null is returned.

The SEQ function is the inverse of the CHAR function.

In NLS mode, use the UNISEQ function to return Unicode values in the
range
x0080 through x00F8.

Using the SEQ function to convert a character outside its range results
in a
run-time message, and the return of an empty string.

For more information about these ranges, see the UniVerse NLS Guide.
PICK, IN2, and REALITY Flavors

In PICK, IN2, and REALITY flavors SEQ(" ") is 255 instead of 0. In IDEAL
and
INFORMATION flavor accounts, use the SEQ.255 option of the $OPTIONS
statement to cause SEQ(" ") to be interpreted as 255.

Example
G="T"
A=SEQ(G)
PRINT A, A+1
PRINT SEQ("G")
11-632 UniVerse BASIC
/productinfo/alldoc/UNIVERSE10/basic/Ch11
1/9/02

This is the program output:
84 85
71

Regards

David Logan
Database Administrator
HP Managed Services
139 Frome Street,
Adelaide 5000
Australia

+61 8 8408 4273
+61 417 268 665



-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
On Behalf Of Fawaz Ashraff
Sent: Friday, 5 March 2004 5:34 AM
To: U2 Users Discussion List
Subject: [UD] 8 Bite Integers


Good Afternoon.

We are moving part of our application to Informix(From
Unidata). I need to convert some of the data Fields to
8 bite Integers through a UniBasic program and write
it to a flat file. Having problem converting data to 8
Bite Integers. Any suggestions would be highly
appreciated.

Cheers

Fawaz


__
Do you Yahoo!?
Yahoo! Search - Find what you're looking for faster
http://search.yahoo.com
-- 
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users
--
u2-users mailing list
[EMAIL PROTECTED]
http://www.oliver.com/mailman/listinfo/u2-users