U2,

In order to write to this format I have adjusted Colin's code coming up
with the following SUBR:

DETERMINE.NEGATIVE.VALUE:  *ONCE IT HAS BEEN DETERMINED THAT THE AMOUNT
IS NEGATIVE

X.NUMBER = ""
X.BYTE = ""
X.STR.LEN = ""
X.INPUT.AMOUNT = ""


X.INPUT.AMOUNT = XL.DEFERRAL.AMT<1,X.LOOP.CNT> *THIS IS THE AMOUNT
PULLED IN FROM THE TABLE
X.INPUT.AMOUNT = NEG(X.INPUT.AMOUNT) *TO GET RID OF THE "-" SIGN
X.STR.LEN = LEN(X.INPUT.AMOUNT)
X.BYTE = X.INPUT.AMOUNT[X.STR.LEN,1]



BEGIN CASE
 CASE X.BYTE = 0
   X.LAST.DIGIT = '}'
 CASE X.BYTE = 1
   X.LAST.DIGIT = 'J'
 CASE X.BYTE = 2
   X.LAST.DIGIT = 'K'
 CASE X.BYTE = 3
   X.LAST.DIGIT = 'L'
 CASE X.BYTE = 4
   X.LAST.DIGIT = 'M'
 CASE X.BYTE = 5
   X.LAST.DIGIT = 'N'
 CASE X.BYTE = 6
   X.LAST.DIGIT = 'O'
 CASE X.BYTE = 7
   X.LAST.DIGIT = 'P'
 CASE X.BYTE = 8
   X.LAST.DIGIT = 'Q'
 CASE X.BYTE = 9
   X.LAST.DIGIT = 'R'
 CASE 1
   X.LAST.DIGIT = X.BYTE
 END CASE

X.NUMBER = X.INPUT.AMOUNT[1,X.STR.LEN - 1]:X.LAST.DIGIT
X.AMOUNT.WRITE := FMT(OCONV(X.NUMBER,"MD"),"8\0R")

THANKS AGAIN FOR ALL YOUR HELP!

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Coelho, Gregory
Sent: Tuesday, January 17, 2006 6:38 PM
To: [email protected]
Subject: RE: [U2] RE: Number Conversion

Colin,

Thanks for this bit of information - I've reworked it to write instead
of read and it seems to be working like a champ.  Thanks U2

Greg

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
[EMAIL PROTECTED]
Sent: Tuesday, January 17, 2006 10:48 AM
To: [email protected]
Subject: RE: [U2] RE: Number Conversion

We used the following code to read the number. I think it's for the same
comp-3 format - but you will have to verify and update the code to
output the number rather than import it.

Hth
Colin Alfke
Calgary, Canada

SUBROUTINE CONVERT.AMOUNT(STRING)
 STR.LEN = LEN(STRING)
NUMBER = ''
NEGATIVE = 0
BYTE = STRING[STR.LEN,1]
BEGIN CASE
 CASE BYTE = '}'
   LAST.DIGIT = 0
   NEGATIVE = 1
 CASE BYTE = 'J'
   LAST.DIGIT = 1
   NEGATIVE = 1
 CASE BYTE = 'K'
   LAST.DIGIT = 2
   NEGATIVE = 1
 CASE BYTE = 'L'
   LAST.DIGIT = 3
   NEGATIVE = 1
 CASE BYTE = 'M'
   LAST.DIGIT = 4
   NEGATIVE = 1
 CASE BYTE = 'N'
   LAST.DIGIT = 5
   NEGATIVE = 1
 CASE BYTE = 'O'
   LAST.DIGIT = 6
   NEGATIVE = 1
 CASE BYTE = 'P'
   LAST.DIGIT = 7
   NEGATIVE = 1
 CASE BYTE = 'Q'
   LAST.DIGIT = 8
   NEGATIVE = 1
 CASE BYTE = 'R'
   LAST.DIGIT = 9
   NEGATIVE = 1
 CASE 1
   LAST.DIGIT = BYTE
 END CASE
NUMBER = STRING[1,STR.LEN - 1]:LAST.DIGIT
NUMBER = NUMBER + 0
IF NEGATIVE THEN
 NUMBER = 0 - NUMBER
END
STRING = NUMBER
RETURN 

>-----Original Message-----
>From: Coelho, Gregory
>
>EEEK! Hummm, Is there anyone that can help me with number 
>conversion? I need to convert a negative monetary amount 
>pulled in by FMT(OCONV(X.AMOUNT, "MD"), "8\0R") to meet 
>S9(6)V99 or Z8.2 format.
>COBOL programmers may recognize this comp-3 format - padded 
>with leading zeros the right most character must use an EBCDIC 
>symbol to reflect a negative amount:} = 0, J = neg. 1, K = 
>neg. 2, L = neg. 3 ... R = neg.
>9. Any help or direction would be greatly appreciated.
>
>Thanks Gordon...
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to