Portal | Manuals | References | Downloads | Info | Programs | JCLs | Mainframe wiki | Quick Ref

Author Message
AJAYREDDY

New User

Joined: 17 Feb 2007
Posts: 52
Location: USA

 Posted: Mon Jan 28, 2008 6:56 pm    Post subject: Finding DIFFERENCE between two variables Hi, I have a situation where I got 2 variables A and B. I need to find the difference between 2 and display the correct results. Example: If A = 11 and B = -4 I need to Display as 7 If A = -11 and B = -4 I need to Display as -7 (still I need difference between A and B, not -15) If A = -11 and B = 4 I need to Display as -7 Is there any COMPUTE verb or any COBOL function where I can get the difference between 2 as above ? It should be able to do intelligently !!! I do not know what will be the values inside A and B until it is calculated. But after calculation I should get results as above. Please let me know for any ideas!! Thanks

Phrzby Phil

Active Member

Joined: 31 Oct 2006
Posts: 968
Location: Richmond, Virginia

 Posted: Mon Jan 28, 2008 7:55 pm    Post subject: Difference means subtract. It gives you the distance between two numbers on the real number line. If A=11 and B=-4, then the difference is not 7, and no correct code will give you that. A-B = 15, and B-A = -15. It seems you want the difference of their absolute values. Either find an absolute value function, or do it yourself: if A < 0, then A = -A.
enrico-sorichetti

Global Moderator

Joined: 14 Mar 2007
Posts: 10388
Location: italy

 Posted: Mon Jan 28, 2008 8:12 pm    Post subject: Reply to: Finding DIFFERENCE between two variables the issue here is that the logic is confusing but diff = sign(A) * ( abs(A) -abs(B) ) gives what You want for the values given, what if abs(b) > abs(a) a= 4 b=11 diff = ???
AJAYREDDY

New User

Joined: 17 Feb 2007
Posts: 52
Location: USA

Posted: Mon Jan 28, 2008 8:27 pm    Post subject:

 Phrzby Phil wrote: Difference means subtract. It gives you the distance between two numbers on the real number line. If A=11 and B=-4, then the difference is not 7, and no correct code will give you that. A-B = 15, and B-A = -15. It seems you want the difference of their absolute values. Either find an absolute value function, or do it yourself: if A < 0, then A = -A.

Hi Phil,

That is what I am looking for Absolute value function. If you know the syntax please let me know. I can do by programming logic as IF A<0 or B<0 etc. But I have about 20 to 25 fields to compare each other.

Thanks
dick scherrer

Site Director

Joined: 23 Nov 2006
Posts: 19270
Location: Inside the Matrix

 Posted: Mon Jan 28, 2008 10:35 pm    Post subject: Hello, What should be the "difference" if A=4 and B=11?
rag swain

New User

Joined: 17 Dec 2007
Posts: 33
Location: pune,INDIA

 Posted: Mon Jan 28, 2008 10:49 pm    Post subject: Reply to: Finding DIFFERENCE between two variables You can use FUNCTION ABS with COMPUTE verb to get the absolute value of a variable. But then your requirement is not clear. If A < B, then how would you go for calculation?
AJAYREDDY

New User

Joined: 17 Feb 2007
Posts: 52
Location: USA

Posted: Mon Jan 28, 2008 11:33 pm    Post subject: Re: Reply to: Finding DIFFERENCE between two variables

 rag swain wrote: You can use FUNCTION ABS with COMPUTE verb to get the absolute value of a variable. But then your requirement is not clear. If A < B, then how would you go for calculation?

