MANASYS Jazz is the easiest and best way to convert Easytrieve to COBOL. We wrote this Help page to show the process. We made some enhancements to MANASYS Jazz to facilitate this, including: -
The new version includes menu New/Data/Import_from_Easytrieve which converts Easytrieve source to MANASYS Jazz. It has been developed to the level that it will produce the definitions shown from the first program example, and deal with all of the data types supported by Easytrieve, but it doesn’t handle definitions like %PERSNL, which are presumably Easytrieve’s equivalent of COPY. As with Import_from_COBOL and Import_from_SQL, a packed number becomes MONEY if it has 2 decimal places, or DECIMAL otherwise. MONEY and DECIMAL are the same data format, the only difference is in their default display picture (DPIC).
If you want to report on data with subtotals on control break then the data must be in the correct order. Even if the input data is already in the correct sequence, with previous versions you would still have to use an ORDER option, because this is where you tell Jazz what fields are to be treated as control breaks: -
PROCESS In1 ORDER(IN1.Region BREAK, IN1.District BREAK, IN1.Name);
Now you can write PREORDERED instead of ORDER. This causes MANASYS to generate a program that does not sort the input data, but it will check that the input is in the sequence expected and the program will terminate with a message if it is out of sequence. PREORDERED is available for sequential files (F, FB, V, VB, and U), VSAM, and XIO, but not SQL because the input sequence from a relational database is not defined.
Previously every field named in the PRINT statement is printed on each detail line, whether a control field or not. In the new version control break fields are printed only in the first line for that control break, plus on the first line of a following page. Report from IN1R2 shows these new default rules. You can also add a BREAK option to any print item to specify that it is to be printed as if it were a control break field, or a control break field is to be printed as if it were a different control break level. Thus with
PRINT (IN1.Region BREAK(IN1.District), FR.Name BREAK(IN1.District), IN1.District, …
IN1.Region and FR.Name are both printed on change of IN1.Region, IN1.District, and on new page. The print statement could have used
IN1.District BREAK, or IN1.District BREAK(IN1.District), without changing the results as BREAK (without qualification) is the default for a control break field.
If you want the old behaviour, use ALL instead of BREAK: -
PRINT (IN1.Region ALL, FR.Name,IN1.District ALL,IN1.Name, IN1.SalesThisMonth, …
In report-designer programs it is now easy to count records by control break. Simply add a COUNT option like Count ix Break to the PROCESS statement. [Check] turns this into: -
PROCESS IN1 ORDER(IN1.Region BREAK,IN1.District BREAK,IN1.Name) REPORT COUNT Sums.ix BREAK;
Because ORDER defines two levels of control break COUNT ix BREAK puts the count into Sums as an array, with Sums.ix(1) being the count within the lowest level control break, IN1.District in this case. On change of IN1.District the subtotal is added into Sums.ix(2) and Sums.ix(1) is set to zero. Similarly, on change of IN1.Region the value in Sums.ix(2) is rolled up into Sums.ix(3). This makes it very easy to calculate averages and other values within the $R-End-District and $R-End-Region routines: -
* End of control break: District
Averages.SalesThisMonth = Sums.SalesThisMonth(1) / sums.ix(1);
Averages.SalesYTD = sums.salesYTD(1)/Sums.ix(1);
PLINE (' ','Count' COL(4),Sums.ix(1) COL(11),'Average' COL(44),Averages.SalesThisMonth COL(55),Averages.SalesYTD COL(76));
END ROUTINE $R-End-District;
This build will download automatically when Get Jazz is clicked.
Existing users should
1. Update their Jazz folders by clicking [Configure] and [Initialise Project], then following the dialog to download all the C# templates: -
Also support routines
JZNXTKY.cbl and JZTRIM.cbl
2. Recompile support routines JZNXTKY and JZTRIM.
3. If you’re running MANASYS Jazz from a saved shortcut, check that you’re running build #240 by looking at Help/About, or the line 4 comment of the generated COBOL. If you have a saved shortcut to the previously-loaded version then this may continue to run the old version.
We’re never short of ideas, but the important ideas are yours. What would you like us to do next? Every release is an opportunity to rethink and reset, so there’s never a better time to suggest enhancements.
Possible developments: -
· Client-side interface generation. This has met objectives for the second stage, but there are still many ideas to make this feature even better. These include
o Implementing ViewState definitions, providing a facility that works for web services the way that Viewstate works in ASP.NET, supporting web service conversations, and chained execution sequences.
o Build 16.2 has worked with variations of program JSPG2, a DB2 update program, and JSPG1V which is a VSAM equivalent. The web service dialog will be reviewed to provide more options and flexibility. The next stage will likely support record hierarchies such as Client/Orders, and also remove the restriction on VSAM records containing repeating fields or groups.
Please let us know your priorities and suggestions for further development.
CEO, Jazz Software Ltd
IBM PartnerWorld member