HT-2021-000363 - [2025] EWHC 532 (TCC)
Technology and Construction Court

HT-2021-000363 - [2025] EWHC 532 (TCC)

Fecha: 10-Mar-2025

Item 10: XML Parse statements (Paragraphs 33-38 of the Technical Particulars)

Item 10: XML Parse statements (Paragraphs 33-38 of the Technical Particulars)

470.

The allegation is that Winsopia reverse engineered the exception handling mechanism within IBM’s COBOL XML Parser and the COBOL runtime, to assist LzLabs in developing support for XML PARSE statements in COBOL programs for the SDM.

471.

The defendants’ case is that although IBM COBOL XML Parser is provided with Enterprise COBOL v4, v5 and v6, that was not the subject of analysis. Winsopia analysed the XML Parser API and related data structures by which customer applications may call and interface with the XML Parser. These activities did not relate to an ICA Program and fell within the observation, study and test exception right conferred by Article 5(3) of the Software Directive.

472.

Extensible Markup Language (“XML”) is a standard format that can be used to define data structures. XML PARSE statements enable COBOL programs to parse an XML document, breaking it down into its component parts and processing each part. A key aspect of this functionality is the ability to detect and process syntax errors in a document, together with the start and end of the document.

473.

In order to use the XML PARSE functionality, a COBOL application program must include the customer’s chosen processing procedure, a function which contains the business logic to handle different types of XML events, together with an XML PARSE statement. During compilation, the COBOL compiler generates a call with a parameter list to invoke the relevant XML PARSE runtime routine and request the XML Parser service. During execution, the XML Parser begins the parsing and establishes the processing procedure with the Parser. For each XML event that it detects, the Parser sets the event name in a special register and transfers control to the invoking program, where instructions generated by the COBOL compiler as part of the XML PARSE statement direct processing to the processing procedure. After processing the event, compiler generated code determines whether the document end has been reached, or whether control should be returned to the Parser so that it can continue to parse the document.

474.

The experts agree that for the SDM to support the execution of compiled COBOL programs, without the programs being rewritten or recompiled, it was necessary for LzLabs to understand the interfaces between the compiler-generated code and the runtime routines. LzLabs obtained such understanding through the DR process: DR-0210 dated 13 August 2014, DR-0218 dated 17 August 2014, DR-4509 dated 25 November 2019 and DR-112 dated 14 June 2020.

475.

There is no dispute about what Winsopia did and the experts’ second joint statement includes the following agreed facts:

i)

LzLabs prepared COBOL programs using XML parsing, and handling exceptions that may occur. LzLabs also prepared XML input for these programs: some of this input was valid, some would generate exceptions.

ii)

Winsopia compiled and executed these programs, using the provided XML data. Winsopia sent to LzLabs compiler listings generated by the IBM COBOL compiler for these programs, output produced by the programs when executed by Winsopia, and scrubbed load modules.

iii)

LzLabs used this information to understand the interfaces between the compiler-generated code and the IBM runtime routines, and implement replacement SDM routines.

476.

The disputed issues are:

i)

whether Winsopia’s analysis of the interaction between the IBM COBOL compiler and the Language Environment runtime was in respect of an ICA Program within the meaning of the ICA;

ii)

whether Winsopia’s analysis amounted to reverse engineering in breach of clause 4.1.3(a) of the ICA;

iii)

whether Winsopia’s analysis fell within permitted observation, study and testing pursuant to Article 5(3) of the Software Directive;

iv)

whether Winsopia’s analysis was necessary in order to achieve interoperability of customer applications with the SDM and, as such, was permitted by Article 6 of the Software Directive;

v)

whether Winsopia’s supply of the compiler listings to LzLabs constituted breach of clauses 4.1, 4.1.2(b) and/or 4.1.3(b) of the ICA.

477.

The defendants submit that the object of Winsopia’s analysis was not the document processing performed by the XML Parser but the interplay between the compiled customer application and the Language Environment runtime when XML events or exceptions are generated during parsing. That concerned only the interface, which is not an ICA Program. I reject that submission. The object of Winsopia’s analysis was the complex sequence of inter-dependent instructions implemented by the compiler-generated code in the load module and the runtime routines forming part of the Language Environment. For the reasons set out above, the IBM COBOL compilers, v4, v5 and v6 and the Language Environment runtime fall within the definition of an ICA Program for the purpose of the ICA.

478.

Winsopia ran the test programs in order to expose elements of the undocumented interplay between the compiler and runtime components. The compiler listings disclosed compiler-generated machine code and pseudo-assembler representation of such code, with no material redactions. This revealed the input parameters, special registers containing XML related information and control flow to the XML event processing routine. The interaction between the COBOL compiler and z/OS Language Environment runtime for XML parsing functionality is not fully documented publicly. This amounted to reverse engineering.

479.

It is common ground that the compiler listings were sent by Winsopia to LzLabs and used to implement replacement routines in the SDM.

480.

The defendants submit that Winsopia’s acts were observation, study and testing within Article 5(3) of the Software Directive. Winsopia was engaged in characterisation testing of the XML Parse interface. This involved Winsopia compiling and running the COBOL test programs, producing compiler listings and reviewing their output in response to particular processing events. Winsopia was entitled to perform each of these steps as a licensed user of its mainframe. In so doing, it is said that Winsopia was observing, studying and testing characteristics of the XML Parse interface, including its parameters, the output generated in response to errors encountered during parsing and how control was passed between the test program and the runtime environment.

481.

The purpose of Winsopia’s analysis was not confined to the functioning of the program to determine underlying ideas and principles; it was to determine how the IBM COBOL compilers and the corresponding runtimes worked together to implement XML PARSE statements. It included step-by-step analysis of instructions generated by the compiler and implemented by the runtime routines, the input parameters, special registers and control flow back and forth between the load modules and the Parser. That amounted to expression of the program, rather than its functioning.

482.

The Article 6 exception in the Software Directive is not applicable. It was open to LzLabs to adopt a solution based on recompilation of customer source code applications. Therefore, Winsopia’s analysis was not necessary in order to achieve interoperability of customer applications with the SDM.

483.

In summary, on this issue:

i)

Winsopia’s analysis of the interaction between the IBM COBOL compiler and the Language Environment runtime was in respect of an ICA Program within the meaning of the ICA.

ii)

Winsopia’s analysis amounted to reverse engineering in breach of clause 4.1.3(a) of the ICA.

iii)

Winsopia’s analysis did not fall within permitted observation, study and testing pursuant to Article 5(3) of the Software Directive.

iv)

Winsopia’s analysis was not necessary in order to achieve interoperability of customer applications with the SDM and, as such, was not permitted by Article 6 of the Software Directive.

v)

Winsopia’s supply of the compiler listings to LzLabs constituted breach of clauses 4.1, 4.1.2(b) and/or 4.1.3(b) of the ICA.