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:

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) Write a Java interface ISimpleCalculator.java for three computation types supported by SMPLCALC.cbl using appropriate method signatures:
a) long doAdd(int, int) throws java.lang.ArithmeticException
b) long doSubtract(int, int) throws Java.lang.ArithmeticException
c) long doMultipy(int, int) throws Java.lang.ArithmeticException
(3) Write a Java interface ISimpleCalculator.java for three computation types supported by SMPLCALC.cbl using appropriate method signatures:
a) long doAdd(int, int) throws java.lang.ArithmeticException.
b) long doSubtract(int, int) throws Java.lang.ArithmeticException
c) 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:
a) Specifying which computation (add, sub, mul) is desired.
b) Specifying the operands to the computation.
c) 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:
a) Invokes XML2CALC.cbl (see step 7), passing the XML document received from JSimpleCalculator.java.
b) 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:
a) Marshalls XML received from the Java2CblXmlBridge.cpp, based on the XML Schema created in step 2, into SMPLCALC-INTERFACE.
b) Invokes SMPLCALC.cbl, passing SMPLCALC-INTERFACE by reference.
c) 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).
a) 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 and used by JSimpleCalculator.java by compiling and linking Java2CblXmlBridge.cpp with the object code for XML2CALC.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)
- MinGW - Minimalist GNU for Windows (C/C++ compiler and runtime)
- Micro Focus Net Express 5.1 with .NET (COBOL compiler and runtime)
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: teodoro
Comments are closed.
