|
|
WebOTX Manual V10.4 (第4版) 目次を表示 |
| MappedRecordでのデータアクセス方法 |
本編では、MappedRecordを使ったデータアクセス方法の詳細について説明します。
| MappedRecordで指定するCOBOL名標 |
MappedRecordでは、putメソッドやgetメソッドでCOBOL名標を指定してデータアクセスが行えます。
指定するCOBOL名標は、そのコピー句の中で一意名標でなければなりません。
単一名標で一意でない場合、"."(ピリオド)で修飾し一意化して指定します。
| 名標の一意化規則 |
名標の一意化規則について、基本項目の場合と集団項目の場合に分けてそれぞれ説明します。
[基本項目の場合]
05 OH095P-LMSG02. 06 LMSG02-INDIC. 07 SRNO-GMNID PIC X(6). ・・・@ 07 SRNO-ACC1CA PIC X(6). ・・・A |
左のコピー句の場合、基本項目@を表す一意名標は「SRNO-GMNID」、基本項目Aを表す一意名標は「SRNO-ACC1CA」となります。 |
05 YS127P-LMSG02. 06 LMSG02-SRNO. 07 SRNO-LFLD01. 08 SRNO-GUIDE PIC X(8). ・・・@ 07 SRNO-LFLD02. 08 SRNO-GUIDE PIC X(8). ・・・A |
左のコピー句の場合、基本項目@を表す一意名標は「SRNO-GUIDE.SRNO-LFLD01」、基本項目Aを表す一意名標は「SRNO-GUIDE.SRNO-LFLD02」となります。 |
05 LS059P-LMSG02.
06 LMSG02-SRNO.
07 SRNO-LFLD01.
08 SRNO-SRGUIDE.
09 SRNO-GUIDE PIC X(8). ・・・@
07 SRNO-LFLD02.
08 SRNO-SRGUIDE.
09 SRNO-GUIDE PIC X(8). ・・・A
|
n = 3の場合の例を示します。 左のコピー句の場合、基本項目@を表す一意名標は「SRNO-GUIDE.SRNO-SRGUIDE.SRNO-LFLD01」、基本項目Aを表す一意名標は「SRNO-GUIDE.SRNO-SRGUIDE.SRNO-LFLD02」となります。 |
[集団項目の場合]
05 AV527P-LMSG01. 06 LMSG02-SRNO. 07 SRNO-LFLD01.・・・@ 08 SRNO-GUIDE PIC X(4). 07 SRNO-LFLD02.・・・A 08 SRNO-GUIDE PIC X(4). |
左のコピー句の場合、集団項目@を表す一意名標は「SRNO-LFLD01」、集団項目Aを表す一意名標は「SRNO-LFLD02」となります。 |
05 UR145P-LMSG01.
06 LMSG02-SRNO.
07 SRNO-LFLD01.
08 SRNO-SRGUIDE. ・・・@
09 SRNO-GUIDE PIC X(8).
07 SRNO-LFLD02.
08 SRNO-SRGUIDE. ・・・A
09 SRNO-GUIDE PIC X(8).
|
左のコピー句の場合、集団項目@を表す一意名標は「SRNO-SRGUIDE.SRNO-LFLD01」、集団項目Aを表す一意名標は「SRNO-SRGUIDE.SRNO-LFLD02」となります。 |
05 TW524P-LMSG01.
06 LMSG01-SRNO.
07 SRNO-LFLD01.
08 SRNO-SRGUIDE. ・・・@
09 SRNO-GUIDE PIC X(8).
06 LMSG02-SRNO.
07 SRNO-LFLD01.
08 SRNO-SRGUIDE. ・・・A
09 SRNO-GUIDE PIC X(8).
|
n = 3の場合の例を示します。 左のコピー句の場合、集団項目@を表す一意名標は「SRNO-SRGUIDE.SRNO-LFLD01.LMSG01-SRNO」、集団項目Aを表す一意名標は「SRNO-SRGUIDE.SRNO-LFLD01.LMSG02-SRNO」となります。 |
| データの設定/取得方法 |
データの設定/取得方法について、繰返しがない基本項目の場合、繰返しがある基本項目の場合、繰返しがない集団項目の場合、繰返しがある集団項目の場合に分けてそれぞれ説明します。
[データを設定する場合]
| コーディング例については、[例 1]を参照してください。 |
| コーディング例については、[例 2]を参照してください。 |
| コーディング例については、[例 3]を参照してください。 |
| コーディング例については、[例 4]を参照してください。 |
[データを取得する場合]
| コーディング例については、[例 1]を参照してください。 |
| コーディング例については、[例 2]を参照してください。 |
| コーディング例については、[例 3]を参照してください。 |
| コーディング例については、[例 4]を参照してください。 |
| コーディング例 |
APコンポーネントからMappedRecordを使って送信/受信データを設定/取得する場合のコーディング例を示します。
[例 1]
05 TW524P-LMSG01.
06 LMSG-SRNO.
07 SRNO-LFLD01.
08 SRNO-SRGUIDE.
09 SRNO-GUIDE PIC X(8).
07 SRNO-LFLD02.
08 SRNO-SRGUIDE.
09 SRNO-B2620 PIC X(8).
|
String inGUIDE = "data";
String inB2620 = "data";
String outGUIDE = null;
String outB2620= null;
Connection con = null;
Interaction inter = null;
try {
Context ic = new InitialContext();
ConnectionFactory cf
= (ConnectionFactory) ic.lookup("java:comp/env/ACOSAdapt");
// Connectionの取得
con = cf.getConnection();
// Interactionの取得
inter = con.createInteraction();
InteractionSpecImpl spec = new InteractionSpecImpl();
spec.setTXID("MU0010");
RecordFactory rf = cf.getRecordFactory();
// 送信電文の形式に対応したレコード名を指定してRecordを生成
MappedRecord inMap = rf.createMappedRecord("RECNAME");
// 受信電文の形式が決まっていない場合は
// レコード名に空文字を指定してRecordを生成
MappedRecord outMap = rf.createMappedRecord("");
// 上り電文設定
inMap.put("SRNO-GUIDE", inGUIDE);
inMap.put("SRNO-B2620", inB2620);
// EISとの通信
inter.execute(spec, inMap, outMap);
// 下り電文取得
outGUIDE = (String)outMap.get("SRNO-GUIDE");
outB2620 = (String)outMap.get("SRNO-B2620");
} catch (Exception ex) {
throw ex;
} finally {
try {
if (null != inter) {
inter.close(); // Interactionの解放
}
if (null != con) {
con.close(); // Connectionの解放
}
} catch (Exception e) {
}
}
|
[例 2]
05 DF312P-LMSG01. 06 LMSG01-SRNI. 07 SRNI-CURSOR PIC X(8) OCCURS 2 TIMES. |
String[] inCURSOR = { "data", "data" };
String[] outCURSOR = new String[2];
Connection con = null;
Interaction inter = null;
try {
Context ic = new InitialContext();
ConnectionFactory cf
= (ConnectionFactory) ic.lookup("java:comp/env/ACOSAdapt");
// Connectionの取得
con = cf.getConnection();
// Interactionの取得
inter = con.createInteraction();
InteractionSpecImpl spec = new InteractionSpecImpl();
spec.setTXID("MU0010");
RecordFactory rf = cf.getRecordFactory();
// 送信電文の形式に対応したレコード名を指定してRecordを生成
MappedRecord inMap = rf.createMappedRecord("RECNAME");
// 受信電文の形式が決まっていない場合は
// レコード名に空文字を指定してRecordを生成
MappedRecord outMap = rf.createMappedRecord("");
// 上り電文設定
IndexedRecord inIndCURSOR = rf.createIndexedRecord("RECNAME");
for (int i = 0; i < 2; i++) {
inIndCURSOR.add(i, inCURSOR[i]);
}
inMap.put("SRNI-CURSOR", inIndCURSOR);
// EISとの通信
inter.execute(spec, inMap, outMap);
// 下り電文取得
IndexedRecord outIndCURSOR
= (IndexedRecord) outMap.get("SRNI-CURSOR");
for (int i = 0; i < 2; i++) {
outCURSOR[i] = (String) outIndCURSOR.get(i);
}
} catch (Exception ex) {
throw ex;
} finally {
try {
if (null != inter) {
inter.close(); // Interactionの解放
}
if (null != con) {
con.close(); // Connectionの解放
}
} catch (Exception e) {
}
}
|
[例 3]
05 TA232T-LMSG01. 06 LMSG01-SRNO. 07 LMSG01-INDIC. 08 LMSG01-IND01 PIC X(6). 08 LMSG01-IND02 PIC X(6). 07 LMSG02-INDIC. 08 LMSG01-IND01 PIC X(6). 08 LMSG01-IND02 PIC X(6). |
String inIND01_01 = "data";
String inIND02_01 = "data";
String inIND01_02 = "data";
String inIND02_02 = "data";
String outIND01_01 = null;
String outIND02_01 = null;
String outIND01_02 = null;
String outIND02_02 = null;
Connection con = null;
Interaction inter = null;
try {
Context ic = new InitialContext();
ConnectionFactory cf
= (ConnectionFactory) ic.lookup("java:comp/env/ACOSAdapt");
// Connectionの取得
con = cf.getConnection();
// Interactionの取得
inter = con.createInteraction();
InteractionSpecImpl spec = new InteractionSpecImpl();
spec.setTXID("MU0010");
RecordFactory rf = cf.getRecordFactory();
// 送信電文の形式に対応したレコード名を指定してRecordを生成
MappedRecord inMap = rf.createMappedRecord("RECNAME");
// 受信電文の形式が決まっていない場合は
// レコード名に空文字を指定してRecordを生成
MappedRecord outMap = rf.createMappedRecord("");
// 上り電文設定
MappedRecord inMap01INDIC = rf.createMappedRecord("RECNAME");
inMap01INDIC.put("LMSG01-IND01", inIND01_01);
inMap01INDIC.put("LMSG01-IND02", inIND02_01);
MappedRecord inMap02INDIC = rf.createMappedRecord("RECNAME");
inMap02INDIC.put("LMSG01-IND01", inIND01_02);
inMap02INDIC.put("LMSG01-IND02", inIND02_02);
inMap.put("LMSG01-INDIC", inMap01INDIC);
inMap.put("LMSG02-INDIC", inMap02INDIC);
// EISとの通信
inter.execute(spec, inMap, outMap);
// 下り電文取得
MappedRecord outMap01INDIC
= (MappedRecord) outMap.get("LMSG01-INDIC");
MappedRecord outMap02INDIC
= (MappedRecord) outMap.get("LMSG02-INDIC");
outIND01_01 = (String) outMap01INDIC.get("LMSG01-IND01");
outIND02_01 = (String) outMap01INDIC.get("LMSG01-IND02");
outIND01_02 = (String) outMap02INDIC.get("LMSG01-IND01");
outIND02_02 = (String) outMap02INDIC.get("LMSG01-IND02");
} catch (Exception ex) {
throw ex;
} finally {
try {
if (null != inter) {
inter.close(); // Interactionの解放
}
if (null != con) {
con.close(); // Connectionの解放
}
} catch (Exception e) {
}
}
|
[例 4]
05 TA232T-LMSG02. 06 LMSG02-INDIC OCCURS 2 TIMES. 07 LMSG02-IND01 PIC X(6). 07 LMSG02-IND02 PIC X(6). 07 LMSG02-IND03 PIC X(6). |
String[] inIND01 = { "data", "data" };
String[] inIND02 = { "data", "data" };
String[] inIND03 = { "data", "data" };
String[] outIND01 = new String[2];
String[] outIND02 = new String[2];
String[] outIND03 = new String[2];
Connection con = null;
Interaction inter = null;
try {
Context ic = new InitialContext();
ConnectionFactory cf
= (ConnectionFactory) ic.lookup("java:comp/env/ACOSAdapt");
// Connectionの取得
con = cf.getConnection();
// Interactionの取得
inter = con.createInteraction();
InteractionSpecImpl spec = new InteractionSpecImpl();
spec.setTXID("MU0010");
RecordFactory rf = cf.getRecordFactory();
// 送信電文の形式に対応したレコード名を指定してRecordを生成
MappedRecord inMap = rf.createMappedRecord("RECNAME");
// 受信電文の形式が決まっていない場合は
// レコード名に空文字を指定してRecordを生成
MappedRecord outMap = rf.createMappedRecord("");
// 上り電文設定
IndexedRecord inIndINDIC = rf.createIndexedRecord("RECNAME");
for (int i = 0; i < 2; i++) {
MappedRecord inMapINDIC = rf.createMappedRecord("RECNAME");
inMapINDIC.put("LMSG02-IND01", inIND01[i]);
inMapINDIC.put("LMSG02-IND02", inIND02[i]);
inMapINDIC.put("LMSG02-IND03", inIND03[i]);
inIndINDIC.add(i, inMapINDIC);
}
inMap.put("LMSG02-INDIC", inIndINDIC);
// EISとの通信
inter.execute(spec, inMap, outMap);
// 下り電文取得
IndexedRecord outIndINDIC
= (IndexedRecord) outMap.get("LMSG02-INDIC");
for (int i = 0; i < 2; i++) {
MappedRecord outMapINDIC = (MappedRecord) outIndINDIC.get(i);
outIND01[i] = (String) outMapINDIC.get("LMSG02-IND01");
outIND02[i] = (String) outMapINDIC.get("LMSG02-IND02");
outIND03[i] = (String) outMapINDIC.get("LMSG02-IND03");
}
} catch (Exception ex) {
throw ex;
} finally {
try {
if (null != inter) {
inter.close(); // Interactionの解放
}
if (null != con) {
con.close(); // Connectionの解放
}
} catch (Exception e) {
}
}
|
String[] inIND01 = { "data", "data" };
String[] inIND02 = { "data", "data" };
String[] inIND03 = { "data", "data" };
String[] outIND01 = new String[2];
String[] outIND02 = new String[2];
String[] outIND03 = new String[2];
Connection con = null;
Interaction inter = null;
try {
Context ic = new InitialContext();
ConnectionFactory cf
= (ConnectionFactory) ic.lookup("java:comp/env/ACOSAdapt");
// Connectionの取得
con = cf.getConnection();
// Interactionの取得
inter = con.createInteraction();
InteractionSpecImpl spec = new InteractionSpecImpl();
spec.setTXID("MU0010");
RecordFactory rf = cf.getRecordFactory();
// 送信電文の形式に対応したレコード名を指定してRecordを生成
MappedRecord inMap = rf.createMappedRecord("RECNAME");
// 受信電文の形式が決まっていない場合は
// レコード名に空文字を指定してRecordを生成
MappedRecord outMap = rf.createMappedRecord("");
// 上り電文設定
IndexedRecord inIndINDIC = rf.createIndexedRecord("RECNAME");
MappedRecord[] inMapINDIC = {null, null};
for (int i = 0; i < 2; i++) {
inMapINDIC[i] = rf.createMappedRecord("RECNAME");
}
for (int i = 0; i < 2; i++) {
inMapINDIC[i].put("LMSG02-IND01", inIND01[i]);
}
for (int i = 0; i < 2; i++) {
inMapINDIC[i].put("LMSG02-IND02", inIND02[i]);
}
for (int i = 0; i < 2; i++) {
inMapINDIC[i].put("LMSG02-IND03", inIND03[i]);
}
for (int i = 0; i < 2; i++) {
inIndINDIC.add(i, inMapINDIC[i]);
}
inMap.put("LMSG02-INDIC", inIndINDIC);
// EISとの通信
inter.execute(spec, inMap, outMap);
// 下り電文取得
IndexedRecord outIndINDIC
= (IndexedRecord) outMap.get("LMSG02-INDIC");
MappedRecord[] outMapINDIC = {null, null};
for (int i = 0; i < 2; i++) {
outMapINDIC[i] = (MappedRecord) outIndINDIC.get(i);
}
for (int i = 0; i < 2; i++) {
outIND01[i] = (String) outMapINDIC[i].get("LMSG02-IND01");
}
for (int i = 0; i < 2; i++) {
outIND02[i] = (String) outMapINDIC[i].get("LMSG02-IND02");
}
for (int i = 0; i < 2; i++) {
outIND03[i] = (String) outMapINDIC[i].get("LMSG02-IND03");
}
} catch (Exception ex) {
throw ex;
} finally {
try {
if (null != inter) {
inter.close(); // Interactionの解放
}
if (null != con) {
con.close(); // Connectionの解放
}
} catch (Exception e) {
}
}
|