MappedRecordでのデータアクセス方法

本編では、MappedRecordを使ったデータアクセス方法の詳細について説明します。

MappedRecordで指定するCOBOL名標

MappedRecordでは、putメソッドやgetメソッドでCOBOL名標を指定してデータアクセスが行えます。
指定するCOBOL名標は、そのコピー句の中で一意名標でなければなりません。 単一名標で一意でない場合、"."(ピリオド)で修飾し一意化して指定します。

名標の一意化規則

名標の一意化規則について、基本項目の場合と集団項目の場合に分けてそれぞれ説明します。

[基本項目の場合]

[集団項目の場合]

データの設定/取得方法

データの設定/取得方法について、繰返しがない基本項目の場合、繰返しがある基本項目の場合、繰返しがない集団項目の場合、繰返しがある集団項目の場合に分けてそれぞれ説明します。

[データを設定する場合]

コーディング例については、[例 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) {
    }
}