·
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: -
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’.
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.
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
IBM PartnerWorld member