Site version 4.1 updated April 2022
Site rules, contact, cookies, and privacy

Mitrol DBMS Code Site for Hercules Users

This site is for anyone who is interested in the Mitrol product, running it on Hercules with MVS or VM/cms, understanding it, and even developing it. By accessing this site and downloading any material at all, you are agreeing to treat this code and documentation as being under the same licence as Hercules itself.

Additional material relating to running the P390/mvs and P390/vm is available on my server by arrangement, too much material to host on my live website. Contact me using the mail link if you wish access to this additional .ISO material. Since 2022 I now have enough online space, so I will reorganise and complete the uploads.

P390 support is here

click here to contact John Wood

Where am I up to in this project as at March 2022
Well, Covid came and is fading away slowly
And before that I became fixated in solving a problem with language EBNF analysis, the creation of "deterministic machines" to use Computer Science jargon, and the testing of the output. In Mitrol terms that means the creation of EBNF tables that are used to create PLI included code definitions, which are later used by the general purpose Mitrol engine to validate input. This process is not unlike the C-SHARP arrangement used now, having intermediate pseudo-code or tables. Sometime in the late 1990 the Mitrol syntax test program was corrupted so that new syntax definitions could not be verified. I wanted this feature to introduce "just in time" manufacturing verbs into the database. Without the capability to redefine the command syntax, to allow JIT and MRP "back flushing", the project didnt have the sparkle it had. I spent a year just studying this one program before being able to solve it. I was exhausted mentally and put my project to one side, until "sometime soon".
Now is the time to restart my effort
There are several impediments to anyone interested to help. The project is too complicated to explain easily. I propose to define a few projects that could be studied more or less in isolation, that would provide useful input to the main effort. That may enable help pending my creation of such explanation that would go with the sourcecode management.
  • The code is mostly at PLI level 2.3 but occassionally PLI 1.5. This is not acceptable as Hercules needs PLI/F at the moment. So a guideline or procedure is needed to convert PLI23 back to PLI/F, and resolve any logic changes that may be needed. The use of DCL .... REFER(field) is an obvious example.
  • The regression of code for one of the database utilities would test the item above. Expanding, reformatting, or re-indexing of a database file would be relatively light compared with the main engine.
  • If anyone was to help then my "one man local code" needs to be available on a suitable resource for a multiperson develpment team, maybe Git, Mercurial, Subversion, whatever. I am not the best person to create this, nor to validate that it is sufficient and coherent, but I will do what is asked. Some significant documentation is required to explain what to do with it.
  • There are two distinct parts to my Mitrol project. One is the movement of the mainframe code (PLI and BAL) to an acceptable form for Hercules. This will need mainframe assembler expertise, which I do not have. A good knowledge of POST/WAIT and subtasking would be useful too. Does MVS38 have VTAM, or what came before VTAM?
    The original product was dual MVS/VMcms with the code being compiled under VM, and object code being "punched" to MVS for linkedit. I have never personally compiled the whole product under MVS, recompiled major pieces and relinked yes, reassembled the VTAM parts never.
    Is the Mitrol product fully operational on my virtual P390/500 (the original hardware has failed one too many times), yes it is. Could I make this available as an application for training purposes over the internet? Yes, probably. I certainly did in the 1990's using the original P390/500 hardware.
  • The second part is to create a PC/Linux version, so that I could investigate the outstanding mainframe code problems and create something with wider appeal. Obviously architectural changes are required, but I am more comportable with that than assembler and VTAM. I thought to wrap my IBM/Windows/PLI code with PHP or Python or REXX, and this umbrella would more easily take care of TCPIP, and allow the extension of the character based database files with MongoDB or any other relational/object/graph database that is opensource. My proof-of-concept PHP wrapped PLI access via the internet works fine. The Linux IronSpring PLI initiative is looking good but is not quite complete enough (last time I looked), and I find Linux frustrating and "opaque". I think I have at least 50,000 lines of code running at this time, and far from finished. Win/PLI use of MUTEX and dependent subtasking is slow going for me.
