IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

COBOL CALL statement inside PERFORM


IBM Mainframe Forums -> Mainframe Interview Questions
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Shanu.sukoor

New User


Joined: 31 Jan 2006
Posts: 32
Location: India

PostPosted: Fri Nov 23, 2007 2:36 pm
Reply with quote

The MAINPRG COBOL program is displayed below. For this program, if the variables X, Y, and Z are assigned the values "1", "5", and "50", which of the following are the possible outputs upon executing this program?
PERFORM VARYING X FROM 1 BY Y UNTIL X>Z
CALL CHECKPRG USING X,Y,Z
END-PERFORM.
DISPLAY X,Y,Z.

The PROCEDURE DIVISION of CHECKPRG is displayed below.

PROCEDURE DIVISION USING X1,Y1,Z1.
IF Z1>Y1 AND Y1>X1
DIVIDE Z1 BY X1 GIVING Y1
ELSE GOBACK.

A. 35, 15, 45
B. 5, 10, 50
C. 20, 15, 45
D. 5, 15, 45
E. 50, 15, 45
Back to top
View user's profile Send private message
iknow

Active User


Joined: 22 Aug 2005
Posts: 411
Location: Colarado, US

PostPosted: Fri Nov 23, 2007 6:34 pm
Reply with quote

Hi

I tried executing your code and I am getting the result as 51 50 50 which is not available in your options that you have listed. Also I got a U1037 ABEND upon execution.

Please let me know the result if anybody else tried executing the same program.
Back to top
View user's profile Send private message
iknow

Active User


Joined: 22 Aug 2005
Posts: 411
Location: Colarado, US

PostPosted: Fri Nov 23, 2007 7:14 pm
Reply with quote

Hi

I have fixed the problem (U1037 abend) and upon execution I am still getting the result as "51 50 50".
Back to top
View user's profile Send private message
stodolas

Active Member


Joined: 13 Jun 2007
Posts: 632
Location: Wisconsin

PostPosted: Fri Nov 23, 2007 8:05 pm
Reply with quote

Just tracing through I get the same as iknow. The time through, in the subprogram:

Y1 = Z1/X1
Y1 = 50/1
Y1 = 50

and then after that the IF logic in the subprogram is always false and the divide will never happen again. Leaving Y = 50 and Z is never changed so that must be 50 and you loop until X > Z so X must be 51
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> Mainframe Interview Questions

 


Similar Topics
Topic Forum Replies
No new posts Replace each space in cobol string wi... COBOL Programming 3
No new posts COBOL -Linkage Section-Case Sensitive COBOL Programming 1
No new posts COBOL ZOS Web Enablement Toolkit HTTP... COBOL Programming 0
No new posts Calling DFSORT from Cobol, using OUTF... DFSORT/ICETOOL 5
No new posts Generate random number from range of ... COBOL Programming 3
Search our Forums:

Back to Top