MANASYS Jazz_logo_02_314x117


MANASYS Jazz Build 17.1.296-??

Summary

Version 16.5 focussed on various issues mostly related to Easytrieve Conversion.

Builds 17.1 resumes general MANASYS development

Brown indicates Easytrieve code, blue indicates Jazz.

Detail

Build 296   TIME

Since Build 15.1, MANASYS has supported DATE data.  Build 17.1 implements TIME data also.  Like DATE, TIME is implemented generally, not just for SQL data.  

 

See https://www.jazzsoftware.co.nz/Docs/JazzUGDate.htm#TIME for information about TIME fields.

 

If you have previously installed MANASYS Jazz, then please note that with Build #286 and later there are now four more support routines which are supplied as COBOL source.  They are JZTM01, JZTM02, JZTMAR, and JZTMVS, you’ll need to compile these to support TIME data.  Jazz Set Up Support Routines tells you how to get the COBOL source, and compile it.  It includes a full list of the routines, and descriptions of their function.

Build 297

1.    Easytrieve Conversion

a.    EZT LINE statements with subscripted field references.  This becomes a PRINT stmt, retaining the subscripts.

b.    Multiple PRINT routines.  These are kept separate, printing to REPNBR1, 2, 3, etc.

c.     Period blank in EZT comment.  Now correctly handled (not treated as starting a new EZT statement)

d.    Invalid COBOL generation fixed.  A situation where complex Jazz logic was producing incorrect COBOL has been fixed.

e.    EZT STOP statements are converted to EXIT $Program; or EXIT $Routine; statements.  See https://www.jazzsoftware.co.nz/Docs/JazzLRM_EXIT.htm

f.      Import from Easytrieve, error fixed.  If a table is redefined, then it must be generated within a GROUP, otherwise the generated COBOL won’t compile.  This is now always true, even if the table itself redefines another field or group.

g.    EZT statements like READ RUNCNTL KEY VS-KEY are now converted to (e.g.) GET RUNCNTL KEY(RUNCNTL.VS-KEY); [= VS-KEY]  without unnecessary messages when RUNCNTL.VS-KEY is defined with KEY. Messages are produced if RUNCNTL.VS-KEY is not defined, or it lacks the KEY property.

2.      Miscellaneous

a.      Jazz statements like Name = 'NNN';; in which ; is followed by more punctuation are now reported as errors, not as trapped loops.

Build 298, 299, 300

1.    Easytrieve Conversion

a.    Loops are converted successfully when equivalent to FOR field = 1 TO limit.

b.    As well as SMALLINT, PIC '99', DECIMAL, and INTEGER fields can control loops.

c.     END-CASE is handled properly, becoming END CASE;

d.    TITLE statements are now converted to TPRINT, supporting variables in headings.  If TITLE is used, uses must select the option to use print routines.

e.    EZT conversion of SEARCH referring to an instream table no longer requires the SEARCH or IF statements to be edited.

2.    Miscellaneous

a.    PRINT ($TODAY, $PAGENBR) now valid, doesn’t need an assignment to an explicit variable

Build 301

1.    Easytrieve Conversion

a.    PRINT statements within Report Routines can be linked to the related PROCESS statement, allowing the use of BREAK and SUM as if the PRINT were written directly within the PROCESS loop.  See https://www.jazzsoftware.co.nz/Docs/JazzLRM_Paragraph.htm#ReportRoutines for detail.

b.    If you generate a Jazz ROUTINE from an EZT Report, LINKID options are automatically added to PERFORM and ROUTINE.

Build 302   (31/7/2023)

1.    SQL.   MANASYS now handles SQL tables where the table name, or a field name, is defined with _, e.g. CL_SCHED.CLASS_CODE.  Within MANASYS and COBOL _ is replaced by -, for example CL-SCHED.CLASS-CODE.  In COBOL EXEC SQL statements, it appears with _ or - as appropriate.

2.    Easytrieve Conversion

a.    SUM is not automatically added to numeric fields unless PRINT is associated with a PROCESS statement, either because it is within PROCESS END PROCESS, or it is linked with ROUTINE RName LINKID(nbr).

b.    An error causing MANASYS to terminate because the PROCESS statement wasn’t found is now corrected, and the PROCESS statement is correctly located. 

3.    TIME data

a.    ACCEPT (TimeField, … ) handled correctly.   Input data may be a character string, optionally with a TIME DPIC, or a SMALLINT, DECIMAL, or INTEGER field.  Numeric fields must be in the range 0 to 235959999.  Values are checked that hour is 0 – 23, minutes is 0 – 59, and seconds is 0 to 59.999.
NOTE: Please re-install initial objects JZTM01.cbl and JZTMVS.cbl

Build 303, 304

1.    Easytrieve Conversion

a.    NOTIN is now implemented as a comparison operator like IN. The section “Invalid Comparisons” in Converting Easytrieve Logic has been rewritten to reflect this. IN now generates more concise COBOL than before.

b.    EZT field names can be Jazz Statement Keywords.

c.     JOB INPUT (file KEY(field list)) is now permitted with a single file, not just synchronized file processing, allowing IF DUPLICATE tests.

d.    EZT special field Record-Length is automatically defined for files with variable-length records: types V, VB, and U.

e.    COBOL Reserved Words are valid as ROUTINE names.

f.      EZT Macros including parameter substitution and macros within macros are supported. More testing of this feature may be needed.

g.    IF xxx NOT NUMERIC is now converted correctly

2.    COBOL Generation

a.    WRITE JZxxx   not WRITE JZxxx FROM JZxxx.  FROM only when it’s different to the record name.

