< Previous | Next >

Lesson 4: Creating a Java test class to test your application

Lesson 4 leads you through the creation of a Java™ test class to test your application.

Before you begin

Before you begin, you must complete Lesson 3: Create a message buffer class.

About this task

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.

Procedure

  1. First you create a Java test class: Expand MultiSegOutput > Java Resources > src > sample.ims.
  2. Right click sample.ims and select New > Class
  3. 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.
  4. Ensure that Source Folder contains MultiSegOutput/JavaSource and that the Package contains sample.ims.
  5. Click Finish.
  6. Open TestMultiSeg.java in the Java class editor.
  7. 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);
    		}
    	}
    }
  8. Now you test your application: Expand MultiSegOutput > Java Resources > src > sample.ims.
  9. Right-click the TestMultiSeg.java class and select Run. Select Run As > Java Application
  10. You can see the output in the console:

    output in console

  11. You have completed the MultiSegment Output tutorial.
< Previous | Next >

Feedback