付録E.1 ソースイメージの生成例(TP1/Client/PおよびTP1/Client/W)
「Bean生成ツール」で「TP1/Client/PまたはW経由のアクセスを使用する。」を選択した場合の生成例です。(他のチェックボックスはデフォルト指定です。)
入力用原文指定時はcall/callTo/sendメソッドとsetterおよびコンストラクタ中のsetInXXXを,出力用原文指定時はreceive/receive2メソッドとgetterおよびコンストラクタ中のsetOutXXXを生成します。
(1) OCCURS句がない場合
TP1/COBOLの引数にOCCURS句がない場合の例を次に示します。
- <入力用>
01 PERSONAL-DATA-IN. 05 P-NUMBER PIC 9(9) USAGE COMP. 05 P-NAME PIC X(50). 05 P-ADDRESS PIC X(100). 05 P-GIF PIC X(50).
- <出力用>
01 PERSONAL-DATA-OUT. 05 P-NUMBER PIC 9(9) USAGE COMP. 05 P-NAME PIC X(50). 05 P-ADDRESS PIC X(100). 05 P-GIF PIC X(100).
橙色の部分は条件によって生成文字列が異なります。
ウィザード処理で別名を指定した場合,次のファイル中のデータ名は,すべて別名に置き換わります。
package パッケージ名; import jp.co.hitachi_sk.j2cb.*; public class クラス名 extends TP1RPC { /* *Generated by TP1/COBOL adapter for Cosminexus Version 2 02-10 *DO NOT EDIT THIS FILE *2007/09/28 */ private static final long serialVersionUID = 1153786728653L; private static boolean noload = true; //入力項目 private static final int inIndex = 0; protected static GroupAccess myInGroup = null; //出力項目 private static final int outIndex = 1; protected static GroupAccess myOutGroup = null; /** *コンストラクタ */ public クラス名() { super(); //データアクセスのための情報を設定 setInSize(204); setInLvl("01,05,05,05,05"); setInName("personal_data_in,p_number,p_name,p_address,p_gif"); setInType("G,UI0900,C(50),C(100),C(50)"); setInAddress("0,0,4,54,154"); setOutSize(254); setOutLvl("01,05,05,05,05"); setOutName("personal_data_out,p_number,p_name,p_address,p_gif"); setOutType("G,UI0900,C(50),C(100),C(100)"); setOutAddress("0,0,4,54,154"); } /** *初期化処理 */ private void init( ) throws J2CBException { //初期ロードのみ実行する if (noload) { init2(); } else { setInformation(myInGroup, myOutGroup); } } /** *初期化処理2 */ private synchronized void init2( ) throws J2CBException { if (noload) { makeGroupAccess(); myInGroup = inGroup; myOutGroup = outGroup; noload = false; } else { setInformation(myInGroup, myOutGroup); } } /** *RPC */ public void call( int cltid, String group, String service, int flags) throws J2CBException { init(); super.call(cltid, group, service, flags); } public void callTo( int cltid, String hostnm, int scdport, String group, String service, int flags) throws J2CBException { init(); super.callTo(cltid, hostnm, scdport, group, service, flags); } public void send( int cltid, String hostname, int portnum, int flags) throws J2CBException { init(); super.send(cltid, hostname, portnum, flags); } public void receive( int cltid, int timeout, int flags) throws J2CBException { init(); super.receive(cltid, timeout, flags); } public void receive2( int cltid, int timeout, int flags) throws J2CBException { init(); super.receive2(cltid, timeout, flags); } //入力項目用メソッド /** *p_numberI設定メソッド *@param p_numberI Integerオブジェクト */ public void setP_numberI( Object p_numberI) throws J2CBException { setInData(inIndex, "personal_data_in.p_number", p_numberI); } /** *p_nameI設定メソッド *@param p_nameI Stringオブジェクト */ public void setP_nameI( Object p_nameI) throws J2CBException { setInData(inIndex, "personal_data_in.p_name", p_nameI); } /** *p_addressI設定メソッド *@param p_addressI Stringオブジェクト */ public void setP_addressI( Object p_addressI) throws J2CBException { setInData(inIndex, "personal_data_in.p_address", p_addressI); } /** *p_gifI設定メソッド *@param p_gifI Stringオブジェクト */ public void setP_gifI( Object p_gifI) throws J2CBException { setInData(inIndex, "personal_data_in.p_gif", p_gifI); } //出力項目用メソッド /** *p_numberO取得メソッド *@return Integerオブジェクト */ public Object getP_numberO( ) throws J2CBException { return getOutData(outIndex, "personal_data_out.p_number"); } /** *p_nameO取得メソッド *@return Stringオブジェクト */ public Object getP_nameO( ) throws J2CBException { return getOutData(outIndex, "personal_data_out.p_name"); } /** *p_addressO取得メソッド *@return Stringオブジェクト */ public Object getP_addressO( ) throws J2CBException { return getOutData(outIndex, "personal_data_out.p_address"); } /** *p_gifO取得メソッド *@return Stringオブジェクト */ public Object getP_gifO( ) throws J2CBException { return getOutData(outIndex, "personal_data_out.p_gif"); } }
(2) OCCURS句がある場合
TP1/COBOLの引数にOCCURS句がある場合の例を次に示します。
01 G1. 02 G2 OCCURS 10. 03 B1 PIC X(50). //入力項目用メソッド /** *b1I設定メソッド *@param data Stringオブジェクト *@param dim1 int */ public void setB1I( Object data,int dim1) throws J2CBException { StringBuffer wkbuf; String acsstr1 = "g1.g2["; String acsstr2 = "].b1"; wkbuf = new StringBuffer(acsstr1); wkbuf.append(dim1); wkbuf.append(acsstr2); setInData(inIndex, wkbuf.toString(), data); } //出力項目用メソッド /** *b1O取得メソッド *@param dim1 int *@return Stringオブジェクト */ public Object getB1O( int dim1) throws J2CBException { StringBuffer wkbuf; String acsstr1 = "g1.g2["; String acsstr2 = "].b1"; wkbuf = new StringBuffer(acsstr1); wkbuf.append(dim1); wkbuf.append(acsstr2); return getOutData(outIndex, wkbuf.toString()); }
(3) OCCURS DEPENDING ON指定がある場合
TP1/COBOLの引数にOCCURS DEPENDING ON指定がある場合の例を次に示します。
01 G1. 02 I PIC S9(9) USAGE COMP. 02 G2 OCCURS 10 DEPENDING ON I. 03 B1 PIC X. package パッケージ名; import jp.co.hitachi_sk.j2cb.*; public class クラス名 extends TP1RPC { /* *Generated by TP1/COBOL adapter for Cosminexus Version 2 02-10 *DO NOT EDIT THIS FILE *2007/09/28 */ private static final long serialVersionUID = 1153786735781L; private static boolean noload = true; //入力項目 private static final int inIndex = 0; protected static GroupAccess myInGroup = null; //出力項目 private static final int outIndex = 1; protected static GroupAccess myOutGroup = null; /** *コンストラクタ */ public クラス名() throws J2CBException { super(); //データアクセスのための情報を設定 setInSize(14); setInLvl("01,02,02,03"); setInName("g1,i,g2[10],b1"); setInType("G,SI0900,G,C(1)"); setInAddress("0,0,4,4"); setOutSize(14); setOutLvl("01,02,02,03"); setOutName("g1,i,g2[10],b1"); setOutType("G,SI0900,G,C(1)"); setOutAddress("0,0,4,4"); init(); } /** *初期化処理 */ private void init( ) throws J2CBException { //初期ロードのみ実行する if (noload) { init2(); } else { setInformation(myInGroup, myOutGroup); } } /** *初期化処理2 */ private synchronized void init2( ) throws J2CBException { if (noload) { makeGroupAccess(); myInGroup = inGroup; myOutGroup = outGroup; noload = false; } else { setInformation(myInGroup, myOutGroup); } } /** *RPC */ public void call( int cltid, String group, String service, int flags) throws J2CBException { super.call(cltid, group, service, flags); calcTimes(); } public void callTo( int cltid, String hostnm, int scdport, String group, String service, int flags) throws J2CBException { super.callTo(cltid, hostnm, scdport, group, service, flags); calcTimes(); } public void send( int cltid, String hostname, int portnum, int flags) throws J2CBException { super.send(cltid, hostname, portnum, flags); } public void receive( int cltid, int timeout, int flags) throws J2CBException { super.receive(cltid, timeout, flags); calcTimes(); } public void receive2( int cltid, int timeout, int flags) throws J2CBException { super.receive2(cltid, timeout, flags); calcTimes(); } //入力項目用メソッド /** *iI設定メソッド *@param iI Integerオブジェクト */ public void setII( Object iI) throws J2CBException { setInData(inIndex, "g1.i", iI); int[] acsInt = {2}; InitInOcr(inIndex, acsInt, iI); } /** *b1I設定メソッド *@param data Stringオブジェクト *@param dim1 int */ public void setB1I( Object data,int dim1) throws J2CBException { StringBuffer wkbuf; String acsstr1 = "g1.g2["; String acsstr2 = "].b1"; wkbuf = new StringBuffer(acsstr1); wkbuf.append(dim1); wkbuf.append(acsstr2); setInData(inIndex, wkbuf.toString(), data); } //出力項目用メソッド /** *iO取得メソッド *@return Integerオブジェクト */ public Object getIO( ) throws J2CBException { return getOutData(outIndex, "g1.i"); } /** *b1O取得メソッド *@param dim1 int *@return Stringオブジェクト */ public Object getB1O( int dim1) throws J2CBException { StringBuffer wkbuf; String acsstr1 = "g1.g2["; String acsstr2 = "].b1"; wkbuf = new StringBuffer(acsstr1); wkbuf.append(dim1); wkbuf.append(acsstr2); return getOutData(outIndex, wkbuf.toString()); } /** *制御変数処理メソッド */ private void calcTimes( ) throws J2CBException { InitStart(); int[] acsInt1 = {2}; InitOutOcr(outIndex, acsInt1, getIO()); InitEnd(); } }