REVIEW Release Notes for Release 50.4
REVIEW is a 3270 fullscreen TSO command processor for MVS.
REVIEW also functions correctly under TSS on MSP systems.
The source for REVIEW is available on the CBT MVS tape, and is in the public domain, as is the data contained herein.
The REVIEW home page and FAQ can be accessed from http://www.prycroft6.com.au
You can see web release dates here.
Bug reports welcome.
Select from this list to see notes from the following releases:
This release has built-in support for the FSHELP and FSH aliases of HEL, and includes the new 'FORMAT"/'FMT' and 'FMTVAR'/'FV' subcommands.
Note also that '=X' and '=CAN' are now valid member list subcommands.
This release allows PDS searching with '=SEARCH' from the directory list.
Use '=HELP' to see what is available from the directory list.
REMEMBER - if any members are tagged then only these members will be searched (or offloaded). Use '=RESET' to untag all members.
This release introduces the "point-and-shoot" capability which is triggered by invoking REVIEW with no operands.
REVIEW does a read buffer to get the DSNAME under the cursor. This works from the TSO READY prompt (except for Session Manager which updates the screen before REVIEW gets control) and in fullscreen mode.
For best results under ISPF, set up a PF key with
TSO REV) MODE(FSCR
exactly as shown above.
You also may wish to set up a REVIEW PF key with
to allow point-and-shoot recursive REVIEWs.
Note that a recursive REVIEW with no operands is terminated unless a point-and-shoot DSNAME is found. This is to avoid TSO prompting with no ability to interrupt out of it.
Also note that for point-and-shoot purposes, a member name is NOT considered to be part of a DSNAME.
R28.1 allows the S member selection code even for same-named members in a concatenation.
R28.2 restores the terminal to line mode when "point 'n' shoot" can't process a data set.
Also, PF5/17 can now find the first member in a member list if it is tagged.
R29.0 makes the FIND, F and FINDNOT subcommands case insensitive.
FINDCHR, FC and FCN remain case sensitive.
FINDPIC, FP and FPN have been added. eg. FP ### looks for 3 digits.
These commands can all be selected from the member list to search the whole file (one or more PDSs).
A RACROUTE is now issued for non-pre-allocated non-VSAM data sets on ACF2 systems to avoid leaving a data set allocated after a S913 abend. (OPEN ABEND EXIT processing handles this for RACF systems since R26.0.)
The screen buffer has been enlarged so that REVIEW may now actually work on a 62 by 160 screen (logic added 4 and a half years ago).
R29.1 no longer displays ?? under AC for unauthorized program objects.
R29.2 fixes case insensitive searches with ASCII ON. Picture searches are not allowed with ASCII ON. Case insensitivity is ignored if there are no alphabetics in the search argument, thus speeding up searches.
=SEARCH status indicators are improved.
R29.3 fixes ZAP IDR formatting when ESDID values are invalid.
R29.4 fixes recursion detection, fixes searching for data specified with no trailing quote, and allows the use of double-quotes for quoting strings. Eg. FIND "=C'FRED',"
R29.5 enhances DEBUG output for diagnosis purposes.
R29.6 fixes 2 possible S0C4 problems with unexpectedly long input, and allows finding a quote character. Eg. FIND ' and FIND "
Note that REVSMF has minor updates for formatting CICS and STOTEK silo (SLSS) SMF records.
R29.7 fixes SUB. (SUBMIT still worked.)
R29.8 fixes RDW handling for non-VSAM DSECT formatting.
Note that REVSMF can extract some WLM service class statistics from type 72 subtype 3 RMF SMF records.
R29.9 fixes an error handling QUERY TGET data lengths longer than 256 bytes. The extra data length overlaid the display translate table which caused corrupted data display and sometimes caused terminal errors requiring TSO session cancellation. (The reported observation was with CM/2 terminal emulation under OS/2.) And now a word about IDRs in load modules:
Data from IDRs is formatted when REVIEWing associated CESD blocks (when scrolled right past the block itself) and when REVIEWING the IDRs themselves. Translation and User IDRs are each a single logical record which can be spanned over many physical records. For these 2 types only the last entry is formatted so that for simple load modules with few CSECTS you do not have to scroll right much, if at all. For load modules with many CSECTs it is best to view the CESDs to get translation and IDENTIFY details pertaining to each ESD. This data comes from the IDRs located after the CESDs. Therefore the data can only be displayed if scrolling down to these IDRs has occurred. For simple load modules the first screenful is usually sufficient, while for the nucleus, for example, one has to scroll down hundreds of lines before scrolling up again to get the formatted data. (Caching of records does not occur in pre-XA systems so only data from blocks on the screen can be formatted.) Only one ESD per CESD record is formatted per page, so left/right scrolling across a 15-page area is required to see all formatted ESDs in a many-CSECTed program (because a CESD can have data about up to 15 ESDs). (Individual ZAP IDR entries are formatted 2 to a page, and also use left/right scrolling to access different entries.) R29.9 fixes a logic error formatting IDR data for ESD entries. After the screen records were processed the last screen record was processed again from cache, upsetting the assembly of the logical record.
A design capacity limitation is still evident when looking at a couple of programs from SYS1.LINKLIB (such as ARCCTL) causing display errors when many (hundreds) CSECTs were compiled in the same compilation run. This is not a problem for the nucleus. The link edit IDR is a fixed-length fixed-format record formatted by REVIEW. OW29593 adds 4 bytes (the time in packed decimal) to it. R29.9 should now format this IDR layout also. Since the binder "name" is in plain text, the name will be replaced by the HH:MM:SS of the bind when the data of this extended IDR is broken out.
R29.9 should also fix a couple of bugs in formatting IMS details.
Personally, I blame bitrot to code not tested in 10 years.
R30.0 adds "jump from leader dots" where a member can be selected by placing the cursor on a member list dot without actually typing the S member selection code. A VTOC can now be REVIEWed by specifying the quoted data set name 'FORMAT4.DSCB' and supplying a volume serial number with the VOLUME operand. While REVIEWing a VTOC the format-1 DSCBs can be formatted with the FORMAT ON subcommand. Support for the logical PARMLIB service of OS/390 1.2 (and later) is accessed by a request to REVIEW the PARMLIB file when no PARMLIB file is allocated. (ie. REV PARMLIB F)
R30.1 fixes a bug where issuing a command RECALL on a wide screen caused all data except the recalled command to be cleared from the screen. This was caused by calculating the buffer start address for the wide screen, but leaving the end address for an 80-column screen. This made the end address less than the start address, so an attempt to clear the primary input area cleared to the end of the screen and wrapped around to clear the top of the screen.
R30.2 fixes a S0C4 abend caused by an incorrect attempt to restore the primary command in the TSO ECT after a HELP session had ended. This was most obvious on recursive HELPs with missing HELP data.
R30.3 fixes recursive REVIEW prompting problems by turning off fullscreen mode, thus allowing line mode replies to prompts. The STTMPMD macros were commented out to allow the receiving of messages while in REVIEW under OS/390 2.4. These can now be reactivated for later releases, but probably only have an effect if TSO/E Session Manager is used. One user complained that the directory area wasn't big enough for a specific PDS so it has been increased from 512K to 768K. The "cocktail-shaker" improvement to bubble sort was added for some fixed-offset sorts for PDS directory sorting to provide some modest but perceptible sort time reductions.
R31.0 provides PDS facilities accessible from the directory display screen.
=SETFILE allows the setting of the output DDname, so it can be changed from SYSUT2. (This has no effect on the CUT and ADD subcommands of "REVIEW-proper".)
=DELINK can now be used to invoke DELINKI to delink load modules.
=OFFLOAD can now offload load modules to fixed-length 80-byte records.
=PDSLOAD can invoke REVLMOD or PDSLOAD (depending on PDS RECFM) to reload offloaded members.
=HELP screen split into 2 screens.
REVSMF no longer link-edited into REVIEW. REVSMF made RMODE=ANY.
R32.0 adds ZIP and PCX file handling. ZIP directories can be formatted if the ZIP file is a DASD sequential file. ASEXZIPD from ASE can be invoked to unzip data. Unzipped data can be REVIEWed and CUT to an output file. 1-bit, 4-bit and 8-bit single-plane Paintbrush (ZSoft's PCX file format) can be rendered on a 3270 graphics TSO terminal. Character (raster) graphics done by REVIEW. GDDM called for vector graphics terminals. (GDDM base now part of OS/390. Put the SADMMOD data set in the linklist.) PICDATA allows the porting of a picture into other Assembler 3270 applications. DIV improved a bit for ZIP file data handling - previously overhead increased exponentially with record number. (DIV here is REVIEW's internal record caching.)
R32.1 fixes IMS ACBLIB offset bugs and adds Y2K windowing for IMS ACBLIBs which only use 3 bytes (YYDDDF) for the date.
R32.2 fixes 'PDSE' literal overlaying RMODE=24 program size total, and using the wrong register to branch after a zip file error. Recognition of low-level qualifiers now handles mixed case.
R32.3 handles 8K and 16K DB2 pages sizes.
R33.0 adds the 'H' member selection code to show program history. For PDS load modules this is the same as 'S' and scrolling right. For PDSE program objects IEWBFDAT is invoked and the results (as opposed to the actual member contents) are REVIEWed.
R34.0 replicates nearly all of the PDS facilities for HFS files including REVIEW/EDIT/BROWSE, global SEARCH, program history, directory SORT, and entry tagging. ZIP files are recognised if they are HFS files. HFS PCX files are recognised. (NULL) is now not shown for zero-length records unless HEX or FMT is on. LRECL=X is now supported up to 65535 bytes long. DB2 rows are now only extracted when the first page is recognised as a header page, and then any page size should now be handled correctly (assuming it is a multiple of 4K). The slash ('/') selection code was added (for HFS and PDS/PDSE) to allow the "specification" of the DATA operand at the member or HFS file level. '/' can be used to inhibit the default processing of ZIP and PCX files. HFS explorer like navigation is done by selecting a subdirectory to make the current directory, or PF3 up to parent directory. PF3 from Root ends REVIEW. Example:
REVIEW /etc/dce QUICK
BUT no operands are allowed so REVIEW attempts to show directory '/etc/dce QUICK/' which gets a RC=00000081 RSN=055E0072 because it doesn't exist. So, PF3 which REVIEWs directory '/etc/' with the display positioned to 'dce'. <NEWLINE> and <ENTER> selects the 'dce' subdirectory so REVIEW now shows '/etc/dce/'.
R34.1 fixes the S0C9 abend when the 'SMF' command is issued.
REVIEW has several built-in formats which are pre-coded examples of the general DSECT formatting capability:
**VTOC** - formats DSCB-1 records. (DS1SMSFG improved with R34.0).
Activate with FMT (or FMT ON) when REVIEWing a VTOC.
*DB2TBL* - shows full Row-ID (RID) of extracted DB2 rows.
*ZIPFILE - formats ZIP central directory records.
*OBJHIST - formats data extracted by REVIEW from Binder API calls.
"Normal" REVIEWing of data is performed by the REVIEW2 CSECT. This operates in 24-bit addressing mode, unless an HFS file is being REVIEWed, whereupon REVIEW2 receives control from REVHFS in 31-bit addressing mode. All USS calls are done with AMODE=31. REVHFS provides routines for READ, CHECK, NOTE and POINT which are pointed to by a fake DCB which is used by the standard BSAM macros in REVIEW2. All Binder dialogs (Fast Data Access for PDSEs; full API for HFS) take place with AMODE=31. ISPLINK is invoked with AMODE=31 for HFS files, and AMODE=24 for PDS/PDSE members. GDDM is called with AMODE=31.
R35.0 provides another replication of directory processing, this time for unconcatenated PDSE program object data sets. The REVIEW CSECT passes control to REVPDSE instead of REVPODIR when a single PDSE with RECFM=U is being REVIEWed. REVPDSE checks that it is a program object library - if not control is transferred to REVPODIR. If it is REVPDSE performs all directory, formatting and command handling. Why this duplication? Because REVPDSE (actually cloned from REVHFDIR) can display long alias names, as well as program object-only attributes which can be accessed by DESERV like date/time/job, Program Management version, DLL enablement, etc. Because REVPDSE only processes program object libraries a few "normal" facilities are not available, such as delinking, offloading and edit. And because there are no output facilities there is no =SETFILE command. Each of the three directory processors (REVPODIR, REVHFDIR and REVPDSE) has its own set of help panels accessed with '=?' or '=HELP'. REVPODIR was designed to fit details from as many members as possible into its internal storage, and would require a rewrite to handle long member names. REVPODIR has several entry formats for use with different member types. REVHFDIR and REVPDSE have fixed-format internal entries with a variable-length name at the end. REVHFDIR acquires 128K (with LOC=ANY) which is retained until the end of the REVIEW session. REVPODIR and REVPDSE acquire from 8K to 768K (variable GETMAIN) below the line.
After the directory has been read unused space is freed. As a result, for REVPODIR and REVPDSE an =REFRESH causes the whole area to be freed, reacquired, and excess freed (so there is room for any new members).
When a long member name (which must therefore be an alias) is selected for REVIEW or BROWSE, the real member name (maximum 8 bytes long) is passed to REVIEW2 or ISPF, as appropriate.
DESERV code is executed with AMODE=31 for access to GET_ALL buffers returned above the line. The RMODE=24 program size total on the END line of the member list only includes RMODE=24 segments of program objects with more than one segment. (I believe "more than one" means "two". That is, I don't think a program can have more than two segments (currently).)
On a OS/390 2.7 system with DFSMS 1.5, pointing SYSLMOD to a PDSE yields a PM3 object. Copying a load module to a PDSE yields a PM1 object. When copying to a PDS with ISPF option 3.3 copy the real member first, then its aliases (without leaving the member list) to avoid orphan aliases. When copying to a PDSE, select the real member AND all its aliases BEFORE pressing ENTER.
REVSRCH was given a parameter list so it does not have to be aware of the working storage structure of REVPODIR and REVPDSE. REVHFDIR does not use the parameter list because it drives the searching of HFS files. When called from REVPDSE, REVSRCH always uses the real member name, but for PDSEs the results are the same (because PDSEs cannot have orphan aliases).
REVIEW is 20 years old this month (19 Jan 2001). Happy Birthday!
And thank you, Bill, for writing it.
R36.0 (2002-January) adds things in these areas:
- TSO command management;
- memory management.
- parallel sessions;
- ISPF dialog;
- UNIX file symbolic links.
(1) TSO command feedback is improved by reporting any non-zero return code or abend code in the top line message after the command has ended. Also, for systems without TSO/E, the TSO command is invoked by ATTACH with SZERO=NO to insulate REVIEW from abends by the TSO command, and to avoid abends when the TSO command does not restore registers properly.
This is mainly aimed at MVS 3.8 systems because TSOEXEC (supplied by TSO/E) already provides this protection.
(2) SZERO=NO has been added to all ATTACH calls by REVIEW subroutines to maximise memory clean-up by the system after a utility has been called.
FREEPOOL macros have been added after all QSAM CLOSE macros. This has been done to conserve region storage which can be exhausted by several recursive REVIEW sessions, mainly observed on 3.8.
(3) The SWAP command has been added. This transforms nested REVIEW sessions started by TSO REV or FSH commands inside REVIEW/FSHELP into parallel sessions. This makes the sessions accessible without the need to terminate more recent sessions. SWAP LIST can be used to list the accessible sessions. This SWAP processing has nothing to do with the SWAP of ISPF.
(4) In some cases, REVIEW can be run as an ISPF application. The significant work of adding dialog support to the directory displays has not been done, so only files without directories can be REVIEWed in an ISPF display. So, PDSs, PDSEs, HFS files and partitioned subsystem data sets are excluded. DSORG=PS,IS,DA,VS data sets can have their data shown by REVIEW in an ISPF display. ISPF split screen processing is then available, and ISPF handles the TSO subcommand.
- Install REVPANEL to ISPPLIB
- Install REVPROF to ISPPROF.
- Run on MVS/ESA or later.
Separate from the REVIEW ISPF dialog aspect, other changes are:
(a) When the OS is OS/390 2.10 or later REVIEW will use the new ISPF variables to access the data set name under the cursor for "point and shoot" invocations rather than relying on ISPF's internal structure to find the screen image and cursor location. This has the added benefit of not requiring the MODE(FSCR specification.
(b) Also under OS/390 2.10 or later in an ISPF environment REVIEW will access ISPF variables to determine extended colour, highlighting and graphic escape support instead of issuing a Read Partition (Query) to the terminal. This means (i) that REVIEW will initialize faster, and (ii) REVIEW will not render Paintbrush pictures.
REVIEW now has an XISPMODE (or X for short) operand which causes REVIEW to revert to pre-R36.0 behaviour in terms of data display (ISPF will not be used) and determining screen attributes (a Query will be performed if appropriate, thus making available any graphics capabilities which would allow the rendering of picture images).
(5) When looking at UNIX directories, if the directory entry is a symbolic link then the link value is shown in green. This should assist UNIX file administration because it can now be seen which files are "real" and which are accessed via symbolic substitution.
R36.1, R36.2, R36.3 and R36.4 were small bug fixes in the main.
R36.5 changes ZIP directory formatting to handle 10 decimal digits for the compressed and uncompressed file sizes, which is the required number of digits to report any value of an unsigned fullword.
R36.5 also adds the A selection code for UNIX files, which instructs REVIEW to treat the selected file as an ASCII text file. Not only is ASCII-to-EBCDIC translation activated, but the end of line trigger is changed from the EBCDIC New Line (NL=x'15') to the ASCII Line Feed (LF=x'0A'). If the LF is immediately preceded by a carriage return (CR=x'0D') then it is also not shown in the display.
R36.6 fixes subsystem allocation which was probably broken years ago when support was added to REVIEW VTOCs when the data set name of 'FORMAT4.DSCB' was specified. Bug reported by David Welles.
R36.7 fixes IKT00405I SCREEN ERASURE CAUSED BY ERROR RECOVERY PROCEDURE after an ISPF Edit or Browse changes the screen to a smaller size and then REVIEW tries to write data to the larger size. Bug reported by Mark Zelden who also reported a bug in REVSMF when formatting SMF type 250 (TSOMON) records: an S0C4 in REVSMF would occur because the target of an MVC instruction loading a literal used R7 as the base instead of R6.
R37.0 (2003-October) implements a major internal reoganisation.
Much of the triplicated code from the directory handlers has been unified into commonly callable routines. Several facilities only available while in "REVIEW data mode" are now available from directory displays as well. Examples of such facilities include the TSO and SWAP commands, the ability to set PFK values, and the ability to run as an ISPF dialog.
The list of CSECTs making up the REVIEW command processor are:
REVIEW - entry point to perform parsing and initialisation.
REVIEW2 - main "browse file data" processor.
REVPCL - REVIEW TSO parsing parameters.
HELPCL - FSHELP TSO parsing parameters.
REVPDS - formerly REVPODIR - format, display and navigate PDS directories.
REVSORTE - PDS directory sort enhancer.
REVALCO - allocate and serialize sequential output file.
REVDALO - free and deq sequential output file.
REVOFFLD - sequentialize PDS members.
REVSRCH - search PDS members for data.
REVISPF - invoke ISPF Edit, Browse or View functions.
REVLOAD - invoke PDSLOAD or REVLMOD to load new PDS members.
REVDLNK - invoke DELINKI to delink load modules.
REVDIV - cache reviewed data in virtual storage.
REVPNS - determine point-and-shoot data set name.
REVHIST - invoke Binder to show program history.
REVIMAGE - show picture using raster graphics.
REVGDDM - show picture using vector graphics.
REVUNIX - formerly REVHFDIR - format, display and navigate UNIX directories, manage UNIX file search, and set up for UNIX data REVIEW.
REVPDSE - format, display and navigate PDSE program library directory.
REVHEAD - clear screen buffer and initialize common first 2 lines.
REVCOMM - perform all TSO terminal communication using ISPF or TPUT/TGET.
REVMSGS - house and retrieve common fullscreen messages.
FINDHEX, FINDCHR and FINDPIC (and their respective FINDNOT commands) have been dispensed with in favour of specifying the search argument in an ISPF-like manner.
FIND and FINDNOT can now have a search column range specified, as well as one of the PREFIX, SUFFIX and WORD keywords specified.
PDS(E) and UNIX files-in-a-directory SEARCH can exploit the new FIND options.
VIEW has been added to the EDIT and BROWSE repetoire for invoking ISPF services.
REVLMOD has been enhanced to use linkage editor serialisation (QNAME=SYSIEWLP) when updating load libraries to improve data integrity.
REVIEW has been enhanced to use ISPF serialisation (QNAME=SPFEDIT) when updating sequential or partitioned data sets.
Directory display subcommands no longer have the '=' prefix, and primary input text is no longer interpreted as a LOCATE request specification.
Directory displays no longer have a separate set of PFK values hard-coded.
A SORT command is available to request the sorting of directory entries.
Some commands such as TSO, =X, KEYS and HELP will behave differently when REVIEW is running as an ISPF dialog because these commands will be processed by ISPF.
R37.1 improved interfacing with ISPF when invoked under PDS running as an ISPF dialog.
R37.2 added CLIST support to the TSO subcommand.
R37.3 corrected the display of ZIP file sizes in the 2GB to 4GB range.
R37.4 fixed the SUBMIT subcommand.
R37.5 supplied changes and fixes to
- replace calling a custom-made module from ASE with calling the free MINIUNZ to perform data unzipping.
- allow the processing of a ZIP archive on pre-XA systems.
- allow the LOCATE command to locate a member with an exact name match when the member list has been sorted out of name order.
- stop an S0C4 abend when performing a FIND on formatted data.
- fix rendering of pictures with programmed symbols broken by the R37.0 internal program restructure.
- change PICDATA to have no operands by replacing the DDname operand with a prompt for a data set name.
- use TPUT NOEDIT instead of TPUT FULLSCR when the screen buffer size is larger than 4096 locations to ensure that all MVS levels have no problem with 14-bit 3270 buffer addressing.
R38.0 (2004-May) implements REVEDIT - the REVIEW Editor.
The REVEDIT CSECT has been added to supply an editor for PDS membersand sequential data sets. The U member selection code and the UPDATE primary command will invoke REVEDIT, as will the E member selection code and the EDIT primary command when REVIEW is not running in an ISPF environment. Various other bug fixes are also included.
The TSO HELP now has several members. REVEDIT has its own HELP member as does each of the three directory displays. John Kalinich has kindly coded up numerous ISPF tutorial panels which can be displayed when a HELP command is processed by ISPF.
This release also sees the introduction of the REVGEN source member which sets the values of switches used during conditional assembley.
With the appropriate settings in REVGEN, REVIEW can be assembled on MVS 3.8 using the Tachyon Legacy Assembler and the SYS1.MACLIB and SYS1.AMODGEN macro libraries from that MVS.
See http://www.tachyonsoft.com/ for the Tachyon Assembler.
Macros for BASSM and BSM are required under MVS 3.8 to assemble REVIEW.
REVEDIT can use a data space to hold data while it is being edited.
A data space can grow to 2GB subject to customisation by IEFUSI.
REVGEN can be set so that REVEDIT will use the user region to hold the data - obviously a necessity for MVS 3.8 and other pre-ESA systems.
R38.1 fixes a few bugs such as REVIEW accessing new extents after UPDATE increased the size of the data set, REVEDIT SAVE handling erased sequence numbers, and ERR being a valid abbreviation for ERROR on a REVEDIT LOCATE command. Other changes include the removal of the DDname operand of CUT and APPEND in favour of presenting a panel to specify a data set name, and the addition of the COPY command in REVEDIT. A "point-and-shoot" REVIEW also now works when triggered from a REVEDIT session.
R38.2 fixes a few bugs such as an S0C4 when initializing as an ISPF application under SDSF, and fixing the home location of the cursor on screens with more than 80 columns. A member list sort can now be triggered by placing the cursor on a column heading (as suggested by John K.) - eligible headings have underscores. The effective uid will be set to 0 (superuser), RACF permitting, to improve access by REVIEW to directories and files (as suggested by Mark Zelden). The original effective uid is restored by the time any ISPF services are invoked. REVPANEL now has extra attribute codes to allow the display of data with GE(ON) explicitly requested.
R38.3 fixes the problem where a cursor-triggered member sort did not occur when the end of the member list was on the screen. Also, the Binder API processing was cosmetically changed during diagnosis for problems reported in IBM APARs OA08880 (ABEND0C4) and OA09299 (RC8 REASON CODE 1080003A) which are relevant for z/OS 1.5 and 1.6. Thanks to Mark Zelden for detecting and reporting the bugs to IBM.
R38.4 fixes an S0C4 abend after VSAM OPEN failure - now the return and reason codes are displayed properly as before - must have been bitrot in a recent release.
R38.5 fixes two problems with REVEDIT:
- an intermittent S0C4 processing line commands.
- unreliable matching by FIND when PREFIX, SUFFIX or WORD is specified, especially when ALL is also specified.
R38.6 fixes an S0C4 when the editor initialises after data was found in the browser.
R39.0 (2004-December) implements syntax colouring for Assembler and JCL.
The HILITE (or HI) REVEDIT subcommand has been added to control whether syntax highlighting is to be activated or not. The HILITE setting is saved in the profile if one exists.
The UPDATE (or UPD) operand of LOCATE has been added so that lines updated in the current edit session can be located. This operand (unlike the other non-numeric operands of LOCATE) is not compatible with ISPF's Edit.
R39.1 fixes an S0C4 when HEX ON is used with records which do not reach the end of the screen line - the terminating attribute byte code was being moved into the edited data array corrupting a pointer instead of to the screen buffer. Bug reported by John H. Keith.
R39.2 makes improvements to PDS-member/UNIX-file searches performed from directory entry list displays.
Firstly, the standard PDS directory display now can perform searches for lowercase strings - this was just a plain bug.
Secondly, another bug where the picture attribute of the search was not reset for a non-picture search after a picture search is fixed.
And thirdly, non-picture case-insensitive searches have been sped up to (practically) match the performance of non-picture case-sensitive searches. This is achieved by the simple expedient of translating the whole record to uppercase once after it is read instead of for each compare, thus making simple compares adequate to find the data. Note that this does not speed up normal FIND command processing as the data must be kept untranslated for display and other processing.
R39.3 changes behaviour/output as follows:
- EREP formatting will display the STCK value in hex if the system does not have the STCKCONV facility (ie. is pre-SP4), and system abend code digits have been reduced from 4 to 3. Also, garbage will no longer be left in column 81.
- Fix intermittent incorrect numeric data such as VV.MM when showing member details - this occurred for some members and not others when shown on some screen lines but not others.
- A new M selection code is implemented to display a module map for program objects (both PDSE and UNIX, but not PDS). (The *OBJMAP* and *OBJESD* internal formats are used to display the results.)
- REVEDIT will no longer loop (or perhaps abend) when an insert line command is on the screen while a move/copy is pending, and autoinsert will no longer occur if the cursor is in the line number field of the line.
Since the [temporary] demise of JCC the MINIZIP and MINIUNZ load modules are now included in the executable program library.
R39.4 adds support for VSAM Extended Addressable access, although REVIEW only supports up to 1TB with this change. Also, RLS=NRI is now specified internally to maximize access to data controlled by RLS.
R40.0 (2006-April) implements REVED and REVOUT.
REVED is simply an alias of REVIEW to initiate the edit of a sequential data set (instead of having to browse it with REVIEW and issue the EDIT or UPDATE primary command). The other main difference of REVED is that the meaning of the S selection code for PDS members is to request the member be edited with REVEDIT instead of being browsed with REVIEW.
REVOUT provides a fullscreen interface to TSO FIB commands so that they can be used to give QUEUE-like or SDSF-like access to job output that is independent of the level of MVS and Job Entry Subsystem in use. Function depends on the SYSOUTTRAP facility and uses the CLIST called REVOUTJB which should be installed into SYSPROC.
MVS 3.8 users who wish to use REVOUT may be interested in usermods from http://www.prycroft6.com.au/vs2mods which add CLIST function including SYSOUTTRAP (ZP60014), and which alter JES2 (ZP60015) and TSO STATUS (ZP60016) so that the TSO STATUS command without any operand returns the status of all jobs with names of the TSO user's id plus zero, one, two and three extra characters (up to a maximum length of eight). A JES3 version of the ZP60015 usermod would be needed to provide similar function in a JES3 environment.
This release also rolls up bug fixes originally intended for R39.5, most notably those debugged by Steven Becquer of Miami-Dade County Public Schools I.T.S.
CSECTs for PDSEs and UNIX have been moved from the REVSUBS source member to a new REVSUBS2 source member.
REVALCO (which is called for SEQLOAD and OFFLOAD from the member list, and CUT and APPEND from data REVIEW) has been changed such that if the specified output data set name cannot be found it will be created. It will be a sequential data set if no member name was supplied, or a PDS with 20 directory blocks if a member name was supplied. In most cases the new data set's DCB will match that of the data set being REVIEWed.
- correct DMB size count for IMS V6 and V7.
- ignore DATA operand for REVED command (do not edit PDS directory).
- prevent S0C4 abend of REVOUT if REVOUTJB CLIST is not installed.
- display found data hidden by ISPF split screen.
- general fixes to scrolling.
R41.0 (2007-November) rolls up changes from 40.3 onwards.
Apart from bug fixes, the main changes include:
- show step name and CPU time of active jobs in REVOUT.
- extract pictures from most types of uncompressed Windows/OS2 bitmaps.
- use native 3270 vector graphics when available to show pictures.
- session id numbers are now fixed and not relative to current screen.
- current session id shown as blue superscript if session is nested.
- cursor position saved and restored across SWAP commands.
- make Edit the default selection action for the REVED command.
- generate cursor autoselect S only if no primary command.
- improve TSO logic to not finish calling CLIST after subcommand CLIST.
- suppress screen size switch if screen size already has 80 columns.
- use PDS member DIV caching now only if RECFM=U - the main purpose is to allow CESD formatting show IDR details - now also for pre-XA.
R41.0 enhancements to REVEDIT include:
- add TF and TS line commands.
- add SORT primary command.
- add CREATE and REPLACE primary commands.
- colon command prefix applies command to current line. eg. :TS
- support ASM highlighting of source code in a jobstream.
R41.0 enhancements for MVS 3.8 also include:
REVSMF can now format data from MF/1 records (types 70 to 74). Of the SMF records produced by MVS 3.8, only types 73 and 74 from MF/1 seem to be sensitive to left/right scrolling.
As of R41.0 REVIEW will override the LRECL of SYS1.MANX and SYS1.MANY of one thousand with ten thousand because MF/1 can write records longer than one thousand bytes. REVIEW will continue to override the blocksize of SYS1.LOGREC of 40 with 1944.
R41.1 changes REVEDIT to avoid S0C4 abend after a TF line command in ESA (data space) mode, and also adds minor improvements to JCL syntax highlighting.
R41.2 fixes some things serious (like S0C4 moving lines to before the current top of screen) and not so serious (like the new members added by a PDSLOAD into an empty PDS can be seen without having to scroll up), and also adds some features.
REVEDIT can now be invoked in VIEW mode (where data set serialization is not performed and SAVE is disabled) and REVEDIT also now supports UNDO and REDO by employing a recovery data set called prefix.REVEDIT#.BACKUP where # is the screen number.
Note that recovery is manual, but can be performed by REVIEWing the recovery data set, using NEWTOP to access deleted members if the existing member is corrupt - not that it should be, using CUT to copy the records to a new data set, and editing the new data set and shifting all data to the left to restore proper data alignment.
The recovery data set should be deleted to re-enable UNDO/REDO (and recovery) for that screen session number.
UNDO OFF is available to stop undo/recovery processing if you find it is adding too much to response time. And then there is UNDO ON for when you find that the overhead isn't so bad after all.
R41.3 fixes an error where the editor tries to move 8 bytes into 4 bytes when only 4 were needed. Because it was at the end of a page (most of the time) the result could be harmless, a mysterious storage overlay, or an S0C4 abend.
R41.4 fixes an S0C4 abend encountered after an UNDO was requested and the post-UNDO display position was not Top-of-Data (as in UP MAX). (If the post-UNDO display position was line zero then was no problem.)
A check of the ISPF panel dynamic area size during initialization (testing that it matched expected results based on the screen size) has been removed in the hope that this allows more ISPF application REVIEW sessions on wide screens.
R41.5 fixes several basic bugs. When a block was excluded which incorporated the current top display line REVEDIT lost track of, well, reality, so things like line numbers became corrupt. LOCATE by line number was fixed as it was just plain wrong with excluded lines because it invoked UP or DOWN scrolling which count display lines, not data records.
As well as OFF, JCL, ASM and AUTO, now PLI, CLIST and DATA are valid operands of the HILITE or HI subcommand.
/* ... */ comments are now highlighted as such, PL/I column 1 and pre-processor statements are shown in blue, and Assembler labels can now have non-trailing ampersands in other than the first position not flagged as an error.
A leading *PROCESS statement with a semicolon is taken to indicate PL/I source, while one without a semicolon is taken to indicate Assembler source. MAR or MARGINS is not yet parsed.
JCL validation has been extended in some areas. The REGION parameter on EXEC and JOB statements is validated mainly to detect post-XA values on pre-XA systems.
For JCL DD statements, plain data set names are validated and underscored if cataloged and shown in blue if not cataloged. If a single volume is specified without parentheses it is length-checked, and for MVS/370 systems an attempt is made to see if it is an online DASD volume. If it is online it is underscored, and its generic device type designation is shown in that line's command area at the left of the screen.
There is no cross-checking with the catalog entry vs VOL=SER in the JCL, nor with the volume device type vs the UNIT value in the JCL.
R41.6 changes include:
- REVEDIT backup file now uses the userid as the high-level qualifier when PROFILE NOPREFIX is in effect. (Reported/suggested by Sam K.)
- Screen size now set from ISPF panel size. (Reported by John K.)
- REVOUT will now display some rudimentry Assembler syntax highlighting when showing Assembler listings. (Requested by Tom A.)
- Program object PDSE directory display now
- has more SORT types (idea by C. Mac).
- shows PM sublevel in superscript (or lower case if ever over 9).
- Done some work on implementing an INFO subcommand - not complete so not documented.
R41.7 fixes operation as an ISPF application broken when trying to handle the case when the line mode screen size (as returned by STSIZE) is different from the fullscreen screen size (as reflected in the dimensions of the ISPF panel). The undocumented global subcommand of CDE or JPA has been added.
- REVOUT Assembler listing syntax highlighting for wide screen.
- REVEDIT CREATE and REPLACE creating corrupt SPF statistics.
- REVEDIT CREATE and REPLACE RECFM=V not copying first selected record.
- screen size not switching for pre-coded 80-column displays.
- UNZIP temp unit of 3380 - now 3390 followed by SYSALLDA for retry.
(It was VIO originally, but large zips could cause auxiliary storage shortages on under-configured pre-SMS systems.)
- CHANGE ALL missed occurrences of the FIND string after syntax highlighting housekeeping used the dynamic translate table work area thus overlaying the TRT table used by CHANGE.
- REVHIST setup for PDSEs just checked that DIV was initialized (as it used to be not so long ago) and if it wasn't issued the "REVIEW" internal storage exhausted message. Now REVHIST will issue the DIV GETMAIN call for PDSEs as it does for UNIX.
R42.0 (2008-September) adds support for DSNTYPE=LARGE sequential data sets.
- Fix locating a ZIP archive's central directory for DSNTYPE=LARGE.
- Add the RTF subcommand to output coloured print files in RTF format.
- Enhance Assembler listing syntax highlighting to show literals in white as REVEDIT syntax highlighting does.
- Add the D PDS member selection code so that members can be deleted from the PDS member selection display such that they can be restored with an R selection. This is only supported for unconcatenated PDSs and not PDSEs (because the restore does not work for PDSEs).
- Enhance the R PDS member selection code to restore members deleted with a D.
- Fix various cosmetic glitches.
- Fix PDSE H errors caused by erroneous DIV processing.
- Various internal reorganizational changes such as moving the RECALL stack from the @DATA area and placing it into an area which is shared by all parallel sessions, and removing the code to transfer the RECALL stack ownership during logical screen SWAP processing. Another example is suppressing DIV processing during searches of program libraries - no point caching data for a single scan - which was sometimes a source of abends during such searches.
- Add the undocumented TCB (alias RB) command.
- Highlight PL/I source code in editor according to character code points, and report unbalanced parentheses as syntax errors.
- Allow REVOUT to run as an ISPF application.
- Add the SCRNAME command to assign a new name to the logical screen session.
- The optional operand of the SWAP subcommand can now be NEXT, PREV or a session name, in addition to LIST or a session id (decimal number) that were previously allowed.
- The default value of PF9 is changed from SWAP to SWAP NEXT.
- An attempt is made to name logical screen sessions automatically. Names used are OUT (for REVOUT), HELP (for FSHELP) and the last data set name qualifier (if fewer than three qualifiers exist) or the second-last data set name qualifier (if more than two qualifiers exist). Names shorter than eight characters will have a digit (2 - 9) appended to prevent duplicate session names. A name will be left blank rather than creating a duplicate non-blank name.
- The concurrent or parallel session count limit is increased from 8 to 16.
- Add the N PDS member selection code which allows a new name to be assigned to an unconcatenated PDS or data PDSE member. The user is prompted to supply the new name when the selection code is processed. Member names containing commas, imbedded blanks, or code points less than a blank are rejected (message will just say REQUEST CANCELLED). The 26 English letters will be folded to upper case. Apart from these restrictions any other code point you can type in will be used as supplied in the new member name. Null or blank input, or input entered with a key other than the <enter> key will also cause the request to be cancelled.
- Fix to serialization bug (not supplying the data set name to ENQ correctly) which allowed a member to be deleted, restored or renamed while it was being edited.
- REVEDIT (Edit and View) is changed to show the search match that the cursor has been positioned to in reverse video, as is done by REVIEW (Browse).
- The PL/I source margins columns are extracted from the SORMGIN, MAR or MARGINS settings from leading *PROCESS and %PROCESS statements for syntax highlighting purposes.
R43.0 (2010-March) introduces RFE - the "REVIEW Front End".
RFE is a menu framework to allow navigation to the various components of the package. The initial menu options are:
D - "REVLEV" - the data set list utility which is a bit "3.4-ish".
O - "REVOUT" - to access spooled output which is a bit "QUEUE meets 3.8-ish".
T - "REVTSO" - which is a bit "6-ish".
This may change to a numerical scheme later if enough other options materialize.
To assist RFE operations, the default for PFK2 is now SPLIT which is a new global subcommand equivalent to TSO RFE. Note that an initial RFE option can be specified as an operand of SPLIT.
Architecturally, this release sees all BSM and BASSM instructions removed from the package. All code is now intended to run in the 31-bit addressing mode under z/OS, although the code has yet to be compiled and tested under z/OS at the time of writing.
RFE is mainly to aid use under MVS/370, and so the 370 version is being released first.
The source for the main load module has increased from 49.3 KLOC to 57.8 KLOC. As well as new CSECTs delivering new function, a few fixes were also implemented, including:
- Add EADSCB=OK settings.
- Reactivate DIV PDS member data caching under FSHELP to stabilize scrolling when )I member inclusion is used.
- Add extended ISPF stats recognition (but not necessarily digestion).
- Preserve seconds in timestamp when processing ISPF stats.
- Recognize and handle ZIP archives in PDS members.
- When exiting from a REVIEW of a zipped file, scroll to place that file at the top of the zip directory display, instead of always reshowing the zip directory from the top, which was very annoying when a ZIP archive contains many screensful of file names.
- Fix "fastpath" which was broken and always reported I/O errors.
It might have been broken by the DSNTYPE=LARGE support.
- Detect screen size change dynamically. This is intended to support loss of a terminal and a LOGON RECONNECT using a terminal with different screen dimensions.
- Assume square brackets can be rendered natively with x'AD'/x'BD'.
- Improve STAX processing for MVS/370.
- Fix an intermittent S0C4 with REVEDIT line command blocks.
- Fix an S0C4 in REVEDIT with C * * and new string never specified.
- Use userid as 2nd dsname qualifier for UNDO/REDO data set when the prefix is not equal to the userid. This will stop other users with your prefix hogging your UNDO/REDO and CONDENSE data sets. (CONDENSE is used by the Z action in REVLEV.) And you can now tell which users are making such data sets under your high-level qualifier.
- Use Merge Sort instead of Bubble Sort for member name and TTR sorts, reducing an initial display of REV ISPPLIB F from minutes in some cases to sub-second. (Sorts of other member attributes still use Bubble Sort because the field to be sorted is not fixed. REVLEV uses Merge Sort when sorting the data set name list.)
- Add repeated-symbol optimization for triple-plane symbol graphics.
- Upgrade the N (member rename or new name) action code dialog screen I/O.
- Prevent QSAM I/O error during REVEDIT COPY from crashing off the whole REVIEW/RFE environment by adding EROPT=ACC to the DCB so that the abend is considered recoverable by the SYNAD exit.
- Add a member selection list for REVEDIT COPY from a PDS and no member name specified. (This was the chief source of the QSAM I/O errors mentioned above.)
- Report MEMBER NOT FOUND instead of S013-18 for REVEDIT COPY from a PDS when the specified member is not present.
- Verify that the UNDO/REDO data set does not exist at the start of a REVEDIT session before allocating it. If it does exist then report REVEDIT#.BACKUP NOT REUSED (where # is the screen number) instead of DYNALLOC feedback codes. It is up to the user to decide if the data in the pre-existing data set should be used for recovery. Any such recovery may well involve manually editing a copy of the recovery file's member and shifting all of the data 12 columns to the left.
- Do similar for the CONDENSE data set, except that the message is ABORTED - CONDENSE FILE EXISTS. It is up to the user to decide if the data in the pre-existing data set should be used for recovery. Any such recovery would probably involve using the REVLPDS program.
- Handle full DIV storage when loading data from REVCATCH - was getting S0C4. ("REVCATCH" refers to the way line mode TSO data is taken from SYSOUTTRAP and loaded into DIV for fullscreen scrollable browsing. Look at the REVLISTC CLIST to see an example.)
R43.2 fixes the UCB address acquisition from the TIOT which became a bug with the 31-bit addressing conversion and which can cause an S0C4 abend.
R43.3 fixes the display of prompting panels when running as an ISPF application.
R43.4 completes the support necessary to process VTOCs on EAV and data sets residing in EAS which have format-8 and format-9 DSCBs replacing the format-1 DSCB.
R43.5 fixes more AMODE-31 glitches and adds the data set name to open file details in the display produced by the TCB / RB command. REVHIST has been rewritten to use the full Binder dialog API in all cases, and is now called under z/OS for PDS load modules as well as PDSE and HFS program objects. **-RED ALERT-** Also fixed is the REVEDIT data corruption of edited data by a CHANGE ALL command which caused some data bytes to be overlaid with x'FF' when using a data space to back the data. Sessions on pre-ESA levels of MVS were not affected.
R43.6 fixes a S0C4 abend when the OPERANDS or MSGID operand of FSHELP was used. This was exposed when running with AMODE=31.
R44.B (2012-October) rolls up changes from 43.6 onwards.
It is an MVS/370-only OCO beta or early release prior to GA.
Apart from bug fixes, the main changes include:
- A new SETUNZ command to specify the file attributes, thereby overriding the information in the ZIP file directory entry.
- Changes to the way member lists scroll after member selection.
- Using PDS subcommands to produce displays for the 'H' and 'M' selection code processing of load modules (via the REVUSPDS CLIST).
- Adding the BOUNDS primary command in REVEDIT.
- Show data in out-of-bounds columns in blue in REVEDIT.
- Adding the TE line command for text entry in REVEDIT.
- Adding the CUT and PASTE primary commands to REVEDIT.
- Recovering from PDS directory I/O errors during INFO processing, which includes the data set Delete function in REVLEV (data set list).
- Adding the M action code to REVLEV (data set list).
- Adding LEFT/RIGHT scrolling in REVLEV (data set list) so that all information columns can be viewed on insufficiently wide screens.
The BRVS (or B for short) undocumented operand has been added to the REVIEW command. Its use is intended to allow the browsing of virtual storage. When specified, the required first positional (data set name) operand is ignored. The data is displayed under the heading of ACTIVE, as per IPCS. About all it is currently good for is browsing the in-core MVS/370 nucleus.
The following z/OS-only fixes were introduced into the code base:
- For program PDSE directory displays, the member name operand of primary commands is now folded to upper case if there are no lower case characters in any of the member names.
- For UNIX directory displays, the entries read from a directory are now always sorted before display. Previously, if the SORT order was "sort by name" no sorting was performed, which could lead to an out-of-order display depending on subdirectory MOUNT points, leading in turn to unexpected behaviour for LOCATE commands.
Actually, the term "z/OS-only" really means "MVS/ESA or later".
Subsequent betas ran until R44.H.
R44.0 (2014-January) is the first R44 GA release - with source code.
REVIEW now incorporates a GIF decoder which adds GIF files to the PCX and BMP file formats that can be decoded and displayed on 3270 graphics terminals. Interlaced and animated GIFs are supported. Only one cycle of the animation is currently shown. NEWTOP can be used to manually trigger another cycle.
When programmed symbols are used for graphics, REVIEW prefers to load the code points into the internal screen buffer from which the 3270 data stream is built. This allows 3270 compression logic to also be applied to graphics data, and reduces the number of TPUTs issued. This scheme does not work well when the pictures are large enough to require more code points than all read/write storages can provide. The logic to build the 3270 data stream for these large pictures has probably been broken in this release, but hopefully it will be fixed in due course.
will now cause the current contents of virtual storage in your TSO session address space to be browsed. EQUATE and DROP commands have been added. LEFT and RIGHT are repurposed in this mode to control jumping through the storage address trace table. LPA and JPA loaded modules, as well as (under z/OS) nucleus control sections are automatically defined as usable symbols. LIST (or LOCATE if you prefer) now understands storage addresses specified much like as is done in TSO TEST. The symbol name X can be used for the current location, as per IPCS. % and ? can be used in the field preceding each storage word. No support for "above the bar" storage currently exists.
The BRVS operand mentioned above has been scrapped.
Browsing z/OS UNIX zip files is now supported.
Not mentioned under R43 above is the vertical scroll bar. When not running as an ISPF application, and when the PDS member list is more than a screenful, column 80 contains an indicator of the vertical scroll location of the member list.
In response to a request, member scrolling is now a bit different. Firstly, the member list scrolls less. The cursor is placed beside the member just processed, but that member's jump dot is blanked, so <enter> will just restore the cursor to home. This should mean that all members will always be visible when they can all fit in a single screenful.
R44.1 provides a few small adjustments:
- Avoid S013-34 abend during unzip when LRECL set by SETUNZ subcommand.
- Accept lower case member selection codes when running as an ISPF application.
- Address space virtual storage browse now uses the same translate table as file browse.
- Add extra function to the DISPLAY subcommand:
- Single character operand (which may be unquoted or a quoted string) specifies the code point to use to represent non-display characters. The initial setting is to use periods.
- A multiple character operand beginning with A specifies the 3278A display interpretation previously requested using the DISPLAY A subcommand. The new nominal operand is APL.
- A multiple character operand beginning with T specifies the 3278T display interpretation previously requested using the DISPLAY T subcommand. The new nominal operand is TEXT.
The plan for the future is to save your preferred non-display representative character in the profile data set.
R44.2 fixes an infinite loop when scrolling up from low private storage towards fixed low core under z/OS. Logic did not cater for partial page fetch protection. Also implemented is the ability for attention/PA1 to halt an in-progress SORT subcommand in REVEDIT.
Several MVS/370 ESP releases were issued in August and September 2014 with ESP6 being the last.
R45.0 (September 2014) rolls up the defects reported from Early Support Program up to the GA date.
- Reorganization of profile member contents, so previous PFK defaults will be lost.
- Support for picture search when ASCII ON is set.
- Explicitly check for and disallow a request to APPEND request to a PDS member.
- Issue RACROUTE for many non-VSAM data set accesses whenever MVS security is active.
- Assume access is denied when the RACROUTE return code is greater than 4.
- Add a new SB subcommand which is the same as SUBMIT but invokes the new REVSB CLIST to prevent line-mode terminal I/O.
- Support access to large PDSE members.
- Add START alias of SPLIT.
- Change PF2 default to START since SPLIT behaves like ISPF's START command.
- Reorganize RFE menu option numbering. Options 1, 2, 3.1 and 3.2 now exist in addition to options 3.4, 3.8 and 6.
- Support leading ampersand in command to retain command string in input area.
- Reorganize REVPDS CSECT's internal handling of directory entries.
- Display position number on the top line of the REVPDS member list display.
- Various program restructuring to reduce duplicate code.
- Remember more RFE stuff in profile members, such as most recent "other data set" history.
- Add automated EDIT recovery in option 2.
R45.1 includes the following changes:
- Fix display of ISPF statistics when 32-bit record counters are used.
- Fix S0C4 abend which preceded freeing the VTOC of a volume DSLIST.
- Expand the "other data set" history list from 10 to 16, and reduce the displayed list size to the number of entries that will fit on the screen. This fixes screen corruptions seen on 24-line screens.
- Include new data set attributes panel before CUT creates a new data set. The data set name is pre-primed with the previous output data set name, if any.
- New logical/parallel sessions (from SPLIT or START) will inherit the same screen size as existing logical sessions instead of using the size set by STSIZE which may have changed since RFE started.
- Output from REVIEW's CUT command is now written using BSAM instead of QSAM to improve I/O error recovery - mainly by eliminating unrecoverable abends that can occur when CLOSE flushes QSAM buffers.
- Enhance REVIEW's CUT processing to support F/V/U record formats.
- Add RFE option 3.3 which exploits REVIEW's CUT logic. Most things that REVIEW can browse can be copied, including VSAM and BDAM files. Record truncation is reported. Truncating blanks from fixed-length records is not considered record truncation by RFE. As a safety feature, copying members between undefined and defined record formats is not allowed, though it is for sequential data sets. Alias members are copied as real members, except if the alias is an OS/VS program and its real name member already exists in the target library, in which case its contents are not copied but the alias is assigned (with the userdata copied from the source PDS) to the existing member - even if the existing member is not the same version as exists in the source PDS. The pre-2010 ISPF option 3.3 copying convention should be observed: select the real members for copying, then select the aliases. Sorting the member list into TTR order before selecting the programs to copy may make the copying task simpler. Note that using an asterisk to select all members is not currently supported.
- The size of available but unused MVS/370 region virtual storage pages is displayed in the lower right corner of the screen - the last 12 bytes - if the last 13 bytes of the screen are all the same character and are not in an input field. It is shown in blue unless less than 64KB in which case it is shown in yellow unless it is less than 32KB in which case it is shown in red reverse video.
- Fix S0C4 abend in REVEDIT when new insert line has text added and is immediately used as the first line of a block line command.
- Allow REVIEW 'ACTIVE' TOP(hexvalue) to specify the initial virtual storage display address.
R45.2 includes the following changes:
- Option 3.5 is added, providing some ability to set the version, level and user ID for members, as well as deleting and creating statistics for selected members.
- Option 3.3 now supports the specification of a "from" member name of an asterisk and takes it to request the copying of all "from" members.
- Option 3.3 alias member copy support has now been regularized to the pre-z/OS ISPF option 3.3 standard. That is, if the alias's real member has not already been copied in this copy session then the alias is copied as a real member, but if the real member has already been copied then the alias is added without re-copying the member contents. The real name stored in the userdata of alias programs is now no longer used by option 3.3 - but still be on the lookout for programs with ?? in the AC column because it probably means that an alias program was copied as a real member.
- Under R45.1, when copying selected members using option 3.3, the output DCB would be closed after each member was copied. This meant that multiple type 15 SMF records were written, but since the same files (DD allocations) were used, the EXCP counts were cumulative. So, SMF post-processors adding up the EXCP counts would arrive at an inflated EXCP count. Now for a PDS-to-PDS copy (whether selected members or all members) the input and output files go through a single OPEN/CLOSE cycle which results in unambiguous EXCP counts and fewer SMF records.
- The SAF Router logic of the RAKF ESM was found to not look at the offsets used by RACROUTE when constructing a SAF Router parameter list, so RACHECK is used under MVS/370 to perform data set access checks. (The original pointers have flags in their high bytes while the newer pointers allow 31-bit addresses to be specified.)
R45.3 fixes MEMBER NOT FOUND conditions reported when browsing members after a REVEDIT OPEN (either View or Edit) does not succeed, such as when access is denied by the system's security component.
R45.4 includes the following changes:
- PFK settings saved in the $$REVIEW profile member will now be applied when REVIEW/RFE first starts up. This has been broken since R45.0.
- Changes to $$REVIEW settings made in option 3.4 will no longer be discarded.
- Under MVS 3.8J with JES2, the JES2 checkpoint and SPOOL data sets will be accessed to give improved access to jobs in the various queues, and access to SYSOUT of jobs without held output. Any job name filter beginning with an asterisk will cause all jobs to be listed.
- Option 3.3 now has additional settings to control whether existing members in the target PDS can be replaced or not, and whether the target sequential data set is to be extended or overwritten.
- Option 1 Browse will now show the status of the DATA setting even if it is OFF. The purpose of this setting is to allow access to the DATA operand of REVIEW when browsing non-partitioned files. For PDS members (and for UNIX files and for jobs in REVOUT aka option 3.8) use the S selection code for default operation (no DATA operand) and use the / selection code to request the display of the raw data without any interpretation by REVIEW.
R45.5 fixes MVS/370 REVOUT function for MVS systems with a JES which does not have x'02' in the SSCTSSID field. This includes MVS systems not running JES2, and those running JES2 without the TJES801 usermod applied. See http://www.j76.org/vs2/tjes801.txt
R45.6 fixes corruption to the recursion vector when cleaning up after an option 3.3 copy "from" data set has been specified. This corruption could lead to infinite looping when swapping screens, and S0C1 abends when terminating a logical session.
R45.7 fixes "fastpath" I/O reduction (and the total file byte count display), and fixes copying out fixed-length and variable-length records for PDS member offload (instead of writing out data from fixed low core). Menu data set name recall has also had cursor positioning slighlty improved, and option 3.3 has had the C and M primary action codes added, as well as a check to prevent copying a data set to itself. Options 1 and 3.3 have had option Y/N fields added or moved.
Changes made for the unreleased R45.8 are included in this release.
R46.0 (July 2015) delivers the ability to display member generations when looking at the member list for a Version 2 data PDSE which is allowed to have member generations. Displaying member generations of program library PDSEs is not currently supported.
The display of member generations is requested via the new GEN operand of the REVIEW command. ( GEN is not a valid operand when REVIEW is compiled for MVS/370.) GEN can be abbreviated to G.
Further, the REFRESH or REF command of the member list display (which causes the directory data to be refreshed from DASD) has two new operands: G and N. The G operand specifies that member generations are shown in the member list, and the N operand specifies that the normal display without member generations should be shown. Note that the G operand will be treated as invalid unless member generations are supported by the current library.
Member generations can be browsed by REVIEW, and data from such members can be saved to another data set using the COPYOUT (or CUT) command.
Thanks to Ed Webb and John Kalinich for input regarding exploiting the FLAG(PAGE0) option of HLASM.
R46.1 removes the old trick of searching for the TLD by following the FSA from TCBs up the parent TCB chain to silently discover if an ISPF environment is active or not. For an ISPF environment to be recognized by REVIEW, a call to program ISPQRY must issue a return code of zero. This also removes the pre-OS/390 2.10 method of obtaining the screen buffer location and cursor screen position.
R46.2 makes several minor changes:
- The FMTPRT command is added to REVIEW to provide manual control over whether SYSOUT colour highlighting is active or not.
- Note that FMTPRT also controls the truncation of trailing blanks when a COPYOUT (CUT) is performed with a target data set having variable-length records. This can save a lot of space, so FMTPRT ON may be useful even if the data is not a print file. If you want a COPYOUT to keep trailing blanks, ensure that FMTPRT is OFF.
- The requirement that member REVPROF is in the REVPROF PDS under MVS/370 for ISPF to perform the screen I/O is removed. (It is still a requirement that REVPROF is in the ISPPROF PDS under z/OS for REVIEW to operate as an ISPF application.)
- A glitch in the interaction between REVSRCH (FIND from the member list display) and RFIND in REVEDIT such that REVEDIT's RFIND would not subsequently find all occurrences of the current string has been fixed.
- REVOUT now allows an operand which begins with an asterisk to represent a request to show all jobs under MVS3.8J with JES2.
- RFE can now be invoked as an ISPF application.
- RFE primary menu options can be stacked by specifying them on the TSO command operand separated by semicolons.
- When running as an ISPF application, a check is made for the presence of the scroll field arrow. If it is present panel REVPANEL is used. If it is not present then the new panel REVPANL2 is used.
R46.3 makes several minor changes:
- The scroll field detection for selecting panel REVPANEL or REVPANL2 is fixed for wide screens.
- A check is made that panel REVPANL2 is present before it is used instead of REVPANEL.
- A REVEDIT open failure no longer prevents subsequent member browsing.
R46.4 was about impoving operability in the non-IBM freeware ISPF environment. For example, recursion detection had to be switched from looking at the caller's RB to looking at the caller's PSW address because REVIEW was branched to and not linked to by the ISPF invocation.
R46.5 was also mainly about the new ISPF which does not include a PDF component, so REVIEW and REVEDIT form this non-IBM ISPF's browser and editor. The REVISPF CSECT was moved from REVSUBS to REVSUBS2 and so is now only included in the 390 compile of REVIEW. Other changes include:
- Preserve the change-to string across edit sessions in the same logical screen, so it is the same as the search string in this regard.
- Issue a message when variable-length records with trailing blanks are detected by REVEDIT when reading the data to be edited.
- In several components, when a command with an invalid operand is entered, the command is no longer cleared, but is instead left on display with the cursor positioned to the invalid operand.
- The ASCII command was added to REVEDIT.
- RFIND and RCHANGE commands can now be queued by use of a PF key assigned those commands. For example,
CHANGE ONE TWO
when entered with PF5 (when RFIND is assigned to PF5) will function as
but the TWO string will be remembered as the replacement string so that PF6 (when RCHANGE is assigned to PF6) can be pressed to effect the change.
- The KEYS command (except when intercepted by IBM's ISPF) will now allow PF key assigned values be updated by overtyping.
- REVEDIT now implements software tabs using the new TABS command.
- REVEDIT now has an AUTOSAVE setting.
R46.6 delivers the following changes:
- The ability to have line labels has been added to REVIEW and REVEDIT.
- More options have been added to the LOCATE command in REVIEW and REVEDIT, and to the RESET command in REVEDIT.
- REVEDIT View mode now no longer automatically initializes the UNDO (and recovery) facility.
- REVOUT (RFE option 3.8) in a MVS 3.8 JES2 environment now by default uses direct SPOOL I/O to access held SYSOUT. The FIB setting can be used to force the use of TSO's OUTPUT command. The INPUT setting can be used to display non-SYSOUT SPOOL data sets.
- REVLEV (RFE option 3.4) is now able to process unqualified data sets which are data sets with names not entirely comprised of valid qualifiers not exceeding 8 characters in length separated by periods. (In the TSO and z/OS catalog context, these data set have invalid names.)
- Removal of the internal GETSTOR macro introduced with Release 43 to tolerate the differences between the GETMAIN macros of z/OS and MVS 3.8. (Before Release 43, the MVS 3.8 version of REVIEW was compiled on OS/390 or z/OS. Since Release 43 the MVS 3.8 version has been compiled on MVS 3.8.) An enhanced version of the GETMAIN macro is now used when compiling the MVS 3.8 version of REVIEW. This version of GETMAIN is shipped in usermod ZP60033.
- Other housekeeping and logic bugs have also been fixed.
R46.7 delivers the following improvements:
- The DESERV area size has been increased from 32KB to 512KB so that a much larger number of member generations can be listed.
- Member generations can now be selected for ISPF Browse and View.
R46.8 delivers the following improvements:
- When the R member selection code is used to restore a deleted PDS member, the STOW data is now moved to below the line as required by STOW. This change allows the member restore facility to now work on system levels newer than MVS/370.
- When RACROUTE is used to check RACF access to a non-VSAM data set before attempting an OPEN, a RACF violation will no longer be recorded by the system if access is denied. RACHECK processing under MVS/370 is not changed.
- The HEXX and HEXR display formats to show character data and its hexadecimal bit patterns simultaneously have been introduced. The original HEX command is still available, and may optionally be modified by the new HEXC setting.
- The size of the storage size acquired to build the 3270 data stream has been increased by 2KB to allow for the HEXX display.
- The non-ISPF default value of PF24 has been changed from RECALL to HEXC.
- ZIP directory caching for z/OS UNIX now caters for directories as large as 512KB. This allows most JAR files to be handled.
- The editor's RESET command was corrected to now also reset the last line occupied on the screen.
- RFE option 3.5 now supports 8-character userid overtyping.
R47.0 (February 2017) makes the following changes:
- The NAMESCRN routine was moved to its own CSECT called REVNAME. REVNAME is now called at strategic times to try to keep the screen name more relevant for its current option, instead of just once when the logical session is created.
- The characters shown in the HEXX display are now correct and are no longer repetitions of the first visible character of the record.
- REVEDIT now fully supports the &SYSUID symbol in the DSNAME value of a JCL DD statement for catalog status highlighting.
- In a MVS 3.8 JES2 environment, REVOUT (RFE option 3.8) will show the SYSOUT record count for jobs on the OUTPUT or PRTPUN queues. The total record count for all selected jobs is shown on the top line. Note that the counts do not include records in non-SYSOUT spooled data sets.
- RFE option 3.3 will now retain the primary input across a cursor selection of a data set name from the historical data set list.
- The inline GETSTOR macro has made a comeback to allow some storage requests to request storage above the line under z/OS, while requesting storage below the line on some system levels such as MVS/XA even when the system provides storage above the line. Note that the type of storage requested is decided at compile time and not at execution time.
- The MVS/370 load module is marked as AMODE31 to allow it to run on z/OS where it would otherwise abend with an S0C4. It will place various areas above the line, including data being held for edit. Note that not all functions of the compiled-for-MVS/370 REVIEW/RFE package function currectly under z/OS. Commands which look at system control blocks are liable to abend, but at least the basic data set processing and 3270 functionality works as expected
R47.1 fixes a few bugs and adds a couple of features:
- A REVIEW of a tape data set abended with S0C4 but RFE option 1 of the same data set worked. This was caused by a failure to perform screen handling initialization logic in the case of the REVIEW command.
- An attempt has been made to support the Large Block Interface for tapes containing blocks longer than 32760 bytes, but this remains untested.
- The indication has been replaced by to flag alias members so that the TTR of each alias can still be seen.
- Ampersands in instruction mnemonics are no longer flagged as assembler syntax errors.
- The editor's EXCLUDE command has new UPDATED and NOUPDATE operands to control exclusion based on whether records have been updated in the current edit session or not.
- Parsing of command keyword operands now correctly enforces minimum keyword abbreviations.
- Minor formatting properties of HELP members' Function sections have been standardized.
- PDS searching in RFE (but not REVIEW) could skip some members improperly PDS searching in RFE option 3.5 (member statistics) now functions.
- The infinite loop in the editor's RESET command when the command did not cause the reset of either commands or labels has been corrected.
- Segment overlay programs are now fully supported in terms of program library management. This means that they can now be offloaded and reloaded, and their program library can now be compressed when the R47.1 version of the REVLMOD and REVLPDS programs are also installed.
- $SEGTAB and $ENTAB are now also shown when scrolled right passed the end of CESD blocks in REVIEW.
- Some improvements in the handling of insert lines when tabs are active have been implemented.
R47.2 fixes a few bugs:
In regard to this last point, the editing means that the cached data does not exactly match what is read from disk, and so inconsistencies can become apparent when the cached data does not fully mesh with the uncached data. To improve this, the default cache limit has been increased from 192KB to 320KB, REVIEW will treat the data as fully cached when the end-of-file is first reached to avoid further I/O for that HELP display, and "early" trimming under z/OS is dispensed with. "Early" trimming is when some of DIV storage is freed based on an upper limit calculation which in turn is based on the input data set track count. This track-based calculation has been improved for MVS/370 by acquiring the extent count from the DEB instead of the DSCB, thereby improving concatenated data set support. "Late" trimming which occurs when end-of-file is reached for subsystem data sets (for which there is no external size indication) is retained even under z/OS.
- A Sense ID CCW is no longer issued by a REVLEV (RFE option 3.4) for a System/360 DASD (23nn) device type. This avoids the IEA000I command reject message. It is still issued for System/370 DASD (33nn) devices to report the device and control unit models. Thanks to Dave Kreiss.
- The variable-length GETMAIN performed after opening the data set to be browsed by REVIEW will now request storage above the line under z/OS when processing non-VSAM files including UNIX files. This area includes the READ buffer and the record address checkpoint area. This change improves the likelihood that a REVIEW of a tape data set using the large block interface (LBI) will succeed, especially when using a large screen size. The buffers for terminal I/O must, of course, remain below the line.
- If REVIEW/RFE detects that it is running under a CLIST, a new TSO I/O stack will be created for the session, and the original stack will be restored when the session terminates. This change will prevent TSO commands invoked from within REVIEW accessing and removing input on the stack which was current when REVIEW/RFE was invoked.
- Earlier claims that complete support for segment overlay programs had been added were premature. The support now becomes complete with the change to allow RFE option 3.3 to correctly copy segment overlay programs. Here are the minimum software levels necessary to correctly process segment overlay programs:
- To compress the program library: REVIEW R47.1 and REVLPDS R47.1.
- To offload overlay programs: REVIEW R47.1.
- To reload overlay programs: REVLMOD R47.1.
- To copy overlay programs: REVIEW R47.2.
- REVIEW has a data-in-virtual (DIV) capability to cache data in virtual storage to reduce I/O after the data has been read once. This is exploited for a number of facilities including:
- accessing related IDR data when formatting CESD data when scrolled RIGHT past the end of CESD blocks.
- holding formatted ZIP archive directory entries.
- browsing subsystem data sets (because REVIEW assumes that NOTE/POINT is not supported by subsystems).
- holding edited TSO HELP data when REVIEW is operating as a fullscreen TSO HELP processor. The editing consists of removing HELP source comment records and )I (INCLUDE) control statement records.
- Assembler listing source code syntax-based colouring now supports listings where the source statement number exceeds 99,999. The need for this was discovered when looking at the listing for REVIEW when assembled on z/OS.
- Coloring the JES2 job log blue in REVOUT (RFE option 3.8) has been extended to z/OS. The overly conceited scheme of comparing the job identifier to the temporary data set name low-level qualifier did not account for the extra qualifier of H01 being appended under z/OS.
- REVEDIT JCL syntax highlighting for cataloged and uncataloged data sets named with DSN= and DSNAME= now process &SYSUID correctly under z/OS. Previously, this worked under MVS/370 but used an incorrect ALET with the z/OS addressing.
- Internal messages related to member errors will now report the correct member name more reliably.
- In scenarios where a sequential source of input is required and a PDS data set name is supplied, a member selection list can be presented from which the user can select a member. Cases where the member has a name considered invalid by DAIR caused screen display errors and earlier versions of REVIEW often abended. To fix this, the name of the selected member in parentheses is appended to the data set name, and the input is then processed as if the user had typed in the complete PDS name and member name specification. Note that in these scenarios it will not be possible to process a member with a name which is considered invalid by DAIR, even though other REVIEW and REVEDIT functions may be able to process such members without raising an exception.
R47.3 corrects assembler listing statement number validation so that assembler listing syntax highlighting works for statements numbered less than 10,000. DSNC ON in REVEDIT has also been fixed to set the correct internal flag.
R47.4 fixes a couple of possible S0C4 abends:
- When searching for lower case characters during input, REVEDIT was not correctly handling the case when the data length was a multiple of 256.
- For large screens, the acquired TPUT buffer was not large enough to cater for the HEXX display, while HEX and HEXR were not affected.
R47.5 has a couple of small changes:
- Option 3.4 (REVLEV) now shows the correct space allocation for multi-volume data sets. (Thanks, Shelby!)
- Option 1 can now browse virtual storage when the data set name of 'ACTIVE' is specified.
R47.6 has a couple of small fixes:
- A command with an invalid operand in FSHELP will no longer obliterate the primary command input area. (Thanks to John K.)
- REVEDIT JCL syntax highlighting will now correctly highlight an invalid character in a data set name, thereby sometimes avoiding an S0C4 abend. (Thanks to Peter G.)
R47.7 delivers several bug fixes and a couple of new features.
Some of the less obscure defect-fixing improvements include:
- Improved I/O stack handling for parallel sessions, both when swapping sessions and terminating sessions, reducing the problems encountered when running RFE under a shell-type CLIST.
- Fixing the S30A abend encountered when browsing zip archives under z/OS. This abend was first discovered by browsing z/OS UNIX jar files. It was caused by moving unzip working storage above the line, without also changing the FREEMAIN R to FREEMAIN RU.
- The creation of parallel sessions by a TSO RFE command, which includes SPLIT and START command processing, and the termination of parallel sessions no longer have any time windows where fullscreen mode is turned off, thereby reducing the chances that line mode messages such as job end notifications are lost from user view without the traditional three asterisks requiring an addtional <enter>.
- The point and shoot facility (where the cursor is placed on a data set name on the screen at the time a TSO REV command is issued) will now also work for a format-8 DSCB (as it does for a format-1 DSCB) when a VTOC is being browsed. Note that in the case where a VTOC is being browsed, the cursor does not have to be placed over the data set name, but merely on the line showing the record having the relevant data set name as its key.
- REVEDIT assembler source code syntax highlighting will now correctly handle the case where two consecutive quotes are used in a string to represent a single quote, and when the first such quote is in column 71 and the second such quote is in column 16 of the continuation line.
Two new features suggested by Peter Glanzmann are now implemented:
- Assembler B data type items are now presented as binary digits when DSECT formatting is activated. An underscore is used to separate the binary octets of each byte in the data item.
- The new RDW command will cause the display of record descriptor words when set to ON. The INVALID COMMAND message will be shown when RDW is issued and RDWs are not present. RDWs are only deemed to exist when records are read using a DCB which specifies a variable-length record format. Also note that for multi-segment spanned records, the value shown as the RDW will have been constructed and will represent byte contents which may not actually exist in the data set being browsed.
R47.8 mainly delivers bug fixes. Changes are:
- The primary command area will now vary in size according to width of the screen. This will allow longer commands to be issued on wide screens.
- The maximum RECALL command length has been increased from 50 to 90 characters.
- RECALL processing now dynamically detects the end of the primary command input area, truncating recalled commands if necessary to avoid corrupting the screen layout.
- Recalled commands will not be erased until after screen reshow processing so that pending line mode messages do not cause the recalled command to disappear before being presented for executing either with or without further editing.
- Glitches in FIND logic relating to column numbers introduced with the RDW command have been corrected.
- MVS/370 RFE main menu graphics displays are now centered when being shown on wide screens (instead of always being in specific columns). And for screens of at least 132 columns and 47 lines that have no usable graphics capability, the assignment of real storage frames is represented at a scale of one screen character location per 4KB page frame.
R47.9 changes are:
- The column number labels for the REVIEW browser's ruler line can now display 6-digit column numbers, which can occur for data sets with an undefined record format created by the large block interface.
- When a volume is specified for a REVLEV (RFE option 3.4) data set list, free space statistics accumulated from the format-5 DSCB chain are shown under the totals line for the listed data sets.
- Data sets found to have the RACF protection indicator set in the VTOC will have an R displayed between the CREDT and EXPDT columns.
- A defect in REVPANEL/REVPANL2 ISPF panel selection introduced when longer command lines for wide screens was introduced in R47.8 has been fixed.
- Support has been added for 8-byte TSO user IDs and data set name prefixes introduced with z/OS 2.3.
R48.0 (February 2018) introduces the following enhancements:
- The REVEDIT FIND family of subcommands - which includes FIND (or F), FINDNOT (or FN), EXCLUDE (or EX or X), EXNOT (or EXN or XN), and CHANGE (or CHA or CHG or C) - now supports additional operands to restrict the records which are processed. Firstly, two line labels can be specified to limit the range of records to a subset of the total body of records, and secondly either the UPDATED or NOUPDATE keywords can be specified to limit processing to only those records which have been updated this edit session, or only those records which have not been updated this edit session, respectively. The minimum abbreviation for these two new keywords is the first 3 characters.
- UNIX path names beginning with a tilde (~) will be recognized as specifying the home directory (as suggested by Bruce Koss of Wells Fargo). This applies not only to the path specified as the operand of a REVIEW TSO command, but also to navigational jumping where, when a UNIX directory entry list is being displayed, a new fully-qualified directory path is entered into the primary input area to specify the directory that REVIEW should jump to.
R48.0 also fixes the following problems:
- After REVEDIT exits and returns to REVIEW after an EDIT request to edit the data set being browsed, the heading line was not restored to the value it should be for the REVIEW browser.
- When running without APF authorization (which should be all the time unless you are browsing a VVDS or BCS) on a system using the ACF2 security product, the original form of RACROUTE will be used to obviate the need for security administrators to add GSO rules to allow REVIEW to access checks for data set access while unauthorized.
- A browse search in the backward direction (REVIEW FIND PREV or LAST) did not search the first 4 data bytes of variable-length records when RDW OFF was set.
- REVEDIT edit recovery allocated the PDS of the member being edited exclusively instead of shared, and did not free it at the conclusion of the edit session.
- It was not possible to copy a PDS member in RFE option 3.3 to a differently named member in the same PDS. For this to work now, the to and from member names must be supplied with the data set name.
- A CHANGE ALL of only blank(s) to a null string caused an infinite loop in REVEDIT. The solution to this is to limit such changes to one per record per CHANGE ALL command.
- When HILITE OFF was set in the profile when an edit session started, HILITE could not be activated immediately by command, but only by exiting the session such the the profile was updated, and then restarting the edit session.
- If the REVIEW command specified a z/OS UNIX file, and then the DIR command was issued, a corrupted directory display would result.
- The TSO HELP for REVEDIT FIND incorrectly stated that the default string type was C whereas in fact it is T.
- When performing a CHANGE command in REVEDIT:
c cat dog
will always cause the replacement string to be DOG no matter what CAPS is set to.
c cat c'dog'
will always cause the replacement string to be dog no matter what CAPS is set to. However
c cat t'dog'
c cat 'dog'
used to always cause the replacement string to be DOG no matter what CAPS was set to, but now both of these commands will set it to DOG when CAPS is ON and dog when CAPS is OFF.
R48.1 addresses five issues:
Firstly, an S0C4 abend when formatting CESD blocks has been fixed. CESD blocks are formatted when scrolling right past the end of the blocks to show the details of each ESD entry correlated with other data extracted from the translator and user IDR logical records. This abend occurred when in 31-bit addressing mode and the load module member had long IDR logical records. The high byte of GPR5 had been appropriated for other uses while it was saving the GPR15 value, from which an address placed in GPR14 was calculated, which caused the abend when the high address byte was lost. This bug is years old.
Secondly, to allow some sort of control over where TSO users can allocate new data sets (anyone remember PCF II?), several of the new data set allocations performed by REVIEW/RFE will now be tried first using the TSO user's default unit name as supplied from the user's UADS member or RACF TSO segment or equivalent, as appropriate.
One example where no change has been made is the temporary data set used by a REVEDIT SUBMIT command which first uses UNIT=VIO but will retry using UNIT=SYSALLDA if the first attempt fails. Another example is the CONDENSE data set used by RFE options 3.1.C and 3.4.Z where UNIT=SYSALLDA is still used, but it is expected that normally the CONDENSE data set will only have a short lifetime during which there is no user think time.
One example where the default unit is now used is the allocation of the data set used to hold SYSOUT data for browsing in REVOUT (or RFE option 3.8). Previously, UNIT=SYSALLDA and SPACE=(CYL,100) were used in the dynamic allocation request, with a retry reducing the space to SPACE=(CYL,(5,2)). Now, the initial request specifies the default unit name with SPACE=(CYL,(200,20),RLSE). The first retry changes the unit to SYSALLDA, and the second retry sets SPACE=(CYL,(5,3),RLSE). Since the data set is allocated, opened, loaded and closed at machine speed, the RLSE setting means that users will not be idly browsing data sets occupying vast DASD estates unless that acreage is actually needed to hold the volume of data being browsed. Also, the initial primary space quantity of 200 cylinders eliminates those pesky 2314 OS/360 SORT volumes from the DADSM volume selection process.
Thirdly, unzipping from data sets with variable-length records would abend with S0C4 as a result of collateral damage flowing from the introduction of the RDW command. This is now fixed.
Fourthly, FIND with a picture search string was not working properly to the extent that blanks and semicolons in picture strings were treated as generic mask characters and not as themselves. This was caused by using a single translate table to handle both EBCDIC and ASCII generic masking characters. This was fixed by using two separate translate tables. Improved housekeeping also means that ASCII picture searches are also now functional in REVEDIT.
Fifthly, as a result of advice from Wally Mclaughlin, GETLINE macro settings have been improved to eliminate various misbehavings in a CLIST environment pertaining to the I/O stack.
R48.2 caters for handling program members with a residence mode of 64:
- Member list displays will show RMODE=64 programs in yellow.
- MAP displays produced using the Binder API Version 1 ESD interface will now show RMODE=64 as 64 instead of MIN.
- For segment overlay programs, this type of MAP display will now also show the segment overlay region (as well as the segment) in which sections reside. [Sections are link edited into segments, and segments are loaded into specific regions within the program extent when fetched into virtual storage. A segment overlay program may have one or more regions.]
R48.3 brings numerous fixes and several enhancements.
- Text extent records are no longer shown in a program object map to improve readability
- REVEDIT JCL syntax highlighting now recognizes the new statement types introduced in z/OS version 2.
- The handling of prefixing FIND and CHANGE commands with RFIND and RCHANGE has been regularized. This means that there is now no dependency on PF key usage, and that the command will behave the same whether executing under ISPF or not.
- REVDIV has been reworked so that DIV storage is now expandable. As a result, smaller sizes can be requested without limiting capability. One benefit is that module maps of large complicated programs can now run to completion without exhausting DIV storage.
- The ECTRTCD field is now maintained when appropriate so that CLIST &LASTCC processing can function correctly.
- The data byte count shown on the BOTTOM OF DATA line is now accurate up to 4GB minus 1. As always, this count does not include BDWs, RDWs, record-ending CRLFs, and other bytes used for data control.
- REVIEW support for browsing multi-volume sequential data sets, which includes sequential concatenations comprised of BASIC and/or LARGE single-volume and/or multi-volume data sets, now allows seamless up-and-down scrolling across volume boundaries. The volume serial shown on the top line will be that of the last record shown on the screen. The RECORD FROM BLOCK AT LOCATION details which can be shown on the right of the screen for each record will now show a TTRK value instead of just the TTR, where K is the relative volume number which is zero for the first or only volume. Note that TTTR values will continue to be shown when the data set has the DSNTYPE=LARGE attribute. Note that REVIEW does not support concatenations of unlike data sets, so all of the data sets in the concatenation need to be on volumes from the same device class and have compatible DCB attributes.
Fixed defects include:
- The new data set attributes specification panel will now accept record formats with additional characteristics, such as carriage control, and spanned records or standard blocking. (Defect reported by Charles Bailey.)
- When exiting after searching a program PDSE, abend SC0D at task termination (caused by the storage of an open DCB being freed) will no longer occur.
- RFIND/RCHANGE cycles to vet the change before making the change no longer skip the current found data when searching in the backward direction.
- When a member in the non-first library of a concatenation was edited, the top line indicated the correct data set, the correct data set name was used in member serialization, but the data set from which the member was read and to which the new data was saved was the first data set in the concatenation. This is now fixed.
- The data set information display will no longer abend when the subject data set is a PDSE with a type (DATA or PROGRAM) but with no version information available.
- More work to cater for the RDW ON/OFF setting has been done, this time to keep the column range specification in the PDS search panel consistent with that of the REVIEW browse FIND command.
- The data set information display will no longer attempt to obtain the format-4 DSCB from the VTOC to obtain the number of tracks per cylinder when processing VIO data sets (because the VTOC does not exist) or on MVS/ESA or later system levels at all (where a cylinder always has 15 tracks).
- Fix erroneous recursion status indications by maintaining a count of concurrent or parallel sessions, thereby eliminating sessions that cannot be swapped to, and abends at termination time.
- FSHELP will only blank columns 73 to 80 of displayed HELP member records if they contain sequence numbers, thereby avoiding the loss of HELP text if it happens to extend beyond column 72. (EX DRK)
- RFE option 6 is no longer selectable when RFE is operating as an ISPF dialog, as it does not function correctly in that environment. In fact, the original design was that RFE would never run as an ISPF application, and was coded accordingly, but that decision was reversed when subsequent requirements arose.
R48.4 brings a couple of enhancements and a few fixes.
The main enhancement is that member name masking is now available in three particular usage scenarios, none of which involve any extensions to the syntax that can be used to invoke REVIEW/RFE from the READY prompt. In all cases, the length of the member name mask is limited to 8 characters, and the available masking characters are an asterisk for zero or more non-blank characters, and percent for any single non-blank character. Generic masking characters may be omitted to request a specific member. Be aware that when an asterisk or percent is encountered in a member name specification, some syntax checking is bypassed, so it may enable the selection of members with non-standard names in some cases.
- When viewing a data set list in option 3.4, a new MEMBER (or MEM for short) primary command is available to search all partitioned data sets in the list for a member with a name which matches the mask. Processing commences with a RESET action, so last command indicators are cleared. Searched libraries are flagged with a last command indicator of an asterisk. If the asterisk is shown in red, the data set could not be processed for some reason. Libraries with at least one matching member will be shown in white or high intensity in the data set list.
- When viewing a member list, a new MEMBER (or MEM for short) primary command is available to tag all members which match the mask and untag all members which don't. There is a similar command called PATTERN (or PAT for short) which searches member names for a string match. Effectively, PATTERN performs the same processing as MEMBER after prepending an asterisk if the mask does not start with a generic masking character, and appending an asterisk if the mask does not already end in an asterisk. So MEM *ABC* does the same search as PAT ABC (as does PAT *ABC*).
- When RFE presents a data set specification panel which allows a member name to be specified, a member name mask may be used to filter the members selected for display in the member selection list. Generic masking may not be permitted for some utility actions.
And now to minor enhancements:
- The H (for History) member selection can now show some Enterprise PL/I compiler settings.
- A MAP of non-migratable program objects will no longer display labels that have the same name as the section they are in when they are at section offset zero to improve the signal-to-noise ratio.
- RFE data set and command history items are now tab-selectable (where previously the arrow keys had to be used to position the cursor).
The following defects are now fixed:
- When exiting from a REVIEW PARMLIB FILE session an S0C4 abend could occur under z/OS. This was due to an incorrect work area being used for the deallocating IEFPRMLB macro.
- An UNZIP selection could encounter an S0C9 abend from a CVB instruction where the input decimal number was too large. Logic which bypasses this issue is now used.
- The hexadecimal data displayed with HEXX ON was completely irrelevant even though the character data shown on screen was correct. Data housekeeping gone wrong.
- Minor cursor placement improvements are made for RFE menus when bad data set and volume input are encountered.
- RFE option 3.4 (REVLEV) will now correctly order sorts by date when the dates range across the most recent (at the time of writing) century boundary.
- The progress bar display for PDSE program library searches has been fixed.
R48.5 changes are:
- The H (for History) member selection code can now show some Enterprise COBOL compiler settings. ARCH and OPT settings are now shown for Enterprise PL/I, Enterprise COBOL and XL C/C++.
- The S430-03 abend when a CUT subcommand is processing a z/OS UNIX file is now fixed.
- The member name mask fragments of ** and *% are no longer rejected as invalid syntax. Internally, multiple consecutive asterisks are condensed to a single asterisk, and asterisk-percent (*%) fragments are converted to percent-asterisk (%*).
- RFE option 3.4 (REVLEV) now has a new command called SEARCH (alias SRCHFOR) which can searched listed data sets for specific data.
R48.6 changes are:
- The keyword operand tables for the DELETE and SORT commands in REVEDIT are fixed to restore proper functionality of those commands.
- A REVCREAT new data set attributes input panel layout glitch is now corrected.
- On those occasions when REVPDS would display a selection code legend line on the bottom screen line, those displays will now be based on the ISPF visible line count rather than the screen line count. This change may allow the line to be seen even when ISPF is displaying a SWAP action bar and/or PF key values.
R49.0 (July 2019) changes are:
- Add addressing mode switching logic to the MVS/370 version for MVS/XA-like operating systems.
- Make more display scenarios aware of the visible line count under ISPF, rather than always using the terminal's line count, thereby improving vertical scrolling when the SWAP action bar and/or PFK values are on show.
- Enhance the display produced by the JPA (or CDE) command for z/OS 2.3 (and later) when the screen has at least 100 columns.
- Add support for native 3270 partial screen updates and TGET NOWAIT. This is used by the RFE main menu display under MVS/370 to update resource status displays without user interaction.
- Fix processing of Z390 extended fields in zip file headers.
- Improve zip archive comment extraction and display, especially for ZIP64 archives. Note that the unzip logic is not aware of ZIP64 extensions.
R49.1 fixes the following problems:
- The TCB (or RB) display would also show TCBRBP as the address of every RB under the task.
- The JPA (or CDE) display could S0C4 abend for z/OS 2.3 and later.
- REVEDIT would S002-A8 abend when saving a PDSE member with more than 15,728,639 (x'17FFFF') records. Reported by Tom Conley.
- Only up to 7 digits could be shown for the number of lines in each exclusion block.
- Only up to 9 digits could be shown for the match count of a FIND ALL command.
- PDSE space abends would cause a S0C6 abend because the CHECK macro branched to address 1. Sx37 abends can close the DCB, but this is historically delayed until the CHECK macro is issued. For PDSEs any space abend can be encountered at the time of the WRITE macro and so the DCB will be closed by the time the subsequent CHECK is issued.
R49.2 fixes the following aspects of asynchronous partial screen updates that were really only evident when running MVS 3.8:
- REVCMPBF was not performing 3270 compression because the expected triggering RA order was not present. SBA orders not specifying location 0 will now enable compression as well.
- Field attributes were not being decoded properly, causing the menu option names (1, 2, 3, etc) to become invisible.
- The instantaneous available frame count (AFC) has now been added to the MVS 3.8 non-graphics large screen primary menu real storage display.
R49.3 provides minor enhancements to some displays:
- Assembler listing syntax highlighting has improved handling for continuations when breaking an unquoted operand, an operand within quotes, and comments. Note that some glitches may well appear when the start of a continued statement does not appear on the screen. While open code is shown in green and red, generated code in blue and pink, a new third red and pink scheme is used for inserted code.
- The JPA or CDE command will now show the data set name more reliably under z/OS 2.3 and later on screens with at least 116 columns.
- The TCB or RB command will show the instruction length count (ILC) and interrupt code for request blocks, will use the full screen width when showing load list element program names, and will show all data set names for open BPAM DDs.
- Both JPA and TCB will now correctly adjust their displays for any hidden ISPF lines such as for PFSHOW and SWAPBAR etc.
R49.4 provides minor functional enhancements and fixes:
- NEWTOP 0 for sequential data sets has been fixed - it was broken when full support for concatenated and multi-volume sequential files was added.
- The global area (recursion vector and recall stack) is now explicitly freed upon termination of the last parallel REVIEW session to fix a memory leak under ISPF on MVS 3.8. (Thanks, Wally.)
- The TCB / RB command's display of data set names for open sequential files has been corrected.
- When spool file contents are being displayed by directly accessing the JES2 spool, records longer than 132 print columns will no longer be truncated. (When such files are displayed by using the TSO's OUTPUT command, OUTPUT will wrap records longer than 132 print columns to the next record.)
- A rare unzip problem with REVIEW's inflate logic has been fixed.
- A REVEDIT screen corruption when displaying excluded lines with CAPS OFF has been fixed.
R49.5 provides minor functional enhancements and fixes:
- Unzipping binary data to fixed-length records will now not create an extra record when the data is an exact multiple of the record length.
- The formatting of a zip archive comment will now limit the length of comment handled to avoid overlaying other items in working storage.
- Dynamic storage management for REVPDSE has been revamped so that instead of acquiring up to 768KB below the line for working storage and for holding directory data, only actual working storage is acquired below the line while up to 3MB is acquired above the line to hold directory data. This reduces BTL storage usage and also allows the display of larger numbers of members. Under both the old scheme and the new scheme, unused storage not needed to hold directory data is freed before the member list is displayed. (Thanks to Michael Fleißig for reporting use case experience dealing with PDSEs containing tens of thousands of members.)
R49.6 provides minor functional enhancements and fixes:
- DSINFO will show COMP and ENCRYPTED when data sets have those attributes.
- DSINFO will not report OBTAIN failures for volumes after the last volume containing data for multivolume data sets - the cause of such failures being that the data set has never had to expand to that volume.
- STAX admin has been revamped with the current logical session now always "owning" the attention exit.
- For MVS/370, when TSO commands do not issue a STAX, an attention interrupt will cause REVIEW/RFE to detach the command's subtask causing it to S13E abend.
- For MVS/370, whenever REVIEW/RFE is running APF authorized and an AC=0 command processor is to be attached, SYNCH will be used to become unauthorized, thereby avoiding potential S306 abends.
- For MVS/370, attached TSO command processors will be covered by an ESTAI to prevent a subtask abend yielding a READY prompt, which would simply require an <enter> to restart the main REVIEW/RFE task if the TSO command abended. If the TSO command does abend, some summary or indicative dump data will now be displayed via write-to-programmer.
R49.7 provides minor functional enhancements and fixes:
- Fixed the annoying (for me, at least) BLDL error message when browsing a zip archive with a comment exactly 78 bytes long.
- Fixed the glitch where RFIND would not advance when browsing variable-length records and the cursor was moved back to home. This was most noticable when repeating FINDSMF while browsing a sequential data set.
- When SMF ON is set, FINDSMF will now highlight the record type of the found record using reverse video. This assists with tracking progress through a block of consecutive records of the same type.
- Additional PL/I compiler settings are now included in the display generated by an H selection code of Enterprise PL/I executables.
- Commands in error are preserved on the command line for user fix-up for additonal reasons above the previous single reason of invalid operand. However, commands in error are never left on show under ISPF.
- With all that logic to decode .PCX, .BMP and .GIF images hardly ever being used because hardly anyone has 3270 graphics support turned on, a REVIEW of such image types will now result in a "pixel zoom-in" or extreme close-up where each pixel will occupy a character location on the screen. Left/right and up/down scrolling can be used to scroll around the image bitmap. GIF animation will not be processed in this display mode. This display mode can be suppressed by the DATA operand.
- The SSI display of PDS load modules has been fixed - only the high 3 bytes were shown after 2 leading zeros.
- The COPY command of REVED now allows a data set name to be specified as the command operand, allowing the data set prompt to be circumvented as long as no errors are encountered.
R49.8 fixes a S30A-14 abend when attempting to REVIEW a supported image type (PCX, BMP, GIF) on systems which support 31-bit addressing. This abend occurs even if the terminal has no graphics capabilities. The relevant FREEMAIN type has now been changed from R to RU.
R49.9 fixes problems with the SEARCH primary command of a data set list:
- The modal display of the No entries to sort message when a PDS with no members is encountered is eliminated.
- An S0C4 when the last data set is not searchable is fixed.
R50.0 (April 2021) changes are:
- The REVPROF DD is no longer used for the profile library under MVS/370. ISPPROF is the DD used for profile storage under all operating systems. Copy your REVPROF members to your ISPPROF data set if they are different.
- Numerous changes to REVEDIT. The new commands are:
- COMPARE - compare edit data with data set contents.
- HIDE - do not use a screen line to show EXCLUDE blocks.
- PRESERVE - set the minimum output length of variable-length records to be the input length, thereby preserving trailing blanks.
- Message lines can now be generated among the scrollable edit data lines to hold:
- the output lines generated by the PROFILE command to show current settings. PROFILE now has an optional numeric line count operand.
- records from a data set that were not matched to current edit data.
- You can "keep" message lines as data, or "make data" from message lines with the new line command K (alias MD, block with KK alias MDD).
- Changes to the NUMBER command:
- The numbering of variable length records is now supported.
- NUMBER can be either ON or OFF and either STD or COBOL.
- Fixes include:
- Fix CVB instruction S0C7 by having a new exploiter of LVLINE do the validity checking the way older LVLINE exploit code already did.
- Under ISPF, use ZSCREEN for the logical session number because the RFE session number will always be 1, thereby improving recovery and UNDO/REDO availability in REVEDIT running as an ISPF application.
- Fix S0C4 with TE line command by updating the subroutine to use the correct line count register which was changed a while ago.
- Fix S0C4 after requesting to swap to a non-existent session.
- Properly suppress the PDS search progress bar display when performing a SEARCH of a REVLEV (RFE option 3.4) data set list.
- No longer reset the attention interrupt flag after a TPUT when the keyboard is locked so that a data set list SEARCH can be interrupted. Note that a SEARCH searches all data set types that can be browsed by REVIEW, so this includes VSAM.
- Reinstate the REVEDIT CHANGE command (command table entry ordering glitch - C, CHA and CHG remained functional).
R50.1 fixes a few problems:
R50.2 fixes a few more glitches:
- RFE 3.4's MEMBER (or MEM or M) command now works again.
- The NOT sign selection code to permanently and irrevocably delete a PDSE member now also works for member generations.
- Housekeeping has been fixed to ensure that member list processing for REVEDIT COPY (when a PDS/PDSE is specified without a member name) is insulated from the primary date set member generation display status. In particular, the REVEDIT COPY member list will no longer allow the display of member generations since they cannot be successfully copied from, because they cannot be allocated to a DD processed by QSAM.
- REVEDIT data space handling has been fixed to no longer produce S0C4 abends from PROFILE and COMPARE X commands, and to not corrupt the edited data if a line is moved or deleted.
- Previous STTMPMD macros were commented out to avoid problems at the OS/390 2.4 level. That OS release has long gone, and since I am now using TSO/E's Session Manager again, the STTMPMD macros are now restored.
- A new SM global command can now be used to manually control whether line mode messages are to be shown under Session Manager control or not. The setting is now saved in the profile data set.
- Dialogs requesting attributes for new data sets will now accept a block size of zero on MVS/ESA and later systems. These dialogs will now also not generate incomplete screen updates under ISPF.
- The member list display for program object PDSE members has been changed so that the first column is now the member name and not the real member name. A new Alias-of column has been added to show the real name of alias members, which makes it more like the the regular PDS member list display.
- The non-RECFM=U PDS member list display (which typically displays ISPF statistics) has a new wide screen format which is used whenever the screen has at least 112 columns. This format is less cluttered by spacing the item columns out more. The extra width also allows 4-digit years to be shown which should make it more obvious that a year-month-day date format is being used.
- The member list display of IMS FORMAT and ACBLIB member userdata has been restored after it was lost with the member list housekeeping reorg of R45.0.
- Numeric operands of commands will not be deemed numeric if the length exceeds 15 characters or if the numeric value exceeds 2147483647, thereby avoiding possible S0C7 abends.
- A S0C6 abend in SETUNZ processing has been fixed.
- An unzip LRECL override set by SETUNZ will now take precedence over an LRECL supplied from the zip header extra field.
- Extraneous null records are no longer generated when maximal length records are unzipped.
- During an unzip, a test for an abend will be made after each PUT. This will allow an unzip to terminate gracefully if no more space is available in the output data set instead of abending the whole REVIEW session.
- Invoking ISPF Edit is now allowed for PDSE V2 member generations. (Invoking ISPF Browse and ISPF View were already supported.)
- Invoking REVEDIT (for both View and Edit) is now supported for PDSE V2 member generations.
- The SM command now supports the ? operand to display the current setting.
R50.3 fixes a couple more defects:
- When excluding lines in a View or Edit session, the reported number of line(s) excluded will no longer be double the actual excluded line count.
- RFE option 3.3 functionality for copying members from a library with ISPF statistics has been restored by moving an internal work area to prevent a storage overlay. The symptom was an S438 abend. This defect was probably introduced with release 50.2.
R50.4 fixes yet more defects:
- Left/right positioning to display found text in a REVEDIT session will now no longer scroll too far right.
- Using the E or EDIT primary command in the member list display to create a new member caused a screen corruption when the member list is reshown after the edit session has created the new member. This was caused by the vertical bar which indicates the displayed member range extending past the end of the screen into the shadow buffer, thereby causing a set-attribute--symbol-set order to request an invalid symbol set (triggering PROG 751 in PCOMM). Rather than fix the underlying algorithm, logic was added to back up the ends of the vertical bar by a line whenever they are past the end of the screen.
- The ability of a REVEDIT COPY command to successfully copy a member chosen from a member selection list has been restored. The defect's symptom was a REQUEST CANCELLED message after a member was selected with an S or /.
- The SUBSYS operand and non-zero values of the TOP or TTR operand are now ignored for the REVED command. This is significant because REVED uses REVIEW's PPL (parse parameter list) - and so those operands are syntactically valid - and when a non-zero initial TTR was specified for a PDS without a member name, the member list display was bypassed and the edit session was initiated. If the data was saved a member with a blank name was created.
Copyright © 2003-2017 Prycroft Six Pty Ltd - ABN 17 006 544 636- All rights reserved.