View previous topic :: View next topic
|
Author |
Message |
vinuseba
New User
Joined: 17 Feb 2014 Posts: 19 Location: India
|
|
|
|
hi,
my declaration is as below.
01 WS-VIRT-VND.
05 WS-VNDR-A PIC 9(06) VALUE ZEROS.
05 WS-VNDR-B PIC 9(02) VALUE ZEROS.
05 WS-VNDR-C PIC 9(01) VALUE ZEROS.
01 WS-VIRT-VNDR REDEFINES WS-VIRT-VND PIC 9(09).
after moving 123456789 to WS-VIRT-VND if i use WS-VIRT-VND in IF clause it is not working. That is
IF WS-VIRT-VND > 999999 is resulting as false where as WS-VIRT-VNDR >999999 is resulting as true.
What is the reason? |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
Why do you want to do this?
One is comparing a numeric field to a numeric literal, the other is comparing a group item to a numeric literal which is shorter than the group item.
I'm sure if you consult the manual it will reveal why it is doing a character compare.
Can't say I ever have done such a thing, or would ever consider doing it. Even if it "worked" (if the literal was the same length as the field) would the next person along realise the danger of shortening the literal? |
|
Back to top |
|
|
vinuseba
New User
Joined: 17 Feb 2014 Posts: 19 Location: India
|
|
|
|
hi Bill,
The variable WS-VIRT-VND is rading a number and the IF clause is to make sure the read number is greater than 999999 for further processing. |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8697 Location: Dubuque, Iowa, USA
|
|
|
|
As you were told, using the group name in the IF statement may give you erroneous results. Do NOT use the group variable name in your IF statement. |
|
Back to top |
|
|
pongi
New User
Joined: 21 Aug 2006 Posts: 4 Location: US
|
|
|
|
Please follow the Robert Insturctions. But, thought to post my thoughts.
WS-VIRT-VND > 999999 ==> This will be the Alpha Numeric Comparision. So, First 6 chracters will be compared 123456789 > 999999. - So, it is gave False, since char by char will be compared.
WS-VIRT-VNDR >999999 == Numeric comparison which will work as arithmatic comparison. |
|
Back to top |
|
|
vinuseba
New User
Joined: 17 Feb 2014 Posts: 19 Location: India
|
|
|
|
Thanks everyone for the explanation |
|
Back to top |
|
|
Terry Heinze
JCL Moderator
Joined: 14 Jul 2008 Posts: 1249 Location: Richfield, MN, USA
|
|
|
|
Displaying the values of WS-VIRT-VND and WS-VIRT-VNDR before executing your IF statement would have shown you why. It's handy to keep a short test program around for researching problems like this. |
|
Back to top |
|
|
vinuseba
New User
Joined: 17 Feb 2014 Posts: 19 Location: India
|
|
|
|
thats cool Terry.... Thank you |
|
Back to top |
|
|
|