Where am I up to in this project as at March 2019
OS2 .dsk files seem to be corrupt[ed] and I am unable to successfully run the IBM load/savedskf utilities on my machine anymore. I continue to look at resolving this.
Most of the documentation is present and all of the source code in ASCII form, enough to form an opinion of the work to do.
I have not yet compiled a virtual tape of the source code
Background to Mitrol
The Mitrol product was a child of the 1980's and was used by a number of large companies, and had a small but enthusiastic following. The approach of Y2K did concentrate the minds of Company policy makers and generally there was a move to well supported products that embodied best practices. Many Mitrol customers moved to SAP or similar as Y2K approached, Mitrol did survive Y2k but did not fare well. In 2002 Mitrol was without any clients, and now more than 10 years later, the owners have agreed to relinquish any concerns or restrictions that they originally held when I asked to make the product code open source in 2005. The intention is now to make the code available to the Hercules groups to do with as they wish. I have been a lurker for many years to Hercules, and for Hercules to have its own online DBMS from the period would be right and proper. Rebuilding it will not appeal to the majority, but enough I hope to make it a reality. Why not just use the existing executables? The Mitrol releases that I have access to rely on PL/I runtime support for releases 1.5 and 2.3, both of which still belong to IBM. Only the very early PL/I are free of copyright.
The Mitrol product was a database DBMS created in the late 1970's and is generally perceived to be a 4GL. That means the product mostly used set operations (of the type that would later be included in SQL) and was specifically devised to make building a manufacturing system easy. This was achieved by building a system that could be extended by adding new functionality, define new verb syntax using BNF form statements, had a data dictionary, had "data definition" and "data manipulation" languages [DDL,DML], had "bill of material" and "MRP2" inherent capability, as well as "kit marshalling" and "units of measure" conversions. Mitrol applications, including the 15 module manufacturing system and the 3 module accounting system, are written in the DDL/DML language of Mitrol.

Mitrol core technology

Mitrol product descriptions The Mitrol System ran on IBM and compatible mainframes under MVS MVS/XA MVS/esa and VM/cms from 1979 to 2002. Under MVS it was a VTAM level application with its own DBMS, similar in concept and power to CICS/DLI.
The core technology is written in PL/I and BAL, part of the BAL is the VTAM interface.
Mitrol website 2002 [new tab]
Brief History of Teamco and Mitrol
Technical Overview for Mitrol
Mitrol Product Manuals Administration manuals exist for both VM and MVS, they are: Release Notes, Installation, Operations, Messages and Codes MVS Installation
Mitrol Request Reference
MVS System Admin
Mitrol messages
MVS Release Notes v12
MVS Release Notes v11
Mitrol training manuals Mitrol training courses were taught in USA, France, Holland, England, Norway and Germany. The Mitrol DDL/DML languages were taught as Fundamentals, Coding, Advanced Coding and Database Administration.
The various manuals are reconstructed from old Pagemaker files, Microsoft Word and WordPerfect files both from the DOS era and early Windows. That process is ongoing to fill in the gaps. There were PC's in both the UK and USA that had valuable information that were never available to me, so their information has been lost.
Coding Fundamentals
Coding 1
Coding 2 Advanced
DBA Mitrol v9
DBA Mitrol v10
DBA Mitrol v11
Mitrol code analysis The rebuilding of Mitrol Core Technology is not straight forward, the main problem is that there is too much source code. How this situation came about, and how I tried to solve it are the subject to this section. To anyone who thinks an alternative approach would have brought better results, I applaud you, and offer you the entire body of source code. My analysis is embodied in the website on the right. Analysis discussion
PL/I code analysis [new tab]
Mitrol Source Code The Mitrol Core Technology consists of a monolithic program which under MVS is a VTAM level program, this creates the multiuser online system and runs the database. Additional stand alone utilities exist for reorganising and manipulating the files, restoring backups. The source code programs exist for 1985 onwards, Mitrol releases 9.09[PLI14] 10[PLI15] 11[PLI15] 11.5[PLI15 and PLI23] and 12[PLI23]. The releases 10 and 11 had "multiregion" options and are exactly equivalent to CICS/MRO since they were solving the same problem of Virtual Storage Constraint Relief, a serious problem of its time, those who lived though it will remember it.
Releases 11.5 and 12 were 31 bit, all prior releases were 24 bit.
The source code base consists of the following modules: 9901 PLI 3864 BAL 1205 utilities totaling about 7M lines of code. Out of the body there exists a unique set of modules to build the product: 560 PLI 313 BAL totaling 140K lines of code
PLI23 Language Ref
PLI23 Migration Guide
PLI23 Problem Determination
PLI-F Language Ref
PLI-F Program Logic
PLI-F Subroutine Logic
Caveats My background is that of a PLI programmer and Database Administrator. I was part of Mitrol field support for England and Europe from 1985 to 1990. From 1990 to 2002 an independent consultant involved in European field support, teaching classes, investigating and documenting problems. The full R&D facility was in Boston USA and later England. From 1998 to 2000 I was involved in Y2K developments. My remit was not that of a full time developer, so I received no training in the internals of the product. My background is MVS database, not Systems Programmer, and I was never comfortable or fluent with VM/cms. This failing seriously affected my ability when our support bureau closed with one months notice and I had to recover all the code from VM minidisks as best I could, I think now that my best effort may not have been quite enough. The original developers were all VM/cms diehards, and all source code maintenance was performed under VM/cms, all product builds were done under VM/cms. I believe that object code was "punched" across to MVS and the final MVS product created using the linkage editor. The Company P390/500 server was a useful tool but I could never fully recreate the environment that we had before in the Boston located bureau.
Source code as RAR/ZIP PL/I and BAL Source code sets that were accumulated during the code analysis.
Read the Source Code Analysis discussion above.
The set entitled MIT115 is from about 1990 and is mostly code that could be built to a 31 bit module using the PLI23 compiler. The Mitrol PLI code never did compile successfully using the Language Environment compiler, well, not in my hands anyway.
The set entitled MIT300 dates from around 1985 and is certainly 24 bit and probably PLI15, a simpler program compared with MIT115 and one that I expect to suit a PLI-F project better than MIT115. The MIT115 product includes some asynchronous service users to process background work streams and improved remote administration commands for user and database VTAM regions. Nice facilities, but the use of Cross Memory Services if run in 24 bit complicates things. MIT120 was completed but not extensively tested nor well used by customers, but is Y2K compliant as are its associated utilities.
To get a feel for the project then these source code ZIPs are fine.
Complete source code (17.5 Mb)
MIT300 source code (2.5 Mb)
MIT09 source code   MIT09 includes
MIT10 source code   MIT10 includes
MIT11 source code   MIT11 includes
MIT115 source code  MIT115 includes
MIT12 source code   MIT120 includes
Mitrol executables
in XMIT form
The files are in XMIT format and need to be uploaded to an MVS system without conversion as they are in EBCDIC format. I have provided an RAR version in case downloading from this site causes character conversion. In addition, I have included some executibles that might be useful before the body of code is compiled to test procedures and compatibility. Readme.txt
MVS Install.txt
XMIT V1R2 TXTLIB object code as RAR
What next ? For real work I plan to make the EBCDIC code available, I did copy the virtual 3350 3380 volumes from my now defunct P390/500 server before it died, and the mass of virtual tapes too. These volumes work on Hercules just fine. I will move the files and the Mitrol environment to a single 3350 or 3380 DASD volume, and I will export the EBCDIC source code to virtual tape, and ZIP it to detect transfer corruption. Anyone so inclined can take on the DASD or upload the tape containing the source code and support files.

