S1F1RAre You Online? Sent by Host and Equipment

    // S1F1R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 1, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 1)) {recvS1F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S1F1R

S1F2On Line Data Different Host and Equipment Use

    // S1F2 Java Parse Equipment reply 
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(1, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 MDLN SOFTREV
        // variables for data items and parsing
        String MDLN;  	// A:20 (always)  equipment model type
        String SOFTREV;  	// A:20 (always)  software revision
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)
    // S1F2 Java Parse Host reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(1, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:0
        // variables for data items and parsing
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 1 || list0[0] != "L:0") { ok = false; break; }
           // single token data such as L:0 or U4:0 has been received as expected
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S1F3RSelected Equipment Status Request Sent by Host Only

    // S1F3R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 1, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 3)) {recvS1F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n SVID
        // variables for data items and parsing
        String SVID;  	// U4:1 (varies)  status variable ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { SVID = list1[1];} else { SVID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S1F3R

S1F4Selected Equipment Status Data Sent by Equipment Only

    // S1F4 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(1, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n SV
        // variables for data items and parsing
        String SV;  	// A:n (varies)  status variable value
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { SV = list1[1];} else { SV = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S1F5RFormatted Status Request Sent by Host Only

    // S1F5R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 1, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 5)) {recvS1F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect SFCD
        // variables for data items and parsing
        int SFCD;  	// B:1 (always)  status form code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           SFCD = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S1F5R

S1F6Formatted Status Data Sent by Equipment Only

    // S1F6 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(1, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n SV
        // variables for data items and parsing
        String SV;  	// A:n (varies)  status variable value
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { SV = list1[1];} else { SV = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S1F7Fixed Form Request Sent by Host Only

    // S1F7 Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 1, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 7)) {recvS1F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect SFCD
        // variables for data items and parsing
        int SFCD;  	// B:1 (always)  status form code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           SFCD = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S1F7

S1F8Fixed Form Data Sent by Equipment Only

    // S1F8 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(1, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:2 SVNAME SV0}
        // variables for data items and parsing
        String SVNAME;  	// A:n (always)  status variable name
        String SV0;  	// A:0 (varies)  Zero length value used to convey format type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 3) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { SVNAME = list2[1];} else { SVNAME = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { SV0 = list2[1];} else { SV0 = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S1F9RMaterial Transfer Status Request Sent by Host Only

    // S1F9R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 1, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 9)) {recvS1F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S1F9R

S1F10Material Transfer Status Data Sent by Equipment Only

    // S1F10 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(1, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 TSIP TSOP
        // variables for data items and parsing
        int [] TSIP;  	// B:n (always)  transfer status of input ports
        int [] TSOP;  	// B:n (always)  transfer status of output ports
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("B:")) { ok = false; break; }
           TSIP = new int[list1.length-1];
           for(int i=0; i < TSIP.length; i++) {
               TSIP[i] = sp.binToInt(list1[1+i]);
               }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("B:")) { ok = false; break; }
           TSOP = new int[list1.length-1];
           for(int i=0; i < TSOP.length; i++) {
               TSOP[i] = sp.binToInt(list1[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S1F11RStatus Variable Namelist Request Sent by Host Only

    // S1F11R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 1, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 11)) {recvS1F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n SVID
        // variables for data items and parsing
        String SVID;  	// U4:1 (varies)  status variable ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { SVID = list1[1];} else { SVID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S1F11R

S1F12Status Variable Namelist Reply Sent by Equipment Only

    // S1F12 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(1, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:3 SVID SVNAME UNITS}
        // variables for data items and parsing
        String SVID;  	// U4:1 (varies)  status variable ID
        String SVNAME;  	// A:n (always)  status variable name
        String UNITS;  	// A:n (always)  units identifier (see E5 Section 9)
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 4) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { SVID = list2[1];} else { SVID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { SVNAME = list2[1];} else { SVNAME = ""; }
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { UNITS = list2[1];} else { UNITS = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S1F13REstablish Communications Request Different Host and Equipment Use

    // S1F13R Java Receive Equipment message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 1, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 13)) {recvS1F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 MDLN SOFTREV
        // variables for data items and parsing
        String MDLN;  	// A:20 (always)  equipment model type
        String SOFTREV;  	// A:20 (always)  software revision
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S1F13R
    // S1F13R Java Receive Host message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 1, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 13)) {recvS1F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:0
        // variables for data items and parsing
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 1 || list0[0] != "L:0") { ok = false; break; }
           // single token data such as L:0 or U4:0 has been received as expected
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S1F13R

S1F14Establish Communications Request Acknowledge Different Host and Equipment Use

    // S1F14 Java Parse Equipment reply 
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(1, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 COMMACK {L:2 MDLN SOFTREV}
        // variables for data items and parsing
        int COMMACK;  	// B:1 (always)  establish communications acknowledgement code
        String MDLN;  	// A:20 (always)  equipment model type
        String SOFTREV;  	// A:20 (always)  software revision
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           COMMACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { MDLN = list2[1];} else { MDLN = ""; }
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { SOFTREV = list2[1];} else { SOFTREV = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)
    // S1F14 Java Parse Host reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(1, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 COMMACK L:0
        // variables for data items and parsing
        int COMMACK;  	// B:1 (always)  establish communications acknowledgement code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           COMMACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length != 1 || list1[0] != "L:0") { ok = false; break; }
           // single token data such as L:0 or U4:0 has been received as expected
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S1F15RRequest OFF-LINE Sent by Host Only

    // S1F15R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 1, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 15)) {recvS1F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S1F15R

S1F16OFF-LINE Acknowledge Sent by Equipment Only

    // S1F16 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(1, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect OFLACK
        // variables for data items and parsing
        int OFLACK;  	// B:1 (always)  offline acknowledge, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           OFLACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S1F17RRequest ON-LINE Sent by Host Only

    // S1F17R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 1, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 17)) {recvS1F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S1F17R

S1F18ON-LINE Acknowledge Sent by Equipment Only

    // S1F18 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(1, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ONLACK
        // variables for data items and parsing
        int ONLACK;  	// B:1 (always)  online acknowledge, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ONLACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S1F19RGet Attribute Sent by Host and Equipment

    // S1F19R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 1, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 19)) {recvS1F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 OBJTYPE {L:m OBJID} {L:n ATTRID}
        // variables for data items and parsing
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { OBJID = list2[1];} else { OBJID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ATTRID = list2[1];} else { ATTRID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S1F19R

S1F20Attribute Data Sent by Host and Equipment

    // S1F20 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(1, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:m {L:n ATTRDATA}} {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length < 1) { ok=false; break; }
               for(int n=1; n < list2.length; n++) {
                   String [] list3;
                   list3 = TclList.split(list2[n]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S1F21RData Variable Namelist Request Sent by Host Only

    // S1F21R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 1, 21, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 21)) {recvS1F21(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n VID
        // variables for data items and parsing
        String VID;  	// A:n (varies)  A variable ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { VID = list1[1];} else { VID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 22, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S1F21R

S1F22Data Variable Namelist Reply Sent by Equipment Only

    // S1F22 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(1, 21, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:3 VID DVVALNAME UNITS}
        // variables for data items and parsing
        String VID;  	// A:n (varies)  A variable ID
        String DVVALNAME;  	// A:n (always)  a descriptive name for a Data Value variable (DVVAL)
        String UNITS;  	// A:n (always)  units identifier (see E5 Section 9)
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 4) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { VID = list2[1];} else { VID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { DVVALNAME = list2[1];} else { DVVALNAME = ""; }
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { UNITS = list2[1];} else { UNITS = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S1F23RCollection Event Namelist Request Sent by Host Only

    // S1F23R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 1, 23, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 1) && (function = 23)) {recvS1F23(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS1F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n CEID
        // variables for data items and parsing
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(1, 24, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S1F23R

S1F24Collection Event Namelist Reply Sent by Equipment Only

    // S1F24 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(1, 23, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:3 CEID CENAME {L:a VID}}
        // variables for data items and parsing
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String CENAME;  	// A:n (always)  a descriptive name for a Data Collection Event
        String VID;  	// A:n (varies)  A variable ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 4) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { CEID = list2[1];} else { CEID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { CENAME = list2[1];} else { CENAME = ""; }
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok=false; break; }
               for(int a=1; a < list2.length; a++) {
                   String [] list3;
                   list3 = TclList.split(list2[a]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { VID = list3[1];} else { VID = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F1Service Program Load Inquire Sent by Host and Equipment

    // S2F1 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 2, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 1)) {recvS2F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 SPID LENGTH
        // variables for data items and parsing
        String SPID;  	// A:6 (always)  service program identifier
        int LENGTH;  	// U4:1 (always)  program length in bytes
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SPID = list1[1];} else { SPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           LENGTH = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S2F1

S2F2Service Program Load Grant Sent by Host and Equipment

    // S2F2 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(2, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect GRANT
        // variables for data items and parsing
        int GRANT;  	// B:1 (always)  multiblock grant code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           GRANT = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F3Service Program Send Sent by Host and Equipment

    // S2F3 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 2, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 3)) {recvS2F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect SPD
        // variables for data items and parsing
        int [] SPD;  	// B:n (always)  service program data
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           SPD = new int[list0.length-1];
           for(int i=0; i < SPD.length; i++) {
               SPD[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S2F3

S2F4Service Program Send Acknowledge Sent by Host and Equipment

    // S2F4 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(2, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect SPAACK
        // variables for data items and parsing
        int SPAACK;  	// U1:1 (always)  service completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           SPAACK = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F5Service Program Load Request Sent by Host and Equipment

    // S2F5 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 2, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 5)) {recvS2F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect SPID
        // variables for data items and parsing
        String SPID;  	// A:6 (always)  service program identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { SPID = list0[1];} else { SPID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S2F5

S2F6Service Program Load Data Sent by Host and Equipment

    // S2F6 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(2, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect SPD
        // variables for data items and parsing
        int [] SPD;  	// B:n (always)  service program data
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           SPD = new int[list0.length-1];
           for(int i=0; i < SPD.length; i++) {
               SPD[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F7Service Program Run Send Sent by Host and Equipment

    // S2F7 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 2, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 7)) {recvS2F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect SPID
        // variables for data items and parsing
        String SPID;  	// A:6 (always)  service program identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { SPID = list0[1];} else { SPID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S2F7

S2F8Service Program Run Acknowledge Sent by Host and Equipment

    // S2F8 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(2, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect CSAACK
        // variables for data items and parsing
        int CSAACK;  	// U1:1 (always)  equipment acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           CSAACK = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F9Service Program Results Request Sent by Host and Equipment

    // S2F9 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 2, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 9)) {recvS2F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect SPID
        // variables for data items and parsing
        String SPID;  	// A:6 (always)  service program identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { SPID = list0[1];} else { SPID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S2F9

S2F10Service Program Results Data Sent by Host and Equipment

    // S2F10 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(2, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect SPR
        // variables for data items and parsing
        String SPR;  	// A:n (varies)  device dependent, any data type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { SPR = list0[1];} else { SPR = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F11Service Program Directory Request Sent by Host and Equipment

    // S2F11 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 2, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 11)) {recvS2F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S2F11

S2F12Service Program Directory Data Sent by Host and Equipment

    // S2F12 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(2, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n SPID
        // variables for data items and parsing
        String SPID;  	// A:6 (always)  service program identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (!list1[0].startsWith("A:")) { ok = false; break; }
               if (list1.length == 2) { SPID = list1[1];} else { SPID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F13REquipment Constant Request Sent by Host Only

    // S2F13R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 13)) {recvS2F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n ECID
        // variables for data items and parsing
        String ECID;  	// U4:1 (varies)  equipment constant ID, GEM requires U4
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { ECID = list1[1];} else { ECID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F13R

S2F14Equipment Constant Data Sent by Equipment Only

    // S2F14 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n ECV
        // variables for data items and parsing
        String ECV;  	// A:n (varies)  equipment constant value, any scalar type (constant is a misnomer)
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { ECV = list1[1];} else { ECV = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F15RNew Equipment Constant Send Sent by Host Only

    // S2F15R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 15)) {recvS2F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n {L:2 ECID ECV}
        // variables for data items and parsing
        String ECID;  	// U4:1 (varies)  equipment constant ID, GEM requires U4
        String ECV;  	// A:n (varies)  equipment constant value, any scalar type (constant is a misnomer)
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 3) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ECID = list2[1];} else { ECID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ECV = list2[1];} else { ECV = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F15R

S2F16New Equipment Constant Ack Sent by Equipment Only

    // S2F16 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect EAC
        // variables for data items and parsing
        int EAC;  	// B:1 (always)  equipment acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           EAC = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F17RDate and Time Request Sent by Host and Equipment

    // S2F17R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 2, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 17)) {recvS2F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S2F17R

S2F18Date and Time Data Sent by Host and Equipment

    // S2F18 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(2, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect TIME
        // variables for data items and parsing
        String TIME;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { TIME = list0[1];} else { TIME = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F19RReset/Initialize Send Sent by Host Only

    // S2F19R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 19)) {recvS2F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect RIC
        // variables for data items and parsing
        String RIC;  	// U1:1 (varies)  reset code, 1 means power up reset
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { RIC = list0[1];} else { RIC = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F19R

S2F20Reset Acknowledge Sent by Equipment Only

    // S2F20 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect RAC
        // variables for data items and parsing
        String RAC;  	// U1:1 (varies)  reset acknowledge
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { RAC = list0[1];} else { RAC = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F21[R]Remote Command Send Sent by Host Only

    // S2F21 Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 21, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 21)) {recvS2F21(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect RCMD
        // variables for data items and parsing
        String RCMD;  	// A:n (varies)  remote command, GEM requires a maximum length of 20 printable characters, taken from hex 21-7E (no spaces)
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { RCMD = list0[1];} else { RCMD = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 22, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F21

S2F22Remote Command Acknowledge Sent by Equipment Only

    // S2F22 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 21, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect CMDA
        // variables for data items and parsing
        int CMDA;  	// B:1 (always)  command acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           CMDA = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F23RTrace Initialize Send Sent by Host Only

    // S2F23R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 23, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 23)) {recvS2F23(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 TRID DSPER TOTSMP REPGSZ {L:n SVID}
        // variables for data items and parsing
        String TRID;  	// A:n (varies)  trace request ID
        String DSPER;  	// A:6 (varies)  data sample period, hhmmss is always supported, A:8 hhmmsscc may be supported
        String TOTSMP;  	// U4:1 (varies)  total samples to be made, should be an even multiple of REPGSZ
        String REPGSZ;  	// U4:1 (varies)  reporting group size, TOTSMP modulo REPGSZ should be 0
        String SVID;  	// U4:1 (varies)  status variable ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DSPER = list1[1];} else { DSPER = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TOTSMP = list1[1];} else { TOTSMP = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { REPGSZ = list1[1];} else { REPGSZ = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { SVID = list2[1];} else { SVID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 24, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F23R

S2F24Trace Initialize Acknowledge Sent by Equipment Only

    // S2F24 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 23, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect TIAACK
        // variables for data items and parsing
        int TIAACK;  	// B:1 (always)  trace acknowledgement code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           TIAACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F25RLoopback Diagnostic Request Sent by Host and Equipment

    // S2F25R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 2, 25, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 25)) {recvS2F25(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect ABS
        // variables for data items and parsing
        int [] ABS;  	// B:n (always)  any binary string 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           ABS = new int[list0.length-1];
           for(int i=0; i < ABS.length; i++) {
               ABS[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 26, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S2F25R

S2F26Loopback Diagnostic Data Sent by Host and Equipment

    // S2F26 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(2, 25, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ABS
        // variables for data items and parsing
        int [] ABS;  	// B:n (always)  any binary string 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           ABS = new int[list0.length-1];
           for(int i=0; i < ABS.length; i++) {
               ABS[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F27RInitiate Processing Request Sent by Host Only

    // S2F27R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 27, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 27)) {recvS2F27(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 LOC PPID {L:n MID}
        // variables for data items and parsing
        int LOC;  	// B:1 (always)  material location code
        String PPID;  	// A:80 (varies)  process program ID
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           LOC = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { MID = list2[1];} else { MID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 28, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F27R

S2F28Initiate Processing Acknowledge Sent by Equipment Only

    // S2F28 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 27, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect CMDA
        // variables for data items and parsing
        int CMDA;  	// B:1 (always)  command acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           CMDA = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F29REquipment Constant Namelist Request Sent by Host Only

    // S2F29R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 29, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 29)) {recvS2F29(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n ECID
        // variables for data items and parsing
        String ECID;  	// U4:1 (varies)  equipment constant ID, GEM requires U4
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { ECID = list1[1];} else { ECID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 30, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F29R

S2F30Equipment Constant Namelist Sent by Equipment Only

    // S2F30 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 29, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:6 ECID ECNAME ECMIN ECMAX ECDEF UNITS}
        // variables for data items and parsing
        String ECID;  	// U4:1 (varies)  equipment constant ID, GEM requires U4
        String ECNAME;  	// A:n (always)  equipment constant name
        String ECMIN;  	// A:n (varies)  equipment constant minimum value, any scalar type
        String ECMAX;  	// A:n (varies)  equipment constant maximum value, any scalar type
        String ECDEF;  	// A:n (varies)  equipment constant default value
        String UNITS;  	// A:n (always)  units identifier (see E5 Section 9)
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 7) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ECID = list2[1];} else { ECID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { ECNAME = list2[1];} else { ECNAME = ""; }
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ECMIN = list2[1];} else { ECMIN = ""; }
               list2 = TclList.split(list1[4]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ECMAX = list2[1];} else { ECMAX = ""; }
               list2 = TclList.split(list1[5]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ECDEF = list2[1];} else { ECDEF = ""; }
               list2 = TclList.split(list1[6]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { UNITS = list2[1];} else { UNITS = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F31RDate and Time Set Request Sent by Host Only

    // S2F31R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 31, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 31)) {recvS2F31(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect TIME
        // variables for data items and parsing
        String TIME;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { TIME = list0[1];} else { TIME = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 32, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F31R

S2F32Date and Time Set Acknowledge Sent by Equipment Only

    // S2F32 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 31, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect TIACK
        // variables for data items and parsing
        int TIACK;  	// B:1 (always)  time set acknowledge
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           TIACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F33RDefine Report Sent by Host Only

    // S2F33R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 33, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 33)) {recvS2F33(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DATAID {L:a {L:2 RPTID {L:b VID}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String RPTID;  	// U4:1 (varies)  report ID
        String VID;  	// A:n (varies)  A variable ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int b=1; b < list3.length; b++) {
                   String [] list4;
                   list4 = TclList.split(list3[b]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { VID = list4[1];} else { VID = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 34, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F33R

S2F34Define Report Acknowledge Sent by Equipment Only

    // S2F34 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 33, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect DRACK
        // variables for data items and parsing
        int DRACK;  	// B:1 (always)  define report acknowledge
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           DRACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F35RLink Event Report Sent by Host Only

    // S2F35R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 35, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 35)) {recvS2F35(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F35(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DATAID {L:a {L:2 CEID {L:b RPTID}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String RPTID;  	// U4:1 (varies)  report ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CEID = list3[1];} else { CEID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int b=1; b < list3.length; b++) {
                   String [] list4;
                   list4 = TclList.split(list3[b]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { RPTID = list4[1];} else { RPTID = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 36, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F35R

S2F36Link Event Report Acknowledge Sent by Equipment Only

    // S2F36 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 35, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect LRACK
        // variables for data items and parsing
        int LRACK;  	// B:1 (always)  link report acknowledge
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           LRACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F37REnable/Disable Event Report Sent by Host Only

    // S2F37R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 37, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 37)) {recvS2F37(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F37(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 CEED {L:n CEID}
        // variables for data items and parsing
        int CEED;  	// TF:1 (always)  collection event or trace enablement, true is enabled
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           CEED = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { CEID = list2[1];} else { CEID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 38, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F37R

S2F38Enable/Disable Event Report Acknowledge Sent by Equipment Only

    // S2F38 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 37, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ERACK
        // variables for data items and parsing
        int ERACK;  	// B:1 (always)  enable/disable event report acknowledge
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ERACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F39RMulti-block Inquire Sent by Host Only

    // S2F39R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 39, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 39)) {recvS2F39(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F39(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DATAID DATALENGTH
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 40, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F39R

S2F40Multi-block Grant Sent by Equipment Only

    // S2F40 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 39, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect GRANT
        // variables for data items and parsing
        int GRANT;  	// B:1 (always)  multiblock grant code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           GRANT = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F41RHost Command Send Sent by Host Only

    // S2F41R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 41, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 41)) {recvS2F41(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F41(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 RCMD {L:n {L:2 CPNAME CPVAL}}
        // variables for data items and parsing
        String RCMD;  	// A:n (varies)  remote command, GEM requires a maximum length of 20 printable characters, taken from hex 21-7E (no spaces)
        String CPNAME;  	// A:n (varies)  command parameter name
        String CPVAL;  	// A:n (varies)  command parameter value, any scalar type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RCMD = list1[1];} else { RCMD = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CPVAL = list3[1];} else { CPVAL = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 42, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F41R

S2F42Host Command Acknowledge Sent by Equipment Only

    // S2F42 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 41, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 HCACK {L:n {L:2 CPNAME CPACK}}
        // variables for data items and parsing
        int HCACK;  	// B:1 (always)  remote command acknowledge
        String CPNAME;  	// A:n (varies)  command parameter name
        int CPACK;  	// B:1 (always)  remote command parameter acknowledge, only received if error
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           HCACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("B:1")) { ok = false; break; }
               CPACK = sp.binToInt(list3[1]);
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F43RConfigure Spooling Sent by Host Only

    // S2F43R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 43, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 43)) {recvS2F43(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F43(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:m {L:2 STRID {L:n FCNID}}
        // variables for data items and parsing
        int STRID;  	// U1:1 (always)  stream value
        int FCNID;  	// U1:1 (always)  message type function value
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int m=1; m < list0.length; m++) {
               String [] list1;
               list1 = TclList.split(list0[m]);
               if (list1.length != 3) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("U1:1")) { ok = false; break; }
               STRID = Integer.parse(list2[1]);
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok=false; break; }
               for(int n=1; n < list2.length; n++) {
                   String [] list3;
                   list3 = TclList.split(list2[n]);
                   if (list3.length < 1) { ok = false; break; }
                   if (!list3[0].equals("U1:1")) { ok = false; break; }
                   FCNID = Integer.parse(list3[1]);
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 44, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F43R

S2F44Configure Spooling Acknowledge Sent by Equipment Only

    // S2F44 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 43, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RSPACK {L:m {L:3 STRID STRACK {L:n FCNID}}}
        // variables for data items and parsing
        int RSPACK;  	// B:1 (always)  spooling response
        int STRID;  	// U1:1 (always)  stream value
        int STRACK;  	// B:1 (always)  spooling stream acknowledge
        int FCNID;  	// U1:1 (always)  message type function value
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           RSPACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               STRID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("B:1")) { ok = false; break; }
               STRACK = sp.binToInt(list3[1]);
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok=false; break; }
               for(int n=1; n < list3.length; n++) {
                   String [] list4;
                   list4 = TclList.split(list3[n]);
                   if (list4.length < 1) { ok = false; break; }
                   if (!list4[0].equals("U1:1")) { ok = false; break; }
                   FCNID = Integer.parse(list4[1]);
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F45RDefine Variable Limit Attributes Sent by Host Only

    // S2F45R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 45, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 45)) {recvS2F45(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F45(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DATAID {L:m {L:2 VID {L:n {L:2 LIMITID {L:2* UPPERDB LOWERDB}}}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String VID;  	// A:n (varies)  A variable ID
        int LIMITID;  	// B:1 (always)  identifies a specific limit
        String UPPERDB;  	// F4:1 (varies)  the upper bound of a deadband limit
        String LOWERDB;  	// F4:1 (varies)  the lower bound of a deadband limit
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { VID = list3[1];} else { VID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int n=1; n < list3.length; n++) {
                   String [] list4;
                   list4 = TclList.split(list3[n]);
                   if (list4.length != 3) { ok=false; break; }
                   String [] list5;
                   list5 = TclList.split(list4[1]);
                   if (list5.length < 1) { ok = false; break; }
                   if (!list5[0].equals("B:1")) { ok = false; break; }
                   LIMITID = sp.binToInt(list5[1]);
                   list5 = TclList.split(list4[2]);
                   if (list5.length == 3) {  // 2 optional items found
                       String [] list6;
                       list6 = TclList.split(list5[1]);
                       if (list6.length < 1) { ok = false; break; }
                       if (list6.length == 2) { UPPERDB = list6[1];} else { UPPERDB = ""; }
                       list6 = TclList.split(list5[2]);
                       if (list6.length < 1) { ok = false; break; }
                       if (list6.length == 2) { LOWERDB = list6[1];} else { LOWERDB = ""; }
                       }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 46, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F45R

S2F46Define Variable Limit Attributes Acknowledge Sent by Equipment Only

    // S2F46 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 45, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 VLAACK {L:m {L:3 VID LVACK {L:2* LIMITID LIMITACK}}}
        // variables for data items and parsing
        int VLAACK;  	// B:1 (always)  variable limit attribute acknowledge
        String VID;  	// A:n (varies)  A variable ID
        int LVACK;  	// B:1 (always)  variable limit error code
        int LIMITID;  	// B:1 (always)  identifies a specific limit
        int LIMITACK;  	// B:1 (always)  variable limit value error code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           VLAACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { VID = list3[1];} else { VID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("B:1")) { ok = false; break; }
               LVACK = sp.binToInt(list3[1]);
               list3 = TclList.split(list2[3]);
               if (list3.length == 3) {  // 2 optional items found
                   String [] list4;
                   list4 = TclList.split(list3[1]);
                   if (list4.length < 1) { ok = false; break; }
                   if (!list4[0].equals("B:1")) { ok = false; break; }
                   LIMITID = sp.binToInt(list4[1]);
                   list4 = TclList.split(list3[2]);
                   if (list4.length < 1) { ok = false; break; }
                   if (!list4[0].equals("B:1")) { ok = false; break; }
                   LIMITACK = sp.binToInt(list4[1]);
                   }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F47RVariable Limit Attribute Request Sent by Host Only

    // S2F47R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 47, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 47)) {recvS2F47(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F47(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:m VID
        // variables for data items and parsing
        String VID;  	// A:n (varies)  A variable ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int m=1; m < list0.length; m++) {
               String [] list1;
               list1 = TclList.split(list0[m]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { VID = list1[1];} else { VID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 48, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F47R

S2F48Variable Limit Attribute Send Sent by Equipment Only

    // S2F48 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 47, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:m {L:2 VID {L:4* UNITS LIMITMIN LIMITMAX {L:n {L:3 LIMITID UPPERDB LOWERDB}}}}
        // variables for data items and parsing
        String VID;  	// A:n (varies)  A variable ID
        String UNITS;  	// A:n (always)  units identifier (see E5 Section 9)
        String LIMITMIN;  	// F4:1 (varies)  The minimum value allowed for the lower dead band limit
        String LIMITMAX;  	// F4:1 (varies)  The maximum value allowed for the upper dead band limit
        int LIMITID;  	// B:1 (always)  identifies a specific limit
        String UPPERDB;  	// F4:1 (varies)  the upper bound of a deadband limit
        String LOWERDB;  	// F4:1 (varies)  the lower bound of a deadband limit
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int m=1; m < list0.length; m++) {
               String [] list1;
               list1 = TclList.split(list0[m]);
               if (list1.length != 3) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { VID = list2[1];} else { VID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length == 5) {  // 4 optional items found
                   String [] list3;
                   list3 = TclList.split(list2[1]);
                   if (list3.length < 1) { ok = false; break; }
                   if (!list3[0].startsWith("A:")) { ok = false; break; }
                   if (list3.length == 2) { UNITS = list3[1];} else { UNITS = ""; }
                   list3 = TclList.split(list2[2]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { LIMITMIN = list3[1];} else { LIMITMIN = ""; }
                   list3 = TclList.split(list2[3]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { LIMITMAX = list3[1];} else { LIMITMAX = ""; }
                   list3 = TclList.split(list2[4]);
                   if (list3.length < 1) { ok=false; break; }
                   for(int n=1; n < list3.length; n++) {
                       String [] list4;
                       list4 = TclList.split(list3[n]);
                       if (list4.length != 4) { ok=false; break; }
                       String [] list5;
                       list5 = TclList.split(list4[1]);
                       if (list5.length < 1) { ok = false; break; }
                       if (!list5[0].equals("B:1")) { ok = false; break; }
                       LIMITID = sp.binToInt(list5[1]);
                       list5 = TclList.split(list4[2]);
                       if (list5.length < 1) { ok = false; break; }
                       if (list5.length == 2) { UPPERDB = list5[1];} else { UPPERDB = ""; }
                       list5 = TclList.split(list4[3]);
                       if (list5.length < 1) { ok = false; break; }
                       if (list5.length == 2) { LOWERDB = list5[1];} else { LOWERDB = ""; }
                       }
                   if (!ok) break;
                   }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F49REnhanced Remote Command Sent by Host Only

    // S2F49R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 49, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 49)) {recvS2F49(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F49(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 DATAID OBJSPEC RCMD {L:m {L:2 CPNAME CEPVAL}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String RCMD;  	// A:n (varies)  remote command, GEM requires a maximum length of 20 printable characters, taken from hex 21-7E (no spaces)
        String CPNAME;  	// A:n (varies)  command parameter name
        String CEPVAL;  	// A:n (varies)  an enhanced parameter value, may be a scalar of any type, a list of values of the same type, or a list of possibly nested {L:2 CPNAME CEPVAL}
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RCMD = list1[1];} else { RCMD = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CEPVAL = list3[1];} else { CEPVAL = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 50, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F49R

S2F50Enhanced Remote Command Acknowledge Sent by Equipment Only

    // S2F50 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 49, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 HCACK {L:n {L:2 CPNAME CEPACK}}
        // variables for data items and parsing
        int HCACK;  	// B:1 (always)  remote command acknowledge
        String CPNAME;  	// A:n (varies)  command parameter name
        int CEPACK;  	// B:1 (always)  command enhanced parameter acknowledge, may be a list or nested list structure to mirror the input structure of a CEPVAL
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           HCACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("B:1")) { ok = false; break; }
               CEPACK = sp.binToInt(list3[1]);
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F51RRequest Report Identifiers Sent by Host Only

    // S2F51R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 51, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 51)) {recvS2F51(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F51(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 52, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F51R

S2F52Return Report Identifiers Sent by Equipment Only

    // S2F52 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 51, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n RPTID
        // variables for data items and parsing
        String RPTID;  	// U4:1 (varies)  report ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F53RRequest Report Definitions Sent by Host Only

    // S2F53R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 53, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 53)) {recvS2F53(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F53(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n RPTID
        // variables for data items and parsing
        String RPTID;  	// U4:1 (varies)  report ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 54, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F53R

S2F54Return Report Definitions Sent by Equipment Only

    // S2F54 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 53, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:2 RPTID {L:a VID}} 
        // variables for data items and parsing
        String RPTID;  	// U4:1 (varies)  report ID
        String VID;  	// A:n (varies)  A variable ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 3) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { RPTID = list2[1];} else { RPTID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok=false; break; }
               for(int a=1; a < list2.length; a++) {
                   String [] list3;
                   list3 = TclList.split(list2[a]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { VID = list3[1];} else { VID = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F55RRequest Event Report Links Sent by Host Only

    // S2F55R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 55, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 55)) {recvS2F55(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F55(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n CEID
        // variables for data items and parsing
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 56, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F55R

S2F56Return Event Report Links Sent by Equipment Only

    // S2F56 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 55, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:3 CEID CENAME {L:a RPTID}}
        // variables for data items and parsing
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String CENAME;  	// A:n (always)  a descriptive name for a Data Collection Event
        String RPTID;  	// U4:1 (varies)  report ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 4) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { CEID = list2[1];} else { CEID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { CENAME = list2[1];} else { CENAME = ""; }
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok=false; break; }
               for(int a=1; a < list2.length; a++) {
                   String [] list3;
                   list3 = TclList.split(list2[a]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F57RRequest Enabled Events Sent by Host Only

    // S2F57R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 57, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 57)) {recvS2F57(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F57(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 58, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F57R

S2F58Return Enabled Events Sent by Equipment Only

    // S2F58 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 57, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n CEID
        // variables for data items and parsing
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F59RRequest Spool Streams and Functions Sent by Host Only

    // S2F59R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 59, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 59)) {recvS2F59(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F59(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 60, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F59R

S2F60Return Spool Streams and Functions Sent by Equipment Only

    // S2F60 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 59, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:2 STRID {L:a FCNID}}
        // variables for data items and parsing
        int STRID;  	// U1:1 (always)  stream value
        int FCNID;  	// U1:1 (always)  message type function value
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 3) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("U1:1")) { ok = false; break; }
               STRID = Integer.parse(list2[1]);
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok=false; break; }
               for(int a=1; a < list2.length; a++) {
                   String [] list3;
                   list3 = TclList.split(list2[a]);
                   if (list3.length < 1) { ok = false; break; }
                   if (!list3[0].equals("U1:1")) { ok = false; break; }
                   FCNID = Integer.parse(list3[1]);
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F61RRequest Trace Identifiers Sent by Host Only

    // S2F61R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 61, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 61)) {recvS2F61(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F61(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 62, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F61R

S2F62Return Trace Identifiers Sent by Equipment Only

    // S2F62 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 61, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n TRID
        // variables for data items and parsing
        String TRID;  	// A:n (varies)  trace request ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S2F63RRequest Trace Definitions Sent by Host Only

    // S2F63R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 2, 63, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 2) && (function = 63)) {recvS2F63(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS2F63(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n TRID
        // variables for data items and parsing
        String TRID;  	// A:n (varies)  trace request ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(2, 64, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S2F63R

S2F64Return Trace Definitions Sent by Equipment Only

    // S2F64 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(2, 63, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:5 TRID DSPER TOTSMP REPGSZ {L:a SVID}}
        // variables for data items and parsing
        String TRID;  	// A:n (varies)  trace request ID
        String DSPER;  	// A:6 (varies)  data sample period, hhmmss is always supported, A:8 hhmmsscc may be supported
        String TOTSMP;  	// U4:1 (varies)  total samples to be made, should be an even multiple of REPGSZ
        String REPGSZ;  	// U4:1 (varies)  reporting group size, TOTSMP modulo REPGSZ should be 0
        String SVID;  	// U4:1 (varies)  status variable ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 6) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { TRID = list2[1];} else { TRID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { DSPER = list2[1];} else { DSPER = ""; }
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { TOTSMP = list2[1];} else { TOTSMP = ""; }
               list2 = TclList.split(list1[4]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { REPGSZ = list2[1];} else { REPGSZ = ""; }
               list2 = TclList.split(list1[5]);
               if (list2.length < 1) { ok=false; break; }
               for(int a=1; a < list2.length; a++) {
                   String [] list3;
                   list3 = TclList.split(list2[a]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { SVID = list3[1];} else { SVID = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F1RMaterial Status Request Sent by Host Only

    // S3F1R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 1)) {recvS3F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F1R

S3F2Material Status Data Sent by Equipment Only

    // S3F2 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 MF {L:m {L:3 LOC QUA MID}} 
        // variables for data items and parsing
        String MF;  	// B:1 (varies)  material format code, ASCII indicates generic units, E40 restricts to B:1
        int LOC;  	// B:1 (always)  material location code
        int QUA;  	// B:1 (always)  quantity (format limits max to 255!)
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("B:1")) { ok = false; break; }
               LOC = sp.binToInt(list3[1]);
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("B:1")) { ok = false; break; }
               QUA = sp.binToInt(list3[1]);
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { MID = list3[1];} else { MID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F3RTime to Completion Data Sent by Host Only

    // S3F3R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 3)) {recvS3F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F3R

S3F4Time to Completion Data Sent by Equipment Only

    // S3F4 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 MF {L:m {L:3 TTC QUA MID}}
        // variables for data items and parsing
        String MF;  	// B:1 (varies)  material format code, ASCII indicates generic units, E40 restricts to B:1
        String TTC;  	// U4:1 (varies)  time to completion, standard does not specify units, in seconds??
        int QUA;  	// B:1 (always)  quantity (format limits max to 255!)
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { TTC = list3[1];} else { TTC = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("B:1")) { ok = false; break; }
               QUA = sp.binToInt(list3[1]);
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { MID = list3[1];} else { MID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F5[R]Material Found Send Sent by Equipment Only

    // S3F5 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 3, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 5)) {recvS3F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 MF QUA
        // variables for data items and parsing
        String MF;  	// B:1 (varies)  material format code, ASCII indicates generic units, E40 restricts to B:1
        int QUA;  	// B:1 (always)  quantity (format limits max to 255!)
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           QUA = sp.binToInt(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S3F5

S3F6Material Found Acknowledge Sent by Host Only

    // S3F6 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(3, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC3
        // variables for data items and parsing
        int ACKC3;  	// B:1 (always)  acknowledge code, 0 ok 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC3 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F7[R]Material Lost Send Sent by Equipment Only

    // S3F7 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 3, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 7)) {recvS3F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 MF QUA MID
        // variables for data items and parsing
        String MF;  	// B:1 (varies)  material format code, ASCII indicates generic units, E40 restricts to B:1
        int QUA;  	// B:1 (always)  quantity (format limits max to 255!)
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           QUA = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S3F7

S3F8Material Lost Ack Sent by Host Only

    // S3F8 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(3, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC3
        // variables for data items and parsing
        int ACKC3;  	// B:1 (always)  acknowledge code, 0 ok 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC3 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F9RMatl ID Equate Send Sent by Equipment Only

    // S3F9R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 3, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 9)) {recvS3F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 MID EMID
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        String EMID;  	// A:16 (varies)  equivalent material ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { EMID = list1[1];} else { EMID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S3F9R

S3F10Matl ID Equate Ack Sent by Host Only

    // S3F10 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(3, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC3
        // variables for data items and parsing
        int ACKC3;  	// B:1 (always)  acknowledge code, 0 ok 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC3 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F11RMatl ID Request Sent by Equipment Only

    // S3F11R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 3, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 11)) {recvS3F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect PTN
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { PTN = list0[1];} else { PTN = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S3F11R

S3F12Matl ID Request Ack Sent by Host Only

    // S3F12 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(3, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 PTN MIDRA MID
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        int MIDRA;  	// B:1 (always)  material ID Ack code
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           MIDRA = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F13RMatl ID Send Sent by Host Only

    // S3F13R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 13)) {recvS3F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PTN MID
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F13R

S3F14Matl ID Ack Sent by Equipment Only

    // S3F14 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect MIDAC
        // variables for data items and parsing
        int MIDAC;  	// B:1 (always)  material ID ack
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           MIDAC = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F15RSECS-I Matls Multi-block Inquire, not required for HSMS Sent by Host Only

    // S3F15R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 15)) {recvS3F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DATAID DATALENGTH
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F15R

S3F16Matls Multi-block Grant Sent by Equipment Only

    // S3F16 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect GRANT
        // variables for data items and parsing
        int GRANT;  	// B:1 (always)  multiblock grant code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           GRANT = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F17RCarrier Action Request Sent by Host Only

    // S3F17R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 17)) {recvS3F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 DATAID CARRIERACTION CARRIERID PTN {L:n {L:2 CATTRID CATTRDATA}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String CARRIERACTION;  	// A:n (always)  carrier action request
        String CARRIERID;  	// A:n (always)  carrier ID
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String CATTRID;  	// A:n (varies)  carrier attribute identifier, E87 requires text per E39.1, Sec 6
        String CATTRDATA;  	// A:n (varies)  carrier attribute value (any data type)
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { CARRIERACTION = list1[1];} else { CARRIERACTION = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { CARRIERID = list1[1];} else { CARRIERID = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CATTRID = list3[1];} else { CATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CATTRDATA = list3[1];} else { CATTRDATA = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F17R

S3F18Carrier Action Ack Sent by Equipment Only

    // S3F18 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int CAACK;  	// U1:1 (always)  carrier action acknowledge 
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           CAACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F19RCancel All Carrier Out Req Sent by Host Only

    // S3F19R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 19)) {recvS3F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F19R

S3F20Cancel All Carrier Out Ack Sent by Equipment Only

    // S3F20 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int CAACK;  	// U1:1 (always)  carrier action acknowledge 
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           CAACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F21RPort Group Defn Sent by Host Only

    // S3F21R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 21, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 21)) {recvS3F21(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 PORTGRPNAME ACCESSMODE {L:n PTN}
        // variables for data items and parsing
        String PORTGRPNAME;  	// A:n (always)  name of a group of ports
        int ACCESSMODE;  	// U1:1 (always)  load port access mode
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PORTGRPNAME = list1[1];} else { PORTGRPNAME = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           ACCESSMODE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { PTN = list2[1];} else { PTN = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 22, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F21R

S3F22Port Group Defn Ack Sent by Equipment Only

    // S3F22 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 21, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int CAACK;  	// U1:1 (always)  carrier action acknowledge 
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           CAACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F23RPort Group Action Req Sent by Host Only

    // S3F23R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 23, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 23)) {recvS3F23(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 PGRPACTION PORTGRPNAME {L:m {L:2 PARAMNAME PARAMVAL}}
        // variables for data items and parsing
        String PGRPACTION;  	// A:n (always)  port group command, an alias for PORTACTION?
        String PORTGRPNAME;  	// A:n (always)  name of a group of ports
        String PARAMNAME;  	// A:n (always)  argument name
        String PARAMVAL;  	// U1:1 (varies)  argument value, only defined use is ServiceStatus, 0 = OUT OF SERVICE, 1 = IN SERVICE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PGRPACTION = list1[1];} else { PGRPACTION = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PORTGRPNAME = list1[1];} else { PORTGRPNAME = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { PARAMNAME = list3[1];} else { PARAMNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { PARAMVAL = list3[1];} else { PARAMVAL = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 24, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F23R

S3F24Port Group Action Ack Sent by Equipment Only

    // S3F24 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 23, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int CAACK;  	// U1:1 (always)  carrier action acknowledge 
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           CAACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F25RPort Action Req Sent by Host Only

    // S3F25R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 25, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 25)) {recvS3F25(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 PORTACTION PTN {L:m {L:2 PARAMNAME PARAMVAL}}
        // variables for data items and parsing
        String PORTACTION;  	// A:n (always)  ChangeServiceStatus, CancelReservationAtPort or ReserveAtPort
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String PARAMNAME;  	// A:n (always)  argument name
        String PARAMVAL;  	// U1:1 (varies)  argument value, only defined use is ServiceStatus, 0 = OUT OF SERVICE, 1 = IN SERVICE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PORTACTION = list1[1];} else { PORTACTION = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { PARAMNAME = list3[1];} else { PARAMNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { PARAMVAL = list3[1];} else { PARAMVAL = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 26, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F25R

S3F26Port Action Ack Sent by Equipment Only

    // S3F26 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 25, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int CAACK;  	// U1:1 (always)  carrier action acknowledge 
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           CAACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F27RChange Access Sent by Host Only

    // S3F27R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 27, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 27)) {recvS3F27(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 ACCESSMODE {L:n PTN}
        // variables for data items and parsing
        int ACCESSMODE;  	// U1:1 (always)  load port access mode
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           ACCESSMODE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { PTN = list2[1];} else { PTN = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 28, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F27R

S3F28Change Access Ack Sent by Equipment Only

    // S3F28 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 27, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 CAACK {L:n {L:3 PTN ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int CAACK;  	// U1:1 (always)  carrier action acknowledge 
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           CAACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { PTN = list3[1];} else { PTN = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F29RCarrier Tag Read Req Sent by Host Only

    // S3F29R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 29, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 29)) {recvS3F29(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 LOCID CARRIERSPEC DATASEG DATALENGTH
        // variables for data items and parsing
        String LOCID;  	// A:n (varies)  logical ID of carrier location, E87 requires text
        String CARRIERSPEC;  	// A:n (always)  carrier object specifier (OBJSPEC)
        String DATASEG;  	// A:n (varies)  identifies data requested, E87 requires text
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { LOCID = list1[1];} else { LOCID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { CARRIERSPEC = list1[1];} else { CARRIERSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATASEG = list1[1];} else { DATASEG = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 30, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F29R

S3F30Carrier Tag Read Data Sent by Equipment Only

    // S3F30 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 29, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 DATA {L:2 CAACK {L:s {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String DATA;  	// A:n (varies)  unformatted data
        int CAACK;  	// U1:1 (always)  carrier action acknowledge 
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATA = list1[1];} else { DATA = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           CAACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int s=1; s < list2.length; s++) {
               String [] list3;
               list3 = TclList.split(list2[s]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F31RCarrier Tag Write Data Sent by Host Only

    // S3F31R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 3, 31, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 31)) {recvS3F31(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 LOCID CARRIERSPEC DATASEG DATALENGTH DATA
        // variables for data items and parsing
        String LOCID;  	// A:n (varies)  logical ID of carrier location, E87 requires text
        String CARRIERSPEC;  	// A:n (always)  carrier object specifier (OBJSPEC)
        String DATASEG;  	// A:n (varies)  identifies data requested, E87 requires text
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        String DATA;  	// A:n (varies)  unformatted data
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { LOCID = list1[1];} else { LOCID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { CARRIERSPEC = list1[1];} else { CARRIERSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATASEG = list1[1];} else { DATASEG = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATA = list1[1];} else { DATA = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 32, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S3F31R

S3F32Carrier Tag Write Ack Sent by Equipment Only

    // S3F32 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(3, 31, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 CAACK {L:s {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int CAACK;  	// U1:1 (always)  carrier action acknowledge 
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           CAACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int s=1; s < list1.length; s++) {
               String [] list2;
               list2 = TclList.split(list1[s]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F33Cancel All Pod Out Req Sent by Host and Equipment

    // S3F33 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 3, 33, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 33)) {recvS3F33(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 34, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S3F33

S3F34Cancel All Pod Out Ack Sent by Host and Equipment

    // S3F34 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(3, 33, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int CAACK;  	// U1:1 (always)  carrier action acknowledge 
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           CAACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S3F35Reticle Transfer Job Req Sent by Host and Equipment

    // S3F35 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 3, 35, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 3) && (function = 35)) {recvS3F35(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS3F35(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:7 JOBACTION PODID INPTN OUTPTN {L:n {L:2 ATTRID ATTRDATA}} {L:m {L:3 RETICLEID RETREMOVEINSTR {L:r {L:2 ATTRID ATTRDATA}}}} {L:k {L:2 RETICLEID2 RETPLACEINSTR}}
        // variables for data items and parsing
        String JOBACTION;  	// A:n (always)  reticle transfer command
        String PODID;  	// A:n (always)  OBJSPEC for a Pod instance
        int INPTN;  	// B:1 (always)  input material port number
        String OUTPTN;  	// B:1 (varies)  output port (PTN)
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        String RETICLEID;  	// A:n (always)  OBJSPEC value for a reticle
        int RETREMOVEINSTR;  	// U1:1 (always)  pod slot reticle remove instruction
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        String RETICLEID2;  	// A:n (always)  OBJSPEC value for a second reticle
        int RETPLACEINSTR;  	// U1:1 (always)  pod slot reticle place instruction
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 8) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { JOBACTION = list1[1];} else { JOBACTION = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PODID = list1[1];} else { PODID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           INPTN = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OUTPTN = list1[1];} else { OUTPTN = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RETICLEID = list3[1];} else { RETICLEID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               RETREMOVEINSTR = Integer.parse(list3[1]);
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok=false; break; }
               for(int r=1; r < list3.length; r++) {
                   String [] list4;
                   list4 = TclList.split(list3[r]);
                   if (list4.length != 3) { ok=false; break; }
                   String [] list5;
                   list5 = TclList.split(list4[1]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { ATTRID = list5[1];} else { ATTRID = ""; }
                   list5 = TclList.split(list4[2]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { ATTRDATA = list5[1];} else { ATTRDATA = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[7]);
           if (list1.length < 1) { ok=false; break; }
           for(int k=1; k < list1.length; k++) {
               String [] list2;
               list2 = TclList.split(list1[k]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RETICLEID2 = list3[1];} else { RETICLEID2 = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               RETPLACEINSTR = Integer.parse(list3[1]);
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(3, 36, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S3F35

S3F36Reticle Transfer Job Ack Sent by Host and Equipment

    // S3F36 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(3, 35, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RPMACK {L:n {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RPMACK;  	// U1:1 (always)  reticle pod management ack code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RPMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S4F1RReady to Send Materials Sent by Host and Equipment

    // S4F1R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 1)) {recvS4F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PTN MID
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F1R

S4F2Ready to Send Ack Sent by Host and Equipment

    // S4F2 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(4, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect RSACK
        // variables for data items and parsing
        int RSACK;  	// B:1 (always)  ready to send acknowledge
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           RSACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S4F3Send Material Sent by Host and Equipment

    // S4F3 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 3)) {recvS4F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PTN MID
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F3

S4F5Handshake Complete Sent by Host and Equipment

    // S4F5 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 5)) {recvS4F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PTN MID
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F5

S4F7Not Ready to Send Sent by Host and Equipment

    // S4F7 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 7)) {recvS4F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PTN MID
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F7

S4F9Stuck in Sender Sent by Host and Equipment

    // S4F9 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 9)) {recvS4F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PTN MID
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F9

S4F11Stuck in Receiver Sent by Host and Equipment

    // S4F11 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 11)) {recvS4F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PTN MID
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F11

S4F13Send Incomplete Timeout Sent by Host and Equipment

    // S4F13 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 13)) {recvS4F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PTN MID
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F13

S4F15Material Received Sent by Host and Equipment

    // S4F15 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 15)) {recvS4F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PTN MID
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F15

S4F17RRequest to Receive Sent by Host and Equipment

    // S4F17R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 17)) {recvS4F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PTN MID
        // variables for data items and parsing
        String PTN;  	// U1:1 (varies)  material port number, E87 shows type U1:1 with data 1-255
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F17R

S4F18Request to Receive Ack Sent by Host and Equipment

    // S4F18 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(4, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect RRACK
        // variables for data items and parsing
        int RRACK;  	// B:1 (always)  request to receive acknowledge
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           RRACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S4F19RTransfer Job Create Sent by Host Only

    // S4F19R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 4, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 19)) {recvS4F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DATAID {L:2 TRJOBNAME {L:n {L:12 TRLINK TRPORT TROBJNAME TROBJTYPE TRROLE TRRCP TRPTNR TRPTPORT TRDIR TRTYPE TRLOCATION TRAUTOSTART}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String TRJOBNAME;  	// A:80 (always)  host assigned id for transfer job
        String TRLINK;  	// U4:1 (varies)  task identifier correlation value
        String TRPORT;  	// U4:1 (varies)  port identifier
        String TROBJNAME;  	// A:n (varies)  identifies material to be transferred
        String TROBJTYPE;  	// U4:1 (varies)  identifies type of object to be transferred
        int TRROLE;  	// U1:1 (always)  indicates equipment transfer role
        String TRRCP;  	// A:80 (always)  name of transfer recipe for this handoff
        String TRPTNR;  	// A:n (always)  EQNAME of transfer partner equipment
        String TRPTPORT;  	// U4:1 (varies)  transfer partner port
        int TRDIR;  	// U1:1 (always)  transfer direction
        int TRTYPE;  	// U1:1 (always)  equipment is active or passive transfer participant
        String TRLOCATION;  	// U4:1 (varies)  material transfer location
        int TRAUTOSTART;  	// TF:1 (always)  if true material transfer is initiated by the primary when ready
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { TRJOBNAME = list2[1];} else { TRJOBNAME = ""; }
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 13) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { TRLINK = list4[1];} else { TRLINK = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { TRPORT = list4[1];} else { TRPORT = ""; }
               list4 = TclList.split(list3[3]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { TROBJNAME = list4[1];} else { TROBJNAME = ""; }
               list4 = TclList.split(list3[4]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { TROBJTYPE = list4[1];} else { TROBJTYPE = ""; }
               list4 = TclList.split(list3[5]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].equals("U1:1")) { ok = false; break; }
               TRROLE = Integer.parse(list4[1]);
               list4 = TclList.split(list3[6]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { TRRCP = list4[1];} else { TRRCP = ""; }
               list4 = TclList.split(list3[7]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { TRPTNR = list4[1];} else { TRPTNR = ""; }
               list4 = TclList.split(list3[8]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { TRPTPORT = list4[1];} else { TRPTPORT = ""; }
               list4 = TclList.split(list3[9]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].equals("U1:1")) { ok = false; break; }
               TRDIR = Integer.parse(list4[1]);
               list4 = TclList.split(list3[10]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].equals("U1:1")) { ok = false; break; }
               TRTYPE = Integer.parse(list4[1]);
               list4 = TclList.split(list3[11]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { TRLOCATION = list4[1];} else { TRLOCATION = ""; }
               list4 = TclList.split(list3[12]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].equals("TF:1")) { ok = false; break; }
               TRAUTOSTART = Integer.parse(list4[1]);
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S4F19R

S4F20Transfer Job Acknowledge Sent by Equipment Only

    // S4F20 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(4, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 TRJOBID {L:m TRATOMCID} {L:2 TRACK {L:n {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        int TRJOBID;  	// B:1 (always)  assigned identifier for transfer job
        String TRATOMCID;  	// U4:1 (varies)  assigned identifier for atomic transfer
        int TRACK;  	// TF:1 (always)  transfer activity success flag
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           TRJOBID = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { TRATOMCID = list2[1];} else { TRATOMCID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[3]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           TRACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S4F21RTransfer Job Command Sent by Host Only

    // S4F21R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 4, 21, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 21)) {recvS4F21(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 TRJOBID TRCMDNAME {L:n {L:2 CPNAME CPVAL}}
        // variables for data items and parsing
        int TRJOBID;  	// B:1 (always)  assigned identifier for transfer job
        String TRCMDNAME;  	// A:n (always)  text enum, CANCEL, PAUSE, RESUME, ABORT, STOP, STARTHANDOFF
        String CPNAME;  	// A:n (varies)  command parameter name
        String CPVAL;  	// A:n (varies)  command parameter value, any scalar type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           TRJOBID = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TRCMDNAME = list1[1];} else { TRCMDNAME = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CPVAL = list3[1];} else { CPVAL = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 22, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S4F21R

S4F22Transfer Job Command Ack Sent by Equipment Only

    // S4F22 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(4, 21, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 TRACK {L:n {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int TRACK;  	// TF:1 (always)  transfer activity success flag
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           TRACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S4F23[R]Transfer Command Alert Sent by Equipment Only

    // S4F23 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 4, 23, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 23)) {recvS4F23(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 TRJOBID TRJOBNAME TRJOBMS {L:2 TRACK {L:n {L:2 ERRCODE  ERRTEXT}}}
        // variables for data items and parsing
        int TRJOBID;  	// B:1 (always)  assigned identifier for transfer job
        String TRJOBNAME;  	// A:80 (always)  host assigned id for transfer job
        int TRJOBMS;  	// U1:1 (always)  transfer job milestone
        int TRACK;  	// TF:1 (always)  transfer activity success flag
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           TRJOBID = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TRJOBNAME = list1[1];} else { TRJOBNAME = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           TRJOBMS = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           TRACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 24, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F23

S4F24Transfer Alert Ack Sent by Host Only

    // S4F24 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(4, 23, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // no data expected
        return;  // parsed ok
        } // end while(ok)

S4F25RMulti-block Inquire Sent by Host Only

    // S4F25R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 4, 25, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 25)) {recvS4F25(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DATAID DATALENGTH
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 26, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S4F25R

S4F26Multi-block Grant Sent by Equipment Only

    // S4F26 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(4, 25, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect GRANT
        // variables for data items and parsing
        int GRANT;  	// B:1 (always)  multiblock grant code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           GRANT = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S4F27Handoff Ready Sent by Host and Equipment

    // S4F27 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 27, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 27)) {recvS4F27(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 EQNAME {L:11 TRLINK TRPORT TROBJNAME TROBJTYPE TRROLE TRPTNR TRPTPORT TRDIR TRTYPE TRLOCATION}
        // variables for data items and parsing
        String EQNAME;  	// A:80 (always)  factory assigned equipment identifier
        String TRLINK;  	// U4:1 (varies)  task identifier correlation value
        String TRPORT;  	// U4:1 (varies)  port identifier
        String TROBJNAME;  	// A:n (varies)  identifies material to be transferred
        String TROBJTYPE;  	// U4:1 (varies)  identifies type of object to be transferred
        int TRROLE;  	// U1:1 (always)  indicates equipment transfer role
        String TRPTNR;  	// A:n (always)  EQNAME of transfer partner equipment
        String TRPTPORT;  	// U4:1 (varies)  transfer partner port
        int TRDIR;  	// U1:1 (always)  transfer direction
        int TRTYPE;  	// U1:1 (always)  equipment is active or passive transfer participant
        String TRLOCATION;  	// U4:1 (varies)  material transfer location
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EQNAME = list1[1];} else { EQNAME = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length != 12) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (list2.length == 2) { TRLINK = list2[1];} else { TRLINK = ""; }
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok = false; break; }
           if (list2.length == 2) { TRPORT = list2[1];} else { TRPORT = ""; }
           list2 = TclList.split(list1[3]);
           if (list2.length < 1) { ok = false; break; }
           if (list2.length == 2) { TROBJNAME = list2[1];} else { TROBJNAME = ""; }
           list2 = TclList.split(list1[4]);
           if (list2.length < 1) { ok = false; break; }
           if (list2.length == 2) { TROBJTYPE = list2[1];} else { TROBJTYPE = ""; }
           list2 = TclList.split(list1[5]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           TRROLE = Integer.parse(list2[1]);
           list2 = TclList.split(list1[6]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { TRPTNR = list2[1];} else { TRPTNR = ""; }
           list2 = TclList.split(list1[7]);
           if (list2.length < 1) { ok = false; break; }
           if (list2.length == 2) { TRPTPORT = list2[1];} else { TRPTPORT = ""; }
           list2 = TclList.split(list1[8]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           TRDIR = Integer.parse(list2[1]);
           list2 = TclList.split(list1[9]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           TRTYPE = Integer.parse(list2[1]);
           list2 = TclList.split(list1[10]);
           if (list2.length < 1) { ok = false; break; }
           if (list2.length == 2) { TRLOCATION = list2[1];} else { TRLOCATION = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 28, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F27

S4F29Handoff Command Sent by Host and Equipment

    // S4F29 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 29, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 29)) {recvS4F29(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 TRLINK MCINDEX HOCMDNAME {L:n {L:2 CPNAME CPVAL}}
        // variables for data items and parsing
        String TRLINK;  	// U4:1 (varies)  task identifier correlation value
        String MCINDEX;  	// U4:1 (varies)  correlation value for handoff command 
        String HOCMDNAME;  	// A:n (varies)  handoff command identifier
        String CPNAME;  	// A:n (varies)  command parameter name
        String CPVAL;  	// A:n (varies)  command parameter value, any scalar type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TRLINK = list1[1];} else { TRLINK = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MCINDEX = list1[1];} else { MCINDEX = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { HOCMDNAME = list1[1];} else { HOCMDNAME = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CPVAL = list3[1];} else { CPVAL = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 30, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F29

S4F31Handoff Command Complete Sent by Host and Equipment

    // S4F31 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 31, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 31)) {recvS4F31(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 TRLINK MCINDEX {L:2 HOACK {L:n {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String TRLINK;  	// U4:1 (varies)  task identifier correlation value
        String MCINDEX;  	// U4:1 (varies)  correlation value for handoff command 
        int HOACK;  	// TF:1 (always)  handoff success flag
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TRLINK = list1[1];} else { TRLINK = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MCINDEX = list1[1];} else { MCINDEX = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           HOACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 32, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F31

S4F33Handoff Verified Sent by Host and Equipment

    // S4F33 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 33, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 33)) {recvS4F33(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 TRLINK {L:2 HOACK {L:n ERRCODE ERRTEXT}} 
        // variables for data items and parsing
        String TRLINK;  	// U4:1 (varies)  task identifier correlation value
        int HOACK;  	// TF:1 (always)  handoff success flag
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TRLINK = list1[1];} else { TRLINK = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           HOACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[n]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 34, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F33

S4F35Handoff Cancel Ready Sent by Host and Equipment

    // S4F35 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 35, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 35)) {recvS4F35(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F35(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect TRLINK
        // variables for data items and parsing
        String TRLINK;  	// U4:1 (varies)  task identifier correlation value
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { TRLINK = list0[1];} else { TRLINK = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 36, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F35

S4F37Handoff Cancel Ready Ack Sent by Host and Equipment

    // S4F37 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 37, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 37)) {recvS4F37(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F37(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 TRLINK HOCANCELACK
        // variables for data items and parsing
        String TRLINK;  	// U4:1 (varies)  task identifier correlation value
        int HOCANCELACK;  	// U1:1 (always)  hand off cancel ack
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TRLINK = list1[1];} else { TRLINK = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           HOCANCELACK = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 38, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F37

S4F39Handoff Halt Sent by Host and Equipment

    // S4F39 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 39, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 39)) {recvS4F39(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F39(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect TRLINK
        // variables for data items and parsing
        String TRLINK;  	// U4:1 (varies)  task identifier correlation value
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { TRLINK = list0[1];} else { TRLINK = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 40, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F39

S4F41Handoff Halt Ack Sent by Host and Equipment

    // S4F41 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 4, 41, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 4) && (function = 41)) {recvS4F41(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS4F41(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 TRLINK HOHALTACK
        // variables for data items and parsing
        String TRLINK;  	// U4:1 (varies)  task identifier correlation value
        int HOHALTACK;  	// U1:1 (always)  hand off halt ack
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TRLINK = list1[1];} else { TRLINK = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           HOHALTACK = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(4, 42, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S4F41

S5F1[R]Alarm Report Send Sent by Equipment Only

    // S5F1 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 5, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 5) && (function = 1)) {recvS5F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS5F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 ALCD ALID ALTX
        // variables for data items and parsing
        int ALCD;  	// B:1 (always)  alarm code byte, >= 128 alarm is set, bit field use is deprecated
        String ALID;  	// U4:1 (varies)  Alarm type ID
        String ALTX;  	// A:120 (always)  alarm text, the length limit was recently raised from 40
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ALCD = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ALID = list1[1];} else { ALID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ALTX = list1[1];} else { ALTX = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(5, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S5F1

S5F2Alarm Report Ack Sent by Host Only

    // S5F2 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(5, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC5
        // variables for data items and parsing
        int ACKC5;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC5 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S5F3[R]Enable/Disable Alarm Send Sent by Host Only

    // S5F3 Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 5, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 5) && (function = 3)) {recvS5F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS5F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 ALED ALID
        // variables for data items and parsing
        int ALED;  	// B:1 (always)  enable/disable alarm, 128 means enable, 0 disable
        String ALID;  	// U4:1 (varies)  Alarm type ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ALED = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ALID = list1[1];} else { ALID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(5, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S5F3

S5F4Enable/Disable Alarm Ack Sent by Equipment Only

    // S5F4 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(5, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC5
        // variables for data items and parsing
        int ACKC5;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC5 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S5F5RList Alarms Request Sent by Host Only

    // S5F5R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 5, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 5) && (function = 5)) {recvS5F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS5F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect ALIDVECTOR
        // variables for data items and parsing
        int [] ALIDVECTOR;  	// U4:n (varies)  alarm ID vector
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           ALIDVECTOR = new int[list0.length-1];
           for(int i=0; i < ALIDVECTOR.length; i++) {
               ALIDVECTOR[i] = Integer.parse(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(5, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S5F5R

S5F6List Alarm Data Sent by Equipment Only

    // S5F6 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(5, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:3 ALCD ALID ALTX}
        // variables for data items and parsing
        int ALCD;  	// B:1 (always)  alarm code byte, >= 128 alarm is set, bit field use is deprecated
        String ALID;  	// U4:1 (varies)  Alarm type ID
        String ALTX;  	// A:120 (always)  alarm text, the length limit was recently raised from 40
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 4) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("B:1")) { ok = false; break; }
               ALCD = sp.binToInt(list2[1]);
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ALID = list2[1];} else { ALID = ""; }
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { ALTX = list2[1];} else { ALTX = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S5F7RList Enabled Alarm Request Sent by Host Only

    // S5F7R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 5, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 5) && (function = 7)) {recvS5F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS5F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(5, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S5F7R

S5F8List Enabled Alarm Data Sent by Equipment Only

    // S5F8 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(5, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:3 ALCD ALID ALTX}
        // variables for data items and parsing
        int ALCD;  	// B:1 (always)  alarm code byte, >= 128 alarm is set, bit field use is deprecated
        String ALID;  	// U4:1 (varies)  Alarm type ID
        String ALTX;  	// A:120 (always)  alarm text, the length limit was recently raised from 40
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 4) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("B:1")) { ok = false; break; }
               ALCD = sp.binToInt(list2[1]);
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ALID = list2[1];} else { ALID = ""; }
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { ALTX = list2[1];} else { ALTX = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S5F9[R]Exception Post Notify Sent by Equipment Only

    // S5F9 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 5, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 5) && (function = 9)) {recvS5F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS5F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 TIMESTAMP EXID EXTYPE EXMESSAGE {L:n EXRECVRA}
        // variables for data items and parsing
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String EXID;  	// A:20 (always)  exception identifier
        String EXTYPE;  	// A:5 (always)  exception type, "ALARM" or "ERROR"
        String EXMESSAGE;  	// A:n (always)  exception description
        String EXRECVRA;  	// A:40 (always)  exception recovery action description
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TIMESTAMP = list1[1];} else { TIMESTAMP = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EXTYPE = list1[1];} else { EXTYPE = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EXMESSAGE = list1[1];} else { EXMESSAGE = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { EXRECVRA = list2[1];} else { EXRECVRA = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(5, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S5F9

S5F10Exception Post Confirm Sent by Host Only

    // S5F10 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(5, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // no data expected
        return;  // parsed ok
        } // end while(ok)

S5F11[R]Exception Clear Notify Sent by Equipment Only

    // S5F11 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 5, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 5) && (function = 11)) {recvS5F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS5F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 TIMESTAMP EXID EXTYPE EXMESSAGE
        // variables for data items and parsing
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String EXID;  	// A:20 (always)  exception identifier
        String EXTYPE;  	// A:5 (always)  exception type, "ALARM" or "ERROR"
        String EXMESSAGE;  	// A:n (always)  exception description
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TIMESTAMP = list1[1];} else { TIMESTAMP = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EXTYPE = list1[1];} else { EXTYPE = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EXMESSAGE = list1[1];} else { EXMESSAGE = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(5, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S5F11

S5F12Exception Clear Confirm Sent by Host Only

    // S5F12 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(5, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // no data expected
        return;  // parsed ok
        } // end while(ok)

S5F13RException Recover Request Sent by Host Only

    // S5F13R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 5, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 5) && (function = 13)) {recvS5F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS5F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 EXID EXRECVRA
        // variables for data items and parsing
        String EXID;  	// A:20 (always)  exception identifier
        String EXRECVRA;  	// A:40 (always)  exception recovery action description
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EXRECVRA = list1[1];} else { EXRECVRA = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(5, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S5F13R

S5F14Exception Recover Acknowledge Sent by Equipment Only

    // S5F14 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(5, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 EXID {L:2 ACKA {L:2* ERRCODE ERRTEXT}}
        // variables for data items and parsing
        String EXID;  	// A:20 (always)  exception identifier
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length == 3) {  // 2 optional items found
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S5F15[R]Exception Recovery Complete Notify Sent by Equipment Only

    // S5F15 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 5, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 5) && (function = 15)) {recvS5F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS5F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 TIMESTAMP EXID {L:2 ACKA {L:2* ERRCODE ERRTEXT}}
        // variables for data items and parsing
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String EXID;  	// A:20 (always)  exception identifier
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TIMESTAMP = list1[1];} else { TIMESTAMP = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length == 3) {  // 2 optional items found
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(5, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S5F15

S5F16Exception Recovery Complete Confirm Sent by Host Only

    // S5F16 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(5, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // no data expected
        return;  // parsed ok
        } // end while(ok)

S5F17RException Recovery Abort Request Sent by Host Only

    // S5F17R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 5, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 5) && (function = 17)) {recvS5F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS5F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect EXID
        // variables for data items and parsing
        String EXID;  	// A:20 (always)  exception identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { EXID = list0[1];} else { EXID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(5, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S5F17R

S5F18Exception Recovery Abort Ack Sent by Equipment Only

    // S5F18 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(5, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 EXID {L:2 ACKA {L:2* ERRCODE ERRTEXT}}
        // variables for data items and parsing
        String EXID;  	// A:20 (always)  exception identifier
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length == 3) {  // 2 optional items found
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F1[R]Trace Data Send Sent by Equipment Only

    // S6F1 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 6, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 1)) {recvS6F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 TRID SMPLN STIME {L:n SV}
        // variables for data items and parsing
        String TRID;  	// A:n (varies)  trace request ID
        String SMPLN;  	// U4:1 (varies)  sample number
        String STIME;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String SV;  	// A:n (varies)  status variable value
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { SMPLN = list1[1];} else { SMPLN = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { STIME = list1[1];} else { STIME = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { SV = list2[1];} else { SV = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S6F1

S6F2Trace Data Ack Sent by Host Only

    // S6F2 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(6, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC6
        // variables for data items and parsing
        int ACKC6;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC6 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F3[R]Discrete Variable Data Send Sent by Equipment Only

    // S6F3 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 6, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 3)) {recvS6F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 DATAID CEID {L:n {L:2 DSID {L:m {L:2 DVNAME DVVAL}}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String DSID;  	// A:n (varies)  data set ID, akin to a report type
        String DVNAME;  	// U4:1 (varies)  data value name, generically a VID, therefore GEM requires Un type
        String DVVAL;  	// A:n (varies)  data value, any format including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { DSID = list3[1];} else { DSID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int m=1; m < list3.length; m++) {
                   String [] list4;
                   list4 = TclList.split(list3[m]);
                   if (list4.length != 3) { ok=false; break; }
                   String [] list5;
                   list5 = TclList.split(list4[1]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { DVNAME = list5[1];} else { DVNAME = ""; }
                   list5 = TclList.split(list4[2]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { DVVAL = list5[1];} else { DVVAL = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S6F3

S6F4Discrete Variable Data Send Ack Sent by Host Only

    // S6F4 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(6, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC6
        // variables for data items and parsing
        int ACKC6;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC6 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F5RMulti-block Data Send Inquire Sent by Equipment Only

    // S6F5R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 6, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 5)) {recvS6F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DATAID DATALENGTH
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S6F5R

S6F6Multi-block Grant Sent by Host Only

    // S6F6 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(6, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect GRANT6
        // variables for data items and parsing
        int GRANT6;  	// B:1 (always)  multblock permission grant
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           GRANT6 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F7RData Transfer Request Sent by Host Only

    // S6F7R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 6, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 7)) {recvS6F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect DATAID
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { DATAID = list0[1];} else { DATAID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S6F7R

S6F8Data Transfer Data Sent by Equipment Only

    // S6F8 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(6, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 DATAID CEID {L:n DSID {L:m {L:2 DVNAME DVVAL}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String DSID;  	// A:n (varies)  data set ID, akin to a report type
        String DVNAME;  	// U4:1 (varies)  data value name, generically a VID, therefore GEM requires Un type
        String DVVAL;  	// A:n (varies)  data value, any format including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { DSID = list2[1];} else { DSID = ""; }
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok=false; break; }
               for(int m=1; m < list2.length; m++) {
                   String [] list3;
                   list3 = TclList.split(list2[m]);
                   if (list3.length != 3) { ok=false; break; }
                   String [] list4;
                   list4 = TclList.split(list3[1]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { DVNAME = list4[1];} else { DVNAME = ""; }
                   list4 = TclList.split(list3[2]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { DVVAL = list4[1];} else { DVVAL = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F9[R]Formatted Variable Send Sent by Equipment Only

    // S6F9 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 6, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 9)) {recvS6F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 PFCD DATAID CEID {L:n {L:2 DSID {L:m DVVAL}}}
        // variables for data items and parsing
        int PFCD;  	// B:1 (always)  predefined form selector
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String DSID;  	// A:n (varies)  data set ID, akin to a report type
        String DVVAL;  	// A:n (varies)  data value, any format including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           PFCD = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { DSID = list3[1];} else { DSID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int m=1; m < list3.length; m++) {
                   String [] list4;
                   list4 = TclList.split(list3[m]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { DVVAL = list4[1];} else { DVVAL = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S6F9

S6F10Formatted Variable Ack Sent by Host Only

    // S6F10 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(6, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC6
        // variables for data items and parsing
        int ACKC6;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC6 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F11REvent Report Send Sent by Equipment Only

    // S6F11R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 6, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 11)) {recvS6F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 DATAID CEID {L:a {L:2 RPTID {L:b V}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String RPTID;  	// U4:1 (varies)  report ID
        String V;  	// A:n (varies)  variable value, any type including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int b=1; b < list3.length; b++) {
                   String [] list4;
                   list4 = TclList.split(list3[b]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { V = list4[1];} else { V = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S6F11R

S6F12Event Report Ack Sent by Host Only

    // S6F12 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(6, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC6
        // variables for data items and parsing
        int ACKC6;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC6 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F13RAnnotated Event Report Send Sent by Equipment Only

    // S6F13R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 6, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 13)) {recvS6F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 DATAID CEID {L:a {L:2 RPTID {L:b {L:2 VID V}}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String RPTID;  	// U4:1 (varies)  report ID
        String VID;  	// A:n (varies)  A variable ID
        String V;  	// A:n (varies)  variable value, any type including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int b=1; b < list3.length; b++) {
                   String [] list4;
                   list4 = TclList.split(list3[b]);
                   if (list4.length != 3) { ok=false; break; }
                   String [] list5;
                   list5 = TclList.split(list4[1]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { VID = list5[1];} else { VID = ""; }
                   list5 = TclList.split(list4[2]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { V = list5[1];} else { V = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S6F13R

S6F14Annotated Event Report Ack Sent by Host Only

    // S6F14 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(6, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC6
        // variables for data items and parsing
        int ACKC6;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC6 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F15REvent Report Request Sent by Host Only

    // S6F15R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 6, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 15)) {recvS6F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect CEID
        // variables for data items and parsing
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { CEID = list0[1];} else { CEID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S6F15R

S6F16Event Report Data Sent by Equipment Only

    // S6F16 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(6, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 DATAID CEID {L:a {L:2 RPTID {L:b V}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String RPTID;  	// U4:1 (varies)  report ID
        String V;  	// A:n (varies)  variable value, any type including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int b=1; b < list3.length; b++) {
                   String [] list4;
                   list4 = TclList.split(list3[b]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { V = list4[1];} else { V = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F17RAnnotated Event Report Request Sent by Host Only

    // S6F17R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 6, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 17)) {recvS6F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect CEID
        // variables for data items and parsing
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { CEID = list0[1];} else { CEID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S6F17R

S6F18Annotated Event Report Data Sent by Equipment Only

    // S6F18 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(6, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 DATAID CEID {L:a {L:2 RPTID {L:b {L:2 VID V}}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String RPTID;  	// U4:1 (varies)  report ID
        String VID;  	// A:n (varies)  A variable ID
        String V;  	// A:n (varies)  variable value, any type including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int b=1; b < list3.length; b++) {
                   String [] list4;
                   list4 = TclList.split(list3[b]);
                   if (list4.length != 3) { ok=false; break; }
                   String [] list5;
                   list5 = TclList.split(list4[1]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { VID = list5[1];} else { VID = ""; }
                   list5 = TclList.split(list4[2]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { V = list5[1];} else { V = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F19RIndividual Report Request Sent by Host Only

    // S6F19R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 6, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 19)) {recvS6F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect RPTID
        // variables for data items and parsing
        String RPTID;  	// U4:1 (varies)  report ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { RPTID = list0[1];} else { RPTID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S6F19R

S6F20Individual Report Data Sent by Equipment Only

    // S6F20 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(6, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n V
        // variables for data items and parsing
        String V;  	// A:n (varies)  variable value, any type including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { V = list1[1];} else { V = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F21RAnnotated Individual Report Request Sent by Host Only

    // S6F21R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 6, 21, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 21)) {recvS6F21(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect RPTID
        // variables for data items and parsing
        String RPTID;  	// U4:1 (varies)  report ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { RPTID = list0[1];} else { RPTID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 22, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S6F21R

S6F22Annotated Individual Report Data Sent by Equipment Only

    // S6F22 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(6, 21, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:2 VID V}
        // variables for data items and parsing
        String VID;  	// A:n (varies)  A variable ID
        String V;  	// A:n (varies)  variable value, any type including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 3) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { VID = list2[1];} else { VID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { V = list2[1];} else { V = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F23RRequest or Purge Spooled Data Sent by Host Only

    // S6F23R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 6, 23, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 23)) {recvS6F23(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect RSDC
        // variables for data items and parsing
        int RSDC;  	// U1:1 (always)  spool request code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           RSDC = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 24, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S6F23R

S6F24Request or Purge Spooled Data Ack Sent by Equipment Only

    // S6F24 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(6, 23, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect RSDA
        // variables for data items and parsing
        int RSDA;  	// B:1 (always)  spool request reply
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           RSDA = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F25[R]Notification Report Send Sent by Host and Equipment

    // S6F25 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 6, 25, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 25)) {recvS6F25(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:7 DATAID OPID LINKID RCPSPEC RMCHGSTAT {L:m {L:2 RCPATTRID RCPATTRDATA}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String OPID;  	// U4:1 (varies)  operation identifier
        int LINKID;  	// U4:1 (always)  correlates the RMOPID value in a request to a completion report
        String RCPSPEC;  	// A:n (always)  recipe specifier
        String RMCHGSTAT;  	// U4:1 (varies)  object change type
        String RCPATTRID;  	// A:n (always)  the name of a recipe attribute, but not used to indicate the recipe identifier
        String RCPATTRDATA;  	// A:n (varies)  the value of a recipe attribute, any type of data including list
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 8) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           LINKID = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RMCHGSTAT = list1[1];} else { RMCHGSTAT = ""; }
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[7]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 26, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S6F25

S6F26Notification Report Send Ack Sent by Host and Equipment

    // S6F26 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(6, 25, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC6
        // variables for data items and parsing
        int ACKC6;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC6 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F27[R]Trace Report Send Sent by Equipment Only

    // S6F27 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 6, 27, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 27)) {recvS6F27(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 DATAID TRID {L:n {L:p {L:2 RPTID {L:m V}}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String TRID;  	// A:n (varies)  trace request ID
        String RPTID;  	// U4:1 (varies)  report ID
        String V;  	// A:n (varies)  variable value, any type including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok=false; break; }
               for(int p=1; p < list2.length; p++) {
                   String [] list3;
                   list3 = TclList.split(list2[p]);
                   if (list3.length != 3) { ok=false; break; }
                   String [] list4;
                   list4 = TclList.split(list3[1]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { RPTID = list4[1];} else { RPTID = ""; }
                   list4 = TclList.split(list3[2]);
                   if (list4.length < 1) { ok=false; break; }
                   for(int m=1; m < list4.length; m++) {
                       String [] list5;
                       list5 = TclList.split(list4[m]);
                       if (list5.length < 1) { ok = false; break; }
                       if (list5.length == 2) { V = list5[1];} else { V = ""; }
                       }
                   if (!ok) break;
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 28, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S6F27

S6F28Trace Report Send Ack Sent by Host Only

    // S6F28 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(6, 27, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect TRID
        // variables for data items and parsing
        String TRID;  	// A:n (varies)  trace request ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { TRID = list0[1];} else { TRID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S6F29RTrace Report Request Sent by Host Only

    // S6F29R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 6, 29, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 6) && (function = 29)) {recvS6F29(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS6F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect TRID
        // variables for data items and parsing
        String TRID;  	// A:n (varies)  trace request ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { TRID = list0[1];} else { TRID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(6, 30, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S6F29R

S6F30Trace Report Data Sent by Equipment Only

    // S6F30 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(6, 29, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 TRID {L:n {L:2 RPTID {L:m V}}} ERRCODE
        // variables for data items and parsing
        String TRID;  	// A:n (varies)  trace request ID
        String RPTID;  	// U4:1 (varies)  report ID
        String V;  	// A:n (varies)  variable value, any type including list
        String ERRCODE;  	// U4:1 (varies)  error code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int m=1; m < list3.length; m++) {
                   String [] list4;
                   list4 = TclList.split(list3[m]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { V = list4[1];} else { V = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ERRCODE = list1[1];} else { ERRCODE = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F1RProcess Program Load Inquire Sent by Host and Equipment

    // S7F1R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 1)) {recvS7F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PPID LENGTH
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        int LENGTH;  	// U4:1 (always)  program length in bytes
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           LENGTH = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F1R

S7F2Process Program Load Grant Sent by Host and Equipment

    // S7F2 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect PPGNT
        // variables for data items and parsing
        int PPGNT;  	// B:1 (always)  process program transfer grant status
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           PPGNT = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F3RProcess Program Send Sent by Host and Equipment

    // S7F3R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 3)) {recvS7F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PPID PPBODY
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        int [] PPBODY;  	// B:n (varies)  process program data, any non-list type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           PPBODY = new int[list1.length-1];
           for(int i=0; i < PPBODY.length; i++) {
               PPBODY[i] = sp.binToInt(list1[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F3R

S7F4Process Program Send Acknowledge Sent by Host and Equipment

    // S7F4 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC7
        // variables for data items and parsing
        int ACKC7;  	// B:1 (always)  S7 acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC7 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F5RProcess Program Request Sent by Host and Equipment

    // S7F5R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 5)) {recvS7F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect PPID
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { PPID = list0[1];} else { PPID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F5R

S7F6Process Program Data Sent by Host and Equipment

    // S7F6 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 PPID PPBODY
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        int [] PPBODY;  	// B:n (varies)  process program data, any non-list type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           PPBODY = new int[list1.length-1];
           for(int i=0; i < PPBODY.length; i++) {
               PPBODY[i] = sp.binToInt(list1[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F7RProcess Program ID Request Sent by Equipment Only

    // S7F7R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 7, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 7)) {recvS7F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect MID
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { MID = list0[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F7R

S7F8Process Program ID Data Sent by Host Only

    // S7F8 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(7, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 PPID MID
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F9RMatl/Process Matrix Request Sent by Host and Equipment

    // S7F9R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 9)) {recvS7F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F9R

S7F10Matl/Process Matrix Data Sent by Host and Equipment

    // S7F10 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:2 PPID {L:a MID}}
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 3) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { PPID = list2[1];} else { PPID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok=false; break; }
               for(int a=1; a < list2.length; a++) {
                   String [] list3;
                   list3 = TclList.split(list2[a]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { MID = list3[1];} else { MID = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F11[R]Matl/Process Matrix Update Send Sent by Host Only

    // S7F11 Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 7, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 11)) {recvS7F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n {L:2 PPID {L:a MID}}
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 3) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { PPID = list2[1];} else { PPID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok=false; break; }
               for(int a=1; a < list2.length; a++) {
                   String [] list3;
                   list3 = TclList.split(list2[a]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { MID = list3[1];} else { MID = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S7F11

S7F12Matl/Process Matrix Update Ack Sent by Equipment Only

    // S7F12 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(7, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC7
        // variables for data items and parsing
        int ACKC7;  	// B:1 (always)  S7 acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC7 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F13[R]Matl/Process Matrix Delete Entry Send Sent by Host Only

    // S7F13 Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 7, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 13)) {recvS7F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n {L:2 PPID {L:a MID}}
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 3) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { PPID = list2[1];} else { PPID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok=false; break; }
               for(int a=1; a < list2.length; a++) {
                   String [] list3;
                   list3 = TclList.split(list2[a]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { MID = list3[1];} else { MID = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S7F13

S7F14Delete Matl/Process Matrix Entry Acknowledge Sent by Equipment Only

    // S7F14 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(7, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC7
        // variables for data items and parsing
        int ACKC7;  	// B:1 (always)  S7 acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC7 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F15RMatrix Mode Select Send Sent by Host Only

    // S7F15R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 7, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 15)) {recvS7F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect MMODE
        // variables for data items and parsing
        int MMODE;  	// B:1 (always)  matrix mode selection
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           MMODE = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S7F15R

S7F16Matrix Mode Select Ack Sent by Equipment Only

    // S7F16 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(7, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC7
        // variables for data items and parsing
        int ACKC7;  	// B:1 (always)  S7 acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC7 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F17RDelete Process Program Send Sent by Host Only

    // S7F17R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 7, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 17)) {recvS7F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n PPID
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S7F17R

S7F18Delete Process Program Acknowledge Sent by Equipment Only

    // S7F18 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(7, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC7
        // variables for data items and parsing
        int ACKC7;  	// B:1 (always)  S7 acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC7 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F19RCurrent Process Program Dir Request Sent by Host Only

    // S7F19R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 7, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 19)) {recvS7F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S7F19R

S7F20Current Process Program Data Sent by Equipment Only

    // S7F20 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(7, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n PPID
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F21Process Capabilities Request Sent by Host Only

    // S7F21 Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 7, 21, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 21)) {recvS7F21(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 22, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S7F21

S7F22Process Capabilities Data Sent by Equipment Only

    // S7F22 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(7, 21, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:5 MDLN SOFTREV CMDMAX BYTMAX {L:c {L:11 CCODE CNAME RQCMD BLKDEF BCDS IBCDS NBCDS ACDS IACDS NACDS {L:p L:x}}}
        // variables for data items and parsing
        String MDLN;  	// A:20 (always)  equipment model type
        String SOFTREV;  	// A:20 (always)  software revision
        String CMDMAX;  	// U1:1 (varies)  maximum number of commands allowed, 0=unlimited
        String BYTMAX;  	// U4:1 (varies)  process program maximum byte length, 0 means no limit
        String CCODE;  	// A:n (varies)  process operation command code
        String CNAME;  	// A:16 (always)  text name for a CCODE
        int RQCMD;  	// TF:1 (always)  flag that command is required
        int BLKDEF;  	// I1:1 (always)  command definition block relationship, standard incorrectly says type U1 is possible
        int [] BCDS;  	// U2:n (varies)  before command code vector
        int [] IBCDS;  	// U2:n (varies)  vector of immediately before command codes
        int [] NBCDS;  	// U2:n (varies)  vector of not before command codes
        String ACDS;  	// U2:1 (varies)  after command codes
        int [] IACDS;  	// U2:n (varies)  vector of immediately after command codes
        int [] NACDS;  	// U2:n (varies)  vector of not after command codes
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CMDMAX = list1[1];} else { CMDMAX = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { BYTMAX = list1[1];} else { BYTMAX = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int c=1; c < list1.length; c++) {
               String [] list2;
               list2 = TclList.split(list1[c]);
               if (list2.length != 12) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CCODE = list3[1];} else { CCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { CNAME = list3[1];} else { CNAME = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("TF:1")) { ok = false; break; }
               RQCMD = Integer.parse(list3[1]);
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("I1:1")) { ok = false; break; }
               BLKDEF = Integer.parse(list3[1]);
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               BCDS = new int[list3.length-1];
               for(int i=0; i < BCDS.length; i++) {
                   BCDS[i] = Integer.parse(list3[1+i]);
                   }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               IBCDS = new int[list3.length-1];
               for(int i=0; i < IBCDS.length; i++) {
                   IBCDS[i] = Integer.parse(list3[1+i]);
                   }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               NBCDS = new int[list3.length-1];
               for(int i=0; i < NBCDS.length; i++) {
                   NBCDS[i] = Integer.parse(list3[1+i]);
                   }
               list3 = TclList.split(list2[8]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ACDS = list3[1];} else { ACDS = ""; }
               list3 = TclList.split(list2[9]);
               if (list3.length < 1) { ok = false; break; }
               IACDS = new int[list3.length-1];
               for(int i=0; i < IACDS.length; i++) {
                   IACDS[i] = Integer.parse(list3[1+i]);
                   }
               list3 = TclList.split(list2[10]);
               if (list3.length < 1) { ok = false; break; }
               NACDS = new int[list3.length-1];
               for(int i=0; i < NACDS.length; i++) {
                   NACDS[i] = Integer.parse(list3[1+i]);
                   }
               list3 = TclList.split(list2[11]);
               if (list3.length < 1) { ok=false; break; }
               for(int p=1; p < list3.length; p++) {
                   String [] list4;
                   list4 = TclList.split(list3[p]);
                   if (list4.length != 1 || list4[0] != "L:x") { ok = false; break; }
                   // single token data such as L:0 or U4:0 has been received as expected
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F23RFormatted Process Program Send Sent by Host and Equipment

    // S7F23R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 23, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 23)) {recvS7F23(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 PPID MDLN SOFTREV {L:c {L:2 CCODE {L:p PPARM}}}
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        String MDLN;  	// A:20 (always)  equipment model type
        String SOFTREV;  	// A:20 (always)  software revision
        String CCODE;  	// A:n (varies)  process operation command code
        String PPARM;  	// A:n (varies)  process parameter, any scalar or vector
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int c=1; c < list1.length; c++) {
               String [] list2;
               list2 = TclList.split(list1[c]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CCODE = list3[1];} else { CCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int p=1; p < list3.length; p++) {
                   String [] list4;
                   list4 = TclList.split(list3[p]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { PPARM = list4[1];} else { PPARM = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 24, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F23R

S7F24Formatted Process Program Acknowledge Sent by Host and Equipment

    // S7F24 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 23, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC7
        // variables for data items and parsing
        int ACKC7;  	// B:1 (always)  S7 acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC7 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F25RFormatted Process Program Request Sent by Host and Equipment

    // S7F25R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 25, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 25)) {recvS7F25(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect PPID
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { PPID = list0[1];} else { PPID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 26, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F25R

S7F26Formatted Process Program Data Sent by Host and Equipment

    // S7F26 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 25, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:4 PPID MDLN SOFTREV {L:c {L:2 CCODE {L:p PPARM}}}
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        String MDLN;  	// A:20 (always)  equipment model type
        String SOFTREV;  	// A:20 (always)  software revision
        String CCODE;  	// A:n (varies)  process operation command code
        String PPARM;  	// A:n (varies)  process parameter, any scalar or vector
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int c=1; c < list1.length; c++) {
               String [] list2;
               list2 = TclList.split(list1[c]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CCODE = list3[1];} else { CCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int p=1; p < list3.length; p++) {
                   String [] list4;
                   list4 = TclList.split(list3[p]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { PPARM = list4[1];} else { PPARM = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F27RProcess Program Verification Send Sent by Equipment Only

    // S7F27R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 7, 27, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 27)) {recvS7F27(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PPID {L:n {L:3 ACKC7A SEQNUM ERRW7}}
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        String ACKC7A;  	// U4:1 (varies)  process program check code
        String SEQNUM;  	// U4:1 (varies)  process program command number
        String ERRW7;  	// A:n (varies)  process program error description
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ACKC7A = list3[1];} else { ACKC7A = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { SEQNUM = list3[1];} else { SEQNUM = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRW7 = list3[1];} else { ERRW7 = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 28, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F27R

S7F28Process Program Verification Acknowledge Sent by Host Only

    // S7F28 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(7, 27, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // no data expected
        return;  // parsed ok
        } // end while(ok)

S7F29RProcess Program Verification Inquire Sent by Equipment Only

    // S7F29R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 7, 29, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 29)) {recvS7F29(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect LENGTH
        // variables for data items and parsing
        int LENGTH;  	// U4:1 (always)  program length in bytes
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U4:1")) { ok = false; break; }
           LENGTH = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 30, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F29R

S7F30Process Program Verification Grant Sent by Host Only

    // S7F30 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(7, 29, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect PPGNT
        // variables for data items and parsing
        int PPGNT;  	// B:1 (always)  process program transfer grant status
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           PPGNT = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F31RVerification Request Send Sent by Host Only

    // S7F31R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 7, 31, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 31)) {recvS7F31(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 PPID MDLN SOFTREV {L:c {L:2 CCODE {L:p PPARM}}}
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        String MDLN;  	// A:20 (always)  equipment model type
        String SOFTREV;  	// A:20 (always)  software revision
        String CCODE;  	// A:n (varies)  process operation command code
        String PPARM;  	// A:n (varies)  process parameter, any scalar or vector
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int c=1; c < list1.length; c++) {
               String [] list2;
               list2 = TclList.split(list1[c]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CCODE = list3[1];} else { CCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int p=1; p < list3.length; p++) {
                   String [] list4;
                   list4 = TclList.split(list3[p]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { PPARM = list4[1];} else { PPARM = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 32, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S7F31R

S7F32Verification Request Acknowledge Sent by Equipment Only

    // S7F32 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(7, 31, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC7
        // variables for data items and parsing
        int ACKC7;  	// B:1 (always)  S7 acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC7 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F33RProcess Program Available Request Sent by Host and Equipment

    // S7F33R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 33, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 33)) {recvS7F33(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect PPID
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { PPID = list0[1];} else { PPID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 34, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F33R

S7F34Process Program Availability Data Sent by Host and Equipment

    // S7F34 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 33, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 PPID UNFLEN FRMLEN
        // variables for data items and parsing
        String PPID;  	// A:80 (varies)  process program ID
        String UNFLEN;  	// U4:1 (varies)  unformatted process program length if available, else 0
        String FRMLEN;  	// U4:1 (varies)  formatted process program length if available, else 0
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { UNFLEN = list1[1];} else { UNFLEN = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { FRMLEN = list1[1];} else { FRMLEN = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F35RProcess Program for MID Request Sent by Host and Equipment

    // S7F35R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 35, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 35)) {recvS7F35(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F35(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect MID
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { MID = list0[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 36, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F35R

S7F36Process Program for MID Data Sent by Host and Equipment

    // S7F36 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 35, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 MID PPID PPBODY
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        String PPID;  	// A:80 (varies)  process program ID
        int [] PPBODY;  	// B:n (varies)  process program data, any non-list type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           PPBODY = new int[list1.length-1];
           for(int i=0; i < PPBODY.length; i++) {
               PPBODY[i] = sp.binToInt(list1[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F37RLarge PP Send Sent by Host and Equipment

    // S7F37R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 37, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 37)) {recvS7F37(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F37(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect DSNAME
        // variables for data items and parsing
        String DSNAME;  	// A:50 (varies)  the name of a dataset such as a PPID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { DSNAME = list0[1];} else { DSNAME = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 38, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F37R

S7F38Large PP Send Ack Sent by Host and Equipment

    // S7F38 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 37, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC7
        // variables for data items and parsing
        int ACKC7;  	// B:1 (always)  S7 acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC7 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F39RLarge Formatted PP Send Sent by Host and Equipment

    // S7F39R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 39, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 39)) {recvS7F39(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F39(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect DSNAME
        // variables for data items and parsing
        String DSNAME;  	// A:50 (varies)  the name of a dataset such as a PPID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { DSNAME = list0[1];} else { DSNAME = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 40, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F39R

S7F40Large Formatted PP Ack Sent by Host and Equipment

    // S7F40 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 39, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC7
        // variables for data items and parsing
        int ACKC7;  	// B:1 (always)  S7 acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC7 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F41RLarge PP Req Sent by Host and Equipment

    // S7F41R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 41, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 41)) {recvS7F41(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F41(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect DSNAME
        // variables for data items and parsing
        String DSNAME;  	// A:50 (varies)  the name of a dataset such as a PPID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { DSNAME = list0[1];} else { DSNAME = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 42, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F41R

S7F42Large PP Req Ack Sent by Host and Equipment

    // S7F42 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 41, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC7
        // variables for data items and parsing
        int ACKC7;  	// B:1 (always)  S7 acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC7 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S7F43RLarge Formatted PP Req Sent by Host and Equipment

    // S7F43R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 7, 43, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 7) && (function = 43)) {recvS7F43(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS7F43(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect DSNAME
        // variables for data items and parsing
        String DSNAME;  	// A:50 (varies)  the name of a dataset such as a PPID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { DSNAME = list0[1];} else { DSNAME = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(7, 44, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S7F43R

S7F44Large Formatted PP Req Ack Sent by Host and Equipment

    // S7F44 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(7, 43, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC7
        // variables for data items and parsing
        int ACKC7;  	// B:1 (always)  S7 acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC7 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S8F1RBoot Program Request Sent by Host and Equipment

    // S8F1R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 8, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 8) && (function = 1)) {recvS8F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS8F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(8, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S8F1R

S8F2Boot Program Data Sent by Host and Equipment

    // S8F2 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(8, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect BPD
        // variables for data items and parsing
        int [] BPD;  	// B:n (always)  boot program data,  the fantasy of using SECS for boot programs has been revived
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           BPD = new int[list0.length-1];
           for(int i=0; i < BPD.length; i++) {
               BPD[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S8F3RExecutive Program Request Sent by Host and Equipment

    // S8F3R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 8, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 8) && (function = 3)) {recvS8F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS8F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(8, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S8F3R

S8F4Executive Program Data Sent by Host and Equipment

    // S8F4 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(8, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect EPD
        // variables for data items and parsing
        int [] EPD;  	// B:n (always)  executive program data, the fantasy of using SECS for this has been revived
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           EPD = new int[list0.length-1];
           for(int i=0; i < EPD.length; i++) {
               EPD[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S9F1Unknown Device ID Sent by Equipment Only

    // S9F1 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 9, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 9) && (function = 1)) {recvS9F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS9F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect MHEAD
        // variables for data items and parsing
        int [] MHEAD;  	// B:10 (always)  message header of received block
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           MHEAD = new int[list0.length-1];
           for(int i=0; i < MHEAD.length; i++) {
               MHEAD[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        } // end while(ok)
    } // end recv_S9F1

S9F3Unknown Stream Sent by Equipment Only

    // S9F3 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 9, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 9) && (function = 3)) {recvS9F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS9F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect MHEAD
        // variables for data items and parsing
        int [] MHEAD;  	// B:10 (always)  message header of received block
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           MHEAD = new int[list0.length-1];
           for(int i=0; i < MHEAD.length; i++) {
               MHEAD[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        } // end while(ok)
    } // end recv_S9F3

S9F5Unknown Function Sent by Equipment Only

    // S9F5 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 9, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 9) && (function = 5)) {recvS9F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS9F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect MHEAD
        // variables for data items and parsing
        int [] MHEAD;  	// B:10 (always)  message header of received block
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           MHEAD = new int[list0.length-1];
           for(int i=0; i < MHEAD.length; i++) {
               MHEAD[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        } // end while(ok)
    } // end recv_S9F5

S9F7Illegal Data Sent by Equipment Only

    // S9F7 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 9, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 9) && (function = 7)) {recvS9F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS9F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect MHEAD
        // variables for data items and parsing
        int [] MHEAD;  	// B:10 (always)  message header of received block
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           MHEAD = new int[list0.length-1];
           for(int i=0; i < MHEAD.length; i++) {
               MHEAD[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        } // end while(ok)
    } // end recv_S9F7

S9F9Transaction Timeout Sent by Equipment Only

    // S9F9 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 9, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 9) && (function = 9)) {recvS9F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS9F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect SHEAD
        // variables for data items and parsing
        int [] SHEAD;  	// B:10 (always)  message header of sent block
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           SHEAD = new int[list0.length-1];
           for(int i=0; i < SHEAD.length; i++) {
               SHEAD[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        } // end while(ok)
    } // end recv_S9F9

S9F11Data Too Long Sent by Equipment Only

    // S9F11 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 9, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 9) && (function = 11)) {recvS9F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS9F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect MHEAD
        // variables for data items and parsing
        int [] MHEAD;  	// B:10 (always)  message header of received block
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("B:")) { ok = false; break; }
           MHEAD = new int[list0.length-1];
           for(int i=0; i < MHEAD.length; i++) {
               MHEAD[i] = sp.binToInt(list0[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        } // end while(ok)
    } // end recv_S9F11

S9F13Conversation Timeout Sent by Equipment Only

    // S9F13 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 9, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 9) && (function = 13)) {recvS9F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS9F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 MEXP EDID
        // variables for data items and parsing
        String MEXP;  	// A:6 (always)  message expected in form of SxxFyy
        String EDID;  	// A:80 (varies)  expected data identification, PPID or SPID or PTN
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { MEXP = list1[1];} else { MEXP = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { EDID = list1[1];} else { EDID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        } // end while(ok)
    } // end recv_S9F13

S10F1[R]Terminal Request Sent by Equipment Only

    // S10F1 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 10, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 10) && (function = 1)) {recvS10F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS10F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 TID TEXT
        // variables for data items and parsing
        int TID;  	// B:1 (always)  terminal ID
        String TEXT;  	// A:120 (varies)  line of text for display, no standard max size
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           TID = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TEXT = list1[1];} else { TEXT = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(10, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S10F1

S10F2Terminal Request Acknowledge Sent by Host Only

    // S10F2 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(10, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC10
        // variables for data items and parsing
        int ACKC10;  	// B:1 (always)  acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC10 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S10F3[R]Terminal Display, Single Sent by Host Only

    // S10F3 Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 10, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 10) && (function = 3)) {recvS10F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS10F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 TID TEXT
        // variables for data items and parsing
        int TID;  	// B:1 (always)  terminal ID
        String TEXT;  	// A:120 (varies)  line of text for display, no standard max size
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           TID = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TEXT = list1[1];} else { TEXT = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(10, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S10F3

S10F4Terminal Display, Single Acknowledge Sent by Equipment Only

    // S10F4 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(10, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC10
        // variables for data items and parsing
        int ACKC10;  	// B:1 (always)  acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC10 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S10F5[R]Terminal Display, Multi-Block Sent by Host Only

    // S10F5 Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 10, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 10) && (function = 5)) {recvS10F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS10F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 TID {L:n TEXT}
        // variables for data items and parsing
        int TID;  	// B:1 (always)  terminal ID
        String TEXT;  	// A:120 (varies)  line of text for display, no standard max size
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           TID = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { TEXT = list2[1];} else { TEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(10, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S10F5

S10F6Terminal Display, Multi-Block Acknowledge Sent by Equipment Only

    // S10F6 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(10, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC10
        // variables for data items and parsing
        int ACKC10;  	// B:1 (always)  acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC10 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S10F7Multi-block Not Allowed Sent by Equipment Only

    // S10F7 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 10, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 10) && (function = 7)) {recvS10F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS10F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect TID
        // variables for data items and parsing
        int TID;  	// B:1 (always)  terminal ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           TID = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(10, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S10F7

S10F9Broadcast Sent by Host Only

    // S10F9 Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 10, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 10) && (function = 9)) {recvS10F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS10F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect TEXT
        // variables for data items and parsing
        String TEXT;  	// A:120 (varies)  line of text for display, no standard max size
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { TEXT = list0[1];} else { TEXT = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(10, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S10F9

S10F10Broadcast Acknowledge Sent by Equipment Only

    // S10F10 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(10, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC10
        // variables for data items and parsing
        int ACKC10;  	// B:1 (always)  acknowledge code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC10 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S12F1RMap Setup Data Send Sent by Equipment Only

    // S12F1R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 12, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 12) && (function = 1)) {recvS12F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS12F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:15 MID IDTYP FNLOC FFROT ORLOC RPSEL {L:n REFP} DUTMS XDIES YDIES ROWCT COLCT NULBC PRDCT PRAXI
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        int FNLOC;  	// U2:1 (always)  flat/notch location in degrees clockwise from bottom
        int FFROT;  	// U2:1 (always)  film frame location in degrees clockwise from bottom
        int ORLOC;  	// B:1 (always)  origin location
        int RPSEL;  	// U1:1 (always)  reference point select 
        int [] REFP;  	// I4:2 (varies)  x y reference point
        String DUTMS;  	// A:n (always)  die units of measure (per E5 Section 12)
        String XDIES;  	// F4:1 (varies)  X-axis die size
        String YDIES;  	// F4:1 (varies)  Y-axis die size
        String ROWCT;  	// U4:1 (varies)  row count in die increments
        String COLCT;  	// U4:1 (varies)  column count in die increments
        String NULBC;  	// A:n (varies)  null bin code value
        String PRDCT;  	// U4:1 (varies)  process die count
        int PRAXI;  	// B:1 (always)  process access
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 16) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U2:1")) { ok = false; break; }
           FNLOC = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U2:1")) { ok = false; break; }
           FFROT = Integer.parse(list1[1]);
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ORLOC = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RPSEL = Integer.parse(list1[1]);
           list1 = TclList.split(list0[7]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               REFP = new int[list2.length-1];
               for(int i=0; i < REFP.length; i++) {
                   REFP[i] = Integer.parse(list2[1+i]);
                   }
               }
           if (!ok) break;
           list1 = TclList.split(list0[8]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { DUTMS = list1[1];} else { DUTMS = ""; }
           list1 = TclList.split(list0[9]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { XDIES = list1[1];} else { XDIES = ""; }
           list1 = TclList.split(list0[10]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { YDIES = list1[1];} else { YDIES = ""; }
           list1 = TclList.split(list0[11]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ROWCT = list1[1];} else { ROWCT = ""; }
           list1 = TclList.split(list0[12]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { COLCT = list1[1];} else { COLCT = ""; }
           list1 = TclList.split(list0[13]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { NULBC = list1[1];} else { NULBC = ""; }
           list1 = TclList.split(list0[14]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PRDCT = list1[1];} else { PRDCT = ""; }
           list1 = TclList.split(list0[15]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           PRAXI = sp.binToInt(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(12, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S12F1R

S12F2Map Setup Data Acknowledge Sent by Host Only

    // S12F2 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(12, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect SDACK
        // variables for data items and parsing
        int SDACK;  	// B:1 (always)  setup data ack, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           SDACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S12F3RMap Setup Data Request Sent by Equipment Only

    // S12F3R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 12, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 12) && (function = 3)) {recvS12F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS12F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:9 MID IDTYP MAPFT FNLOC FFROT ORLOC PRAXI BCEQU NULBC
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        int MAPFT;  	// B:1 (always)  map data format type
        int FNLOC;  	// U2:1 (always)  flat/notch location in degrees clockwise from bottom
        int FFROT;  	// U2:1 (always)  film frame location in degrees clockwise from bottom
        int ORLOC;  	// B:1 (always)  origin location
        int PRAXI;  	// B:1 (always)  process access
        int [] BCEQU;  	// U1:n (varies)  array of bin code equivalents
        String NULBC;  	// A:n (varies)  null bin code value
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 10) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           MAPFT = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U2:1")) { ok = false; break; }
           FNLOC = Integer.parse(list1[1]);
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U2:1")) { ok = false; break; }
           FFROT = Integer.parse(list1[1]);
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ORLOC = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[7]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           PRAXI = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[8]);
           if (list1.length < 1) { ok = false; break; }
           BCEQU = new int[list1.length-1];
           for(int i=0; i < BCEQU.length; i++) {
               BCEQU[i] = Integer.parse(list1[1+i]);
               }
           list1 = TclList.split(list0[9]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { NULBC = list1[1];} else { NULBC = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(12, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S12F3R

S12F4Map Setup Data Sent by Host Only

    // S12F4 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(12, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:15 MID IDTYP FNLOC ORLOC RPSEL {L:n REFP} DUTMS XDIES YDIES ROWCT COLCT PRDCT BCEQU NULBC MLCL
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        int FNLOC;  	// U2:1 (always)  flat/notch location in degrees clockwise from bottom
        int ORLOC;  	// B:1 (always)  origin location
        int RPSEL;  	// U1:1 (always)  reference point select 
        int [] REFP;  	// I4:2 (varies)  x y reference point
        String DUTMS;  	// A:n (always)  die units of measure (per E5 Section 12)
        String XDIES;  	// F4:1 (varies)  X-axis die size
        String YDIES;  	// F4:1 (varies)  Y-axis die size
        String ROWCT;  	// U4:1 (varies)  row count in die increments
        String COLCT;  	// U4:1 (varies)  column count in die increments
        String PRDCT;  	// U4:1 (varies)  process die count
        int [] BCEQU;  	// U1:n (varies)  array of bin code equivalents
        String NULBC;  	// A:n (varies)  null bin code value
        String MLCL;  	// U4:1 (varies)  message length in bytes
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 16) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U2:1")) { ok = false; break; }
           FNLOC = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ORLOC = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RPSEL = Integer.parse(list1[1]);
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               REFP = new int[list2.length-1];
               for(int i=0; i < REFP.length; i++) {
                   REFP[i] = Integer.parse(list2[1+i]);
                   }
               }
           if (!ok) break;
           list1 = TclList.split(list0[7]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { DUTMS = list1[1];} else { DUTMS = ""; }
           list1 = TclList.split(list0[8]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { XDIES = list1[1];} else { XDIES = ""; }
           list1 = TclList.split(list0[9]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { YDIES = list1[1];} else { YDIES = ""; }
           list1 = TclList.split(list0[10]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ROWCT = list1[1];} else { ROWCT = ""; }
           list1 = TclList.split(list0[11]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { COLCT = list1[1];} else { COLCT = ""; }
           list1 = TclList.split(list0[12]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PRDCT = list1[1];} else { PRDCT = ""; }
           list1 = TclList.split(list0[13]);
           if (list1.length < 1) { ok = false; break; }
           BCEQU = new int[list1.length-1];
           for(int i=0; i < BCEQU.length; i++) {
               BCEQU[i] = Integer.parse(list1[1+i]);
               }
           list1 = TclList.split(list0[14]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { NULBC = list1[1];} else { NULBC = ""; }
           list1 = TclList.split(list0[15]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MLCL = list1[1];} else { MLCL = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S12F5RMap Transmit Inquire Sent by Equipment Only

    // S12F5R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 12, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 12) && (function = 5)) {recvS12F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS12F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 MID IDTYP MAPFT MLCL
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        int MAPFT;  	// B:1 (always)  map data format type
        String MLCL;  	// U4:1 (varies)  message length in bytes
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           MAPFT = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MLCL = list1[1];} else { MLCL = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(12, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S12F5R

S12F6Map Transmit Grant Sent by Host Only

    // S12F6 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(12, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect GRNT1
        // variables for data items and parsing
        int GRNT1;  	// B:1 (always)  grant code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           GRNT1 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S12F7RMap Data Send Type 1 Sent by Equipment Only

    // S12F7R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 12, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 12) && (function = 7)) {recvS12F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS12F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 MID IDTYP {L:n {L:2 RSINF BINLT}}
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        int [] RSINF;  	// I4:3 (varies)  starting location for row or column, x,y,direction triplet
        int [] BINLT;  	// U1:n (varies)  array of bin values, text or U1 array
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               RSINF = new int[list3.length-1];
               for(int i=0; i < RSINF.length; i++) {
                   RSINF[i] = Integer.parse(list3[1+i]);
                   }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               BINLT = new int[list3.length-1];
               for(int i=0; i < BINLT.length; i++) {
                   BINLT[i] = Integer.parse(list3[1+i]);
                   }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(12, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S12F7R

S12F8Map Data Ack Type 1 Sent by Host Only

    // S12F8 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(12, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect MDACK
        // variables for data items and parsing
        int MDACK;  	// B:1 (always)  map data ack
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           MDACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S12F9RMap Data Send Type 2 Sent by Equipment Only

    // S12F9R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 12, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 12) && (function = 9)) {recvS12F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS12F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 MID IDTYP STRP BINLT
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        int [] STRP;  	// I2:2 (varies)  x y die coordinate starting position
        int [] BINLT;  	// U1:n (varies)  array of bin values, text or U1 array
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           STRP = new int[list1.length-1];
           for(int i=0; i < STRP.length; i++) {
               STRP[i] = Integer.parse(list1[1+i]);
               }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           BINLT = new int[list1.length-1];
           for(int i=0; i < BINLT.length; i++) {
               BINLT[i] = Integer.parse(list1[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(12, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S12F9R

S12F10Map Data Ack Type 2 Sent by Host Only

    // S12F10 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(12, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect MDACK
        // variables for data items and parsing
        int MDACK;  	// B:1 (always)  map data ack
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           MDACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S12F11RMap Data Send Type 3 Sent by Equipment Only

    // S12F11R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 12, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 12) && (function = 11)) {recvS12F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS12F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 MID IDTYP {L:n {L:2 XYPOS BINLT}}
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        int [] XYPOS;  	// I2:2 (varies)  x y coordinate position
        int [] BINLT;  	// U1:n (varies)  array of bin values, text or U1 array
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               XYPOS = new int[list3.length-1];
               for(int i=0; i < XYPOS.length; i++) {
                   XYPOS[i] = Integer.parse(list3[1+i]);
                   }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               BINLT = new int[list3.length-1];
               for(int i=0; i < BINLT.length; i++) {
                   BINLT[i] = Integer.parse(list3[1+i]);
                   }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(12, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S12F11R

S12F12Map Data Ack Type 3 Sent by Host Only

    // S12F12 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(12, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect MDACK
        // variables for data items and parsing
        int MDACK;  	// B:1 (always)  map data ack
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           MDACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S12F13RMap Data Request Type 1 Sent by Equipment Only

    // S12F13R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 12, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 12) && (function = 13)) {recvS12F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS12F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 MID IDTYP
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(12, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S12F13R

S12F14Map Data Type 1 Sent by Host Only

    // S12F14 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(12, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 MID IDTYP {L:n {L:2 RSINF BINLT}}
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        int [] RSINF;  	// I4:3 (varies)  starting location for row or column, x,y,direction triplet
        int [] BINLT;  	// U1:n (varies)  array of bin values, text or U1 array
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               RSINF = new int[list3.length-1];
               for(int i=0; i < RSINF.length; i++) {
                   RSINF[i] = Integer.parse(list3[1+i]);
                   }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               BINLT = new int[list3.length-1];
               for(int i=0; i < BINLT.length; i++) {
                   BINLT[i] = Integer.parse(list3[1+i]);
                   }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S12F15RMap Data Request Type 2 Sent by Equipment Only

    // S12F15R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 12, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 12) && (function = 15)) {recvS12F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS12F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 MID IDTYP
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(12, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S12F15R

S12F16Map Data Type 2 Sent by Host Only

    // S12F16 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(12, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:4 MID IDTYP STRP BINLT
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        int [] STRP;  	// I2:2 (varies)  x y die coordinate starting position
        int [] BINLT;  	// U1:n (varies)  array of bin values, text or U1 array
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           STRP = new int[list1.length-1];
           for(int i=0; i < STRP.length; i++) {
               STRP[i] = Integer.parse(list1[1+i]);
               }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           BINLT = new int[list1.length-1];
           for(int i=0; i < BINLT.length; i++) {
               BINLT[i] = Integer.parse(list1[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S12F17RMap Data Request Type 3 Sent by Equipment Only

    // S12F17R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 12, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 12) && (function = 17)) {recvS12F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS12F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 MID IDTYP SDBIN
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        int SDBIN;  	// B:1 (always)  send bin data flag, 0=send, else do not
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           SDBIN = sp.binToInt(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(12, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S12F17R

S12F18Map Data Type 3 Sent by Host Only

    // S12F18 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(12, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 MID IDTYP {L:n {L:2 XYPOS BINLT}}
        // variables for data items and parsing
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int IDTYP;  	// B:1 (always)  ID type
        int [] XYPOS;  	// I2:2 (varies)  x y coordinate position
        int [] BINLT;  	// U1:n (varies)  array of bin values, text or U1 array
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           IDTYP = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               XYPOS = new int[list3.length-1];
               for(int i=0; i < XYPOS.length; i++) {
                   XYPOS[i] = Integer.parse(list3[1+i]);
                   }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               BINLT = new int[list3.length-1];
               for(int i=0; i < BINLT.length; i++) {
                   BINLT[i] = Integer.parse(list3[1+i]);
                   }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S12F19Map Error Report Send Sent by Host and Equipment

    // S12F19 Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 12, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 12) && (function = 19)) {recvS12F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS12F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 MAPER DATLC
        // variables for data items and parsing
        int MAPER;  	// B:1 (always)  map error
        int DATLC;  	// U1:1 (always)  location of invalid data, offset in bytes in the SECS-II message body
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           MAPER = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           DATLC = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(12, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S12F19

S13F1RSend Data Set Send Sent by Host and Equipment

    // S13F1R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 13, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 13) && (function = 1)) {recvS13F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS13F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:1 DSNAME
        // variables for data items and parsing
        String DSNAME;  	// A:50 (varies)  the name of a dataset such as a PPID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 2) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DSNAME = list1[1];} else { DSNAME = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(13, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S13F1R

S13F2Send Data Set Ack Sent by Host and Equipment

    // S13F2 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(13, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 DSNAME ACKC13
        // variables for data items and parsing
        String DSNAME;  	// A:50 (varies)  the name of a dataset such as a PPID
        int ACKC13;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DSNAME = list1[1];} else { DSNAME = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ACKC13 = sp.binToInt(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S13F3ROpen Data Set Request Sent by Host and Equipment

    // S13F3R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 13, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 13) && (function = 3)) {recvS13F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS13F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 HANDLE DSNAME CKPNT
        // variables for data items and parsing
        int [] HANDLE;  	// U4 (varies)  logical unit or handle for a data set
        String DSNAME;  	// A:50 (varies)  the name of a dataset such as a PPID
        int CKPNT;  	// U4:1 (always)  data set checkpoint defined by sender
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           HANDLE = new int[list1.length-1];
           for(int i=0; i < HANDLE.length; i++) {
               HANDLE[i] = Integer.parse(list1[1+i]);
               }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DSNAME = list1[1];} else { DSNAME = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           CKPNT = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(13, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S13F3R

S13F4Open Data Set Data Sent by Host and Equipment

    // S13F4 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(13, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:5 HANDLE DSNAME ACKC13 RTYPE RECLEN
        // variables for data items and parsing
        int [] HANDLE;  	// U4 (varies)  logical unit or handle for a data set
        String DSNAME;  	// A:50 (varies)  the name of a dataset such as a PPID
        int ACKC13;  	// B:1 (always)  acknowledge code, 0 ok
        String RTYPE;  	// U1:1 (varies)  type of data record
        String RECLEN;  	// U4:1 (varies)  maximum number of bytes or characters in a discrete record
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           HANDLE = new int[list1.length-1];
           for(int i=0; i < HANDLE.length; i++) {
               HANDLE[i] = Integer.parse(list1[1+i]);
               }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DSNAME = list1[1];} else { DSNAME = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ACKC13 = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RTYPE = list1[1];} else { RTYPE = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RECLEN = list1[1];} else { RECLEN = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S13F5RRead Data Set Request Sent by Host and Equipment

    // S13F5R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 13, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 13) && (function = 5)) {recvS13F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS13F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 HANDLE READLN
        // variables for data items and parsing
        int [] HANDLE;  	// U4 (varies)  logical unit or handle for a data set
        String READLN;  	// U4:1 (varies)  maximum number of bytes or characters to read
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           HANDLE = new int[list1.length-1];
           for(int i=0; i < HANDLE.length; i++) {
               HANDLE[i] = Integer.parse(list1[1+i]);
               }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { READLN = list1[1];} else { READLN = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(13, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S13F5R

S13F6Read Data Set Data Sent by Host and Equipment

    // S13F6 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(13, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:4 HANDLE ACKC13 CKPNT {L:n FILDAT}
        // variables for data items and parsing
        int [] HANDLE;  	// U4 (varies)  logical unit or handle for a data set
        int ACKC13;  	// B:1 (always)  acknowledge code, 0 ok
        int CKPNT;  	// U4:1 (always)  data set checkpoint defined by sender
        int [] FILDAT;  	// B (varies)  Data Set Data, binary or ascii.  Max length is the RECLEN from open.
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           HANDLE = new int[list1.length-1];
           for(int i=0; i < HANDLE.length; i++) {
               HANDLE[i] = Integer.parse(list1[1+i]);
               }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ACKC13 = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           CKPNT = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               FILDAT = new int[list2.length-1];
               for(int i=0; i < FILDAT.length; i++) {
                   FILDAT[i] = sp.binToInt(list2[1+i]);
                   }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S13F7RClose Data Set Send Sent by Host and Equipment

    // S13F7R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 13, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 13) && (function = 7)) {recvS13F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS13F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:1 HANDLE
        // variables for data items and parsing
        int [] HANDLE;  	// U4 (varies)  logical unit or handle for a data set
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 2) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           HANDLE = new int[list1.length-1];
           for(int i=0; i < HANDLE.length; i++) {
               HANDLE[i] = Integer.parse(list1[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(13, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S13F7R

S13F8Close Data Set Ack Sent by Host and Equipment

    // S13F8 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(13, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 HANDLE ACKC13
        // variables for data items and parsing
        int [] HANDLE;  	// U4 (varies)  logical unit or handle for a data set
        int ACKC13;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           HANDLE = new int[list1.length-1];
           for(int i=0; i < HANDLE.length; i++) {
               HANDLE[i] = Integer.parse(list1[1+i]);
               }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ACKC13 = sp.binToInt(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S13F9RReset Data Set Send Sent by Host and Equipment

    // S13F9R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 13, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 13) && (function = 9)) {recvS13F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS13F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(13, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S13F9R

S13F10Reset Data Set Ack Sent by Host and Equipment

    // S13F10 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(13, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // no data expected
        return;  // parsed ok
        } // end while(ok)

S13F11RData Set Obj Multi-Block Inquire Sent by Host and Equipment

    // S13F11R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 13, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 13) && (function = 11)) {recvS13F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS13F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 DATAID OBJSPEC DATALENGTH
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(13, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S13F11R

S13F12Data Set Obj Multi-Block Grant Sent by Host and Equipment

    // S13F12 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(13, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect GRANT
        // variables for data items and parsing
        int GRANT;  	// B:1 (always)  multiblock grant code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           GRANT = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S13F13RTable Data Send Sent by Host and Equipment

    // S13F13R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 13, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 13) && (function = 13)) {recvS13F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS13F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:8 DATAID OBJSPEC TBLTYP TBLID TBLCMD {L:n {L:2 ATTRID ATTRDATA}} {L:c COLHDR} {L:r {L:m TBLELT}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String TBLTYP;  	// A:n (always)  denotes the format and application of the table, conforms to OBJTYPE
        String TBLID;  	// A:80 (varies)  table identifier, a kind of OBJSPEC
        int TBLCMD;  	// U1:1 (always)  table command
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        String COLHDR;  	// A:20 (always)  table column name
        String TBLELT;  	// A:n (varies)  table element any type, list types or array types are discouraged, first column type must be a primary key value and not be a list or array
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 9) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TBLTYP = list1[1];} else { TBLTYP = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TBLID = list1[1];} else { TBLID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           TBLCMD = Integer.parse(list1[1]);
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[7]);
           if (list1.length < 1) { ok=false; break; }
           for(int c=1; c < list1.length; c++) {
               String [] list2;
               list2 = TclList.split(list1[c]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { COLHDR = list2[1];} else { COLHDR = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[8]);
           if (list1.length < 1) { ok=false; break; }
           for(int r=1; r < list1.length; r++) {
               String [] list2;
               list2 = TclList.split(list1[r]);
               if (list2.length < 1) { ok=false; break; }
               for(int m=1; m < list2.length; m++) {
                   String [] list3;
                   list3 = TclList.split(list2[m]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { TBLELT = list3[1];} else { TBLELT = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(13, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S13F13R

S13F14Table Data Ack Sent by Host and Equipment

    // S13F14 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(13, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 TBLACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int TBLACK;  	// U1:1 (always)  acknowledge code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           TBLACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S13F15RTable Data Request Sent by Host and Equipment

    // S13F15R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 13, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 13) && (function = 15)) {recvS13F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS13F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:7 DATAID OBJSPEC TBLTYP TBLID TBLCMD {L:p COLHDR} {L:q TBLELT}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String TBLTYP;  	// A:n (always)  denotes the format and application of the table, conforms to OBJTYPE
        String TBLID;  	// A:80 (varies)  table identifier, a kind of OBJSPEC
        int TBLCMD;  	// U1:1 (always)  table command
        String COLHDR;  	// A:20 (always)  table column name
        String TBLELT;  	// A:n (varies)  table element any type, list types or array types are discouraged, first column type must be a primary key value and not be a list or array
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 8) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TBLTYP = list1[1];} else { TBLTYP = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TBLID = list1[1];} else { TBLID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           TBLCMD = Integer.parse(list1[1]);
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { COLHDR = list2[1];} else { COLHDR = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[7]);
           if (list1.length < 1) { ok=false; break; }
           for(int q=1; q < list1.length; q++) {
               String [] list2;
               list2 = TclList.split(list1[q]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { TBLELT = list2[1];} else { TBLELT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(13, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S13F15R

S13F16Table Data Sent by Host and Equipment

    // S13F16 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(13, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:6 TBLTYP TBLID {L:n {L:2 ATTRID ATTRDATA}} {L:c COLHDR} {L:r {L:c TBLELT}} {L:2 TBLACK {L:p ERRCODE ERRTEXT}}
        // variables for data items and parsing
        String TBLTYP;  	// A:n (always)  denotes the format and application of the table, conforms to OBJTYPE
        String TBLID;  	// A:80 (varies)  table identifier, a kind of OBJSPEC
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        String COLHDR;  	// A:20 (always)  table column name
        String TBLELT;  	// A:n (varies)  table element any type, list types or array types are discouraged, first column type must be a primary key value and not be a list or array
        int TBLACK;  	// U1:1 (always)  acknowledge code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 7) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TBLTYP = list1[1];} else { TBLTYP = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TBLID = list1[1];} else { TBLID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int c=1; c < list1.length; c++) {
               String [] list2;
               list2 = TclList.split(list1[c]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { COLHDR = list2[1];} else { COLHDR = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int r=1; r < list1.length; r++) {
               String [] list2;
               list2 = TclList.split(list1[r]);
               if (list2.length < 1) { ok=false; break; }
               for(int c=1; c < list2.length; c++) {
                   String [] list3;
                   list3 = TclList.split(list2[c]);
                   if (list3.length < 1) { ok = false; break; }
                   if (list3.length == 2) { TBLELT = list3[1];} else { TBLELT = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[6]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           TBLACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[p]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F1RGet Attributes Request Sent by Host and Equipment

    // S14F1R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 1)) {recvS14F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 OBJSPEC OBJTYPE {L:i OBJID} {L:q {L:3 ATTRID ATTRDATA ATTRRELN}} {L:a ATTRID}
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        int ATTRRELN;  	// U1:1 (always)  relationship of a value to an attribute value of an object
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int i=1; i < list1.length; i++) {
               String [] list2;
               list2 = TclList.split(list1[i]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { OBJID = list2[1];} else { OBJID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int q=1; q < list1.length; q++) {
               String [] list2;
               list2 = TclList.split(list1[q]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               ATTRRELN = Integer.parse(list3[1]);
               }
           if (!ok) break;
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ATTRID = list2[1];} else { ATTRID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F1R

S14F2Attribute Data Sent by Host and Equipment

    // S14F2 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:n {L:2 OBJID {L:a {L:2 ATTRID ATTRDATA}}}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        int OBJACK;  	// U1:1 (always)  acknowledge code, 0 ok, 1 error
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { OBJID = list3[1];} else { OBJID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int a=1; a < list3.length; a++) {
                   String [] list4;
                   list4 = TclList.split(list3[a]);
                   if (list4.length != 3) { ok=false; break; }
                   String [] list5;
                   list5 = TclList.split(list4[1]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { ATTRID = list5[1];} else { ATTRID = ""; }
                   list5 = TclList.split(list4[2]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { ATTRDATA = list5[1];} else { ATTRDATA = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           OBJACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F3RSet Attributes Sent by Host and Equipment

    // S14F3R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 3)) {recvS14F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 OBJSPEC OBJTYPE {L:i OBJID} {L:n {L:2 ATTRID ATTRDATA}}
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int i=1; i < list1.length; i++) {
               String [] list2;
               list2 = TclList.split(list1[i]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { OBJID = list2[1];} else { OBJID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F3R

S14F4Set Attributes Reply Sent by Host and Equipment

    // S14F4 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:i {L:2 OBJID {L:n {L:2 ATTRID ATTRDATA}}}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        int OBJACK;  	// U1:1 (always)  acknowledge code, 0 ok, 1 error
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int i=1; i < list1.length; i++) {
               String [] list2;
               list2 = TclList.split(list1[i]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { OBJID = list3[1];} else { OBJID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int n=1; n < list3.length; n++) {
                   String [] list4;
                   list4 = TclList.split(list3[n]);
                   if (list4.length != 3) { ok=false; break; }
                   String [] list5;
                   list5 = TclList.split(list4[1]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { ATTRID = list5[1];} else { ATTRID = ""; }
                   list5 = TclList.split(list4[2]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { ATTRDATA = list5[1];} else { ATTRDATA = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           OBJACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F5RGet Type Data Sent by Host and Equipment

    // S14F5R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 5)) {recvS14F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect OBJSPEC
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { OBJSPEC = list0[1];} else { OBJSPEC = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F5R

S14F6Type Data Sent by Host and Equipment

    // S14F6 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:n OBJTYPE} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OBJACK;  	// U1:1 (always)  acknowledge code, 0 ok, 1 error
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { OBJTYPE = list2[1];} else { OBJTYPE = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           OBJACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F7RGet Attribute Names for the types Sent by Host and Equipment

    // S14F7R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 7)) {recvS14F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 OBJSPEC {L:n OBJTYPE}
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { OBJTYPE = list2[1];} else { OBJTYPE = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F7R

S14F8Attribute Names of the object types Sent by Host and Equipment

    // S14F8 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:n {L:2 OBJTYPE {L:a ATTRID}}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        int OBJACK;  	// U1:1 (always)  acknowledge code, 0 ok, 1 error
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { OBJTYPE = list3[1];} else { OBJTYPE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int a=1; a < list3.length; a++) {
                   String [] list4;
                   list4 = TclList.split(list3[a]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { ATTRID = list4[1];} else { ATTRID = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           OBJACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F9RCreate Obj Request Sent by Host and Equipment

    // S14F9R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 9)) {recvS14F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 OBJSPEC OBJTYPE {L:a {L:2 ATTRID ATTRDATA}}
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F9R

S14F10Create Obj Ack Sent by Host and Equipment

    // S14F10 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 OBJSPEC {L:b {L:2 ATTRID ATTRDATA}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        int OBJACK;  	// U1:1 (always)  acknowledge code, 0 ok, 1 error
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int b=1; b < list1.length; b++) {
               String [] list2;
               list2 = TclList.split(list1[b]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[3]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           OBJACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F11RDelete Obj Request Sent by Host and Equipment

    // S14F11R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 11)) {recvS14F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 OBJSPEC {L:a {L:2 ATTRID ATTRDATA}}
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F11R

S14F12Delete Obj Ack Sent by Host and Equipment

    // S14F12 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:b {L:2 ATTRID ATTRDATA}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        int OBJACK;  	// U1:1 (always)  acknowledge code, 0 ok, 1 error
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int b=1; b < list1.length; b++) {
               String [] list2;
               list2 = TclList.split(list1[b]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           OBJACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F13RObject Attach Request Sent by Host and Equipment

    // S14F13R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 13)) {recvS14F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 OBJSPEC {L:a {L:2 ATTRID ATTRDATA}}
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F13R

S14F14Object Attach Ack Sent by Host and Equipment

    // S14F14 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 OBJTOKEN {L:b {L:2 ATTRID ATTRDATA}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        int OBJTOKEN;  	// U4:1 (always)  token used for authorization
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        int OBJACK;  	// U1:1 (always)  acknowledge code, 0 ok, 1 error
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           OBJTOKEN = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int b=1; b < list1.length; b++) {
               String [] list2;
               list2 = TclList.split(list1[b]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[3]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           OBJACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F15RAttached Obj Action Req. Sent by Host and Equipment

    // S14F15R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 15)) {recvS14F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 OBJSPEC OBJCMD OBJTOKEN {L:a {L:2 ATTRID ATTRDATA}}
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        int OBJCMD;  	// U1:1 (always)  Specifies an action to be performed by an object
        int OBJTOKEN;  	// U4:1 (always)  token used for authorization
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OBJCMD = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           OBJTOKEN = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F15R

S14F16Attached Obj Action Ack Sent by Host and Equipment

    // S14F16 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:b {L:2 ATTRID ATTRDATA}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        int OBJACK;  	// U1:1 (always)  acknowledge code, 0 ok, 1 error
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int b=1; b < list1.length; b++) {
               String [] list2;
               list2 = TclList.split(list1[b]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           OBJACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F17RSupervised Obj Action Req Sent by Host and Equipment

    // S14F17R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 17)) {recvS14F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 OBJSPEC OBJCMD TARGETSPEC {L:a {L:2 ATTRID ATTRDATA}}
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        int OBJCMD;  	// U1:1 (always)  Specifies an action to be performed by an object
        String TARGETSPEC;  	// A:40 (always)  Specifier of target object
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OBJCMD = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETSPEC = list1[1];} else { TARGETSPEC = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int a=1; a < list1.length; a++) {
               String [] list2;
               list2 = TclList.split(list1[a]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F17R

S14F18Supervised Obj Action Ack Sent by Host and Equipment

    // S14F18 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:b {L:2 ATTRID ATTRDATA}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        int OBJACK;  	// U1:1 (always)  acknowledge code, 0 ok, 1 error
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int b=1; b < list1.length; b++) {
               String [] list2;
               list2 = TclList.split(list1[b]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           OBJACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F19RGeneric Service Req Sent by Host Only

    // S14F19R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 14, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 19)) {recvS14F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 DATAID OPID OBJSPEC SVCNAME {L:m {L:2 SPNAME SPVAL}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String OPID;  	// U4:1 (varies)  operation identifier
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String SVCNAME;  	// A:n (always)  service name
        String SPNAME;  	// A:n (always)  service parameter name
        String SPVAL;  	// A:n (varies)  service parameter value, any format type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SVCNAME = list1[1];} else { SVCNAME = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { SPNAME = list3[1];} else { SPNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { SPVAL = list3[1];} else { SPVAL = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S14F19R

S14F20Generic Service Ack Sent by Host and Equipment

    // S14F20 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:4 SVCACK LINKID {L:n {L:2 SPNAME SPVAL}} {L:2 SVCACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        int SVCACK;  	// B:1 (always)  service acknowledge code
        int LINKID;  	// U4:1 (always)  correlates the RMOPID value in a request to a completion report
        String SPNAME;  	// A:n (always)  service parameter name
        String SPVAL;  	// A:n (varies)  service parameter value, any format type
        int SVCACK;  	// B:1 (always)  service acknowledge code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           SVCACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           LINKID = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { SPNAME = list3[1];} else { SPNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { SPVAL = list3[1];} else { SPVAL = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[4]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("B:1")) { ok = false; break; }
           SVCACK = sp.binToInt(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F21RGeneric Service Completion Sent by Host and Equipment

    // S14F21R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 21, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 21)) {recvS14F21(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 DATAID OPID LINKID {L:n {L:2 SPNAME SPVAL}} {L:2 SVCACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String OPID;  	// U4:1 (varies)  operation identifier
        int LINKID;  	// U4:1 (always)  correlates the RMOPID value in a request to a completion report
        String SPNAME;  	// A:n (always)  service parameter name
        String SPVAL;  	// A:n (varies)  service parameter value, any format type
        int SVCACK;  	// B:1 (always)  service acknowledge code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           LINKID = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { SPNAME = list3[1];} else { SPNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { SPVAL = list3[1];} else { SPVAL = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[5]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("B:1")) { ok = false; break; }
           SVCACK = sp.binToInt(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 22, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F21R

S14F22Generic Service Comp Ack Sent by Host and Equipment

    // S14F22 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 21, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect DATAACK
        // variables for data items and parsing
        int DATAACK;  	// B:1 (always)  Acknowledgement code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           DATAACK = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F23RMulti-block Generic Service Inquire Sent by Host and Equipment

    // S14F23R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 23, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 23)) {recvS14F23(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DATAID DATALENGTH
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 24, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F23R

S14F24Multi-block Generic Service Grant Sent by Host and Equipment

    // S14F24 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 23, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect GRANT
        // variables for data items and parsing
        int GRANT;  	// B:1 (always)  multiblock grant code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           GRANT = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F25RService Name Request Sent by Host and Equipment

    // S14F25R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 25, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 25)) {recvS14F25(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 OBJSPEC {L:n OBJTYPE}
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { OBJTYPE = list2[1];} else { OBJTYPE = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 26, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F25R

S14F26Service Name Data Sent by Host and Equipment

    // S14F26 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 25, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:n {L:2 OBJTYPE {L:a SVCNAME}}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String SVCNAME;  	// A:n (always)  service name
        int OBJACK;  	// U1:1 (always)  acknowledge code, 0 ok, 1 error
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { OBJTYPE = list3[1];} else { OBJTYPE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int a=1; a < list3.length; a++) {
                   String [] list4;
                   list4 = TclList.split(list3[a]);
                   if (list4.length < 1) { ok = false; break; }
                   if (!list4[0].startsWith("A:")) { ok = false; break; }
                   if (list4.length == 2) { SVCNAME = list4[1];} else { SVCNAME = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           OBJACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S14F27RService Parameter Name Req Sent by Host and Equipment

    // S14F27R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 14, 27, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 14) && (function = 27)) {recvS14F27(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS14F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 OBJSPEC OBJTYPE {L:n SVCNAME}
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String SVCNAME;  	// A:n (always)  service name
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { SVCNAME = list2[1];} else { SVCNAME = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(14, 28, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S14F27R

S14F28Service Parameter Name Data Sent by Host and Equipment

    // S14F28 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(14, 27, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:n {L:2 SVCNAME {L:a SPNAME}}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String SVCNAME;  	// A:n (always)  service name
        String SPNAME;  	// A:n (always)  service parameter name
        int OBJACK;  	// U1:1 (always)  acknowledge code, 0 ok, 1 error
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { SVCNAME = list3[1];} else { SVCNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int a=1; a < list3.length; a++) {
                   String [] list4;
                   list4 = TclList.split(list3[a]);
                   if (list4.length < 1) { ok = false; break; }
                   if (!list4[0].startsWith("A:")) { ok = false; break; }
                   if (list4.length == 2) { SPNAME = list4[1];} else { SPNAME = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           OBJACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F1RRecipe Management Multi-Block Inquire Sent by Host and Equipment

    // S15F1R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 1)) {recvS15F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 DATAID RCPSPEC RMDATASIZE
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String RCPSPEC;  	// A:n (always)  recipe specifier
        String RMDATASIZE;  	// U4:1 (varies)  the maximum total message body length of a SECS-II message
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RMDATASIZE = list1[1];} else { RMDATASIZE = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F1R

S15F2Recipe Management Multi-block Grant Sent by Host and Equipment

    // S15F2 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect RMGRNT
        // variables for data items and parsing
        int RMGRNT;  	// B:1 (always)  grant code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           RMGRNT = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F3RRecipe Namespace Action Req Sent by Host and Equipment

    // S15F3R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 3)) {recvS15F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 RMNSSPEC RMNSCMD
        // variables for data items and parsing
        String RMNSSPEC;  	// A:n (always)  object id of a recipe namespace
        int RMNSCMD;  	// U1:1 (always)  recipe namespace command
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMNSCMD = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F3R

S15F4Recipe Namespace Action Sent by Host and Equipment

    // S15F4 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F5RRecipe Namespace Rename Req Sent by Host and Equipment

    // S15F5R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 5)) {recvS15F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 RMNSSPEC RMNEWNS
        // variables for data items and parsing
        String RMNSSPEC;  	// A:n (always)  object id of a recipe namespace
        String RMNEWNS;  	// A:n (always)  new name for a recipe namespace
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMNEWNS = list1[1];} else { RMNEWNS = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F5R

S15F6Recipe Namespace Rename Ack Sent by Host and Equipment

    // S15F6 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F7RRecipe Space Req Sent by Host and Equipment

    // S15F7R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 7)) {recvS15F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect OBJSPEC
        // variables for data items and parsing
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { OBJSPEC = list0[1];} else { OBJSPEC = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F7R

S15F8Recipe Space Data Sent by Host and Equipment

    // S15F8 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMSPACE {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String RMSPACE;  	// U4:1 (varies)  the amount of storage available in bytes for at least one recipe
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RMSPACE = list1[1];} else { RMSPACE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F9RRecipe Status Request Sent by Host and Equipment

    // S15F9R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 9)) {recvS15F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect RCPSPEC
        // variables for data items and parsing
        String RCPSPEC;  	// A:n (always)  recipe specifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { RCPSPEC = list0[1];} else { RCPSPEC = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F9R

S15F10Recipe Status Data Sent by Host and Equipment

    // S15F10 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 RCPSTAT RCPVERS {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        int RCPSTAT;  	// U1:1 (always)  Recipe status code
        String RCPVERS;  	// A:n (always)  recipe version
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RCPSTAT = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPVERS = list1[1];} else { RCPVERS = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F11RRecipe Version Request Sent by Host and Equipment

    // S15F11R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 11)) {recvS15F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 RMNSSPEC RCPCLASS RCPNAME AGENT
        // variables for data items and parsing
        String RMNSSPEC;  	// A:n (always)  object id of a recipe namespace
        String RCPCLASS;  	// A:n (always)  Recipe class
        String RCPNAME;  	// A:n (always)  recipe name
        String AGENT;  	// A:n (always)  no description, no max length
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPCLASS = list1[1];} else { RCPCLASS = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPNAME = list1[1];} else { RCPNAME = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { AGENT = list1[1];} else { AGENT = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F11R

S15F12Recipe Version Data Sent by Host and Equipment

    // S15F12 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 AGENT RCPVERS {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String AGENT;  	// A:n (always)  no description, no max length
        String RCPVERS;  	// A:n (always)  recipe version
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { AGENT = list1[1];} else { AGENT = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPVERS = list1[1];} else { RCPVERS = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F13RRecipe Create Req Sent by Host and Equipment

    // S15F13R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 13)) {recvS15F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 DATAID RCPUPDT RCPSPEC {L:m {L:2 RCPATTRID RCPATTRDATA}} RCPBODY
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        int RCPUPDT;  	// TF:1 (always)  true for a recipe update, false for create
        String RCPSPEC;  	// A:n (always)  recipe specifier
        String RCPATTRID;  	// A:n (always)  the name of a recipe attribute, but not used to indicate the recipe identifier
        String RCPATTRDATA;  	// A:n (varies)  the value of a recipe attribute, any type of data including list
        int [] RCPBODY;  	// B:n (varies)  Recipe body
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           RCPUPDT = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           RCPBODY = new int[list1.length-1];
           for(int i=0; i < RCPBODY.length; i++) {
               RCPBODY[i] = sp.binToInt(list1[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F13R

S15F14Recipe Create Ack Sent by Host and Equipment

    // S15F14 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F15RRecipe Store Req Sent by Host and Equipment

    // S15F15R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 15)) {recvS15F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 DATAID RCPSPEC RCPSECCODE {L:3 {L:2* RCPSECNM {L:g {L:2 RCPATTRID RCPATTRDATA}}} RCPBODY {L:m {L:2 RCPSECNM {L:a {L:2 RCPATTRID RCPATTRDATA}}}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String RCPSPEC;  	// A:n (always)  recipe specifier
        int RCPSECCODE;  	// B:1 (always)  indicates the sections of a recipe
        String RCPSECNM;  	// A:n (always)  Recipe section name, "Generic", "Body", "ASDS"
        String RCPATTRID;  	// A:n (always)  the name of a recipe attribute, but not used to indicate the recipe identifier
        String RCPATTRDATA;  	// A:n (varies)  the value of a recipe attribute, any type of data including list
        int [] RCPBODY;  	// B:n (varies)  Recipe body
        String RCPSECNM;  	// A:n (always)  Recipe section name, "Generic", "Body", "ASDS"
        String RCPATTRID;  	// A:n (always)  the name of a recipe attribute, but not used to indicate the recipe identifier
        String RCPATTRDATA;  	// A:n (varies)  the value of a recipe attribute, any type of data including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           RCPSECCODE = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length != 4) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length == 3) {  // 2 optional items found
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPSECNM = list3[1];} else { RCPSECNM = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int g=1; g < list3.length; g++) {
                   String [] list4;
                   list4 = TclList.split(list3[g]);
                   if (list4.length != 3) { ok=false; break; }
                   String [] list5;
                   list5 = TclList.split(list4[1]);
                   if (list5.length < 1) { ok = false; break; }
                   if (!list5[0].startsWith("A:")) { ok = false; break; }
                   if (list5.length == 2) { RCPATTRID = list5[1];} else { RCPATTRID = ""; }
                   list5 = TclList.split(list4[2]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { RCPATTRDATA = list5[1];} else { RCPATTRDATA = ""; }
                   }
               if (!ok) break;
               }
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok = false; break; }
           RCPBODY = new int[list2.length-1];
           for(int i=0; i < RCPBODY.length; i++) {
               RCPBODY[i] = sp.binToInt(list2[1+i]);
               }
           list2 = TclList.split(list1[3]);
           if (list2.length < 1) { ok=false; break; }
           for(int m=1; m < list2.length; m++) {
               String [] list3;
               list3 = TclList.split(list2[m]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { RCPSECNM = list4[1];} else { RCPSECNM = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok=false; break; }
               for(int a=1; a < list4.length; a++) {
                   String [] list5;
                   list5 = TclList.split(list4[a]);
                   if (list5.length != 3) { ok=false; break; }
                   String [] list6;
                   list6 = TclList.split(list5[1]);
                   if (list6.length < 1) { ok = false; break; }
                   if (!list6[0].startsWith("A:")) { ok = false; break; }
                   if (list6.length == 2) { RCPATTRID = list6[1];} else { RCPATTRID = ""; }
                   list6 = TclList.split(list5[2]);
                   if (list6.length < 1) { ok = false; break; }
                   if (list6.length == 2) { RCPATTRDATA = list6[1];} else { RCPATTRDATA = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F15R

S15F16Recipe Store Ack Sent by Host and Equipment

    // S15F16 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RCPSECCODE {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        int RCPSECCODE;  	// B:1 (always)  indicates the sections of a recipe
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           RCPSECCODE = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F17RRecipe Retrieve Req Sent by Host and Equipment

    // S15F17R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 17)) {recvS15F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 RCPSPEC RCPSECCODE
        // variables for data items and parsing
        String RCPSPEC;  	// A:n (always)  recipe specifier
        int RCPSECCODE;  	// B:1 (always)  indicates the sections of a recipe
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           RCPSECCODE = sp.binToInt(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F17R

S15F18Recipe Retrieve Data Sent by Host and Equipment

    // S15F18 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:q {L:r RCPSECNM {L:g {L:2 RCPATTRID RCPATTRDATA}}} RCPBODY {L:m {L:2 RCPSECNM {L:a {L:2 RCPATTRID RCPATTRDATA}}}}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String RCPSECNM;  	// A:n (always)  Recipe section name, "Generic", "Body", "ASDS"
        String RCPATTRID;  	// A:n (always)  the name of a recipe attribute, but not used to indicate the recipe identifier
        String RCPATTRDATA;  	// A:n (varies)  the value of a recipe attribute, any type of data including list
        int [] RCPBODY;  	// B:n (varies)  Recipe body
        String RCPSECNM;  	// A:n (always)  Recipe section name, "Generic", "Body", "ASDS"
        String RCPATTRID;  	// A:n (always)  the name of a recipe attribute, but not used to indicate the recipe identifier
        String RCPATTRDATA;  	// A:n (varies)  the value of a recipe attribute, any type of data including list
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int q=1; q < list1.length; q++) {
               String [] list2;
               list2 = TclList.split(list1[q]);
               if (list2.length < 1) { ok=false; break; }
               for(int r=1; r < list2.length; r++) {
                   String [] list3;
                   list3 = TclList.split(list2[r]);
                   if (list3.length < 1) { ok = false; break; }
                   if (!list3[0].startsWith("A:")) { ok = false; break; }
                   if (list3.length == 2) { RCPSECNM = list3[1];} else { RCPSECNM = ""; }
                   list3 = TclList.split(list2[r]);
                   if (list3.length < 1) { ok=false; break; }
                   for(int g=1; g < list3.length; g++) {
                       String [] list4;
                       list4 = TclList.split(list3[g]);
                       if (list4.length != 3) { ok=false; break; }
                       String [] list5;
                       list5 = TclList.split(list4[1]);
                       if (list5.length < 1) { ok = false; break; }
                       if (!list5[0].startsWith("A:")) { ok = false; break; }
                       if (list5.length == 2) { RCPATTRID = list5[1];} else { RCPATTRID = ""; }
                       list5 = TclList.split(list4[2]);
                       if (list5.length < 1) { ok = false; break; }
                       if (list5.length == 2) { RCPATTRDATA = list5[1];} else { RCPATTRDATA = ""; }
                       }
                   if (!ok) break;
                   }
               if (!ok) break;
               list2 = TclList.split(list1[q]);
               if (list2.length < 1) { ok = false; break; }
               RCPBODY = new int[list2.length-1];
               for(int i=0; i < RCPBODY.length; i++) {
                   RCPBODY[i] = sp.binToInt(list2[1+i]);
                   }
               list2 = TclList.split(list1[q]);
               if (list2.length < 1) { ok=false; break; }
               for(int m=1; m < list2.length; m++) {
                   String [] list3;
                   list3 = TclList.split(list2[m]);
                   if (list3.length != 3) { ok=false; break; }
                   String [] list4;
                   list4 = TclList.split(list3[1]);
                   if (list4.length < 1) { ok = false; break; }
                   if (!list4[0].startsWith("A:")) { ok = false; break; }
                   if (list4.length == 2) { RCPSECNM = list4[1];} else { RCPSECNM = ""; }
                   list4 = TclList.split(list3[2]);
                   if (list4.length < 1) { ok=false; break; }
                   for(int a=1; a < list4.length; a++) {
                       String [] list5;
                       list5 = TclList.split(list4[a]);
                       if (list5.length != 3) { ok=false; break; }
                       String [] list6;
                       list6 = TclList.split(list5[1]);
                       if (list6.length < 1) { ok = false; break; }
                       if (!list6[0].startsWith("A:")) { ok = false; break; }
                       if (list6.length == 2) { RCPATTRID = list6[1];} else { RCPATTRID = ""; }
                       list6 = TclList.split(list5[2]);
                       if (list6.length < 1) { ok = false; break; }
                       if (list6.length == 2) { RCPATTRDATA = list6[1];} else { RCPATTRDATA = ""; }
                       }
                   if (!ok) break;
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F19RRecipe Rename Req Sent by Host and Equipment

    // S15F19R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 19)) {recvS15F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 RCPSPEC RCPRENAME RCPNEWID
        // variables for data items and parsing
        String RCPSPEC;  	// A:n (always)  recipe specifier
        int RCPRENAME;  	// TF:1 (always)  whether a recipe is to be renamed (TRUE) or copied (FALSE)
        String RCPNEWID;  	// A:n (always)  the new recipe identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           RCPRENAME = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPNEWID = list1[1];} else { RCPNEWID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F19R

S15F20Recipe Rename Ack Sent by Host and Equipment

    // S15F20 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F21RRecipe Action Req Sent by Host and Equipment

    // S15F21R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 21, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 21)) {recvS15F21(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:6 DATAID RCPCMD RMNSSPEC OPID AGENT {L:n RCPID}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        int RCPCMD;  	// U1:1 (always)  recipe action
        String RMNSSPEC;  	// A:n (always)  object id of a recipe namespace
        String OPID;  	// U4:1 (varies)  operation identifier
        String AGENT;  	// A:n (always)  no description, no max length
        String RCPID;  	// A:n (always)  recipe identifier conforming to OBJSPEC
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 7) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RCPCMD = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { AGENT = list1[1];} else { AGENT = ""; }
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { RCPID = list2[1];} else { RCPID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 22, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F21R

S15F22Recipe Action Ack Sent by Host and Equipment

    // S15F22 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 21, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:4 AGENT LINKID RCPCMD {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String AGENT;  	// A:n (always)  no description, no max length
        int LINKID;  	// U4:1 (always)  correlates the RMOPID value in a request to a completion report
        int RCPCMD;  	// U1:1 (always)  recipe action
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { AGENT = list1[1];} else { AGENT = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           LINKID = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RCPCMD = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F23RRecipe Descriptor Req Sent by Host and Equipment

    // S15F23R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 23, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 23)) {recvS15F23(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 DATAID OBJSPEC {L:n RCPID}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String RCPID;  	// A:n (always)  recipe identifier conforming to OBJSPEC
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { RCPID = list2[1];} else { RCPID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 24, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F23R

S15F24Recipe Descriptor Data Sent by Host and Equipment

    // S15F24 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 23, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:n {L:a {L:3* RCPDESCNM RCPDESCTIME RCPDESCLTH}}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String RCPDESCNM;  	// A:n (always)  Identifies a descriptor type "ASDesc", "BodyDesc", "GenDesc"
        String RCPDESCTIME;  	// A:16 (always)  timestamp of a recipe section "YYYYMMDDhhmmsscc"
        String RCPDESCLTH;  	// U4:1 (varies)  the byte length of a recipe
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok=false; break; }
               for(int a=1; a < list2.length; a++) {
                   String [] list3;
                   list3 = TclList.split(list2[a]);
                   if (list3.length == 4) {  // 3 optional items found
                       String [] list4;
                       list4 = TclList.split(list3[1]);
                       if (list4.length < 1) { ok = false; break; }
                       if (!list4[0].startsWith("A:")) { ok = false; break; }
                       if (list4.length == 2) { RCPDESCNM = list4[1];} else { RCPDESCNM = ""; }
                       list4 = TclList.split(list3[2]);
                       if (list4.length < 1) { ok = false; break; }
                       if (!list4[0].startsWith("A:")) { ok = false; break; }
                       if (list4.length == 2) { RCPDESCTIME = list4[1];} else { RCPDESCTIME = ""; }
                       list4 = TclList.split(list3[3]);
                       if (list4.length < 1) { ok = false; break; }
                       if (list4.length == 2) { RCPDESCLTH = list4[1];} else { RCPDESCLTH = ""; }
                       }
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F25RRecipe Parameter Update Req Sent by Host and Equipment

    // S15F25R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 25, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 25)) {recvS15F25(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 DATAID RMNSSPEC AGENT {L:n {L:3 RCPPARNM RCPPARVAL RCPPARRULE}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String RMNSSPEC;  	// A:n (always)  object id of a recipe namespace
        String AGENT;  	// A:n (always)  no description, no max length
        String RCPPARNM;  	// A:256 (always)  the name of a recipe variable parameter
        String RCPPARVAL;  	// A:80 (varies)  the value of a recipe variable parameter, any scalar format type
        String RCPPARRULE;  	// A:80 (always)  the restrictions applied to a recipe variable parameter setting
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { AGENT = list1[1];} else { AGENT = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPPARNM = list3[1];} else { RCPPARNM = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPPARVAL = list3[1];} else { RCPPARVAL = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPPARRULE = list3[1];} else { RCPPARRULE = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 26, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F25R

S15F26Recipe Parameter Update Ack Sent by Host and Equipment

    // S15F26 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 25, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F27RRecipe Download Req Sent by Host Only

    // S15F27R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 15, 27, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 27)) {recvS15F27(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 DATAID RCPOWCODE RCPSPEC {L:m {L:2 RCPATTRID RCPATTRDATA}} RCPBODY
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        int RCPOWCODE;  	// TF:1 (always)  recipe overwrite code, true=overwrite ok, false=do not overwrite
        String RCPSPEC;  	// A:n (always)  recipe specifier
        String RCPATTRID;  	// A:n (always)  the name of a recipe attribute, but not used to indicate the recipe identifier
        String RCPATTRDATA;  	// A:n (varies)  the value of a recipe attribute, any type of data including list
        int [] RCPBODY;  	// B:n (varies)  Recipe body
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           RCPOWCODE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           RCPBODY = new int[list1.length-1];
           for(int i=0; i < RCPBODY.length; i++) {
               RCPBODY[i] = sp.binToInt(list1[1+i]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 28, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S15F27R

S15F28Recipe Download Ack Sent by Equipment Only

    // S15F28 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(15, 27, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 RCPID {L:n {L:2 RCPATTRID RCPATTRDATA}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String RCPID;  	// A:n (always)  recipe identifier conforming to OBJSPEC
        String RCPATTRID;  	// A:n (always)  the name of a recipe attribute, but not used to indicate the recipe identifier
        String RCPATTRDATA;  	// A:n (varies)  the value of a recipe attribute, any type of data including list
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPID = list1[1];} else { RCPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[3]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F29RRecipe Verify Req Sent by Host Only

    // S15F29R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 15, 29, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 29)) {recvS15F29(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 DATAID OPID RESPEC {L:m RCPID}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String OPID;  	// U4:1 (varies)  operation identifier
        String RESPEC;  	// A:n (always)  object specifier for the recipe executor
        String RCPID;  	// A:n (always)  recipe identifier conforming to OBJSPEC
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RESPEC = list1[1];} else { RESPEC = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { RCPID = list2[1];} else { RCPID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 30, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S15F29R

S15F30Recipe Verify Ack Sent by Equipment Only

    // S15F30 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(15, 29, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:5 OPID LINKID RCPID {L:n {L:2 RCPATTRID RCPATTRDATA}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String OPID;  	// U4:1 (varies)  operation identifier
        int LINKID;  	// U4:1 (always)  correlates the RMOPID value in a request to a completion report
        String RCPID;  	// A:n (always)  recipe identifier conforming to OBJSPEC
        String RCPATTRID;  	// A:n (always)  the name of a recipe attribute, but not used to indicate the recipe identifier
        String RCPATTRDATA;  	// A:n (varies)  the value of a recipe attribute, any type of data including list
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           LINKID = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPID = list1[1];} else { RCPID = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[5]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F31RRecipe Unload Req Sent by Host Only

    // S15F31R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 15, 31, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 31)) {recvS15F31(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect RCPSPEC
        // variables for data items and parsing
        String RCPSPEC;  	// A:n (always)  recipe specifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { RCPSPEC = list0[1];} else { RCPSPEC = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 32, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S15F31R

S15F32Recipe Unload Data Sent by Equipment Only

    // S15F32 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(15, 31, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:4 RCPSPEC {L:m {L:2 RCPATTRID RCPATTRDATA}} RCPBODY {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String RCPSPEC;  	// A:n (always)  recipe specifier
        String RCPATTRID;  	// A:n (always)  the name of a recipe attribute, but not used to indicate the recipe identifier
        String RCPATTRDATA;  	// A:n (varies)  the value of a recipe attribute, any type of data including list
        int [] RCPBODY;  	// B:n (varies)  Recipe body
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           RCPBODY = new int[list1.length-1];
           for(int i=0; i < RCPBODY.length; i++) {
               RCPBODY[i] = sp.binToInt(list1[1+i]);
               }
           list1 = TclList.split(list0[4]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F33RRecipe Select Req Sent by Host Only

    // S15F33R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 15, 33, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 33)) {recvS15F33(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 DATAID RESPEC {L:r {L:2 RCPID {L:p {L:2 RCPPARNM RCPPARVAL}}}} 
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String RESPEC;  	// A:n (always)  object specifier for the recipe executor
        String RCPID;  	// A:n (always)  recipe identifier conforming to OBJSPEC
        String RCPPARNM;  	// A:256 (always)  the name of a recipe variable parameter
        String RCPPARVAL;  	// A:80 (varies)  the value of a recipe variable parameter, any scalar format type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RESPEC = list1[1];} else { RESPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int r=1; r < list1.length; r++) {
               String [] list2;
               list2 = TclList.split(list1[r]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPID = list3[1];} else { RCPID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int p=1; p < list3.length; p++) {
                   String [] list4;
                   list4 = TclList.split(list3[p]);
                   if (list4.length != 3) { ok=false; break; }
                   String [] list5;
                   list5 = TclList.split(list4[1]);
                   if (list5.length < 1) { ok = false; break; }
                   if (!list5[0].startsWith("A:")) { ok = false; break; }
                   if (list5.length == 2) { RCPPARNM = list5[1];} else { RCPPARNM = ""; }
                   list5 = TclList.split(list4[2]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { RCPPARVAL = list5[1];} else { RCPPARVAL = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 34, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S15F33R

S15F34Recipe Select Ack Sent by Equipment Only

    // S15F34 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(15, 33, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F35RRecipe Delete Req Sent by Host Only

    // S15F35R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 15, 35, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 35)) {recvS15F35(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F35(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 DATAID RESPEC RCPDEL {L:n RCPID}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String RESPEC;  	// A:n (always)  object specifier for the recipe executor
        int RCPDEL;  	// U1:1 (always)  recipe action
        String RCPID;  	// A:n (always)  recipe identifier conforming to OBJSPEC
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RESPEC = list1[1];} else { RESPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RCPDEL = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { RCPID = list2[1];} else { RCPID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 36, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S15F35R

S15F36Recipe Delete Ack Sent by Equipment Only

    // S15F36 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(15, 35, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F37RDRNS Segment Approve Action Req Sent by Host and Equipment

    // S15F37R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 37, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 37)) {recvS15F37(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F37(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:6 RMSEGSPEC OBJTOKEN RMGRNT OPID RCPID RMCHGTYPE
        // variables for data items and parsing
        String RMSEGSPEC;  	// A:n (always)  The object ID of a distributed recipe namespace segment
        int OBJTOKEN;  	// U4:1 (always)  token used for authorization
        int RMGRNT;  	// B:1 (always)  grant code, 0 ok
        String OPID;  	// U4:1 (varies)  operation identifier
        String RCPID;  	// A:n (always)  recipe identifier conforming to OBJSPEC
        String RMCHGTYPE;  	// U4:1 (varies)  type of change for a recipe
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 7) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMSEGSPEC = list1[1];} else { RMSEGSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           OBJTOKEN = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           RMGRNT = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPID = list1[1];} else { RCPID = ""; }
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RMCHGTYPE = list1[1];} else { RMCHGTYPE = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 38, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F37R

S15F38DRNS Segment Approve Action Ack Sent by Host and Equipment

    // S15F38 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 37, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F39RDRNS Recorder Seg Req Sent by Host and Equipment

    // S15F39R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 39, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 39)) {recvS15F39(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F39(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 DATAID RMNSCMD RMRECSPEC RMSEGSPEC OBJTOKEN
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        int RMNSCMD;  	// U1:1 (always)  recipe namespace command
        String RMRECSPEC;  	// A:n (always)  object id of a distributed recipe namespace recorder
        String RMSEGSPEC;  	// A:n (always)  The object ID of a distributed recipe namespace segment
        int OBJTOKEN;  	// U4:1 (always)  token used for authorization
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMNSCMD = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMRECSPEC = list1[1];} else { RMRECSPEC = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMSEGSPEC = list1[1];} else { RMSEGSPEC = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           OBJTOKEN = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 40, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F39R

S15F40DRNS Recorder Seg Ack Sent by Host and Equipment

    // S15F40 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 39, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F41RDRNS Recorder Mod Req Sent by Host and Equipment

    // S15F41R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 41, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 41)) {recvS15F41(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F41(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 DATAID RMRECSPEC OBJTOKEN RMNSCMD {L:c RCPID RCPNEWID RMSEGSPEC RMCHGTYPE OPID TIMESTAMP RMREQUESTOR}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String RMRECSPEC;  	// A:n (always)  object id of a distributed recipe namespace recorder
        int OBJTOKEN;  	// U4:1 (always)  token used for authorization
        int RMNSCMD;  	// U1:1 (always)  recipe namespace command
        String RCPID;  	// A:n (always)  recipe identifier conforming to OBJSPEC
        String RCPNEWID;  	// A:n (always)  the new recipe identifier
        String RMSEGSPEC;  	// A:n (always)  The object ID of a distributed recipe namespace segment
        String RMCHGTYPE;  	// U4:1 (varies)  type of change for a recipe
        String OPID;  	// U4:1 (varies)  operation identifier
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        int RMREQUESTOR;  	// TF:1 (always)  True when the initiator of a change request is an attached segment, otherwise false
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMRECSPEC = list1[1];} else { RMRECSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           OBJTOKEN = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMNSCMD = Integer.parse(list1[1]);
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int c=1; c < list1.length; c++) {
               String [] list2;
               list2 = TclList.split(list1[c]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { RCPID = list2[1];} else { RCPID = ""; }
               list2 = TclList.split(list1[c]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { RCPNEWID = list2[1];} else { RCPNEWID = ""; }
               list2 = TclList.split(list1[c]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { RMSEGSPEC = list2[1];} else { RMSEGSPEC = ""; }
               list2 = TclList.split(list1[c]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { RMCHGTYPE = list2[1];} else { RMCHGTYPE = ""; }
               list2 = TclList.split(list1[c]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { OPID = list2[1];} else { OPID = ""; }
               list2 = TclList.split(list1[c]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { TIMESTAMP = list2[1];} else { TIMESTAMP = ""; }
               list2 = TclList.split(list1[c]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("TF:1")) { ok = false; break; }
               RMREQUESTOR = Integer.parse(list2[1]);
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 42, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F41R

S15F42DRNS Recorder Mod Ack Sent by Host and Equipment

    // S15F42 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 41, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F43RDRNS Get Change Req Sent by Host and Equipment

    // S15F43R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 43, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 43)) {recvS15F43(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F43(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 DATAID OBJSPEC TARGETSPEC
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String TARGETSPEC;  	// A:40 (always)  Specifier of target object
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETSPEC = list1[1];} else { TARGETSPEC = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 44, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F43R

S15F44DRNS Get Change Ack Sent by Host and Equipment

    // S15F44 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 43, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:n {L:7 RCPID RCPNEWID RMSEGSPEC RMCHGTYPE OPID TIMESTAMP RMREQUESTOR}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String RCPID;  	// A:n (always)  recipe identifier conforming to OBJSPEC
        String RCPNEWID;  	// A:n (always)  the new recipe identifier
        String RMSEGSPEC;  	// A:n (always)  The object ID of a distributed recipe namespace segment
        String RMCHGTYPE;  	// U4:1 (varies)  type of change for a recipe
        String OPID;  	// U4:1 (varies)  operation identifier
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        int RMREQUESTOR;  	// TF:1 (always)  True when the initiator of a change request is an attached segment, otherwise false
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 8) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPID = list3[1];} else { RCPID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPNEWID = list3[1];} else { RCPNEWID = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RMSEGSPEC = list3[1];} else { RMSEGSPEC = ""; }
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RMCHGTYPE = list3[1];} else { RMCHGTYPE = ""; }
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { OPID = list3[1];} else { OPID = ""; }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("TF:1")) { ok = false; break; }
               RMREQUESTOR = Integer.parse(list3[1]);
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int p=1; p < list2.length; p++) {
               String [] list3;
               list3 = TclList.split(list2[p]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F45RDRNS Mgr Seg Aprvl Req Sent by Host and Equipment

    // S15F45R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 45, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 45)) {recvS15F45(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F45(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 DATAID RCPSPEC RCPNEWID RMCHGTYPE
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String RCPSPEC;  	// A:n (always)  recipe specifier
        String RCPNEWID;  	// A:n (always)  the new recipe identifier
        String RMCHGTYPE;  	// U4:1 (varies)  type of change for a recipe
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPNEWID = list1[1];} else { RCPNEWID = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RMCHGTYPE = list1[1];} else { RMCHGTYPE = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 46, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F45R

S15F46DRNS Mgr Seg Aprvl Ack Sent by Host and Equipment

    // S15F46 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 45, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 RMCHGTYPE RMGRNT OPID
        // variables for data items and parsing
        String RMCHGTYPE;  	// U4:1 (varies)  type of change for a recipe
        int RMGRNT;  	// B:1 (always)  grant code, 0 ok
        String OPID;  	// U4:1 (varies)  operation identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RMCHGTYPE = list1[1];} else { RMCHGTYPE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           RMGRNT = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F47RDRNS Mgr Rebuild Req Sent by Host and Equipment

    // S15F47R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 15, 47, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 47)) {recvS15F47(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F47(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 DATAID OBJSPEC RMNSSPEC RMRECSPEC {L:n RMSEGSPEC}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String OBJSPEC;  	// A:n (varies)  E39 structured text identifying an object, [object type:object id>]+
        String RMNSSPEC;  	// A:n (always)  object id of a recipe namespace
        String RMRECSPEC;  	// A:n (always)  object id of a distributed recipe namespace recorder
        String RMSEGSPEC;  	// A:n (always)  The object ID of a distributed recipe namespace segment
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMRECSPEC = list1[1];} else { RMRECSPEC = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { RMSEGSPEC = list2[1];} else { RMSEGSPEC = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 48, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F47R

S15F48DRNS Mgr Rebuild Ack Sent by Host and Equipment

    // S15F48 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(15, 47, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F49RLarge Recipe Download Req Sent by Host Only

    // S15F49R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 15, 49, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 49)) {recvS15F49(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F49(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DSNAME RCPOWCODE
        // variables for data items and parsing
        String DSNAME;  	// A:50 (varies)  the name of a dataset such as a PPID
        int RCPOWCODE;  	// TF:1 (always)  recipe overwrite code, true=overwrite ok, false=do not overwrite
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DSNAME = list1[1];} else { DSNAME = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           RCPOWCODE = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 50, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S15F49R

S15F50Large Recipe Download Ack Sent by Equipment Only

    // S15F50 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(15, 49, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC15
        // variables for data items and parsing
        int ACKC15;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC15 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F51RLarge Recipe Upload Req Sent by Host Only

    // S15F51R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 15, 51, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 51)) {recvS15F51(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F51(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect DSNAME
        // variables for data items and parsing
        String DSNAME;  	// A:50 (varies)  the name of a dataset such as a PPID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { DSNAME = list0[1];} else { DSNAME = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 52, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S15F51R

S15F52Large Recipe Upload Ack Sent by Equipment Only

    // S15F52 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(15, 51, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKC15
        // variables for data items and parsing
        int ACKC15;  	// B:1 (always)  acknowledge code, 0 ok
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           ACKC15 = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S15F53RRecipe Verification Send Sent by Equipment Only

    // S15F53R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 15, 53, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 15) && (function = 53)) {recvS15F53(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS15F53(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 RCPSPEC RCPID {L:2 RMACK {L:n {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String RCPSPEC;  	// A:n (always)  recipe specifier
        String RCPID;  	// A:n (always)  recipe identifier conforming to OBJSPEC
        int RMACK;  	// U1:1 (always)  recipe managment completion code
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RCPID = list1[1];} else { RCPID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           RMACK = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(15, 54, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S15F53R

S15F54Recipe Verification Ack Sent by Host Only

    // S15F54 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(15, 53, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // no data expected
        return;  // parsed ok
        } // end while(ok)

S16F1RProcess Job Data MBI Sent by Host Only

    // S16F1R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 1)) {recvS16F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DATAID DATALENGTH
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F1R

S16F2PJD MBI Grant Sent by Equipment Only

    // S16F2 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(16, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect GRANT
        // variables for data items and parsing
        int GRANT;  	// B:1 (always)  multiblock grant code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           GRANT = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S16F3RProcess Job Create Req Sent by Host Only

    // S16F3R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 3)) {recvS16F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 DATAID MF {L:n MID} {L:3 PRRECIPEMETHOD RCPSPEC {L:m {L:2 RCPPARNM RCPPARVAL}}} PRPROCESSSTART
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String MF;  	// B:1 (varies)  material format code, ASCII indicates generic units, E40 restricts to B:1
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        int PRRECIPEMETHOD;  	// U1:1 (always)  recipe type
        String RCPSPEC;  	// A:n (always)  recipe specifier
        String RCPPARNM;  	// A:256 (always)  the name of a recipe variable parameter
        String RCPPARVAL;  	// A:80 (varies)  the value of a recipe variable parameter, any scalar format type
        int PRPROCESSSTART;  	// TF:1 (always)  automatic start flag, false implies manual start
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { MID = list2[1];} else { MID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[4]);
           if (list1.length != 4) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           PRRECIPEMETHOD = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { RCPSPEC = list2[1];} else { RCPSPEC = ""; }
           list2 = TclList.split(list1[3]);
           if (list2.length < 1) { ok=false; break; }
           for(int m=1; m < list2.length; m++) {
               String [] list3;
               list3 = TclList.split(list2[m]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { RCPPARNM = list4[1];} else { RCPPARNM = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { RCPPARVAL = list4[1];} else { RCPPARVAL = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           PRPROCESSSTART = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F3R

S16F4Process Job Create Ack Sent by Equipment Only

    // S16F4 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(16, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 PRJOBID {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String PRJOBID;  	// A:n (always)  process job identifier
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S16F5RProcess Job Cmd Req Sent by Host Only

    // S16F5R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 5)) {recvS16F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 DATAID PRJOBID PRCMDNAME {L:n {L:2 CPNAME CPVAL}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String PRJOBID;  	// A:n (always)  process job identifier
        String PRCMDNAME;  	// A:6 (always)  process job commands, START, STOP, PAUSE, RESUME, ABORT, CANCEL
        String CPNAME;  	// A:n (varies)  command parameter name
        String CPVAL;  	// A:n (varies)  command parameter value, any scalar type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRCMDNAME = list1[1];} else { PRCMDNAME = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { CPVAL = list3[1];} else { CPVAL = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F5R

S16F6Process Job Cmd Ack Sent by Equipment Only

    // S16F6 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(16, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 PRJOBID {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String PRJOBID;  	// A:n (always)  process job identifier
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S16F7[R]Process Job Alert Notify Sent by Equipment Only

    // S16F7 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 16, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 7)) {recvS16F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 TIMESTAMP PRJOBID PRJOBMILESTONE {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String PRJOBID;  	// A:n (always)  process job identifier
        String PRJOBMILESTONE;  	// U1:1 (varies)  process job status 
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TIMESTAMP = list1[1];} else { TIMESTAMP = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PRJOBMILESTONE = list1[1];} else { PRJOBMILESTONE = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S16F7

S16F8Process Job Alert Ack Sent by Host Only

    // S16F8 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(16, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // no data expected
        return;  // parsed ok
        } // end while(ok)

S16F9[R]Process Job Event Notify Sent by Equipment Only

    // S16F9 Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 16, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 9)) {recvS16F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 PREVENTID TIMESTAMP PRJOBID {L:n {L:2 VID V}}
        // variables for data items and parsing
        String PREVENTID;  	// U1:1 (varies)  process job event ID
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String PRJOBID;  	// A:n (always)  process job identifier
        String VID;  	// A:n (varies)  A variable ID
        String V;  	// A:n (varies)  variable value, any type including list
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { PREVENTID = list1[1];} else { PREVENTID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TIMESTAMP = list1[1];} else { TIMESTAMP = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { VID = list3[1];} else { VID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { V = list3[1];} else { V = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S16F9

S16F10Process Job Event Ack Sent by Host Only

    // S16F10 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(16, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // no data expected
        return;  // parsed ok
        } // end while(ok)

S16F11RPRJobCreateEnh Sent by Host Only

    // S16F11R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 11)) {recvS16F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:7 DATAID PRJOBID MF {L:n {L:2 CARRIERID {L:j SLOTID}}} {L:3 PRRECIPEMETHOD RCPSPEC {L:m {L:2 RCPPARNM RCPPARVAL}}} PRPROCESSSTART {L:p PRPAUSEEVENTID}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String PRJOBID;  	// A:n (always)  process job identifier
        String MF;  	// B:1 (varies)  material format code, ASCII indicates generic units, E40 restricts to B:1
        String CARRIERID;  	// A:n (always)  carrier ID
        int SLOTID;  	// U1:1 (always)  slot position within a carrier
        int PRRECIPEMETHOD;  	// U1:1 (always)  recipe type
        String RCPSPEC;  	// A:n (always)  recipe specifier
        String RCPPARNM;  	// A:256 (always)  the name of a recipe variable parameter
        String RCPPARVAL;  	// A:80 (varies)  the value of a recipe variable parameter, any scalar format type
        int PRPROCESSSTART;  	// TF:1 (always)  automatic start flag, false implies manual start
        String PRPAUSEEVENTID;  	// U4:1 (varies)  an event identifier for which a process job should be paused
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 8) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { CARRIERID = list3[1];} else { CARRIERID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int j=1; j < list3.length; j++) {
                   String [] list4;
                   list4 = TclList.split(list3[j]);
                   if (list4.length < 1) { ok = false; break; }
                   if (!list4[0].equals("U1:1")) { ok = false; break; }
                   SLOTID = Integer.parse(list4[1]);
                   }
               if (!ok) break;
               }
           if (!ok) break;
           list1 = TclList.split(list0[5]);
           if (list1.length != 4) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           PRRECIPEMETHOD = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { RCPSPEC = list2[1];} else { RCPSPEC = ""; }
           list2 = TclList.split(list1[3]);
           if (list2.length < 1) { ok=false; break; }
           for(int m=1; m < list2.length; m++) {
               String [] list3;
               list3 = TclList.split(list2[m]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { RCPPARNM = list4[1];} else { RCPPARNM = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { RCPPARVAL = list4[1];} else { RCPPARVAL = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           PRPROCESSSTART = Integer.parse(list1[1]);
           list1 = TclList.split(list0[7]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { PRPAUSEEVENTID = list2[1];} else { PRPAUSEEVENTID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F11R

S16F12PRJobCreateEnh Ack Sent by Equipment Only

    // S16F12 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(16, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 PRJOBID {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String PRJOBID;  	// A:n (always)  process job identifier
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S16F15RPRJobMultiCreate Sent by Host Only

    // S16F15R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 15)) {recvS16F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 DATAID {L:p {L:6 PRJOBID MF {L:n {L:2 CARRIERID {L:j SLOTID}}} {L:3 PRRECIPEMETHOD RCPSPEC {L:m {L:2 RCPPARNM RCPPARVAL}}} PRPROCESSSTART {L:k PRPAUSEEVENTID}}}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String PRJOBID;  	// A:n (always)  process job identifier
        String MF;  	// B:1 (varies)  material format code, ASCII indicates generic units, E40 restricts to B:1
        String CARRIERID;  	// A:n (always)  carrier ID
        int SLOTID;  	// U1:1 (always)  slot position within a carrier
        int PRRECIPEMETHOD;  	// U1:1 (always)  recipe type
        String RCPSPEC;  	// A:n (always)  recipe specifier
        String RCPPARNM;  	// A:256 (always)  the name of a recipe variable parameter
        String RCPPARVAL;  	// A:80 (varies)  the value of a recipe variable parameter, any scalar format type
        int PRPROCESSSTART;  	// TF:1 (always)  automatic start flag, false implies manual start
        String PRPAUSEEVENTID;  	// U4:1 (varies)  an event identifier for which a process job should be paused
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int p=1; p < list1.length; p++) {
               String [] list2;
               list2 = TclList.split(list1[p]);
               if (list2.length != 7) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { PRJOBID = list3[1];} else { PRJOBID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { MF = list3[1];} else { MF = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok=false; break; }
               for(int n=1; n < list3.length; n++) {
                   String [] list4;
                   list4 = TclList.split(list3[n]);
                   if (list4.length != 3) { ok=false; break; }
                   String [] list5;
                   list5 = TclList.split(list4[1]);
                   if (list5.length < 1) { ok = false; break; }
                   if (!list5[0].startsWith("A:")) { ok = false; break; }
                   if (list5.length == 2) { CARRIERID = list5[1];} else { CARRIERID = ""; }
                   list5 = TclList.split(list4[2]);
                   if (list5.length < 1) { ok=false; break; }
                   for(int j=1; j < list5.length; j++) {
                       String [] list6;
                       list6 = TclList.split(list5[j]);
                       if (list6.length < 1) { ok = false; break; }
                       if (!list6[0].equals("U1:1")) { ok = false; break; }
                       SLOTID = Integer.parse(list6[1]);
                       }
                   if (!ok) break;
                   }
               if (!ok) break;
               list3 = TclList.split(list2[4]);
               if (list3.length != 4) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].equals("U1:1")) { ok = false; break; }
               PRRECIPEMETHOD = Integer.parse(list4[1]);
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { RCPSPEC = list4[1];} else { RCPSPEC = ""; }
               list4 = TclList.split(list3[3]);
               if (list4.length < 1) { ok=false; break; }
               for(int m=1; m < list4.length; m++) {
                   String [] list5;
                   list5 = TclList.split(list4[m]);
                   if (list5.length != 3) { ok=false; break; }
                   String [] list6;
                   list6 = TclList.split(list5[1]);
                   if (list6.length < 1) { ok = false; break; }
                   if (!list6[0].startsWith("A:")) { ok = false; break; }
                   if (list6.length == 2) { RCPPARNM = list6[1];} else { RCPPARNM = ""; }
                   list6 = TclList.split(list5[2]);
                   if (list6.length < 1) { ok = false; break; }
                   if (list6.length == 2) { RCPPARVAL = list6[1];} else { RCPPARVAL = ""; }
                   }
               if (!ok) break;
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("TF:1")) { ok = false; break; }
               PRPROCESSSTART = Integer.parse(list3[1]);
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok=false; break; }
               for(int k=1; k < list3.length; k++) {
                   String [] list4;
                   list4 = TclList.split(list3[k]);
                   if (list4.length < 1) { ok = false; break; }
                   if (list4.length == 2) { PRPAUSEEVENTID = list4[1];} else { PRPAUSEEVENTID = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F15R

S16F16PRJobMultiCreate Ack Sent by Equipment Only

    // S16F16 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(16, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:m PRJOBID} {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String PRJOBID;  	// A:n (always)  process job identifier
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { PRJOBID = list2[1];} else { PRJOBID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S16F17RPRJobDequeue Sent by Host Only

    // S16F17R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 17)) {recvS16F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:m PRJOBID
        // variables for data items and parsing
        String PRJOBID;  	// A:n (always)  process job identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int m=1; m < list0.length; m++) {
               String [] list1;
               list1 = TclList.split(list0[m]);
               if (list1.length < 1) { ok = false; break; }
               if (!list1[0].startsWith("A:")) { ok = false; break; }
               if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F17R

S16F18PRJobDequeue Ack Sent by Equipment Only

    // S16F18 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(16, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:m PRJOBID} {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String PRJOBID;  	// A:n (always)  process job identifier
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { PRJOBID = list2[1];} else { PRJOBID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S16F19RPRJob List Req Sent by Host Only

    // S16F19R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 19)) {recvS16F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F19R

S16F20PRJob List Data Sent by Equipment Only

    // S16F20 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(16, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:m {L:2 PRJOBID PRSTATE}
        // variables for data items and parsing
        String PRJOBID;  	// A:n (always)  process job identifier
        int PRSTATE;  	// U1:1 (always)  process job state, E40 definition
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int m=1; m < list0.length; m++) {
               String [] list1;
               list1 = TclList.split(list0[m]);
               if (list1.length != 3) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { PRJOBID = list2[1];} else { PRJOBID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("U1:1")) { ok = false; break; }
               PRSTATE = Integer.parse(list2[1]);
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S16F21RPRJob Create Limit Req Sent by Host Only

    // S16F21R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 21, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 21)) {recvS16F21(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 22, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F21R

S16F22PRJob Create Limit Data Sent by Equipment Only

    // S16F22 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(16, 21, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect PRJOBSPACE
        // variables for data items and parsing
        int PRJOBSPACE;  	// U2:1 (always)  the number of process jobs that can be created
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U2:1")) { ok = false; break; }
           PRJOBSPACE = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S16F23RPRJob Recipe Variable Set Sent by Host Only

    // S16F23R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 23, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 23)) {recvS16F23(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 PRJOBID {L:m {L:2 RCPPARNM RCPPARVAL}}
        // variables for data items and parsing
        String PRJOBID;  	// A:n (always)  process job identifier
        String RCPPARNM;  	// A:256 (always)  the name of a recipe variable parameter
        String RCPPARVAL;  	// A:80 (varies)  the value of a recipe variable parameter, any scalar format type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RCPPARNM = list3[1];} else { RCPPARNM = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPPARVAL = list3[1];} else { RCPPARVAL = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 24, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F23R

S16F24PRJob Recipe Variable Ack Sent by Host Only

    // S16F24 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(16, 23, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S16F25RPRJob Start Method Set Sent by Host Only

    // S16F25R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 25, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 25)) {recvS16F25(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 {L:m PRJOBID} PRPROCESSSTART
        // variables for data items and parsing
        String PRJOBID;  	// A:n (always)  process job identifier
        int PRPROCESSSTART;  	// TF:1 (always)  automatic start flag, false implies manual start
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { PRJOBID = list2[1];} else { PRJOBID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           PRPROCESSSTART = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 26, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F25R

S16F26PRJob Start Method Ack Sent by Equipment Only

    // S16F26 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(16, 25, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:m PRJOBID} {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
        // variables for data items and parsing
        String PRJOBID;  	// A:n (always)  process job identifier
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { PRJOBID = list2[1];} else { PRJOBID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list2[1]);
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok=false; break; }
           for(int n=1; n < list2.length; n++) {
               String [] list3;
               list3 = TclList.split(list2[n]);
               if (list3.length != 3) { ok=false; break; }
               String [] list4;
               list4 = TclList.split(list3[1]);
               if (list4.length < 1) { ok = false; break; }
               if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
               list4 = TclList.split(list3[2]);
               if (list4.length < 1) { ok = false; break; }
               if (!list4[0].startsWith("A:")) { ok = false; break; }
               if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S16F27RControl Job Command Sent by Host Only

    // S16F27R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 27, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 27)) {recvS16F27(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 CTLJOBID CTLJOBCMD {L:2 CPNAME CPVAL}
        // variables for data items and parsing
        String CTLJOBID;  	// A:n (always)  control job ID, an OBJID
        int CTLJOBCMD;  	// U1:1 (always)  control job command
        String CPNAME;  	// A:n (varies)  command parameter name
        String CPVAL;  	// A:n (varies)  command parameter value, any scalar type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { CTLJOBID = list1[1];} else { CTLJOBID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           CTLJOBCMD = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (list2.length == 2) { CPNAME = list2[1];} else { CPNAME = ""; }
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok = false; break; }
           if (list2.length == 2) { CPVAL = list2[1];} else { CPVAL = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 28, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F27R

S16F28Control Job Command Ack Sent by Equipment Only

    // S16F28 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(16, 27, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 ACKA {L:2 ERRCODE ERRTEXT}
        // variables for data items and parsing
        int ACKA;  	// TF:1 (always)  request success
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length != 3) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (list2.length == 2) { ERRCODE = list2[1];} else { ERRCODE = ""; }
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { ERRTEXT = list2[1];} else { ERRTEXT = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S16F29PRSetMtrlOrder Sent by Host Only

    // S16F29 Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 16, 29, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 16) && (function = 29)) {recvS16F29(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS16F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect PRMTRLORDER
        // variables for data items and parsing
        int PRMTRLORDER;  	// U1:1 (always)  ordering method for pending process jobs
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           PRMTRLORDER = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(16, 30, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S16F29

S16F30PRSetMtrlOrder Ack Sent by Equipment Only

    // S16F30 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(16, 29, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect ACKA
        // variables for data items and parsing
        int ACKA;  	// TF:1 (always)  request success
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S17F1RData Report Create Req Sent by Host Only

    // S17F1R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 17, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 17) && (function = 1)) {recvS17F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS17F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 DATAID RPTID DATASRC {L:n VID}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String RPTID;  	// U4:1 (varies)  report ID
        String DATASRC;  	// A:n (always)  identifies a data source, use length 0 to mean the default
        String VID;  	// A:n (varies)  A variable ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { DATASRC = list1[1];} else { DATASRC = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { VID = list2[1];} else { VID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(17, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S17F1R

S17F2Data Report Create Ack Sent by Equipment Only

    // S17F2 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(17, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 RPTID ERRCODE
        // variables for data items and parsing
        String RPTID;  	// U4:1 (varies)  report ID
        String ERRCODE;  	// U4:1 (varies)  error code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ERRCODE = list1[1];} else { ERRCODE = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S17F3RData Report Delete Req Sent by Host Only

    // S17F3R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 17, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 17) && (function = 3)) {recvS17F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS17F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n RPTID
        // variables for data items and parsing
        String RPTID;  	// U4:1 (varies)  report ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(17, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S17F3R

S17F4Data Report Del Ack Sent by Equipment Only

    // S17F4 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(17, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 ACKA {L:m {L:3 RPTID ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int ACKA;  	// TF:1 (always)  request success
        String RPTID;  	// U4:1 (varies)  report ID
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S17F5RTrace Create Req Sent by Host Only

    // S17F5R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 17, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 17) && (function = 5)) {recvS17F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS17F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:6 DATAID TRID CEED {L:n RPTID} {L:8* TOTSMP REPGSZ EVNTSRC CEIDSTART EVNTSRC2 CEIDSTOP TRAUTOD RPTOC}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String TRID;  	// A:n (varies)  trace request ID
        int CEED;  	// TF:1 (always)  collection event or trace enablement, true is enabled
        String RPTID;  	// U4:1 (varies)  report ID
        String TOTSMP;  	// U4:1 (varies)  total samples to be made, should be an even multiple of REPGSZ
        String REPGSZ;  	// U4:1 (varies)  reporting group size, TOTSMP modulo REPGSZ should be 0
        String EVNTSRC;  	// A:n (always)  identifies an event source, use length 0 to specify the default
        String CEIDSTART;  	// U4:1 (varies)  the CEID of a start event
        String EVNTSRC2;  	// A:n (always)  a second event source EVNTSRC
        String CEIDSTOP;  	// U4:1 (varies)  the CEID of a stop event
        int TRAUTOD;  	// TF:1 (always)  delete upon completion flag
        int RPTOC;  	// TF:1 (always)  send only changed data trace report flag
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 7) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           CEED = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { RPTID = list2[1];} else { RPTID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[5]);
           if (list1.length == 9) {  // 8 optional items found
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { TOTSMP = list2[1];} else { TOTSMP = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { REPGSZ = list2[1];} else { REPGSZ = ""; }
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { EVNTSRC = list2[1];} else { EVNTSRC = ""; }
               list2 = TclList.split(list1[4]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { CEIDSTART = list2[1];} else { CEIDSTART = ""; }
               list2 = TclList.split(list1[5]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { EVNTSRC2 = list2[1];} else { EVNTSRC2 = ""; }
               list2 = TclList.split(list1[6]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { CEIDSTOP = list2[1];} else { CEIDSTOP = ""; }
               list2 = TclList.split(list1[7]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("TF:1")) { ok = false; break; }
               TRAUTOD = Integer.parse(list2[1]);
               list2 = TclList.split(list1[8]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("TF:1")) { ok = false; break; }
               RPTOC = Integer.parse(list2[1]);
               }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(17, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S17F5R

S17F6Trace Create Ack Sent by Equipment Only

    // S17F6 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(17, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 TRID ERRCODE
        // variables for data items and parsing
        String TRID;  	// A:n (varies)  trace request ID
        String ERRCODE;  	// U4:1 (varies)  error code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ERRCODE = list1[1];} else { ERRCODE = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S17F7RTrace Delete Req Sent by Host Only

    // S17F7R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 17, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 17) && (function = 7)) {recvS17F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS17F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n TRID
        // variables for data items and parsing
        String TRID;  	// A:n (varies)  trace request ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(17, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S17F7R

S17F8Trace Delete Ack Sent by Equipment Only

    // S17F8 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(17, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 ACKA {L:m {L:3 TRID ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int ACKA;  	// TF:1 (always)  request success
        String TRID;  	// A:n (varies)  trace request ID
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { TRID = list3[1];} else { TRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S17F9RCollection Event Link Req Sent by Host Only

    // S17F9R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 17, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 17) && (function = 9)) {recvS17F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS17F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 DATAID EVNTSRC CEID {L:n RPTID}
        // variables for data items and parsing
        String DATAID;  	// U4:1 (varies)  an identifier to correlate related messages
        String EVNTSRC;  	// A:n (always)  identifies an event source, use length 0 to specify the default
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String RPTID;  	// U4:1 (varies)  report ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EVNTSRC = list1[1];} else { EVNTSRC = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { RPTID = list2[1];} else { RPTID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(17, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S17F9R

S17F10Collection Event Link Ack Sent by Equipment Only

    // S17F10 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(17, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 EVNTSRC CEID ERRCODE
        // variables for data items and parsing
        String EVNTSRC;  	// A:n (always)  identifies an event source, use length 0 to specify the default
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String ERRCODE;  	// U4:1 (varies)  error code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EVNTSRC = list1[1];} else { EVNTSRC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ERRCODE = list1[1];} else { ERRCODE = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S17F11RCollection Event Unlink Sent by Host Only

    // S17F11R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 17, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 17) && (function = 11)) {recvS17F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS17F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 EVNTSRC CEID RPTID
        // variables for data items and parsing
        String EVNTSRC;  	// A:n (always)  identifies an event source, use length 0 to specify the default
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String RPTID;  	// U4:1 (varies)  report ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EVNTSRC = list1[1];} else { EVNTSRC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(17, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S17F11R

S17F12Collection Event Unlink Ack Sent by Equipment Only

    // S17F12 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(17, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:4 EVNTSRC CEID RPTID ERRCODE
        // variables for data items and parsing
        String EVNTSRC;  	// A:n (always)  identifies an event source, use length 0 to specify the default
        String CEID;  	// U4:1 (varies)  collection event identifier, GEM requires type Un
        String RPTID;  	// U4:1 (varies)  report ID
        String ERRCODE;  	// U4:1 (varies)  error code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EVNTSRC = list1[1];} else { EVNTSRC = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ERRCODE = list1[1];} else { ERRCODE = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S17F13RTrace Reset Req Sent by Host Only

    // S17F13R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 17, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 17) && (function = 13)) {recvS17F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS17F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n TRID
        // variables for data items and parsing
        String TRID;  	// A:n (varies)  trace request ID
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(17, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S17F13R

S17F14Trace Reset Ack Sent by Equipment Only

    // S17F14 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(17, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 ACKA {L:m {L:3 TRID ERRCODE ERRTEXT}}
        // variables for data items and parsing
        int ACKA;  	// TF:1 (always)  request success
        String TRID;  	// A:n (varies)  trace request ID
        String ERRCODE;  	// U4:1 (varies)  error code
        String ERRTEXT;  	// A:80 (always)  description of ERRCODE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           ACKA = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { TRID = list3[1];} else { TRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S18F1RRead Attribute Req Sent by Host Only

    // S18F1R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 18, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 18) && (function = 1)) {recvS18F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS18F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 TARGETID {L:n ATTRID}
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ATTRID = list2[1];} else { ATTRID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(18, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S18F1R

S18F2Read Attribute Data Sent by Equipment Only

    // S18F2 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(18, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:4 TARGETID SSACK {L:n ATTRDATA} {L:s STATUS}
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String SSACK;  	// A:2 (always)  two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        String STATUS;  	// A:n (always)  subsystem status data
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ATTRDATA = list2[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int s=1; s < list1.length; s++) {
               String [] list2;
               list2 = TclList.split(list1[s]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S18F3RWrite Attribute Req Sent by Host Only

    // S18F3R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 18, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 18) && (function = 3)) {recvS18F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS18F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 TARGETID {L:n {L:2 ATTRID ATTRDATA}}
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String ATTRID;  	// A:40 (varies)  identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~.  Does not begin or end with space.
        String ATTRDATA;  	// A:n (varies)  a specific attribute value of any data type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(18, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S18F3R

S18F4Write Attribute Ack Sent by Equipment Only

    // S18F4 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(18, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 TARGETID SSACK {L:s STATUS}
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String SSACK;  	// A:2 (always)  two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
        String STATUS;  	// A:n (always)  subsystem status data
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int s=1; s < list1.length; s++) {
               String [] list2;
               list2 = TclList.split(list1[s]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S18F5RRead Request Sent by Host Only

    // S18F5R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 18, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 18) && (function = 5)) {recvS18F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS18F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 TARGETID DATASEG DATALENGTH
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String DATASEG;  	// A:n (varies)  identifies data requested, E87 requires text
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATASEG = list1[1];} else { DATASEG = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(18, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S18F5R

S18F6Read Data Sent by Equipment Only

    // S18F6 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(18, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:4 TARGETID SSACK DATA {L:s STATUS}
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String SSACK;  	// A:2 (always)  two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
        String DATA;  	// A:n (varies)  unformatted data
        String STATUS;  	// A:n (always)  subsystem status data
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATA = list1[1];} else { DATA = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int s=1; s < list1.length; s++) {
               String [] list2;
               list2 = TclList.split(list1[s]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S18F7RWrite Data Request Sent by Host Only

    // S18F7R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 18, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 18) && (function = 7)) {recvS18F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS18F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 TARGETID DATASEG DATALENGTH DATA
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String DATASEG;  	// A:n (varies)  identifies data requested, E87 requires text
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        String DATA;  	// A:n (varies)  unformatted data
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATASEG = list1[1];} else { DATASEG = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { DATA = list1[1];} else { DATA = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(18, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S18F7R

S18F8Write Data Ack Sent by Equipment Only

    // S18F8 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(18, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 TARGETID SSACK {L:s STATUS}
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String SSACK;  	// A:2 (always)  two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
        String STATUS;  	// A:n (always)  subsystem status data
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int s=1; s < list1.length; s++) {
               String [] list2;
               list2 = TclList.split(list1[s]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S18F9RRead ID Req Sent by Host Only

    // S18F9R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 18, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 18) && (function = 9)) {recvS18F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS18F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect TARGETID
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { TARGETID = list0[1];} else { TARGETID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(18, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S18F9R

S18F10Read ID Data Sent by Equipment Only

    // S18F10 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(18, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:4 TARGETID SSACK MID {L:s STATUS}
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String SSACK;  	// A:2 (always)  two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        String STATUS;  	// A:n (always)  subsystem status data
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int s=1; s < list1.length; s++) {
               String [] list2;
               list2 = TclList.split(list1[s]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S18F11RWrite ID Req Sent by Host Only

    // S18F11R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 18, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 18) && (function = 11)) {recvS18F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS18F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 TARGETID MID
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(18, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S18F11R

S18F12Write ID Ack Sent by Equipment Only

    // S18F12 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(18, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 TARGETID SSACK {L:s STATUS}
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String SSACK;  	// A:2 (always)  two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
        String STATUS;  	// A:n (always)  subsystem status data
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int s=1; s < list1.length; s++) {
               String [] list2;
               list2 = TclList.split(list1[s]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S18F13RSubsystem Command Sent by Host Only

    // S18F13R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 18, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 18) && (function = 13)) {recvS18F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS18F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 TARGETID SSCMD {L:n CPVAL}
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String SSCMD;  	// A:n (always)  subsystem action command
        String CPVAL;  	// A:n (varies)  command parameter value, any scalar type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SSCMD = list1[1];} else { SSCMD = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { CPVAL = list2[1];} else { CPVAL = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(18, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S18F13R

S18F14Subsystem Command Ack Sent by Equipment Only

    // S18F14 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(18, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 TARGETID SSACK {L:s STATUS}
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String SSACK;  	// A:2 (always)  two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
        String STATUS;  	// A:n (always)  subsystem status data
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int s=1; s < list1.length; s++) {
               String [] list2;
               list2 = TclList.split(list1[s]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S18F15RRead 2D Code Cond Req Sent by Host Only

    // S18F15R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 18, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 18) && (function = 15)) {recvS18F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS18F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect TARGETID
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { TARGETID = list0[1];} else { TARGETID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(18, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S18F15R

S18F16Read 2D Code Cond Data Sent by Equipment Only

    // S18F16 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(18, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:5 TARGETID SSACK MID {L:s STATUS} {L:c CONDITION}
        // variables for data items and parsing
        String TARGETID;  	// A:n (always)  the OBJSPEC for the target object
        String SSACK;  	// A:2 (always)  two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
        String MID;  	// A:16 (varies)  material ID, E40 restricts to A:n
        String STATUS;  	// A:n (always)  subsystem status data
        String CONDITION;  	// A:n (always)  sub-system condition info tag
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int s=1; s < list1.length; s++) {
               String [] list2;
               list2 = TclList.split(list1[s]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int c=1; c < list1.length; c++) {
               String [] list2;
               list2 = TclList.split(list1[c]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { CONDITION = list2[1];} else { CONDITION = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S19F1RRequest Process Definition Element (PDE) Directory Sent by Host and Equipment

    // S19F1R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 19, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 19) && (function = 1)) {recvS19F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS19F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 {L:m {L:3 PDEATTRIBUTENAME COMPARISONOPERATOR PDEATTRIBUTEVALUE}} {L:n PDEATTRIBUTE}
        // variables for data items and parsing
        int PDEATTRIBUTENAME;  	// U1:1 (always)  identifies a PDE attribute type
        int COMPARISONOPERATOR;  	// U1:1 (always)  choice of comparison operators.  Interpreted as "target <op> <const>" where <op> is this value and <const> is supplied in the expression
        String PDEATTRIBUTEVALUE;  	// A (varies)  contains the value of a PDE Attribute, may be type L, A, TF, U1
        int PDEATTRIBUTE;  	// U1:1 (always)  a reportable PDE attribute type, not necessarily useable in a filter expression
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               PDEATTRIBUTENAME = Integer.parse(list3[1]);
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               COMPARISONOPERATOR = Integer.parse(list3[1]);
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { PDEATTRIBUTEVALUE = list3[1];} else { PDEATTRIBUTEVALUE = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("U1:1")) { ok = false; break; }
               PDEATTRIBUTE = Integer.parse(list2[1]);
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(19, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S19F1R

S19F2PDE Directory Data Sent by Host and Equipment

    // S19F2 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(19, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 DIRRSPSTAT STATUSTXT {L:m {L:2 UID {L:n {L:2 PDEATTRIBUTE PDEATTRIBUTEVALUE}}}}
        // variables for data items and parsing
        int DIRRSPSTAT;  	// U1:1 (always)  get dir status response
        String STATUSTXT;  	// A:80 (always)  status response description
        String UID;  	// A:36 (always)  See SEMI E139.  A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens 
        int PDEATTRIBUTE;  	// U1:1 (always)  a reportable PDE attribute type, not necessarily useable in a filter expression
        String PDEATTRIBUTEVALUE;  	// A (varies)  contains the value of a PDE Attribute, may be type L, A, TF, U1
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           DIRRSPSTAT = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { STATUSTXT = list1[1];} else { STATUSTXT = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { UID = list3[1];} else { UID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok=false; break; }
               for(int n=1; n < list3.length; n++) {
                   String [] list4;
                   list4 = TclList.split(list3[n]);
                   if (list4.length != 3) { ok=false; break; }
                   String [] list5;
                   list5 = TclList.split(list4[1]);
                   if (list5.length < 1) { ok = false; break; }
                   if (!list5[0].equals("U1:1")) { ok = false; break; }
                   PDEATTRIBUTE = Integer.parse(list5[1]);
                   list5 = TclList.split(list4[2]);
                   if (list5.length < 1) { ok = false; break; }
                   if (list5.length == 2) { PDEATTRIBUTEVALUE = list5[1];} else { PDEATTRIBUTEVALUE = ""; }
                   }
               if (!ok) break;
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S19F3RPDE Delete Request Sent by Host Only

    // S19F3R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 19, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 19) && (function = 3)) {recvS19F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS19F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n UID
        // variables for data items and parsing
        String UID;  	// A:36 (always)  See SEMI E139.  A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (!list1[0].startsWith("A:")) { ok = false; break; }
               if (list1.length == 2) { UID = list1[1];} else { UID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(19, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S19F3R

S19F4PDE Delete Acknowledge Sent by Equipment Only

    // S19F4 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(19, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:3 UID DELRSPSTAT STATUSTXT}
        // variables for data items and parsing
        String UID;  	// A:36 (always)  See SEMI E139.  A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens 
        int DELRSPSTAT;  	// U1:1 (always)  Response code for the PDE deletion request, non-zero means not deleted
        String STATUSTXT;  	// A:80 (always)  status response description
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 4) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { UID = list2[1];} else { UID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("U1:1")) { ok = false; break; }
               DELRSPSTAT = Integer.parse(list2[1]);
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { STATUSTXT = list2[1];} else { STATUSTXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S19F5RPDE Header Data Request Sent by Host and Equipment

    // S19F5R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 19, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 19) && (function = 5)) {recvS19F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS19F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n UID
        // variables for data items and parsing
        String UID;  	// A:36 (always)  See SEMI E139.  A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (!list1[0].startsWith("A:")) { ok = false; break; }
               if (list1.length == 2) { UID = list1[1];} else { UID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(19, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S19F5R

S19F6PDE Header Data Reply Sent by Host and Equipment

    // S19F6 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(19, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 TCID {L:n {L:3 UID GETRSPSTAT STATUSTXT}}
        // variables for data items and parsing
        String TCID;  	// A:36 (always)  The identity of a transfer container specified as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens
        String UID;  	// A:36 (always)  See SEMI E139.  A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens 
        int GETRSPSTAT;  	// U1:1 (always)  Response code for PDE queries, non-zero indicates failure
        String STATUSTXT;  	// A:80 (always)  status response description
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TCID = list1[1];} else { TCID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { UID = list3[1];} else { UID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               GETRSPSTAT = Integer.parse(list3[1]);
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { STATUSTXT = list3[1];} else { STATUSTXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S19F7Rrequest the transfer of PDEs via Stream 13 Sent by Host and Equipment

    // S19F7R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 19, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 19) && (function = 7)) {recvS19F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS19F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n UID
        // variables for data items and parsing
        String UID;  	// A:36 (always)  See SEMI E139.  A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (!list1[0].startsWith("A:")) { ok = false; break; }
               if (list1.length == 2) { UID = list1[1];} else { UID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(19, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S19F7R

S19F8PDE Transfer Reply Sent by Host and Equipment

    // S19F8 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(19, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 TCID {L:n {L:3 UID GETRSPSTAT STATUSTXT}}
        // variables for data items and parsing
        String TCID;  	// A:36 (always)  The identity of a transfer container specified as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens
        String UID;  	// A:36 (always)  See SEMI E139.  A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens 
        int GETRSPSTAT;  	// U1:1 (always)  Response code for PDE queries, non-zero indicates failure
        String STATUSTXT;  	// A:80 (always)  status response description
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TCID = list1[1];} else { TCID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { UID = list3[1];} else { UID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               GETRSPSTAT = Integer.parse(list3[1]);
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { STATUSTXT = list3[1];} else { STATUSTXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S19F9RRequest to Send PDE Sent by Host and Equipment

    // S19F9R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 19, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 19) && (function = 9)) {recvS19F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS19F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 TCID TRANSFERSIZE
        // variables for data items and parsing
        String TCID;  	// A:36 (always)  The identity of a transfer container specified as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens
        int TRANSFERSIZE;  	// U8:1 (always)  SIze in bytes of the TransferContainer.   An 8 byte value but HSMS uses 4 byte message lengths!!!
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TCID = list1[1];} else { TCID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U8:1")) { ok = false; break; }
           TRANSFERSIZE = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(19, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S19F9R

S19F10Initiate PDE transfer Reply Sent by Host and Equipment

    // S19F10 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(19, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 TCID RTSRSPSTAT STATUSTXT
        // variables for data items and parsing
        String TCID;  	// A:36 (always)  The identity of a transfer container specified as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens
        int RTSRSPSTAT;  	// U1:1 (always)  PDE transfer request reply code, non-zero means denied
        String STATUSTXT;  	// A:80 (always)  status response description
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TCID = list1[1];} else { TCID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RTSRSPSTAT = Integer.parse(list1[1]);
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { STATUSTXT = list1[1];} else { STATUSTXT = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S19F11RSend PDE Sent by Host and Equipment

    // S19F11R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 19, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 19) && (function = 11)) {recvS19F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS19F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect TCID
        // variables for data items and parsing
        String TCID;  	// A:36 (always)  The identity of a transfer container specified as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { TCID = list0[1];} else { TCID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(19, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S19F11R

S19F12Send PDE Acknowledge Sent by Host and Equipment

    // S19F12 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(19, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // no data expected
        return;  // parsed ok
        } // end while(ok)

S19F13RTransferContainer Report Sent by Host and Equipment

    // S19F13R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 19, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 19) && (function = 13)) {recvS19F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS19F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n {L:4 UID SENDRSPSTAT VERIFYRSPSTAT STATUSTXT}
        // variables for data items and parsing
        String UID;  	// A:36 (always)  See SEMI E139.  A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens 
        int SENDRSPSTAT;  	// U1:1 (always)  Return codes for the Send PDE request, non-zero means failure
        int VERIFYRSPSTAT;  	// U1:1 (always)  PDE verification result, 0 success, 10 none, other error
        String STATUSTXT;  	// A:80 (always)  status response description
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 5) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { UID = list2[1];} else { UID = ""; }
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("U1:1")) { ok = false; break; }
               SENDRSPSTAT = Integer.parse(list2[1]);
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("U1:1")) { ok = false; break; }
               VERIFYRSPSTAT = Integer.parse(list2[1]);
               list2 = TclList.split(list1[4]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { STATUSTXT = list2[1];} else { STATUSTXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(19, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S19F13R

S19F14TransferContainer Report Ack Sent by Host and Equipment

    // S19F14 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(19, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // no data expected
        return;  // parsed ok
        } // end while(ok)

S19F15RRequest PDE Resolution Sent by Host Only

    // S19F15R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 19, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 19) && (function = 15)) {recvS19F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS19F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 TARGETPDE {L:n {L:2 PDEREF RESOLUTION}}
        // variables for data items and parsing
        String TARGETPDE;  	// A:36 (always)  the UID of the target PDE, a 36 character string with runs of 8,4,4,4, and 12 characters joined by hyphens.
        String PDEREF;  	// A:36 (always)  The UID of a PDE or of a PDE group formatted as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens.
        String RESOLUTION;  	// A:36 (always)  the UID of a PDE
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETPDE = list1[1];} else { TARGETPDE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { PDEREF = list3[1];} else { PDEREF = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RESOLUTION = list3[1];} else { RESOLUTION = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(19, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S19F15R

S19F16PDE Resolution Data Sent by Equipment Only

    // S19F16 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(19, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:m {L:2 PDEREF RESOLUTION}} {L:n {L:3 UID RESPDESTAT STATUSTXT}}
        // variables for data items and parsing
        String PDEREF;  	// A:36 (always)  The UID of a PDE or of a PDE group formatted as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens.
        String RESOLUTION;  	// A:36 (always)  the UID of a PDE
        String UID;  	// A:36 (always)  See SEMI E139.  A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens 
        int RESPDESTAT;  	// U1:1 (always)  status codes for PDE resolution
        String STATUSTXT;  	// A:80 (always)  status response description
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int m=1; m < list1.length; m++) {
               String [] list2;
               list2 = TclList.split(list1[m]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { PDEREF = list3[1];} else { PDEREF = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RESOLUTION = list3[1];} else { RESOLUTION = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { UID = list3[1];} else { UID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               RESPDESTAT = Integer.parse(list3[1]);
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { STATUSTXT = list3[1];} else { STATUSTXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S19F17RVerify PDE Request Sent by Host Only

    // S19F17R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 19, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 19) && (function = 17)) {recvS19F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS19F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 TARGETPDE {L:n {L:2 PDEREF RESOLUTION}} VERIFYTYPE VERIFYDEPTH
        // variables for data items and parsing
        String TARGETPDE;  	// A:36 (always)  the UID of the target PDE, a 36 character string with runs of 8,4,4,4, and 12 characters joined by hyphens.
        String PDEREF;  	// A:36 (always)  The UID of a PDE or of a PDE group formatted as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens.
        String RESOLUTION;  	// A:36 (always)  the UID of a PDE
        int VERIFYTYPE;  	// U1:1 (always)  chooses the type of verification
        int VERIFYDEPTH;  	// U1:1 (always)  whether to check only the target, or the target and all referenced PDEs
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { TARGETPDE = list1[1];} else { TARGETPDE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 3) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { PDEREF = list3[1];} else { PDEREF = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RESOLUTION = list3[1];} else { RESOLUTION = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           VERIFYTYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           VERIFYDEPTH = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(19, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S19F17R

S19F18PDE Verification Result Sent by Equipment Only

    // S19F18 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(19, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 VERIFYSUCCESS {L:n {L:3 UID VERIFYRSPSTAT STATUSTXT}}
        // variables for data items and parsing
        int VERIFYSUCCESS;  	// TF:1 (always)  True if no errors were found
        String UID;  	// A:36 (always)  See SEMI E139.  A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens 
        int VERIFYRSPSTAT;  	// U1:1 (always)  PDE verification result, 0 success, 10 none, other error
        String STATUSTXT;  	// A:80 (always)  status response description
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("TF:1")) { ok = false; break; }
           VERIFYSUCCESS = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { UID = list3[1];} else { UID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               VERIFYRSPSTAT = Integer.parse(list3[1]);
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { STATUSTXT = list3[1];} else { STATUSTXT = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S19F19RS19 Multi-block Inquire Sent by Host and Equipment

    // S19F19R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 19, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 19) && (function = 19)) {recvS19F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS19F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect DATALENGTH
        // variables for data items and parsing
        String DATALENGTH;  	// U4:1 (varies)  total bytes of the message body 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (list0.length == 2) { DATALENGTH = list0[1];} else { DATALENGTH = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(19, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S19F19R

S19F20S19 Multi-block Grant Sent by Host and Equipment

    // S19F20 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(19, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect GRANT
        // variables for data items and parsing
        int GRANT;  	// B:1 (always)  multiblock grant code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("B:1")) { ok = false; break; }
           GRANT = sp.binToInt(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F1RSetSRO Attributes Request Sent by Host Only

    // S20F1R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 20, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 1)) {recvS20F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:6 OBJID OBJTYPE AUTOPOST_DISABLE AUTOCLEAR_DISABLE RETAINRECIPE_DISABLE AUTOCLOSE
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int AUTOPOST_DISABLE;  	// U1:1 (always)  Disable automatic posting of recipes to RMS preceeding SRO move to Local state (E171)
        int AUTOCLEAR_DISABLE;  	// U1:1 (always)  Disable automatic clear of recipes on SRO transition to Local (E171)
        int RETAINRECIPE_DISABLE;  	// U1:1 (always)  Disable automatic retention of recipes on disconnect
        int AUTOCLOSE;  	// U2:1 (always)  Interaction timeout for closing operator session, 0 is no limit
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 7) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           AUTOPOST_DISABLE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           AUTOCLEAR_DISABLE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RETAINRECIPE_DISABLE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U2:1")) { ok = false; break; }
           AUTOCLOSE = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S20F1R

S20F2SetSRO Attributes Acknowledge Sent by Equipment Only

    // S20F2 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(20, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect SSAACK
        // variables for data items and parsing
        int SSAACK;  	// U1:1 (always)  service completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           SSAACK = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F3RGetOperationIDList Request Sent by Host Only

    // S20F3R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 20, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 3)) {recvS20F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:3 OBJID OBJTYPE OPETYPE
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S20F3R

S20F4GetOperationIDList Acknowledge Sent by Equipment Only

    // S20F4 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(20, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:n OPEID} GOILACK
        // variables for data items and parsing
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int GOILACK;  	// U1:1 (always)  completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { OPEID = list2[1];} else { OPEID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           GOILACK = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F5ROpenConnectionEvent Send Sent by Equipment Only

    // S20F5R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 20, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 5)) {recvS20F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:7 OBJID OBJTYPE OPETYPE RMSUSERID RMSPWD EQUSERID OPEID
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String RMSUSERID;  	// A:64 (always)  SRO userID
        String RMSPWD;  	// A:64 (always)  password of SRO user 
        String EQUSERID;  	// A:64 (always)  Equipment userID for recipe use authentication
        String OPEID;  	// A:16 (always)  recipe operation identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 8) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMSUSERID = list1[1];} else { RMSUSERID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { RMSPWD = list1[1];} else { RMSPWD = ""; }
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { EQUSERID = list1[1];} else { EQUSERID = ""; }
           list1 = TclList.split(list0[7]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S20F5R

S20F6OpenConnectionEvent Acknowledge Sent by Host Only

    // S20F6 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(20, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 OPEID OCEACK
        // variables for data items and parsing
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int OCEACK;  	// U1:1 (always)  event completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OCEACK = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F7RCloseConnectionEvent Send Sent by Equipment Only

    // S20F7R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 20, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 7)) {recvS20F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 OBJID OBJTYPE OPETYPE OPEID
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S20F7R

S20F8CloseConnectionEvent Acknowledge Sent by Host Only

    // S20F8 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(20, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 OPEID CCEACK
        // variables for data items and parsing
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int CCEACK;  	// U1:1 (always)  event completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           CCEACK = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F9RClearOperation Request Sent by Host Only

    // S20F9R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 20, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 9)) {recvS20F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 OBJID OBJTYPE OPETYPE OPEID
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S20F9R

S20F10ClearOperation Acknowledge Sent by Equipment Only

    // S20F10 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(20, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect COACK
        // variables for data items and parsing
        int COACK;  	// U1:1 (always)  service completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           COACK = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F11RGetRecipeXIDList Request Sent by Host Only

    // S20F11R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 20, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 11)) {recvS20F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 OBJID OBJTYPE OPETYPE OPEID
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S20F11R

S20F12GetRecipeXIDList Acknowledge Sent by Equipment Only

    // S20F12 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(20, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}} GRXLACK
        // variables for data items and parsing
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int ASSGNID;  	// U1:1 (always)  Assigner of the RecipeXID Base Part
        int COPYID;  	// U1:1 (always)  Recipe copy type
        String REVID;  	// A:256 (always)  recipe revision information related to SRO
        String RecID;  	// A:n (always)  recipe spec or ppid
        String VERID;  	// A:n (always)  composite key with RecipeID to identify a unique recipe
        int TYPEID;  	// U1:1 (always)  recipe type
        String EQID;  	// A:256 (always)  recipe specification of compatible equipment
        int GRXLACK;  	// U1:1 (always)  service completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 10) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               ASSGNID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               COPYID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
               list3 = TclList.split(list2[8]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               TYPEID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[9]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           GRXLACK = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F13RDeleteRecipe Request Sent by Host Only

    // S20F13R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 20, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 13)) {recvS20F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 OBJID OBJTYPE OPETYPE OPEID {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int ASSGNID;  	// U1:1 (always)  Assigner of the RecipeXID Base Part
        int COPYID;  	// U1:1 (always)  Recipe copy type
        String REVID;  	// A:256 (always)  recipe revision information related to SRO
        String RecID;  	// A:n (always)  recipe spec or ppid
        String VERID;  	// A:n (always)  composite key with RecipeID to identify a unique recipe
        int TYPEID;  	// U1:1 (always)  recipe type
        String EQID;  	// A:256 (always)  recipe specification of compatible equipment
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length != 10) { ok=false; break; }
           String [] list2;
           list2 = TclList.split(list1[1]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { TIMESTAMP = list2[1];} else { TIMESTAMP = ""; }
           list2 = TclList.split(list1[2]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { OPEID = list2[1];} else { OPEID = ""; }
           list2 = TclList.split(list1[3]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           ASSGNID = Integer.parse(list2[1]);
           list2 = TclList.split(list1[4]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           COPYID = Integer.parse(list2[1]);
           list2 = TclList.split(list1[5]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { REVID = list2[1];} else { REVID = ""; }
           list2 = TclList.split(list1[6]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { RecID = list2[1];} else { RecID = ""; }
           list2 = TclList.split(list1[7]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { VERID = list2[1];} else { VERID = ""; }
           list2 = TclList.split(list1[8]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].equals("U1:1")) { ok = false; break; }
           TYPEID = Integer.parse(list2[1]);
           list2 = TclList.split(list1[9]);
           if (list2.length < 1) { ok = false; break; }
           if (!list2[0].startsWith("A:")) { ok = false; break; }
           if (list2.length == 2) { EQID = list2[1];} else { EQID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S20F13R

S20F14DeleteRecipe Acknowledge Sent by Equipment Only

    // S20F14 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(20, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect DRRACK
        // variables for data items and parsing
        int DRRACK;  	// U1:1 (always)  service completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           DRRACK = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F15RWriteRecipe Request Sent by Host Only

    // S20F15R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 20, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 15)) {recvS20F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 OBJID OBJTYPE OPETYPE OPEID {L:n {L:10 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID RCPBODYA}}
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int ASSGNID;  	// U1:1 (always)  Assigner of the RecipeXID Base Part
        int COPYID;  	// U1:1 (always)  Recipe copy type
        String REVID;  	// A:256 (always)  recipe revision information related to SRO
        String RecID;  	// A:n (always)  recipe spec or ppid
        String VERID;  	// A:n (always)  composite key with RecipeID to identify a unique recipe
        int TYPEID;  	// U1:1 (always)  recipe type
        String EQID;  	// A:256 (always)  recipe specification of compatible equipment
        String RCPBODYA;  	// A:n (varies)  user defined recipe body, list allowed
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 11) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               ASSGNID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               COPYID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
               list3 = TclList.split(list2[8]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               TYPEID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[9]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
               list3 = TclList.split(list2[10]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPBODYA = list3[1];} else { RCPBODYA = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S20F15R

S20F16WriteRecipe Acknowledge Sent by Equipment Only

    // S20F16 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(20, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect WRACK
        // variables for data items and parsing
        int WRACK;  	// U1:1 (always)  service completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           WRACK = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F17RReadRecipe Request Sent by Host Only

    // S20F17R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 20, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 17)) {recvS20F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 OBJID OBJTYPE OPETYPE OPEID {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}}
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int ASSGNID;  	// U1:1 (always)  Assigner of the RecipeXID Base Part
        int COPYID;  	// U1:1 (always)  Recipe copy type
        String REVID;  	// A:256 (always)  recipe revision information related to SRO
        String RecID;  	// A:n (always)  recipe spec or ppid
        String VERID;  	// A:n (always)  composite key with RecipeID to identify a unique recipe
        int TYPEID;  	// U1:1 (always)  recipe type
        String EQID;  	// A:256 (always)  recipe specification of compatible equipment
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 10) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               ASSGNID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               COPYID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
               list3 = TclList.split(list2[8]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               TYPEID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[9]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S20F17R

S20F18ReadRecipe Acknowledge Sent by Equipment Only

    // S20F18 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(20, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:n {L:10 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID RCPBODYA}} RRACK_S20
        // variables for data items and parsing
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int ASSGNID;  	// U1:1 (always)  Assigner of the RecipeXID Base Part
        int COPYID;  	// U1:1 (always)  Recipe copy type
        String REVID;  	// A:256 (always)  recipe revision information related to SRO
        String RecID;  	// A:n (always)  recipe spec or ppid
        String VERID;  	// A:n (always)  composite key with RecipeID to identify a unique recipe
        int TYPEID;  	// U1:1 (always)  recipe type
        String EQID;  	// A:256 (always)  recipe specification of compatible equipment
        String RCPBODYA;  	// A:n (varies)  user defined recipe body, list allowed
        int RRACK_S20;  	// U1:1 (always)  service completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 11) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               ASSGNID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               COPYID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
               list3 = TclList.split(list2[8]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               TYPEID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[9]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
               list3 = TclList.split(list2[10]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPBODYA = list3[1];} else { RCPBODYA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           RRACK_S20 = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F19RQueryRecipeXIDList Event Send Sent by Equipment Only

    // S20F19R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 20, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 19)) {recvS20F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 OBJID OBJTYPE OPETYPE OPEID 
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S20F19R

S20F20QueryRecipeXIDList Event Acknowledge Sent by Host Only

    // S20F20 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(20, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 OPEID {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}} QRXLEACK
        // variables for data items and parsing
        String OPEID;  	// A:16 (always)  recipe operation identifier
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int ASSGNID;  	// U1:1 (always)  Assigner of the RecipeXID Base Part
        int COPYID;  	// U1:1 (always)  Recipe copy type
        String REVID;  	// A:256 (always)  recipe revision information related to SRO
        String RecID;  	// A:n (always)  recipe spec or ppid
        String VERID;  	// A:n (always)  composite key with RecipeID to identify a unique recipe
        int TYPEID;  	// U1:1 (always)  recipe type
        String EQID;  	// A:256 (always)  recipe specification of compatible equipment
        int QRXLEACK;  	// U1:1 (always)  event completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 10) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               ASSGNID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               COPYID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
               list3 = TclList.split(list2[8]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               TYPEID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[9]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           QRXLEACK = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F21RQueryRecipe Event Send Sent by Equipment Only

    // S20F21R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 20, 21, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 21)) {recvS20F21(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 OBJID OBJTYPE OPETYPE OPEID {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}}
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int ASSGNID;  	// U1:1 (always)  Assigner of the RecipeXID Base Part
        int COPYID;  	// U1:1 (always)  Recipe copy type
        String REVID;  	// A:256 (always)  recipe revision information related to SRO
        String RecID;  	// A:n (always)  recipe spec or ppid
        String VERID;  	// A:n (always)  composite key with RecipeID to identify a unique recipe
        int TYPEID;  	// U1:1 (always)  recipe type
        String EQID;  	// A:256 (always)  recipe specification of compatible equipment
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 10) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               ASSGNID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               COPYID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
               list3 = TclList.split(list2[8]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               TYPEID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[9]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 22, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S20F21R

S20F22QueryRecipe Event Acknowledge Sent by Host Only

    // S20F22 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(20, 21, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect QREACK
        // variables for data items and parsing
        int QREACK;  	// U1:1 (always)  event completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           QREACK = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F23RPostRecipe Event Send Sent by Equipment Only

    // S20F23R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 20, 23, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 23)) {recvS20F23(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 OBJID OBJTYPE OPETYPE OPEID {L:n {L:10 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID RCPBODYA}}
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int ASSGNID;  	// U1:1 (always)  Assigner of the RecipeXID Base Part
        int COPYID;  	// U1:1 (always)  Recipe copy type
        String REVID;  	// A:256 (always)  recipe revision information related to SRO
        String RecID;  	// A:n (always)  recipe spec or ppid
        String VERID;  	// A:n (always)  composite key with RecipeID to identify a unique recipe
        int TYPEID;  	// U1:1 (always)  recipe type
        String EQID;  	// A:256 (always)  recipe specification of compatible equipment
        String RCPBODYA;  	// A:n (varies)  user defined recipe body, list allowed
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 11) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               ASSGNID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               COPYID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
               list3 = TclList.split(list2[8]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               TYPEID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[9]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
               list3 = TclList.split(list2[10]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPBODYA = list3[1];} else { RCPBODYA = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 24, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S20F23R

S20F24PostRecipe Event Acknowledge Sent by Host Only

    // S20F24 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(20, 23, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect PREACK
        // variables for data items and parsing
        int PREACK;  	// U1:1 (always)  event completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           PREACK = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F25RSetPRC Attributes Request Sent by Host Only

    // S20F25R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 20, 25, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 25)) {recvS20F25(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 OBJID OBJTYPE {L:n MAXNUMBER} MAXTIME PRCPREEXECHK
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int MAXNUMBER;  	// U2:1 (always)  subspace maximum 
        int MAXTIME;  	// U2:1 (always)  maximum minutes for a PEM recipe to be preserved in PRC post use, 0 means NA
        int PRCPREEXECHK;  	// U1:1 (always)  Enable Pre-Execution checking
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("U2:1")) { ok = false; break; }
               MAXNUMBER = Integer.parse(list2[1]);
               }
           if (!ok) break;
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U2:1")) { ok = false; break; }
           MAXTIME = Integer.parse(list1[1]);
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           PRCPREEXECHK = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 26, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S20F25R

S20F26SetPRC Attributes Acknowledge Sent by Equipment Only

    // S20F26 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(20, 25, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect SPAACK
        // variables for data items and parsing
        int SPAACK;  	// U1:1 (always)  service completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           SPAACK = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F27RPreSpecifyRecipe Request Sent by Host Only

    // S20F27R Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 20, 27, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 27)) {recvS20F27(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:6 OBJID OBJTYPE OPETYPE OPEID PRJOBID {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}}
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        String PRJOBID;  	// A:n (always)  process job identifier
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int ASSGNID;  	// U1:1 (always)  Assigner of the RecipeXID Base Part
        int COPYID;  	// U1:1 (always)  Recipe copy type
        String REVID;  	// A:256 (always)  recipe revision information related to SRO
        String RecID;  	// A:n (always)  recipe spec or ppid
        String VERID;  	// A:n (always)  composite key with RecipeID to identify a unique recipe
        int TYPEID;  	// U1:1 (always)  recipe type
        String EQID;  	// A:256 (always)  recipe specification of compatible equipment
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 7) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 10) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               ASSGNID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               COPYID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
               list3 = TclList.split(list2[8]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               TYPEID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[9]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 28, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S20F27R

S20F28PreSpecifyRecipe Acknowledge Sent by Equipment Only

    // S20F28 Java Parse reply
    SecsHost sp=(SecsHost)yourSecsHost;
    RcResult rcr = sp.sendSecsMsg(20, 27, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect PSRACK
        // variables for data items and parsing
        int PSRACK;  	// U1:1 (always)  service completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           PSRACK = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F29RQueryPJRecipeXIDList Event Send Sent by Equipment Only

    // S20F29R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 20, 29, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 29)) {recvS20F29(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 OBJID OBJTYPE OPETYPE OPEID PRJOBID 
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        String PRJOBID;  	// A:n (always)  process job identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 30, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S20F29R

S20F30QueryPJRecipeXIDList Event Acknowledge Sent by Host Only

    // S20F30 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(20, 29, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}} QPRKEACK
        // variables for data items and parsing
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int ASSGNID;  	// U1:1 (always)  Assigner of the RecipeXID Base Part
        int COPYID;  	// U1:1 (always)  Recipe copy type
        String REVID;  	// A:256 (always)  recipe revision information related to SRO
        String RecID;  	// A:n (always)  recipe spec or ppid
        String VERID;  	// A:n (always)  composite key with RecipeID to identify a unique recipe
        int TYPEID;  	// U1:1 (always)  recipe type
        String EQID;  	// A:256 (always)  recipe specification of compatible equipment
        int QPRKEACK;  	// U1:1 (always)  event completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 10) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               ASSGNID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               COPYID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
               list3 = TclList.split(list2[8]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               TYPEID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[9]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           QPRKEACK = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F31RPre-Exe Check Event Send Sent by Equipment Only

    // S20F31R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 20, 31, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 31)) {recvS20F31(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:6 OBJID OBJTYPE OPETYPE OPEID PRJOBID CHKINFO
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        String PRJOBID;  	// A:n (always)  process job identifier
        String CHKINFO;  	// A:n (varies)  User defined value, any type
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 7) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { CHKINFO = list1[1];} else { CHKINFO = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 32, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S20F31R

S20F32Pre-Exe Check Event Acknowledge Sent by Host Only

    // S20F32 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(20, 31, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 PECRSLT {L:n {L:10 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID RCPBODYA}} PECEACK
        // variables for data items and parsing
        int PECRSLT;  	// U1:1 (always)  RMS result
        String TIMESTAMP;  	// A:32 (always)  ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
        String OPEID;  	// A:16 (always)  recipe operation identifier
        int ASSGNID;  	// U1:1 (always)  Assigner of the RecipeXID Base Part
        int COPYID;  	// U1:1 (always)  Recipe copy type
        String REVID;  	// A:256 (always)  recipe revision information related to SRO
        String RecID;  	// A:n (always)  recipe spec or ppid
        String VERID;  	// A:n (always)  composite key with RecipeID to identify a unique recipe
        int TYPEID;  	// U1:1 (always)  recipe type
        String EQID;  	// A:256 (always)  recipe specification of compatible equipment
        String RCPBODYA;  	// A:n (varies)  user defined recipe body, list allowed
        int PECEACK;  	// U1:1 (always)  event completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           PECRSLT = Integer.parse(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 11) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               ASSGNID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[4]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               COPYID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[5]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
               list3 = TclList.split(list2[6]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
               list3 = TclList.split(list2[7]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
               list3 = TclList.split(list2[8]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("U1:1")) { ok = false; break; }
               TYPEID = Integer.parse(list3[1]);
               list3 = TclList.split(list2[9]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
               list3 = TclList.split(list2[10]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { RCPBODYA = list3[1];} else { RCPBODYA = ""; }
               }
           if (!ok) break;
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           PECEACK = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S20F33RPreSpecifyRecipe Event Send Sent by Equipment Only

    // S20F33R Java Receive message - add next line to setup
    //SecsHost sp=yourSecsHost;
    sp.messageTypeAdd( 20, 33, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 20) && (function = 33)) {recvS20F33(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS20F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 OBJID OBJTYPE OPETYPE OPEID PRJOBID
        // variables for data items and parsing
        String OBJID;  	// A:80 (varies)  E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        String OBJTYPE;  	// A:40 (varies)  object class name, chars 0x20-0x7e but not >, ?, *, or ~.  Does not begin or end with space.
        int OPETYPE;  	// U1:1 (always)  recipe operation type
        String OPEID;  	// A:16 (always)  recipe operation identifier
        String PRJOBID;  	// A:n (always)  process job identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U1:1")) { ok = false; break; }
           OPETYPE = Integer.parse(list1[1]);
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(20, 34, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S20F33R

S20F34PreSpecifyRecipe Event Acknowledge Sent by Host Only

    // S20F34 Java Parse reply
    SecsEquip sp=(SecsEquip)yourSecsEquip
    RcResult rcr = sp.sendSecsMsg(20, 33, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect PSREACK
        // variables for data items and parsing
        int PSREACK;  	// U1:1 (always)  event completion code
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].equals("U1:1")) { ok = false; break; }
           PSREACK = Integer.parse(list0[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S21F1RItem Load Inquire Sent by Host and Equipment

    // S21F1R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 21, 1, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 21) && (function = 1)) {recvS21F1(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS21F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:4 ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION
        // variables for data items and parsing
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        String ITEMID;  	// A:256 (always)  item identifier
        String ITEMLENGTH;  	// U4:1 (varies)  sum of item part lengths in bytes, not a message length, type U4 or U8
        String ITEMVERSION;  	// A:n (always)  version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 5) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(21, 2, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S21F1R

S21F2Item Load Grant Sent by Host and Equipment

    // S21F2 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(21, 1, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 ITEMACK ITEMERROR
        // variables for data items and parsing
        int ITEMACK;  	// B:1 (always)  item request return code
        String ITEMERROR;  	// A:1024 (always)  error description, empty on success
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ITEMACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S21F3RItem Send Sent by Host and Equipment

    // S21F3R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 21, 3, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 21) && (function = 3)) {recvS21F3(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS21F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION {L:n ITEMPART}
        // variables for data items and parsing
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        String ITEMID;  	// A:256 (always)  item identifier
        String ITEMLENGTH;  	// U4:1 (varies)  sum of item part lengths in bytes, not a message length, type U4 or U8
        String ITEMVERSION;  	// A:n (always)  version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
        String ITEMPART;  	// A:n (varies)  component part of an item, may be data type A:n or B:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ITEMPART = list2[1];} else { ITEMPART = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(21, 4, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S21F3R

S21F4Item Send Acknowledge Sent by Host and Equipment

    // S21F4 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(21, 3, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 ITEMACK ITEMERROR
        // variables for data items and parsing
        int ITEMACK;  	// B:1 (always)  item request return code
        String ITEMERROR;  	// A:1024 (always)  error description, empty on success
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ITEMACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S21F5RItem Request Sent by Host and Equipment

    // S21F5R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 21, 5, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 21) && (function = 5)) {recvS21F5(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS21F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 ITEMTYPE ITEMID
        // variables for data items and parsing
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        String ITEMID;  	// A:256 (always)  item identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(21, 6, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S21F5R

S21F6Item Data Sent by Host and Equipment

    // S21F6 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(21, 5, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:7 ITEMACK ITEMERROR ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION {L:n ITEMPART}
        // variables for data items and parsing
        int ITEMACK;  	// B:1 (always)  item request return code
        String ITEMERROR;  	// A:1024 (always)  error description, empty on success
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        String ITEMID;  	// A:256 (always)  item identifier
        String ITEMLENGTH;  	// U4:1 (varies)  sum of item part lengths in bytes, not a message length, type U4 or U8
        String ITEMVERSION;  	// A:n (always)  version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
        String ITEMPART;  	// A:n (varies)  component part of an item, may be data type A:n or B:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 8) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ITEMACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
           list1 = TclList.split(list0[7]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (list2.length == 2) { ITEMPART = list2[1];} else { ITEMPART = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S21F7RItem Type List Request Sent by Host and Equipment

    // S21F7R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 21, 7, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 21) && (function = 7)) {recvS21F7(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS21F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect ITEMTYPE
        // variables for data items and parsing
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok = false; break; }
           if (!list0[0].startsWith("A:")) { ok = false; break; }
           if (list0.length == 2) { ITEMTYPE = list0[1];} else { ITEMTYPE = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(21, 8, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S21F7R

S21F8Item Type List Results Sent by Host and Equipment

    // S21F8 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(21, 7, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:7 ITEMACK ITEMERROR ITEMTYPE {L:n {L:3 ITEMID ITEMLENGTH ITEMVERSION}}
        // variables for data items and parsing
        int ITEMACK;  	// B:1 (always)  item request return code
        String ITEMERROR;  	// A:1024 (always)  error description, empty on success
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        String ITEMID;  	// A:256 (always)  item identifier
        String ITEMLENGTH;  	// U4:1 (varies)  sum of item part lengths in bytes, not a message length, type U4 or U8
        String ITEMVERSION;  	// A:n (always)  version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 8) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ITEMACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ITEMID = list3[1];} else { ITEMID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (list3.length == 2) { ITEMLENGTH = list3[1];} else { ITEMLENGTH = ""; }
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ITEMVERSION = list3[1];} else { ITEMVERSION = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S21F9RSupported Item Type List Request Sent by Host and Equipment

    // S21F9R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 21, 9, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 21) && (function = 9)) {recvS21F9(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS21F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // no data expected
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(21, 10, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S21F9R

S21F10Supported Item Type List Result Sent by Host and Equipment

    // S21F10 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(21, 9, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 ITEMACK ITEMERROR {L:n ITEMTYPE} 
        // variables for data items and parsing
        int ITEMACK;  	// B:1 (always)  item request return code
        String ITEMERROR;  	// A:1024 (always)  error description, empty on success
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ITEMACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { ITEMTYPE = list2[1];} else { ITEMTYPE = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S21F11Item Delete Sent by Host Only

    // S21F11 Java Receive message - add next line to setup
    //SecsEquip sp=yourSecsEquip;
    sp.messageTypeAdd( 21, 11, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 21) && (function = 11)) {recvS21F11(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS21F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    SecsEquip sp = (SecsEquip)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 ITEMTYPE {L:n ITEMID}
        // variables for data items and parsing
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        String ITEMID;  	// A:256 (always)  item identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { ITEMID = list2[1];} else { ITEMID = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(21, 12, transID, reply);
            }
        return; 
        } // end while(ok)
    // bad data 
    sp.sendS9(7, header);
    } // end recv_S21F11

S21F12Item Delete Acknowledge Sent by Host and Equipment

    // S21F12 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(21, 11, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:3 ITEMACK ITEMTYPE {L:n {L:3 ITEMID ITEMACK ITEMERROR}} 
        // variables for data items and parsing
        int ITEMACK;  	// B:1 (always)  item request return code
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        String ITEMID;  	// A:256 (always)  item identifier
        int ITEMACK;  	// B:1 (always)  item request return code
        String ITEMERROR;  	// A:1024 (always)  error description, empty on success
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 4) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ITEMACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok=false; break; }
           for(int n=1; n < list1.length; n++) {
               String [] list2;
               list2 = TclList.split(list1[n]);
               if (list2.length != 4) { ok=false; break; }
               String [] list3;
               list3 = TclList.split(list2[1]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ITEMID = list3[1];} else { ITEMID = ""; }
               list3 = TclList.split(list2[2]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].equals("B:1")) { ok = false; break; }
               ITEMACK = sp.binToInt(list3[1]);
               list3 = TclList.split(list2[3]);
               if (list3.length < 1) { ok = false; break; }
               if (!list3[0].startsWith("A:")) { ok = false; break; }
               if (list3.length == 2) { ITEMERROR = list3[1];} else { ITEMERROR = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S21F13RRequest Permission To Send Item Sent by Host and Equipment

    // S21F13R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 21, 13, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 21) && (function = 13)) {recvS21F13(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS21F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:5 ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION ITEMPARTCOUNT
        // variables for data items and parsing
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        String ITEMID;  	// A:256 (always)  item identifier
        String ITEMLENGTH;  	// U4:1 (varies)  sum of item part lengths in bytes, not a message length, type U4 or U8
        String ITEMVERSION;  	// A:n (always)  version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
        int ITEMPARTCOUNT;  	// U4:1 (always)  total number of item parts as split for transfer
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 6) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           ITEMPARTCOUNT = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(21, 14, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S21F13R

S21F14Grant Permission To Send Item Sent by Host and Equipment

    // S21F14 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(21, 13, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 ITEMACK ITEMERROR
        // variables for data items and parsing
        int ITEMACK;  	// B:1 (always)  item request return code
        String ITEMERROR;  	// A:1024 (always)  error description, empty on success
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ITEMACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S21F15RItem Request Sent by Host and Equipment

    // S21F15R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 21, 15, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 21) && (function = 15)) {recvS21F15(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS21F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:2 ITEMTYPE ITEMID
        // variables for data items and parsing
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        String ITEMID;  	// A:256 (always)  item identifier
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(21, 16, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S21F15R

S21F16Item Request Grant Sent by Host and Equipment

    // S21F16 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(21, 15, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:7 ITEMACK ITEMERROR ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION ITEMPARTCOUNT
        // variables for data items and parsing
        int ITEMACK;  	// B:1 (always)  item request return code
        String ITEMERROR;  	// A:1024 (always)  error description, empty on success
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        String ITEMID;  	// A:256 (always)  item identifier
        String ITEMLENGTH;  	// U4:1 (varies)  sum of item part lengths in bytes, not a message length, type U4 or U8
        String ITEMVERSION;  	// A:n (always)  version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
        int ITEMPARTCOUNT;  	// U4:1 (always)  total number of item parts as split for transfer
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 8) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ITEMACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
           list1 = TclList.split(list0[7]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           ITEMPARTCOUNT = Integer.parse(list1[1]);
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S21F17RSend Item Part Sent by Host and Equipment

    // S21F17R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 21, 17, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 21) && (function = 17)) {recvS21F17(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS21F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:8 ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION ITEMINDEX ITEMPARTCOUNT ITEMPARTLENGTH ITEMPART
        // variables for data items and parsing
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        String ITEMID;  	// A:256 (always)  item identifier
        String ITEMLENGTH;  	// U4:1 (varies)  sum of item part lengths in bytes, not a message length, type U4 or U8
        String ITEMVERSION;  	// A:n (always)  version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
        int ITEMINDEX;  	// U4:1 (always)  1-based index of a component part, 0 means done, 0xFFFFFFFF means abort
        int ITEMPARTCOUNT;  	// U4:1 (always)  total number of item parts as split for transfer
        int ITEMPARTLENGTH;  	// U4:1 (always)  length of a specific item part presumably in bytes
        String ITEMPART;  	// A:n (varies)  component part of an item, may be data type A:n or B:n
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 9) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
           list1 = TclList.split(list0[3]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
           list1 = TclList.split(list0[4]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
           list1 = TclList.split(list0[5]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           ITEMINDEX = Integer.parse(list1[1]);
           list1 = TclList.split(list0[6]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           ITEMPARTCOUNT = Integer.parse(list1[1]);
           list1 = TclList.split(list0[7]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("U4:1")) { ok = false; break; }
           ITEMPARTLENGTH = Integer.parse(list1[1]);
           list1 = TclList.split(list0[8]);
           if (list1.length < 1) { ok = false; break; }
           if (list1.length == 2) { ITEMPART = list1[1];} else { ITEMPART = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(21, 18, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S21F17R

S21F18Send Item Part Acknowledge Sent by Host and Equipment

    // S21F18 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(21, 17, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:2 ITEMACK ITEMERROR
        // variables for data items and parsing
        int ITEMACK;  	// B:1 (always)  item request return code
        String ITEMERROR;  	// A:1024 (always)  error description, empty on success
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length != 3) { ok=false; break; }
           String [] list1;
           list1 = TclList.split(list0[1]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].equals("B:1")) { ok = false; break; }
           ITEMACK = sp.binToInt(list1[1]);
           list1 = TclList.split(list0[2]);
           if (list1.length < 1) { ok = false; break; }
           if (!list1[0].startsWith("A:")) { ok = false; break; }
           if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)

S21F19RItem Type Feature Support Sent by Host and Equipment

    // S21F19R Java Receive message - add next line to setup
    //sp is a SecsHost or SecsEquip object reference
    sp.messageTypeAdd( 21, 19, YourObject );

// class YourClass implements SecsMessageReceiveItf 
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
    if ((stream = 21) && (function = 19)) {recvS21F19(sc, stream, fn, sendReply, transID, data, header); return; }
    }
void recvS21F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
    //SecsEquip sp = (SecsEquip)sc;
    //SecsHost sp = (SecsHost)sc;
    boolean ok=true;
    while (ok) {   // break out of loop on error
        // expect L:n ITEMTYPE
        // variables for data items and parsing
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length < 1) { ok = false; break; }
               if (!list1[0].startsWith("A:")) { ok = false; break; }
               if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        if (sendReply) {
            String reply; // TBD create reply
            sp.sendReply(21, 20, transID, reply);
            }
        return; 
        } // end while(ok)
    } // end recv_S21F19R

S21F20Item Type Feature Support Results Sent by Host and Equipment

    // S21F20 Java Parse reply
    // sp is a SecsEquip or SecsHost object reference
    RcResult rcr = sp.sendSecsMsg(21, 19, true, sendData, true);
    String tsnData;  
    boolean ok=true;  
    while (ok) {   // break out of loop on error
        if (rcr.rc != 0) {ok=false; break;}
        tsnData = rcr.result;
        // expect L:n {L:4 ITEMACK ITEMERROR ITEMTYPE ITEMTYPESUPPORT}
        // variables for data items and parsing
        int ITEMACK;  	// B:1 (always)  item request return code
        String ITEMERROR;  	// A:1024 (always)  error description, empty on success
        String ITEMTYPE;  	// A:n (always)  case-sensitve type of an item
        int ITEMTYPESUPPORT;  	// U4:1 (always)  bitfield to specify which S21Fx messages accepted 
        try {
           String [] list0;
           list0 = TclList.split(tsnData);
           if (list0.length < 1) { ok=false; break; }
           for(int n=1; n < list0.length; n++) {
               String [] list1;
               list1 = TclList.split(list0[n]);
               if (list1.length != 5) { ok=false; break; }
               String [] list2;
               list2 = TclList.split(list1[1]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("B:1")) { ok = false; break; }
               ITEMACK = sp.binToInt(list2[1]);
               list2 = TclList.split(list1[2]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { ITEMERROR = list2[1];} else { ITEMERROR = ""; }
               list2 = TclList.split(list1[3]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].startsWith("A:")) { ok = false; break; }
               if (list2.length == 2) { ITEMTYPE = list2[1];} else { ITEMTYPE = ""; }
               list2 = TclList.split(list1[4]);
               if (list2.length < 1) { ok = false; break; }
               if (!list2[0].equals("U4:1")) { ok = false; break; }
               ITEMTYPESUPPORT = Integer.parse(list2[1]);
               }
           if (!ok) break;
        } catch (Exception ex) { /* unexpected parsing exception */ }
        return;  // parsed ok
        } // end while(ok)