MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

How do you Locate & Copy an ISPF Editor Profile?

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> TSO and ISPF
View previous topic :: View next topic  
Author Message
RoyKMathur
Beginner


Joined: 05 Jan 2012
Posts: 47
Topics: 11

PostPosted: Fri Jul 11, 2014 9:40 am    Post subject: How do you Locate & Copy an ISPF Editor Profile? Reply with quote

I have created a couple ISPF Editor Profiles. For example, one is named JCL80 and is defined as follows:
Code:
=PROF> ....JCL80 (FIXED - 80)....RECOVERY ON....NUMBER OFF.........
=PROF> ....CAPS OFF....HEX OFF....NULLS OFF....TABS OFF............
=PROF> ....AUTOSAVE ON....AUTONUM OFF....AUTOLIST OFF....STATS OFF.
=PROF> ....PROFILE LOCK....IMACRO NONE....PACK OFF....NOTE ON......
=PROF> ....HILITE JCL PAREN CURSOR FIND............................


We have a common menu (panel) that is mostly used by my team, but can also be used by others. Some of the options in the menu allow you to view jobs. When a user views a job I'd like them to have this as their starting (default) Profile but only for the life of viewing that member from within the panel menu.


This is a partial code snippet of what is executed to view a member.
Code:
)PROC                           
 &VIEWJCL = 'VIEW PROFILE JCL80'
