The latest news from our company will appear on this page.

16th March 2024 We have released a new Excel VBA Subroutine named GetRGB. This will return the red, green and blue values that constitute the passed ColorIndex value.

To use the subroutine you pass the ColorIndex and three fields (as Long variables) to contain the RGB values.

i.e.
GetRGB (colorIndex, Red, Green, Blue)

The Subroutine is available from our list of subroutines.
 
 
22nd February 2024 We have released two new VB functions. One named LongestCol and the other named LongestRow.

The function perform, more or less, similar function except one returns the length of the longest row on a worksheet(LongestRow). The returns the the length of the longest column on a worksheet (LongestCol).

Both functions have two parameters, one required and one optional. The required parameter is the name of the worksheet to be tested.

The second parameter is an optional parameter that, if present, will contain the column/row number of the longest row/column.

An example of use is:
lngCount = Longest{row|col}("OurSheet")

The functions are available from our list of functions.
 
 
13th February 2024 We have released another new VB function named CountMergedRowsInCell.

The function will return a count of the number of rows merged in a particular column in the requested row.

An example of use is:
lngCount = CountMergedRowsInCell(3 ,2 , "OurSheet")

This will return a count of the number of merged rows in column 2 of OurSheet that are merged into the cell in row 3.

This function is useful if you are wanting to sort a sheet with merged cells.

CountMergedRowsInCell is available from here or from our list of functions.
 
 
7th February 2024 We have released another new VB subroutine named TickThem.

The subroutine will put a tick mark in a cell or a range of cells.

It is recommended that you assign a macro for calling this quickly and easily, or make it a right-click menu option.

TickThem is available from here or from our list of subroutines.
 
 
30th January 2024 We have released a new VB subroutine named InvertColours.

The subroutine will 'flip' the colors of the background and text for a cell or a range of cells.

It is recommended that you assign a macro for calling this quickly and easily, or make it a right-click menu option.

InvertColours is available from here or from our list of subroutines.
 
 
22nd January 2024 We have released a new VB function named WorksheetExtant2.

This differs from WorksheetExtant in that you can pass a fullpath to a different workbook.

WorksheetExtant2 can totally replace WorksheetExtant in existing code because if no workbook name is passed then the active workbook will be assumed.

WorksheetExtant2 is available from here or from our list of functions.
 
 
17th January 2024 We have released a new version of the frmDatePicker Excel userform.

Changes in this code include:
  • The ability to pass a start date to the userform.
  • Highlighted date selected.
  • Changed the display of the selected date to dd mmm yyyy format to avoid confusion with US and non US dates.
The userform is available from here.
 
 
6th January 2024 Happy New Year!

We have started to split out the Excel userforms from their workbooks. The userforms are still within the relevant workbooks, we just decided that they may be useful in their own right.

You can access these from the "Software Inventory" menu on the left side of our webpages.

We are also in the process of simplifying the website and hopefully make things easier to find. This is going to be a gradual implementation to reduce the risk of outages.

We have also added a spreadsheet for helping to organise records that have (or will be) recieved from the United Kingdom's General Records Office. This is useful for Ancestry research and to help prevent purchasing duplicates artefacts.

GROCertificates is available from here or from our list of Spreadsheets.
 
 
23rd December 2023 We have added a webpage and a Visual Basic module {RightClickProcess.bas} that will allow for modifications to the Right Click Menu in Excel.

The provided code adds "Show Only", "Hide All", "Reset/Show All" and "Delete Hidden" to the right click menu. It also supplies the subroutines that provide these functions.

The webpage, as well as a demonstration video, is available here.

RightClickProcess.bas is available from here or from our list of Excel Functions.
 
 
17th December 2023 We have corrected the error messages section of the ENQWATCH documentation. This now correctly describes the messages

We have also corrected the typos in several other documents. These were added to the website a few days ago.

If you followed the links posted yesterday you have the latest version of each document. These documents can be found here, from the left hand menu or by clicking or scanning the QR code below.

 
 
16th December 2023 We have added a couple of new pages to our website.

One is a message lookup facility where you can lookup any message issued by our free code. Obviously this presupposes that the site hasn't changed the message identifiers and/or program name.

This page can be access from the 'message lookup' menu item on the top menu or by clicking here.

The second page is simply a list of all our published documentation. This includes all program manuals and technical papers. This page can be found here, from the left hand menu or by clicking or scanning the QR code below.

 
 
9th December 2023 We have released a new Rexx Exec, named DB2STAT. DB2STAT will display every DB2 subsystem defined on the LPAR along with the status of each one.

DB2STAT is available from here or from our list of Rexx execs.
 
 
3rd December 2023 We have added a new page to our website that will allow you to select an MQ Reason Code and display what it means and how to correct the error (if it is an error).

The page can be found here, from the menu above or by clicking or scanning the QR code below.

 
 
26th November 2023 We are happy to announce that we have released another z/OS program, ASLSUBCM. The program will issue a start or stop command for a MQ or DB2 system.

Most site will do this via an automation system but this program is still useful for 'sandbox/test' systems.

It uses SVC 34 so it must be executed from an authorised library.

By default ASLSUBCM will issue a multi-line WTO wit a list of candidate subsystems and request which one to action by means of a WTOR.

More information can be found here

The code is available from here or from our list of z/OS collateral here.

The user manual for ASLSUBCM is available from here
 
 
16th November 2023 We want to apologize for an issue with our web domain.

Our web hosting company had issues that resulted in our web site being unavailable for several hours.

The issue has now been resolved. (obviously!)
 
 
6th November 2023 We have added an Excel™ example of how to insert the current date into a cell with just a simple click into the cell.

The date is only inserted for certain columns (in the sample code it is columns I & J).

The date inserted in prefixed with single quote so that Excel treats it as a string.

More information can be found here

The code is available from here or from our list of Windows collateral here.
 
 
21st October 2023 We have released an updated version of the ISPF facility, XMT.

There any many new functions added to XMT including a member selection filter, the ability to have a log produced and the ability to add a message to the files, amongst others.

More information can be found here, or by downloading the documentation which is available here.

The XMT facility works best with our assembler program SUPERXMT

We have also made some fixes to the CLONE and ALIKE Rexx execs.

These are available from our list of Rexx execs.
 
 
29th September 2023 We have released an ISPF demonstration of how to request a date be entered by a user via a popup.

It is named DATEGET and it is comprised of a panel definition, an ISPF message library and a couple of rexx execs. Only one rexx exec (DATEGET) is really needed, the other, DATETEST, is simply a demonstration of how to call DATEGET

The panel will validate the date entered and uses instream rexx for this. The panel looks like this:

DATEGET panel ASLDTE01

Further information about DATEGET can be found here.

The XMI file is available from here.
 
 
25th September 2023 We have released our versions of the TSO TRANSMIT command wrapper SUPERXMT and SUPERXMO.

The difference between the two is only that the table of authorized TSO users is externalized for SUPERXMT. The security table remains as an internal table for SUPERXMO.

Both programs increase the size of the parameter list passed to XMIT enabling a larger list of member names to be passed to XMIT.

This feature is used by our upcoming release of an updated XMT function. It is hoped to have this ready for release within the next few days.

Further information about SUPERXMT can be found here.
 
 
20th September 2023 We have added a new technical document that is a schematic of the generalized job flow through a z/OS system.

It is available from the top menu under the 'Technical Articles' tab or you can download the PDF from here.
 
 
13th September 2023 We have released a new Edit macro named FIXPREP.

FIXPREP is a 'run once' ISPF macro that will update the ISPPREP panel, ISPPREPA to enable the saving of the input and output datasets that were used.

For a detailed description of updating ISPPREP please see our webpage here.

