Lesson 4 leads you through the creation of a Java™ test class to test your application.
In this lesson, you
- Create a Java test class.
- Edit the class using the code supplied below.
- Run the test class to test your application.
- First you create a Java test class: Expand .
- Right click sample.ims and select
- In the Name field, type TestMultiSeg. Note that the TestMultiSeg.java class is
provided as an example only; you need to change the transaction code
to your IMS™ machine specifications.
Consult your IMS administrator
for the transaction code. You can locate the statement input.setIn__trcd("SKS6
") in the TestMultiSeg.java class and make the modifications.
- Ensure that Source Folder contains MultiSegOutput/JavaSource and that the Package contains sample.ims.
- Click Finish.
- Open TestMultiSeg.java in the Java class editor.
- Replace all the code in the editor with the following:
/***********************************************************
* Licensed Materials - Property of IBM
*
* com.ibm.j2c.cheatsheet.content
*
*Copyright IBM Corporation 2004. All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights: Use,
* duplication or disclosure restricted by GSA ADP Schedule
* Contract with IBM Corp.
************************************************************/
package sample.ims;
import com.ibm.etools.marshall.util.MarshallIntegerUtils;
import sample.ims.data.*;
public class TestMultiSeg
{
public static void main (String[] args)
{
byte[] segBytes = null;
int srcPos = 0;
int dstPos = 0;
int totalLen = 0;
int remainLen = 0;
byte[] buff;
short LL = 0;
short ZZ = 0;
try
{
// ---------------------------------------------------
// Populate the IMS transaction input message with
// data. Use the input message format handler method
// getSize() to set the LL field of the input message.
// ---------------------------------------------------
InputMsg input = new InputMsg();
input.setIn__ll((short) input.getSize());
input.setIn__zz((short) 0);
//----------------------------------------------
// find out the transaction code from your IMS
// administrator
//-----------------------------------------------
input.setIn__trcd("SKS6 ");
input.setIn__data1("M2 SI1");
input.setIn__data2("M3 SI1");
// ---------------------------------------------------
// Run the IMS transaction. The multi-segment output
// message is returned.
// ---------------------------------------------------
MSOImpl proxy = new MSOImpl();
sample.ims.CCIBuffer output = proxy.runMultiSegOutput(input);
// ---------------------------------------------------
// Retrieve the multi-segment output message as a
// byte array using the output message format
// handler method getBytes().
// ---------------------------------------------------
System.out.println(
"\nSize of output message is: " + output.getSize());
segBytes = output.getBytes();
srcPos = 0;
dstPos = 0;
totalLen = segBytes.length;
remainLen = totalLen;
// ---------------------------------------------------
// Populate first segment object from buffer.
// ---------------------------------------
buff = null;
// Get length of segment.
LL =
MarshallIntegerUtils.unmarshallTwoByteIntegerFromBuffer(
segBytes,
srcPos,
true,
MarshallIntegerUtils.SIGN_CODING_TWOS_COMPLEMENT);
// Put segment in byte array.
buff = new byte[LL];
System.arraycopy(segBytes, srcPos, buff, dstPos, LL);
remainLen -= LL;
// Create and populate segment object from byte array.
OutputSeg1 S1 = new OutputSeg1();
S1.setBytes(buff);
System.out.println(
"\nOutSeg1 LL is: "
+ S1.getOut__ll()
+ "\nOutSeg1 ZZ is: "
+ S1.getOut__zz()
+ "\nOutSeg1_DATA1 is: "
+ S1.getOut__data1());
// ---------------------------------------------------
// Populate second segment object from buffer.
// ---------------------------------------------------
srcPos += LL;
buff = null;
// Get length of segment.
LL =
MarshallIntegerUtils.unmarshallTwoByteIntegerFromBuffer(
segBytes,
srcPos,
true,
MarshallIntegerUtils.SIGN_CODING_TWOS_COMPLEMENT);
// Put segment in byte array.
buff = new byte[LL];
System.arraycopy(segBytes, srcPos, buff, dstPos, LL);
remainLen -= LL;
// Create and populate segment object from byte array.
OutputSeg2 S2 = new OutputSeg2();
S2.setBytes(buff);
System.out.println(
"\nOutSeg2 LL is: "
+ S2.getOut__ll()
+ "\nOutSeg2 ZZ is: "
+ S2.getOut__zz()
+ "\nOutSeg2_DATA1 is: "
+ S2.getOut__data1()
+ "\nOutSeg2_DATA2 is: "
+ S2.getOut__data2());
// ---------------------------------------------------
// Populate third segment object from buffer.
// ---------------------------------------------------
srcPos += LL;
buff = null;
// Get length of segment.
LL =
MarshallIntegerUtils.unmarshallTwoByteIntegerFromBuffer(
segBytes,
srcPos,
true,
MarshallIntegerUtils.SIGN_CODING_TWOS_COMPLEMENT);
// Put segment in byte array.
buff = new byte[LL];
System.arraycopy(segBytes, srcPos, buff, dstPos, LL);
remainLen -= LL;
// Create and populate segment object from byte array.
OutputSeg3 S3 = new OutputSeg3();
S3.setBytes(buff);
System.out.println(
"\nOutSeg3 LL is: "
+ S3.getOut__ll()
+ "\nOutSeg3 ZZ is: "
+ S3.getOut__zz()
+ "\nOutSeg3_DATA1 is: "
+ S3.getOut__data1()
+ "\nOutSeg3_DATA2 is: "
+ S3.getOut__data2()
+ "\nOutSeg3_DATA3 is: "
+ S3.getOut__data3());
}
catch (Exception e)
{
System.out.println("\nCaught exception is: " + e);
}
}
}
- Now you test your application: Expand .
- Right-click the TestMultiSeg.java class and select Run.
Select Run As > Java Application
- You can see the output in the console:

- You have completed the MultiSegment Output tutorial.