View previous topic :: View next topic
|
Author |
Message |
Rijit
Active User
Joined: 15 Apr 2010 Posts: 168 Location: Pune
|
|
|
|
Bingo
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 |
|
|
Rijit
Active User
Joined: 15 Apr 2010 Posts: 168 Location: Pune
|
|
|
|
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 |
|
|
CICS Guy
Senior Member
Joined: 18 Jul 2007 Posts: 2146 Location: At my coffee table
|
|
|
|
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 |
|
|
CICS Guy
Senior Member
Joined: 18 Jul 2007 Posts: 2146 Location: At my coffee table
|
|
|
|
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 |
|
|
Rijit
Active User
Joined: 15 Apr 2010 Posts: 168 Location: Pune
|
|
|
|
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 |
|
|
|