Index: /TECS-SimpleSample/tags/SimpleSample-20120707/License.txt
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/License.txt	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/License.txt	(revision 40)
@@ -0,0 +1,32 @@
+「TECS の Simple な Sample」使用条件 (TOPPERS ライセンス)
+  
+   Copyright (C) 2012 by TOPPERS Project
+
+   上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
+   ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+   変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+   (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+       権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+       スコード中に含まれていること．
+   (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+       用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+       者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+       の無保証規定を掲載すること．
+   (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+       用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+       と．
+     (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+         作権表示，この利用条件および下記の無保証規定を掲載すること．
+     (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+         報告すること．
+   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+       害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+       また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+       由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+       免責すること．
+  
+   本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+   よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+   に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+   アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+   の責任を負わない．
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/README.txt
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/README.txt	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/README.txt	(revision 40)
@@ -0,0 +1,288 @@
+TECS の Simple な Sample
+
+                                                   2012年 7月6日
+                                                   大山 博司
+
+【ライセンス】
+
+本ソフトウェアは、簡単なサンプルであり、個々のファイルにはライセンス条
+件を記載していませんが、TOPPERS ライセンスに準じます。License.txt を参
+照してください。
+
+【概要】
+
+TECS のもっとも簡単なアプリケーションサンプルです。 exerb 版の TECS ジェ
+ネレータとcygwin だけで動作させることができますので、手軽に TECS を学ぶ
+ことができます。cygwin 上では exerb 版で動作しますので、Ruby や racc の
+インストールする必要がありません。
+Linux などの POSIX 環境でも動作するはずです。この場合は、Ruby インタプ
+リタが必要となります。動作環境の項を参照してください。
+
+【サンプルプログラムの概要】
+
+4 つのプログラムの例が同梱されています。
+
+これらには、共通した tSimple, tSample というセルタイプが用いられていま
+す。これらのセルタイプは、すべての例で同じです。
+この例では Makefile の簡単さ優先して、tSimple.c, tSample.c には 4 つの
+コピーがありますが、diff を取ってみれば、同じであることがわかります。こ
+れはソフトウェア部品にまったく手を加えることなく、種々のバリエーション
+が可能になることを示しています。
+
+・SimpleSample … 直接結合版
+
+    最もシンプルで、最も入門的な例です。
+    tSimple と tSample の 2 つのセルタイプを定義しています。
+    それぞれのセルタイプに属するセル Simple から Sample へ、シグニチャ
+    sSample として定義された関数群を介して呼び出すことができます。コン
+    ポーネント図やもう少し詳しい説明が SimpleSample.cdl に記述されてい
+    ますので参照してください。
+
+    なお、タスクセルタイプ tTask は、cygwin (POSIX) 環境用に予め用意さ
+    れたものを用いています(後述の「cygwin_kernel について」を参照してく
+    ださい）。
+
+・SimpleSampleTrace … 直接結合の TracePlugin あり版
+
+    上記 SimpleSample に TracePlugin を適用した例です。
+	実行に伴って、関数の呼び出しに関するトレースが出力されます。
+    Simple と Sample の間に TracePlugin によって自動生成されたセルが挿
+    入されます。このセルにより、トレースの出力がなされます。
+
+    このディレクトリ下の SimpleSample.cdl を参照すると、TracePlugin の
+    使い方がわかります。
+
+    挿入されたセルのセルタイプは tTracePlugin_sSample という名前になり
+    ます。gen ディレクトリの下の tTracePlugin_sSample.c というファイル
+    を見ると TracePlugin により生成された sSample の関数の呼び出しのト
+    レースを出力するコードがあります。
+
+    以下の 2 つの例は、SimpleSample と言っても、だいぶ複雑になります。
+    初めて TECS に触れてみる方は、【動作環境】まで読み飛ばしていただい
+    た方がよいでしょう。
+
+・SimpleSampleTransparentRPC … Transparent RPC 版
+
+    上記 SimpleSample に RPCPlugin を適用して、Transparent RPC を実現す
+    る例です。
+
+    RPC とは、遠隔手続き呼び出し (Remote Procedure Call) のことで、呼び
+    元のセルと呼び先のセルが、異なるタスク上で動作します。TECS には
+    Transparent RPC と Opaque RPC の2種類がありますが、Transparent RPC
+    は、同じ RTOS 上の別のタスクで、それぞれのセルを動作させるのに向い
+    ています。
+
+    この例では Simple と Sample は異なるタスクで動作します。Sample が動
+    作するタスクのセルは cdl 上に現れていません。RPCPlugin により自動で
+    生成されます。RPCPlugin は、その他にも tDataqueue を使用する通信チャ
+    ンネルや、マーシャラ、アンマーシャラも自動生成してくれます。
+
+    マーシャラ、アンマーシャラは、タスク間の通信用のパケットの生成と分
+    解を行うもので、RPCPlugin は、それらのセルタイプとセルの両方を生成
+    します。マーシャラ、アンマーシャラのセルタイプは、対象となるシグニ
+    チャごとに相違するため、いわばオーダーメードの通信プログラムになり
+    ます。RPCPlugin は C 言語のプログラムも含めて生成します。
+
+    Transparent RPC は、メモリ対称なマルチプロセッサ間での通信に応用で
+    きます (しかし、現時点で TOPPERS/FMP に適用するサンプルは、ありませ
+    ん。近い将来実現されるでしょう)。
+
+    なお Transparet (透明) と Opaque (不透明) の違いは、メモリ透過性が
+    あるかどうかです。Transparent RPC ではメモリ透過性があり、ポインタ
+    を渡せば、渡された側はポインタを通して本来の引数にアクセスすること
+    ができます。一方、Opaque RPC ではメモリ透過性がなく、ポインタを渡さ
+    れても、本来の引数にアクセスすることができません。Opaque RPC では、
+    ポインタの指している先の本来の引数を渡す必要があります。その分
+    Opaque RPC のマーシャラ、アンマーシャラは複雑になります。
+
+・SimpleSampleOpaqueRPC … Opaque RPC 版
+
+    上記 SimpleSample に OpaqueRPCPlugin を適用して、Opaque RPC を実現
+    します。
+
+    SimpleSampleOpaqueRPC の cdl を見ると、上記の 3 つの例に比べて、少
+    し雰囲気が異なっていることが分かります。
+
+    まず、コンポーネント図上で TaskMain が加えられているのが相違します。
+    これは、呼び元の側で通信チャンネルをオープンするために追加されてい
+    ます。
+
+    cdl の内容としては、Simple と Sample が異なるリージョン (region) に
+    属している点が、これまでと大きく異なります。region はセルの配置を制
+    御するのに用いられます。と同時に、セルの名前衝突の回避にも用いられ
+    ます。
+
+    region rSimple と rSample は、独立したリンク単位 (linkunit) である
+    と指定されています。実際にこのサンプルをビルドすると、2 つの exe が
+    生成されます。2 つのセル Simple と Sample は、それぞれの exe に分か
+    れて動作します。
+
+    この例では、tSocket を使って 2 つのセル間 (つまりは exe 間) をつな
+    ぎます。OpaqueRPCPlugin は、コンポーネント図上に現れていない要素を、
+    すべて生成します。基本的には Transparent RPC の場合と同じですが、ポ
+    インタをそのまま渡すことができないため、マーシャラやアンマーシャラ
+    も異なるものになります。
+
+    この事例では、TECS RPC のエラー回復モデルを組み込んでいません。エラー
+    回復モデルは、実行の途中で通信エラーが発生した場合などに、適切な振
+    る舞いをさせるためのものです。tecsgen の test/opaqueRPC のサンプル
+    コードは、エラー回復モデルを含んでいます。
+    Opaque RPC に用いられる通信チャンネルは ethernet など、CPU やメモリ
+    などの信頼性に比べ、信頼性が劣ります。このため、実用的なアプリケー
+    ションとしては、通信途中でエラーが発生した場合、どのように対処する
+    か作りこんでおく必要があります。
+
+    この Simple Sample で利用する tecs_package にも Opaque RPC に関する
+    情報があります。これは TINET を用い skyeye 上で動作するように組み込
+    まれています。
+
+【動作環境】
+
+cygwin 上でビルドし動作します。2012.6.2 に発行された tecs_package
+(TECS ジェネレータ V1.1.0.4 を同梱) を用いてください。exerb 版を用いる
+ようになっているため、Ruby インタープリターは不要です。
+
+   exerb 版とは Ruby インタプリタと TECS ジェネレータが一体の exe 化さ
+   れたもので、Ruby インタプリタのインストールを必要としません。ただし
+   exerb 版は Windows 上でしか動作しません。
+
+以下の環境で動作確認しています。
+  ・cygwin 1.7.15 
+  ・gcc  4.5.3
+  ・Ruby  1.8.7p358
+
+Linux などの POSIX 環境でも動作させることができます。その場合 Makefile 
+の TECSGEN_EXE を tecsgen.exe から tecsgen に変更してください。Ruby
+1.8 がインストールされている必要があります。Ruby 1.9 には対応しません。
+
+【準備】
+
+1) ファイルの展開
+
+ tecs_package ディレクトリの直下 asp+tecs, tecsgen の並びに 
+ SimpleSample を置いてください。exerb 版を用いる都合上、tecsgen コマン
+ ド引数に与えるパスは、すべて相対パスで指定しています。
+
+  tecs_package-+- asp+tecs
+               |
+               +- tecsgen
+               |
+               +- SimpleSample -+- SimpleSample
+                     (※)       |
+                                +- SimpleSampleTrace
+                                |
+                                +- SimpleSampleTransparentRPC
+                                |
+                                +- SimpleSampleOpaqueRPC
+
+※ svn の trunk のディレクトリの位置に対応します。名前は変更しても構いません。
+
+2) パスの設定
+
+ cygwin コンソールを開き、以下のような方法で set_env.sh 内の PATH 等を
+ 取り込みます。
+
+  % cd tecs_package/tecsgen
+  % source set_env.sh
+
+  exerb 版を使用するため、TECS ジェネレータのビルドは不要です。
+
+【ビルドと実行】
+
+3) 直接結合版のビルドと実行
+
+・ビルド
+
+  % cd tecs_package/SimpleSample/SimpleSample
+  % make tecs
+  % make all
+
+・実行
+
+  % ./SimpleSample.exe
+
+4) 直接結合の TracePlugin あり版のビルドと実行
+
+  % cd tecs_package/SimpleSample/SimpleSampleTrace
+  % make tecs
+  % make all
+
+・実行
+
+  % ./SimpleSample.exe
+
+5) transparent RPC 版のビルドと実行
+
+・ビルド
+
+  % cd tecs_package/SimpleSample/SimpleSampleTransparentRPC
+  % make tecs
+  % make all
+
+・実行
+
+  % ./SimpleSample.exe
+
+  実行後、サーバー側のタスクが終了しないため、プロセスが終了しません。
+  ctrl-C で終了させてください。
+  わかりにくいですが、Simple と Sample は異なるタスクで実行されています。
+
+6) opaque RPC 版のビルドと実行
+
+・ビルド
+
+  % cd tecs_package/SimpleSample/SimpleSampleOpaqueRPC
+  % make tecs
+  % make all
+
+・実行
+
+ 2つの cygwin コンソールを使います。
+ 1 つ目のコンソールでサーバー側を起動します。
+
+  % ./rSample/SimpleSample-rSample.exe
+
+ 次に 2 つ目のコンソールでクライアント側を起動します。
+
+  % cd tecs_package/SimpleSample/SimpleSampleOpaqueRPC
+  % ./rSimple/SimpleSample-rSimple.exe
+
+ 終了後、サーバー側のプロセスは transparent RPC と同様終了しないため、
+ ctrl-C で終了させてください。
+ Sample(サーバー) のメッセージが Simple(クライアント) 側で出力されます
+ が、これは out 引数で返されたものを表示しているためです。
+
+【あさらい】
+
+ポイントは、各 CDL 内の tSimple, tSample の定義、セルタイプコード 
+tSimple.c, tSample.c は、まったく無変更で 4 つのパターンに対応している
+ことです。再利用が図られることがわかります。
+
+【次のステップ】
+
+うまく動いたら、次のステップとしてやってみることを記します。
+
+ ・シグニチャ sSample に関数を追加する
+
+    まずは、この手順を理解しましょう。.c にも関数を加える必要があります。
+    以下のコマンドで追加された関数のテンプレートをマージすることができ
+    ます。
+
+       % tecsmerge gen/tSample_template.c src
+
+    tSimple.c には、追加された関数を呼び出すプログラムを追加する必要が
+    あります。以下を実行しても関数を呼び出すプログラムは追加されません
+    が、冒頭のコメント部に呼び口関数が追加されます。
+
+       % tecsmerge gen/tSimple_template.c src
+
+・シグニチャと、それを受け口に持つセルタイプを定義して Sample から結合
+  してみる
+    セルタイプコード (.c) も作成する必要があります。テンプレートコード
+    (gen の下の  _templete.c) をベースにすることができます。
+
+【cygwin_kernel について】
+
+cygwin 上で pthread を用いた tTask 等のセルタイプを用意していますが、
+テストドライバーまたはスタブであり、ほとんど機能は備わっていません。
+
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/Makefile
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/Makefile	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/Makefile	(revision 40)
@@ -0,0 +1,67 @@
+# 変数 #_MVAR_#
+TARGET = SimpleSample.exe
+TIMESTAMP = tecsgen.timestamp
+ifeq ($(OS),Windows_NT)
+	TECSGEN_EXE = tecsgen.exe
+else
+	# use below if you want to use non-exerb version of tecsgen.
+	TECSGEN_EXE = tecsgen
+endif
+BASE_DIR = .
+CC = gcc
+CFLAGS = -I $(BASE_DIR)/. -I $(BASE_DIR)/src -I $(BASE_DIR)/gen -I $(BASE_DIR)/../../tecsgen/tecs/../test/cygwin -I $(BASE_DIR)/../../tecsgen/tecs -I $(GEN_DIR) -D "Inline=static inline"
+LD = gcc
+LDFLAGS = -lpthread
+GEN_DIR = $(BASE_DIR)/gen
+SRC_DIR = $(BASE_DIR)/src
+_TECS_OBJ_DIR = $(GEN_DIR)/
+#   _TECS_OBJ_DIR   # should be end with '/'
+
+vpath %.c $(SRC_DIR) $(GEN_DIR)  src gen ../../tecsgen/tecs/../test/cygwin ../../tecsgen/tecs
+vpath %.h $(SRC_DIR) $(GEN_DIR)  src gen ../../tecsgen/tecs/../test/cygwin ../../tecsgen/tecs
+
+OTHER_OBJS =                       # Add objects out of tecs care.
+# OTHER_OBJS = $(_TECS_OBJ_DIR)vasyslog.o
+
+# ルール #_MRUL_#
+allall: tecs
+	make all     # in order to include generated Makefile.tecsgen & Makefile.depend
+
+all : $(TARGET)
+
+
+# depend を include #_MDEP_#
+-include $(GEN_DIR)/Makefile.tecsgen
+-include $(GEN_DIR)/Makefile.depend
+
+$(TARGET) : $(TIMESTAMP) $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS)
+	$(LD) -o $(TARGET) $(TECSGEN_COBJS) $(CELLTYPE_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(LDFLAGS)
+clean :
+	rm -f $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(TARGET)  $(TIMESTAMP)
+	rm -rf $(GEN_DIR)
+
+tecs : $(TIMESTAMP)
+
+$(TIMESTAMP) : $(TECS_IMPORTS)
+	$(TECSGEN_EXE)  -k euc -I src -I gen -I ../../tecsgen/tecs/../test/cygwin -I ../../tecsgen/tecs SimpleSample.cdl
+	touch $(TIMESTAMP)
+
+# generic target for objs
+$(_TECS_OBJ_DIR)%.o : %.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+
+$(_TECS_OBJ_DIR)tTask.o : tTask.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tKernel.o : tKernel.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSysLog.o : tSysLog.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSample.o : tSample.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSimple.o : tSimple.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/SimpleSample.cdl
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/SimpleSample.cdl	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/SimpleSample.cdl	(revision 40)
@@ -0,0 +1,75 @@
+/*
+ * Simple な Sample
+ *
+ *  +-------------+           +-------------+          +-------------+
+ *  |             |           |             |          |             |
+ *  |   tTask     | sTaskBody |   tSimple   |  sSample |   tSample   |
+ *  |   Task      |-----------|>  Simple    |----------|>  Sample    |
+ *  |             |cTask eBody|             |cCall eEnt|             |
+ *  |             |Body       |             |          |             |
+ *  +-------------+           +-------------+          +-------------+
+ *
+ *・シグニチャ記述
+ *
+ *   sSample … 関数インタフェースの定義
+ *              慣習として接頭文字 s を付加する
+ * 
+ *    シグニチャ sSampleには 2 つの関数 sayHello と howAreYou がある。
+ *    セルタイプ tSample の提供する機能となるので、sSample という名前にした。
+ *
+ *・セルタイプ記述
+ *
+ *   tSimple … 呼び元のセルタイプ
+ *   tSample … 呼び先のセルタイプ
+ *              慣習として接頭文字 t を付加する
+ *   tTask   … cygwin 用の tTask は cygwin_kernel.cdl を import することで使用できる
+ *
+ *・組上げ記述
+ *
+ *   Simple … 呼び元のセル
+ *   Sample … 呼び先のセル
+ *   Task   … タスクセル
+ *
+ * セルタイプコード：
+ *   src/tSimple.c  … 呼び元のセルタイプコード
+ *   src/tSample.c  … 呼び先のセルタイプコード
+ *
+ */
+
+// cygwin 用の簡易な型定義
+import( <cygwin_kernel.cdl> );
+    // TECS 対応 TOPPERS/ASP ならば import( <kernel.cdl> ); に相当する
+
+// シグニチャ sSample
+signature sSample {
+	ER  sayHello( [in]int32_t times );
+	ER  howAreYou( [out,string(len)]char_t *buf, [in]int32_t len );
+};
+
+// セルタイプ tSample
+celltype tSample {
+	entry sSample eEnt;
+};
+
+// セルタイプ tSimple
+celltype tSimple {
+	call sSample cCall;
+	entry sTaskBody eBody;
+};
+
+// セル Sample
+cell tSample Sample {
+};
+
+// セル Simple
+cell tSimple Simple {
+	cCall = Sample.eEnt;
+};
+
+// セル Task
+cell tTask Task {
+	cBody = Simple.eBody;
+	priority = 11;
+	stackSize = 1024;
+	taskAttribute = C_EXP( "TA_ACT" );
+};
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/src/tSample.c
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/src/tSample.c	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/src/tSample.c	(revision 40)
@@ -0,0 +1,80 @@
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * このファイルは tecsgen によりテンプレートとして自動生成されました
+ * このファイルを編集して使用することが意図されていますが
+ * tecsgen の再実行により上書きされてしまうため、通常
+ *   gen/tSimpleServer_template.c => src/tSimpleServer.c
+ * のように名前, フォルダを変更してから修正します
+ *
+ * #[</PREAMBLE>]# */
+
+#include <stdio.h>
+#include <string.h>
+#include "tSample_tecsgen.h"
+
+#ifndef E_OK
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
+#endif
+
+
+/* 受け口関数 #_TEPF_# */
+/* #[<ENTRY_PORT>]# eEnt
+ * entry port: eEnt
+ * signature:  sSample
+ * context:    task
+ * params: 
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eEnt_sayHello
+ * name:         eEnt_sayHello
+ * global_name:  tSample_eEnt_sayHello
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
+ER
+eEnt_sayHello(CELLIDX idx, int32_t times)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	}
+
+	/* ここに処理本体を記述します */
+	printf( "Sample: " );
+	while( times-- > 0 )
+		printf( "hello " );
+	printf( "\n" );
+
+	return(ercd);
+}
+
+/* #[<ENTRY_FUNC>]# eEnt_howAreYou
+ * name:         eEnt_howAreYou
+ * global_name:  tSample_eEnt_howAreYou
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
+ER
+eEnt_howAreYou(CELLIDX idx, char_t* buf, int32_t len)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	}
+
+	/* ここに処理本体を記述します */
+	strncpy( buf, "Sample: I'm fine!", len );
+
+	return(ercd);
+}
+
+
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/src/tSimple.c
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/src/tSimple.c	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSample/src/tSimple.c	(revision 40)
@@ -0,0 +1,54 @@
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * 呼び口関数 #_TCPF_#
+ * call port : cCall  signature: sSample context: task
+ *   ER             cCall_sayHello( int32_t times );
+ *   ER             cCall_howAreYou( char_t* buf, int32_t len );
+ *
+ * #[</PREAMBLE>]# */
+
+#include <stdio.h>
+#include "tSimple_tecsgen.h"
+
+#ifndef E_OK
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
+#endif
+
+/* #[<ENTRY_PORT>]# eBody
+ * entry port: eBody
+ * signature:  sTaskBody
+ * context:    task
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eBody_main
+ * name:         eBody_main
+ * global_name:  tSimple_eBody_main
+ * oneway:       false
+ * #[</ENTRY_FUNC>]# */
+void
+eBody_main(CELLIDX idx)
+{
+	CELLCB	*p_cellcb;
+	char   buf[256];
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		/* エラー処理コードをここに記述します */
+	} /* end if VALID_IDX(idx) */
+
+#define N_HELLO 3
+	printf( "Simple: Say hello %d times.\n", N_HELLO );
+	cCall_sayHello( N_HELLO );            /* 呼び口 cCall の sayHello を呼び出す */
+
+	printf( "Simple: How are you?\n" );
+	cCall_howAreYou( buf, sizeof buf );   /* 呼び口 cCall の howAreYou を呼び出す */
+	puts( buf );
+}
+
+/* #[<POSTAMBLE>]#
+ *   これより下に非受け口関数を書きます
+ * #[</POSTAMBLE>]#*/
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/Makefile
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/Makefile	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/Makefile	(revision 40)
@@ -0,0 +1,57 @@
+# 変数 #_MVAR_#
+TARGET = SimpleSample.exe
+TIMESTAMP = tecsgen.timestamp
+ifeq ($(OS),Windows_NT)
+	TECSGEN_EXE = tecsgen.exe
+else
+	# use below if you want to use non-exerb version of tecsgen.
+	TECSGEN_EXE = tecsgen
+endif
+TECSPATHR = ../../tecsgen/tecs
+BASE_DIR = .
+CC = gcc
+INCLUDE = -I $(BASE_DIR)/. -I $(TECSPATHR) -I $(TECSPATHR)/../test/cygwin -I $(TECSPATHR)/rpc -I $(GEN_DIR)
+CFLAGS = $(INCLUDE) -I $(BASE_DIR)/src -I $(GEN_DIR) -D "Inline=static inline"
+LD = gcc
+LDFLAGS = -lpthread
+GEN_DIR = $(BASE_DIR)/gen
+SRC_DIR = $(BASE_DIR)/src
+_TECS_OBJ_DIR = $(GEN_DIR)/
+#   _TECS_OBJ_DIR   # should be end with '/'
+
+vpath %.c $(SRC_DIR) $(GEN_DIR) $(TECSPATHR) $(TECSPATHR)/rpc $(TECSPATHR)/../test/cygwin
+vpath %.h $(SRC_DIR) $(GEN_DIR) $(TECSPATHR) $(TECSPATHR)/rpc $(TECSPATHR)/../test/cygwin
+
+# OTHER_OBJS =                       # Add objects out of tecs care.
+OTHER_OBJS = $(_TECS_OBJ_DIR)vasyslog.o
+
+# ルール #_MRUL_#
+allall: tecs
+	make all     # in order to include generated Makefile.tecsgen & Makefile.depend
+
+all :  sub_regions
+
+
+# depend を include #_MDEP_#
+-include $(GEN_DIR)/Makefile.tecsgen
+
+sub_regions:$(TIMESTAMP)
+	cd rSample; make all
+	cd rSimple; make all
+
+clean :
+	cd rSample; make clean
+	cd rSimple; make clean
+	rm -f $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(TARGET)  $(TIMESTAMP)
+	rm -rf $(GEN_DIR)
+
+tecs : $(TIMESTAMP)
+
+$(TIMESTAMP) : $(TECS_IMPORTS)
+	$(TECSGEN_EXE) $(INCLUDE) -k euc -I src SimpleSample.cdl
+	touch $(TIMESTAMP)
+
+# generic target for objs
+$(_TECS_OBJ_DIR)%.o : %.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/SimpleSample.cdl
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/SimpleSample.cdl	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/SimpleSample.cdl	(revision 40)
@@ -0,0 +1,94 @@
+/*
+ * Simple な Sample (OpaqueRPC 版)
+ *                                               sSocketClientOpener
+ *                                  +---------------------------------------+
+ *                                  |cOpener                                |eOpener
+ *  +-------------+           +-------------+           +-------------+     |    +-------------+
+ *  |             |           |             |           |             |     V    |             |
+ *  |   tTask     | sTaskBody |   tTaskMain | sTaskBody |   tSimple   |  sSample |   tSample   |
+ *  |   Task      |-----------|   TaskMain  |-----------|>  Simple    |==========|>  Sample    |
+ *  |             |cTask eBody|             |cBody eBody|             |cCall eEnt|             |
+ *  |             |Body       |             |           |             |          |             |
+ *  +-------------+           +-------------+           +-------------+          +-------------+
+ *
+ *  * SimpleSample/SimpleSample.cdl を参照
+ *  * rSimple, rSample リージョンに分割し、それぞれを linkunit (リンク単位) とした
+ *  * リージョン間には、OpaqueRPCPlugin で OpaqueRPC Channel を挿入する
+ *  * TaskMain はチャンネルオープン後、 tSimple を呼び出す
+ */
+
+
+// cygwin 用の簡易な型定義
+import( <cygwin_kernel.cdl> );
+  // TECS 対応 TOPPERS/ASP ならば import( <kernel.cdl> ); でよい
+
+import( <tSysLog.cdl> );
+import( <rpc.cdl> );
+import( <tSocketChannel.cdl> );
+
+// シグニチャ sSample
+signature sSample {
+	ER  sayHello( [in]int32_t times );
+	ER  howAreYou( [out,string(len)]char_t *buf, [in]int32_t len );
+};
+
+// セルタイプ tSample
+celltype tSample {
+	entry sSample eEnt;
+};
+
+// セルタイプ tSimple
+celltype tSimple {
+	call sSample cCall;
+	entry sTaskBody eBody;
+};
+
+// セルタイプ tTaskMain (クライアント側チャンネルをオープンするために用いる)
+celltype tTaskMain {
+	entry sTaskBody eBody;
+	call  sTaskBody cBody;
+	call  sSocketClientOpener cOpener;
+};
+
+[linkunit]
+region rSample {
+	// セル SysLog
+	cell tSysLog SysLog {
+	};
+	// セル Kernel
+	cell tKernel Kernel {
+	};
+	// セル Sample
+	cell tSample Sample {
+	};
+};
+
+[linkunit,
+ to_through( rSample, OpaqueRPCPlugin,
+			 "PPAllocatorSize=1024,"
+			 "clientChannelCell= 'ClientChannel', "	// クライアント側チャンネルセル名
+			 // このオプションでは、複数結合に対応できない
+			 // 複数結合に対応するには、複数結合可能なオプション指定とするか、SharedOpaqueRPCPlugin を用いる
+			 // 複数結合可能なオプション指定例は test/opaqueRPC 下にサンプルコードがある
+)]
+region rSimple {
+	// セル SysLog
+	cell tSysLog SysLog {
+	};
+	// セル Simple
+	cell tSimple Simple {
+		cCall = rSample::Sample.eEnt;
+	};
+	// セル TaskMain
+	cell tTaskMain TaskMain {
+		cBody = Simple.eBody;
+		cOpener = ClientChannel.eOpener;
+	};
+	// セル Task
+	cell tTask Task {
+		cBody = TaskMain.eBody;                        //  TaskMain に変更 
+		priority = 11;
+		stackSize = 1024;
+		taskAttribute = C_EXP( "TA_ACT" );
+	};
+};
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/rSample/Makefile
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/rSample/Makefile	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/rSample/Makefile	(revision 40)
@@ -0,0 +1,72 @@
+# 変数 #_MVAR_#
+TARGET = SimpleSample-rSample.exe
+TIMESTAMP = tecsgen.timestamp
+ifeq ($(OS),Windows_NT)
+	TECSGEN_EXE = tecsgen.exe
+else
+	# use below if you want to use non-exerb version of tecsgen.
+	TECSGEN_EXE = tecsgen
+endif
+BASE_DIR = ..
+CC = gcc
+INCLUDE = -I $(BASE_DIR)/. -I $(TECSPATH) -I $(TECSPATH)/../test/cygwin -I $(TECSPATH)/rpc -I $(GEN_DIR)
+CFLAGS = $(INCLUDE) -I $(BASE_DIR)/src -I $(GEN_DIR) -D "Inline=static inline" -D RPC_DEBUG
+LD = gcc
+LDFLAGS = -lpthread
+GEN_DIR = $(BASE_DIR)/gen/rSample
+SRC_DIR = $(BASE_DIR)/src
+_TECS_OBJ_DIR = $(GEN_DIR)/
+#   _TECS_OBJ_DIR   # should be end with '/'
+
+vpath %.c $(SRC_DIR) $(GEN_DIR) $(TECSPATH) $(TECSPATH)/rpc $(TECSPATH)/../test/cygwin
+vpath %.h $(SRC_DIR) $(GEN_DIR) $(TECSPATH) $(TECSPATH)/rpc $(TECSPATH)/../test/cygwin
+
+OTHER_OBJS =                       # Add objects out of tecs care.
+# OTHER_OBJS = $(_TECS_OBJ_DIR)vasyslog.o
+
+# ルール #_MRUL_#
+allall: tecs
+	make all     # in order to include generated Makefile.tecsgen & Makefile.depend
+
+all : $(TARGET)
+
+
+# depend を include #_MDEP_#
+-include $(GEN_DIR)/Makefile.tecsgen
+-include $(GEN_DIR)/Makefile.depend
+
+$(TARGET) : $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS)
+	$(LD) -o $(TARGET) $(TECSGEN_COBJS) $(CELLTYPE_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(LDFLAGS)
+clean :
+	rm -f $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(TARGET) 
+
+tecs:
+	@echo "run 'make tecs' in root region"
+
+$(_TECS_OBJ_DIR)tSysLog.o : tSysLog.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tTask.o : tTask.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tKernel.o : tKernel.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tNBOTDR.o : tNBOTDR.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tRPCDedicatedTaskMainWithOpener.o : tRPCDedicatedTaskMainWithOpener.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tPPAllocator.o : tPPAllocator.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSocketServer.o : tSocketServer.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSample.o : tSample.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tOpaqueUnmarshaler_sSample.o : tOpaqueUnmarshaler_sSample.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/rSimple/Makefile
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/rSimple/Makefile	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/rSimple/Makefile	(revision 40)
@@ -0,0 +1,69 @@
+# 変数 #_MVAR_#
+TARGET = SimpleSample-rSimple.exe
+TIMESTAMP = tecsgen.timestamp
+ifeq ($(OS),Windows_NT)
+	TECSGEN_EXE = tecsgen.exe
+else
+	# use below if you want to use non-exerb version of tecsgen.
+	TECSGEN_EXE = tecsgen
+endif
+BASE_DIR = ..
+CC = gcc
+INCLUDE = -I $(BASE_DIR)/. -I $(TECSPATH) -I $(TECSPATH)/../test/cygwin -I $(TECSPATH)/rpc -I $(GEN_DIR)
+CFLAGS = $(INCLUDE) -I $(BASE_DIR)/src -I $(GEN_DIR) -D "Inline=static inline" -D RPC_DEBUG
+LD = gcc
+LDFLAGS = -lpthread
+GEN_DIR = $(BASE_DIR)/gen/rSimple
+SRC_DIR = $(BASE_DIR)/src
+_TECS_OBJ_DIR = $(GEN_DIR)/
+#   _TECS_OBJ_DIR   # should be end with '/'
+
+vpath %.c $(SRC_DIR) $(GEN_DIR) $(TECSPATH) $(TECSPATH)/rpc $(TECSPATH)/../test/cygwin
+vpath %.h $(SRC_DIR) $(GEN_DIR) $(TECSPATH) $(TECSPATH)/rpc $(TECSPATH)/../test/cygwin
+
+OTHER_OBJS =                       # Add objects out of tecs care.
+# OTHER_OBJS = $(_TECS_OBJ_DIR)vasyslog.o
+
+# ルール #_MRUL_#
+allall: tecs
+	make all     # in order to include generated Makefile.tecsgen & Makefile.depend
+
+all : $(TARGET)
+
+
+# depend を include #_MDEP_#
+-include $(GEN_DIR)/Makefile.tecsgen
+-include $(GEN_DIR)/Makefile.depend
+
+$(TARGET) : $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS)
+	$(LD) -o $(TARGET) $(TECSGEN_COBJS) $(CELLTYPE_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(LDFLAGS)
+clean :
+	rm -f $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(TARGET) 
+
+tecs:
+	@echo "run 'make tecs' in root region"
+
+$(_TECS_OBJ_DIR)tTask.o : tTask.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSemaphore.o : tSemaphore.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSysLog.o : tSysLog.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tNBOTDR.o : tNBOTDR.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSocketClient.o : tSocketClient.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSimple.o : tSimple.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tTaskMain.o : tTaskMain.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tOpaqueMarshaler_sSample.o : tOpaqueMarshaler_sSample.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tSample.c
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tSample.c	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tSample.c	(revision 40)
@@ -0,0 +1,80 @@
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * このファイルは tecsgen によりテンプレートとして自動生成されました
+ * このファイルを編集して使用することが意図されていますが
+ * tecsgen の再実行により上書きされてしまうため、通常
+ *   gen/tSimpleServer_template.c => src/tSimpleServer.c
+ * のように名前, フォルダを変更してから修正します
+ *
+ * #[</PREAMBLE>]# */
+
+#include <stdio.h>
+#include <string.h>
+#include "tSample_tecsgen.h"
+
+#ifndef E_OK
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
+#endif
+
+
+/* 受け口関数 #_TEPF_# */
+/* #[<ENTRY_PORT>]# eEnt
+ * entry port: eEnt
+ * signature:  sSample
+ * context:    task
+ * params: 
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eEnt_sayHello
+ * name:         eEnt_sayHello
+ * global_name:  tSample_eEnt_sayHello
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
+ER
+eEnt_sayHello(CELLIDX idx, int32_t times)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	}
+
+	/* ここに処理本体を記述します */
+	printf( "Sample: " );
+	while( times-- > 0 )
+		printf( "hello " );
+	printf( "\n" );
+
+	return(ercd);
+}
+
+/* #[<ENTRY_FUNC>]# eEnt_howAreYou
+ * name:         eEnt_howAreYou
+ * global_name:  tSample_eEnt_howAreYou
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
+ER
+eEnt_howAreYou(CELLIDX idx, char_t* buf, int32_t len)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	}
+
+	/* ここに処理本体を記述します */
+	strncpy( buf, "Sample: I'm fine!", len );
+
+	return(ercd);
+}
+
+
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tSimple.c
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tSimple.c	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tSimple.c	(revision 40)
@@ -0,0 +1,54 @@
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * 呼び口関数 #_TCPF_#
+ * call port : cCall  signature: sSample context: task
+ *   ER             cCall_sayHello( int32_t times );
+ *   ER             cCall_howAreYou( char_t* buf, int32_t len );
+ *
+ * #[</PREAMBLE>]# */
+
+#include <stdio.h>
+#include "tSimple_tecsgen.h"
+
+#ifndef E_OK
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
+#endif
+
+/* #[<ENTRY_PORT>]# eBody
+ * entry port: eBody
+ * signature:  sTaskBody
+ * context:    task
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eBody_main
+ * name:         eBody_main
+ * global_name:  tSimple_eBody_main
+ * oneway:       false
+ * #[</ENTRY_FUNC>]# */
+void
+eBody_main(CELLIDX idx)
+{
+	CELLCB	*p_cellcb;
+	char   buf[256];
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		/* エラー処理コードをここに記述します */
+	} /* end if VALID_IDX(idx) */
+
+#define N_HELLO 3
+	printf( "Simple: Say hello %d times.\n", N_HELLO );
+	cCall_sayHello( N_HELLO );            /* 呼び口 cCall の sayHello を呼び出す */
+
+	printf( "Simple: How are you?\n" );
+	cCall_howAreYou( buf, sizeof buf );   /* 呼び口 cCall の howAreYou を呼び出す */
+	puts( buf );
+}
+
+/* #[<POSTAMBLE>]#
+ *   これより下に非受け口関数を書きます
+ * #[</POSTAMBLE>]#*/
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tTaskMain.c
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tTaskMain.c	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tTaskMain.c	(revision 40)
@@ -0,0 +1,66 @@
+/*
+ * このファイルは tecsgen によりテンプレートとして自動生成されました
+ * このファイルを編集して使用することが意図されていますが
+ * tecsgen の再実行により上書きされてしまうため、通常
+ *   gen/tTaskMain_template.c => src/tTaskMain.c
+ * のように名前, フォルダを変更してから修正します
+ */
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * 呼び口関数 #_TCPF_#
+ * call port : cBody  signature: sTaskBody context: task
+ *   void           cBody_main( );
+ * call port : cOpener  signature: sSocketClientOpener context: task
+ *   ER             cOpener_open( const char_t* serverAddr, uint16_t portNo, TMO tmo );
+ *   ER             cOpener_simpleOpen( TMO tmo );
+ *   ER             cOpener_close( TMO tmo );
+ *
+ * #[</PREAMBLE>]# */
+
+/* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */
+#include "tTaskMain_tecsgen.h"
+
+#ifndef E_OK
+#define	E_OK	0		/* success */
+#define	E_ID	(-18)	/* illegal ID */
+#endif
+
+/* 受け口関数 #_TEPF_# */
+/* #[<ENTRY_PORT>]# eBody
+ * entry port: eBody
+ * signature:  sTaskBody
+ * context:    task
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eBody_main
+ * name:         eBody_main
+ * global_name:  tTaskMain_eBody_main
+ * oneway:       false
+ * #[</ENTRY_FUNC>]# */
+void
+eBody_main(CELLIDX idx)
+{
+	CELLCB	*p_cellcb;
+	TMO		tmo = TMO_FEVR;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		/* エラー処理コードをここに記述します */
+	} /* end if VALID_IDX(idx) */
+
+	/* ここに処理本体を記述します #_TEFB_# */
+	while( cOpener_simpleOpen( tmo ) != E_OK ){
+		puts( "open failed retry after 5 second" );
+		sleep( 5 );
+	}
+	puts( "tTaskMain: calling Simple.eBody" );
+	cBody_main();
+	cOpener_close( tmo );
+}
+
+/* #[<POSTAMBLE>]#
+ *   これより下に非受け口関数を書きます
+ * #[</POSTAMBLE>]#*/
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tecs-types.h
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tecs-types.h	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleOpaqueRPC/src/tecs-types.h	(revision 40)
@@ -0,0 +1,27 @@
+#include	<stdint.h>
+typedef long            ER;
+typedef long            ER_INT;
+
+/* typedef long		intptr_t; */
+typedef int		int_t;
+typedef unsigned char   char_t;
+
+typedef unsigned char   bool_t;
+
+typedef double          double64_t;
+typedef float           float32_t;
+
+/*
+typedef signed long   int32_t;
+typedef signed short  int16_t;
+typedef signed char   int8_t;
+
+typedef unsigned long   uint32_t;
+typedef unsigned short  uint16_t;
+typedef unsigned char   uint8_t;
+
+
+  int64_t, uint64_t, int128_t, uint128_t ga
+*/
+
+
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/Makefile
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/Makefile	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/Makefile	(revision 40)
@@ -0,0 +1,70 @@
+# 変数 #_MVAR_#
+TARGET = SimpleSample.exe
+TIMESTAMP = tecsgen.timestamp
+ifeq ($(OS),Windows_NT)
+	TECSGEN_EXE = tecsgen.exe
+else
+	# use below if you want to use non-exerb version of tecsgen.
+	TECSGEN_EXE = tecsgen
+endif
+BASE_DIR = .
+CC = gcc
+CFLAGS = -I $(BASE_DIR)/. -I $(BASE_DIR)/src -I $(BASE_DIR)/gen -I $(BASE_DIR)/../../tecsgen/tecs/../test/cygwin -I $(BASE_DIR)/../../tecsgen/tecs -I $(GEN_DIR) -D "Inline=static inline"
+LD = gcc
+LDFLAGS = -lpthread
+GEN_DIR = $(BASE_DIR)/gen
+SRC_DIR = $(BASE_DIR)/src
+_TECS_OBJ_DIR = $(GEN_DIR)/
+#   _TECS_OBJ_DIR   # should be end with '/'
+
+vpath %.c $(SRC_DIR) $(GEN_DIR)  src gen ../../tecsgen/tecs/../test/cygwin ../../tecsgen/tecs
+vpath %.h $(SRC_DIR) $(GEN_DIR)  src gen ../../tecsgen/tecs/../test/cygwin ../../tecsgen/tecs
+
+# OTHER_OBJS =                       # Add objects out of tecs care.
+OTHER_OBJS = $(_TECS_OBJ_DIR)vasyslog.o
+
+# ルール #_MRUL_#
+allall: tecs
+	make all     # in order to include generated Makefile.tecsgen & Makefile.depend
+
+all : $(TARGET)
+
+
+# depend を include #_MDEP_#
+-include $(GEN_DIR)/Makefile.tecsgen
+-include $(GEN_DIR)/Makefile.depend
+
+$(TARGET) : $(TIMESTAMP) $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS)
+	$(LD) -o $(TARGET) $(TECSGEN_COBJS) $(CELLTYPE_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(LDFLAGS)
+clean :
+	rm -f $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(TARGET)  $(TIMESTAMP)
+	rm -rf $(GEN_DIR)
+
+tecs : $(TIMESTAMP)
+
+$(TIMESTAMP) : $(TECS_IMPORTS)
+	$(TECSGEN_EXE)  -g gen -k euc -I src -I gen -I ../../tecsgen/tecs/../test/cygwin -I ../../tecsgen/tecs SimpleSample.cdl
+	touch $(TIMESTAMP)
+
+# generic target for objs
+$(_TECS_OBJ_DIR)%.o : %.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+
+$(_TECS_OBJ_DIR)tTask.o : tTask.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tKernel.o : tKernel.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSysLog.o : tSysLog.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSample.o : tSample.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSimple.o : tSimple.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tTracePlugin_sSample.o : tTracePlugin_sSample.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/SimpleSample.cdl
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/SimpleSample.cdl	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/SimpleSample.cdl	(revision 40)
@@ -0,0 +1,65 @@
+/*
+ * Simple な Sample
+ *
+ *  +-------------+           +-------------+          +-------------+
+ *  |             |           |             |          |             |
+ *  |   tTask     | sTaskBody |   tSimple   |  sSample |   tSample   |
+ *  |   Task      |-----------|>  Simple    |==========|>  Sample    |
+ *  |             |cTask eBody|             |cCall eEnt|             |
+ *  |             |Body       |             |          |             |
+ *  +-------------+           +-------------+          +-------------+
+ *
+ *  * SimpleSample/SimpleSample.cdl を参照
+ *  * この例では Trace プラグインが指定される。以下の※を参照
+ *  * Trace プラグインのため tSysLog, tKernel を用いる
+ */
+
+// cygwin 用の簡易な型定義
+import( <cygwin_kernel.cdl> );
+  // TECS 対応 TOPPERS/ASP ならば import( <kernel.cdl> ); に相当する
+
+// tSysLog の定義 (Trace の出力先)
+import( <tSysLog.cdl> );
+
+// セル SysLog (Trace の出力先)
+cell tSysLog SysLog {
+};
+// セル Kernel (Trace の時刻を得る)
+cell tKernel Kernel {
+};
+
+// シグニチャ sSample
+signature sSample {
+	ER  sayHello( [in]int32_t times );
+	ER  howAreYou( [out,string(len)]char_t *buf, [in]int32_t len );
+};
+
+// セルタイプ tSample
+celltype tSample {
+	entry sSample eEnt;
+};
+
+// セルタイプ tSimple
+celltype tSimple {
+	call sSample cCall;
+	entry sTaskBody eBody;
+};
+
+// セル Sample
+cell tSample Sample {
+};
+
+// セル Simple
+cell tSimple Simple {
+	[through(TracePlugin,"")]       //  <<< ※ この行を挿入
+		cCall = Sample.eEnt;
+};
+
+// セル Task
+cell tTask Task {
+	cBody = Simple.eBody;
+	priority = 11;
+	stackSize = 1024;
+	taskAttribute = C_EXP( "TA_ACT" );
+};
+
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/src/tSample.c
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/src/tSample.c	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/src/tSample.c	(revision 40)
@@ -0,0 +1,80 @@
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * このファイルは tecsgen によりテンプレートとして自動生成されました
+ * このファイルを編集して使用することが意図されていますが
+ * tecsgen の再実行により上書きされてしまうため、通常
+ *   gen/tSimpleServer_template.c => src/tSimpleServer.c
+ * のように名前, フォルダを変更してから修正します
+ *
+ * #[</PREAMBLE>]# */
+
+#include <stdio.h>
+#include <string.h>
+#include "tSample_tecsgen.h"
+
+#ifndef E_OK
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
+#endif
+
+
+/* 受け口関数 #_TEPF_# */
+/* #[<ENTRY_PORT>]# eEnt
+ * entry port: eEnt
+ * signature:  sSample
+ * context:    task
+ * params: 
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eEnt_sayHello
+ * name:         eEnt_sayHello
+ * global_name:  tSample_eEnt_sayHello
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
+ER
+eEnt_sayHello(CELLIDX idx, int32_t times)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	}
+
+	/* ここに処理本体を記述します */
+	printf( "Sample: " );
+	while( times-- > 0 )
+		printf( "hello " );
+	printf( "\n" );
+
+	return(ercd);
+}
+
+/* #[<ENTRY_FUNC>]# eEnt_howAreYou
+ * name:         eEnt_howAreYou
+ * global_name:  tSample_eEnt_howAreYou
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
+ER
+eEnt_howAreYou(CELLIDX idx, char_t* buf, int32_t len)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	}
+
+	/* ここに処理本体を記述します */
+	strncpy( buf, "Sample: I'm fine!", len );
+
+	return(ercd);
+}
+
+
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/src/tSimple.c
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/src/tSimple.c	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTrace/src/tSimple.c	(revision 40)
@@ -0,0 +1,54 @@
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * 呼び口関数 #_TCPF_#
+ * call port : cCall  signature: sSample context: task
+ *   ER             cCall_sayHello( int32_t times );
+ *   ER             cCall_howAreYou( char_t* buf, int32_t len );
+ *
+ * #[</PREAMBLE>]# */
+
+#include <stdio.h>
+#include "tSimple_tecsgen.h"
+
+#ifndef E_OK
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
+#endif
+
+/* #[<ENTRY_PORT>]# eBody
+ * entry port: eBody
+ * signature:  sTaskBody
+ * context:    task
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eBody_main
+ * name:         eBody_main
+ * global_name:  tSimple_eBody_main
+ * oneway:       false
+ * #[</ENTRY_FUNC>]# */
+void
+eBody_main(CELLIDX idx)
+{
+	CELLCB	*p_cellcb;
+	char   buf[256];
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		/* エラー処理コードをここに記述します */
+	} /* end if VALID_IDX(idx) */
+
+#define N_HELLO 3
+	printf( "Simple: Say hello %d times.\n", N_HELLO );
+	cCall_sayHello( N_HELLO );            /* 呼び口 cCall の sayHello を呼び出す */
+
+	printf( "Simple: How are you?\n" );
+	cCall_howAreYou( buf, sizeof buf );   /* 呼び口 cCall の howAreYou を呼び出す */
+	puts( buf );
+}
+
+/* #[<POSTAMBLE>]#
+ *   これより下に非受け口関数を書きます
+ * #[</POSTAMBLE>]#*/
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/Makefile
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/Makefile	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/Makefile	(revision 40)
@@ -0,0 +1,90 @@
+# 変数 #_MVAR_#
+TARGET = SimpleSample.exe
+TIMESTAMP = tecsgen.timestamp
+ifeq ($(OS),Windows_NT)
+	TECSGEN_EXE = tecsgen.exe
+else
+	# use below if you want to use non-exerb version of tecsgen.
+	TECSGEN_EXE = tecsgen
+endif
+TECSPATHR = ../../tecsgen/tecs
+BASE_DIR = .
+CC = gcc
+INCLUDE = -I $(BASE_DIR)/. -I $(TECSPATHR) -I $(TECSPATHR)/../test/cygwin -I $(TECSPATHR)/rpc -I $(GEN_DIR)
+CFLAGS = $(INCLUDE) -D "Inline=static inline"
+LD = gcc
+LDFLAGS = -lpthread
+GEN_DIR = $(BASE_DIR)/gen
+SRC_DIR = $(BASE_DIR)/src
+_TECS_OBJ_DIR = $(GEN_DIR)/
+#   _TECS_OBJ_DIR   # should be end with '/'
+
+vpath %.c $(SRC_DIR) $(GEN_DIR) $(TECSPATHR) $(TECSPATHR)/rpc $(TECSPATHR)/../test/cygwin
+vpath %.h $(SRC_DIR) $(GEN_DIR) $(TECSPATHR) $(TECSPATHR)/rpc $(TECSPATHR)/../test/cygwin
+
+# OTHER_OBJS =                       # Add objects out of tecs care.
+OTHER_OBJS = $(_TECS_OBJ_DIR)vasyslog.o
+
+# ルール #_MRUL_#
+allall: tecs
+	make all     # in order to include generated Makefile.tecsgen & Makefile.depend
+
+all : $(TARGET)
+
+
+# depend を include #_MDEP_#
+-include $(GEN_DIR)/Makefile.tecsgen
+-include $(GEN_DIR)/Makefile.depend
+
+$(TARGET) : $(TIMESTAMP) $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS)
+	$(LD) -o $(TARGET) $(TECSGEN_COBJS) $(CELLTYPE_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(LDFLAGS)
+clean :
+	rm -f $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(TARGET)  $(TIMESTAMP)
+	rm -rf $(GEN_DIR)
+
+tecs : $(TIMESTAMP)
+
+$(TIMESTAMP) : $(TECS_IMPORTS)
+	$(TECSGEN_EXE) $(INCLUDE) SimpleSample.cdl
+	touch $(TIMESTAMP)
+
+# generic target for objs
+$(_TECS_OBJ_DIR)%.o : %.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+
+$(_TECS_OBJ_DIR)tTask.o : tTask.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSemaphore.o : tSemaphore.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tEventflag.o : tEventflag.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tDataqueuePeer.o : tDataqueuePeer.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSysLog.o : tSysLog.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tTDR.o : tTDR.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tRPCDedicatedTaskMain.o : tRPCDedicatedTaskMain.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tDataqueueAdaptor.o : tDataqueueAdaptor.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSample.o : tSample.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSimple.o : tSimple.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tMarshaler_sSample.o : tMarshaler_sSample.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tUnmarshaler_sSample.o : tUnmarshaler_sSample.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/SimpleSample.cdl
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/SimpleSample.cdl	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/SimpleSample.cdl	(revision 40)
@@ -0,0 +1,66 @@
+/*
+ * Simple な Sample (TransparentRPC 版)
+ *
+ *  +-------------+           +-------------+          +-------------+
+ *  |             |           |             |          |             |
+ *  |   tTask     | sTaskBody |   tSimple   |  sSample |   tSample   |
+ *  |   Task      |-----------|>  Simple    |==========|>  Sample    |
+ *  |             |cTask eBody|             |cCall eEnt|             |
+ *  |             |Body       |             |          |             |
+ *  +-------------+           +-------------+          +-------------+
+ *
+ *  * SimpleSample/SimpleSample.cdl を参照
+ *  * この例では Transparent プラグインが指定される。以下の※を参照
+ *  * Tranceparent プラグインのため tSysLog, rpc, tDataqueOWChannel を import
+ */
+
+// cygwin 用の簡易な型定義
+import( <cygwin_kernel.cdl> );
+    // TECS 対応 TOPPERS/ASP ならば import( <kernel.cdl> ); に相当する
+
+// tSysLog の定義
+import( <tSysLog.cdl> );
+
+// SysLog の定義 (RPC のエラーメッセージ出力)
+cell tSysLog SysLog {
+};
+
+// RPC 関連のセルタイプの定義
+import( <rpc.cdl> );
+// Transparent RPC に用いる Dataqueue OneWay チャンネルセルタイプの定義
+import( <tDataqueueOWChannel.cdl> );
+
+// シグニチャ sSample
+signature sSample {
+	ER  sayHello( [in]int32_t times );
+	ER  howAreYou( [out,string(len)]char_t *buf, [in]int32_t len );
+};
+
+// セルタイプ tSample
+celltype tSample {
+	entry sSample eEnt;
+};
+
+// セルタイプ tSimple
+celltype tSimple {
+	call sSample cCall;
+	entry sTaskBody eBody;
+};
+
+// セル Sample
+cell tSample Sample {
+};
+
+// セル Simple
+cell tSimple Simple {
+	[through(RPCPlugin,"")]         // <<<  ※ この行を挿入
+		cCall = Sample.eEnt;
+};
+
+// セル Task
+cell tTask Task {
+	cBody = Simple.eBody;
+	priority = 11;
+	stackSize = 1024;
+	taskAttribute = C_EXP( "TA_ACT" );
+};
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/src/tSample.c
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/src/tSample.c	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/src/tSample.c	(revision 40)
@@ -0,0 +1,80 @@
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * このファイルは tecsgen によりテンプレートとして自動生成されました
+ * このファイルを編集して使用することが意図されていますが
+ * tecsgen の再実行により上書きされてしまうため、通常
+ *   gen/tSimpleServer_template.c => src/tSimpleServer.c
+ * のように名前, フォルダを変更してから修正します
+ *
+ * #[</PREAMBLE>]# */
+
+#include <stdio.h>
+#include <string.h>
+#include "tSample_tecsgen.h"
+
+#ifndef E_OK
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
+#endif
+
+
+/* 受け口関数 #_TEPF_# */
+/* #[<ENTRY_PORT>]# eEnt
+ * entry port: eEnt
+ * signature:  sSample
+ * context:    task
+ * params: 
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eEnt_sayHello
+ * name:         eEnt_sayHello
+ * global_name:  tSample_eEnt_sayHello
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
+ER
+eEnt_sayHello(CELLIDX idx, int32_t times)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	}
+
+	/* ここに処理本体を記述します */
+	printf( "Sample: " );
+	while( times-- > 0 )
+		printf( "hello " );
+	printf( "\n" );
+
+	return(ercd);
+}
+
+/* #[<ENTRY_FUNC>]# eEnt_howAreYou
+ * name:         eEnt_howAreYou
+ * global_name:  tSample_eEnt_howAreYou
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
+ER
+eEnt_howAreYou(CELLIDX idx, char_t* buf, int32_t len)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	}
+
+	/* ここに処理本体を記述します */
+	strncpy( buf, "Sample: I'm fine!", len );
+
+	return(ercd);
+}
+
+
Index: /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/src/tSimple.c
===================================================================
--- /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/src/tSimple.c	(revision 40)
+++ /TECS-SimpleSample/tags/SimpleSample-20120707/SimpleSampleTransparentRPC/src/tSimple.c	(revision 40)
@@ -0,0 +1,54 @@
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * 呼び口関数 #_TCPF_#
+ * call port : cCall  signature: sSample context: task
+ *   ER             cCall_sayHello( int32_t times );
+ *   ER             cCall_howAreYou( char_t* buf, int32_t len );
+ *
+ * #[</PREAMBLE>]# */
+
+#include <stdio.h>
+#include "tSimple_tecsgen.h"
+
+#ifndef E_OK
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
+#endif
+
+/* #[<ENTRY_PORT>]# eBody
+ * entry port: eBody
+ * signature:  sTaskBody
+ * context:    task
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eBody_main
+ * name:         eBody_main
+ * global_name:  tSimple_eBody_main
+ * oneway:       false
+ * #[</ENTRY_FUNC>]# */
+void
+eBody_main(CELLIDX idx)
+{
+	CELLCB	*p_cellcb;
+	char   buf[256];
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		/* エラー処理コードをここに記述します */
+	} /* end if VALID_IDX(idx) */
+
+#define N_HELLO 3
+	printf( "Simple: Say hello %d times.\n", N_HELLO );
+	cCall_sayHello( N_HELLO );            /* 呼び口 cCall の sayHello を呼び出す */
+
+	printf( "Simple: How are you?\n" );
+	cCall_howAreYou( buf, sizeof buf );   /* 呼び口 cCall の howAreYou を呼び出す */
+	puts( buf );
+}
+
+/* #[<POSTAMBLE>]#
+ *   これより下に非受け口関数を書きます
+ * #[</POSTAMBLE>]#*/
