Index: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/TDR.cdl
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/TDR.cdl	(revision 321)
+++ EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/TDR.cdl	(revision 429)
@@ -68,9 +68,4 @@
 	ER	sendSOP( [in]bool_t b_client );     /* StartOfPacket magic を送信 */
 	ER	receiveSOP( [in]bool_t b_client );  /* StartOfPacket magic を受信 */
-						 /* b_client: クライアント側なら true, サーバー側なら false */
-
-	/* マジックコードの送受信 */
-	//	ER	sendSHSOP( [in]bool_t b_client );     /* StartOfPacket magic を送信 */
-	//	ER	receiveSHSOP( [in]bool_t b_client );  /* StartOfPacket magic を受信 */
 						 /* b_client: クライアント側なら true, サーバー側なら false */
 
@@ -150,5 +145,5 @@
 };
 
-// Straight Order TECS Data Representation (Straight means no endian-conversion is done)
+// Straight Byte Order TECS Data Representation (Data are always sent in native endian)
 celltype tTDR {
 	call	sChannel	cChannel;
Index: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/sChannel.cdl
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/sChannel.cdl	(revision 321)
+++ EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/sChannel.cdl	(revision 429)
@@ -58,2 +58,10 @@
 };
 
+/*
+ * size に uint16_t ではなく int16_t を用いるのは、下位層が ER_INT を返す場合を想定したもの．
+ *
+ * sChannel は TECS RPC の TDR の下位層である通信チャンネルとのインタフェースである．
+ * 通信チャンネルは、高水準 I/O のように、バッファリングされることを想定する．
+ * TDR からは、int8_t, int16_t, int32_t, int64_t, (int128_t), float32_t, double64_t bool_t, char_t のような基本型(無符号を含む)が渡される。
+ * 配列や構造体の場合であっても要素ごとに渡される。
+ */
Index: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tMessageBufferCEP.cdl
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tMessageBufferCEP.cdl	(revision 429)
+++ EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tMessageBufferCEP.cdl	(revision 429)
@@ -0,0 +1,67 @@
+/*
+ *  TECS Generator
+ *      Generator for TOPPERS Embedded Component System
+ *  
+ *   Copyright (C) 2008-2013 by TOPPERS Project
+ *--
+ *   上記著作権者は，以下の(1)(4)の条件を満たす場合に限り，本ソフトウェ
+ *   ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *   変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *   (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *       権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *       スコード中に含まれていること．
+ *   (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *       用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *       者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *       の無保証規定を掲載すること．
+ *   (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *       用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *       と．
+ *     (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *         作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *     (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *         報告すること．
+ *   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *       害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *       また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *       由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *       免責すること．
+ *  
+ *   本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *   よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *   に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *   アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *   の責任を負わない．
+ *  
+ *   $Id$
+ */
+
+const uint16_t DEFAULT_MESSAGE_BUFFER_SIZE = 64;
+
+celltype tMessageBufferCEP {
+    [inline]
+        entry sChannel eChannel;
+    call  sMessageBuffer cMessageBuffer0;   /* Client(send) --> Server(receive) */
+    call  sMessageBuffer cMessageBuffer1;   /* Server(send) --> Client(receive) */
+
+    attr {
+        uint16_t  buf_size = DEFAULT_MESSAGE_BUFFER_SIZE;
+        /* この値は maxMessageSize に合わせる。小さいと、バッファオーバーランになる */
+    };
+    var {
+        /*
+         * OpaqueMarshalerPlugin の生成するマーシャラは、受信したいサイズ以上の領域を確保しない．
+         * 一方、tMessageBuffer は、最大 maxMessageSize 読み出しうる．
+         * 受信する側は、必ず maxMessageSize を用意しておく必要がある．
+         * このため、いったんバッファへ受け取ってコピーする必要がある．
+         */
+        [size_is(buf_size)]
+            int8_t *read_buf;
+        uint16_t   read_count;
+        uint16_t   n_read_buf_filled;
+
+        [size_is(buf_size)]
+            int8_t *write_buf;
+        uint16_t   write_count;
+    };
+};
Index: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tMessageBufferCEP_inline.h
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tMessageBufferCEP_inline.h	(revision 429)
+++ EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tMessageBufferCEP_inline.h	(revision 429)
@@ -0,0 +1,203 @@
+#ifndef tMessageBufferCEP__INLINE_H
+#define tMessageBufferCEP__INLINE_H
+
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * 呼び口関数 #_TCPF_#
+ * call port: cMessageBuffer0 signature: sMessageBuffer context:task
+ *   ER             cMessageBuffer0_send( const uint8_t* message, uint32_t size );
+ *   ER             cMessageBuffer0_sendPolling( const uint8_t* message, uint32_t size );
+ *   ER             cMessageBuffer0_sendTimeout( const uint8_t* message, uint32_t size, TMO timeout );
+ *   ER_UINT        cMessageBuffer0_receive( uint8_t* message );
+ *   ER_UINT        cMessageBuffer0_receivePolling( uint8_t* message );
+ *   ER_UINT        cMessageBuffer0_receiveTimeout( uint8_t* message, TMO timeout );
+ *   ER             cMessageBuffer0_initialize( );
+ *   ER             cMessageBuffer0_refer( T_RMBF* pk_messageBufferStatus );
+ * call port: cMessageBuffer1 signature: sMessageBuffer context:task
+ *   ER             cMessageBuffer1_send( const uint8_t* message, uint32_t size );
+ *   ER             cMessageBuffer1_sendPolling( const uint8_t* message, uint32_t size );
+ *   ER             cMessageBuffer1_sendTimeout( const uint8_t* message, uint32_t size, TMO timeout );
+ *   ER_UINT        cMessageBuffer1_receive( uint8_t* message );
+ *   ER_UINT        cMessageBuffer1_receivePolling( uint8_t* message );
+ *   ER_UINT        cMessageBuffer1_receiveTimeout( uint8_t* message, TMO timeout );
+ *   ER             cMessageBuffer1_initialize( );
+ *   ER             cMessageBuffer1_refer( T_RMBF* pk_messageBufferStatus );
+ *
+ * #[</PREAMBLE>]# */
+
+/* 受け口関数 #_TEPF_# */
+/* #[<ENTRY_PORT>]# eChannel
+ * entry port: eChannel
+ * signature:  sChannel
+2 * context:    task
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eChannel_send
+ * name:         eChannel_send
+ * global_name:  tMessageBufferCEP_eChannel_send
+ * oneway:       false
+ * #[</ENTRY_FUNC>]# */
+Inline ER
+eChannel_send(CELLIDX idx, const int8_t* buf, int16_t size, TMO tmo)
+{
+	ER		ercd = E_OK;
+  int16_t write_count;
+    CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
+
+	/* ここに処理本体を記述します #_TEFB_# */
+  if( size < 0 )
+      return E_PAR;
+  else if( size == 0 )
+      return E_OK;
+
+  write_count = 0;
+  while( write_count < size ){
+      VAR_write_buf[ VAR_write_count++ ] = buf[ write_count++ ];
+      if( VAR_write_count >= ATTR_buf_size ){
+          ercd = eChannel_flush( idx, tmo);
+          if( ercd != E_OK ){
+              break;
+          }
+      }
+  }
+
+  // syslog( LOG_INFO, "eChannel_send ercd=%d", ercd );
+	return(ercd);
+}
+
+/* #[<ENTRY_FUNC>]# eChannel_flush
+ * name:         eChannel_flush
+ * global_name:  tMessageBufferCEP_eChannel_flush
+ * oneway:       false
+ * #[</ENTRY_FUNC>]# */
+Inline ER
+eChannel_flush(CELLIDX idx, TMO tmo)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
+
+	/* ここに処理本体を記述します #_TEFB_# */
+  /* flush しなくても、いつも送られる */
+  if( VAR_write_count > 0 ){
+      ercd = cMessageBuffer0_sendTimeout( (const uint8_t *)VAR_write_buf, VAR_write_count, tmo );
+  }
+  // syslog( LOG_INFO, "eChannel_flush ercd=%d count=%d", ercd, VAR_write_count );
+  VAR_write_count = 0;
+	return(ercd);
+}
+
+/* #[<ENTRY_FUNC>]# eChannel_receive
+ * name:         eChannel_receive
+ * global_name:  tMessageBufferCEP_eChannel_receive
+ * oneway:       false
+ * #[</ENTRY_FUNC>]# */
+Inline ER_UINT
+eChannel_receive(CELLIDX idx, int8_t* buf, int16_t size, TMO tmo)
+{
+	ER		   ercd = E_OK;
+	CELLCB	 *p_cellcb;
+  int16_t  count = 0;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
+
+	/* ここに処理本体を記述します #_TEFB_# */
+  if( size == 0 )
+      return 0;
+
+  while( count < size ){
+      if( VAR_n_read_buf_filled == 0 ){
+          ercd = cMessageBuffer1_receiveTimeout( (uint8_t *)VAR_read_buf, tmo );
+          if( ercd < 0  )
+              break;
+          VAR_n_read_buf_filled = ercd;
+      }
+      while( count < size && VAR_read_count < VAR_n_read_buf_filled ){
+          buf[ count ] = VAR_read_buf[ VAR_read_count ];
+          count++;
+          VAR_read_count++;
+      }
+      if( VAR_read_count >= VAR_n_read_buf_filled ){
+          VAR_n_read_buf_filled = 0;
+          VAR_read_count = 0;
+      }
+      ercd = count;
+  }
+  // syslog( LOG_INFO, "eChannel_receive ercd=%d", ercd );
+
+	return(ercd);
+}
+
+/* #[<ENTRY_FUNC>]# eChannel_end_receive
+ * name:         eChannel_end_receive
+ * global_name:  tMessageBufferCEP_eChannel_end_receive
+ * oneway:       false
+ * #[</ENTRY_FUNC>]# */
+Inline ER
+eChannel_end_receive(CELLIDX idx)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
+
+	/* ここに処理本体を記述します #_TEFB_# */
+
+	return(ercd);
+}
+
+/* #[<ENTRY_FUNC>]# eChannel_reset
+ * name:         eChannel_reset
+ * global_name:  tMessageBufferCEP_eChannel_reset
+ * oneway:       false
+ * #[</ENTRY_FUNC>]# */
+Inline ER
+eChannel_reset(CELLIDX idx)
+{
+  ER		ercd0 = E_OK, ercd1 = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
+
+	/* ここに処理本体を記述します #_TEFB_# */
+  ercd0 = cMessageBuffer0_initialize( );
+  ercd1 = cMessageBuffer1_initialize( );
+
+	return(ercd1 != E_OK ? ercd1 : ercd0);
+}
+
+/* #[<POSTAMBLE>]#
+ *   これより下に非受け口関数を書きます
+ * #[</POSTAMBLE>]#*/
+
+#endif /* tMessageBufferCEP_INLINEH */
Index: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tMessageBufferChannel.cdl
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tMessageBufferChannel.cdl	(revision 429)
+++ EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tMessageBufferChannel.cdl	(revision 429)
@@ -0,0 +1,73 @@
+/*
+ *  TECS Generator
+ *      Generator for TOPPERS Embedded Component System
+ *  
+ *   Copyright (C) 2014 by Embedded and Real-Time Systems Laboratory
+ *               Graduate School of Information Science, Nagoya Univ., JAPAN
+ *--
+ *   上記著作権者は，以下の(1)(4)の条件を満たす場合に限り，本ソフトウェ
+ *   ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *   変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *   (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *       権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *       スコード中に含まれていること．
+ *   (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *       用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *       者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *       の無保証規定を掲載すること．
+ *   (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *       用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *       と．
+ *     (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *         作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *     (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *         報告すること．
+ *   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *       害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *       また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *       由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *       免責すること．
+ *  
+ *   本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *   よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *   に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *   アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *   の責任を負わない．
+ *  
+ *   $Id$
+ */
+
+composite tMessagebufferChannel {
+    //entry sTDR       eTDR;
+    entry sEventflag eEventflag;
+    entry sSemaphore eSemaphore;
+    entry sMessageBuffer eMessageBuffer;
+
+    attr {
+        // Queue のデフォルトのサイズ
+        uint32_t	bufferSize = 256;
+    };
+
+    cell  tMessageBuffer Messagebuffer{
+        maxMessageSize = 128;
+        bufferSize = composite.bufferSize;
+    };
+    cell  tEventflag Eventflag{
+        flagPattern = 0;
+    };
+    cell tSemaphore Semaphore{
+        attribute = C_EXP("TA_NULL");
+        initialCount = 0;
+    };
+
+    //cell  tTDR TDR {
+    //	cChannel = MessagebufferAdaptor.eChannel;
+    //};
+
+    //composite.eTDR       => TDR.eTDR;
+    composite.eEventflag => Eventflag.eEventflag;
+    composite.eSemaphore => Semaphore.eSemaphore;
+    composite.eMessageBuffer => Messagebuffer.eMessageBuffer;
+
+};
+
Index: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tTDR_inline.h
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tTDR_inline.h	(revision 321)
+++ EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecs/rpc/tTDR_inline.h	(revision 429)
@@ -75,4 +75,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	syslog( LOG_INFO, "TDR: resetting channel" );
@@ -102,4 +103,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -151,4 +153,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -157,5 +160,5 @@
 #endif
 
