MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Cobol variable declarations needed
Goto page Previous  1, 2
 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Application Programming
View previous topic :: View next topic  
Author Message
yadav2005
Intermediate


Joined: 10 Jan 2005
Posts: 348
Topics: 144

PostPosted: Fri Oct 16, 2009 2:12 pm    Post subject: Reply with quote

Kolusu I found a problem while testing can you help me solve the problem.

My input file is having a record as below:
Code:

        12.34567890-","      1234.56789123

Can you help me understand why the value is becoming -12.45 instead of -12.34 and 1234.67 instead of 1234.56 and I am showing you my sysout and my code:
Code:


05  AMOUNT-DTL-EDITED   PIC ----------9.99
                              VALUE ZEROES.


05 INP-FLD1          PIC X(20) VALUE SPACES.
05 WK-FLD1.
   10 WK1-INTEGER             PIC 9(10).
   10 WK1-DECIMAL             PIC 9(08).
05 NUM-FLD1 REDEFINES WK-FLD1 PIC S9(10)V9(08).

05 INP-FLD2          PIC X(20) VALUE SPACES.
05 WK-FLD2.
   10 WK2-INTEGER             PIC 9(10).
   10 WK2-DECIMAL             PIC 9(08).
05 NUM-FLD2 REDEFINES WK-FLD2 PIC S9(10)V9(08).

MOVE IN-REC(1:20) TO INP-FLD1
DISPLAY 'INP-FLD1    B:' INP-FLD1
INSPECT INP-FLD1(1:19) REPLACING ALL ' ' BY '0'
DISPLAY 'INP-FLD1    A:' INP-FLD1
INITIALIZE WK-FLD1
DISPLAY 'WK-FLD1     B:' WK-FLD1
DISPLAY 'WK1-INTEGER B:' WK1-INTEGER
DISPLAY 'WK1-DECIMAL B:' WK1-DECIMAL
UNSTRING INP-FLD1 DELIMITED BY '.'
         INTO WK1-INTEGER, WK1-DECIMAL
DISPLAY 'WK-FLD1     A:' WK-FLD1
DISPLAY 'WK1-INTEGER A:' WK1-INTEGER
DISPLAY 'WK1-DECIMAL A:' WK1-DECIMAL
DISPLAY 'NUM-FLD1    B:' NUM-FLD1
IF INP-FLD1(20 : 1) = '-'
   COMPUTE NUM-FLD1  = ( 0 - NUM-FLD1 )
END-IF
DISPLAY 'NUM-FLD1    A:' NUM-FLD1
MOVE NUM-FLD1 TO AMOUNT-DTL-EDITED
IF IN-REC(1:20) IS EQUAL TO SPACES
  MOVE 0.00  TO AMOUNT-DTL-EDITED
END-IF
WRITE OUTFILE-REC FROM WS-DETAIL


MOVE IN-REC(21:20) TO INP-FLD2
DISPLAY 'INP-FLD2    B:' INP-FLD2
INSPECT INP-FLD2(1:19) REPLACING ALL ' ' BY '0'
DISPLAY 'INP-FLD2    A:' INP-FLD2
INITIALIZE WK-FLD2
DISPLAY 'WK-FLD2     B:' WK-FLD2
DISPLAY 'WK2-INTEGER B:' WK2-INTEGER
DISPLAY 'WK2-DECIMAL B:' WK2-DECIMAL
UNSTRING INP-FLD2 DELIMITED BY '.'
         INTO WK2-INTEGER, WK2-DECIMAL
DISPLAY 'WK-FLD2     A:' WK-FLD2
DISPLAY 'WK2-INTEGER A:' WK2-INTEGER
DISPLAY 'WK2-DECIMAL A:' WK2-DECIMAL
DISPLAY 'NUM-FLD2    B:' NUM-FLD2
IF INP-FLD2(20 : 1) = '-'
   COMPUTE NUM-FLD2  = ( 0 - NUM-FLD2 )
END-IF
DISPLAY 'NUM-FLD2    A:' NUM-FLD2
MOVE NUM-FLD2 TO AMOUNT-DTL-EDITED
IF IN-REC(21:20) IS EQUAL TO SPACES
  MOVE 0.00   TO AMOUNT-DTL-EDITED
END-IF
WRITE OUTFILE-REC FROM WS-DETAIL

In my output file I am getting data as below:
Code:

 -12.45
1234.67


Sysout:
Code:

INP-FLD1    B:        12.34567890-
INP-FLD1    A:0000000012.34567890-
WK-FLD1     B:000000000000000000
WK1-INTEGER B:0000000000
WK1-DECIMAL B:00000000
WK-FLD1     A:000000001245678900
WK1-INTEGER A:0000000012
WK1-DECIMAL A:45678900
NUM-FLD1    B:000000001245678900
NUM-FLD1    A:00000000124567890}
INP-FLD2    B:      1234.56789123
INP-FLD2    A:0000001234.56789123
WK-FLD2     B:000000000000000000
WK2-INTEGER B:0000000000
WK2-DECIMAL B:00000000
WK-FLD2     A:000000123467891230
WK2-INTEGER A:0000001234
WK2-DECIMAL A:67891230
NUM-FLD2    B:000000123467891230
NUM-FLD2    A:000000123467891230


I guess we are wrongly moving 1 byte data , can you please help me how to fix the probelem.
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12402
Topics: 75
Location: San Jose

PostPosted: Fri Oct 16, 2009 3:50 pm    Post subject: Reply with quote

yadav2005,

*Sigh* if you looked closely at my code , I used unstring only on the first 19 bytes .

Kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Application Programming All times are GMT - 5 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group