In COBOL "unsigned" really means "not signed", which means that the number can
only have a positive value or zero.
From a practical point of view:
* An unsinged binary can hold larger numbers, depending on compile options
* Unsigned is generally better for zoned decimal ("usage display"). 123 as a
signed zoned decimal (PIC S999) would be stored as x'F1F2C3', while as unsigned
(PIC 999) it would be F1F2F3. The problem is when you print or display it: the
signed version would print as 12C. I hate that.
On the other hand, singed fields enable more efficient code.
Fun fact: CA Easytrieve also has signed and unsigned numbers, but there's no
obvious way to define it. The way it works is a number with decimal positions
is signed (aka "quantitative"), a number without is unsinged:
Field 4 P = 4 byte unsigned packed decimal
Field 4 P 2 = 4 byte signed packed decimal with 2 decimal positions
So how do you do a signed field with 0 decimals? Easy:
Field 4 P 0
-----Original Message-----
From: IBM Mainframe Discussion List <[email protected]> On Behalf Of
Andrew Rowley
Sent: Monday, April 28, 2025 6:40 PM
To: [email protected]
Subject: Re: Packed decimal sign nibbles
On 29/04/2025 9:32 am, Seymour J Metz wrote:
> The decimal instructions treat F zones as positive.
That's always been my understanding. But I'm intrigued by the statement
that it means unsigned in COBOL. Is there a practical difference? Or is
it just a difference e.g. for formatting output?
--
Andrew Rowley
Black Hill Software
----------------------------------------------------------------------
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