IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

how to resolve S0C7 - have offset


IBM Mainframe Forums -> ABENDS & Debugging
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Rijit

Active User


Joined: 15 Apr 2010
Posts: 168
Location: Pune

PostPosted: Thu Apr 15, 2010 10:32 pm
Reply with quote

Bingo icon_biggrin.gif

My job ran successfully. You are absolutely right. I made the following code changes:

MOVE '*' TO COM-FILL48
* MOVE '*' TO COM-FILL49
ARIJIT EVALUATE WS-REINS-NUM
ARIJIT WHEN 01
ARIJIT IF WS-TRTYNO-GT5 = 'Y'
ARIJIT DISPLAY '**COM-BILLOUT-REC**' COM-BILLOUT-REC
ARIJIT MOVE WS-REINS-NUM TO TBLX-FILL49
ARIJIT WRITE TBLX-BILLOUT-REC FROM COM-BILLOUT-REC

I had redefined the filler as a numeric item and used it as an odo object to write the records into the O/P file. But since ' * ' is an alphanumeric field so it is giving a S0C7.

Let me describe the copybook layout which I had defined:

05 :COM:-FILL49 PIC X(01).
05 :COM:-REINS-COUNT REDEFINES :COM:-FILL49 PIC 9(01).
05 :COM:-TOTAL-BILLED PIC Z,ZZZ,ZZZ,ZZZ,ZZ9.99-.
05 :COM:-REINSURER-ARRAY
OCCURS 1 TO 05 TIMES
DEPENDING ON :COM:-REINS-COUNT
INDEXED BY :COM:-RIX.

** I have one last query:
==============
But I want to know one thing. I want a * to be displayed in that filler since it is the report format. But if I declare an extra ODO variable in the copybook then the length of the report will change. If I don't move the * into the fill49 the ODO object value i.e. fill49 wil also get written which is not correct . So I am puzzled how to generate the report - so that the filler * should also be there but the ODO value is not written in the report.
Back to top
View user's profile Send private message
Rijit

Active User


Joined: 15 Apr 2010
Posts: 168
Location: Pune

PostPosted: Thu Apr 15, 2010 10:44 pm
Reply with quote

To elaborate on this:

Also the part of the JCl which I used is :
//SYSOUT DD SYSOUT=*
//SYSABEND DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//LOOKUP DD DSN=T.XXXX.R040.VS.BILL.MAIN,DISP=SHR
//BILLIN DD DSN=T.XXXX.R040.REINS.BROK,DISP=SHR
//BILLOUT1 DD DSN=T.XXXX.R040.BROKER.BILL1,
// DISP=(,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(300,150),RLSE),AVGREC=K,
// DCB=(LRECL=3365,BLKSIZE=0,RECFM=VB)
//* DCB=(LRECL=1389,BLKSIZE=0,RECFM=FB)

i checked my output file T.XXXX.R040.BROKER.BILL1. It has a LRECL of 3365. But in the file the record is only till 1389th byte. Is there a way that this O/P file has a lesser LRECL i;e something like ( 1389 + 4) = 1393 bytes? So that the unused bytes can be free..
Back to top
View user's profile Send private message
CICS Guy

Senior Member


Joined: 18 Jul 2007
Posts: 2146
Location: At my coffee table

PostPosted: Thu Apr 15, 2010 11:00 pm
Reply with quote

Several points.....
When you move the proper count to an of the FILL49s, move it to the actual ODO count, not the X(1) FILL49.
In every copybook that you are using FILL49 as a redefine to an ODO count, rename the FILL49 to something like FILL49-X.
After compiling the program, comment all 'dataname not found' error in the move to statements.
In any program that you get that error and the program is doing a move from, replace the FILL49 in the move with '*'.
Report programs that are not recompiled will not error, they will just show the count instead of the '*' and as noted by users those programs can be recompiled and fixed on an as needed basis.
Place in all copybooks that use FILL49 as the redefine of the count, at the FILL49 line, a comment stating that the moves of the FILL49 need to be replaced by an '*'.

Needless to say, at some point before the FILL49 will actually be needed, you are going to have to redefine the copybook and associated files to allow a proper space for the count.
An aid to reversing these changes will be a comment just above any FILL49 changes you make that has a unique identifier that will allow a source PDS search for all the programs that need changing back.
Back to top
View user's profile Send private message
CICS Guy

Senior Member


Joined: 18 Jul 2007
Posts: 2146
Location: At my coffee table

PostPosted: Thu Apr 15, 2010 11:08 pm
Reply with quote

Rijit wrote:
i checked my output file T.XXXX.R040.BROKER.BILL1. It has a LRECL of 3365. But in the file the record is only till 1389th byte. Is there a way that this O/P file has a lesser LRECL i;e something like ( 1389 + 4) = 1393 bytes? So that the unused bytes can be free..
The ODO allows the records to be less than max size.
The file should be defined with the max possible size and don't worry, the unused bytes are free, not allocated for on disk, not taking up any space.
Trust the compiler:
Code:
000215C               01  TBLA-BILLOUT-REC.                                                     BLF=00002+000         0CL3361

Welcome to the magical world of VB....grin.....
Back to top
View user's profile Send private message
Rijit

Active User


Joined: 15 Apr 2010
Posts: 168
Location: Pune

PostPosted: Thu Apr 15, 2010 11:17 pm
Reply with quote

Many thanks for your valuable advise!! Cheers!

I shall go ahead an use a separate ODO count variable instead of that redefining mess!!
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> ABENDS & Debugging

 


Similar Topics
Topic Forum Replies
No new posts Need help to resolve a hard edit COBOL Programming 8
This topic is locked: you cannot edit posts or make replies. Need help to resolve a hard edit COBOL Programming 4
No new posts S0C7 - Field getting overlayed COBOL Programming 2
No new posts Printing a dataset in DUMP format wit... ABENDS & Debugging 2
No new posts Using sort on VB records based on off... DFSORT/ICETOOL 6
Search our Forums:

Back to Top