Posted on behalf of one of my developers, Dave Loveluck, who does not recall his logon credentials..
*************** Ray, There are several ways to do this. The first question I have is whether your ISPF application is running under its own application ID? To answer this: how was your application invoked... is there, somewhere in a Clist or REXX exec, an ISPEXEC START command referencing an APPLID. It would look like (in REXX): ADDRESS ISPEXEC "SELECT ... NEWAPPL(xxxx) ..."; If there is, is there a command table member for that application? You need to check the libraries allocated to ISPTLIB - do not forget those dynamically added by LIBDEF statements during execution. To check for LIBDEFs, start your application and enter ISPLIBD on the command line (PF3 to exit). To check the ISPTLIB members, enter DDLIST FIND ISPTLIB on the command line, and enter B or whatever against the first data set in the concatenation, then, on being shown the member list, enter L xxxxCMDS where xxxx is your application ID (application IDs do not have to be four bytes). If there is no command table currently being used, the quick and dirty method is to muscle in on the standard table - ISPCMDS; otherwise, use your application's table. You may look at the content of any table by using the following REXX exec: /* REXX - the home of the helpful hardware man */ /* REXX exec permitting the viewing and modification of existing */ /* ISPF command tables - the table is shown in DTL */ APPLID = ''; do while(APPLID = ''); say "Enter application id:"; pull APPLID; APPLID = strip(APPLID,b); if length(APPLID) > 4 then do; say "Invalid applid entered, try again"; APPLID = ''; end; end; FOUND = 0; if \FOUND then do forever; say "Enter library containing commmand table"; say "If fully qualified, enter in apostrophes"; pull LIBRARY; LIBRARY = strip(LIBRARY,b); if substr(LIBRARY,1,1) = "'" then do; LIBRARY = strip(strip(LIBRARY,b,"'"),t); end; else do; LIBRARY = sysvar(syspref)"."LIBRARY; end; if sysdsn("'"LIBRARY"("APPLID"CMDS)'") = OK then do; address ispexec "libdef isptlib dataset id('"LIBRARY"')"; leave; end; say APPLID"CMDS not found in: '"LIBRARY"'."; say "Try another library? (Y or N)"; do forever; pull REPLY; if REPLY = N then exit; if REPLY = Y then leave; say "Enter Y or N, not" REPLY; end; end; address tso "ispcmdtb" APPLID; address ispexec "tbclose" APPLID"CMDS REPLCOPY"; if \FOUND then do; address ispexec "libdef isptlib"; end; exit; You can, of course, use ISPF option 7.4 and play there instead; look for the needed ZCTVERB values. Check the command table to ensure it has the entries you need (ISPCMDS, being the standard command table, will have LEFT and RIGHT). The table entry has four fields per command: ZCTVERB, ZCTTRUNC, ZCTACT and ZCTDESC. To enable LEFT or RIGHT (or both) you need to search the table, looking for ZCTVERB = LEFT or ZCTVERB = RIGHT, if the verb is found, you need to change ZCTACT to PASSTHRU (enable) or SETVERB (disable). Be kind, if you enable, please disable after use. Use the standard table handling commands to do this - TBSCAN to locate, TBPUT to update. If there is no entry, you must create and entry suppling values for the four fields as appropriate, and use TBADD. (The other good thing about using ISPCMDS is that you do not have to bother with the TBOPEN/TBCLOSE as it is already open.) If you do not have a command table, and do not want to muscle in on ISPCMDS, well... I hope this has been of some help. Dave Loveluck DINO Software ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html