View previous topic :: :: View next topic

Author 
Message 
sachinji84
New User
Joined: 13 Dec 2007 Posts: 14 Location: india




Hi,
I have been asked ;
for optimum storage points of view and for faster performance from below options which one is best;
1. PIC 9(4) COMP3
2. PIC 9(5)
3. PIC S9(5) COMP
4. PIC S9(5) COMP3
please assist to get the correct answer. 

Back to top 




Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 7936 Location: Bellevue, IA




Unless your program is doing BILLIONS to TENS OF BILLIONS of arithmetic operations, none of them will make any noticeable difference in CPU time or elapsed time. However, in general COMP3 and COMP are preferred for mathematical operations (depending upon the precise operations being used). From the Enterprise COBOL Programming Guide manual:
Quote: 
8.1.2.1 Choosing efficient computational data items
When you use a data item mainly for arithmetic or as a subscript, code USAGE BINARY on the data description entry for the item. The operations for manipulating binary data are faster than those for manipulating decimal data. However, if a fixedpoint arithmetic statement has intermediate results with a large precision (number of significant digits), the compiler uses decimal arithmetic anyway, after converting the operands to packeddecimal form. For fixedpoint arithmetic statements, the compiler normally uses binary arithmetic for simple computations with binary operands if the precision is eight or fewer digits. Above 18 digits, the compiler always uses decimal arithmetic. With a precision of nine to 18 digits, the compiler uses either form. To produce the most efficient code for a BINARY data item, ensure that it has:
A sign (an S in its PICTURE clause)
Eight or fewer digits
For a data item that is larger than eight digits or is used with DISPLAY  or NATIONAL data items, use PACKEDDECIMAL. The code generated for  PACKEDDECIMAL data items can be as fast as that for BINARY data items in some cases, especially if the statement is complicated or specifies rounding. To produce the most efficient code for a PACKEDDECIMAL data item, ensure that it has:
A sign (an S in its PICTURE clause)
An odd number of digits (9s in the PICTURE clause), so that it occupies an exact number of bytes without a half byte left over
15 or fewer digits in the PICTURE specification to avoid using library routines for multiplication and division 
So your question does not have any ONE correct answer  COMP or COMP3 will be better, depending. 

Back to top 



