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 

Removing characters in an Report

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Utilities
View previous topic :: View next topic  
Author Message
yadav2005
Intermediate


Joined: 10 Jan 2005
Posts: 348
Topics: 144

PostPosted: Tue Feb 06, 2007 11:25 am    Post subject: Removing characters in an Report Reply with quote

I am seeing a ICETOOL job which is generating a report and in the report i get in view mode all 1 's in column 1 and the dataset is a FBA with lrecl 121 .But if i see in Browse mode i do not get to see 1 in column 1 position why is that ? Moreover when i see in browse mode the cols are from 1 - 120 only where as in view mode it is 1 - 121 why is that ?

Please help in understanding ?

How can we elimate the 1'S in column 1 and i guess that we cannot use REMOVECC with ICETOOL? Can anybody show a sample example how to do it which has 1 is postion 1 and later we remove all 1's ?
Back to top
View user's profile Send private message
programmer1
Beginner


Joined: 18 Feb 2004
Posts: 138
Topics: 14

PostPosted: Tue Feb 06, 2007 11:40 am    Post subject: Reply with quote

FBA record format is normally used for the reports going to a printer.

The first character that you see ("1") is the print character. It has nothing to do with your actual data.
_________________
Regards,
Programmer
Back to top
View user's profile Send private message
Bill Dennis
Advanced


Joined: 03 Dec 2002
Posts: 579
Topics: 1
Location: Iowa, USA

PostPosted: Tue Feb 06, 2007 12:42 pm    Post subject: Reply with quote

yadav2005 wrote:
But if i see in Browse mode i do not get to see 1 in column 1 position why is that ? Moreover when i see in browse mode the cols are from 1 - 120 only where as in view mode it is 1 - 121 why is that ?


When in BROWSE, use the DISPLAY CC or DISPLAY NOCC to determine whether the prt control chars are shown.
_________________
Regards,
Bill Dennis

Disclaimer: My comments on this foorum are my own and do not represent the opinions or suggestions of any other person or business entity.
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


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

PostPosted: Tue Feb 06, 2007 1:33 pm    Post subject: Reply with quote

Quote:

How can we elimate the 1'S in column 1 and i guess that we cannot use REMOVECC with ICETOOL? Can anybody show a sample example how to do it which has 1 is postion 1 and later we remove all 1's ?


Who says? REMOVECC can be used with ICETOOL

Hope this helps...

Cheers

Kolusu
_________________
Kolusu
www.linkedin.com/in/kolusu


Last edited by kolusu on Tue Feb 06, 2007 2:18 pm; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Frank Yaeger
Sort Forum Moderator
Sort Forum Moderator


Joined: 02 Dec 2002
Posts: 1618
Topics: 31
Location: San Jose

PostPosted: Tue Feb 06, 2007 1:43 pm    Post subject: Reply with quote

A DFSORT/ICETOOL job can create reports in several ways - with the DISPLAY operator, with the OCCUR operator, or with a SORT or COPY operator that uses OUTFIL to create the report. REMOVECC can be used with OUTFIL, but not with DISPLAY or OCCUR.

If you want to remove the ANSI carriage control characters from a report produced by DISPLAY or OCCUR, you need to use a second COPY operator like this:

Code:

//S1     EXEC PGM=ICETOOL
//TOOLMSG  DD SYSOUT=*
//DFSMSG   DD SYSOUT=*
//IN       DD DSN=... input file
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//OUT DD RECFM=FB,DSN=...  output file
//TOOLIN   DD *
DISPLAY FROM(IN) LIST(T1) ON(1,3,CH) ON(10,20,CH)
COPY FROM(T1) TO(OUT) USING(CTL1)
/*
//CTL1CNTL DD *
  INREC BUILD=(2,120)
/*

_________________
Frank Yaeger - DFSORT Development Team (IBM)
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
Back to top
View user's profile Send private message Send e-mail Visit poster's website
yadav2005
Intermediate


Joined: 10 Jan 2005
Posts: 348
Topics: 144

PostPosted: Tue Feb 06, 2007 2:02 pm    Post subject: Reply with quote

I have an existing report FBA dataset which is making of print characters.The dataset is generated because of ICETOOL using operators.
OUTPUT:
Code:

1SOME HEADING
TEXT MESSAGE
1SOME HEADING
SOME DATA
1SOME HEADING
.
.
.
SOME NUMERIC DATA

Now, I want add a line FINISH at the end of numeric data as well as remove the print characters at the begining in the column 1 , the lines starting with column 1 will start from new page as routed to the output.Finally i want the OUTPUT as:
OUTPUT
Code:

SOME HEADING
TEXT MESSAGE
SOME HEADING
SOME DATA
SOME HEADING
.
.
.
SOME NUMERIC DATA
FINISH

so that i want the report coming in 1 page only instead of starting from new page wherever we have column 1 in the begining position.I hope i am clear in my requirement.
Back to top
View user's profile Send private message
Frank Yaeger
Sort Forum Moderator
Sort Forum Moderator


Joined: 02 Dec 2002
Posts: 1618
Topics: 31
Location: San Jose

PostPosted: Tue Feb 06, 2007 2:19 pm    Post subject: Reply with quote

Here's a slightly modified version of the previous DFSORT/ICTOOL job I showed you that will do what you are now asking for. I'm assuming you're using DISPLAY to produce the report.

Code:

//S1     EXEC PGM=ICETOOL
//TOOLMSG  DD SYSOUT=*
//DFSMSG   DD SYSOUT=*
//IN       DD DSN=... input file
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//OUT DD RECFM=FB,DSN=...  output file
//TOOLIN   DD *
DISPLAY FROM(IN) LIST(T1) ...
COPY FROM(T1) USING(CTL1)
/*
//CTL1CNTL DD *
  INREC BUILD=(2,120)
  OUTFIL FNAMES=OUT,REMOVECC,
    TRAILER1=('FINISH')
/*

_________________
Frank Yaeger - DFSORT Development Team (IBM)
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
Back to top
View user's profile Send private message Send e-mail Visit poster's website
yadav2005
Intermediate


Joined: 10 Jan 2005
Posts: 348
Topics: 144

PostPosted: Tue Feb 06, 2007 2:28 pm    Post subject: Reply with quote

Frank,

Thanks a lot for the quick responses.

I am not using DISPLAY to produce report rathar i am using OCCURS with LIST.Please let me know what changes should be done accordingly after u had pasted the code if we are using OCCURS.

Thanks.
Back to top
View user's profile Send private message
yadav2005
Intermediate


Joined: 10 Jan 2005
Posts: 348
Topics: 144

PostPosted: Tue Feb 06, 2007 2:55 pm    Post subject: Reply with quote

Frank,

I am getting an Abend ICE226A when i run u code and i have the description as below.I am routing the output to 120 FB as output and i am using ZOS wherein i am not calculating BLKSIZE at all.
Code:

   ICE226A   BLKSIZE = n IS INVALID (LRECL = m)



Explanation: Critical. The specified or computed block size (n), for the OUTFIL data set associated with ddname, is invalid for one of the following reasons (m is the associated LRECL):

n is less than the minimum allowed: 1 (not a report) or 2 (report) for a fixed-length record data set or 9 (not a report) or 10 (report) for a variable-length record data set
n is less than m for a fixed-length record data set
n is not a multiple of m for a fixed-length record data set
n is not equal to m for an unblocked fixed-length record data set
n is less than m + 4 for a variable-length record data set
n is greater than the track capacity of the device on which the data set resides

System Action: The program terminates.
Programmer Response: Change the block size to a valid value.

To solve this i hardcoded BLKSIZE value and the job ran fine but
when i am trying to open the dataset in view mode, i am getting
Code:

I/O error reading data

when i am trying to open the dataset in browse mode, i am getting
Code:

I/O error

How to solve this problem ?
Back to top
View user's profile Send private message
Frank Yaeger
Sort Forum Moderator
Sort Forum Moderator


Joined: 02 Dec 2002
Posts: 1618
Topics: 31
Location: San Jose

PostPosted: Tue Feb 06, 2007 3:18 pm    Post subject: Reply with quote

Quote:
I am not using DISPLAY to produce report rathar i am using OCCURS with LIST.Please let me know what changes should be done accordingly after u had pasted the code if we are using OCCURS.


Just use your OCCURS operator instead of DISPLAY. My job will work equally well for either. DISPLAY was just an example.

Quote:
I am getting an Abend ICE226A when i run u code


When I run the job with RECFM=FB and no LRECL or BLKSIZE for the OUT data set, the job completes successfully with LRECL=120 and BLKSIZE=27960.

The ICE126A message shows the BLKSIZE (n) and LRECL (m) used. What are n and m?

By default, DFSORT would set the LRECL to 120 and the BLKSIZE to the system determined BLKSIZE and you would NOT get that message. With RECFM=FB, you (or your site's ACS routines) must be setting the LRECL or BLKSIZE in some way to get that message instead of letting DFSORT do it. What do you have for your OUT DD statement exactly?

Please post all of the DFSMSG messages you received.
_________________
Frank Yaeger - DFSORT Development Team (IBM)
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
Back to top
View user's profile Send private message Send e-mail Visit poster's website
yadav2005
Intermediate


Joined: 10 Jan 2005
Posts: 348
Topics: 144

PostPosted: Tue Feb 06, 2007 3:44 pm    Post subject: Reply with quote

Frank,

Please see the messages below:
Code:

ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AN
ICE000I 0 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 01:42 ON WED FEB
            INREC BUILD=(2,120)                                                 
            OUTFIL FNAMES=OUT,REMOVECC,                             
                   TRAILER1=(C'FINISH')             
ICE146I 0 END OF STATEMENTS FROM CTL1CNTL - PARAMETER LIST STATEMENTS FOLLOW   
          DEBUG NOABEND,ESTAE                                                   
          OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTDD=CTL1,SORTIN=IN,
                         YNALLOC                                               
          SORT FIELDS=COPY                                                     
ICE201I 0 RECORD TYPE IS F - DATA STARTS IN POSITION 1                         
ICE222A 0 120 BYTE FIXED RECORD LENGTH IS NOT EQUAL TO 121 BYTE LRECL FOR OUT
ICE751I 0 C5-K05352 C6-Q95214 C7-K90000 C8-K05352 E9-Q95214 E7-K90000           
ICE052I 3 END OF DFSORT                                                         


JCL
//OUT      DD DSN=PROJECT.TEST.DATA,                           
//            DISP=(NEW,CATLG,CATLG),UNIT=SYSDA,                       
//            SPACE=(TRK,(1,1),RLSE),                                   
//            DCB=(RECFM=FB)     
Back to top
View user's profile Send private message
Frank Yaeger
Sort Forum Moderator
Sort Forum Moderator


Joined: 02 Dec 2002
Posts: 1618
Topics: 31
Location: San Jose

PostPosted: Tue Feb 06, 2007 5:38 pm    Post subject: Reply with quote

I see an ICE222A message. I don't see the ICE226A message you said you got previously. It's difficult to hit a moving target.

The ICE222A message tells me that you have LRECL=121 for your OUT data set. The OUT data set should be RECFM=FB and LRECL=120 (no ANSI carriage control character) so the LRECL has to be 120, not 121. If you don't specify the LRECL for a NEW OUT data set, DFSORT sets it automatically to the correct value. If you specify it yourself or the system sets it somehow (ACS routine?), then you have to ensure the LRECL value is correct . You could specify LRECL=120 for the OUT data set to make sure it has the correct value.

Are you sure that's what your OUT DD looks like for this job? It appears to be a NEW data set with just RECFM=FB specified, so it's unclear why it would have an LRECL of 121, but it obviously does or you wouldn't be getting the ICE222A message. Are you sure your output data set wasn't previously defined?

I can't make any sense out of what you're showing me, especially since you keep changing what you say.

You could try specifying LRECL=120 for the OUT data set to see if that works - hopefully it will override the existing LRECL=121 for the OUT data set if that's the problem.

You could try using a temporary data set for //OUT DD to see if that works - something like:

Code:

//OUT DD RECFM=FB,DSN=&&O1,UNIT=SYSDA,
//  SPACE=(TRK,(1,1)),DISP=(,PASS) 


If you don't get any error messages that way, then there's definitely something wrong with your permanent output data set. If you do get error messages, then the LRECL is being set outside of DFSORT in some way.
_________________
Frank Yaeger - DFSORT Development Team (IBM)
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
Back to top
View user's profile Send private message Send e-mail Visit poster's website
yadav2005
Intermediate


Joined: 10 Jan 2005
Posts: 348
Topics: 144

PostPosted: Tue Feb 06, 2007 8:35 pm    Post subject: Reply with quote

Frank,

I am sorry for pasting the code wrongly.Actually i was omitting some steps above the ICETOOL step and due to lot of code changes i really messed up the code.The OUT DD Dataset is already being defined in earlier steps and the code is MOD not new:
Code:

//OUT      DD DSN=PROJECT.TEST.DATA,                           
//            DISP=(MOD,CATLG,CATLG),UNIT=SYSDA,                       
//            SPACE=(TRK,(1,1),RLSE),                                   
//            DCB=(RECFM=FB)     

Moreover initially i was getting the abend ICE222A with the reason:
Code:

   ICE226A   BLKSIZE = n IS INVALID (LRECL = m)  because of the code:
//OUT      DD DSN=PROJECT.TEST.DATA,                           
//            DISP=(MOD,CATLG,CATLG),UNIT=SYSDA,                       
//            SPACE=(TRK,(1,1),RLSE),                                   
//            DCB=(RECFM=FB,LRECL=120)                       

Later i was getting the abend ICE22A with the reason:
Code:

ICE222A 0 120 BYTE FIXED RECORD LENGTH IS NOT EQUAL TO 121 BYTE LRECL FOR OUT becuase of the code actually i removed LRECL parameter.

//OUT      DD DSN=PROJECT.TEST.DATA,                           
//            DISP=(MOD,CATLG,CATLG),UNIT=SYSDA,                       
//            SPACE=(TRK,(1,1),RLSE),                                   
//            DCB=(RECFM=FB)
Back to top
View user's profile Send private message
Frank Yaeger
Sort Forum Moderator
Sort Forum Moderator


Joined: 02 Dec 2002
Posts: 1618
Topics: 31
Location: San Jose

PostPosted: Wed Feb 07, 2007 11:35 am    Post subject: Reply with quote

Ok, so the OUT data set was previously defined with LRECL=121 which explains both the ICE226A and the ICE222A. I assume when you used an OUT data set without attributes, DFSORT set them correctly and the job was successful.
_________________
Frank Yaeger - DFSORT Development Team (IBM)
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
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 -> Utilities All times are GMT - 5 Hours
Page 1 of 1

 
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