FIXPREP is available from here.
 
 
10th September 2023 We have released a new rexx based function named COMPMEMS.

COMPMEMS Scans partitioned datasets for like named members and produces a CSV file of the results along with any ISPF statistics. This file can then be manipulated using Excel.

The files to be scanned can be either a list of partitioned dataset or datasets matching a pattern.

i.e. hlq.**.llq would match all hlq.abc.llq and hlq.adc.def.llq datasets.

You can also force the pattern to match the datasets names by position.

i.e. hlq.**.llq would match all hlq.abc.llq but not hlq.adc.def.llq datasets.

CM is an alias of this rexx command.

A demonstration video is available on YouTube™ by clicking here.

COMPMEMS is available from here.

We have also changed the homepage to remove the marquee and have added a new page to hold the Link Database statistics. This page is available here.

The links themselves have been updated (where applicable) and verified as being correct.
 
 
5th September 2023 We have updated our zaps web page as we have now tested the zaps up to HBB77D0 (z/OS 2.5).

The zap for IEBUPDTE remains the same for z/OS 2.5 so any operating system version between 1.11 and 2.5 should use the same zap.

We have also applied a fix to GENPREP for preventing an issue when the input member name is left blank.

We have also released a new edit macro named DSNINFO which simply lists the dataset information for the dataset currently being edited.

DSNINFO is available from here.
 
 
28th August 2023 We have released another ISPF edit macro named COMMENT.

Just as a reminder Edit macros must be run under an ISPF edit session. (We have reasons for stating the obvious)

COMMENT will change a data line (or lines) into a comment line.

The line to be changed must been denoted by a "q" in the line number area. If you are wanting to comment out a block of lines then use "qq" as the block line commands in the same way you would use any other ISPF block command.

COMMENT will detect the data type being edited. Currently only the following data types are supported.
  • Assembler (by detecting the words CSECT and USING)
  • COBOL (by detecting the Identification, Environment, Data and Procedure divisions)
  • CLIST (by detecting the word "PROC ")
  • JCL (by detecting the "//" and "EXEC" word)
  • REXX (by detecting the word "REXX")
COMMENT is available from here.
 
 
22nd August 2023 We have released another Rexx based facility. This one is named GENPREP.

GENPREP will perform the same function as the IBM ISPPREP command but with added flexibility.

Full details can be found on the GENPREP webpage here.

A user guide is available here.

A demonstration of how to use GENPREP is available via a video. This video is available on YouTube here.

The GENPREP facility XMI file is available from here.
 
 
12th August 2023 We have released a Rexx based facility for testing to see if a VSAM KSDS is in need of being reorganized. The facility is named TESTKSDS.

TESTKSDS is comprised of ISPF panels, messages and Rexx execs. All of these are distributed in one transmitted PDS (XMI).

Please refer to the TESTKSDS page that is availablehere for installation instructions.

Instructions on how to use TESTKSDS are available via a video. This video is available on YouTube here.

The TESTKSDS facility XMI file is available from here.
 
 
5th August 2023 We have added a new Rexx Exec named MEMMATCH.

MEMMATCH will search the PDS name passed to it for the member or member pattern (i.e. ASL*). If it finds a match it will return a condition code of 0.

MEMMATCH requires the CHECKDSN exec to be available.

MEMMATCH must run under ISPF as it uses LM facilites.

The format for using MEMMATCH is:

MEMMATCH pdsname memberpattern

i.e. MEMMATCH ABBYDALE.ALLFREE.REXX ASL*

MEMMATCH is available from here.

CHECKDSN is available from here.
 
 
29th July 2023 We have added a XMI (TSO TRANSMITted PDS) file to our collateral.

This file contains two real Rexx execs and a number of aliases to help when users mistype the TSO LOGOFF and LOGON commands.

Once you have received the XMI file (after a BINARY file transfer) you will need to make the execs (and aliases, if required) available to your users. The best way to do this is to add it as the final library in the SYSEXEC concatenation. This way if there is a name clash the name that is encountered first is the one higher up in the SYSEXEC concatentation.

You can add as many aliases or pseudonyms names as required.

The XMI file is available from here.

 
 
23rd July 2023 We have updated the ISPF edit macro named REXXIT to allow flexibility when an ALIAS is being used.

REXXIT will now dynamically change the name in the help display to reflect the name of the command calling the main exec if an alias is being used.

The updated version of REXXIT is available from here.

 
 
22nd July 2023 We have released an ISPF edit macro named ALIAS.

ALIAS will define an alias name in a PDS for the member currently being edited.

A video demonstrating the use of ALIAS can be viewed on YouTube" here.

ALIAS is available from here.

A full list of available our z/OS ISPF Edit macros is available from here.
 
 
15th July 2023 We have added a new page and a Rexx exec (SORTDEMO) describing how to quickly sort an array in Rexx.

The method used does not need to use files nor call any sort program. It uses a bubble sort methd.

The page is available from the menu bar under 'Sample Code' or by clicking here.

SORTDEMO is available from here.

A full list of available our z/OS collateral can be obtained from here.
 
 
24th June 2023 We have released simple assembler program named DDLIST which demonstrates how to check for DD cards.

This is simply a sample of how to run the TIOT to list the DD cards being used by the program.

It will list all the DD cards in a string of WTOs.

Although many people already know how to do this, we have included this code for those who don't!

DDLIST is available from here.

A full list of available our z/OS collateral can be obtained from here.
 
 
17th June 2023 We have released another ISPF Edit Macro. The edit macro, named ASMTIDY, will tidy up an assembler program source to do:
  • Clear out columns 73-80.
  • Change the assemble instruction mnemonic to upper case.
  • Change all 'EQU *' before a LTORG to be 'DS 0H'
  • Change all BAL instructions to be BAS instructions
Obviously, you can change the code to meet your own requirements but we use this to update old code to meet new 'standards'.

Note:  ASMTIDY uses the Rexx execs, WORD and WORDS These are freely available from here.

ASMTIDY is available from here.

A full list of available edit macros can be obtained from here.
 
 
25th May 2023 We have released a small 'usermod' showing how to rearrange the column on an SDSF display.

We use this to display the maximum return code on the first screen of a STatus display.

Information for this 'usermod' is available from here.

A video demonstration is avail on YouTube" here.
 
 
30th April 2023 We have released a Windows application program named HercNet

HercNet is a VB.Net program that will generate the required definitions that will allow a Hercules guest operating system to communicate with the host computer and the internet.

It will generate a text file that will contain instructions on which defines go where.

It will generate the definitions based on the computer it is running on.

Information for HercNet is available from here.

A video demonstration is avail on YouTube" here.
 
 
20th March 2023 We have released another assembler macro. This one is named POS.

POS will return the relative position of a character within the passed string.

If a second parameter is omitted space (x'40') is assumed.

The search character can be either a hex value or a character.

If the character isn't in the string the value in register 15 will be the actual length of the string plus 1.

POS is available from here.

It is also available from our macro database here.
 
 
4th March 2023 After a little bit of an unforeseen delay, we have released another assembler macro. This one is named ASLFILL.

ASLFILL will fill a passed area name with the string passed as a second parameter.

If a second parameter is omitted space (x'40') is assumed.

Note: The passed fill character must be the hex value

e.g. to fill a field with binary zeros pass 00 to the macro.

           ASLFILL    areaname,00
 


ASLFILL is available from here.

It is also available from our macro database at here.

 
 
22nd January 2023 We have added a new page and the files (in a zip file), that explains how to add a guestbook to a website. The code is mostly written in PHP and uses a SQL database to store the information entered.

The page is available here.
 
 
16th January 2023 This update is a little different as it really isn't anything to do with z/OS" but is does hark back to earlier time and may evoke some nostalgia.

