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

Problem with OVERLAY - BI on SMF Record


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

New User


Joined: 01 Sep 2005
Posts: 22

PostPosted: Sat Dec 01, 2018 9:41 pm
Reply with quote

I'm a beginner in the treatment of SMF records, I'm trying to convert 14 & 15 records.
I decided to use the ICETOOL program, I attach the JCL I use.
To simplify the tests, I entered a data set name to have less OUTPUT data to check: OMA.PIPDR.DAO.CROCDF.FR

Code:

//*--------------------------------------------------------------------
//STEP1   EXEC PGM=ICETOOL                                             
//*       -----------------                                           
//TOOLMSG DD SYSOUT=*                                                 
//DFSMSG  DD SYSOUT=*                                                 
//RAWSMF  DD DSN=......input,                                         
//           DISP=SHR                                                 
//SMF     DD DSN=&&TEMSMF,                                             
//           SPACE=(CYL,(15,15)),UNIT=SYSDA                           
//SMFREP  DD SYSOUT=*                                                 
//TOOLIN  DD *                                                         
 COPY FROM(RAWSMF) TO(SMF) USING(SMFI)                                 
 DISPLAY FROM(SMF) LIST(SMFREP) -                                     
    TITLE('SMF TYPE-14&15 RECORDS') DATE(4MD/) TIME PAGE -             
   ON(6,1,BI)     HEADER('SMF#')   -    * 01 SMF14RTY                 *
   ON(15,4,CH)    HEADER('SYS')    -    * 02 SMF14SID                 *
   ON(19,8,CH)    HEADER('JOBNAME') -   * 03 SMF14JBN                 *
   ON(69,44,CH)   HEADER('DSNNAME') -   * 04 JFCBDSNM                 *
   ON(167,1,BI)   HEADER('DSORG') -     * 05 JFCDSRG1                 *
   ON(173,2,BI)   HEADER('LRECL') -     * 06 JFCLRECL                 *
   ON(171,2,BI)   HEADER('BLKSZ') -     * 07 JFCBLKSI                 *
   ON(169,1,BI)   HEADER('RECFM') -     * 08 JFCRECFM                 *
  BLANK                                                               
//*                                                                   
//SMFICNTL DD *                                                       
  INCLUDE COND=((06,01,BI,EQ,X'0E',OR,          TYPE RECORD 14 OR       
                 06,01,BI,EQ,X'0F'),AND,        TYPE RECORD 15           
                (69,44,CH,EQ,C'OMA.PIPDR.DAO.CROCDF.FR'))           
  INREC IFTHEN=(WHEN=(05,01,BI,EQ,X'0E'),OVERLAY=(05:C'INP')),             
        IFTHEN=(WHEN=(05,01,BI,EQ,X'0F'),OVERLAY=(05:C'OUT'))                     
