sivakanuri
New User
Joined: 07 Jun 2004 Posts: 5 Location: hyderabad
|
|
|
|
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 |
|
mcmillan
Site Admin
Joined: 18 May 2003 Posts: 1210 Location: India
|
|
|
|
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) |
|