Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

Remove blank record in a file using sort Utility

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DFSORT/ICETOOL
View previous topic :: :: View next topic  
Author Message
Madhu Reddy
Currently Banned

New User


Joined: 28 Sep 2006
Posts: 56

PostPosted: Tue Aug 21, 2007 3:43 pm    Post subject: Remove blank record in a file using sort Utility
Reply with quote

Hi,

Could anyone suggest how to remove blank records in a file using sort
utility or anyother way.

Thanks'
Madhu
Back to top
View user's profile Send private message

murmohk1

Senior Member


Joined: 29 Jun 2006
Posts: 1439
Location: Bangalore,India

PostPosted: Tue Aug 21, 2007 3:46 pm    Post subject:
Reply with quote

Madhu,

Quote:
Could anyone suggest how to remove blank records in a file using sort
utility or anyother way.


Use INCLUDE/OMIT option in SORT utility.
Back to top
View user's profile Send private message
Madhu Reddy
Currently Banned

New User


Joined: 28 Sep 2006
Posts: 56

PostPosted: Tue Aug 21, 2007 3:52 pm    Post subject: My Requirement
Reply with quote

I have one file , there are records some records are blank, i want to eliminate , Could you suggest me the solution with Syntax.

Thanks
Back to top
View user's profile Send private message
krisprems

Active Member


Joined: 27 Nov 2006
Posts: 649
Location: India

PostPosted: Tue Aug 21, 2007 3:53 pm    Post subject:
Reply with quote

Madhu Reddy
If your file is 80 byte long, then this is the solution, if not, change the 80 in include statement to the LRECL of the file.
Code:
//*******************************************************
//STEP1    EXEC PGM=SORT                                 
//SYSOUT   DD SYSOUT= *                                 
//SORTIN   DD DSN=I/P FILE NAME                         
//SORTOUT  DD DSN=O/P FILE NAME                         
//SYSIN    DD *                                         
           SORT FIELDS=COPY                             
           OMIT COND=(1,80,CH,EQ,C' ')                   
