"Obviously, you still need to restart ISPF to enable the new commands."

It isn't obvious to me. For another example of modifying the command 
table dynamically, see Gilbert Saint-Fluor's FASTPATH command on the 
CBT tape. I use it regularly. Issuing the FASTPATH command within ISPF 
adds some commands to the command table and they are immediately usable.

-- 
Tom Marchant

On Tue, 23 Jan 2024 14:03:30 +0000, Robert Prins <robert.ah.pr...@gmail.com> 
wrote:

>Here's the free-of-any errorchecking, I've only ever used it myself, small
>exec to update command tables using the standard ISPF dialog. Obviously,
>you still need to restart ISPF to enable the new commands. And of course
>saving them, like I do, in my private EXEC library could be omitted.
>
>Enjoy
>
>/* REXX exec to update my command tables                              */
>/*** trace ?r ***************************************************** \| *
>*               (C) Copyright Robert AH Prins, 2009-2010               *
>************************************************************************
>*  ------------------------------------------------------------------  *
>* | Date       | By   | Remarks                                      | *
>* |------------+------+----------------------------------------------| *
>* |            |      |                                              | *
>* |------------+------+----------------------------------------------| *
>* | 2010-05-13 | RAHP | Use ISPTABL, not ISPPROF                     | *
>* |------------+------+----------------------------------------------| *
>* | 2009-04-16 | RAHP | Now RAHP- and HERECMDS                       | *
>* |------------+------+----------------------------------------------| *
>* | 2009-04-08 | RAHP | Initial version                              | *
>* |------------+------+----------------------------------------------| *
>************************************************************************
>* UCMDS is a REXX exec to update my site-independent (RAHPCMDS) and    *
>* site-specific (HERECMDS) tables. Because it is not possible to       *
>* update an open ISPF command table, this exec copies it to $$$$CMDS,  *
>* invokes ISPUCM (the command table update program) with a parameter   *
>* of $$$$ and then copies the updated table back to USERCMDS. Note     *
>* that is necessary to restart ISPF to enable any new commands.        *
>*                                                                      *
>* Copies of the new command tables are saved to my exec library.       *
>*                                                                      *
>* Note:                                                                *
>*                                                                      *
>* *"GETVAR" is my routine that retrieves site-dependent information,*    *
>* *such as the names of my datasets allocated to ISPF etc.*              *
>************************************************************************
>* Send questions, suggestions and/or bug reports to:                   *
>*                                                                      *
>* rob...@prino.org / robert.ah.pr...@gmail.com                         *
>*                                                                      *
>* Robert AH Prins                                                      *
>* Ozkiniu gatve 48                                                     *
>* Vilnius 08405                                                        *
>* Lithuania                                                            *
>************************************************************************
>* This program is free software: you can redistribute it and/or        *
>* modify it under the terms of the GNU General Public License as       *
>* published by the Free Software Foundation, either version 3 of       *
>* the License, or (at your option) any later version.                  *
>*                                                                      *
>* This program is distributed in the hope that it will be useful,      *
>* but WITHOUT ANY WARRANTY; without even the implied warranty of       *
>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the         *
>* GNU General Public License for more details.                         *
>*                                                                      *
>* You should have received a copy of the GNU General Public License    *
>* along with this program. If not, see <http://www.gnu.org/licenses/>  *
>***********************************************************************/
>parse source source
>parse value source with . . moi .
>
>user.  = -1
>user.1 = 'RAHP'
>user.2 = 'HERE'
>
>"ispexec vget (ucmds) shared"
>
>if rc = 0 then
>  do
>    "ispexec verase (ucmds) shared"
>
>    temp = copies('$', length(ucmds))
>
>    "isredit macro"
>    "isredit (MEM) = member"
>
>    select
>      when mem = temp'CMDS' then
>        "isredit c '"temp"CMDS' '"ucmds"CMDS' first"
>
>      /* irrelevant code removed */
>
>      otherwise
>    end
>
>    "isredit end"
>
>    exit
>  end
>
>!tabl = getvar('ispTABL')
>
>drop isptabl
>drop exec
>
>"ispexec lminit dataid("isptabl") ddname(isptabl) enq(shrw)"
>"ispexec lminit dataid("exec")",
>               "dataset('"getvar('execRAHP')"') enq(shrw)"
>
>do u = 1 by 1 while user.u \= -1
>  temp  = copies('$', length(user.u))
>  ucmds = user.u
>
>  "alloc f(i) da('"!tabl"("user.u"cmds)') shr reu"
>  "alloc f(o) da('"!tabl"("temp"cmds)') shr reu"
>
>  "execio * diskr i (finis"
>  "execio" queued() "diskw o (finis"
>
>  "ispexec select pgm(ispucm) parm("temp")"
>
>  "ispexec vput (ucmds) shared"
>  "ispexec edit dataid("isptabl") member("temp"cmds) macro("moi")"
>
>  "execio * diskr o (finis"
>  "execio" queued() "diskw i (finis"
>
>  "free f(i)"
>  "free f(o)"
>
>  "ispexec lmcopy fromid("isptabl")   todataid("exec")",
>                 "frommem("temp"cmds) tomem("user.u"cmds) replace"
>end
>
>"ispexec lmfree dataid("exec")"
>"ispexec lmfree dataid("isptabl")"
>exit
>
>Robert
>--
>Robert AH Prins
>robert(a)prino(d)org
>The hitchhiking grandfather <https://prino.neocities.org/index.html>
>Some REXX code for use on z/OS
><https://prino.neocities.org/zOS/zOS-Tools.html>
>
>On Tue, 23 Jan 2024 at 07:43, Jon Perryman <jperr...@pacbell.net> wrote:
>
>> >Create a site ISPF command table and add your commands to that.
>>
>> An alternative to creating a site ISPF command table is to dynamically add
>> ISPF commands. Command tables are ISPF tables that can be updated using
>> TBADD, TBDEL and TBUPD. ISPCMDS is always open (probably ISRCMDS too). When
>> you start ISPF, you can specify a REXX to be run that TBADD's your commands
>> and they will remain in effect while ISPF is running. I never experimented
>> with NEWAPPL commands so I can't tell you if that command table is
>> automatically closed or remains open until ISPF is terminated.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to