Basically it is a link to some of those classic PC games that stopped working after Windows upgraded. Enjoy!

The games are available from https://www.allvideoclassicgames.com.
 
 
9th January 2023 We have added a video to our YouTube channel that demonstrates how to use FreeFileSync to maintain a backup strategy for your Windows files. It will basically allow backups of only changed files.

The video is available from here.
 
 
23rd December 2022 We have added a workbook that can be used to record and monitor blood pressure. It will also produce a graph so it is easier to see the trends and history.

We have added a video to demonstrate how to use it.

The workbook is available from here.

The video is available on YouTube.

It is also available from our website here.
 
 
10th December 2022 We have added a different version of the COUNTSTR Rexx exec it is named STRCOUNT.

The main difference between the two is that STRCOUNT will return the count and the position of the first match by PUSHing them into a stack for retrieving by the calling exec.

Example of calling STRCOUNT:

STRCOUNT Needle Haystack Count FirstPos


The arguments in italics are optional but if omitted then Count and FirstPos are the names that will be used.

Here is an example of using STRCOUNT:

  findit = 'BB'
mystring = 'ABBYDALE SYSTEMS'
strCount findit mystring Counter begins
pull begins
pull Counter
'     Counter will = 1 and begins will = 2
 

The STRCOUNT exec is avail from here.

 
 
21st November 2022 We have changed our Excel financial year utilities, FYUtilities. The change will allow SAP dates (yyyymmdd format) to be handled asis.

Any invalid dates will now be displayed as 911 and an error message issued.

You can also use the new FYValidateSAP function to reformat a SAP date (yyyymmdd) into mm/dd/yyyy format.

The financial year utilities are available from here.
 
 
19th November 2022 We have made available a program called EMPTY which is not one that we wrote but one that we use in some of our Rexx Execs.

We are not claiming any rights to the original progam. The program is also freely available on the CBT tape (available from here).


EMPTY is available from here.

We have also updated our videos on our YouTube channel Abbydale Systems.

The changes were include step-by-step comments to the videos.
 
 
5th November 2022 We have released a facility for Excel that will allow the user to print several worksheets with just one operation.

There is a sample workbook available from here

Note: This spreadsheet implements an option that allows 'fit on one page' type options.

The page that explains how to use or create your own version of this is available from here.

The demonstration video is available on YouTube or on the page above.
 
 
22nd October 2022 We have released a new assembler macro named GETMODE. This assembler macro will set a value of an area to denote the addressing mode of the executing program. This can be useful when a program can be called from programs that are in different addressing modes.

The macro will set the value to:

  • 2 for 24 bit addressing
  • 3 for 31 bit addressing
  • 6 for 64 bit addressing

The area can be passed as either a name to be generated by the macro, as a predefined area (by enclosing the name in brackets()), or, if omitted it will generate an area named ASLADDRM.

You can find the GETMODE macro here.

 
 
19th October 2022 We have changed the STARTASM edit macro to include the omitted final "END" card.

We have also corrected the comments in the GETPARM assembler macro and changed the JOBNAME macro.

The JOBNAME macro now supports 'indirect' area specification. To specify an area to be used that is defined outside of the macro use brackets (). This enable JOBNAME to be used in a re-entrant program.

You can find the corrected version of STARTASM  here.

You can find the corrected version of GETPARM  here.

You can find the updated version of JOBNAME  here.
 
 
5th October 2022 We have released a sample Excel spreadsheet, video and page that explains/demonstrates how to use the color of a worksheet to determine which worksheets to display/unhide. This is useful if you have a lot of worksheets and want to group them so you can declutter the tab bar.

The sample workbook can be found here.

The page that explain how to use or create your own version of this is available from here.

The demonstration video is available on YouTube or on the page above.
 
 
25th September 2022 No sample code released today but we have been validating and adding to our Links section.

We have also made some website tweaks mainly adding a link for submitting Link suggestions.

To suggest a link to be added please "click here".
 
 
19th September 2022 We have added a new page that demonstrates how to connect an Access database to an Excel spreadsheet.

The page is available from here or from the top menu under "Microsoft Software, Hints, Tips amd Sample Code" tab.
 
 
10th September 2022 We have added a new Rexx exec to our downloads. The exec, named LISTVOLS, will list all the online DASD volumes along with their unit addresses.

LISTVOLS should work on z/OS systems from version 1.7 onwards. You can easily add any additional UCB information if required (i.e Unit type). The code should handle dynamic UCBs as it uses the ULUT to find UCB addresses. LISTVOLS could easily be changed to list other types of units if required.

LISTVOLS is available from here and it is also included in the full Rexx library which is available from here.
 
 
4th September 2022 We have added a new z/OS program to our downloads. The program, named ASLUCAT, will run check a disk volume for any uncatalogued or miscataloged datasets and list them.

ASLUCAT can be useful if a disk pack has been restored from an old backup to ensure that the VTOC matches catalog entries.

ASLUCAT is available from our collection of assembler program which is available from here.
 
 
27th August 2022 We have added a new Excel function name SheetCount.

SheetCount will, as the name implies, count the number of worksheets in a workbook. It can count all the sheets or the visible, hidden or veryhidden worksheets. SheetCount can be used in VBA or as a function in a worksheet cell.

The passed parameter can be either an integer or a string.

The following are valid parameters:
  • -1 or "Visible" to count visible sheets
  • 0 or "Hidden" to count hidden sheets
  • 2 or "VeryHidden" to count very hidden sheets
  • Any value or "Total" to count the total number of sheets
Example of using SheetCount in a worksheet:

SheetCount is available from here.
 
 
17th August 2022 We have added a couple of z/OS assembler programs. One, ASLDATER, is distributed as OCO (Object Code Only), the other, ASLDAYCC is available as both source code and already assembled.

Information about the programs are available from:

ASLDATER information is available here.

ASLDAYCC information is available here.

The XMI file for ASLDATER is available from here.

The source code for ASLDAYCC is available from here.
 
 
7th August 2022 We have added a new VBA subroutine. The subroutine named HideEmtpyColumns, will check all the columns of a worksheet and hide it if it is.

This is useful if you want to print a worksheet and don't want to waste the space by printing empty columns.

HideEmptyColumns has 2 possible parameters, 1 of which is required. These are:
  1. The sheet name to be used.
  2. (Optional) Specifies if the sheet has a header ow in the first row. True indicates that the sheet does have headers, False indicates that the sheet does not have headers in the first row. The default (if omitted) is True
The code for HideEmptyColumns is available from here.
 
 
31st July 2022 We have added a new VBA function. The function named ColumnEmpty will check a column of a worksheet to see if it is empty. If it is empty the value of True will be returned, otherwise False will be returned.

ColumnEmpty has 3 possible parameters, 2 of which are required. These are:
  1. The sheet name to be used.
  2. The integer value of the column to check on the sheet.
  3. (Optional) Specifies if the sheet has a header ow in the first row. True indicates that the sheet does have headers, False indicates that the sheet does not have headers in the first row. The default (if omitted) is True
The code for ColumnEmpty is available from here.
 
 
23rd July 2022 We have added two new pieces of VBA code. One is a function named FindColumn, the other a subroutine named ColorTheColumn.

FindColumn will look for string in a column and return the column number the first instance is contained within.

Details are available here.

The code itself is available from here.

Note: FindColumn requires the subroutine WorksheetExtant to be available.


The subroutine ColorTheColumn can be used to change the background color of a column that contains the string passed to the subroutine.

ColorTheColumn uses FindColumn which in turn calls WorksheetExtant.

