I need one solution using DFSORT technique using ICEMAN. Actual
requirement is that I have one report file of 133 bytes fixed format.In that
header I want to change to some other text.For example , If the header is having GOOD MORNING, I want to make it as spaces.For that I used
ICEMAN Utility Old syntax model. My system doesn't support the new
type of DFSORT Syntax.I.e, IFTHEN , OVERLAY Like that......
For this I have used the below syntax.
Code:
//SYSIN DD *
OPTION COPY
INREC FIELDS=(1,59,
60:14,14,CHANGE=(14,C' GOOD MORNING ',
C' '),
NOMATCH=(60,14),73,60)
/*
In this total 133 bytes length, the text starts in 60 th position and of having 14 bytes length.My intention is to make these 14 bytes as spaces.
But for me it is not working fine.It is always going into the NOMATCH
condition even if the condition is matching.Could you please anyone suggest me that any thing is going wrong in the syntax or any thing is required to add still.
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
If I run your control statements with 'bGOOD MORNINGb' (b for blank) in positions 14-27 of the input record, I get blanks in 60-73 of the output record. If you're getting the NOMATCH condition, then you don't have 'bGOOD MORNINGb' in positions 14-27 (note the leading and trailing blank). If your input file is FBA, the data starts in position 2 after the carriage control character, so you have to add 1 to each position (e.g. 15 instead of 14).
You can run this DFSORT job to see what you actually have in positions 14-27:
Thanks for Your sugession.....Still I am facing problem as below.
Actual intention is to change the report name to some other name assume spaces.Let us assume the report name as ACTIVITY RECAP.I need to change this report name in all pages of the report.So I used the syntax mentioned in previous mail.
Now I used the syntax to know the actual starting position of the report name and the length.It is as below...
But in the output it is not getting replaced by Spaces.Please let me know
if any mistakes exists in above syntax or else show me any other way
of reaching the requirement.
Note: This is of 133 Bytes format and having Cariage control character
in the left most digit for all records.
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
You're a little confused. You have
Code:
...,60:14,14,CHANGE=(14,C'ACTIVITY RECAP',
C' '),...
This looks at the characters in 14,14. If they're 'ACTIVITY RECAP', it puts blanks in 60,14.
So the input field is 14,14 and the output field is 60,14. It's the 14,14 field that must have 'ACTIVITY RECAP' so that has to be in 14,14. I showed this:
Code:
OUTREC FIELDS=(C'<',14,14,C'>')
which displays the characters in 14,14 to see if they're 'ACTIVITY RECAP'.
You used this:
Code:
OUTREC FIELDS=(C'<',60,14,C'>')
which displays the characters in 60,14 instead of the characters in 14,14.
Are you trying to change 60,14 to blanks if 14,14 has 'ACTIVITY RECAP' (that's what your current CHANGE parameter does) or are you trying to change 60,14 to blanks if 60,14 has 'ACTIVITY RECAP'? If the latter than it would be: