Legacy Software Reengineering and Reuse Exercise
Description of the Exercise:
Provide a command-line (or graphical) interactive Java front-end to the legacy COBOL application SMPLCALC.cbl by implementing the program architecture shown below:

Provide a command-line (or graphical) interactive Java front-end to the legacy COBOL application SMPLCALC.cbl by implementing the program architecture illustrated in Fig. 1. Before starting the exercise, download and extract the following archive file located here SMPLCALC.cbl Legacy COBOL Program Artifacts.
Follow these steps to complete the exercise:
1.) Locate the interface data structure for SMPLCALC.cbl in the copybook (source include file) SMPLCALC.cpy. There is only one data structure in the copybook.
2.) Create an XML Schema which represents all of the data in the SMPLCALC-INTERFACE COBOL data structure. Instead of writing this by hand, you can use the Micro Focus Net Express CBL2XML wizard [37].
3.) Write a Java interface ISimpleCalculator.java for three computation types supported by SMPLCALC.cbl using appropriate method signatures:
- blong doAdd(int, int) throws java.lang.ArithmeticException.
- long doSubtract(int, int) throws Java.lang.ArithmeticException
- long doMultipy(int, int) throws Java.lang.ArithmeticException
4.) Write a Java class JSimpleCalculator.java that implements the interface defined in ISimpleCalculator.java and provides a user interface for:
- Specifying which computation (add, sub, mul) is desired.
- Specifying the operands to the computation.
- Displaying the result of the computation (can be an error).
5.) Use the Java command-line utility xjc, in combination with the XML Schema created in Step 2, to generate Java to XML marshalling code (JAXB). Update JSimpleCalculator.java to call this marshalling code.
6.) Write a small C/C++ JNI program Java2CblXmlBridge.cpp which exports a method “Java2SmplCalc” which:
- Invokes XML2CALC.cbl (see Step 7), passing the XML document received from JSimpleCalculator.java.
- Returns the XML document generated by XML2CALC.cbl (see Step 7) on return from SMPLCALC.cbl to JSimpleCalculator.java.
7.) Write a COBOL program XML2CALC.cbl which:
- Marshalls XML received from the Java2CblXmlBridge.cpp, based on the XML Schema created in Step 2, into SMPLCALC-INTERFACE.
- Invokes SMPLCALC.cbl, passing SMPLCALC-INTERFACE by reference.
- Marshalls SMPLCALC-INTERFACE back to XML before returning to Java2CblXmlBridge.cpp.
8.) Compile XML2CALC.cbl and link it with the machine/object code for SMPLCALC.cbl (SMPLCALC.obj).
- To simulate a situation where only partial source code for an application is available, do not recompile SMPLCALC.cbl; use the object file (machine code) that comes with this exercise instead.
9.) Create a DLL that can be loaded an used by JSimpleCalculator.java by compiling and linking Java2CblXmlBridge.cpp with the object code for XML2CALC.cbl.
- Update JSimpleCalculator.java to use the XJC-generated marshalling code to send/receive XML through the JNI method defined in Step 8 and display the results of the computations performed downstream by SMPLCALC.cbl.
10.) Update JSimpleCalculator.java to use the XJC-generated marshalling code to send/receive XML through the JNI method defined in Step 8 and display the results of the computations performed downstream by SMPLCALC.cbl.
Software for the Exercise:
- SMPLCALC.cbl Legacy COBOL Program Artifacts
- Java SE Development Kit 6u13 (Java compiler and runtime)
- Visual Studio C++ 2008 Express Installer (C/C++ compiler and runtime)
- Micro Focus Net Express 5.1 with .NET (COBOL compiler and runtime) – Windows XP only
- Micro Focus Visual COBOL for Eclipse 2.2 (COBOL compiler and runtime) – Windows 7 and later
Solution to the Exercise:
The following screen captures demonstrate execution of the solution code. Feel free to create a graphical user interface using Java Swing in your own solution.


Posted on May 20th, 2009 | By: admin@reversingproject.info
Comments are closed.