ColorTheColumn requires 3 parameters. These are:
  1. The text to find or the column number. If ColorTheColumn detects a number then then column will be colored. This means that you can not search for a number for the column to color.
  2. The sheet to use that contains the column to be colorered.
  3. The color to use as a double word. You can use Excel colors (i.e.vbRed) or just a numeric value. No checking is made to ensure the correctness of the numeric value passed.
The code for ColorTheColumn is available from here.
 
 
17th July 2022 We have added a new technical article on how to change the new tab landing page for Edge&trade from the Microsoft default.

Out of the box Edge will display a page full of articles and commercials (usually Bing driven) that it thinks you will be interested in. The technical paper shows you how to change this to whatever URL you want (i.e. Google)

The article is available from here.

It can also be accessed from the top menu under the "Technical Articles" tab.
 
 
16th July 2022 We have released a new assembler macro named GETPARM which will put the address of a passed parameter into register 1 and the length of the passed parameter into register 15. Registers are both 0 if no parameter was passed.

You can use this assembler macro from anywhere in the program and access the passed parameter list. In other words there is no need to process the parameters as soon as a program starts executing if you don't want to.

The code is available from here.

Or you can access it from our list of available assembler macros that can be found here.
 
 
9th July 2022 We have released a new edit macro named CLEANIT which will remove extraneuos line numbers from column 73 to 80 of a dataset member.

The updated code is available from here.

Or you can access it from our list of available ISPF edit macros that can be found here.
 
 
6th July 2022 We have changed the Visual Basic Zeller routine to allow SAP dates as input.

The DateFormat portion of the call to the Zeller funnction should be coded as "SAP". i.e.

Zeller example

The updated code is available from here.
 
 
2nd July 2022 We have added a new assembler macro named GETUSER. GETUSER will place the userid of the person running the program into a storage area. If no storage area is passed on the invocation, then ASLUSERI will be used.

GETUSER is available from here.

Or from our list of assembler macros available here.
 
 
26th June 2022 Whoops! We discovered an error in our TextColorSelect Excel function. This has been corrected.

Please download the corrected version from here.

Sorry for any inconvenience.
 
 
25th June 2022 We have added another sample Cobol program (USERID) and made some changes to the JOBINFO Cobol sample.

Both programs demonstrate how to obtain the userid of the person running the program. This can be useful if, for example, you want to build a dataset under the users logon id from within the program or if you want to create a temporary dynamic queue for an MQ reply to be written to based on the userid.

USERID is available from here.

JOBINFO is available from here.
 
 
18th June 2022 We have added three MQ related items to the website. Two assembler programs and a technical paper.

The technical paper is "WebsphereMQ Coding Considerations" and it discusses some of the MQ reason codes that an application may receive, what the likely causes are and how to handle them in a well behaving z/OS MQ enabled application. It is available here or from the top menu under "Technical Articles".

The two programs, MQERROR and QMGRWAIT are callable assembler programs that will put a Write To Operator to the system console. MQERROR will put out whatever text is passed to it and wait for an operator response.

QMGRWAIT will put out a "jobname has detected that qmgr is quiescing." message and wait for an operator response.

QMGRWAIT also comes bundled with MQERROR and some sample Cobol code on using both.

MQERRROR is available from here.

QMGRWAIT is available from here.
 
 
6th June 2022 We have released another Rexx exec. This one is named ASLDBACT. ASLDBACT is similar to ASLQMACT but for DB2 Subsystems. ASLDBACT sets a profile variable named "ASLACTDB" that contains a list of all the active DB2 Subsystems on the LPAR which you are signed onto. Along with the subsystem identified ASLDBACT indicates the status of the subsystem (A) for active, (I) for inactive. The list is a comma separated list with the following format:

PROD(A),DEVL(A),DSNG(A),TEST(I)

To use ASLDBACT simply code:


 ASLDBACT
 ISPEXEC "VGET (ASLACTDB) PROFILE"
 Say ASLACTDB
 

ASLDBACT is available from here.
 
 
2nd June 2022 We have added yet another version of the IndexSheetNames VBA Subroutine.

The newest will do exactly the same as IndexSheetNames(3) but it will also select the best color for the text based on the ColorIndex value of the cell.

It uses a new VBA function, TextColorSelect which is available here , or from our collection of VBA functions that can be found here.

The code for IndexSheetNames(4) available from here, or from our collection of VBA subroutines that can be found here.
 
 
1st June 2022 We have added another version of the IndexSheetNames VBA Subroutine.

The new version will copy the color of the tab as the background in the index. i.e.

Image of tab colors


The code is available from here, or from our collection of VBA subroutines that can be found here.
 
 
29th May 2022 We have released a new program (well actually 2 assembler 'programs'). One is named ASLWAIT the other is a non-executable 'program' named ASLDCBS. ASLDCBS is simply a 'map' of DCBS used by many Abbydale Systems program, including ASLWAIT.

ASLWAIT will wait for an ECB that will never get posted. This makes it ideal for emulating long running tasks for automation purposes. Additionally ASLWAIT can issue messages either at startup, or shutdown.

ASLWAIT has a command interface that will enable it to be shutdown gracefully.

More information on ASLWAIT can be found here.

The install library for both ASLWAIT & ASLDCBS can be found here, or from our collection of program that can be found here.
 
 
28th May 2022 We have released new assembler macro. The macro is named JOBNAME.

JOBNAME will store the name of the job into a provided stroage area. If no storage area name is passed JOBNAME will use the name ASLJOBNM.

The code for JOBNAME can be found here, or from our collection of assembler macros that can be found here.
 
 
22nd May 2022 We have added the ability to use Excel Format Integer dates to the Financial Year Functions.

Please see the updates on the ExcelFYInfo page for more details.

We have release another Rexx exec. This exec, named LEVELS will count the number of levels in a passed string. This string is usually a dataset name but no check is made for the validity of the dataset name, nor that the dataset exists.

In actual fact the counting of the levels (qualifiers) can actually be achieved in one Rexx statement, but we fancied it up a little and gave the ability to list the levels.

To count the levels in one instruction use:

How to count the dataset qualifiers in 1 instruction

qualifiers = TRANSLATE(yourdsntochack,' ','.')
 
The code for LEVELS can be found here.
 
 
14th May 2022 We have released some VBA functions, one that will calculate what financial year a passed date is in, another that will return the week of the financial year that a date is and one that will calculate what period of the financial year a date is in.

We have also added a page to demonstrate how to use the functions. It is available here, or from the top menu.

The code for the VBA functions can be found here.
 
 
7th May 2022 We have added a new page for our sample SMF exits.

We have also included a sample IEFU29 exit. Details of the exit can be found on the SMF Exit page.

The page can be found from the top menu or by clicking here.

The code for the sample IEFU29 exit can be found here.
 
 
2nd May 2022 We have added some sample code to our S4 Hana (SAP) page.

The code shows how to convert the SAP date from the format yyyymmdd to the integer Excel format of date.

The code can be found here.
 
 
23rd April 2022 We have release a new Rexx exec named GETDSN. GETDSN will return (via PUSHing the data onto a stack) the dataset name associated with a passed DD name.

In the case of a concatenation the first dataset name of the first dataset in the concatentation is returned.

For an example of using GETDSN click here.

The link to GETDSN is available from here or by visiting our Rexx Exec library list which is available here.
 
 
19th April 2022 We have updated a couple of our Rexx execs, FINDREXX and FINDIT.

The changes are to scan the TIOT rather than issue the LISTALC TSO command. This substantially improves performance.

We are currently working on using the same tecnique in all of our 'FIND' execs.

The link to these Rexx execs is available by visiting our Rexx Exec library list which is available here.
 
 
16th April 2022 We have released another Rexx exec. FINDREXX will check to see if a passed Rexx exec exists in either SYSEXEC or the SYSPROC concatenations.

Usage:
FINDREXX rexxname

