The 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, 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.
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.
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 can easily 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 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 15. It currently handles these tasks: -
· Import COBOL, SQL, and other. 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. Data definitions can be imported from a spreadsheet
d. Other imports – RPG2, Easytrieve, 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 with PRINT statements, and a visual editor provides precise layout control 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, .wsdl (or .json), 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 WSDL and creates the program and record layouts and binding objects. Currently only implemented for SOAP (WSDL) messages
Currently Jazz supports physical-sequential files, VSAM, SQL (DB2) and XIO (External I/O: data is access 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. V15 Development.
· Jazz has been validated and developed to support Micro Focus™, who supply software that supports enterprise systems in Windows and UNIX environments. Jazz has been validated for batch, classical CICS, and Web Services.
· Planned DB2 support is now complete except for PROCESS … HAVING. MANASYS-Jazz provides SQL conditions
o BETWEEN value1 AND Value2, and
o LIKE pattern)
in normal (not SQL) logic, and also supports PIC properties with the definitions of SQL CHAR fields.
2. Medium-term development. Further development priority and schedule will depend on feedback from early adopters. Ideas include
· Development of client-side programming
o .NET and/or Java
o Client COBOL objects (requires Micro Focus™ software)
· Interface objects, encapsulating the data rules of the Jazz message definitions
· Client-server reporting: Report Editor transmits data with a web service, Crystal Reports formats it and adds local processing
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, and VB.NET as intermediate languages as 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.