MANASYS Jazz_logo_02_314x117


MANASYS Jazz Build 17.1.296-309

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 and green indicate Jazz.

Contents

MANASYS Jazz Build 17.1.296-??. 1

Summary. 1

Detail 1

Build 296. 1

Build 297. 1

Build 298, 299, 300. 1

Build 301. 1

Build 302   (31/7/2023) 1

Build 303, 304. 1

Build 305. 1

Build 306. 1

Build 307. 1

Build 308. 1

Build 309. 1

Getting the Latest Build. 1

What Next?  Planning for the Next Release. 1

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.

Build 307

1.    PrintJazz.  From Jazz Workbench, menu File/Print will now print the Jazz program that is currently displayed.

2.    Import from COBOL was originally designed to import a COBOL copy book and convert it to Jazz.  It has been enhanced: you can now import a complete COBOL program, creating a single copy book for all the data defined in the program’s Data Division

3.    Client-side TIME Support.  Client-side C# support routine IsTime has been improved, making data entry easier.

4.    Option WHILE is now valid with FOR statements.   WHILE and UNTIL both terminate the FOR loop, and may be used with other FOR options.  WHILE is the reverse of UNTIL, e.g. FOR UNTIL condition is the same as FOR WHILE NOT condition.

5.    Easytrieve Conversion

a.    EZT line I-MULTI-POL I-MULTI +20 06 A is now converted properly.  Previously the + caused a problem.

b.    CALL now allows RETURNS, supporting conversion of CALL SUB1 USING (I-ID) Returns RETURN-CODE

c.     Normally macros must have the same extension as the object referencing them.  An option allows them to have no extension

d.    Macro names can use characters @, #, and $ which are substituted with the same rules as field names.

e.    Long VALUE clauses are now handled correctly, e.g.
    FILLER-003          WS-GP-MSG-01 +32 91 A VALUE +

                                    ' - Controllo protesti e banca dati su cnv attivi e loro legali +

                                    rappresentanti o percipienti'

becomes
    FILLER-003 CHAR(91) VALUE ' - Controllo protesti e banca dati su cnv attivi e loro legali rappresentanti o percipienti',

f.      Program logic for JOB INPUT NULL has been changed:

                                          i.    In New/Logic/Batch, give file name NULL (not blank)

                                         ii.    Logic generates a FOR loop.

g.    Converting CALL AGY001C USING AG055-GP-AREA creates correct Jazz DEFINE including the parameter: -
    DEFINE AGY001C PARAMETERS BATCH DATA(

                                    P1 LIKE EZT-TESTB-Data.AG055-GP-AREA);

    CALL AGY001C (EZT-TESTB-Data.AG055-GP-AREA);

h.    Over-long Group names are now handled correctly.  If a repeating field is redefined, the Jazz field is created within a GROUP to avoid COBOL errors. If the EZT field name is already close to the maximum (30 characters), the addition of "-GROUP” was causing it to exceed 30 characters.   Now fixed.

i.      Files defined without data.  When EZT included a file definition without data (next field was working storage), errors occurred.  Now Jazz inserts a FILLER definition, minimum length 120 characters, avoiding this error.

j.      EZT Not Equal comparison operator ^= is now converted to Jazz <>.

k.     With a DISPLAY statement like DISPLAY SEGNALAZ 'ERRORE ROUTINE MULTISOCIETA' where the first operand is either a file name, or one of the special names CONSOLE SYSOUT SYSLIST SYSLST SYSPUNCH SYSPCH SYSIN or SYSIPT, a Jazz DISPLAY statement like
            DISPLAY 'ERRORE ROUTINE MULTISOCIETA' UPON SEGNALAZ;
is generated.

Build 308

1.    Web Site changes have been made to support Resellers.

2.    Miscellaneous minor changes and errors

a.    When there were two or more BREAK fields an error could occur with PREORDER.  PREORDER is used to avoid ORDER when PROCESS reads a file that is already in the correct sequence, but without ORDER you would have nowhere to place BREAK options. PREORDER avoids the SORT that ORDER would cause, but instead generates checking that aborts processing when a sequence error is detected.

b.    CODES can now be safely used with PIC variables, e.g. SEX PIC '9' CODES(1:Female,2:Male),