If the exec exists FINDREXX will set a return code of 0. If it doesn't exist the return code will be 8.

The link to FINDREXX is available from here or by visiting our Rexx Exec library list which is available here.
 
 
9th April 2022 We have added a new page to the website that describes how the change the default button on a VBA MsgBox.

The page is available from the top menu under the Microsoft Excel Excel Hints and Tips r from available from here.
 
 
2nd April 2022 We have released a new ISPF edit macro named STARTMAC.

STARTMAC will generate an assembler DSECT boilerplate.

If the member being edited has data in it, the boilerplate is wrapped around it. Your data will not be lost.

The DSECT generated will have the same name as the member name being edited. STARTMAC will generate a length for DSECT by naming an equate member_End and name the length value as member_Length.

Sample output from STARTMAC can be viewed here.

The link to STARTMAC is available from here.
 
 
26th March 2022 After a little delay while we prepared a utility for release we are, at last, ready to release a couple of related facilities. These are the program ASLCOPY and a related Rexx exec named ASLCPY.

ASLCPY is basically a Rexx front end to ASLCOPY.

Information about ASLCOPY is available from here.

The link to the ASLCOPY XMI file (which also includes ASLCPY) is available from here.
 
 
26th February 2022 We have released another of our Rexx, this one is named JUL2GREGJUL2GREG, as the name implies, converts a Julian date , in the format yyyy.jjj, into a Gregorian date, in the format yyyy/mm/dd.

JUL2GREG
can be called as a standalone exec or as a function from another exec.

To call it as a stand alone exec make sure it is place in your SYSEXEC concatenation then simply type:

JUL2GREG

You will be prompted for a Julian date (in the format yyyy.jjj)

To call it as a function code:

GregDate = JUL2GREG('yyyy.ddd', 'anything')

In this instance the 'anything' can be any non-blank which will suppress any messages from JUL2GREG

The link to JUL2GREG is available from here or by visiting our Rexx Exec library list which is available here.
 
 
19th February 2022 We have released a new Rexx exec named REXXINFOREXXINFO doesn't actually do much of anything useful but it does demonstrate how to find the name of the currently executing exec and the dataset it was called from.
The output from REXXINFO is:

userid is running execname from dataset name

The link to REXXINFO is available from here or by visiting our Rexx Exec library list which is available here.
 
 
13th February 2022 After a brief hiatus we have released a new Rexx exec named ASLTESTR. ASLTESTR will check for the existance of a passed sequential dataset and if it exists it will empty it. If the passed dataset name doesn't exist it will be created and then emptied.

You can, optionally, pass the logical record length for the new file. If you don't pass as value then 133 is used for the record length.

Now you may ask why we create a file and then empty it, why not just create it? The answer is that sometimes it is possible to allocate a dataset over what was 'free' space on the disk, but actually had data there. It can also be that the data just so happens to be the correct record length therefore the dataset when allocated may also seem like it has data in it. Of course it is possible to erase data with a security system when a dataset is deleted, but the method used by ASLTESTR would still work even if this were the case.

The link to ASLTESTR is available here or by visiting our Rexx Exec library list which is available here.
 
 
22nd January 2022 We have released another Rexx exec named ISDATE. ISDATE is a Rexx exec that will, not only check to see if a passed date is in a correct format, but will also check the validity of the date. For example: that the number of days in the month is not exceeded.

There is a page that describes how to use ISDATE available here.

The link to ISDATE is available here.
 
 
15th January 2022 We have released another new Excel VBA function named EndOfWeek. EndOfWeek will return the date of the last day of the week containing the date passed to it.

By default it will return the date of the Saturday of the week. This can be changed by an optional parameter. You can also have the function return the date of a prior or future end of week by specifying an optional 'variance' parameter.

The format of the call is:

=EndOfWeek(DateToCheck,VarianceValue, LastDayOfWeek)


The only required paramter is DateToCheck which should be a valid date string.

The optional parameters are:

VarianceValue is the value indicating which week from the provided date to calculate the date of the last day of the week from. i.e 1 would imply the following week from the date, -1 would indicate the date of the last day of the previous week. The default is 0, meaning the same week as the date provided.

LastDayOfWeek specifies the day of the week to be considered the last day of the week. 0 = Sunday, 1 = Monday. The default is 6 (Saturday).

The link to the EndOfWeek function is available from here.
 
 
12th January 2022 We have released a new Excel VBA function named Zeller. The function will return the name of the day of the week for a passed date using Zeller's congruence.

Example:

Test = Zeller("13/10/1307")
    MsgBox "13/10/1307 was a " & Test)

This would return "Friday"



The function, which is named VBZeller in the list, can be downloaded from this link.

We have also released a corrected version of the Rexx exec ZELLER that will now correctly caclulate dates prior to 24th March 1752.

If you have previously downloaded ZELLER we recommend downloading this version if you really need to work with dates older than 1752!

ZELLER requires the exec Proper and if you don't have an exec named Clear then you will need to delete or comment that call to Clear out of the exec.

The link to the revised version of ZELLER is available from here.
 
 
8th January 2022 We have released two new Excel VBA functions. These two functions (Word & Words) provide the identical results as the Rexx functions.
For those folks unfamiliar with these Rexx functions, Words will return a count of the number of words in a passed string and Word will return the 'nth' word in the passed string.

Example:

Assume we have the string "The Quick Brown Fox Jumps Over The Lazy Dog" defined as InString

Words(InString) would return 9 (the number of words in the string)

Word(InString, 4) would return "Fox"



The two functions can be downloaded from this link.

We have also released a different version of IndexSheetNames. The revised version does a little more checking and in order to use it you must also use the functions WorksheetExtant and IsSheetNameValid.

The link to the revised version of IndexSheetNames is available from here.
 
 
1st January 2022 Happy New Year to one and all!

We have been busy re-organizing our website a little to, hopefully, make it easier to navigate and find things.

The changes are going to allow us to quickly and easily add new information/code. We have left all the old pages in place but we are going to eventually replace these with ones that are more focused with less clutter.

Whilst we were re-organizing we also made some of the code samples "downloadable". These are not intended to be stand-alone pieces of code.

We have also made the VB code that tests for the existance of a file into a VB function named FileExtant.

FileExtant is available for download from here.

There is now a 'catalog' of the available colatteral which is available in the top menu or by clicking here.
 
 
19th December 2021 This week we have released something a little different. We have released a library of sample JCL.

The libraries contain the following:

Print of ABBYDALE.SAMPLE.JCL($$$INDEX)
 Copyright Abbydale Systems LLC.

