View previous topic :: :: View next topic

Author 
Message 
Kmr.deepakcs
New User
Joined: 11 Oct 2013 Posts: 37 Location: India




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.
Please clear me....
Deepak kumar 

Back to top 




Kmr.deepakcs
New User
Joined: 11 Oct 2013 Posts: 37 Location: India




Code: 
OUTREC FIELDS=(1,8,
5X,
((11,6,PD,MUL,+10),SUB,31,7,PD),
EDIT=(SI,III,III,IIT.TTT),SIGNS=(,))



Back to top 


Akatsukami
Global Moderator
Joined: 03 Oct 2009 Posts: 1733 Location: Bloomington, IL




"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. 

Back to top 