-    if( b_client )
+  if( b_client )
 		p_sopMagic = &SOP_MAGIC2;
 	else
@@ -198,4 +201,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -234,4 +238,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -267,4 +272,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -287,4 +293,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -307,4 +314,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -327,4 +335,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -347,4 +356,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -368,4 +378,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -390,4 +401,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -412,4 +424,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -434,4 +447,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -456,4 +470,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -477,4 +492,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -497,4 +513,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -517,4 +534,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -537,4 +555,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -557,4 +576,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -578,4 +598,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -600,4 +621,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -622,4 +644,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -644,4 +667,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -666,4 +690,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -688,4 +713,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -705,11 +731,12 @@
 	ER		ercd = E_OK;
 	CELLCB	*p_cellcb;
-	uint8_t	val;
-	if (VALID_IDX(idx)) {
-		p_cellcb = GET_CELLCB(idx);
-	}
-	else {
-		return(E_ID);
-	} /* end if VALID_IDX(idx) */
+	uint8_t	val = 0;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -737,4 +764,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -757,4 +785,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -778,4 +807,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -800,4 +830,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -821,4 +852,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -863,4 +895,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -883,4 +916,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -903,4 +937,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -923,4 +958,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -944,4 +980,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -966,4 +1003,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -988,4 +1026,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -1010,4 +1049,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -1031,4 +1071,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -1051,4 +1092,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -1071,4 +1113,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -1091,4 +1134,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -1112,4 +1156,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -1134,4 +1179,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -1156,4 +1202,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -1178,4 +1225,5 @@
 		return(E_ID);
 	} /* end if VALID_IDX(idx) */
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -1199,4 +1247,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
@@ -1220,4 +1269,5 @@
 		return(E_ID);
 	}
+  (void)p_cellcb;   // to avoid unused warning
 
 	/* ここに処理本体を記述します #_TEFB_# */