Mitrol Manufacturing, Accounting, and Aerospace customer systems

The Mitrol database system had a proprietary set-operated language for data manipulation, more like coding SQL than PLI or Cobol, and it interacted with the active data dictionary at execution time to get all the file and fields information that it needed. This language was used to write applications system, either by the Mitrol Company (as the Manufacturing System below) or by customers to their own needs, or by country systems support to customers requirements (Fixed Assets, and General Ledger) in the UK and (Accounting) in Scandinavia.
The subsystems are Manufacturing, Accounting, and Aerospace & Defence

Manufacturing consists of Bill of Material, Part Control, Inventory Control, Master Scheduling, Manufacturing Resource Planning, Product Costing, Production Control, Purchasing Control, Routing Control, Work Centre Control, Capacity Requirements Planning, Production Activity Control, and Shop Calendar.

Accounting consists of Accounts Receivable, Accounts Payable and General Ledger.

Aerospace & Defence form a set of extensions to the above modules, including "lot traceability" and "contract pegging of requirements".

All the User Guides and Overview documents below are reconstituted from the original PageMaker 3 PM4 and PM6.5 files of at least 10 years ago, some 20 years ago, and they include some glitches where fonts and graphics are no longer available or accessible. I have some files from 1985 that I can open but cannot use, early Macintosh word processor or Pagemaker I think, just in case somebody could help?

MFG Manufacturing System
Getting Started with MFG
Bill of Material
Part Control
Inventory Control
Sales Order Management
Master Scheduling
Product Costing
Production Control
Purchasing Control
Routing Control
Work Centre Control
Capacity Planning
Production Activity Control
Shop Calendar
Aerospace & Defence
Accounts Receivable
General Ledger
Accounts Payable