| IBM MAINFRAME HELP & SUPPORT FORUMS Technical Forums for IBM Mainframe Applications like COBOL, JCL, CICS, DB2, FileAid, DFSORT, Endevor, Xpediter, CoolGen, CA-7&11, AbendAid, IMS, IDMS, PL/I, MqSeries, SyncSort, Assembler, ChangeMan, Easytrieve, InterTest, REXX, CLIST etc...
|
| View previous topic :: View next topic |
| Author |
Message |
sivakanuri
Joined: 07 Jun 2004
Posts: 5
Location: hyderabad
|
| Posted: Mon Jun 14, 2004 11:32 pm Post subject: COBOL Interview Program Enquiry |
|
|
:) Study the following
01 A PIC 99V0 VALUE 5
01 B PIC 9V9 VALUE 6
01 C PIC 99V9 VALUE 2.5
01 D PIC 99 VALUE 3
COMPUTE A ROUNDED B C = A+B*C/D
ON SIZE ERROR PERFORM PRINT-ERROR
the comments of A.B.C after execution of the above statement are
a.A=10 B=0 C=10 b.A=10 B=9.9 C=9.9 c.A=10 B=0 C=9.9 d.A=10 B=6 C=10
plz study the code an give the valid option , and also explain hou u got the answer,urgent plz.
thanks in advance |
|
| Back to top |
|
mcmillan
Joined: 18 May 2003
Posts: 922
Location: India
|
| Posted: Fri Jun 18, 2004 8:07 am Post subject: Re |
|
|
The answer is d) A = 10, B = 6, C = 10
You can not initialize a non-numeric (99v0) item with 5, so I assume as:
Quote: 01 A PIC 99V9 VALUE 5
01 B PIC 9V9 VALUE 6
01 C PIC 99V9 VALUE 2.5
01 D PIC 99 VALUE 3
Now the size of A is 3 Bytes (V doesn't occupy any memory)
B - 2 Bytes
C - 3 Bytes
Quote: COMPUTE A ROUNDED B C = A+B*C/D
As by the rule,
B * C = 15.0 (It's not 15)
(B * C ) / D = 5.0
A + (( B * C) / D) = 10.0
So now the answer is
A = 10.0
B = 0.0 (has only 2 Bytes, so value truncated)
C = 10.0
But yu have specified ON SIZE ERROR...
Quote:
ON SIZE ERROR PERFORM PRINT-ERROR
If on size error specified, then insted of truncation, the value will be restored.
That's instead of 0.0 the value of B getting restored as 6.0 (as per in VALUE clause)
So your answer is now,
A = 100 (10.0 - assumed decimal)
B = 60 (6.0)
C = 100 ( 10.0) |
|
| Back to top |
|
| |
THIS IS AN ARCIVE FORUM IN READ ONLY MODE. IF YOU WANT TO ASK YOUR DOUBTS USE THE ACTUAL FORUM
|