*---------------------------------------------------------------------*
*                Directory list of ABBYDALE.SAMPLE.JCL                *
*---------------------------------------------------------------------*
|  Member  | Description                                              |
*---------------------------------------------------------------------*
| $$$INDEX | This member.                                             |
*---------------------------------------------------------------------*
| ASDELETE | JCL for running ASLDEL.                                  |
*---------------------------------------------------------------------*
| ASLBR14  | Sample JCL for running ASLBR14(BSLBR14).                 |
*---------------------------------------------------------------------*
| BACKUP   | JCL to backup a disk pack to 'tape'.                     |
*---------------------------------------------------------------------*
| DEFINEQ  | JCL to define a local queue on a queue manager.          |
*---------------------------------------------------------------------*
| DISKINIT | JCL to initialise a disk pack.                           |
*---------------------------------------------------------------------*
| EXPAND   | JCL to expand a load module. This is useful if you need  |
|          | to fix a program but don't have the source code.         |
*---------------------------------------------------------------------*
| FORMAT4  | JCL to dump a disk pack VTOC                             |
*---------------------------------------------------------------------*
| FUZZY    | JCL to take a fuzzy backup of a MQ queue.                |
*---------------------------------------------------------------------*
| IEBUPDTE | JCL to rebuild an IEBUPDTE offloaded dataset.            |
*---------------------------------------------------------------------*
| LISTQS   | JCL to list all the parmenent queue on a queue manager.  |
*---------------------------------------------------------------------*
| PUT2Q    | JCL to load a queue with some text.                      |
*---------------------------------------------------------------------*
| QMGRBKUP | Jobstream to backup all the MQ objects of a queue        |
|          | manager to a flat file. This can be used to rebuild a    |
|          | queue manager from scratch.                              |
*---------------------------------------------------------------------*
| QMSTAT   | JCL to run QMSTAT. This shows how to check on one MQ     |
|          | subsystems and how to list all the defined subsystems.   |
*---------------------------------------------------------------------*
| RESTORE  | JCL to restore a dataset from a full pack backup.        |
*---------------------------------------------------------------------*
| SEARCH   | JCL to run a batch SRCHFOR to locate a string within     |
|          | the dataset or datasets defined on the NEWDD DD card.    |
*---------------------------------------------------------------------*
| USSTAB   | JCL to assmeble a VTAM USS table.                        |
*---------------------------------------------------------------------*
|                  Copyright of Abbydale Systems LLC.                 |
*---------------------------------------------------------------------*
The full XMI file is available from here.

The full IEBUPDTE file is available from here.
 
 
11th December 2021 We have released another ISPF Edit Macro named PRINTIT.

PRINTIT will send the member (or dataset for a sequential file) that is being edited to the print spool.

The edit macro requires that the IBM supplied PRINTDS program is available.

Usage: PRINTIT dest Class Copies | ?

  ?       - Generates help information.  
  Dest   - Is the print destination (If omitted LOCAL is used)  
  Class  - Is the output class to use. (Default is A)  
  Copies - Is the number of copies to print. (Default is 1)  


The edit macro is available for download from here.

It is also included in both the XMI file and the IEBUPDTE versions of the full ISPF Edit macro library download.
 
 
4th December 2021 We have released a new Excel subroutine named HideAllExcept.

HideAllExcept will hide all the worksheet tabs except for the one named in the passed parameter.

The provided download will also not hide a sheet named "Dashboard".

Note: If you try and hide all the worksheet tabs, then Excel will object as at least one worksheet has to be visible.

The subroutine is available for download from here.
 
 
28th November 2021 We are still reorganizing our website to make it easier to maintain and to find things, but we have released some more assembler macros namely CRASH, PRINTHEX and UPPER

These macros are simply implementations of some of our assembler hints.

We have also included an IEBUPDTE and XMIT file of these (and all our other) released macros.

The XMI library is available from here.

The IEBUPDTE format copy is available from here.
 
 
21st November 2021 We are currently reorganizing our website to make it easier to maintain and to find things. We hope to have this completed by the end of November but this is subject to change depending on work pressures.

This week we have just hooked our list of recommended Windows based software to the menu bar under the "Windows" tab. We have added another product to the list, namely Avast antivirus software.

We thoroughly recommend investigating Avast as your antivirus/firewall/VPN solution as it has all the bells and whistles included that are additional costs on other solutions.

There is a free version of Avast that is fine for regular Windows users and Avast works on several platforms.
 
 
13th November 2021 We have released a new Excel function named TableExtant.

TableExtant will check for the existence of passed table name on a passed worksheet and return TRUE or FALSE depending on whether the table exists.

Please note that the MergeToTable function has been changed to call the TableExtant function.

If you download the MergeToTable function you will also need to download and include TableExtant

The function is available here or by clicking on the Microsoft Software Hints, Tips and Sample Code => Excel.

The MergeToTablefunction is available here or by clicking on the Microsoft Software Hints, Tips and Sample Code => Excel.
 
 
6th November 2021 We have added a new page to the website. The page describes how to generate and send an email from within Excel.

The page has a link to a working sample Excel workbook containing a code and worksheets that comprise the working sample.

The page is available here or by clicking on the Microsoft Software Hints, Tips and Sample Code => Excel.
 
 
30th October 2021 We have released another Rexx function named COUNTSTR.

COUNTSTR will count the number of occurrences of one string in another.

Usage: x=CountStr(find,where)

Sample of use:

x = CountStr('.','ABBYDALE.ALLFREE.REXX')

This would return 2 as the value of x.

The exec is available here, or by clicking on the menu bar above under Sample Code->Rexx tab.
 
 
23rd October 2021 We have released another Rexx exec named VALIDMEM.

VALIDMEM will validate that a passed member name is in the correct format.

We use it after a Rexx exec prompts a user for a member name to be entered.

The exec is available here, or by clicking on the menu bar above under Sample Code->Rexx tab.
 
 
16th October 2021 The RUNNING exec has been updated to allow for the messages to be suppressed or displayed as needed.

We have released another Rexx exec named RUNNING.

RUNNING will check to see if a task is running or not. This can be very useful if an exec needs a particular task to be running or not in order to successfully execute (i.e. DB2 or MQ subsystem).

If task name is passed to the exec it will interact with the user to request name of a task to be checked for.

Usage: RUNNING taskname showmsg | ?

The return code will reflect if the task is running or not.

Return code 0 denotes that the task is running.
Return code 8 denotes that the task is not running.

The exec is available from here.
 
 
10th October 2021 We have released another Excel subroutine named MergeToTable.

MergeToTable will copy the contents of a worksheet into a table on another worksheet. The subroutine has three required parameters and three optional parameters.

For details on how to use MergeToTable follow this link.

The subroutine is available from here.
 
 
2nd October 2021 We have released another Rexx exec named DIRLIST.

DIRLIST is really just an example of how to use some of the LM functions in ISPF, however, can be easily adapted to queue a list of members for further processing. The exec will only work for partitioned datasets. If no dataset name is passed to the exec it will interact with the user to request the partitioned dataset to be listed.

Usage: DIRLIST dsn | ?

The page is available here, or by clicking on the menu bar above under Sample Code->Rexx tab.
 
 
29th September 2021 We have changed our MergeSheets subroutine to allow for merging and the retaining of the source formatting.

This is accomplished via an additional, optional parameter. The parameter is either True to copy only the values, or False to copy the source format and the values (including formulas).

By default the value is assumed as being False. If omitted the default is used.

The format of the call is:

Call MergeSheets(FromSheet, ToSheet, Column on Target sheet for starting row , Starting row on From Sheet , Copy Only Value as False)


The new subroutine can be found here.

More information on using MergeSheets can be found here.
 
 
25th September 2021 We have released another Rexx exec named VALIDVOL.

VALIDVOL will test a passed disk volume serial number to see if it is valid and online.

Usage: VALIDVOL volser | ?

The page is available here. or by clicking on the menu bar above under Sample Code->Rexx tab.
 
 
18th September 2021 We have released another Excel workbook named Holidays.xlsm. It is a macro enabled workbook that is 100% safe.

It will generate a list of public (Bank) holidays for both the United Kingdom and the United States of America. It also will include holidays specific to Scotland and Ireland.

It will also adjust the actual holiday if the holiday falls on a weekend.

You can specify the year for which you want to see the holiday and the spreadsheet will show you the holiday for that year plus the next 6. We have limited the year range that you can specify to between 2024 and 2051

The page is available here or by clicking on the menu bar above under Microsoft->Excel tab.
 
 
12th September 2021 We have added a another new page to the website. This page contains various productivity hints and tips when using Excel.

We will be adding to this page from time to time at the moment it shows how to replicate a worksheet quickly and easily, how to autofill cells and how to automatically align objects (buttons, charts etc.) to the grid lines.

