|
|
| Author |
Message |
Shanu.sukoor
New User
Joined: 31 Jan 2006 Posts: 32 Location: India
|
|
|
|
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 |
|
 |
References
|
Posted: Fri Nov 23, 2007 2:36 pm Post subject: Re: COBOL CALL statement inside PERFORM |
 |
|
|
 |
iknow
Senior Member
Joined: 22 Aug 2005 Posts: 584 Location: Colarado, US
|
|
|
|
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 |
|
 |
iknow
Senior Member
Joined: 22 Aug 2005 Posts: 584 Location: Colarado, US
|
|
|
|
Hi
I have fixed the problem (U1037 abend) and upon execution I am still getting the result as "51 50 50". |
|
| Back to top |
|
 |
stodolas
Senior Member
Joined: 13 Jun 2007 Posts: 641 Location: Wisconsin
|
|
|
|
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 |
|
 |
|
|
|