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: -
ROUTINE $R-End-District;
* 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: -
@InList.cs
@IsFloat.cs
@IsInt.cs
@IsNoLongerThan.cs
@JazzClient.cs
@Method.cs
@ReadNoScroll.cs
@ReadScroll.cs
@RequestResponse.cs
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.
Robert Barnes
CEO, Jazz Software Ltd
Skype: Robert.Barnes3
LinkedIn linkedin.com/in/robert-barnes-5b833a
IBM PartnerWorld member