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/
