Mainframe Playground

All tools available in this sections are free to use without a charge for anyone who finds them useful. Still, their code is shared in 'as is' state and the person who's using them is fully responsible for their effects of the system. If you'll find any bug or possible area of improvement for any of the tools shared here feel free to contact me. I'll do my best to correct the bug/help you with the problem. Note that some files have '*.XMIT.csv' name. Those are standard z/OS XMIT data sets. Neocities doesn't allow hosting files of unsupported type, that's why they have '.csv' extension.

SYSLOG Message Extractor

SYSLOG Message Extractor (last update 2017.11.02)

REXX script that extracts SYSLOG messages accordingly to one of the four selection criteria: Message ID, Job name, Job ID, Anywhere in text. All necessary instructions are provided in JCL code. If you want to search current SYSLOG in addition to the archived ones enter SDSF and issue: PRE SYSLOG --> ST --> XDC left to the SYSLOG --> Copy it with the same RECFM & LRECL as offloaded SYSLOGS --> add it to the concatenation in the job. Note that SYSLOG can be configured differently on various systems. Following script assumes that column with job name/job ID/console name starts near position 39 and column with message IDs starts near column 57. If your setting differs from this, change "P1" and "P2" variables in REXX code. P1 is start column position and P2 is a field length. As you can see below those values have margin for some differences and should work on most configurations.

RACF Command Extractor

RACF Command Extractor (last update 2017.11.02)

Normally RACF commands are extracted using RACFICE but when you want to see command keywords it gets a little bit more complicated. Keywords of each commands extracted by IRRADU exits are stored on different position, for example: - ADDGROUP - 494-Group Name, 503-Command Keywords - ALTDSD - 520-Profile Name, 565-Command Keywords - RALTER - 512-Resource Name, 768-Command Keywords This makes RACF command audit a messy job. This script solves the problem.

Spool Usage Monitor (Health Check)

Spool Usage Monitor (last update 2017.07.31)

REXX Health Check for monitoring spool usage. Basically this script checks two things: - If any job in Execution queue takes more than MAXSPLUSAGE % of spool space. - If any job that takes more than SPLUSAGE % of spool space is growing quickly. To be exact if its spool usage increased by INCRSPEED since the last check run. So interval in which you run this check influences if any jobs will trigger EXCEPTION condition. To successfully run this check you need: - Put REXX script in System REXX library concatenation (SYS1.SAXREXEC is the default library). - Confirm if its code was correctly copied. Script uses OR operator '!' X'4F' in Hexadecimal code. Depending on your terminal emulator it may be incorrectly copied. Use "HEX ON" command to check if OR operator has X'4F' code, if not use "C '!' X'4F' ALL" command. - Allocate SPLDATA & REXXOUT data sets (SYSU.SPOOLCK1.SPLDATA & SYSU.SPOOLCK1.REXXOUT by default). - Enable Terminal Monitor Program (TMP) - Add AXRRXWKD to authorized commands in IKJEFTxx & restart System REXX. - Ensure that Health Checker user has RACF access to following resources: SPLDATA data set(UPDATE) ; REXXOUT data set(UPDATE) ; CONSOLE profile of TSOAUTH class(READ) ; JES2.DISPLAY.* profile in OPERCMDS class(READ). - Activate HZSPRMxx definition. For more details you can check "Writing REXX Checks" Assignment in "System Programming" tab.

COND to IF converter

COND to IF converter (last update 2017.08.04)

COND keyword is without a doubt the most hated part of JCL language. This script enables you to easily translate COND statements into more comprehensible IF instructions.

Batch Workload Reporter

Batch Workload Reporter (last update 2017.11.02)

