John,

So your saying in COBOL are you talking about Comp-3 binary ?

Scott ford
www.identityforge.com

On Jul 14, 2012, at 8:08 AM, John Gilmore <jwgli...@gmail.com> 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 <gib...@wsu.edu> 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:IBM-MAIN@LISTSERV.UA.EDU]
>>> On Behalf Of Frank Swarbrick
>>> Sent: Friday, July 13, 2012 3:07 PM
>>> To: IBM-MAIN@LISTSERV.UA.EDU
>>> 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" <poodles...@sbcglobal.net>
>>>> To: IBM-MAIN@LISTSERV.UA.EDU
>>>> 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:IBM-MAIN@LISTSERV.UA.EDU]
>>>> On Behalf Of Itschak Mugzach
>>>> Sent: Friday, July 13, 2012 4:10 PM
>>>> To: IBM-MAIN@LISTSERV.UA.EDU
>>>> Subject: Re: COBOL packed decimal
>>>> 
>>>> Zero and add pack.
>>>> 
>>>> ITschak
>>>> 
>>>> On Sat, Jul 14, 2012 at 12:05 AM, Frank Swarbrick
>>>> <frank.swarbr...@yahoo.com
>>>>> 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 lists...@listserv.ua.edu with the message: INFO
>>>>> IBM-MAIN
>>>>> 
>>>> 
>>>> ----------------------------------------------------------------------
>>>> For IBM-MAIN subscribe / signoff / archive access instructions, send
>>>> email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>>>> 
>>>> ----------------------------------------------------------------------
>>>> For IBM-MAIN subscribe / signoff / archive access instructions, send
>>>> email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>>>> 
>>>> 
>>>> 
>>> 
>>> ----------------------------------------------------------------------
>>> For IBM-MAIN subscribe / signoff / archive access instructions, send
>>> email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>> 
>> ----------------------------------------------------------------------
>> For IBM-MAIN subscribe / signoff / archive access instructions,
>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>> 
> 
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to