MANASYS Jazz_logo_02_314x117


MANASYS Jazz Build 15.4.193

Summary

·         Build 193 provides vastly improved handling of Web Service input messages

·         TRIM functions (including RTRIM and LTRIM) are now consistently handled.

·         Input values of NULL, ZERO, and SPACE are handled correctly as special values.  NULL sets DB2 nullable fields to NULL.

·         SQL definitions can use PIC to control formatting and input validation

·         CAPS/LOWER properties provide a simple solution when “X” and “x” should be treated as the same value.

·         Referential integrity is supported for DB2 with EXISTS, as it already was for VSAM

·         Several other minor enhancements have been made, and some errors have been fixed.

Detail

Input Web Services: Unchanged fields can be omitted, full validation including not-numeric, NULL and ZERO handled

Fields in an Input Web Service are now defined as CHAR fields, not preconverted to the target format by the binding.   This allows several improvements in web service logic: -

1.    An update need only give changed fields: blank input means “no change” and data like <wsp:WORKDEPT></wsp:WORKDEPT> does NOT set the field to ZERO or SPACE.

2.    Input errors such as Not Numeric are detected and reported properly, instead of relying on the client to prevent them and throwing a CICSFAULT error if it doesn’t.

3.    NULL, ZERO, and SPACE can be input for any data type: they all set the field to its default value (defined by its VALUE property), while NULL will also set the field to NULL if it is a DB2 nullable field

Routine JZTrim used for TRIM, RTRIM, and LTRIM

Previously Jazz generated in-line COBOL to handle implicit and explicit trimming, e.g.

EMPLOYEE.LASTNAME = EMPLOYEE.LASTNAME TRIM;

ACCEPT implicitly trims CHAR data when the data is supposed to be numeric.

 

By using a standard routine the COBOL programs are a little shorter, and handling of special values NULL, ZERO etc are consistent.  Initial Objects now includes the COBOL routine JZTrim.cbl, and its definition JZTrim.jzc.

PIC variables in SQL definitions

Although SQL doesn’t permit it, we couldn’t see any reason why a Jazz definition of a SQL table couldn’t define CHAR fields with PIC.  For example, the IBM Sample DB2 Database has a CHAR field EMPLOYEE.EMPNO with values like ‘000150’.  It can now be defined in Jazz as

            EMPNO CHAR(6) PIC '999999',

Now, although it is a CHAR field to SQL and COBOL, Jazz can automatically validate the field with its ACCEPT statement: -

ACCEPT (EMPLOYUP.EMPNO=IWSPGEU.EMPNO)

and supply missing zeros so that a service request using either

<wsp:EMPNO>150</wsp:EMPNO>

or         <wsp:EMPNO>000150</wsp:EMPNO>

would find the record with EMPNO = ‘000150’.

CAPS and LOWER Property

In Web Service testing we found that function codes “e”, “u” etc were rejected: they had to be capitals “E”, “U” etc.  Also our GET statements were not retrieving records that we knew were there.  The reason: the record had Name = “BARNES”, we’d asked for “Barnes”. 

 

In classical CICS programs where BMS converts everything to upper case, and SQL Server retrievals which are similarly case-insensitive, neither of these would have been an issue. 

 

We’ve solved the problem by implementing properties CAPS and LOWER to force values to a particular case. For example, an update web service message is now defined with

DEFINE IWSPGEM SERVICE INPUT DATA(

    Function CHAR(1) CAPS CODES(E:Enquiry,U:Update,A:Add,D:Delete) VALUE Enquiry,

   

Whatever input is received, it is converted to upper case before the CODES lookup, so that ‘E’ and ‘e’ now both mean “Enquiry”.

 

To avoid ambiguity and errors, a message is produced if neither CAPS or LOWER is present for coded fields like Function and key fields like WorkDept: -

DEFINE EMPLOYEE SQL  PREFIX EMP DATA(

    WORKDEPT CHAR(3) CAPS DKEY 'XEMP2' EXISTS DEPARTMENT.DEPTNO,

This message can be ignored if you really want department “D11” and “d11” to be treated differently. 

EXISTS property available for SQL

As shown in the example above, the EXISTS property documents a referential constraint, and will be checked when the data is validated with ACCEPT.  As with EXISTS when used with VSAM, it must refer to the primary key of the referenced object.

Abend Handling with Web Service Providers

Abends are now handled cleanly in Web Service Provider Programs: they are trapped and a message returned with the response message.

New Batch programs

When a new batch program is generated the dialog now includes options supporting SQL databases.  This was already the case for Classical CICS and Web Service programs.

Import from SQL:  DECIMAL(n,2) becomes MONEY(n,2)

In MANASYS Jazz a MONEY field is a DECIMAL field that has a display format (DPIC) with $.   When a table definition is imported into MANASYS it is assumed that if there are two decimal places it is a MONEY field.  Of course you can then edit the definition, either to define other fields as MONEY or to change the MONEY field back to DECIMAL.

Substring references

Substring references are now valid as targets (left-hand side) of conditions and assignments, e.g.

IF W.C10(5:3) = W.C26(5:3) ;

PRINT (Varcharfield) FIELDTABLE

This now handles a VARCHAR field of any length, and does not print residual characters when the field has a current length shorter than its maximum length.

Getting the Latest Build

This build will download automatically when Get Jazz is clicked.   Existing users should update the support routines by clicking [Configure] and [Initialise Project], then following the dialog to download new and changed support routines.  The following routines which are supplied as COBOL (extension .cbl) have been updated and should be recompiled: -

            JZABNDW      Abend handling for CICS Web Services

            JZTRIM           Now used for all TRIM functions

            JZDTVS          Corrected: previous version didn’t handle all date formats correctly.

What Next?  Planning for the Next Release

We’re never short of ideas, but the important ideas are yours.  What would you like us to do next?   Some of our ideas are below, but every release is an opportunity to rethink and reset, so there’s never a better time to suggest enhancements.

 

The next release will wrap up planned SQL development, and review and enhance our facilities for generating and auditing data.

HAVING

We had planned to implement the HAVING option for PROCESS statements retrieving SQL data, but this didn’t make build 15.4.  It is the only planned SQL feature that we haven’t yet implemented, so we’ll schedule this for the next release.  It cannot be implemented for other file types.

Test Data Generation

MANASYS Jazz logic already provides powerful and easy-to-use facilities to create test data, either from nothing or from existing files.  We propose to review what we already provide and make it even easier with generation options, and videos showing you how to create test files.

Data Auditing

It is simple to write programs that will read a file and test that the data in it is valid according to its definition.  As with data generation, we’ll review what we already provide, make it even easier and better, and create a video showing you how to create such programs.

 

Robert Barnes

CEO, Jazz Software Ltd

phone  +64-9-418 4415

mobile +64-27-459 2702

Skype: Robert.Barnes3

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

www.jazzsoftware.co.nz   

IBM PartnerWorld member