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

REXX to Find a string in the executed jobs from $AVRS


IBM Mainframe Forums -> All Other Mainframe Topics
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Devmishra

New User


Joined: 14 Jan 2010
Posts: 14
Location: India

PostPosted: Fri Mar 19, 2010 11:25 am
Reply with quote

Hello All,

After the completion of a batch job(e.g a production job), due to MSGCLASS=J parameter, it moves to $avers(J=job will move to $avrs). Likewise, at the end of the day we have around 100 jobs in $avrs. I want like to develop a REXX tool to search a particular string in the job list of $avrs.

For example,
a FTP parm is KL0E34DT and i want to search this string in all the jobs which are in $avrs.

I searched the forum with keyword $avrs but did not find any. And this is my first topic, if I am making any wrong way to post this, please forgive. icon_smile.gif

Thanks,
Dev
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Fri Mar 19, 2010 11:35 am
Reply with quote

the best place to start looking would be the $AVRS documentation !
Back to top
View user's profile Send private message
Devmishra

New User


Joined: 14 Jan 2010
Posts: 14
Location: India

PostPosted: Fri Mar 19, 2010 11:54 am
Reply with quote

Yes, i had a look but I did not find any way that how to Search a string in $avrs jobs.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Fri Mar 19, 2010 11:58 am
Reply with quote

If the search function is not implemented by the product itself
What makes You think that using REXX You might overcame the design ?
Back to top
View user's profile Send private message
Devmishra

New User


Joined: 14 Jan 2010
Posts: 14
Location: India

PostPosted: Fri Mar 19, 2010 12:21 pm
Reply with quote

Actually, very frequently our managers ask us to know about the jobs using DB2 run parms or FTP parms or any dataset, and that job was run a few months ago like 60 days before. And we are provided the dataset names with expanded qualifiers.
e.g
G1KL00AP.GEAMS1.KL0K24D2.FUNDED.FILE
with qualifiers
&HLQ1..&LLQ1..&LLQ6..FUNDED.FILE

in this case it is quite time taking for us to get the job name. Infact, sometimes we failed to get the job names and we took help from Production control team. Well, i think its achievable thru CA7 but we have access to view the basic things like triggers, triggered , job dependency, calender of job run.

So i have decided to design a rexx tool so that it will helpful to our team.

Thanks,
Dev
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Fri Mar 19, 2010 12:27 pm
Reply with quote

You just told the why, but it does not help to get the solution
if the the product You are using does not provide the facilities You need
little can be done
Back to top
View user's profile Send private message
Devmishra

New User


Joined: 14 Jan 2010
Posts: 14
Location: India

PostPosted: Fri Mar 19, 2010 12:35 pm
Reply with quote

All know that Rexx is a very powerful language and i think Rexx can help to achieve this.

Please suggest , if there is any other way to achieve this.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Fri Mar 19, 2010 12:46 pm
Reply with quote

/repeat on
If the search function is not implemented by the product itself
What makes You think that using REXX(*) You might overcame the design ?

(*)or any other programming language

the power of a programming language is useless if You do not know the structure of the data You are going to manage

for example How do You plan to access the $AVRS repository
the question stands for any programming language
Back to top
View user's profile Send private message
Devmishra

New User


Joined: 14 Jan 2010
Posts: 14
Location: India

PostPosted: Fri Mar 19, 2010 12:59 pm
Reply with quote

well, I have looked into the $avrs panels and from those panels, i got the date variable names. like SVSDATE,SVEDATE. And also i got the backup tape files where all the job information are available.

If we could get values in these $avrs variables for the date range then we may get those tape datasets and we could search the string.

Please correct, if the approach is wrong.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Fri Mar 19, 2010 1:04 pm
Reply with quote

the approach is independent of the programming language being used!
how do You plan to process the AVRS tapes ???
how much do You know about the AVRS internals for storing and retrieving data

since the amount of data seems huge REXX might not be the best tool
Back to top
View user's profile Send private message
Devmishra

New User


Joined: 14 Jan 2010
Posts: 14
Location: India

PostPosted: Fri Mar 19, 2010 1:11 pm
Reply with quote

when i found the backup tape datasets , then i thought,this might be the way i can develop the this rexxl. But this will take a lot of time coz those datasets are having a huge means huge amout of data.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Fri Mar 19, 2010 1:19 pm
Reply with quote

looks like we are just wasting time!
how much do You know about the way AVRS stores it' s data

after You know that You will be able to understand if it is possible to process it
with an external program

until that time anything You think and say will be pure and useless speculation
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Fri Mar 19, 2010 4:00 pm
Reply with quote

Why do you want to reinvent the wheel? Why not just use the $AVRS procedure that does this? The $AVRS install library member $AVRPULL is the specific member to scan $AVRS jobs and can search by date rate, job name, and / or specific string to find.

$AVRS uses VSAM files to store data, but I'm not sure if they are RRDS or KSDS. In any case, it would be a non-trivial task to write a REXX to process $AVRS data and anything you wrote would have to be tested every time a new version is installed, and possibly changed.
Back to top
View user's profile Send private message
Devmishra

