Posted: Mon Dec 22, 2003 9:19 pm Post subject: Advantages of COMP over COMP-3

Hi,

I understand that COMP-3 data occupies lesser space than a COMP variable. Assuming it this way why is that people prefer COMP over COMP-3. Is there any specific reasons that the COMP data have over COMP-3 variables. It would be great if some of you can give me an answer to the same.

There are various flavors of COMP, e.g. COMP-4/5, and compiler options that change it's execution characteristics. Check your compiler' manual for details.

Whoever told you that COMP-3 uses less storage than COMP was technically correct, but misleading. For numbers 0 thru 9 it's correct: COMP-3 requires 1 byte, COMP requires 2. However, a 2 byte signed COMP field can house numbers to +/-61439, while 2 bytes of COMP-3 can accommodate numbers limited to +/-999.

Another reason for choosing COMP is that it uses register to register arithmetic; a faster method than decimal arithmetic.

: COMP-3 requires 1 byte, COMP requires 2. However, a 2 byte signed COMP field can house numbers to +/-61439, while 2 bytes of COMP-3 can accommodate numbers limited to +/-999.

Quote:

can u explain me breifly ?

bye

how can a comp-3 occupies
0-9 comp-3 occupies 1 byte for signed it can house -/+999

However, a 2 byte signed COMP field can house numbers to +/-61439

If I understood u correctly, according to my calculations I can accomodate +/- 9999 for COMP items and +32767 to -32768 for COMP-5. COMP-3 showed +/-999 as u have said. Let me know If I am missing something.

Joined: 06 Sep 2005 Posts: 28 Location: Minneapolis US

Posted: Fri Sep 09, 2005 2:07 am Post subject:

Hi Friends;

Here I want to contribute a few lines in this discussion, those might helpful to understand it very clearly.

BINARY
Specified for binary data items. Such items have a decimal equivalent
consisting of the decimal digits 0 through 9, plus a sign. Negative numbers
are represented as the two's complement of the positive number with the same absolute value. The amount of storage occupied by a binary item depends on the number of decimal digits defined in its PICTURE clause:
1 through 4 2 bytes (halfword)
5 through 9 4 bytes (fullword)
10 through 18 8 bytes (doubleword)

The operational sign for ?big-endian? binary data (such as OS/390 and VM) is contained in the left most bit of the binary data. The operational sign for ?little-endian? binary data is contained in the left most bit of the right most byte of the binary data.

PACKED-DECIMAL
Specified for internal decimal items. Such an item appears in storage in
packed decimal format. There are 2 digits for each character position, except for the trailing character position, which is occupied by the low-order digit and the sign. Such an item can contain any of the digits 0 through 9, plus a sign, representing a value not exceeding 18 decimal digits.

The sign representation uses the same bit configuration as the 4-bit sign
representation in zoned decimal fields.

Following is the range I found in a IBM COBOL Programming manual

Picture Storage representation Numeric values

S9(1) through S9(4) Binary half-word (2 bytes) -32768 through +32767
S9(5) through S9(9) Binary full-word (4 bytes) -2,147,483,648 through
+2,147,483,647
S9(10) through S9(18) Binary double-word (8bytes) -9,223,372,036,854,775,808 through +9.223,372,036,854,775,807

9(1) through 9(4) Binary half-word (2 bytes) 0 through 65535
9(5) through 9(9) Binary full-word (4 bytes) 0 through 4,294,967,295
9(10) through 9(18) Binary double-word (8bytes) 0 through 18,446,744,073,709,551,615