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...
 

COBOL Interview Program Enquiry

THIS IS AN ARCHIVE FORUM: CLICK HERE TO GO TO THE ORIGINAL TOPIC

 
       IBMMAINFRAMES.com - IBM Mainframe Support Forums Index -> Interview Questions
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  
 
       IBMMAINFRAMES.com - IBM Mainframe Support Forums Index -> Interview Questions
Page 1 of 1
THIS IS AN ARCIVE FORUM IN READ ONLY MODE. IF YOU WANT TO ASK YOUR DOUBTS USE THE ACTUAL FORUM