I understand the difference , just trying to understand what John is saying
Scott ford www.identityforge.com On Jul 14, 2012, at 12:22 PM, Steve Comstock <[email protected]> wrote: > On 7/14/2012 10:16 AM, Scott Ford wrote: >> John, >> >> So your saying in COBOL are you talking about Comp-3 binary ? > > No such thing. A field is either comp-3 (or, nowadays, packed-decimal) > or comp (nowadays, binary) - or floating point which few COBOL > programs use. > > I think he's saying keep amounts in pennies as binary fields. > Convert to dollars + decimal point + cents when you display > these fields. > > >> >> Scott ford >> www.identityforge.com >> >> On Jul 14, 2012, at 8:08 AM, John Gilmore <[email protected]> wrote: >> >>> Doing integer--as opposed to real fixed-point--arithmetic with >>> packed-decimal values is the real culprit here. >>> >>> Integer arithmetic should never be done with anything but binary >>> integers. Operations on them are register operations, which are much >>> faster than storage-to-storage ones; and zero is always positive. >>> Moreover, it is now possible to make them behave in COBOL exactly as >>> they do in assembly language. >>> >>> John Gilmore, Ashland, MA 01721 - USA >>> >>> On 7/14/12, Gibney, Dave <[email protected]> wrote: >>>> Back in 1981, one of the first bugs I had to find/fix was a COBOL (VS?) >>>> routine intended to distribute the rounding difference to a set of records. >>>> Perform until zero left to distribute. It looped at negative zero. I didn't >>>> write it, I don't remember my precise fix. >>>> >>>>> -----Original Message----- >>>>> From: IBM Mainframe Discussion List [mailto:[email protected]] >>>>> On Behalf Of Frank Swarbrick >>>>> Sent: Friday, July 13, 2012 3:07 PM >>>>> To: [email protected] >>>>> Subject: Re: COBOL packed decimal >>>>> >>>>> Excellent! Thank you very much! >>>>> Subtle is right! :-) >>>>> Negative zero, huh? Must be that new math, thing. :-) >>>>> >>>>> Frank >>>>> >>>>> >>>>> >>>>> >>>>>> ________________________________ >>>>>> From: "Dan Skomsky @ Home" <[email protected]> >>>>>> To: [email protected] >>>>>> Sent: Friday, July 13, 2012 3:24 PM >>>>>> Subject: Re: COBOL packed decimal >>>>>> >>>>>> From an old discussion on the same subject from back in '05 over at >>>>>> http://www.tek-tips.com : >>>>>> >>>>>> Here's an explanation of what is happening. When we were converting >>>>>> from VS COBOL to COBOL II/COBOL 370, I found the book "COBOL/370 FOR >>>>> VS >>>>>> COBOL AND COBOL II PROGRAMMERS by Harvey Bookman. Here's what he says >>>>>> about your question.... >>>>>> >>>>>> "One change from VS COBOL to COBOL/370 that may seem quite baffling >>>>>> occurs when a constant or another COMP-3 data field is added or >>>>>> subtracted to or from a signed COMP-3 data field. The VS COBOL >>>>>> compiler produced only an Add Packed (AP) or Subtract Packed (SP) >>>>>> instruction. COBOL/370 still produces the same instruction but then >>>>>> issues a Zero and Add Packed (ZAP) of the resulting field into >>>>> itself. The ZAP is executed for a very subtle reason. >>>>>> When two negative numbers are added together and an overflow occurs, >>>>>> the overflow flag in the condition code is turned on while the >>>>>> resulting sign is set as if overflow did not occur. This means that >>>>> if >>>>>> two numbers each defined as PIC S9(03) COMP-3 were added together, and >>>>>> they had values of -1 and -999 before the addition, the resulting >>>>> field >>>>>> would be zero (the digit that overflowed was truncated) with its sign >>>>>> negative. The ZAP will preserve the sign of all other computations >>>>> but >>>>>> will change a zero with a negative sign to a zero with a positive >>>>> sign." >>>>>> >>>>>> "Ensuring a positive sign in a zero result was not necessary in the VS >>>>>> COBOL compiler. This is because the VS COBOL compiler used a Compare >>>>>> Packed (CP) instruction to compare numeric fields. It is interesting >>>>>> that COBOL/370 now often produces a Compare Logical (CLC) instruction >>>>>> to compare numeric fields. While this is a faster instruction than >>>>> CP, >>>>>> it requires the same sign value for an equal condition to occur. For >>>>>> example, a CP instruction will find fields with hexadecimal values >>>>> '0F' >>>>>> and '0C' equal, while the CLC will not." >>>>>> >>>>>> The same instructions are generated in Enterprise COBOL as were for >>>>>> COBOL/370. >>>>>> >>>>>> HTH >>>>>> >>>>>> -----Original Message----- >>>>>> From: IBM Mainframe Discussion List [mailto:[email protected]] >>>>>> On Behalf Of Itschak Mugzach >>>>>> Sent: Friday, July 13, 2012 4:10 PM >>>>>> To: [email protected] >>>>>> Subject: Re: COBOL packed decimal >>>>>> >>>>>> Zero and add pack. >>>>>> >>>>>> ITschak >>>>>> >>>>>> On Sat, Jul 14, 2012 at 12:05 AM, Frank Swarbrick >>>>>> <[email protected] >>>>>>> wrote: >>>>>> >>>>>>> COBOL code >>>>>>> 77 ws-num-packed pic S9(9) packed-decimal. >>>>>>> >>>>>>> add 2 to ws-num-packed >>>>>>> >>>>>>> >>>>>>> Generated assembler: >>>>>>> >>>>>>> >>>>>>> 000014 >>>>>>> ADD >>>>>>> 00036A GN=16 EQU >>>>>>> * >>>>>>> 00036A FA40 8008 A02C AP 8(5,8),44(1,10) >>>>>>> WS-NUM-PACKED PGMLIT AT +40 >>>>>>> 000370 F844 8008 8008 ZAP 8(5,8),8(5,8) WS-NUM- >>>>> PACKED >>>>>>> WS-NUM-PACKED >>>>>>> >>>>>>> >>>>>>> What is the purpose of the ZAP? >>>>>>> >>>>>>> Thanks, >>>>>>> Frank >>>>>>> >>>>>>> >>>>>>> -------------------------------------------------------------------- >>>>> - >>>>>>> - For IBM-MAIN subscribe / signoff / archive access instructions, >>>>>>> send email to [email protected] with the message: INFO >>>>>>> IBM-MAIN >>>>>>> >>>>>> > > > -- > > Kind regards, > > -Steve Comstock > The Trainer's Friend, Inc. > > 303-355-2752 > http://www.trainersfriend.com > > * Special promotion: 15% off on all DB2 training classes > scheduled by September 1, taught by year end 2011 > > * Check out our entire DB2 curriculum at: > http://www.trainersfriend.com/DB2_and_VSAM_courses/DB2curric.htm > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to [email protected] with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
