The source for the MVT Sort/Merge is contained on the same CD-ROM that contains the distribution libraries for OS360/MVT. The version I am working from came from the CBT site and was included on version 430 of the CBT tape, which came to me on version #5 of the CBT CD-ROM. Of course, this material was originally collected by Rick Fochtman and distributed by him via CD-ROM before it was added to the CBT collection.
The source for the entire OS360/MVT system is included on the CD-ROM. The Sort/Merge program is found under the directory labeled: sm023 which is found under the source library subdirectory. There are 251 source modules that you need from this directory. In order to successfully assemble the program, you also must have 9 members from the directory labeled: AAPVT.
In October, 2008 I began working to verify that the source we have matches the object code that is contained in the OS360/MVT Distribution Libraries:
The result of my comparisons was that the only observed differences occur in the the expansion of several system macros, specifically: LOAD, PRTOV, CHKPT, and WAIT.
I have generated several sets of test data and executed paired sort jobs, one of each pair utilizing the modules built from the source and the other utilizing the modules loaded from the MVT Distribution Libraries. The output (sorted) data compared identical for each test, the messages generated by the Sort/Merge and core utilization were identical, and the SRB times were reasonably equivalent.
I feel that I can conclude that the source can be used to produce a set of modules equivalent to those contained in the MVT Distribution Libraries.
Download the archive - mvtsort.source.tar.gz [MD5: 15aeaf7de2ab66c7e3a7762bcf59c483] - which contains:
The archive was created under Windows, so the lines in the jobstream are terminated with x'0d0a'. Unpack the archive and make the required changes to provide valid VOL=SER= values in the IEBCOPY job, then submit the job to restore the four Partitioned Datasets. The datasets were unloaded from a 3350 volume and the space allocations in the JCL are correct for 3350s; if you restore to another DASD type, you may need to adjust the allocations. Also, if you plan to modify the source and/or macros, you will need to expand the allocations to be able to save your changes without receiving D37 abends. The four datasets restored are:
The target library for the procedures is SYS2.PROCLIB; if you do not have a SYS2.PROCLIB defined on your system, you should change the target to SYS1.PROCLIB. If you change the high level qualifier from SYS2, you must also change all instances of the dataset names affected in the jobs contained in SYS2.MVTSORT.CNTL.
The two jobs contained in SYS2.MVTSORT.CNTL are:
The load modules are placed in SYS2.LINKLIB and the library routines are placed in SYS1.SORTLIB, allocated on MVSRES. If you do not have SYS2.LINKLIB defined on your system, you should change the target for the load modules to SYS1.LINKLIB. If you change any target libraries, you will need to also change the procedures that were copied into your procedure library by the IEBCOPYR job.
All steps of the SORTLOAD job should receive a Completion Code of 0000. All steps of the SORTLIB job should receive a Completion Code of 0000 except: IERAOIL, IEREX1L, IEREX2L, and IEREX3L, which should receive 0004.
There are $INDEX members in the source and maclib datasets that contain rudimentary documentation extracted from the comments in the source and maclib members. The extraction process was completed using an automated script, so some of the indention structure was lost. It still can be used to provide a starting point to understanding the structure and operation of the programs.
The complete manual for this Sort/Merge, in PDF format, is available at: GC28-6543-5-os360-Sort-Merge.PDF [14.8 MB MD5: 8ff4ff80aadf7b93ae77334aba371b22] Greg Price has also placed an OCR processed version of this manual on his site at: https://www.prycroft6.com.au/misc/ (near the bottom of the page); in his version the images are much cleaner and the text content is searchable.
There are several people who have indicated to me that they are interested in updating the MVT Sort/Merge utility to be more useful by recognizing modern DASD types. If you are interested in working on something like that, perhaps we could set up a new Hercules' discussion group to facility a joint effort. Let me know.
I hope that you have found my instructions useful. If you have questions that I can answer to help expand upon my explanations and examples shown here, please don't hesitate to send them to me: