演習 4 では、ご使用のアプリケーションをテストするための Java™ テスト・クラスの作成を学びます。
この演習では、以下を行います。
- Java テスト・クラスを作成する。
- 以下に提供されているコードを使用してクラスを編集する。
- テスト・クラスを実行してアプリケーションをテストする。
- まず、Java テスト・クラスを作成します。を展開します。
- 「sample.ims」を右クリックし、を選択します。
- 「名前」フィールドに TestMultiSeg と入力します。
TestMultiSeg.java クラスは例としてのみ提供されているものなので、注意してください。トランザクション・コードはご使用の IMS™ マシンの仕様に変更する必要があります。
トランザクション・コードについては IMS 管理者にお問い合わせください。
ステートメント input.setIn__trcd("SKS6
") は TestMultiSeg.java クラスにあり、変更することができます。
- 「ソース・フォルダー」に「MultiSegOutput/JavaSource」が含まれており、「パッケージ」に 「sample.ims」が含まれていることを確認します。
- 「終了」をクリックします。
- Java クラス・エディターで TestMultiSeg.java を開きます。
- エディターで、すべてのコードを以下と置き換えます。
/***********************************************************
* 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);
}
}
}
- 次に、ご使用のアプリケーションをテストします。を展開します。
- TestMultiSeg.java クラスを右クリックして「実行」を選択します。
「実行」>「Java アプリケーション」を選択します。
- コンソールに出力が表示されます。

- 「複数セグメント出力」のチュートリアルはこれで終了です。