The page is available here or by clicking on the menu bar above under Microsoft tab.
 
 
5th September 2021 We have added a new page to the website that list some of the software we recommend for Windows. The page contains links to get to the download for the software.

We are in no way affiliated with any of the software companies nor do we get any financial benefit from them, we just use the software and find it most helpful.

The page is available here or by clicking on the menu bar above under Microsoft tab.
 
 
28th August 2021 We have added a new page to the website that details how to define and use a user CVT.

The page is available here or by clicking on the above menu bar.
 
 
21st August 2021 We have released another Message Processing Exit (MPF) named DFHS517X.

DFHS517X will cut a SMF record whenever a CICS region issues the DFHSI1517 (Control is being given to CICS) message or the DFHTM1703 (CICS is being Terminated). This exit also demonstrates how to issue a Write To Operator (WTO) from a MPF exit.

To read why we even have this exit in place, please review our MPF page here.

DFHS517X is available from here.
 
 
7th August 2021 We have released another Message Processing Exit (MPF) named IKT002IX.

IKT002IX will change the text of the IKT002I message to make it more meaningful when the reason code is '04' (TSO already active).

This simple exit demonstrates how to change the text of a message using a MPF exit.

IKT002IX is available from here.
 
 
31st July 2021 We have released another couple of Message Processing Exits (MPF) named ASLLLA1R and ASLLLA2R.

ASLLLA1R or ASLLLA2R will each issue a linklist look aside REFRESH command (F LLA REFRESH) whenever a ASLLLA1R message is issued. You can generate a ASLLLA1R message using our program BSLBR14.

Details of how to use BSLBR14 can be obtained by clicking the link here or selecting it from the drop down menu above.

The difference between ASLLLA1R and ASLLLA2R is that ASLLLA2R has a built in table of authorised jobnames. If the jobname isn't in the table then the command won't be issued. It is strongly advised that only one or the other.

ASLLLA1R is available from here.

ASLLLA2R is available from here.
 
 
25th July 2021 We have released another Rexx exec named ASLQMACT.  ASLQMACT sets a profile variable named "ASLQMACT" that contains a list of all the active MQ Subsystems on the LPAR which you are signed onto. Along with the subsystem identified ASLQMACT indicates the status of the subsystem (A) for active, (I) for inactive. The list is a comma separated list with the following format:

PROD(A),DEVL(A),CSQ2(A),TEST(I)

To use ASLQMACT simply code:


 ASLQMACT
 ISPEXEC "VGET (ASLQMACT) PROFILE"
 Say ASLQMACT
 

ASLQMACT is available from here.
 
 
18th July 2021 We are pleased to release two items. One is an assembler program named ASLIPVLD and a rexx exec named VALIDIP.

Both of these will validate the format of a passed IP address. In the case of the assembler program it will also validate a port number (if supplied).

Information for ASLIPVLD is available from here.

VALIDIP is available from here.

Additionally we have made a change to the COPYRITE edit macro to use a Standard date (S) instead of a Normal date (N). This has been done to allow the date format to be correct regardless of the national date format.

The changed macro is available from the old link here.
 
 
10th July 2021 We have released another Edit macro. This one is named SETLANG.

SETLANG will set the highlighting for the member being edited based on the type of member. It will detect if it is Rexx, Cobol, Assembler, JCL, a C Program, an ISPF Panel and set the highlighting accordingly.

SETLANG is available from here.
 
 
3rd July 2021 We have released another Edit macro named COPYRITE.

COPYRITE will add a copyright 'flower box' into the member being edited.

The format of the 'flower box' is determined by the macro. If the macro detects a Rexx comment (/*...*/) it will build a rexx flower box, other wise it will build a comment box using asterisks.

Link to Rexx Sample Copyright
Sample Rexx 'Flower box'

Link to other copyright sample
Sample non-Rexx 'Flower box'

The comment box will be placed at the position of the cursor or where the macro detects an "A" line command.

You can change the 'from' year for the copyright and the company/entity name. The current year is used to specify the 'to' year. COPYRITE is available here.
 
 
26th June 2021 We have released a rexx exec named GETPROF.

GETPROF is be used to obtain the value of the current TSO PROFILE PREFIX ID.

If the TSO user has PROFILE NOPREFIX set the 'N' is returned.

We have also released a little rexx exec that will demonstrate how GETPROF works.

GETPROF is available here.

A copy of the code to demonstrate how to use GETPROF available from here.

We have also made a change to the edit macro REXXIT to remove an erroneous duplicate label. Sorry for the inconvenience.
 
 
19th June 2021 We have released a new edit macro named CHGLOG.

CHGLOG can be used add a change activity log into a Rexx exec (or any other member).

It will add Rexx comments (i.e lines in the format /*.....*/). CHGLOG is designed to be used in conjunction with members created by REXXIT but will work with other rexx execs.

Use the "A" line command and the macro will insert a change log after that line. If no "A" line is detected then the comments are added at the top of the member.

CHGLOG looks for the string "Change Activity" (as generated by REXXIT) and adds the comment box after the line containing the string. The CHGLOG edit macro is available from here.


Additionally we have added some code to the Access page.

One function will check to see if a table exist in the database or not. This is named TableExtant and is available from here.

The second piece of code will demonstrates how to define a table link in VBA. It is available here.
 
 
12th June 2021 We have released a new Rexx exec named ONEEXT.

ONEEXT can be used to change an existing dataset allocation into a single extent. This is useful especially for load libraries destined to be put into LNKLST. ONEEXT can be called from the ISPF 3.4 screen or as a regular Rexx exec.

By default, the exec will allocate a zero secondary extent but it can be made to use the existing value for secondary extents if required.

Usage: ONEEXT dsname keep | ?

If anything is passed as a second parameter, then the existing secondary extent is retained.

The ONEEXT exec is available from here.
 
 
5th June 2021 We have released a new ISPF edit macro named COPYTO which can be used to copy the member that is currently being edited to a different dataset. This can be very useful as it copies the member as it was either when you first started editing it or as it was when you last saved it.

The COPYTO edit macro is available from here.

We have also updated the menu bar to add Microsoft" Access hints, tips and sample code to it.

The first two code samples on the Access page show how to force numeric inputs and how to make text (or controls) flash on a form.

The Access page is available here or from the top menu.
 
 
29th May 2021 We have released a new Rexx exec named DC which can be used to delete a dataset regardless of the DSORG of the file.

If it is a VSAM file the DELETE CLUSTER IDCAMS command is issued, otherwise a regular DELETE is used.

The exec is best called from the ISPF 3.4 screen but will also work called directly.


The DC exec is available from here.

We have also updated the ZELLER exec to fix an issue with some dates and to add the ability to 'trace' the calculation.

The updated ZELLER exec is available from here.

For an explanation of the theory behind Zeller's congruence visit our page that can be found here.
 
 
22nd May 2021 Important Change To The REXXIT ISPF Edit Macro

Further changes have been made to REXXIT such that it now requires both the PROPER Rexx exec and the new USERNAME Rexx exec.

We are also pleased to announce a new Rexx exec (USERNAME) is available.

USERNAME will return the name of the TSO user currently executing the exec. It will call the Rexx exec,PROPER to format the name correctly. USERNAME PUSHes the data onto a stack for the calling exec to retrieve it.

A calling exec sample of code would be:

 /* Rexx */
username parse pull uname say uname exit

The USERNAME exec is available from here.
The PROPER exec is available from here.
The updated REXXIT ISPF Edit Macro is available from here.

 
 
17th May 2021 We have added a Guest Book to the website which can be accessed from the side menu bar.

Please feel free to send suggestions for what you would like to see us add or if you have any constructive comments. We would love to read them.

We have also added another button to the side menu to make it more obvious as to how to contact us.
 
 
16th May 2021 We have released a new ISPF edit macro named INDEXIT.

