· 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.
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
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.
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: -
and supply missing zeros so that a service request using either
would find the record with EMPNO = ‘000150’.
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.
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.
Abends are now handled cleanly in Web Service Provider Programs: they are trapped and a message returned with the response message.
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.
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 are now valid as targets (left-hand side) of conditions and assignments, e.g.
IF W.C10(5:3) = W.C26(5:3) ;
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.
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.
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.
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.
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.
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.
CEO, Jazz Software Ltd
phone +64-9-418 4415
mobile +64-27-459 2702
IBM PartnerWorld member