c.     DECIMAL numbers with zero digits before the decimal point now generate correct COBOL definitions.

d.    Jazz supports Unsigned Packed data (Jazz format UNSPCKD):  such fields are automatically converted to DECIMAL fields for display (PRINT etc).  The COBOL fields generated for this conversion now redefine the full length of the DECIMAL field to avoid COBOL message IGYDS1073-I. 

e.    PROCESS File ORDER (Field1, Field2) creates programs using a sort.  MANASYS sorts only the File fields that are referenced in the program, making the program as efficient as possible.  Warning message #784 is now produced when MANASYS detects that the SORTWORK file contains separate copies of redefined fields, alerting you to a potential opportunity to make your programs even more efficient.

3.    Easytrieve Conversion

a.    EZT SORT and JOB statements can be processed with the Conversion Notepad to add further PROCESS sections. SORT becomes an ORDER option (of PROCESS), and IF conditions within a BEFORE PROC become a WHERE option.

b.    If the IF condition has multiple values, e.g. IF SEX = 1 2, this becomes WHERE SEX IN(1,2), which is the Jazz (and SQL) equivalent.

c.     @, #, and $ are not substituted in macro names or references, allowing macro references like %CP$101

d.    EZT MASK values can optionally be interpreted with European standards, swapping the comma and period to conform to Jazz and COBOL standards.

e.    IF the name of a PROC starts with a number, the Jazz ROUTINE name is prefixed with JZ- for both the ROUTINE and the corresponding PERFORM.

f.      Conditions with multiple values, like IF SEX = 1 2 are now handled correctly, becoming WHERE SEX IN(1, 2).

g.    Conditions like IF FIELD NOT SPACE are now handled correctly.

Build 309

1.    Easytrieve Conversion

a.    EZT MASK BWZ is handled correctly, generating DPIC 'ZZZZ'.

b.    Tables with numeric ARG and DESC values are handled correctly, generating valid PIC formats.

c.       When the values of INSTREAM tables are valid for CODES, then it is converted to DEFINE Table DATA(DESC PIC '9999' CODES(0001:'11',…); Otherwise, it converts to  tables of ARG and DESC values.

d.    EZT SEARCH statements now correctly convert to SEARCH Table.GROUP when appropriate.

e.    EZT IF [NOT] Table conditions now correctly convert to IF SEARCH-FOUND = True; [or False].

f.      You can add ORDER(NULL) to a PROCESS statement to prevent an unwanted ORDER option from being added from a converted reports SEQUENCE statement. If an ORDER is already present then the conversion generates logic that creates and sorts a work file, then prints the report from this.

g.    [LProc] creates load procedures for external tables.  This dialog has been improved with a number of small enhancements.  Its HELP page has been reviewed, and is now also available from a [Help] button.

h.    EZT COPY filename is now handled, and becomes LIKE filename in Jazz.

i.      With PROGRAM xxx EZT, numeric fields in PRINT statements (converted from EZT LINE) have SUM added unless they are BREAK fields.  If you don’t want a field to be summed, change SUM to NOSUM.  EZT is no longer an option of the PRINT statement as the same function is not provided by the PROGRAM statement.

j.      If a VALUE clause uses parentheses, as in W-NOINT 6 A VALUE ('DEBUT '), the parentheses are ignored to produce a correct Jazz definition.

k.     ORDER(NULL) can be automatically added to a PROCESS without ORDER

l.      OTHERWISE => ELSE.

2.    General

a.    If a PRINT statement overflows and the Description field (describing the control break) is placed on the 2nd line, COBOL now correctly refers to the 2nd line.  

b.    Statements with form FOR UNTIL condition and FOR WHILE condition are now handled.  Previously UNTIL and WHILE needed to associated with INDEX, EACH or TABLE forms of the FOR statement.       

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

Development now continues with Build 17.2 which continues General Development, but also introduces DL/1 support.

 

Robert Barnes

CEO, Jazz Software Ltd

Skype: Robert.Barnes3

LinkedIn   linkedin.com/in/robert-barnes-5b833a

www.jazzsoftware.co.nz   

IBM PartnerWorld member