/*                                                       


If still unresolved,then provide i/p and o/p file format and lrecl?
Back to top
View user's profile Send private message
Madhu Reddy
Currently Banned

New User


Joined: 28 Sep 2006
Posts: 56

PostPosted: Tue Aug 21, 2007 4:07 pm    Post subject: Hi , Sorry to interupt
Reply with quote

I have one file , i am copying particular column to another file, in some column there may be blanks, now i want to elimate the blank rows in the
copied file, i tried with Omit , It is not working.

Can you suggest me.

Thanks
Back to top
View user's profile Send private message
krisprems

Active Member


Joined: 27 Nov 2006
Posts: 649
Location: India

PostPosted: Tue Aug 21, 2007 4:36 pm    Post subject:
Reply with quote

Madhu Reddy
Read my quote
Quote:
If still unresolved,then provide i/p and o/p file format and lrecl?



Quote:
i tried with Omit , It is not working.

Show the SORT JCL that you gave a try!

Quote:
in some column there may be blanks, now i want to elimate the blank rows in the
copied file,

Give the layout of the columns that you are copying, and which all columns that you are verifying for blank's?
Back to top
View user's profile Send private message
ParagChouguley

Active User


Joined: 03 Feb 2007
Posts: 175
Location: PUNE(INDIA)

PostPosted: Tue Aug 21, 2007 4:42 pm    Post subject:
Reply with quote

Hi Madhu,
Quote:
now i want to elimate the blank rows in the


What do you exactly mean by blank rows here ?
A row with "your column" blank OR
A row with all the bytes blank ??

If it is first case, krisprems has already given solution. Use your file LRECL in OMIT condition insted of 80.

If it is second case, then use
Code:

OMIT COND=(column_starting_position,length_of_column,CH,EQ,C' ')                   
/*                                           


--Parag
Back to top
View user's profile Send private message
Madhu Reddy
Currently Banned

New User


Joined: 28 Sep 2006
Posts: 56

PostPosted: Tue Aug 21, 2007 4:52 pm    Post subject: I will provide you the details
Reply with quote

The below is the JCL which i am using


000300 //SORT1 EXEC PGM=ICEMAN
000400 //SYSOUT DD SYSOUT=*
000410 //DFSMSG DD SYSOUT=*
000510 //STATOUT DD SYSOUT=*
000600 //SORTIN DD DSN=NBK5ZIO.AM32R2(Input file ).SOUTP,DISP=SHR
000610 //SORTOUT DD DSN=NBKEZ7A.NONDUP.DATA33X,
000620 // UNIT=SYSALLDA,SPACE=(CYL,(3,10)),
000630 // DISP=(NEW,CATLG,DELETE),
000640 // DCB=(LRECL=10,BLKSIZE=27900,RECFM=FB)
000800 //SYSIN DD *
000900 SORT FIELDS=(321,8,CH,A),EQUALS
000910 SUM FIELDS=NONE
001000 OUTREC FIELDS=(1:321,8)
001010 OMIT COND=(1,10,CH,EQ,C' ')
001100 //

In the above JCL i am sorting and copying a particular Column to another file , there in the copied file i am getting some blank lines , i dont want that blank lines also , this was my requirement

InPut dataset details

General Data Current Allocation
Management class . . : DEV Allocated cylinders : 3
Storage class . . . : DEV1000 Allocated extents . : 1
Volume serial . . . : 9SDS3D
Device type . . . . : 3390
Data class . . . . . : ADDDSORG Current Utilization
Organization . . . : PS Used cylinders . . : 3
Record format . . . : FB Used extents . . . : 1
Record length . . . : 450
Block size . . . . : 27900
1st extent cylinders: 3
Secondary cylinders : 10
Data set name type : SMS Compressible : NO
Back to top
View user's profile Send private message
shankar.v

Active User


Joined: 25 Jun 2007
Posts: 196
Location: Bangalore

PostPosted: Tue Aug 21, 2007 5:23 pm    Post subject:
Reply with quote

I think you want only the contents from position 321 and length 8 in output by sorting in ascending order with no duplicates. The following sort card will help you for this.
Code:
//SYSIN DD *
 OMIT COND=(321,8,CH,NE,C' ')
 INREC FIELDS=(321,8)
 SORT FIELDS=(321,8,CH,A)
 SUM FIELDS=NONE
Back to top
View user's profile Send private message
shankar.v

Active User


Joined: 25 Jun 2007
Posts: 196
Location: Bangalore

PostPosted: Tue Aug 21, 2007 5:25 pm    Post subject:
Reply with quote

SORT FIELDS=(321,8,CH,A) is wrong in the previous one.
Sorry use the below one

Code:
//SYSIN DD *
 OMIT COND=(321,8,CH,NE,C' ')
 INREC FIELDS=(321,8)
 SORT FIELDS=(1,8,CH,A)
 SUM FIELDS=NONE
Back to top
View user's profile Send private message
shankar.v

Active User


Joined: 25 Jun 2007
Posts: 196
Location: Bangalore

PostPosted: Tue Aug 21, 2007 5:29 pm    Post subject:
Reply with quote

again sorry
OMIT COND=(321,8,CH,NE,C' ') is also wrong in the previous posts.
try the below one
Code:
//SYSIN DD *
 OMIT COND=(321,8,CH,EQ,C' ')
 INREC FIELDS=(321,8)
 SORT FIELDS=(1,8,CH,A)
 SUM FIELDS=NONE
Back to top
View user's profile Send private message
Madhu Reddy
Currently Banned

New User


Joined: 28 Sep 2006
Posts: 56

PostPosted: Tue Aug 21, 2007 7:51 pm    Post subject:
Reply with quote

Hi,

In my Output file previously when i run i use to get 2 blank lines, but
now even after running the program using the code which you have send
still i am getting one blank line.

Please suggest me the solutions.

Thanks
Back to top
View user's profile Send private message
krisprems

Active Member


Joined: 27 Nov 2006
Posts: 649
Location: India

PostPosted: Tue Aug 21, 2007 8:23 pm    Post subject:
Reply with quote

Madhu Reddy
Do you want to check for blank fields from 321 to 8 bytes or from 1 to 10 bytes of the i/p file?
shankar.v's JCL is checking for blanks from 321 to 328,
and the JCL that you have shown its checking blanks from 1 to 10

If needed you can check for blank's in both the positions that is 321,8 and 1,10, as shown below
Code:
//SYSIN DD *
 SORT FIELDS=(321,8,CH,A),EQUALS
 SUM FIELDS=NONE
 OUTREC FIELDS=(1:321,8)
 OMIT COND=(1,10,CH,EQ,C' ',|,321,8,CH,EQ,C' ')
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Moderator


Joined: 15 Feb 2005
Posts: 7130
Location: San Jose, CA

PostPosted: Tue Aug 21, 2007 9:53 pm    Post subject:
Reply with quote

Quote:
In my Output file previously when i run i use to get 2 blank lines, but
now even after running the program using the code which you have send
still i am getting one blank line.

Please suggest me the solutions.


It's very difficult to give you a solution because you haven't really described what you're trying to do, what your input records look like, etc.
But as a guess, try these DFSORT control statements to eliminate your blank lines:

Code:

  SORT FIELDS=(321,8,CH,A),EQUALS
  SUM FIELDS=NONE
  OUTREC FIELDS=(1:321,8)
  OUTFIL OMIT=(1,8,CH,EQ,C' ')


The OUTFIL OMIT will remove any output lines with blanks in positions 1-8 that remain after SORT and SUM.

It would be more efficient to remove the blank lines before sorting and I would think that the following control statements suggested by Krisprems would do that:

Code:

  OMIT COND=(321,8,CH,EQ,C' ')
  INREC FIELDS=(321,8)
  SORT FIELDS=(1,8,CH,A)
  SUM FIELDS=NONE


But you say you still have one blank line with those control statements - I don't see how unless you mean something by "blank line" that makes no sense.

It would really help if you would answer the questions people ask, show your input and output, etc. In other words, give the information people need to provide a solution rather than making them guess at what you want.
Back to top
View user's profile Send private message
Madhu Reddy
Currently Banned

New User


Joined: 28 Sep 2006
Posts: 56

PostPosted: Wed Aug 22, 2007 2:18 pm    Post subject: Still i am getting blank lines- I will explain you clearly
Reply with quote

I have one file with many rows and columns, i want to copy one particular

column to another file, sort and eliminate duplicates, Up to this my program is working fine, but in the output file, the first row is blank
i should not get this.
the output looks like this

***********
.......
PACEADM
PACEINQ
PACEINV
PACETAX
PCCTRAP
UNTAADM

There should be no Blank line or low values.

Thanks
Back to top
View user's profile Send private message
krisprems

Active Member


Joined: 27 Nov 2006
Posts: 649
Location: India

PostPosted: Wed Aug 22, 2007 3:08 pm    Post subject:
Reply with quote

Madhu Reddy
Note that LOW-VALUE and BLANKS(space's) are different.
You can use this OMIT statement to exclude the records with LOW-VALUEs
Code:

  OMIT COND=(column_starting_position,length_of_the_column,BI,EQ,X'00')
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Moderator


Joined: 15 Feb 2005
Posts: 7130
Location: San Jose, CA

PostPosted: Wed Aug 22, 2007 8:24 pm    Post subject:
Reply with quote

Madhu,

Quote:
There should be no Blank line or low values.


Why did it take you 6 posts before you mentioned low values? Please try to give complete information in your FIRST post in the future.

If you want to remove records with all blanks or low values in a particular field, you can use a DFSORT statement like this:

Code:

    OMIT COND=(p,m,CH,EQ,C' ',OR,p,m,BI,EQ,X'00')


where p,m is the starting position and length of the field you want to check.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DFSORT/ICETOOL All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts Add PD field from 2nd file to PD in 1st Sushant Garje DFSORT/ICETOOL 6 Thu Dec 01, 2016 4:32 pm
No new posts File Aid to File Manager conversion murali3955 IBM Tools 4 Thu Nov 24, 2016 3:41 pm
No new posts Limit duplicate records in the SORT pshongal SYNCSORT 6 Mon Nov 21, 2016 12:54 pm
No new posts How to convert the VBM file to VB or... Sulabh Agrawal JCL & VSAM 4 Fri Nov 18, 2016 1:04 pm
No new posts CICS Roll back partially - Need to re... dwijadas CICS 4 Wed Nov 16, 2016 4:30 pm


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us