Posted: Thu Oct 24, 2013 5:54 pm Post subject: performing airthmetic with numeric fields

Dear experts,
I have one query which is as follows.

I was studying the topic arithmetic with numeric fields by sort.
The point is that i stuck on one thing where it saying when ua want to subtract a pd data to another data you have to check its decimal point before doing arithmetic calculation.
"In order to do arithmetic on these fields, you must ensure that the integer and decimal parts of the numbers match up correctly. For example, in the first record, the first PD value is +1524900810 representing +15249008.10 and the second PD value is +20000 representing +20.000. In order to subtract the second PD value from the first PD value, you need to put them in the following forms:
+15249008.100
+00000020.000"
OUTREC FIELDS=(1,8,
5X,
((11,6,PD,MUL,+10),SUB,31,7,PD),
EDIT=(SI,III,III,IIT.TTT),SIGNS=(,-))
..and we have to multiply by 10 to check first pd decimal point.
Bt i am confusing how it will check decimal point after multiplied by 10.

Joined: 03 Oct 2009 Posts: 1786 Location: Bloomington, IL

Posted: Thu Oct 24, 2013 6:13 pm Post subject:

"It" (i.e., your sort product) will not check the decimal point; packed decimal fields do not carry decimal points. In HLLs such COBOL and PL/I, there are various means of coding variables to ensure that packed decimal numbers are aligned properly. In *sort control cards, however, you must do it yourself; that is why you multiply the first number by 10; you know -- but have no means of sharing the information with *sort -- that it must be shifted one place to the left.