&ZSEL=TRANS(&ZCMD,
F,'CMD(ISREPDF ''MY.WONDERFL.JCLLIB(JOBX)'' &VIEWJCL)'


How can I find the JCL80 Profile and create it for each user if they don't already have it created? I certainly don't want to overlay it if they already have a Profile named JCL80.

I read something in a manual (or web page...I don't know...I've looked at many dozens of both for the past couple days) that indicated that Editor Profiles are saved as Command Tables.

I've found that in the =3.16 ISPF Table Utility, I can see a table exists named ISPSPROF, which I cannot browse from within the utility because it says it's already open. So I wrote a little REXX program to use TBOPEN, TBQUERY, TBSKIP, TBCLOSE and discovered there are 2 rows in ISPSPROF, so I think they might be my two Editor Profiles (JCL80 and SQL80); however when I attempt to SAY the ZCTVERB, ZCTTRUNC, ZCTACT, ZCTDESC, I get nothing... The same REXX program works fine for other tables, such as USRCMDS.

Since JCL80 and SQL80 only exist under my userid, my assumption is that when someone else enters the option that views one of the files, they will at best find that the Editor Profile won't be applied, or get an ISPF error message, or at worst abort.

-Roy
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12377
Topics: 75
Location: San Jose

PostPosted: Fri Jul 11, 2014 12:16 pm    Post subject: Reply with quote

RoyKMathur,

You need to have
Code:

PROFILE_SHARING                              = YES     


in the ISPF Config file, so that you can share the profile to other users.
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
RoyKMathur
Beginner


Joined: 05 Jan 2012
Posts: 47
Topics: 11

PostPosted: Fri Jul 11, 2014 1:00 pm    Post subject: Reply with quote

Hi Kolusu, I tried reading up on PROFILE_SHARING, but that seems to be for a user sharing his profile between multiple sessions, not sharing editor profiles.

The IBM z/OS V1R11.0 ISPF Planning and Customizing manual says:
Quote:
Profile sharing is intended to be used by the same user logging concurrently onto multiple systems. The contents of the ISPF profile are often user-specific.


But I'll go ahead and talk to our z/OS Systems Programmers and see what they say.

Do you know whether there are any other ways to do this? Where are my Editor Profile's hiding? Why can't I see the values when I read the Table? Is there a way to dynamically create a Profile behind the scenes when someone executes the panel?

Thanks, Roy
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12377
Topics: 75
Location: San Jose

PostPosted: Fri Jul 11, 2014 1:09 pm    Post subject: Reply with quote

RoyKMathur,

Check this link which might help you alternate ways to set up the profile

http://www.mvsforums.com/helpboards/viewtopic.php?t=8254

and if you want to get fancy then may be you can use this exec Written by Chris Lewis
Code:

/* REXX    PROFVARS   Display all the Profile Variables for a
                      given application pool.
 
           Written by Chris Lewis 20021220
 
     Impact Analysis
.    SYSEXEC   LA
.    SYSEXEC   MEMBERS
.    SYSEXEC   TRAPOUT
 
     Modification History
     20030206 ctl Upgrade REXXSKEL from v19971030 to 20020513; Add
                  DEIMBED.  Add ability to open an alternate profile;
     20030206 fxc use LA to acquire ISPPROF dataset name;
     20030207 fxc eliminate unnecessary VGET;
     20050116 fxc major upgrade: adds display of all available profiles
                  for selection; reorganize structuring; adds detail
                  display of individual variable data; update REXXSKEL
                  to v.20040227; update Impact Analysis;
 
   |**-***-***-***-***-***-***-***-***-***-***-***-***-***-***-***-**|
   |                                                                 |
   |          WARNING: EMBEDDED COMPONENTS.                          |
   |                      See text following TOOLKIT_INIT            |
   |                                                                 |
   |**-***-***-***-***-***-***-***-***-***-***-***-***-***-***-***-**|
 
*/ arg argline
address TSO                            /* REXXSKEL ver.20040227      */
arg parms "((" opts
 
signal on syntax
signal on novalue
 
call TOOLKIT_INIT                      /* conventional start-up     -*/
rc = Trace("O"); rc = Trace(tv)
info   = parms                         /* to enable parsing          */
 
call A_INIT                            /*                           -*/
                                    if sw.error_found then nop ; else ,
call B_TABLE_OPS                       /*                           -*/
call Z_TERMINATE                       /*                           -*/
 
if \sw.nested then call DUMP_QUEUE     /*                           -*/
exit                                   /*@                           */
/*
.  ----------------------------------------------------------------- */
A_INIT:                                /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
  "CONTROL ERRORS RETURN"              /* handle our own errors      */
 
   parse value ""  with ,
               profname sel
 
   parse value KEYWD("APPL")         with ,
               appl   .
   if appl <>  ""      then,           /* specified                  */
   if Length(appl) < 5 then,           /* just the prefix            */
      profname = appl"PROF"
   else,                               /* full profile name?         */
   if Right(appl,4) = "PROF" then,
      profname = appl
 
   call AI_ISPPROF                     /* get profile names         -*/
   call AS_SETUP_ISPF                  /* DEIMBED                   -*/
 
return                                 /*@ A_INIT                    */
/*
   Determine profile-dataset-name.  Find all ..PROF members in that
   dataset.
.  ----------------------------------------------------------------- */
AI_ISPPROF:                            /*@                           */
   if branch then call BRANCH
   address TSO
 
   "NEWSTACK"
   "LA ISPPROF (( STACK LIST"
   parse pull . ":" profdsn .
   "DELSTACK"
 
   if profname <> "" then return       /* we don't need a member list*/
 
   "NEWSTACK"
   "MEMBERS" "'"profdsn"'" "((STACK LINE"
   parse pull mbrlist
   "DELSTACK"
   rmbr = Reverse(mbrlist)
   mbr = ""
   do Words(mbrlist)                   /* each word                  */
      parse value rmbr mbr  with  mbr rmbr
      if Left(mbr,4) <> "FORP" then,   /* PROF reversed              */
         mbr = ""                      /* don't keep it              */
   end                                 /* mbrlist                    */
   mbrlist = Reverse(rmbr mbr)         /* restore                    */
 
return                                 /*@ AI_ISPPROF                */
/*
.  ----------------------------------------------------------------- */
AS_SETUP_ISPF:                         /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
   call DEIMBED                        /* extract ISPF assets       -*/
 
   dd = ""
   do Words(ddnlist)                   /* each LIBDEF DD             */
      parse value ddnlist dd  with  dd ddnlist
      $ddn   = $ddn.dd                 /* PLIB322 <- PLIB            */
      "LIBDEF  ISP"dd "LIBRARY  ID("$ddn") STACK"
   end
   ddnlist = ddnlist dd
 
return                                 /*@ AS_SETUP_ISPF             */
/*
   Load the PROFILE member names onto the primary selector panel and
   present it for profile selection.  If a profile name already exists
   this section is redundant and we can branch directly to the inner
   logic.
.  ----------------------------------------------------------------- */
B_TABLE_OPS:                           /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
   if profname <> "" then do
      call BDA_DETAILS                 /*                            */
      return                           /* we're done...              */
      end
 
   call BA_PROLOG                      /*                           -*/
   call BB_LOAD_TABLE                  /*                           -*/
   call BD_DISPLAY_TABLE               /*                           -*/
   call BZ_EPILOG                      /*                           -*/
 
return                                 /*@ B_TABLE_OPS               */
/*
.  ----------------------------------------------------------------- */
BA_PROLOG:                             /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
   $tn$    = "AP"Right(time("S"),5,0)
   "TBCREATE" $tn$ "NOWRITE REPLACE NAMES(PROFNAME)"
 
return                                 /*@ BA_PROLOG                 */
/*
.  ----------------------------------------------------------------- */
BB_LOAD_TABLE:                         /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
   do Words(mbrlist)                   /* each profile name          */
      parse var mbrlist profname mbrlist /* isolate                  */
      "TBADD" $tn$
   end                                 /* mbrlist                    */
 
return                                 /*@ BB_LOAD_TABLE             */
/*
   Show the primary selection table and allow the user to select one
   or more profiles for display.  Pass each selected "profname" to
   BDA_DETAILS.
.  ----------------------------------------------------------------- */
BD_DISPLAY_TABLE:                      /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
   "TBTOP" $tn$
   do forever
      sel = ""
      "TBDISPL" $tn$ "PANEL(SELPROF)"
       if rc > 4 then leave
 
      do ztdsels
         "CONTROL DISPLAY SAVE"
         call BDA_DETAILS              /*                            */
         "CONTROL DISPLAY RESTORE"
         if ztdsels > 1 then "TBDISPL" $tn$
      end                              /* ztdsels                    */
 
   end                                 /* forever                    */
 
return                                 /*@ BD_DISPLAY_TABLE          */
/*
   Process the selection made from the primary selection table
   (profile name).  Show the details of this profile.  If the user
   specified a profile name as a parm, control will branch directly
   into this procedure.
.  ----------------------------------------------------------------- */
BDA_DETAILS: Procedure expose,         /*@ hide everything except... */
   (tk_globalvars) profname profdsn
   if branch then call BRANCH
   address ISPEXEC
 
   call BDAA_PROLOG                    /*                           -*/
   call BDAB_VAR_LOAD                  /*                           -*/
   call BDAD_DISPLAY                   /*                           -*/
   call BDAZ_EPILOG                    /*                           -*/
 
return                                 /*@ BDA_DETAILS               */
/*
.  ----------------------------------------------------------------- */
BDAA_PROLOG:                           /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
   $tn$    = "AP"Right(time("S"),5,0)
 
  "TBSTATS" profname "STATUS2(S2)"
 
   if s2 > 1 then return               /* table is already open      */
 
  "LIBDEF ISPTLIB DATASET ID('"profdsn"')"
  "TBOPEN" profname "NOWRITE"
   if rc <> 0 then do
      sw.error_found = 1
      zerrsm = "Table Error"
      zerrlm = "Unable to open" profname".  Is this a valid Profile?"
     "SETMSG MSG(ISRZ002)"
      end                              /* rc <> 0                    */
  "LIBDEF ISPTLIB"                     /* open table                 */
                                    if sw.error_found then return
  sw.0ClosePROF = 1                    /* we opened it               */
 
return                                 /*@ BDAA_PROLOG               */
/*
   Load the profile variables from the xxxxPROF table onto the temp
   table.
.  ----------------------------------------------------------------- */
BDAB_VAR_LOAD:                         /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
  "TBTOP"  profname
  "TBSKIP" profname "NUMBER(1) SAVENAME(SAVES)" /* variable are stored*/
                                       /* in an extension variable   */
   parse var saves "(" saves ")" .     /* grab all variable names    */
 
   "TBCREATE" $tn$ "NOWRITE REPLACE KEYS(X4NAME) NAMES(LEN VARVAL)"
 
   do while saves <> ""
     parse var saves x4name saves
     varval = Value(x4name)
     len    = Length(varval)
    "TBADD" $tn$
   end                                 /* while                      */
 
return                                 /*@ BDAB_VAR_LOAD             */
/*
   Show the list of variables.  Allow the user to select one or more
   for display.
.  ----------------------------------------------------------------- */
BDAD_DISPLAY:                          /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
   "TBSORT" $tn$ "FIELDS(X4NAME,C,A)"  /* sort and set crp to top    */
 
   do forever
      "TBDISPL" $tn$ "PANEL(PROFVARS)"
       if rc > 4 then leave
 
      do ztdsels
         "CONTROL DISPLAY SAVE"
         call BDADD_SHOW_DETAIL        /*                            */
         "CONTROL DISPLAY RESTORE"
 
         if ztdsels > 1 then "TBDISPL" $tn$
 
      end                              /* ztdsels                    */
 
      sel = ""
   end                                 /* forever                    */
 
return                                 /*@ BDAD_DISPLAY              */
/*
   A "varval" may have been truncated because of the screen width.
   Show it here full-size.
.  ----------------------------------------------------------------- */
BDADD_SHOW_DETAIL: Procedure expose,   /*@                           */
   (tk_globalvars) varval x4name
   if branch then call BRANCH
   address ISPEXEC
 
   "DISPLAY PANEL(PROFDETL)"
 
return                                 /*@ BDADD_SHOW_DETAIL         */
/*
.  ----------------------------------------------------------------- */
BDAZ_EPILOG:                           /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
   "TBEND"  $tn$
 
   if sw.0ClosePROF then,              /* we need to close it        */
      "TBEND" profname
  sw.0ClosePROF = 0                    /* reset                      */
 
return                                 /*@ BDAZ_EPILOG               */
/*
.  ----------------------------------------------------------------- */
BZ_EPILOG:                             /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
   "TBEND" $tn$
 
return                                 /*@ BZ_EPILOG                 */
/*
   Tear down the LIBDEFs done for DEIMBEDded material.
.  ----------------------------------------------------------------- */
Z_TERMINATE:                           /*@                           */
   if branch then call BRANCH
   address ISPEXEC
 
   dd = ""
   do Words(ddnlist)                   /* each LIBDEF DD             */
      parse value ddnlist dd  with  dd ddnlist
      $ddn   = $ddn.dd                 /* PLIB322 <- PLIB            */
      "LIBDEF  ISP"dd
      address TSO "FREE  FI("$ddn")"
   end
   ddnlist = ddnlist dd
 
return                                 /*@ Z_TERMINATE               */
/*
.  ----------------------------------------------------------------- */
LOCAL_PREINIT:                         /*@ customize opts            */
   address TSO
 
 
return                                 /*@ LOCAL_PREINIT             */
/*   subroutines below LOCAL_PREINIT are not selected by SHOWFLOW    */
/*
   Parse out the embedded components at the back of the source code.
.  ----------------------------------------------------------------- */
DEIMBED: Procedure expose,             /*@                           */
   (tk_globalvars)  ddnlist  $ddn.  daid.
 
   address TSO
 
   fb80po.0  = "NEW UNIT(VIO) SPACE(5 5) TRACKS DIR(40)",
                   "RECFM(F B) LRECL(80) BLKSIZE(0)"
   parse value ""   with  ddnlist $ddn.  daid.
 
   lastln   = sourceline()
   currln   = lastln
   if Left(sourceline(currln),2) <> "*/" then return
 
   currln = currln - 1                 /* previous line              */
   "NEWSTACK"
   address ISPEXEC
   do while sourceline(currln) <> "/*"
      text = sourceline(currln)        /* save with a short name     */
      if Left(text,3) = ")))" then do  /* package the queue          */
         parse var text ")))" ddn mbr .   /* PLIB PANL001  maybe     */
         if Pos(ddn,ddnlist) = 0 then do  /* doesn't exist           */
            ddnlist = ddnlist ddn      /* keep track                 */
            $ddn = ddn || Random(999)
            $ddn.ddn = $ddn
            address TSO "ALLOC FI("$ddn")" fb80po.0
            "LMINIT DATAID(DAID) DDNAME("$ddn")"
            daid.ddn = daid
            end
         daid = daid.ddn
         "LMOPEN DATAID("daid") OPTION(OUTPUT)"
         do queued()
            parse pull line
            "LMPUT DATAID("daid") MODE(INVAR) DATALOC(LINE) DATALEN(80)"
         end
         "LMMADD DATAID("daid") MEMBER("mbr")"
         "LMCLOSE DATAID("daid")"
         end                           /* package the queue          */
      else push text                   /* onto the top of the stack  */
      currln = currln - 1              /* previous line              */
   end                                 /* while                      */
   address TSO "DELSTACK"
 
return                                 /*@ DEIMBED                   */
/*   subroutines below LOCAL_PREINIT are not selected by SHOWFLOW    */
/*
.  ----------------------------------------------------------------- */
HELP:                                  /*@                           */
address TSO;"CLEAR"
say ""
if helpmsg <> "" then do ; say helpmsg; say ""; end
ex_nam = Left(exec_name,8)             /* predictable size           */
 
say "  "ex_nam"      Display all the Profile Variables for a given application "
say "                pool.                                                     "
say "                                                                          "
say "  Syntax:   "ex_nam"  APPL <applid>                                       "
say "                                                                          "
say "            applid    specifies a particular application prefix to be     "
say "                      displayed.  It may be fully-specified (ex:  ZIPPROF)"
say "                      or as a prefix-only (ZIP).  If not specified a list "
say "                      of all relevant profiles will be presented for      "
say "                      selection.                                          "
say "                                                                          "
"NEWSTACK"; pull ; "CLEAR" ; "DELSTACK"
say "                                                                          "
say "   Debugging tools provided include:                                      "
say "                                                                          "
say "        BRANCH:   show all paragraph entries.                             "
say "                                                                          "
say "        TRACE tv: will use value following TRACE to place the             "
say "                  execution in REXX TRACE Mode.                           "
say "                                                                          "
say "                                                                          "
say "   Debugging tools can be accessed in the following manner:               "
say "                                                                          "
say "        TSO "ex_nam"  parameters     ((  debug-options                    "
say "                                                                          "
say "   For example:                                                           "
say "                                                                          "
say "        TSO "ex_nam"  (( MONITOR TRACE ?R                                 "
 
address ISPEXEC "CONTROL DISPLAY REFRESH"
exit                                   /*@ HELP                      */

/*      REXXSKEL back-end removed to save space                      */

/*
)))PLIB SELPROF
)ATTR DEFAULT(%+_)
  % TYPE(TEXT) INTENS(HIGH) SKIP(ON)
  + TYPE(TEXT) INTENS(LOW) SKIP(ON)
  _ TYPE(INPUT)  INTENS(HIGH) CAPS(ON) JUST(LEFT)
  @ TYPE(OUTPUT) INTENS(LOW)  CAPS(ON) JUST(LEFT)
)BODY EXPAND(||) WIDTH(&ZSCREENW)
+|-|% Select a Profile to display +|-|
%COMMAND ===>_ZCMD
 
%V  Profile
+=  ========
)MODEL ROWS(ALL)
_Z+@PROFNAME
)INIT
    .ZVARS = '(SEL)'
)PROC
)END
)))PLIB PROFVARS
)ATTR DEFAULT(%+_)
  % TYPE(TEXT) INTENS(HIGH) SKIP(ON)
  + TYPE(TEXT) INTENS(LOW) SKIP(ON)
  _ TYPE(INPUT)  INTENS(HIGH) CAPS(ON) JUST(LEFT)
  @ TYPE(OUTPUT) INTENS(LOW)  CAPS(ON) JUST(LEFT)
  ! TYPE(OUTPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT)
  } TYPE(OUTPUT) INTENS(LOW)  CAPS(ON) JUST(RIGHT)
)BODY EXPAND(||) WIDTH(&ZSCREENW)
+|-|% Variable List of!profname +|-|
%COMMAND ===>_ZCMD
 
%V  Name     Length Value
++  ======== ====== ===========================================================
)MODEL ROWS(ALL)
_Z+@X4NAME  }LEN  +@VARVAL
)INIT
    .ZVARS = '(SEL)'
)PROC
)END
)))PLIB PROFDETL
)ATTR DEFAULT(%+_)
  % TYPE(TEXT) INTENS(HIGH) SKIP(ON)
  + TYPE(TEXT) INTENS(LOW) SKIP(ON)
  _ TYPE(INPUT)  INTENS(HIGH) CAPS(ON) JUST(LEFT)
  @ TYPE(OUTPUT) INTENS(LOW)  CAPS(ON) JUST(LEFT)
  } TYPE(OUTPUT) INTENS(LOW)  CAPS(ON) JUST(RIGHT)
)BODY EXPAND(||) WIDTH(&ZSCREENW)
+|-|% Profile Variable Detail +|-|
%COMMAND ===>_ZCMD
 
+
%  Variable Name ===>@x4name
+
% Variable Value ===>@varval
 
 
 
 
 
 
 
 
 
 
 
 
 
 
)INIT
)PROC
)END
*/

_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
RoyKMathur
Beginner


Joined: 05 Jan 2012
Posts: 47
Topics: 11

PostPosted: Wed Jul 16, 2014 9:41 am    Post subject: Reply with quote

Thanks Kolusu. I was unable to get Chris's program to work. It gets an error because the TOOLKIT_INIT routine doesn't exist. I was able to ascertain how to display the rows and they are not the contents of my Editor Profiles: JCL80 and SQL80.
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12377
Topics: 75
Location: San Jose

PostPosted: Wed Jul 16, 2014 11:32 am    Post subject: Reply with quote

RoyKMathur wrote:
Thanks Kolusu. I was unable to get Chris's program to work. It gets an error because the TOOLKIT_INIT routine doesn't exist.


RoyKMathur,

You might not really need the TOOLKIT_INIT but here is the explanation and the source code for that.

TOOLKIT_INIT establishes "info" by loading "opts", so that TV, TRAPOUT, BRANCH, MONITOR, and NOUPDT (the items parsed-out in TOOLKIT_INIT) are all derived by default from "opts", the portion of the argument following the "((". Before it returns control to the mainline, TOOLKIT_INIT calls LOCAL_PREINIT, a stub routine which may be used by the application programmer to process any locally-defined opts-values. (LOCAL_PREINIT is placed before HELP in the standard REXXSKEL to indicate that it is not intended to be replaced when upgrading to a more recent version.)

On return from TOOLKIT_INIT (into the mainline), "info" is refreshed from "parms", so that all other switches and keyword values will be determined from that portion of the argument preceeding the "((".


Code:

TOOLKIT_INIT:                          /*@                           */
   address TSO
   info = Strip(opts,"T",")")          /* clip trailing paren        */

   parse source  sys_id  how_invokt  exec_name  DD_nm  DS_nm,
                     as_invokt  cmd_env  addr_spc  usr_tokn

   parse value "" with  tv  helpmsg  .
   parse value 0   "ISR00000  YES"     "Error-Press PF1"    with,
               sw.  zerrhm    zerralrm  zerrsm

   if SWITCH("TRAPOUT") then do
      "TRAPOUT" exec_name parms "(( TRACE R" info
      exit
      end                              /* trapout                    */

   if Word(parms,1) = "?" then call HELP /* I won't be back          */

   "QSTACK" ; tk_init_stacks = rc      /* How many stacks?           */

   parse value SWITCH("BRANCH") SWITCH("MONITOR") SWITCH("NOUPDT") with,
               branch           monitor           noupdt    .

   parse value mvsvar("SYSNAME") sysvar("SYSNODE") with,
               #tk_cpu           node          .

   sw.nested    = sysvar("SYSNEST") = "YES"
   sw.batch     = sysvar("SYSENV")  = "BACK"
   sw.inispf    = sysvar("SYSISPF") = "ACTIVE"

   parse value KEYWD("TRACE")  "O"    with   tv  .
   tk_globalvars = "tk_globalvars exec_name tv helpmsg sw. zerrhm",
                   "zerralrm zerrsm zerrlm tk_init_stacks branch",
                   "monitor noupdt"

   call LOCAL_PREINIT                  /* for more opts             -*/

return                                 /*@ TOOLKIT_INIT              */
/*



Code:

LOCAL_PREINIT:                         /*@ customize opts            */
   address TSO


return                                 /*@ LOCAL_PREINIT             */
/*

_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
RoyKMathur
Beginner


Joined: 05 Jan 2012
Posts: 47
Topics: 11

PostPosted: Wed Jul 16, 2014 11:52 am    Post subject: Reply with quote

Thanks Kolusu. I went to Frank's webpage and he states that code has been removed from the rexx programs to save space because each of the programs uses the exact same code. All I had to do was copy all lines from the REXXSKEL member from the BRANCH routine to the end of the member after the line that says "REXXSKEL back-end removed to save space". I got it working, but it also can't display the contents of that ISPSPROF member; it works fine with the other members, such as USRCMDS, etc. I've sent an email to Frank about my "problem" as outlined in my original post. I'd have send it to Doug Nadel, but I don't have his email address, and I don't know what his status is. I hope he's okay.
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12377
Topics: 75
Location: San Jose

PostPosted: Wed Jul 16, 2014 2:26 pm    Post subject: Reply with quote

RoyKMathur wrote:
I'd have send it to Doug Nadel, but I don't have his email address, and I don't know what his status is. I hope he's okay.


Doug has retired as of March 31 2014 and I guess he probably does not want to look at code now.
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
RoyKMathur
Beginner


Joined: 05 Jan 2012
Posts: 47
Topics: 11

PostPosted: Thu Jul 17, 2014 9:41 am    Post subject: Reply with quote

Actually his message says he'd be happy to answer any questions...it's just he didn't leave his email address.

Quote:
I have retired from IBM and much of the MVS related content on this site was developed as part of my tenure there. It was published here with the permission of IBM during my employment. I was diligent about assigning copyright to IBM and I intend to respect that same copyright.

I would be happy to answer questions on MVS, ISPF, Rexx, etc, but will no longer be distributing any software that was created before my departure from IBM.

Note also that I no longer have any access to a mainframe or any z/OS installations so I can not test, try, prototype or verify any answers I give. Nonetheless, questions are welcome.

‐ Doug Nadel
Back to top
View user's profile Send private message
RoyKMathur
Beginner


Joined: 05 Jan 2012
Posts: 47
Topics: 11

PostPosted: Thu Jul 24, 2014 10:12 am    Post subject: Reply with quote

Hi Kolusu, No response from Frank. Maybe my email went into his Junk mail folder since it is a GEICO email address. Anyway, I figured out how to do what I wanted to do without using an Editor Profile. Instead I noticed on Mark Zelden's website that I can create an Edit Macro that'll set all the Profile options I wanted to set.

I created a member in my REXX PDS named JCL80:
Code:
/* rexx  MYPROF edit macro      */
ADDRESS ISREDIT                   
   "MACRO"                       
   "RECOVERY ON"                 
   "NULLS OFF"                   
   "STATS ON"                     
   "HILITE ON JCL"               
/* "HILITE FIND"   */             
/* "HILITE CURSOR" */             
/* "HILITE PAREN"  */             
EXIT


Then when I execute ISREPDF I just pass it the parm "VIEW MACRO JCL80". Works great!

For some unknown reason, the FIND, CURSOR and PAREN are already turned on and unfortunately they are toggle switches, so possibly it won't work for other people? but I'll cross that bridge if I reach it.
Back to top
View user's profile Send private message
arnold57
Beginner


Joined: 01 Oct 2004
Posts: 30
Topics: 0

PostPosted: Tue Aug 05, 2014 3:31 pm    Post subject: Reply with quote

Edit profiles are stored in your profile data set in member xxxxEDIT, where xxxx is the applid. For PDF, the applid is ISR, so ISREDIT is where your normal option 2 profiles are stored. All profiles are in the same table, one profile per row. Once you have created customized profiles, you can copy the ISREDIT table from your profile data set to a shared ISPTLIB library and that table will become the default for all new users - they will then get your customized profiles. However, you cannot create new defaults or add new profiles for existing users who already have an ISREDIT in their profile data set.

You may be able do do what you want by starting a new applicatiion and creating a default table xxxxEDIT for your application in the shared ISPTLIB library - the first time the application is used, the table gets copied from ISPTLIB to the users profile data set.

P.S. You can also create a profile called ZDEFAULT, which wiill be used as the default when a user tries to use a profile that doesn't exist in his table - he will not get an error - but again, it has to be there when the table is first copied from ISPTLIB.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> TSO and ISPF All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group