IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

IEC020I EROPT IS 'ABE' OR NOT SPECIFIED Error


IBM Mainframe Forums -> DFSORT/ICETOOL
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Thu Nov 04, 2010 8:23 pm
Reply with quote

Hi,
While running the following JCL :

Code:

//SORT0001 EXEC PGM=ICETOOL                                 
//TOOLMSG  DD   SYSOUT=*                                           
//DFSMSG   DD   SYSOUT=*                                           
//IN       DD   DSN=ABCD.MERGED.XXXXXX.XXX,               
//         DISP=SHR,RECFM=VB                             
//OUT      DD   DSN=ABCD.MERGED.XXXXXX.XXX.SORTED,     
//         DISP=(,CATLG,DELETE),                     
//         SPACE=(CYL,(1,100))
//TOOLIN   DD   *                                           
DATASORT FROM(IN) TO(OUT) HEADER TRAILER USING(CTL1)       
/*                                                           
//CTL1CNTL DD   *                                           
  SORT FIELDS=(1,2,ZD,A,178,11,ZD,A)                         
/*   


My job is abending with the following error messages:

IEF236I ALLOC. FOR XXXJCL1 SORT0001
IEF237I JES2 ALLOCATED TO TOOLMSG
IEF237I JES2 ALLOCATED TO DFSMSG
IGD103I SMS ALLOCATED TO DDNAME IN
IGD101I SMS ALLOCATED TO DDNAME (OUT )
DSN (ABCD.MERGED.XXXXXX.XXX.SORTED )
STORCLAS (STANDARD) MGMTCLAS (NOMNGMT) DATACLAS ( )
VOL SER NOS= SBD161
IEF237I JES2 ALLOCATED TO TOOLIN
IEF237I JES2 ALLOCATED TO CTL1CNTL
IEC020I 001-4,XXXJCL1,SORT0001,TOOLMSG ,JES
IEC020I EROPT IS 'ABE' OR NOT SPECIFIED
IEA995I SYMPTOM DUMP OUTPUT
SYSTEM COMPLETION CODE=001
TIME=16.38.32 SEQ=30754 CPU=0000 ASID=014C
PSW AT TIME OF ERROR 078D1000 00DE0A1C ILC 2 INTC 0D
NO ACTIVE MODULE FOUND
NAME=UNKNOWN
DATA AT PSW 00DE0A16 - 00181610 0A0D1851 A7C80048
AR/GR 0: A2F49C22/80000000 1: 00000000/80001000
2: 00000000/00006168 3: 00000000/00006168
4: 00000000/000060A0 5: 00000000/009BD000
6: 00000000/009FF048 7: 00000000/00DE0638
8: 00000000/00007288 9: 00000000/0AB770A2
A: 00000000/009BCFE8 B: 00000000/40DE065E
C: 00000000/009E4030 D: 00000000/00006228
E: 00000000/00000000 F: 00000000/00000000
END OF SYMPTOM DUMP
IEF472I XXX1JCL1 SORT0001 - COMPLETION CODE - SYSTEM=001 USER=0000 REASON=000000

Please assist me for getting it resolved...

Thanks,
Abhijit.
Back to top
View user's profile Send private message
expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8797
Location: Welsh Wales

PostPosted: Thu Nov 04, 2010 8:41 pm
Reply with quote

Code:
//TOOLMSG DD *
//DFSMSG  DD *
Would perhaps be better specified as
Code:
//TOOLMSG DD SYSOUT=*
//DFSMSG  DD SYSOUT=*
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Thu Nov 04, 2010 8:51 pm
Reply with quote

Thanks Expat for your support it really worked. As in hurry I putted that "*"..But it again abended with the error ICE218A 1 149 BYTE VARIABLE RECORD IS SHORTER THAN 188 BYTE MINIMUM FOR. But I used OPTION VLSHRT and the job ran successfully.

Thanks again.
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


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

PostPosted: Thu Nov 04, 2010 11:46 pm
Reply with quote

The second error has nothing to do with the first error. The first error was a JCL error. The second error was a "short" record error. You have to get everything right for a job to execute successfully. But good for you for figuring out how to fix your second error.
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Fri Nov 05, 2010 12:55 pm
Reply with quote

Hi,

In the above jcl if I dont want the header and trailer records in the output file then which option I will choose. As I tried with
DATASORT FROM(IN) TO(OUT) USING(CTL1) but it shows syntax error.

Thanks,
Abhijit.
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


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

PostPosted: Fri Nov 05, 2010 11:43 pm
Reply with quote

If you don't want the header and trailer, then you shouldn't use DATASORT since its purpose is to keep the header and trailer in place.

If you just want to remove the header and trailer and SORT the rest of the records you can use the SUBSET operator of DFSORT's ICETOOL.

Code:

...
//TOOLIN   DD   *                                           
SUBSET FROM(IN) TO(OUT) REMOVE INPUT HEADER TRAILER USING(CTL1)       
/*                                                           
//CTL1CNTL DD   *                                           
  SORT FIELDS=(1,2,ZD,A,178,11,ZD,A)                         
/*   
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Mon Nov 08, 2010 3:29 pm
Reply with quote

thanks Frank..As given by you the jcl worked fine...Another question
there are lot of null values from the position 174 to 184..If I want to omit the null values then wat condition I need to put..
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Mon Nov 08, 2010 6:46 pm
Reply with quote

Besides the previous question I tried the following parm to ICETOOL:

Code:
001300 //TOOLIN   DD   *                                                   
001400   SUBSET FROM(IN) TO(OUT) REMOVE INPUT HEADER TRAILER USING(CTL1)   
001500 /*                                                                 
001600 //CTL1CNTL DD   *                                                   
001700   SORT FIELDS=(178,11,CH,A)                                         
001710   OMIT COND(178,11,CH,EQ,C' ')                                     
001800   OPTION VLSHRT                                                     
001900 /*             


But getting following error evenif I am using the OPTION VLSHRT.

Code:
********************************* TOP OF DATA ***************
ICE200I 0 IDENTIFIER FROM CALLING PROGRAM IS 0001           
ICE805I 0 JOBNAME: XXXXXXXX1 , STEPNAME: SORT0001             
ICE802I 0 BLOCKSET     TECHNIQUE IN CONTROL                 
ICE201I G RECORD TYPE IS V - DATA STARTS IN POSITION 5       
ICE751I 0 C5-K51707 C6-K51707 C7-K54603 C8-K51707 E7-K51707 
ICE052I 3 END OF DFSORT                                     
******************************** BOTTOM OF DATA *************

My file is a Vb file which you can check from previous posts.
Also the column which needs to be sorted starts at position 174 but as it is VB file so, I had puted 178.

Please suggest.
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Mon Nov 08, 2010 8:55 pm
Reply with quote

Hello,

Which line is the error?
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


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

PostPosted: Tue Nov 09, 2010 12:37 am
Reply with quote

abhijit.nayak01,

It's not clear what you mean by "there are lot of null values from the position 174 to 184". Do you mean that your variable-length records are "short" or do you mean something else - what?

You haven't actually shown any DFSORT error messages. But I suspect you got the following ICETOOL error message in //TOOLMSG:

ICE653A 0 SKIPREC, STOPAFT OR COND (SUBSET) OR STOPAFT (DATASORT) NOT ALLOWED

You cannot use OMIT COND=(...) with SUBSET.

Let's start over.

Show an example of the records in your input file (relevant fields only) and what you expect for output. Explain the "rules" for getting from input to output. Give the starting position, length and format of each relevant field. Give the RECFM and LRECL of the input file. Indicate how the header and trailer records can be identified. Indicate which records you are trying to omit.
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Tue Nov 09, 2010 11:49 am
Reply with quote

Yes Frank the error is:
Code:
ICE653A 0 SKIPREC, STOPAFT OR COND (SUBSET) OR STOPAFT (DATASORT) NOT ALLOWED

My header record is
00 followed by the timestamp followed by zeroes upto 200 position.

My trailer record is
99 followed by the timestamp followed by zeroes upto 200 position.

My records from 174 to 184 position is as follows:
Code:
10000400091
10000200001
10000100000
10000111111
300000CTASP
10000200091
           
10000001921
10000018901
10000000192
           
10000201967
10000002910
10000930222
00000000001
         
         
         
         
         
         
10000983827
10000401927
00630938273

Ideally the blanks in between are not spaces these are blanks i.e. the user had not entered anything to this field. Because when I see through copybook by using fileaid it shows "INVALID" for these blank records at position 174 but when I view the files by simple browsing it shows blank. I want to remove these records.

To remove header and trailer records I had used the condition i.e.

Code:
OMIT COND(05,02,ZD,EQ,00,05,02,ZD,EQ,99)

because the other records value at position 01 ( which will be 05 in case of VB files) is in between 01-98. But I want to remove the hader and trailer records without using the above OMIT condition.

Following are the details of both the i/p and o/p file:
Code:
Organization  . . . : PS   
Record format . . . : VB   
Record length . . . : 2052
Block size  . . . . : 27998
1st extent cylinders: 1 
Secondary cylinders : 100

Another thing, can you please tell me the differences between the toolmsg and dfsmsg.

Thanks,
Abhijit.
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Wed Nov 10, 2010 11:38 am
Reply with quote

Frank, where are you.. I am eagerly waiting assistance from your side.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Wed Nov 10, 2010 11:44 am
Reply with quote

Quote:
Frank, where are you.. I am eagerly waiting assistance from your side.


do You realize that Frank is working in a different time zone ( California ) ???
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Wed Nov 10, 2010 12:06 pm
Reply with quote

Sorry Enrico I am not aware for time zone.
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


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

PostPosted: Wed Nov 10, 2010 8:54 pm
Reply with quote

I've been on vacation. Back tomorrow (Thurs).
Back to top
View user's profile Send private message
Skolusu

Senior Member


Joined: 07 Dec 2007
Posts: 2205
Location: San Jose

PostPosted: Wed Nov 10, 2010 11:18 pm
Reply with quote

abhijit.nayak01,

I am not sure as to why you insist using subset operator when it is a simple sort operation of eliminating and sorting records. SUBSET operator comes in handy to sort records without disturbing header and trailer records. In your case you want to completely eliminate them. Look below for the DFSORT JCL which will give you the desired results.

Code:

//STEP0100 EXEC PGM=SORT                 
//SYSOUT   DD SYSOUT=*                   
//SORTIN   DD DSN=your input vb file,DISP=SHR
//SORTOUT  DD SYSOUT=*                   
//SYSIN    DD *                         
  OPTION VLSHRT                         
  OMIT COND=(174,11,CH,EQ,C' ')         
  SORT FIELDS=(174,11,CH,A),EQUALS             
  OUTFIL OMIT=(5,2,SS,EQ,C'00,99')       
//*


abhijit.nayak01 wrote:
Another thing, can you please tell me the differences between the toolmsg and dfsmsg.


TOOLMSG DD - Defines the ICETOOL message data set for all operations.

DFSMSG DD - Defines the DFSORT message data set for all operations.

If you're not familiar with DFSORT and DFSORT's ICETOOL, I'd suggest reading through "z/OS DFSORT: Getting Started". It's an excellent tutorial, with lots of examples, that will show you how to use DFSORT, DFSORT's ICETOOL and DFSORT Symbols. You can access it online, along with all of the other DFSORT books, from:

Use [URL] BBCode for External Links
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Thu Nov 11, 2010 2:37 pm
Reply with quote

Hi Kolusu,
Thanks for your response. The code works but still the issue of null records not getting resolved. As I said earlier the null records are not spaces. When I tried with browsing the values with HEX ON but it has blank at those places instead of X040. And the o/p of the above code comes in the following way:

Code:









00000000001
10000000192
10000001921
10000002910
10000018901
10000100000
10000111111
10000200001
10000200091
10000201967
10000400091
10000930222
300000CTASP   


Thanks,
Abhijit.
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Thu Nov 11, 2010 9:37 pm
Reply with quote

Hello,

Quote:
but it has blank at those places instead of X040

You need to do some reading / research. . . Your lack of understanding (or communication) is a big part of the problem. . .

A blank/space IS a x'40'. I have no idea what a X040 might be.

If you more clearly explain what you have/need, you will get more useful replies.
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


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

PostPosted: Fri Nov 12, 2010 2:21 am
Reply with quote

Abhijit,

We still don't know what your records actually look like. Let's try this.

Please run this DFSORT job and show the output for a few of the records that you think are "null" and "not null" so we can see what you really have:

Code:

//SHOW EXEC  PGM=SORT                                       
//SYSOUT    DD  SYSOUT=*                                     
//SORTIN  DD DSN=...  input file (VB)                       
//SORTOUT DD SYSOUT=*                                       
//SYSIN    DD    *                                           
  OPTION COPY                                                 
  INREC BUILD=(1,4,1,4,HEX,C'|',170,HEX)
/*
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Fri Nov 12, 2010 11:26 am
Reply with quote

Hi Frank,
Can you please explane the below lines:
INREC BUILD=(1,4,1,4,HEX,C'|',170,HEX)


Thanks,
Abhijit
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Fri Nov 12, 2010 8:18 pm
Reply with quote

And you did not post the requested info because. . . icon_confused.gif

icon_sad.gif
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


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

PostPosted: Fri Nov 12, 2010 11:40 pm
Reply with quote

BUILD=(1,4,1,4,HEX,C'|',170,HEX)

1,4 - RDW (required)

1,4,HEX - display RDW in hex (includes the length of the record)

170,HEX - display from position 170 to the end of the record in hex (only shows the bytes that are present)

This will show me what your records actually look like so I can understand what you mean by null and non-null.
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Mon Nov 15, 2010 1:04 pm
Reply with quote

Hi,
Sorry for the late reply as it was weekend. Here running the below JCL I am coming across with the following error:
Code:
//STEP0100 EXEC PGM=SORT                                     
//SYSOUT   DD SYSOUT=*                                       
//SORTIN   DD   DSN=ABHIJIT.MERGED.NOSORT,               
//             DISP=SHR,RECFM=VB                             
//SORTOUT  DD   DSN=ABHIJIT.MERGED.SORTED.DT111110,
//             DISP=(NEW,CATLG,DELETE),                     
//             DCB=(RECFM=VB,LRECL=2052),SPACE=(CYL,(1,100))
//SYSIN    DD *                         
  SORT FIELDS=COPY                     
  INREC BUILD=(1,4,1,4,HEX,C'|',170,HEX)
/*                                     


Error:

Code:
ICE802I 0 BLOCKSET     TECHNIQUE IN CONTROL                                     
ICE201I G RECORD TYPE IS V - DATA STARTS IN POSITION 5                         
ICE162I 0 ICEIEXIT CHANGED ONE OR MORE OPTIONS IN EFFECT                       
ICE126A 9 INCONSISTENT REFORMATTING FOR SORTOUT : REASON CODE 02, IFTHEN 0     
ICE751I 0 C5-K51707 C6-K51707 C7-K54603 C8-K51707 E9-K51707 E7-K51707           
ICE143I 0 BLOCKSET     COPY  TECHNIQUE SELECTED                                 
ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AN
ICE000I 1 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R10 - 08:45 ON MON NO
            SORT FIELDS=COPY                                                   
            OUTFIL VTOF,BUILD=(1,4,1,4,HEX,C'|',170,HEX)                       
ICE201I G RECORD TYPE IS V - DATA STARTS IN POSITION 5                         
ICE162I 0 ICEIEXIT CHANGED ONE OR MORE OPTIONS IN EFFECT                       
ICE126A 9 INCONSISTENT REFORMATTING FOR SORTOUT : REASON CODE 02, IFTHEN 0     
ICE751I 0 C5-K51707 C6-K51707 C7-K54603 C8-K51707 E9-K51707 E7-K51707           
ICE052I 3 END OF DFSORT                                                         
******************************** BOTTOM OF DATA ********************************


But If I run with the following code:

Code:
//SYSIN    DD *                         
  OPTION VLSHRT                         
  SORT FIELDS=COPY                     
  INREC BUILD=(1,4,1,4,HEX,C'|',170,HEX)
/*                               


Error:

Code:
ICE802I 0 BLOCKSET     TECHNIQUE IN CONTROL                                     
ICE201I G RECORD TYPE IS V - DATA STARTS IN POSITION 5                         
ICE150I 1 VLSHRT NOT USED FOR SORT, MERGE, INCLUDE, OMIT OR SUM STATEMENT FIELDS
ICE162I 0 ICEIEXIT CHANGED ONE OR MORE OPTIONS IN EFFECT                       
ICE858I 0 LA=1495560, DA=1024, AA=1494536, BA=2029, CP=0, TA=2077               
ICE859I 0 LB=9848, DB=1004, AB=8844, BB=0, CP=1, RS=0, TB=21                   
ICE860I 0 F=YN, P=2, M=N, B=2048                                               
ICE751I 0 C5-K51707 C6-K51707 C7-K54603 C8-K51707 E9-K51707 C9-BASE   E5-K55337
ICE143I 0 BLOCKSET     COPY  TECHNIQUE SELECTED                                 
ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AN
ICE000I 1 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R10 - 09:23 ON MON NO
            OPTION VLSHRT                                                       
            SORT FIELDS=COPY                                                   
            OUTFIL BUILD=(1,4,1,4,HEX,C'|',170,HEX)                             
ICE201I G RECORD TYPE IS V - DATA STARTS IN POSITION 5                         
ICE150I 1 VLSHRT NOT USED FOR SORT, MERGE, INCLUDE, OMIT OR SUM STATEMENT FIELDS
ICE162I 0 ICEIEXIT CHANGED ONE OR MORE OPTIONS IN EFFECT                       
ICE231I 0 STORAGE USED FOR OUTFIL : BELOW 16M = 21504, ABOVE 16M = 2126848     
ICE855I 0 SORTOUT  : TX=N, R=J, L=J, B= , BL=0, BR=0, DCT=37, VS=N, RU=X, SB=241
ICE210I 0 SORTOUT  : EXCP USED, LRECL = 2052, BLKSIZE = 27998, TYPE = VB   (SDB)
ICE218A 3 149 BYTE VARIABLE RECORD IS SHORTER THAN 169 BYTE MINIMUM FOR SORTOUT
ICE751I 1 EF-K49535 CB-K90014 F0-K49038 E8-K51707                               
ICE052I 0 END OF DFSORT
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 161
Location: South Africa

PostPosted: Mon Nov 15, 2010 3:44 pm
Reply with quote

Hi, Thanks for all your replies... Actually whatever output I was getting is correct. i.e
Code:









00000000001
10000000192
10000001921
10000002910
10000018901
10000100000
10000111111
10000200001
10000200091
10000201967
10000400091
10000930222
300000CTASP   


As I got from the manual of DFSORT:
as it is a VB dataset and we can not validly sort or merge on control fields with missing bytes because missing bytes have no value. VLSHRT is the option but it only helps putting binary zeroes (the zeroes are not kept for the output record) in place of missing control bytes thus allowing DFSORT to validly sort or merge on the short control fields.

Thanks Frank and other senior members for all your support. Kindly help me to get the answer of my previous post which will be very helpful to me.

Thanks,
Abhijit.
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


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

PostPosted: Mon Nov 15, 2010 10:57 pm
Reply with quote

The error messages indicate you have "short" records, not nulls.
A short record means the length of the record is less than the length specified. For example, if the record length is 149 bytes, it mean the record has only 149 bytes. There are NO bytes present after the 149 bytes.

The VLSHRT option will allow sorting of short records.

At this point, I don't know what question you are trying to get answered.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DFSORT/ICETOOL

 


Similar Topics
Topic Forum Replies
No new posts Error to read log with rexx CLIST & REXX 11
No new posts Error when install DB2 DB2 2
No new posts CLIST - Virtual storage allocation error CLIST & REXX 5
No new posts Error while running web tool kit REXX... CLIST & REXX 5
No new posts Getting Error while trying to establi... DB2 3
Search our Forums:

Back to Top