/*                                                                     
//*--------------------------------------------------------------------



This is the result I get, but I would also like to do a concersion of the numbers:

14 -> INP
15 -> OUT

Code:

***************************** Top of Data ******************************
1SMF TYPE-14&15 RECORDS        2018/12/01        16:36:09        - 1 - 
                                                                       
 SMF#   SYS    JOBNAME    DSNNAME                                       
 ----   ----   --------   -------------------------------------------- 
   14   SYS1   CFTMAXXI   OMA.PIPDR.DAO.CROCDF.FR                       
   15   SYS1   CFTMAXXI   OMA.PIPDR.DAO.CROCDF.FR                       
   14   SYS1   XKK99CDF   OMA.PIPDR.DAO.CROCDF.FR                       
   15   SYS1   XKK99CR1   OMA.PIPDR.DAO.CROCDF.FR                       
   15   SYS2   GKK99CPM   OMA.PIPDR.DAO.CROCDF.FR                       
**************************** Bottom of Data ****************************


I'm trying to make the conversion, but I can not, I've already tried to do different tests, where am I wrong?
Code:

  INREC IFTHEN=(WHEN=(05,01,BI,EQ,X'0E'),OVERLAY=(05:C'INP')),             
        IFTHEN=(WHEN=(05,01,BI,EQ,X'0F'),OVERLAY=(05:C'OUT'))


This is the desired:

Code:

***************************** Top of Data ******************************
1SMF TYPE-14&15 RECORDS        2018/12/01        16:36:09        - 1 - 
                                                                       
 SMF#   SYS    JOBNAME    DSNNAME                                       
 ----   ----   --------   -------------------------------------------- 
  INP   SYS1   CFTMAXXI   OMA.PIPDR.DAO.CROCDF.FR                       
  OUT   SYS1   CFTMAXXI   OMA.PIPDR.DAO.CROCDF.FR                       
  INP   SYS1   XKK99CDF   OMA.PIPDR.DAO.CROCDF.FR                       
  OUT   SYS1   XKK99CR1   OMA.PIPDR.DAO.CROCDF.FR                       
  OUT   SYS2   GKK99CPM   OMA.PIPDR.DAO.CROCDF.FR                       
**************************** Bottom of Data ****************************


Many thanks to anyone who will give me help
Back to top
View user's profile Send private message
Arun Raj

Moderator


Joined: 17 Oct 2006
Posts: 2481
Location: @my desk

PostPosted: Sun Dec 02, 2018 6:21 am
Reply with quote

Ghellar,

The ICETOOL - DISPLAY operator notes suggest that we should not use INREC or OUTREC along with the DISPLAY operator, so it would be a good idea to use a PGM=SORT job and format the data records/add your header fields using an OUTFIL statement.

DISPLAY Operator-DFSORT Appln Programming Guide wrote:
DFSORT is called to copy the indd data set to ICETOOL's E35 user exit. ICETOOL uses its E35 user exit to print appropriate titles, headings and data in the list data set.

You must not supply your own DFSORT MODS, INREC, or OUTREC statement, because they would override the DFSORT statements passed by ICETOOL for this operator
Back to top
View user's profile Send private message
Ghellar

New User


Joined: 01 Sep 2005
Posts: 22

PostPosted: Mon Dec 03, 2018 7:23 pm
Reply with quote

Thanks Arun Raj for the answer, I used ICETOOL because it is more versatile in creating Reports, with the SORT and OUTFIL must be fully escaped in more detail. I wanted to walk the most comfortable way. So there's no way to covert via ICETOOL?
Back to top
View user's profile Send private message
Arun Raj

Moderator


Joined: 17 Oct 2006
Posts: 2481
Location: @my desk

PostPosted: Mon Dec 03, 2018 7:40 pm
Reply with quote

Ghellar,

I think, it won't be much of a trouble to use a PGM=SORT job for this requirement.

Quote:
So there's no way to covert via ICETOOL?
Technically, you can still use PGM=ICETOOL and use a COPY operator with OUTFIL-but then it would be more or less the same as a PGM=SORT solution, since the restriction noted is only for the DISPLAY operator, not ICETOOL.
Back to top
View user's profile Send private message
steve-myers

Active Member


Joined: 30 Nov 2013
Posts: 869
Location: The Universe

PostPosted: Mon Dec 03, 2018 9:14 pm
Reply with quote

I'm not so sure I'd trust JFCRECFM, JFCLRECL and JFCBLKSI, though I have to admit I've never researched this. The intended purpose of these data areas is to transfer these values from the DD statement to the user program for OPEN to transfer them to the DCB data area when appropriate, but not for OPEN to transfer the final values back to the JFCB. In fact there are options in the JFCB (JFCBTSDM/JFCNWRIT, JFCBTSDM/JFCNDCB) to prevent this from happening.
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 Record count of RECFM=U tape file DFSORT/ICETOOL 17
No new posts Sysncsort - Justification problem SYNCSORT 6
No new posts HOW TO OVERLAY A Packed decimal VALUE... DFSORT/ICETOOL 5
No new posts Checking the total counts inside a re... JCL & VSAM 5
This topic is locked: you cannot edit posts or make replies. Splice JCL into one record for DD sta... SYNCSORT 2
Search our Forums:

Back to Top