Batch Workload Reporter is a small yet powerful tool that extract various data regarding batch workload from SMF record type 30 subtype 5. This includes data about all four types of Address Spaces on z/OS - JOB, TSU, STC & System Address Spaces. Reports created by this tool can be used for a wide range of purposes, including: - Assessment of job errors & abends so they can be fixed. - Assessment of the most MSU consuming jobs so they can be optimized. MSU saving = money savings for the customer. - Assessment of jobs that use the highest numbers of tapes. - Figuring out what address spaces are responsible for unusual peaks in MSU or CPU usage. - Checking how many zIIP eligible workload runs on the system. This data is always needed when considering zIIPs purchase. - Standard reporting activities, checking how many jobs ran, how many ended in error, at what times etc. Detailed instruction about the tool are included in #README member and as comments in JCL code. Upload parameters: - Data Set Name: 'userid.SMF30EXT.LIB.XMIT' - Transmission: Binary - RECFM: Fixed - LRECL: 80 TSO command for the unpacking package: - RECEIVE INDATASET('userid.SMF30EXT.LIB.XMIT') - DATASET ('userid.SMF30EXT.LIB')

XLS & CSV Creator

XLS & CSV Creator (last update 2017.11.03)

Most reports on z/OS are formatted in table form where there are specific columns separated from each other by separators or spaces. This tool can process any tabular data and save it in XLS & CSV format which can be easily downloaded and opened by Microsoft Excel or Libre office. You can use this tool to speed up many reporting activities but the main use of XLS & CSV Creator is report automation. Here is the typical work flow of an automatic reporting solution: 1. Extract the data. From SMF records, CA7 logs, LOGREC etc. 2. Create the report from the extracted data. With RACFICE, ERBRMFPP, SASSHIS8, ICETOOL, Batch Workload Reporter etc. 3. Convert the report to XLS or CSV file. This is when you need "XLS & CSV Creator". 4. Send automatic mail to person/team that requested this report. Most sites have some mailing tool you can use here. 5. (Optional) Prepare XLSX template with graphs compatible with the data. Having it all you need to do is to replace spreadsheet with data & refresh graphs. You can use some scheduler software like IBM Workload Scheduler or CA7 Workload Automation to automatize the entire process. The manager or the team who requested the report will get the report each month/week with literally zero involvement from your side. If they want some fancy graphs - simply prepare ready to use template with graphs so all they have to do is to insert new report into the template, refresh the graphs and that's it. You can send me some money you'll save by automatizing such activities. Detailed instruction about the tool are included in #README member and as comments in JCL code. Upload parameters: - Data Set Name: 'userid.XLSCSV.LIB.XMIT' - Transmission: Binary - RECFM: Fixed - LRECL: 80 TSO command for the unpacking package: - RECEIVE INDATASET('userid.XLSCSV.LIB.XMIT') - DATASET ('userid.XLSCSV.LIB')


UNITOOLS (last update 2017.11.09)

UNITOOLS is basically a job generator. It creates JCL code for Netview FTP jobs that can be used for the distribution of user libraries across many LPARs. Let's suppose a situation in which RACF team has a set of jobs for user management in one library, customized RACFICE job in another and also some packed tools that are often needed. The problem appears when such team manages tens of LPARs, it's impossible to maintain up do date libraries on all LPARs so usually a single system is used for storing all those jobs and scripts. Whenever there is a need of using them on any other LPAR a particular job/tool must be copied there manually. UNITOOLS is a small tool that solves the problem. It's used for synchonization of user libraries between the source LPAR (where all up to date jobs/scripts/tools are gathered and modified) and target LPARs (all LPARs that should have those libraries). The recommended use of this tool is with some kind of scheduler, such as IBM Workload Scheduler or CA7 Workload Automation. This way all libraries on source LPARs can be automatically synchronized on all defined LPARs with zero human involvement. Depending on needs such Application can run every week, day, or just on demand. The tool can be also used by a single user. In this case user must either: - Ensure that he has the same password on the source and all target LPARs. - Specify passwords for target LPARs in-stream which creates a potential security risk (Passwords will be visible in job's output). In this case it's highly recommended to modify REXX code so outputs are sent straight to Output Class with PURGE disposition so the output is deleted immediately. Additionally '#CNTL' & 'JCLLIB' libraries used by the tool will also contain those passwords so they must be apropriately protected. Detailed instruction about the tool are included in #README member and as comments in JCL code. Upload parameters: - Data Set Name: 'userid.UNITOOLS.LIB.XMIT' - Transmission: Binary - RECFM: Fixed - LRECL: 80 TSO command for the unpacking package: - RECEIVE INDATASET('userid.UNITOOLS.LIB.XMIT') - DATASET ('userid.UNITOOLS.LIB')