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

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

Fecha: 10-Mar-2025

Item 6: IGZCIVL COBOL runtime module (Paragraph 11.6 of the Technical Particulars)

Item 6: IGZCIVL COBOL runtime module (Paragraph 11.6 of the Technical Particulars)

407.

The allegation is that Winsopia carried out reverse engineering of the IBM COBOL v4 compiler and the IGZCIVL runtime module, and transferred data structures from the same to LzLabs for use in development of the SDM.

408.

The defendants’ case is that Winsopia used compiler listings to study the interface in a customer application that it uses to call a runtime service, IGZCIVL. These activities did not relate to an ICA Program; they related to a test program and fell within the observation, study and test exception right conferred by Article 5(3) of the Software Directive.

409.

IGZCIVL is a COBOL runtime routine that compares a data item to a figurative constant and determines whether the data value is equal to, greater than or less than the figurative constant. It is a component of the IBM supplied load module IGZCPAC, which is part of the SCEERUN library provided by IBM as part of z/OS.

410.

Where a source code application contains an “IF” statement, the IBM COBOL compiler may produce machine code to evaluate the information and take appropriate action within the compiler program. As Professor Donaldson explained, this is usually confined to relatively simple comparisons; in more complex cases, the compiler will produce machine code to outsource the comparison exercise to the IGZCIVL routine at runtime.

411.

On 19 January 2016, DR1485 was opened by Mr Bowler of LzLabs, requesting Winsopia to discover the format of parameters passed by the COBOL program to IGZCIVL when an IF statement compares a data item with a figurative constant. He provided test programs that he had written and supplied the parameters for the same. He asked Winsopia to send to LzLabs the redacted compilation listing, redacted load module and program display output file.

412.

The test programs were compiled and executed on the Winsopia Mainframe by Mr Bray of Winsopia, deliberately triggering an error to generate the required output. The compiler listings were sent to LzLabs, with some text redactions but leaving the machine instructions and pseudo-assembler statements visible.

413.

From studying this material, LzLabs deduced the circumstances in which the compiler would insert machine code to perform the required comparison itself or insert a call to be made to IGZCIVL during runtime to perform the comparison, together with the order of the parameters to be passed to IGZCIVL.

414.

LzLabs developed the SDM equivalent of the IGZCIVL routine, which was present in the SDM Git repository from at least August 2013, prior to Winsopia’s acquisition of the mainframe. On 28 January 2016 Mr Bowler modified the SDM code relating to the handling of parameters, inserting code to cause an abend (abnormal termination) in specified circumstances. Mr Bowler’s explanatory comment referenced his understanding of the order of the data item and figurative constant as informed by DR1485.

415.

The experts’ second joint statement includes the following agreed facts:

i)

LzLabs provided two test programs to Winsopia to be compiled and executed on the z/OS system.

ii)

Winsopia compiled and executed the programs, returning compiler listings with pseudo assembler statements generated by the COBOL compiler, output created by the program when it executed, and scrubbed load modules.

iii)

The purpose of this exercise was to determine the parameters input to IGZCIVL and determine the results when these parameters are entered.

iv)

IGZCIVL is an IBM provided CSECT included in the runtime library SCEERUN provided by IBM with z/OS.

v)

From the information provided, including assembler statements, LzLabs determined that a z/OS language environment model IGZCIVL would not be called in certain circumstances.

vi)

LzLabs also discovered that the operands were always in a predictable order.

vii)

The SDM IGZCIVL equivalent module was modified to reflect this.

viii)

The SDM file does not reproduce source or object code from the IBM IGZCIVL module.

416.

The disputed issues are:

i)

whether Winsopia’s analysis of the interaction between the compiler and the IGZCIVL runtime module 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 of the compiler and/or IGZCIVL 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.

417.

The defendants submit that the object of Winsopia’s analysis was the interface used to call the IGZCIVL runtime service, which interface was not itself an ICA Program. I reject that submission. Regardless of whether one could describe the interaction between the compiler and the IGZCIVL runtime module as an interface, what was interrogated by Winsopia was the compiler listing produced during compilation of the test program, which disclosed the parameters input to IGZCIVL, the circumstances in which IGZCIVL would be called and the results when certain parameters were entered. In so doing, Winsopia analysed the internal operation of the compiler and the IGZCIVL runtime module.

418.

It is common ground that IBM Enterprise COBOL v4 is an ICA Program. The compiler and its associated IGZCIVL runtime module are both components of IBM Enterprise COBOL v4. For the reasons set out above, they both fall within the definition of an ICA Program for the purpose of the ICA.

419.

Winsopia compiled and ran the test programs in order to expose elements of the undocumented internal workings of the compiler and IGZCIVL components, through compiler listings, including pseudo-assembler statements, load modules and the program display output files. The information gleaned was not documented publicly by IBM. As Professor Donaldson agreed in his evidence, the matters analysed reflected design choices by the creators of the compiler and its associated runtime. This amounted to reverse engineering.

420.

The defendants submit that Winsopia’s acts were observation, study and testing of the compiled test programs while running, and in particular the interface that invoked the IGZCIVL runtime module. The purpose of such exercise was to determine interface information relating to IGZCIVL, namely, the parameters passed to IGZCIVL as input (in particular their order and relationship), the output provided back to the test program and the circumstances in which the interface would be called by the test program.

421.

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 compiler and IGZCIVL implemented IF statements. It included discovery of the parameters passed to IGZCIVL, the circumstances and order in which the parameters were input, and the results of the same. That amounted to expression of the program, rather than its functioning.

422.

The Article 6 exception in the Software Directive is not applicable. It is common ground that LzLabs already had a functioning equivalent of IGZCIVL in the SDM. Further, 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.

423.

In summary, on this issue:

i)

Winsopia’s analysis of the interaction between the compiler and the IGZCIVL runtime module 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 of the components so as to engage 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 so as to engage Article 6 of the Software Directive.