Yeah, that is where the main problem is. If A = 4 and B = 11 , I need value 7. It should not give me -7. If A=4 and B= -11 , it should still give me value 7 not ((4 - (-11))=15.

I can use the logic behind the scene as IF A<B ELSE A>B. But just curious to know if any COBOL function is there to get the results directly.

Thanks
Phrzby Phil

Active Member

Joined: 31 Oct 2006
Posts: 968
Location: Richmond, Virginia

 Posted: Tue Jan 29, 2008 12:02 am    Post subject: ABS(ABS(A) - ABS(B))
Ganesh.Deokar

New User

Joined: 30 Sep 2005
Posts: 26
Location: Buffalo,NY

 Posted: Tue Jan 29, 2008 12:16 am    Post subject: Try this. It's a simple one. Define 3 more variables(WS-FIELD3, WS-FIELD4 and WS-FIELD5) without sign. 01 WS-TEMP. 05 WS-FIELD1 PIC -9(2). 05 WS-FIELD2 PIC -9(2). 05 WS-FIELD3 PIC 9(2). 05 WS-FIELD4 PIC 9(2). 05 WS-FIELD5 PIC 9(2). 1) Move your input values from WS-FIELD1 and WS-FIELD2 to WS-FIELD3 and WS-FIELD4 respectively. 2) Compute the difference between WS-FIELD3 and WS-FIELD4 in WS-FIELD5.
the_gautam

Active User

Joined: 05 Jun 2005
Posts: 165
Location: Bangalore

 Posted: Tue Jan 29, 2008 11:00 am    Post subject: IF A IS NEGATIVE COMPUTE WS-A = 0 - A ELSE COMPUTE WS-A = A END-IF. IF B IS NEGATIVE COMPUTE WS-B = 0 - B ELSE COMPUTE WS-B = B END-IF. COMPUTE WS-DIFFERENCE = A - B. IF A IS NEGATIVE COMPUTE WS-DIFFERENCE = 0 - WS-DIFFERENCE END-IF.
stodolas

Active Member

Joined: 13 Jun 2007
Posts: 632
Location: Wisconsin

 Posted: Tue Jan 29, 2008 6:35 pm    Post subject: Phil gave the easiest and most elegant answer this other code is just reinventing the wheel and not really straight forward.
enrico-sorichetti

Global Moderator

Joined: 14 Mar 2007
Posts: 10388
Location: italy

 Posted: Tue Jan 29, 2008 6:49 pm    Post subject: Reply to: Finding DIFFERENCE between two variables It would be nice and rewarding for the responders if the O/P would care to clarify his question from the original question I guess that the O/P wants also the sign of the first operand diff = sign(A) * abs( abs(A) - abs(B) ) ... who knows ... ok about the absolute value of the difference of the absolute values, but why the sign of the first operand ???
AJAYREDDY

New User

Joined: 17 Feb 2007
Posts: 52
Location: USA

 Posted: Tue Feb 05, 2008 9:21 pm    Post subject: Reply to: Finding DIFFERENCE between two variables Thanks everyone. I did same as ABS function and manipulated the results which I need.
dick scherrer

Site Director

Joined: 23 Nov 2006
Posts: 19270
Location: Inside the Matrix

 Posted: Tue Feb 05, 2008 9:45 pm    Post subject: Reply to: Finding DIFFERENCE between two variables Cool Thanks for letting us know it is working. d
 All times are GMT + 6 Hours
 Page 1 of 1

Search our Forum:

 Topic Author Forum Replies Posted Similar Topics COMP Variables Mismatch gayu7 COBOL Programming 5 Wed Dec 20, 2017 5:06 pm ISMF Difference between volume count ... upendrasri IBM Tools 2 Tue Dec 05, 2017 12:40 pm Finding the plan when code compiled u... Ahemad DB2 1 Fri Dec 01, 2017 6:38 pm Need help how to pass the ESP variabl... Venkichaitu JCL & VSAM 12 Thu Nov 02, 2017 3:53 am Finding difference between two PS fil... Vignesh Sid SYNCSORT 5 Mon Oct 30, 2017 1:13 pm

 © 2003-2017 IBM MAINFRAME Software Support Division
 Job Vacancies | Forum Rules | Bookmarks | Subscriptions | FAQ | Polls | Contact Us