Prino's z/OS Tools and utilities

If you've stumbled upon this page of Prino's site by accident, you may well wonder why the colours are, let's say, somewhat unusual...

Well, like Mark Zelden's MVS Utilities, this part of Prino's site is related to mainframes, and because the TUI on those systems uses only eight colours, yours truly decided, love it or loathe it, to follow Mark's lead and just use those eight colours...

And like Mark's site, this site also comes with a disclaimer and a note on ASCII translation.

The Tools and Utilities

The EHIxxxx exec's

The first set of ten execs/edit macro's contains six routines to convert "legacy" languages,

  1. z/OS assembly language,
  2. COBOL,
  3. z/OS JCL,
  4. PL/I,
  5. REXX, and
  6. ISPF panel source,

into HTML, one routine to convert most of the output of SuperC to HTML, one routine to convert anything into HTML, and two routines to provide general support and help for all of the above.

The five "legacy" language processing edit macro/EXEC's are:

EHIASM
EHICOBOL
EHIJCL
EHIPLI
EHIREXX
EHIPAN

The seventh edit macro/EXEC is

EHISUPC

The eight edit macro/EXEC is

EHINONE

The final, ninth and tenth, execs are

EHIHELP
EHISUPP

Formatted Browse

Calling the second set of EXEC's, panels, a skeleton, and some PL/I code "Formatted Browse" doesn't do justice to this set of tools, but as they started life as "Formatted Browse" way back in 1991 (although the first date in the history box of RAP00100 reads 1992-04-13), when I was working for "Willis, Faber, and Dumas" in Ipswich in the UK, it's only fair to keep using that name.

What is "Formatted Browse", and how did it come into existence?

At some stage WFD took over two other insurance brokers, their data was delivered to us in FB(80) datasets, containing various types of records, some in plain text, others, if I remember correctly, as packed decimal, so there was no (easy) way to read the data, especially for the business people. However, in the months before the take-over, yours truly had been working on a tool to reformat many of the badly formatted WFD PL/I %INCLUDE members, and he suggested that a little bit of REXX around his code might produce something that even non-IT types could use. And so it happened, the reformat tool was renamed from its original "RAP00100" to "RAP00110" and "RAP00100" came into existence. Initially is wasn't much more than a few lines of REXX passing all possible formats the FB(80) dataset contained to the parser, i.e. "RAP00110" and using the returned data to parse the records into a temporary dataset (USERID.FORMAT.BROWSE) and present that in BROWSE to the user, either ourselves or the business guys and girls.

Obviously, this worked pretty well, but soon, would you have expected anything else, other people in the IT department became interested, and although it was easy to clone the "RAP00100" EXEC we used, replacing the %INCLUDE members with other required ones, and the selection keys with keys that our colleagues required, a more general solution would be the way to go, and so I added a PANEL to specify PDS'es to be used and keys to match records to %INCLUDE's. And that was it...

...actually, obviously, it wasn't!

Some three years after "Formatted Browse" had come into existence, its sibling, "RAP00200", aka "Formatted Edit", saw the light, and in the years that followed, the family grew even bigger, with the additions of

EDDL
an edit macro to convert a PL/I %INCLUDE (or "INCLUDE SQL") member into DB2 load DDL
EFB
an edit macro to do in-EDIT formatted browse of data
EFBDUMP
an edit macro to do formatted browse on (old-style) PLIDUMP and SYSUDUMP datasets
EINC2FOC
an edit macro to convert PL/I %include mebers to Focus FFILE definitions
ESORT
an edit macro to generate "SORT FIELDS=(..." members from PL/I %INCLUDE members
ESYMSORT
an edit macro to do generate SORT SYMBOLS from PL/I %INCLUDE members

Keep watching this space for more...

EDITCLIP

On page 58 of Issue 6 of the Enterprise Tech Journal, in an article named "The ISPF Clipboard: Demystified", the authors, Lionel B. Dyck and William J. Smith discuss the ISPF Clipboard and they present a tool to pre-load it.

My EDITCLIP exec pre-dates "SETCLIP" by a few years, and could be a useful addition to your toolbox, as it allows you to access any ISPF clipboard without manual intervention, for example from within an edit macro, which isn't (doesn't seem to be, please correct me if I'm wrong) possible in any other way.

To perform its magic, EDITCLIP modifies the ISRECUTL panel on the fly, and temporarily replaces the user's default initial macro, if any, with another one specified by the user. This new initial macro, which should end with an "ISREDIT END" statement will do what needs to be done with the data on the selected clipboard, and return to the executing macro, which can now use the data modified on the clipboard, all without any user intervention.

What's the use of this? Two examples:

  1. EDITCLIP can be used in the case where there is a need to sort data to extract minima and maxima, but where the sort is irreversible, so cannot be performed on the original data.
  2. EDITCLIP can be used when data from several sources needs to be cut, but an indication as to where it came from is required.

How to use it?

Start by saving it in a dataset hanging off SYSEXEC (or SYSPROC). Don't worry about its name, I've called it EDITCLIP (and will use that name below), as it is smart enough to find out what you've called it.

When in the editor, you can now invoke it as "EDITCLIP [name-of-clipboard][/macro]" where "name-of-clipboard" is the name of the clipboard you want to access, and "macro" is the name of the edit-macro you want to use to process the clipboard. If you just want to access CLIPBOARD:DEFAULT, the "name-of-clipboard" can be omitted. The slash (/) separating both parameters is always required.

I can hear you think, "Big deal, why not simply use "CUT DISPLAY", followed by selecting the required clipboard and executing "macro"?".

Sure, EDITCLIP isn't particularly useful from the command line in the ISPF editor, but now think about accessing a clipboard from within an edit macro...

Right, you can cut lines to it, but that's it.

Or you can use "ISREDIT EDITCLIP MYBOARD/DOIT"...

And finally, if your organisation uses SITE and USER command tables, you could add the following

  Verb  . . : ECLIP
  Trunc . . : 0
  Action  . : SELECT CMD(%EDITCLIP &ZPARM) NEWAPPL(ISR) SCRNAME(EDITCLIP)
to your USER command table, to give yourself access to any of your clipboards from anywhere. Now isn't that useful!

Note on ASCII translation

If you download the WinRAR'ed TSO XMIT file containing most, but possibly not all, files on this part of Prino's site, ASCII translation is not an issue, so you are strongly advised to download it, even more so if you do not use a US code page!

The two characters that will cause most grief when you upload a file "Cut" from this site are the logical OR, usually displayed as "|", and logical NOT, usually displayed as "¬". However, having been bitten more than once by the latter, I've decides a long time ago to use one of the two alternative NOT characters accepted by REXX, in casu the backslash, "\", although this is sadly also not code-page invariant! (I never liked using the third alternative, the code-page invariant forward slash...)

Also, every REXX exec or edit macro on this site contains the following first two lines:

 /* REXX exec to do something (A one line short description)           */
 /*** trace ?r ***************************************************** \| *

where the "\" and "|" characters represent the NOT and OR operators.


Disclaimer

Most files on the z/OS part of Prino's site are free software: you can redistribute them and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

They are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Flags