INDEXIT is really a little bit more than an edit macro as it can be called from the ISPF 3.4 panel as a command too!

It will create an index (by default this will be named $$$INDEX) that looks like this:

 000001 *---------------------------------------------------------------------*
 000002 *              Directory list of ABBYDALE.ALLFREE.EMACS               *
 000003 *---------------------------------------------------------------------*
 000004 |  Member  | Description                                              |
 000005 *---------------------------------------------------------------------*
 000006 | $$$INDEX | This member.                                             |
 000007 *---------------------------------------------------------------------*
 000008 | CENTER   |                                                          |
 000009 *---------------------------------------------------------------------*
 000010 | INDEXIT  |                                                          |
 000011 *---------------------------------------------------------------------*
 000012 | JOBCARD  |                                                          |
 000013 *---------------------------------------------------------------------*
 000014 | ONLY     |                                                          |
 000015 *---------------------------------------------------------------------*
 000016 | REXXIT   |                                                          |
 000017 *---------------------------------------------------------------------*
 000018 | RUNJCL   |                                                          |
 000019 *---------------------------------------------------------------------*
 000020 | STARTASM |                                                          |
 000021 *---------------------------------------------------------------------*
 000022 | STARTCOB |                                                          |
 000023 *---------------------------------------------------------------------*
 000024 | STARTPNL |                                                          |
 000025 *---------------------------------------------------------------------*
 000026 |                 ©Copyright of Abbydale Systems LLC.                 |
 000027 *---------------------------------------------------------------------*
 


The INDEXIT macro is available from here.

We have also included it in the Edit Macro database and the XMI and IEBUPDTE files.

We have also changed DSNCHECK and REXXIT.

The change to DSNCHECK adds a return code for if the dataset name is valid but the file doesn't exist.

The change to REXXIT add "Panels Used" to the boilerplate.

 
 
9th May 2021 We have released our LC Rexx exec.

LC will simply perform a IDCAMS LISTCAT against a dataset in an ISPF 3.4 panel. It will work for all file types but is particularly useful for VSAM files

The LC REXX exec is available from here.
 
 
2nd May 2021 We have added some sample Excel code that shows how to add a trend line chart to a worksheet

It, obviously, need to be tweaked to suit your own needs.

Information on adding a trend chart can be found here.
 
 
25th April 2021 We have added an Excel Function named RemoveExtraSpace.

RemoveExtraSpace is used to remove excessive spaces from within a string.

The code can be downloaded from here.

Information on RemoveExtraSpace can be found here.
 
 
17th April 2021 We have released another Excel Subroutine named MergeSheets.

MergeSheets can be used to copy the cells from one WorkSheet to another. It is flexible in that you can specify which column on the from WorkSheet so if column 1 isn't the column with the most rows in it and also which row on the to sheet to use for the one with the most rows in it.

The code can be downloaded from here.

Information on MergeSheets can be found here.
 
 
10th April 2021 Sometimes you need to delete rows from an Excel spreadsheet.

You could do this by individually, one row at a time which is both time consuming and error prone or you could use filters and Excel's "Go to Special" to achieve this quickly and accurately.

Note that in the video we hide the title line before the deletion of all visible rows in order to prevent it from getting deleted.

For a video demonstration of how to do this click here
 
 
3rd April 2021 We have added our file transmit facility XMT to the site.

The facility will create an XMIT file for either a single dataset or multiple datasets in a list. XMIT files are the ideal method for transferring z/OS files between z/OS systems.

The information and download page is available from here.
 
 
27th March 2021 We have added a new 'hint' to the Windows" page. The hint may have been around for some time but we just 'discovered' it recently and thought it was worth sharing.

The hint is how to rename a whole group of files in a directory quickly and easily without using third party software.

The hint is available from here.
 
 
20th March 2021 We have added a a Cobol program that will list the DD Names and associated dataset names for the DD cards used in the job step.

As it stands the program is fairly worthless as a program but it does demonstrate how to extract job information from z/OS control blocks in a Cobol program.

The program is available from here.
 
 
13th March 2021 We have added a page describing a modification to the IBM supplied ISPPREP command and panel (ISPPREPA) to change the default names used. 'Out of the box' the values used by IBM are not saved between invocations. The names are INDSNAM and OUTDSNAM. These are somewhat likely to be used elsewhere, consequently the modification changes them to ZPREPIN and ZPREPOUT.

The modification is available from here.

If you prefer just to use the IBM supplied names and simply change the ISPPREPA panel details on how to do this are available here.
 
 
27th February 2021 We have added another Rexx exec that will check that a passed dataset name is valid. This is useful if you want to check that a user entered a valid dataset name or not. It can also check that the dataset exists.

Additionally it will handle partitioned dataset member validation.

The code can be found here.

Just a reminder that all of the published Rexx execs are available in the XMI file which is available from here.

The dataset is also available in IEBUPDTE format from here.
 
 
20th February 2021 We have added a Rexx sample of how to drop the last level from a dataset name.

We had to keep it simple this week due to the challenges presented this week by the weather events in Texas where we are based.

The code can be found here.
 
 
13th February 2021 We have added some more VBA code to the website.

The code shows how to count the number of non-blank rows in a column. It should be easily adapted to do the same for blank columns in a row if needed.

The code can be found here.
 
 
6th February 2021 We have added a VBA function 'CopyToClipboard' to the website.

This function, while not written by us, is a very useful function. It will place data onto the Windows clipboard from Excel.

The function can be found here.
 
 
30th January 2021 We have added a new VBA function 'ValidateSheetName'.

This function will test the name passed to it as a string to see if it is a valid name for a Excel Worksheet name.

The function can be found here.
 
 
23rd January 2021 We have released our 'EDITREC' Rexx Exec.

This Rexx Exec can be used to check to see if ISPF error recovery is required before opening a dataset for edit.

It is quick and easy to call and allows a user to recover where they were if their session crashed (and they were using "RECOVERY ON" while editing the dataset).

The Exec can be found here.
 
 
16th January 2021 We have released our 'FINDMOD' Rexx Exec.

This Rexx Exec can be used to check to see if a load module exists.

Usage: FINDMOD module list | ?

module - Specifies the name of the module to locate.
list   - (optional). If anything is passed as a second parameter then a message is displayed showing which library the module was found in.
?      - generates help information.

The search order is: STEPLIB, LPALIST & LINKLIST.

Return Codes :
               0 - Module located
               4 - Help displayed
               8 - Module not found
             16 - Critical error

The exec will stop searching once it finds the specified module.

The Exec can be found here.
 
 
9th January 2021 We have released our 'CHGUID' Rexx Exec.

This Rexx Exec can be used to change the userid in the ISPF statistics of members of a PDS.
This Exec is useful to hide user ids when sending the PDS outside of your shop. It will only change the userid, all other statistics are left asis.

This exec can be used from the ISPF 3.4 panels or called directly.

ISPF statistics will be changed in all members

The Exec can be found here.
 
 
3rd January 2021 We have added some new pages to the website that will build all the WebSphereMQ object definition to establish two way triggered channels between two queue managers. The definitions are based on z/OS but could easily be used to create objects on other platforms.

In addition to the definition we have added pages for two of our Cobol programs that will test the end to end and return paths for the definitions.

The channel defines page can be found here.

The two programs pages can be found here and here.

 
 

Older News

 
 


If you need any support or assistance with any of the code on this site
or
if you would like to contact us, please click here

follow us on facebook
Follow us on Facebook

 

Number of unique visitors 3707

Copyright © Abbydale Systems LLC 2015-2024

Abbydale Systems LLC Lic. 802696149. All rights reserved.

Last modified : Saturday 16th of March 2024