Donald,

That would be my approach too.

Except the ALLMEMS I am using is a bit shorter and is documented here under 
the name ISRMBRS [watch the wrap!] -

http://publib.boulder.ibm.com/infocenter/zos/v1r9/index.jsp?
topic=/com.ibm.zos.r9.f54em00/sedmac3.htm

HTH!
-Victor-

On Wed, 16 Feb 2011 16:23:08 -0500, Donald Johnson <[email protected]> 
wrote:

> There are likely to be many different approaches depending on the objective
>being speed or ease of use. I believe in the ease of use, and have attached
>two Rexx programs to assist:
>$1EMAC is an edit macro that can add the two lines to the bottom of every
>member
>$2ALLMEM is the driver program that will process all members of a PDS,
>without worrying about specifying the member names, using LM services.
>
>After placing these in your SYSEXEC, change $1EMAC to add the two lines or
>make any other changes, and run the exec:
>TSO $2ALLMEM mypds.to.change $1EMAC
>I am glad if you find this useful, and if not, well, that's ok, too.
>*don*
>/* REXX Edit Macro to add two lines to the end of a member           */
>Trace "O";                             /* Set tracing mode (off)     */
>Address "ISREDIT";                     /* Set environment to ISREDIT */
>"MACRO NOPROCESS";                     /* Opening statement for macro*/
>/*   "----+----1----+----2----+----3----+----4----+----5----+----6----+-
---7
>*/
>l1 = "This is the first line to add     11-11-11-11
>";
>l2 = "This is the second line to add    22-22-22-22
>";
>"(#BOT) = LINENUM .ZLAST";             /* Get bottom line no    */
>"LINE_AFTER" #bot     " = (L1)";
>rc1 = rc;
>"LINE_AFTER" #bot + 1 " = (L2)";
>rc2 = rc;
>$mac$rc = Max(rc1,rc2);
>Address "ISPEXEC" "VPUT ($MAC$RC) PROFILE"
>"END";
>Exit 0;
>
>
>
>
>/*- REXX -------------------------------------------------------------*
> * Name     : $$$$$$$2                                                *
> * Function : This program will process all members of a PDS using    *
> *            ISPF LM services, and calling an edit macro             *
> * Author   : Don Johnson                                             *
> * Params.  : PDS name (no quotes), and edit macro name               *
> * Called by: none                                                    *
> * Calls    : none                                                    *
> * Changes  :                                                         *
> *   DEJ 16Feb2011 Initial Version.                                   *
> *                                                                    *
> *--------------------------------------------------------------------*
> * Processing - This program will take an input PDS name, and will    *
> *              use LM services to initialize and get a list of       *
> *              members to process.                                   *
> *              Each member is edited in turn with an IMACRO, and the *
> *              edit macro specified will run inside that member.     *
> *              Basic reporting will identify the file name, number   *
> *              of members processed, skipped or in error.            *
> *--------------------------------------------------------------------*/
>Trace  "O";
>junk = Time("R");
>/* 
===========================================================
===== */
>/*                                                                  */
>/*  Determine if ISPF is active                                     */
>/*                                                                  */
>/* 
===========================================================
===== */
>   If Sysvar("SYSISPF")  =  "ACTIVE" Then Nop;
>   Else
>      Do;
>         ADDRESS "TSO" "CLEAR";
>         Say; Say "ISPF must be active to execute this Exec.";
>         Say; Say "Please start ISPF and reissue the command.";
>         Return 16;
>      End;
>/* ===================== Initialize variables 
===================== */
>   Parse Upper Arg pds macname .;      /* Get file and edit macro   */
>   memvar  = " ";                      /* Holds members to process  */
>   lmrc    = 0;                        /* LM return code            */
>   edit_ct = 0;                        /* # of members processed    */
>   skip_ct = 0;                        /* # of members skipped      */
>   err_ct  = 0;                        /* # of members with errors  */
>   EOMems  = 0;                        /* End of member list        */
>/* ===================== Begin Processing 
========================= */
>Address "TSO" "CLEAR";
>   Say; Say Time() "Beginning process to edit PDS members...";
>                                       /* Set ISPEXEC environment   */
>Address "ISPEXEC";
>                                       /* Init PDS for processing   */
>   "LMINIT DATAID(IDVAR) DATASET('"pds"') ENQ(EXCLU)";
>   lmrc = rc;
>   If lmrc /= 0 Then
>      Do;
>         Say; Say "         RC" lmrc "has occurred for LMINIT";
>         Say "         Possible bad file name";
>         Signal Close_Rtn;
>      End;
>                                       /* Open PDS                  */
>   "LMOPEN DATAID("idvar") OPTION(INPUT)";
>   lmrc = rc;
>   If lmrc /= 0 Then
>      Do;
>         Say; Say "         RC" lmrc "has occurred for LMOPEN";
>         Signal Close_Rtn;
>      End;
>                                       /* Build member list         */
>   "LMMLIST DATAID("idvar") OPTION(LIST) MEMBER(MEMVAR)";
>   lmrc = rc;
>   If lmrc /= 0 Then
>      Do;
>         Say; Say "         RC" lmrc "has occurred for first LMMLIST";
>         Signal Close_Rtn;
>      End;
>                                       /* Loop through each member  */
>                                       /* and edit to change it     */
>   lmrc = 0;
>   Do While lmrc = 0;
>/*
>                                       /* Skip mems starting @ or $ */
>      If Pos(Left(memvar,1),"@$") > 0 Then
>         Do;
>            Say "         Member" Left(memvar,8) "Bypassed.";
>            skip_ct = skip_ct + 1;
>         End;
>      Else
>*/
>         Do;
>            "EDIT DATAID("idvar") MEMBER("memvar") MACRO("macname")";
>            "VGET ($MAC$RC) PROFILE";        /* Get RC from edit mac  */
>            If $mac$rc = 0 Then
>               Do;
>                  edit_ct = edit_ct + 1;
>/* if desired     Say "         Member" Left(memvar,8) "Processed";  */
>               End;
>            Else
>               Do;
>                  err_ct = err_ct + 1;
>                  Say "         Member" Left(memvar,8) "Has Errors";
>               End;
>         End;
>                                       /* Get the next member       */
>      "LMMLIST DATAID("idvar") OPTION(LIST) MEMBER(MEMVAR)";
>      lmrc = rc;
>      Select;
>         When (lmrc = 0) Then Nop;
>         When (lmrc = 8) Then EOMems = 1;
>         Otherwise
>            Do;
>               Say "         RC" lmrc "has occurred for LMMLIST";
>               Signal Close_Rtn;
>            End;
>      End;   /* Select */
>   End;  /* While */
>/* ===================== Finish Processing 
======================== */
>Close_Rtn:
>   If EOMems  Then
>      Do;
>         Say; Say "         Edit of" pds "complete:";
>              Say "            " Right(edit_ct,9) "members processed";
>              Say "            " Right(skip_ct,9) "members bypassed";
>              Say "            " Right(err_ct,9)  "members with errors";
>      End;
>                                       /* Close and Free LM dataset */
>   "LMCLOSE  DATAID("idvar")";
>   "LMFREE   DATAID("idvar")";
>   Say; Say Time() "Processing Complete - Elapsed time" Time("E");
>Exit 0;
>

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to