New User


Joined: 14 Jan 2010
Posts: 14
Location: India

PostPosted: Fri Mar 19, 2010 4:22 pm
Reply with quote

Well Robert, i don't want to re invent the wheel... icon_smile.gif

$AVRS stores data in KSDS file(i found it in a $avrs backup job). I was looking about this $AVRPULL but not able to know, how to execute, what are the parms to pass.

I have got some code about $AVRSELR while restoring an archived job but did not find $AVRPULL.

Sorry for my inefficiency on this $avrs.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Fri Mar 19, 2010 4:36 pm
Reply with quote

Quote:
I was looking about this $AVRPULL but not able to know, how to execute,


since Your organization is licensed for the product the manuals should be available!
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Fri Mar 19, 2010 4:41 pm
Reply with quote

This is SEA code, not mine:
Code:
//*********** A PARM OF "NOBANNER" IS OPTIONAL TO SUPPRESS BANNERS
//*
//STEP001  EXEC PGM=$AVRPULL,REGION=768K  ,PARM=NOBANNER
//*
//STEPLIB  DD  DSN=$AVR.rel#.LOADLIB,DISP=SHR  -- $AVRS LOADLIB --
//*
//*                -- $AVRS' DATA BASE --
//*
//$AVRLOCK DD  DISP=SHR,DSN=$AVR.rel#.LOCK     -- $AVRS LOCK --
//*
//*  THE $AVRKSDS DD STATEMENT IS NO LONGER RECONIZED
//*  THE $AVRRRDS DD STATEMENT IS NO LONGER RECONIZED
//*
//SYSPRINT DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//*
//*        $AVRWORK DD IS THE $AVRS TEMP WORK FILE.  IT IS DYNAMICALLY
//*        ALLOCATED UNLESS THE DD IS PRESENT IN THE JCL.
//*
//*  $AVRWORK DD  UNIT=SYSALLDA,SPACE=(CYL,(2,2))
//*
//**********                         ------- SELECT WORK TO: --------
//**********                         ------- VTAM PRINT -----
//*$AVRVPRT DD SDISP=SHR,DSN=PRTV.SAVRS.RRDS  OR  -------
//RSLOCAL  DD  SYSOUT=*
//*
//***      (RSLOCAL MAY BE MODIFIED AS SHOWN BELOW)
//*
//**RSLOCAL  DD  DCB=(LRECL=133,BLKSIZE=133,RECFM=FM),
//*** ===================>             ------- SYSOUT -------
//***             SYSOUT=A    ,HOLD=YES -------  OR  -------
//*** ===================>           ------- TO AN OLD DATASET -------
//*            DSN=$AVRS.$AVRPULL.LIST,DISP=OLD ---  OR  ---
//*** ===================>           ------- TO A NEW DATASET -------
//*            DSN=$AVRS.$AVRPULL.LIST,DISP=(,CATLG,CATLG),
//*            DCB=(LRECL=133,BLKSIZE=15476,RECFM=FBA),
//*            UNIT=SYSDA,SPACE=(CYL,(25,1),RLSE)
//**********                         ------- INPUT CONTROL VIA ------
//**********                         ------- DATA SET - PARTITIONED -
//**********                         -------       OR - SEQUENTIAL  -
//$AVRPCTL DD  DSN=$AVR.rel#.CNTL(APDSNAME),DISP=SHR
//**********                         ------- OR SYSIN          ------
//SYSIN    DD  *
ONEMATCH=YES
* ************ ONEMATCH=YES SELECT ONLY ONE MATCHING JOB
* ************ FOR EACH SELECTION CRITERIA BELOW
*
* ************ SELECT ALL JOBNAMES WITH PREFIX OF "SEA" THAT
* ************ RAN YESTERDAY BETWEEN 00:01 AND 23:59 HOURS
* ************ AND SEND PRINT TO VTAM PRINT QUEUE FOR PRINTER
* ************ P45F.  (NOTE THAT THE $AVRVPRT DD STATEMENT
* ************ MUST BE UNCOMMENTED TO DO THIS).
*
*TYPE=JN,NAME=SEA,SD=-1,ED=-1,ST=0001,ET=2359,LUNAME=P45F
/*
//
Note that you will need to work with your site support group to customize this JCL to reflect your site names for data sets and so forth.
Back to top
View user's profile Send private message
Devmishra

New User


Joined: 14 Jan 2010
Posts: 14
Location: India

PostPosted: Fri Mar 19, 2010 5:16 pm
Reply with quote

Thanks a lot Robert. I already asked my team about the manual of $avrs but seems they dont know.

I found the $avrpull job in my shop and also the libs and datasets.

Can you please give some parameter values in SYSIN.

Thank you very much you experts for this help. But i will again disturb you.. icon_smile.gif
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Fri Mar 19, 2010 5:30 pm
Reply with quote

The first scans the system log looking in the last week for the string HPER01; the second scans the jobs data base for 2 days of 2009 looking for a particular string, the third scans the archive history for 2 days of 2009 looking for any job name starting with DC:
Code:
TYPE=SL,SD=-6,ED=*,FA='HPER01'
/*
//
TYPE=JN,SD=2009348,ED=2009349,FA='DCS.PROD.CSIXBURT'
/*
//
TYPE=AH,SD=2009243,ED=2009244,NAME=DC*
If your site is having trouble finding the manuals, contact the vendor and get them sent again -- SEA has PDF versions of their manuals available on CD.
Back to top
View user's profile Send private message
Devmishra

New User


Joined: 14 Jan 2010
Posts: 14
Location: India

PostPosted: Fri Mar 19, 2010 5:36 pm
Reply with quote

Thank you very much Robert.. This wil help me a lot.
I have contacted the vendor for the manuals.

Thanks again to all the experts.
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Fri Mar 19, 2010 6:25 pm
Reply with quote

Glad to hear it helped.
Back to top
View user's profile Send private message
daveporcelan

Active Member


Joined: 01 Dec 2006
Posts: 792
Location: Pennsylvania

PostPosted: Fri Mar 19, 2010 6:53 pm
Reply with quote

I like the line:

Quote:

All know that Rexx is a very powerful language and i think Rexx can help to achieve this.


This reminds me of "you are the great and powerful OZ. Certainly you can get me back to Kanasas".
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 Mar 19, 2010 7:57 pm
Reply with quote

Pay no attention to that man behind the curtain. . . icon_cool.gif
Back to top
View user's profile Send private message
Devmishra

New User


Joined: 14 Jan 2010
Posts: 14
Location: India

PostPosted: Tue Mar 23, 2010 5:15 pm
Reply with quote

Hello,

Sorry to say that my senior team members said a big NO about the $AVRS manual.
I executed the $AVRPULL using parm
Code:

//SYSIN    DD  *                                         
TYPE=JN,SD=2010001,ED=2010226,FA='KLM014BC',NAME=G1KL**PM

as a result it gave only those job names which had been restored using R(restore) thru $avrs.
in sysprint
Code:

$AVR719I - REQUEST SELECTED  G1KLS6PM (J0017853)
$AVR719I - REQUEST SELECTED  G1KLS6PM (J0017853)
$AVR719I - REQUEST SELECTED  G1KLS6PM (J0026814)
$AVR719I - REQUEST SELECTED  G1KLS6PM (J0026814)
$AVR719I - REQUEST SELECTED  G1KLS6PM (J0011711)
$AVR719I - REQUEST SELECTED  G1KLS6PM (J0011711)

In $avrs, here T means the job is Restored.
Code:

ACT  JOBNAME    JOB # C ACK    CCODE       START DATE
T G1KLS6PM 0011711 J        RC=0000 TUE 02 MAR
T G1KLS6PM 0011711 J        RC=0000 TUE 02 MAR
T G1KLS6PM 0026814 J        RC=0000 TUE 02 FEB
T G1KLS6PM 0026814 J        RC=0000 TUE 02 FEB
T G1KLS6PM 0017853 J        RC=0000 TUE 05 JAN
T G1KLS6PM 0017853 J        RC=0000 TUE 05 JAN

when i used TYPE=AH, its not giving any job name and job ended up with RC=4.
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Tue Mar 23, 2010 5:28 pm
Reply with quote

From the manual:
Quote:
FA= or
SCAN= Defines an argument to be found or scanned for in the work. In
SYSLOG, each line continuing the argument is printed including any
multi-line or continued messages requested. For all other types of work,
if the argument is found, the entire work is printed. If the DDNAME=
selection parameter was also used for this scan, only the file is printed
instead of the entire work. This is a 30 byte field. If the argument
contains blanks, the argument must be enclosed in parentheses, single or
double quotes. This parameter is mutually exclusive with LO=. This
parameter is mutually exclusive with LUNAME for TYPE=SL.
Valid for Types: JN, TN, SN, SL
Shortest Abbreviation: FA or SC
Example: FA=TEXT
FA is not valid for Archive History records.
Back to top
View user's profile Send private message
Devmishra

New User


Joined: 14 Jan 2010
Posts: 14
Location: India

PostPosted: Tue Mar 23, 2010 5:42 pm
Reply with quote

Thanks a lot Robert.

Can't we Scan a string thru Archived history?

Well, is not there any way to get $avrs manual other than the vendor?
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 -> All Other Mainframe Topics Goto page 1, 2  Next

 


Similar Topics
Topic Forum Replies
No new posts RACF - Rebuild SETROPTS command which... All Other Mainframe Topics 3
No new posts Replace each space in cobol string wi... COBOL Programming 3
No new posts PARSE Syntax for not fix length word ... JCL & VSAM 7
No new posts Running REXX through JOB CLIST & REXX 13
No new posts Error to read log with rexx CLIST & REXX 11
Search our Forums:

Back to Top