Page 1 of 1

Unable to add space for particular fields from the inp file

PostPosted: Thu Nov 06, 2014 7:56 pm
by tjegan
Hi All,

I have a control card like the below:
Record length of both input and output file is 620 and it is fixed format.

when i try copy the record from input file using overlay statemnt, it is working fine for 01 type record.
SORT FIELDS=COPY                                         
OUTREC IFTHEN=(WHEN=(81,2,CH,EQ,C'01'),OVERLAY=(1:1,181,
182,21,203,21,224,21,                                   
245,21,266,21,287,21,                                   
308,21,329,21,350,21,                                   
371,21,392,21,413,21,                                   
434,21,455,21,476,145))                                 

Input file:
6----+----7----+----8----+----9----+----0----+----1----+-
************** Top of Data ******************************
           5165550290H V       N5165550290BAV       N   

Output file:
6----+----7----+----8----+----9----+----0----+----1----
************** Top of Data ****************************
           5165550290H V       N5165550290BAV       N 

But i want to insert a space inbetween few fields(i mentioned as X from the below control card)
For example, In the ouptput file, i need a space in 204th position and 205th position should contains
the value from the input file(203 to 21 length)..

SORT FIELDS=COPY                                                 
OUTREC IFTHEN=(WHEN=(81,2,CH,EQ,C'01'),OVERLAY=(1:1,181,182:X,   
182,21,204:X,203,21,226:X,224,21,248:X,                           
245,21,270:X,266,21,292:X,287,21,314:X,                           
308,21,336:X,329,21,358:X,350,21,380:X,                           
371,21,402:X,392,21,424:X,413,21,446:X,                           
434,21,468:X,455,21,490:X,476,145))                               


When i try with the below control card i am getting unexpected result. I have also tried with C' ' but invain. So can any one please correct me on this.
output:
6----+----7----+----8----+----9----+----0----+----1----+-
************** Top of Data ******************************
           5165550290H  V       N5165550290B B        N 


Expected output
6----+----7----+----8----+----9----+----0----+----1----+-
************** Top of Data ******************************
           5165550290H  V       N5165550290B AV       N


Thanks
Jegan.

Re: Unable to add space for particular fields from the inp f

PostPosted: Thu Nov 06, 2014 8:13 pm
by BillyBoyo
With OVERLAY, you can't insert, you can only overwrite.

OVERLAY operates on the current (version) of the input record. BUILD creates a new current record, every time it is used. So BUILD can refer to positions which have not been destroyed by the result of the BUILD. If OVERLAY is used on a position which has already been changed earlier in the OVERLAY, then that changed data is what you get.

For instance, you have 182:X,182,21. That is always going to replace your data by one leading blank. On a BUILD, 182:X,182,21 would work as you expect, although unless you wanted blanks before the X, you'd probably not need to bother having the 182: anyway.

If you want to "insert" a couple of blanks, how are you going to get around the fact that that will make the record longer?

Re: Unable to add space for particular fields from the inp f

PostPosted: Fri Nov 07, 2014 11:33 am
by tjegan
Many thanks for the clarification. I tried replacing with Build statement and got the expected output. :)