Since about 2021 or so, I have been working on the CBT Tape machine grooming my old code and writing new stuff. Almost everything here will work at your site. Rarely, some chunk of code will be specific to this employer or that one and is only useful as an example of how you might go about doing some particular task. In any case, if you should find any of it useful, you're welcome to it. At the ripe old age of 80, I'm unlikely to actually need any of it myself anymore.
Some of it is pretty damn good if I do say so myself. In particular, I recommend JFORM, DEIMBED, SUPBR, SUPED, FETCH, KED. Some of these are pretty complex and consequently hard to understand, but I guarantee they're worth the effort. Send me a note at "rexxhead@yahoo.com" if you have any problems. Of course, you don't have to understand them in order to use them, only if you decide to change them.
Beware! There is no FTP available for these, so 'downloading' means 'cut-and-paste'. Sorry.
Recently, I re-edited many routines to remove the US dollar-sign because that character gives European users fits.
More recently, several routines have been made 'RUNDATA-aware'.
RUNDATA is a routine that enables customization-needed software to be
auto-customized site-by-site.
If any routine complains about the RUNDATA table not having some
necessary data, or the RUNDATA table being completely missing,
you will have to correct that yourself.
The RUNDATA HELP text will tell you how:
==> tso rundata ?
or you can adapt PUMPDATA to the task.
Then there's the problem of the octothorpe (pound or hashtag). Neither the FTP I'm using nor the website where this page is hosted play well with that character, and some of my code used that character in their member names up on the mainframe. Therefore, some code you might have picked up here once upon a time may seem to be 'missing'. Nope, it's just been renamed to enable it to exist here without fussing.
Code Name | Type | Description |
---|---|---|
$AUTOCUS | text | Describes auto-customization technique for RUNDATA |
$EXAMPLE | fragment | New paragraph template for MAKEPARA |
$HOWTO | text | How to operate RUNDATA |
@ALLOC | fragment | Allocate a dataset |
@BACKLVL | fragment | Determine if a table is back-level |
@DISPRL | fragment | How to scroll left and right |
@ICESORT | fragment | Sort data using ICESORT |
@INSTLME | fragment | Put new command on the command table |
@LBLID | macro | Add a prefix to a label |
@LOGMSG | fragment | How to keep a progress log |
@NEWAA | fragment | Add a new row on TBLMSTR |
@NEWPREF | macro | Reassign a label prefix |
@PLIEXMP | data | The pro-forma pattern for a new PLI paragraph |
@POPUP | fragment | How to deliver a pop-up menu |
@RESTART | fragment | How to start-from-READY |
@SHIFT | fragment | Dual-case a string of words |
@TBCLOSE | fragment | TBCLOSE |
@TBDISPL | fragment | TBDISPL |
@TBOPEN | fragment | TBOPEN a table |
@TBSORT | example | Implement a SORT primary command |
@TLIBNEW | fragment | TBOPEN + TBLGEN for new table |
@TLIBPRE | fragment | Set up TLIB/TABL in LOCAL_PREINIT |
@TRACE | fragment | Enable tracing in subroutine |
@USETABL | fragment | Set ISPTLIB from LISTA |
ACQ | exec | Copy a member to the 1st dataset of a file |
ADDCMDS | exec | Apply TMPCMDS to ISPCMDS |
ADDSW | macro | Interrogate sw.0error_found |
ADDXREF | exec | Add ISPF statistics to a compiler listing |
ALIASGEN | exec | Automate setting of dataset aliases |
ALIST | exec | Display current allocations |
ALLMEM | exec | Apply a macro to all members of a library |
ALLPLIB | macro | Queue all PLIBs from the listing dataset |
ALLUSERS | exec | Rebuild table USER from RACF listing |
AMORT | exec | Amortization schedule |
ARRANGE | demo | Resequencing a table |
ASMMAP | exec | Assemble a CICS map |
ATTACH | exec | Logon customization |
BACKUP | exec | Make a backup of a PDS via SEQ2PDS |
BADCOMM | macro | Find incomplete comments |
BLKCOMM | macro | Convert each-line-a-comment to block comment |
BLOX | exec | Block letter write modeled after IEFSD095 |
CALLEDBY | macro | CALLs and their targets |
CBTXREF | exec | Display the CBTSCAN table |
CLIPLINE | macro | Clip long lines after a named token |
CLNXREF | macro | Exclude matching stats |
CMDUPD | exec | Update local command table |
COLFORM | macro | Columnarize a data stack |
COMBINE | exec | Combine 2 or more datasets with incompat DCBs |
COMMANDS | exec | Display current command table contents |
COMPARM | exec | Maintain parameters for COMPILE |
COMPDT | exec | Reports the compile-date for LOAD modules |
COMPILE | exec | Background compile of foreground source |
COMPSTAT | macro | For listings, sets member stats |
CR | macro | Copy REXXSKEL |
CRYPTED | exec | Edit without changing statistics |
CVTINFO | exec | Display CVT information |
DC | macro | DotCommand by David Visage |
DEADCODE | macro | Find all unreferenced blocks. |
DECLOCN | macro | Annotate Assembler listing |
DECOMM | macro | Remove blank comment blocks |
DEHELP | macro | Prepare canonical HELP text for modification |
DEIMBED | fragment | Extract ISPF elements from REXX |
DENUM | macro | Denumber source in listing dataset |
DFLTS | macro | Display all control characters for ISPSLIBs |
DFLTTLIB | fragment | How to set up a default ISPTLIB |
DIREXAM | exec | Display directory entries in hex-vert form |
DIRSTATS | exec | LISTD with statistics |
DRIVER | exec | Execute remote routine |
DSPROF | exec | Display via LISTDSI dataset characteristics |
DSVCSI | exec | Catalog Search Interface |
DUMPDATA | exec | Generate a reload exec for RUNDATA |
DUP | exec | Allocate or copy-to a new dataset |
EDBR | macro | Edit-from-Browse |
ELEMENTS | macro | For listings, display Attribute list |
ELEMLEN | exec | Calc storage needed for a variable |
ENTCOMM | macro | Adjust END statements for Enterprise compiler |
EXTTST | demo | How to use RXVSAM |
FACTORL | exec | Factorial processor |
FACTORS | exec | Calculate the integer factors of a number |
FCCMDUPD | exec | Insert a new command onto TMPCMDS |
FCXREF | exec | Cross-reference 2 or more PDSs |
FETCH | exec | Get datasets by nickname |
FIBONACI | exec | Fibonacci sequence |
FINDLIBS | exec | Find everyones .EXEC and .CLIST libraries |
FINDORIG | fragment | Find the DSN from which this EXEC is running |
FIRSTIME | exec | Control re-runs |
FIXDCB | exec | Fix a broken DSCB |
FIXNAME | fragment | Capitalize initial letters |
FIXSTATS | exec | Manipulate ISPF member stats |
FIXTBL | exec | Jump to ISPF 3.9 |
FIXTOOL | exec | Software-error reporting vehicle |
FLIP | macro | Show excluded and hide non-excluded lines |
FLTTBL | exec | Flatten any table (see RSTTBL) |
FSMSG | exec | Send a multi-line message |
FTPERR | exec | Analyze FTP return codes |
GCL | text | Explains Global Conformed Line |
GENCARD | exec | Produce control card from parms |
GENSAR | exec | Generate control cards for SAR Retrieve |
GETGDG | exec | Get real DSN for a generation |
GETIA | macro | Extract Impact Analysis from REXXSKEL-based code |
GETNAME | exec | Get username from internal control blocks |
HEADSUP | exec | Report on upcoming events in BRTHDAYS.LIST |
HERO | exec | Hero''s formula for the area bounded by 3 sides |
HEXCHARS | macro | Generate list of hex values 00-FF |
HSMLIST | exec | Ease the interface to HSM |
HURL | exec | NDM ship to remote site |
ICEUSER | exec | List of 'special' users |
IDENT | macro | Insert membername to REXX code |
IOSTMT | macro | Show all I/O statements |
ISOLATE | macro | ONLY this word |
ISPQTAB | exec | Show all open tables with diagnostics |
JFORM | macro | Reformat JCL |
JOBCARDS | exec | Build/update default jobcards for JCL |
JOBID | exec | Get JOBID and JOB# from internal control blocks |
JSPLIT | macro | Splits JCL one parameter per line |
KED | macro | Edit DDN(mbr); aliased as KBR and KVW |
LA | exec | LISTA ST |
LCOMM | macro | Insert line comment |
LDOW | exec | Calc nth-day-of-the-week for any month |
LIBSTATS | exec | Count members, aliases, and lines for the DSN. |
LISTCSUM | exec | LISTCAT subroutine for VCX |
LISTUSR | exec | Display all known userids with names (see ALLUSERS) |
LOADKEYS | exec | Key definitions |
LOADPROC | exec | Allocate DD=PROCLIB |
LOCATES | fragment | How to TBSCAN/REFIND |
LOGLOG | exec | Writes a line in #LOGON.RPT for each LOGON. |
MACSKEL | fragment | macro code base |
MAKEPARA | macro | Generate new paragraph for REXXSKEL-based code |
MARK | macro | Tag a line with a hyphen |
MBTI | exec | Myers-Briggs Type Indicator |
MDEL | exec | Delete a member from anywhere |
MEMBERS | exec | Return memberlist to the stack |
MEMIDX | exec | Create/Update #INDEX |
MEMLIST | exec | Member list with expanded selection |
MIGRATE | exec | Migrate code from work to final |
MODNOTE | macro | Add a modification note to the history block |
MREN | exec | Rename a member from anywhere |
MTHLIM | exec | Determine Start-DOW and length of a month |
NEWALIAS | exec | Specify new dataset alias |
NOMACRO | fragment | Error block when MACRO called as EXEC |
NONOTS | macro | Convert non-standard NOTs to standard NOTs |
NOOP | exec | IEFBR14 |
NORXSKEL | macro | Hide REXXSKEL base code during update |
ONEPERLN | macro | Splits PL/I source lines |
ONLY | macro | Exclude all except selection |
OPENMODE | fragment | Set OPENMODE. |
OPENTBLS | exec | List all tables currently open |
ORDINAL | subr | Calc ordinal of number (1st 2nd 3rd 4th...) |
OUTDENTS | macro | Show only do-end etc. |
PACKING | fragment | How to convert to/from FIXED DECIMAL |
PARSEDCL | macro | Annotate structure DCL with column info |
PDSCOPYD | exec | Copy a member with stats |
PDS2SEQ | exec | Convert PDS to IEBGENER input |
PERMCLAS | fragment | Supply STGCLASS and MGMTCLASS |
PGFS | macro | Show all paragraph names |
PLIFLOW | macro | Shows CALLs, GOTOs, and targets |
PLILBLS | macro | Like PLIFLOW; show labels and referents |
PLIMSGE | macro | Puts error msgs in-line on listings (Enterprise) |
PLIMSGO | macro | Puts error msgs in-line on listings (Optimizer) |
PLIMSGS | macro | Driver for PLIMSGE and PLIMSGO |
PLINIT | macro | Adds initialization to PL/I DCL |
PLIPARA | macro | Insert new empty paragraph |
PLIPOS | macro | Similar to PARSEDCL |
PLISKIP | macro | Replace carr-ctl with preprocessor cmds |
PLIXREF | macro | Adds stmt# refs to a listing (driver) |
PLIXREFE | macro | ~~ for Enterprise |
PLIXREFO | macro | ~~ for Optimizer |
POPINDX | exec | Populate one #INDEX member from another |
POPUTBL | exec | Populates the FINDLIBS USERTBL |
POSIT | macro | Position an Edit/View session |
POST | exec | Log activity to the ISPF LOG file |
PREVNAME | macro | Find prior "./" line in a PDS2SEQ backup |
PRODDATE | exec | Build INCLUDE set of various date variables |
PROFILES | exec | Manipulate Edit profiles |
PROFVARS | exec | Display variables in profiles |
PUMPDATA | demo | Load datapoints to the RUNDATA table |
QHELP | macro | Sub of TOOLHELP |
QIO | macro | Find and count all files by type |
QJAM | macro | Check that all stmt#s are present |
QPWEXP | exec | When does my password expire? |
QRYTBL | exec | Display all info about a table |
QSQL | macro | Analyze all the SQL statements |
RACLIST | exec | Display RACF profile for a user |
RDSPLAIN | text | More information about RUNDATA operations |
REALIAS | exec | Re-establish aliases from the Impact Analysis |
REHELP | macro | Re-enable HELP after modifications |
REPGEN | exec | Create record declares in PLI or COBOL |
RESTAT | exec | Clone of FIXSTATS; call from VIEW/BROWSE mbrlist |
RESTORE | exec | The anti-process of BACKUP |
REXXIA | exec | Do an Impact Analysis for an entire dataset |
REXXSKEL | example | Basis for most code here |
RSTTBL | exec | Restore a table flattened by FLTTBL |
RUNDATA | exec | Maintain application-specific information |
SAMPLE | exec | Show first -n- lines of every member |
SAYVAR | exec | Display/Update variables from ISPF pools |
SCHED | exec | Create a calendar page for one month |
SDSFSAMP | demo | Things you can do with SDSF |
SEARCHME | exec | Search within a PDS |
SEECHARS | exec | Like NOSEEUM |
SEGMENT | macro | Label start and end of compiler sections |
SEIZE | exec | Copy a member to a distant dataset with stats |
SELMATCH | macro | Match )SEL and )ENDSEL in skeleton |
SEQ2PDS | exec | Anti-process of PDS2SEQ |
SETALIAS | exec | Establish dataset aliases |
SETEPROF | macro | Set ZDEFAULT profile |
SETREFS | macro | Change JCL DSNs to backward-references |
SHORTPG | macro | Delete extraneous lines on compiler listing |
SHORTRX | fragment | No-frills REXX-base |
SHOWCBT | exec | MEMLIST of specified CBT library |
SHOWDATA | exec | Full-screen access to RUNDATA |
SHOWFLOW | macro | Display CALLs and targets in REXX |
SHOWLIBS | exec | Display all user EXEC libraries |
SHOWME | exec | Display first-found by DDName |
SHOWSYM | exec | Display static system symbols |
SKEL | fragment | Panel skeleton for DEIMBED use |
SKELH | fragment | HELP-Panel skeleton for DEIMBED use |
SKELT | fragment | Table-Panel skeleton for DEIMBED use |
SKINNY | macro | Hide all non-REXXSKEL code |
SLICKIO | macro | (Source) align all file DCLs |
SORTCMDS | exec | Sort a Command Table |
SOURCE | demo | Show parsing of 'source' builtin. |
SPLITDO | macro | Split if...do |
SQRT | exec | Square root (claimed by Robin Ryerse) |
STAKEDIT | exec | Recursive Edit/Browse/View (ED/BR/VW) |
STEPS | macro | Bring out all JCL EXEC rows |
STRLEN | macro | Display a length-line over a quoted string |
STRSORT | exec | Sort a string of words |
SUPBR | exec | SuperBrowse |
SUPED | exec | SuperEdit |
SYMDEFS | exec | Show system symbolics and values |
SYSAMON | exec | Groom/Report activity in SYSUMON |
SYSEMON | exec | Edit a SYSUMON.KSD |
SYSUMON | exec | Count tool usage |
SYSVARS | exec | Show SYSVARs and MVSVARs |
S2PTRIM | macro | Summarize a SEQ2PDS dataset |
TBCOPY | exec | Copy a table using AAMSTR |
TBLENQ | exec | Display enqueue contention for dataset |
TBLGEN | exec | Build a table from AAMSTR specs |
TBLMSTR | exec | Maintain AAMSTR table |
TBLOOK | exec | Examine and update any table |
TBLOPS | exec | Operate on open tables. |
TBLSTATS | exec | Populate ISPF stats for an ISPTLIB dataset |
TBREPRO | exec | Make an exact copy of a table |
TCPINFO | exec | Display TCP information |
TEXAM | exec | Calls TBLOOK from a member list |
TEXAMU | exec | TBLOOK from the memberlist |
TIMEMATH | exec | For any hh:mm:ss, show percentage values |
TOOLHELP | exec | Display all members with real HELP segments |
TRAPOUT | exec | Trap trace output to DASD |
TRIMPLI | macro | Excise billions of SQL junk from listing |
TSOHELP | exec | Full-screen HELP |
UPDSTAT | exec | Update ISPF statistics |
UPOE | exec | Update ISPF statistics |
UPOE@$ST | exec | Update ISPF statistics |
USERRPT | exec | Compare user inventory to prior run |
VCX | exec | Show IDCAMS for any file |
VSAMINIT | exec | Write a record via RXVSAM and delete it |
VSBROWSE | exec | Browse VSAM file |
VSPROC | demo | Driver for RXVSAM |
VWBR | exec | View from Browse |
WB | exec | Insert "Written by" data |
WBNAME | data | Data for WB |
WHATINC | macro | Return on stack all %INC object names |
WHEREAMI | exec | Display CPU and current node. |
ZLC | exec | LISTCAT to a dataset |