The MANASYS Jazz Project
Thirty years ago mainframes were state-of-the-art and “Nobody got fired for buying IBM”. Now they are largely ignored as our focus has turned to Windows, Web, Mobile Apps, and the latest announcements from Microsoft, Apple, Google, and others. Yet much of the world’s commerce continues to be managed with mainframes running COBOL programs.
Mainframe hardware has continued to advance but the software environment has stagnated, so that mainframes are programmed in essentially the same way as they were 30 years ago. Mainframe users have a problem, finding people with the right skills to service their mission-critical systems. It isn’t just skills. Learning old languages like COBOL and PL/I is not the problem, the difficult part is understanding the logic of systems built by programmers who retired years ago. Increasingly the work is sent offshore but this brings its own set of problems. Some mainframe users have elected to redevelop their systems, yet this is risky and expensive: partly because nobody now understands the old applications and partly because other technology may not be able to service the performance and concurrency requirements of these mission-critical applications.
A revolution in programming technology is needed, offering mainframe users the productivity benefits that users of small-scale systems take for granted, and offering paths to a more flexible future. MANASYS Jazz is that revolution! Jazz unlocks your mainframe data, whether you want to add function to your mainframe applications, or make the data available to other systems. Even if you have an active project to close down your mainframe systems, MANASYS Jazz will be an invaluable tool for this project.
MANASYS-Jazz is a modern programming system for z/OS (real or emulated) batch, CICS, and Web Service development. It
· Makes basic programming tasks very simple.
· Makes the basic parts of complex tasks very simple, without making the complex parts more difficult.
MANASYS Jazz is a total redevelopment of MANASYS AIM, a COBOL-generating programming system that was very popular in the Fujitsu mainframe environment but was never ported to the MVS (now z/OS) environment. MANASYS Jazz takes full advantage of technology advances since the 1980’s, operating in the Windows environment but generating code for z/OS or Micro Focus Enterprise Developer (MFED).
Like earlier versions of MANASYS, Jazz is based on two key principles: -
These principles are clearly shown in the way in which Jazz defines data, where a COPY statement is the single place where you describe everything about this record: not just a copy book of the fields in the record, but a description of its organization, where to find it, its indexes, validation rules, display formats, and so on. You can even create your own field types with LIKE ensuring consistent storage format, conversion and display rules, and validation rules.
This and other innovations make MANASYS Jazz enormously productive. Initial examples have shown Jazz/COBOL ratios from 1:20 to 1:60, even over 1:100, and user experience has told us that "In using JAZZ, programs that take hours or days can be done in minutes, data mapping that takes a day or more to complete can be done in minutes”.
We expect that Business Analysts (BA’s) will be able to write some programs themselves with less effort than currently needed to write a specification. For more complex tasks technical specialists will be involved, but the technical specialists can still use Jazz for most of the problem, using 3GL-level (COBOL or Java) knowledge only to extend Jazz into areas that it doesn’t yet support. With huge reductions in development effort the need for COBOL programming is all but eliminated, and turnaround from change request to delivery will be hours, not months.
MANASYS Jazz takes to extreme lengths the re-use of information through a layered development system. Rich data definitions and simple dialogs produce brief Jazz programs from which COBOL, JCL, CICS screens, and JSON objects are produced, offering unrivalled productivity without risk.
No other software provides such a bridge between modern and legacy technologies, with the feel of modern technology yet generating both legacy and new-technology objects.
Companies with a legacy of Mainframe systems developed in COBOL (etc), typically, banks, insurance companies, and government organizations, who have one or several of these requirements: -
· Add function to legacy systems.
· Get faster, more agile development.
· Introduce modern programmers to the world of COBOL, CICS, and web services.
· Do more with existing development resources.
· Reduce the cost of outsourced development, even eliminating it in some cases.
· Improve the quality of new programming, and reduce future maintenance costs.
· Modernize their applications without the high risk of reprogramming.
· Make mainframe data available to new client apps through web services.
Early adopters will be those who want one or more of the above, and are open to new and innovative solutions.
We know that you don’t always create new systems from scratch – sometimes you’re just adding a few new functions to an existing system. Jazz programs are vastly shorter and simpler than the corresponding COBOL program, and so are closer to the original business problem, making ongoing maintenance easier. That’s great once the problem is expressed in Jazz, but how do you get there? Where do we start?
Existing IT systems are large and complex but most of this complexity is caused by the solution, not the actual business problem. As we redevelop our old mainframe systems into new environments, we usually replace an old mess of legacy z/OS-COBOL code with a new mess of even more complex UNIX or Windows code. But there’s an alternative.
Start by adding a few Jazz-generated programs to your system, perhaps a new report, a new screen dialog, a new web service. You don’t have to undertake a “big bang” redevelopment of the whole system that would put your business at risk. You can, if you wish, progressively replace your system section by section. Jazz is completely compatible with previous programming technology, so you can add a few Jazz-generated programs to your existing system. You don’t have to redevelop the whole system in Jazz before you can make progress.
In particular, as this video shows Web Services with their supporting WSDL (SOAP) or JSON (REST) message formats are very quickly developed, making the data of your legacy systems available to new web and mobile services.
First we import the relevant COBOL (or SQL or Easytrieve) record layouts into Jazz. Then we add properties to these definitions that aren’t in the COBOL: field headings, validation rules, record keys, and so on. Where we can recognize data types with particular rules we use LIKE to define them as a data type. Now we start developing our new function. With rich record definitions there will be very little to write. As this process continues much of the COBOL logic will be replaced by far simpler Jazz logic (still generating COBOL programs, but reducing the need to acquire skilled COBOL programmers).
Jazz development has been underway since January 2013, and it’s now at Version 16. It currently handles these tasks: -
· Import COBOL, SQL, and Easytrieve definitions.
a. Any COBOL record layout can be automatically imported into a Jazz definition.
b. SQL table definitions can also be read from the database and imported into Jazz definitions
c. Easytrieve definitions (“Library”) can be imported into Jazz definitions.
d. Data definitions can be imported from a spreadsheet
e. Other imports – RPG2, PL/I, etc – will be developed as required.
Once imported, the definitions can be edited to add missing information such as validity criteria, headings, file type and location that are missing from more primitive definitions.
· Batch programming.
a. Reading files, and reformatting and writing out records.
b. Producing a Report, with control breaks, totals and subtotals. Simple reports are produced Easytrieve-like programs using PRINT statements. Alternatively, a visual editor provides precise layout control, and the ability to specify control break processing, when needed.
c. VSAM and SQL records can be read by key for reporting and updating.
d. Sequential, VSAM and SQL test data can be produced
e. Data mapping and conversions.
a. Jazz creates an Excel spreadsheet from the input and output definitions (either Jazz or COBOL).
b. After this is edited to check alignment and mapping, Jazz generates a conversion program.
· Classical CICS Programming
a. Enquiry programs that look up and display records from a VSAM file.
b. Update programs to display, update, add, and delete records from a VSAM file.
c. Automatic handling of Alternate indexes
d. Automatic handling of generic keys and PF10/PF11 for Previous/Next record
e. Handling record hierarchies and displaying record lists, with automatic handling of PF7/8 for Up/Down.
· Web Services Programming
a. Web Service Providers. A quick dialog defines a web service provider and its input and output messages. Then the actual logic is added, and [Process] creates the program, JSON or WSDL, and WSBIND objects. As with Classical CICS programming, you can create enquiry or update programs for single records and for record hierarchies.
b. Web Service Requesters. INVOKE ?; initiates a discovery dialog that reads JSON or WSDL and creates the program and record layouts and binding objects. This feature is being re-developed.
· Z/OS and Micro Focus support.
a. Working with a z/OS mainframe Jazz submits jobs and handles job output by submitting jobs and receiving job output through JES, just like any other z/OS COBOL developer. The earlier overview videos show MANASYS Jazz being used in this way.
b. When configured to work with Micro Focus Enterprise Developer, Jazz writes its generated COBOL and JCL into shared folders and then passes control to MFED where the program is compiled, JSON and binding files produced when necessary, and the programs can be tested interactively.
Currently Jazz supports physical-sequential files, VSAM, SQL (DB2) and XIO (External I/O: data is accessed through pre-written I/O routines). Support for other database types (ADABAS, IMS, IDMS) could be added if required. The original MANASYS product supported IBM’s DL/I and MANASYS AIM supported both relational databases and Fujitsu’s AIM/DB, a CODASYL-style database (like IDMS), so the requirements are well understood, but development of these extensions awaits a customer requirement and partnership.
1. V16 Development. Build 16.3 has completed development and been released.
· Clicking a [Client] button from a JSON web service program generates a C# interface which should function in Windows™, Linux, UNIX, IOS, Android, … environments.
· The services can return many records, including Parent/Child record sets
2. Development will continue with a wider variety of web services and client-side programs. Ideas include
· Review and extension of the types of web service that can be generated, and their corresponding client-side interfaces.
· Prototype client programs as Windows Forms or Web Pages will be generated in a variety of languages.
· Conversational web services. Data passed from transaction to transaction through “Viewstate”, similar in concept to the use of Viewstate in ASP.NET
· Client-server reporting: Report Editor transmits data with a web service, Crystal Reports (or similar) formats it and adds local processing
· Other options suggested by client and our own experience.
3. Longer-term development.
· A wider range of platforms and intermediate languages
· Eventually Jazz could handle all “Business-type” programming on mainframes, UNIX, and Windows, using COBOL, Java, C#, and VB.NET as intermediate languages when appropriate.
http://www.jazzsoftware.co.nz has a range of brief videos showing what Jazz can do, and links from the Help and Training Page provide complete documentation, allowing you to drill down to the detail of the Jazz Language Reference, and the Jazz Users’ Guide.