b.    For file types V, VB, U variable length record areas are correctly defined with

004910     RECORD VARYING 1 TO 411 DEPENDING Filename-Record-Length OF  ERESARA2
004920
        JZR RECORDING MODE V.                                    ERESARA2

and a suitable length variable is correctly defined.

c.     Jazz statements following END PROCESS were being incorrectly generated into the PROCESS loop.  They are now correctly generated after the loop.  (This error was probably introduced in Build #302)

d.    The COBOL sequence number (columns 1-6) of the initial comment is now 000000, not 000010 (with default increment 10), so that the generated numbers for the COBOL source will are now consistent with the line numbers uses by the COBOL compiler.

3.    PROCESS statement, DUPLICATE comparison.  Single-file PROCESS statements can now use SKEYS allowing DUPLICATE to be used as it can be within PROCESS …. MERGE.

Build 305

1.    Easytrieve Conversion

a.    When an EZT REPORT is converted to a Jazz routine, the ROUTINE statement will get LINKID from the relevant PERFORM statement, and TALLY is correctly resolved to the appropriate SUMnn variables.

b.    Keyed READ statements, e.g. READ CMSALL KEY W-KEY STATUS are now correctly converted using WHERE, provided that the KEY fields have been identified in the data definition.  For example: -
          GET CMSALL WHERE(CMSALL.AMBS-KEY= EZT-APB8911A-Data2.W-KEY);

c.     Conversion of (e.g.) CMSALL:FILE-STATUS EQ 0 and similar expressions are now converted to Jazz IF CMSALL.$FOUND; Conditions now only require editing for more complex conditions using & and |.

d.    EZT CALL statements are converted correctly.  If there is no interface definition, it will be created automatically if possible.

e.    When EZT REPORTs are converted to Jazz ROUTINEs that are invoked with PERFORM, the Jazz workbench ensures that the LINKID options on the PERFORM and ROUTINE statements are all consistent with the relevant PROCESS statement’s SID.

f.      EZT conversion can produce a JZORDER statement, which is a temporary statement intended to become an ORDER option of the related PROCESS statement.  Jazz now matches the ROUTINE s LINKID option with the PROCESS statements SID, and so in programs with multiple PROCESS loops JZORDER need not be matched with the first PROCESS statement.

2.    Jazz Workbench

a.    A HUGE Jazz definition was being edited: a change made towards its end caused the Jazz Workbench to fail.  Now fixed.

b.    Warning and Information messages are not produced from COPY code, instead there is simply a single line telling you that W and/or I messages have been found.  The messages are seen normally when the copy book is opened, whether explicitly opened or opened by right-click.

3.    COBOL Generation

a.    Final Subtotals and Grand Totals are now produced by the relevant END PROCESS, not when the program is terminated.  This corrects a minor error, but more importantly provides robust logic that will deal correctly with more situations.

Build 306

1.     Easytrieve Conversion

a.    Now reports are always printed using Report Routines: as MANASYS has developed, there are now situations that can’t be handled with direct printing, but there are no situations where you can’t use a routine.

b.    Several EZT REPORT definitions can be processed together.

c.     If reports have SEQUENCE/CONTROL requirements different to the current PROCESS loop, logic is automatically generated to create a second PROCESS loop.  A MsgBox give you a choice

                                          i.    [Yes] => Define and write a work file which is then processed in the correct sequence (recommended option)

                                         ii.    [No] => Re-process the original input file (use this if the first loop has a WHERE condition, so that the work file could be missing some records).

d.    To mimic EZT behaviour, an option [ü] Combine Repts will generate Jazz programs with option PROGRAMREPTS SYSPRINT;   This causes the generated COBOL program to write the first report to SYSPRINT, and other reports to work files.  On program termination the work files are copied to SYSPRINT so all reports are printed to SYSPRINT.  Without this option, each report is printed with its own DD statement.

2.    Client-side TIME Support.  Since Build #296 MANASYS Jazz has supported TIME data, but only for MANASYS Jazz/COBOL programs.  If a web service sent TIME data to/from clients, this was treated as if it was INTEGER, not as TIME.  Now, if a client interface is generated from a web service program that handles TIME data, the relevant display formatting and local validation is built into the interface.  The data is displayed as hh:mm:ss.mmm, and validated that hh must be 00 to 23, mm and ss must be 00 to 59, and mmm must be 000 to 999.  

3.    Improvement in Transport Layer Security.   Amazon Web Services required that https://jazzsoftware.co.nz/ be upgraded from TLS 1.1 to TLS 1.2, so this was done.  Software downloads are already digitally signed so download security was already high, I’m not sure what extra security this brings.

Getting the Latest Build

You’ll get this build automatically when Download Jazz is clicked.  

 

Existing users: if you’re running MANASYS Jazz from a saved shortcut, check that you’re running the current build by looking at Help/About, or the line 4 comment of the generated COBOL.  If you have a saved shortcut then this will continue to run the old version until you download a new version from our web site.

What Next?  Planning for the Next Release

Possible developments include

Implement data types DATETIME and GUID.  Defined here, these will add to the range of data types built into MANASYS Jazz

Implement Data/Import from RPG.  Like Import from COBOL, Import from SQL, and Import from Easytrieve, this will read RPG programs and convert their data definitions into Jazz definitions.  This could be the first step in a potential development of “RPG Conversion”, similar to Easytrieve conversion which is now implemented.

 

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 tell us what enhancements you’d like to see. 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

www.jazzsoftware.co.nz   

IBM PartnerWorld member