Index: EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenOpaqueMarshaler.rb
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenOpaqueMarshaler.rb	(revision 270)
+++ EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenOpaqueMarshaler.rb	(revision 321)
@@ -6,57 +6,41 @@
 #   Copyright (C) 2008-2014 by TOPPERS Project
 #--
-#   ä¸è¨èä½æ¨©è
-ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
-#   ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹
-#   å¤ã»åé
-å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
-#   (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
-#       æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
-#       ã¹ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
-#   (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#       ç¨ã§ããå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨
-#       è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
-#       ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#   (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#       ç¨ã§ããªãå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
-#       ã¨ï¼
-#     (a) åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
-#         ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#     (b) åé
-å¸ã®å½¢æ
-ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«
-#         å ±åãããã¨ï¼
-#   (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
-#       å®³ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ããå
-è²¬ãããã¨ï¼
-#       ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç
-#       ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ãã
-#       å
-è²¬ãããã¨ï¼
+#   上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+#   ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+#   変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+#   (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#       権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#       スコード中に含まれていること．
+#   (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#       用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#       者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#       の無保証規定を掲載すること．
+#   (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#       用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#       と．
+#     (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#         作権表示，この利用条件および下記の無保証規定を掲載すること．
+#     (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#         報告すること．
+#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#       害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+#       また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+#       由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+#       免責すること．
 #  
-#   æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
-ã
-#   ãã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç
-#   ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§
-#   ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã
-#   ã®è²¬ä»»ãè² ããªãï¼
+#   本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#   よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+#   に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+#   アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+#   の責任を負わない．
 #  
-#   $Id: GenOpaqueMarshaler.rb 1011 2016-07-11 02:20:01Z coas-nagasima $
+#   $Id$
 #++
 
 #== GenOpaqueMarshaler
-# OpaqueRPCPlugin, sharedOpaqueRPCPlugin å
-±éã®è¦ç´ ãéããã¢ã¸ã¥ã¼ã«
+# OpaqueRPCPlugin, sharedOpaqueRPCPlugin 共通の要素を集めたモジュール
 module GenOpaqueMarshaler
 
-  # ãã©ã°ã¤ã³å¼æ°åã¨ Proc
+  # プラグイン引数名と Proc
   RPCPluginArgProc = {
     "clientChannelCelltype" => Proc.new { |obj,rhs| obj.set_clientChannelCelltype rhs },
@@ -79,12 +63,12 @@
   }
 
-  ##### ãã©ã°ã¤ã³å¼æ°ãã§ãã¯é¢æ°
-
-  #=== ãã©ã°ã¤ã³å¼æ° taskPriority ã®ãã§ãã¯
+  ##### プラグイン引数チェック関数
+
+  #=== プラグイン引数 taskPriority のチェック
   def set_taskPriority( rhs )
     @taskPriority = rhs
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° serverChannelCelltype ã®ãã§ãã¯
+  #=== プラグイン引数 serverChannelCelltype のチェック
   def set_serverChannelCelltype( rhs )
     @serverChannelCelltype = rhs.to_sym
@@ -98,5 +82,5 @@
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° clientChannelCelltype ã®ãã§ãã¯
+  #=== プラグイン引数 clientChannelCelltype のチェック
   def set_clientChannelCelltype( rhs )
     @clientChannelCelltype = rhs.to_sym
@@ -110,8 +94,8 @@
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° serverChannelCell ã®ãã§ãã¯
+  #=== プラグイン引数 serverChannelCell のチェック
   def set_serverChannelCell( rhs )
     @serverChannelCell = rhs.to_sym
-    # ChannelCell ã¯ãã©ã°ã¤ã³ã§çæããããããããã§ã¯ãã§ãã¯ã§ããªã
+    # ChannelCell はプラグインで生成されるため、ここではチェックできない
     # path = [ "::", @serverChannelCell ]
     # obj = Namespace.find( path )
@@ -121,8 +105,8 @@
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° clientChannelCell ã®ãã§ãã¯
+  #=== プラグイン引数 clientChannelCell のチェック
   def set_clientChannelCell( rhs )
     @clientChannelCell = rhs.to_sym
-    # ChannelCell ã¯ãã©ã°ã¤ã³ã§çæããããããããã§ã¯ãã§ãã¯ã§ããªã
+    # ChannelCell はプラグインで生成されるため、ここではチェックできない
     # path = [ "::", @clientChannelCell ]
     # obj = Namespace.find( path )
@@ -132,15 +116,15 @@
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° serverChannelInitializer ã®ãã§ãã¯
+  #=== プラグイン引数 serverChannelInitializer のチェック
   def set_serverChannelInitializer( rhs )
     @serverChannelInitializer = rhs.to_sym
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° clientChannelInitializer ã®ãã§ãã¯
+  #=== プラグイン引数 clientChannelInitializer のチェック
   def set_clientChannelInitializer( rhs )
     @clientChannelInitializer = rhs.to_sym
   end
 
-  #=== ã¿ã¹ã¯ã¿ã¤ã taskCellype ã®ãã§ãã¯
+  #=== タスクタイプ taskCellype のチェック
   def set_taskCelltype( rhs )
     @taskCelltype = rhs.to_sym
@@ -154,15 +138,15 @@
   end
 
-  #=== ã¿ã¹ã¯ã¿ã¤ã stack\size ã®ãã§ãã¯
+  #=== タスクタイプ stack\size のチェック
   def set_stackSize( rhs )
     @stackSize = rhs
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° PPAllocatorSize ã®ãã§ãã¯
+  #=== プラグイン引数 PPAllocatorSize のチェック
   def set_PPAllocatorSize( rhs )
     @PPAllocatorSize = rhs
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° TDRCelltype ã®ãã§ãã¯
+  #=== プラグイン引数 TDRCelltype のチェック
   def set_TDRCelltype( rhs )
     @TDRCelltype = rhs.to_sym
@@ -176,13 +160,11 @@
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° substituteAllocator ã®ãã§ãã¯
-  # ãªãã·ã§ã³å¼æ°ããä»¥ä¸ã®å½¢å¼ã§ãããã¨ããã§ãã¯
+  #=== プラグイン引数 substituteAllocator のチェック
+  # オプション引数が、以下の形式であることをチェック
   #     substituteAllocator(Alloc.eAlloc=>Subst.eAlloc,Alloc2.eAlloc=>Subst2.eAlloc)
   def set_substituteAllocator( rhs )
-    #str::String : ç ´å£ãããï¼ãããããæ®ãã«ãªãï¼ãstr.empty? ã§ç©ºã«ãªã£ããã¨ããã§ãã¯ã§ãã
-    #regexp::Regexp : æå¾
-ãããã¼ã¯ã³ã«ãããããæ­£è¦è¡¨ç¾ã "\A" åºå§ãã
-    #expected::String: æå¾
-ãããã¼ã¯ã³ãregexp ãåºç¾ããªãã£ãå ´åã«ã¨ã©ã¼ã¡ãã»ã¼ã¸ã¨ãã¦è¡¨ç¤º
+    #str::String : 破壊される（マッチした残りになる）。str.empty? で空になったことをチェックできる
+    #regexp::Regexp : 期待するトークンにマッチする正規表現。 "\A" 出始める
+    #expected::String: 期待するトークン、regexp が出現しなかった場合にエラーメッセージとして表示
     def optparse (str,regexp,expected)
       str.strip!
@@ -198,5 +180,5 @@
     ident_rexpr = /\A(\w[\w\d]*)/
 
-    # "Alloc.eAlloc=>CAlloc.eAlloc" ã®å½¢å¼ã«ãªã£ã¦ãããã¨ããã§ãã¯
+    # "Alloc.eAlloc=>CAlloc.eAlloc" の形式になっていることをチェック
     while true
       lhs_alloc_cell = optparse( opt, ident_rexpr, "allocator cell name" )
@@ -221,6 +203,5 @@
       break if ! rhs_alloc_ent
 
-#  ããã§ã¯ãå³è¾ºã®ãã§ãã¯ã¯ã§ããªããå³è¾ºã®ã»ã«ã¯åæ¹åç
-§ã¨ãªã
+#  ここでは、右辺のチェックはできない。右辺のセルは前方参照となる
 #      path = [ "::", rhs_alloc_cell.to_sym ]   # mikan namespace
 #      obj = Namespace.find( path )
@@ -229,5 +210,5 @@
 #      else
 #        ct = obj.get_celltype
-#        if ct #  nil ãªãæ¢ã«ã¨ã©ã¼
+#        if ct #  nil なら既にエラー
 #          ent = ct.find rhs_alloc_ent
 #          if ! ent.instance_of? Port || ent.get_port_type != :ENTRY || ent.get_signature == nil || ! ent.get_signature.is_allocator?
@@ -250,5 +231,5 @@
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° noServerChannelOpenerCode ã®ãã§ãã¯
+  #=== プラグイン引数 noServerChannelOpenerCode のチェック
   def set_noServerChannelOpenerCode( rhs )
     rhs = rhs.to_sym
@@ -262,5 +243,5 @@
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° clientSemaphoreCelltype ã®ãã§ãã¯
+  #=== プラグイン引数 clientSemaphoreCelltype のチェック
   def set_clientSemaphoreCelltype rhs
     @semaphoreCelltype = rhs.to_sym
@@ -272,15 +253,15 @@
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° clientSemaphoreInitializer ã®ãã§ãã¯
+  #=== プラグイン引数 clientSemaphoreInitializer のチェック
   def set_clientSemaphoreInitializer rhs
     @semaphoreInitializer = rhs.to_sym
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° clientErrorHandler ã®ãã§ãã¯
+  #=== プラグイン引数 clientErrorHandler のチェック
   def set_clientErrorHandler rhs
     @clientErrorHandler = rhs.to_sym
   end
 
-  #=== ãã©ã°ã¤ã³å¼æ° serverErrorHandler ã®ãã§ãã¯
+  #=== プラグイン引数 serverErrorHandler のチェック
   def set_serverErrorHandler rhs
     @serverErrorHandler = rhs.to_sym
@@ -288,6 +269,6 @@
 
 
-  #===  ã»ã«ã®ååãå¾ã
-  # ThroughPlugin::get_cell_name plugin.rb ããªã¼ãã¼ã©ã¤ã
+  #===  セルの名前を得る
+  # ThroughPlugin::get_cell_name plugin.rb をオーバーライド
   def get_cell_name
     @cell_name
@@ -295,8 +276,8 @@
   end
 
-  #=== marshaler ã®ã»ã«ã¿ã¤ãåãè¨­å®ãã
+  #=== marshaler のセルタイプ名を設定する
   def initialize_opaque_marshaler
 
-    # ãªãã·ã§ã³è¨­å®ãããå¤æ°ã®ããã©ã«ããè¨­å®
+    # オプション設定される変数のデフォルトを設定
     @taskPriority = 11
     @stackSize  = 4096
@@ -309,5 +290,5 @@
     @taskCelltype = :"tTask"
     @PPAllocatorSize = nil
-    # @TDRCelltype  = :"tTDR"   # "tNBOTDR" ã«å¤æ´ã®äºå®
+    # @TDRCelltype  = :"tTDR"   # "tNBOTDR" に変更の予定
     @TDRCelltype  = :"tNBOTDR"
     @substituteAllocator = {}
@@ -324,5 +305,5 @@
     @marshaler_celltype_file_name = "#{$gen}/#{@marshaler_celltype_name}.cdl"
 
-    # signature ã§å¯¾å¿ã§ããªããã®ããã§ãã¯
+    # signature で対応できないものをチェック
     @signature.each_param{ |func_decl, param_decl|
       if param_decl.get_direction == :OUT then
@@ -337,8 +318,8 @@
   end
 
-  #=== GenOpaqueMarshaler# Opener Code ã®çææã®ãã§ãã¯
+  #=== GenOpaqueMarshaler# Opener Code の生成時のチェック
   def check_opener_code
-    # ãµã¼ãã¼ãã£ã³ãã«ã»ã«ã¿ã¤ãã entry sServerChannelOpener eOpener ãæã¤ãã©ããããã§ãã¯
-    # mikan entry ã (call ã§ãªãã) ããã§ãã¯ãã¦ããªã
+    # サーバーチャンネルセルタイプが entry sServerChannelOpener eOpener を持つかどうかをチェック
+    # mikan entry か (call でないか) をチェックしていない
     # scct = Namespace.find ["::", @serverChannelCelltype] # mikan namespace
     nsp = NamespacePath.analyze( @serverChannelCelltype.to_s )
@@ -360,6 +341,5 @@
   end
 
-  #=== GenOpaqueMarshaler# PPAllocator ã®å¿
-è¦æ§ããã§ãã¯ãã
+  #=== GenOpaqueMarshaler# PPAllocator の必要性をチェックする
   def check_PPAllocator
     if @signature.need_PPAllocator?(true) then
@@ -374,6 +354,5 @@
   def gen_marshaler_celltype
     f = CFile.open( @marshaler_celltype_file_name, "w" )
-    # åãå
-å®¹ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯)
+    # 同じ内容を二度書く可能性あり (AppFile は不可)
 
     if @PPAllocatorSize then
@@ -404,9 +383,9 @@
   end
 
-  #===  åãå£é¢æ°ã®æ¬ä½ã³ã¼ããçæï¼é ­é¨ã¨æ«å°¾ã¯å¥éåºåï¼
-  #ct_name:: Symbol    (through ãã©ã°ã¤ã³ã§çæããã) ã»ã«ã¿ã¤ãå ï¼Symbol ã¨ãã¦éããã¦ããï¼ãããï¼
+  #===  受け口関数の本体コードを生成（頭部と末尾は別途出力）
+  #ct_name:: Symbol    (through プラグインで生成された) セルタイプ名 ．Symbol として送られてくる（らしい）
   def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
 
-    # unmarshaler ã¯ã©ã¹ã?
+    # unmarshaler クラスか?
     if ct_name == @unmarshaler_celltype_name.to_sym then
       gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
@@ -416,5 +395,5 @@
   end
 
-  #===  marshal ã³ã¼ãã®çæ
+  #===  marshal コードの生成
   def gen_ep_func_body_marshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
 
@@ -422,9 +401,8 @@
     b_ret_er = false
 
-    # é¢æ°ã®æ»ãå¤ã®å
-ã®åãå¾ã(typedef ããã¦ããå ´å)
+    # 関数の戻り値の元の型を得る(typedef されている場合)
     type = func_type.get_type.get_original_type
 
-    # æ»ãå¤è¨æ¶ç¨ã®å¤æ°ãåºåï¼void åã®é¢æ°ã§ã¯åºåããªãï¼
+    # 戻り値記憶用の変数を出力（void 型の関数では出力しない）
     if ! type.is_void? then
       file.print( "\t#{func_type.get_type.get_type_str}\t\tretval_;\n" )
@@ -439,13 +417,13 @@
     file.print( "\tint16_t\tstate_;\n" )
 
-    # é¢æ° ID ï¼æ´æ°å¤ï¼
+    # 関数 ID （整数値）
     func_id = "FUNCID_#{@signature.get_global_name}_#{func_name}".upcase
     fid = @signature.get_id_from_func_name( func_name )
     file.print( "\tint16_t\tfunc_id_ = #{func_id};	/* (id of '#{func_name}') = #{fid}*/\n" )
 
-    # ã·ã³ã°ã«ãã³ã§ãªããï¼
+    # シングルトンでないか？
     if ! b_singleton then
 
-      # singleton ã§ãªããã° p_cellcb åå¾ã³ã¼ããåºå
+      # singleton でなければ p_cellcb 取得コードを出力
       file.print <<EOT
 	#{ct_name}_CB *p_cellcb;
@@ -455,5 +433,5 @@
 EOT
 
-      # ã¨ã©ã¼ãè¿ããï¼
+      # エラーを返すか？
       if b_ret_er then
         file.print <<EOT
@@ -465,5 +443,5 @@
         file.print <<EOT
 	}else{
-		/* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿° */
+		/* エラー処理コードをここに記述 */
 	}
 
@@ -481,5 +459,5 @@
     end
 
-    # channel lock ã³ã¼ã
+    # channel lock コード
     file.print <<EOT
 
@@ -490,12 +468,12 @@
 EOT
 
-    # SOP ãéä¿¡
-    file.print "	/* SOPã®éåº */\n"
+    # SOP を送信
+    file.print "	/* SOPの送出 */\n"
     file.print "	SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_SOP );\n"
     file.print "	if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n"
     file.print "		goto error_reset;\n"
 
-    # func_id ãéä¿¡
-    file.print "	/* é¢æ° id ã®éåº */\n"
+    # func_id を送信
+    file.print "	/* 関数 id の送出 */\n"
     file.print "	if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n"
     file.print "		goto error_reset;\n"
@@ -504,12 +482,10 @@
     # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}"
 
-    b_get = false    # marshal ãªã put
+    b_get = false    # marshal なら put
     b_marshal = true  # marshal
 
-    # in æ¹åã®å
-¥åºåãåºå
+    # in 方向の入出力を出力
     if func_type.has_inward? then
-      file.print "	/* å
-¥åå¼æ°éåº */\n"
+      file.print "	/* 入力引数送出 */\n"
       file.print "	SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_BODY );\n"
       print_params( params, file, 1, b_marshal, b_get, true, "eClientEntry", func_name )
@@ -523,10 +499,10 @@
       b_continue = "false"
     end
-    file.print "	/* EOPã®éåºï¼ãã±ããã®æãã ãï¼ */\n"
+    file.print "	/* EOPの送出（パケットの掃きだし） */\n"
     file.print "	SET_RPC_STATE( state_, RPCSTATE_CLIENT_SEND_EOP );\n"
     file.print "	if( (ercd_=cTDR_sendEOP(#{b_continue})) != E_OK )\n"
     file.print "		goto error_reset;\n\n"
 
-    # send ã®ã¡ã¢ãªããã¢ã­ã±ã¼ã
+    # send のメモリをデアロケート
     if func_type.has_send? then
       file.print "	/* dealloc send parameter while executing */\n"
@@ -539,11 +515,11 @@
     if ! func_type.is_oneway? then
 
-      file.print "	/* ãã±ããã®å§ã¾ãããã§ãã¯ */\n"
+      file.print "	/* パケットの始まりをチェック */\n"
       file.print "	SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_SOP );\n"
       file.print "	if( (ercd_=cTDR_receiveSOP( true )) != E_OK )\n"
       file.print "		goto error_reset;\n"
 
-      b_get = true     # marshaler ã¯ get
-      file.print "	/* æ»ãå¤ã®åãåã */\n"
+      b_get = true     # marshaler は get
+      file.print "	/* 戻り値の受け取り */\n"
       print_param( "retval_", func_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get )
 
@@ -557,5 +533,5 @@
         indent = "	" * indent_level
 
-        file.print "#{indent}/* åºåå¤ã®åãåã */\n"
+        file.print "#{indent}/* 出力値の受け取り */\n"
         file.print "#{indent}SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_BODY );\n"
         print_params( params, file, indent_level, b_marshal, b_get, true, "eClientEntry", func_name )
@@ -567,5 +543,5 @@
       end
 
-      file.print "\n	/* ãã±ããã®çµããããã§ãã¯ */\n"
+      file.print "\n	/* パケットの終わりをチェック */\n"
       file.print "	SET_RPC_STATE( state_, RPCSTATE_CLIENT_RECV_EOP );\n"
       file.print "	if( (ercd_=cTDR_receiveEOP(false)) != E_OK )\n"  # b_continue = false
@@ -574,5 +550,5 @@
     end # ! func_type.is_oneway?
 
-    # channel lock ã³ã¼ã
+    # channel lock コード
     file.print <<EOT
 	/* Channel Unlock */
@@ -583,6 +559,5 @@
 
     if( b_void == false )then
-      # å¼ã³å
-ã«æ»ãå¤ããªã¿ã¼ã³
+      # 呼び元に戻り値をリターン
       file.print( "	return retval_;\n" )
     else
@@ -594,5 +569,5 @@
 error_reset:
 EOT
-    # send ã®ã¡ã¢ãªããã¢ã­ã±ã¼ã
+    # send のメモリをデアロケート
     if func_type.has_send? then
       file.print "	/* dealloc send parameter */\n"
@@ -603,5 +578,5 @@
     end
 
-    # receive ã®ã¡ã¢ãªããã¢ã­ã±ã¼ã
+    # receive のメモリをデアロケート
     if func_type.has_receive? then
       file.print( "	/* receive parameter */\n" )
@@ -615,5 +590,5 @@
 EOT
 
-    # channel lock ã³ã¼ã
+    # channel lock コード
     file.print <<EOT
 	/* Channel Unlock */
@@ -626,6 +601,5 @@
 
     if( b_ret_er != false )then
-      # å¼ã³å
-ã«æ»ãå¤ããªã¿ã¼ã³
+      # 呼び元に戻り値をリターン
       file.print( "	return ERCD( E_RPC, MERCD( ercd_ ) );\n" )
     else
@@ -635,10 +609,10 @@
   end
 
-  #===  unmarshal ã³ã¼ãã®çæ
+  #===  unmarshal コードの生成
   def gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
 
     b_ret_er = true
 
-    # func_id ãå¾ãã³ã¼ããçæ
+    # func_id を得るコードを生成
     file.print <<EOT
 
@@ -662,5 +636,5 @@
         file.print <<EOT
 	}else{
-		/* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿° */
+		/* エラー処理コードをここに記述 */
 	}
 EOT
@@ -673,9 +647,9 @@
 #endif
 
-	/* SOPã®ãã§ãã¯ */
+	/* SOPのチェック */
 	SET_RPC_STATE( state_, RPCSTATE_SERVER_RECV_SOP );
 	if( (ercd_=cTDR_receiveSOP( false )) != E_OK )
 		goto error_reset;
-	/* func_id ã®åå¾ */
+	/* func_id の取得 */
 	if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK )
 		goto error_reset;
@@ -687,5 +661,5 @@
 EOT
 
-    # signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦
+    # signature に含まれる すべての関数について
     @signature.get_function_head_array.each { |f|
       f_name = f.get_name
@@ -701,5 +675,5 @@
 
     if @PPAllocatorSize then
-      ppallocator_dealloc_str = "	/* PPAllocator ã®ãã¹ã¦ãè§£æ¾ */\n	cPPAllocator_dealloc_all();"
+      ppallocator_dealloc_str = "	/* PPAllocator のすべてを解放 */\n	cPPAllocator_dealloc_all();"
     else
       ppallocator_dealloc_str = ""
@@ -724,6 +698,6 @@
   end
 
-  #=== PREAMBLE é¨ã®ã³ã¼ãçæ
-  # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãã­ãã¿ã¤ãå®£è¨ãçæ
+  #=== PREAMBLE 部のコード生成
+  # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成
   def gen_preamble file, b_singleton, ct_name, global_name
     if ct_name != @unmarshaler_celltype_name.to_sym then
@@ -731,10 +705,10 @@
     end
 
-    # string.h ã® include (memset, strlen ã®ãã)
+    # string.h の include (memset, strlen のため)
     file.print "/* header file (strlen, memset) */\n"
     file.print "#include\t<string.h>\n\n"
 
-    file.print "/* ã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãã­ãã¿ã¤ãå®£è¨ */\n"
-    # signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦
+    file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n"
+    # signature に含まれる すべての関数について
     @signature.get_function_head_array.each { |f|
       f_name = f.get_name
@@ -746,7 +720,6 @@
   end
 
-  #=== POSTAMBLE é¨ã®ã³ã¼ãçæ
-  # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãåã
-ã®ã¢ã³ãã¼ã·ã£ã©é¢æ°ã®çæ
+  #=== POSTAMBLE 部のコード生成
+  # アンマーシャラセルタイプの場合、個々のアンマーシャラ関数の生成
   def gen_postamble file, b_singleton, ct_name, global_name
     if ct_name != @unmarshaler_celltype_name.to_sym then
@@ -754,5 +727,5 @@
     end
 
-    file.print "\n/*** ã¢ã³ãã¼ã·ã£ã©é¢æ° ***/\n\n"
+    file.print "\n/*** アンマーシャラ関数 ***/\n\n"
     @signature.get_function_head_array.each { |f|
       f_name = f.get_name
@@ -760,5 +733,5 @@
       id = @signature.get_id_from_func_name( f_name )
 
-      # é¢æ°ã¯è¿ãå¤ãæã¤ã?
+      # 関数は返り値を持つか?
       b_ret_er = false
       init_retval = ""
@@ -784,5 +757,5 @@
       file.print "	ER      ercd_;\n"
 
-      # å¼æ°ãååãå¤æ°ã®å®ç¾©
+      # 引数を受取る変数の定義
       params = f.get_declarator.get_type.get_paramlist.get_items
            # FuncHead->  Decl->    FuncType->ParamList
@@ -793,5 +766,5 @@
         dir = par.get_direction
         if( dir == :RECEIVE )then
-          # type ã¯ PtrType ã§ããããåãé¤ããå
+          # type は PtrType で、それを取り除いた型
           type = type.get_type
         end
@@ -811,5 +784,5 @@
         end
 
-        type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" ãå¤ã
+        type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す
         file.printf( "	%-12s %s%s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post, init )
 
@@ -823,11 +796,8 @@
       end
 
-      # in æ¹åã®å
-¥åºåãå
-¥å
-      file.print "\n	/* å
-¥åå¼æ°åå */\n"
+      # in 方向の入出力を入力
+      file.print "\n	/* 入力引数受取 */\n"
       file.print "	SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_BODY );\n"
-      b_get = true    # unmarshal ã§ã¯ get
+      b_get = true    # unmarshal では get
       b_marshal  = false
       print_params( params, file, 1, b_marshal, b_get, true, "cServerCall", f_name )
@@ -836,6 +806,6 @@
 
 
-      # ãã±ããã®åä¿¡å®äº
-      file.print "	/* ãã±ããçµããããã§ãã¯ */\n"
+      # パケットの受信完了
+      file.print "	/* パケット終わりをチェック */\n"
       file.print "	SET_RPC_STATE( *state_, RPCSTATE_SERVER_RECV_EOP );\n"
       if ! f_type.is_oneway? then
@@ -847,10 +817,10 @@
       file.print "		goto error_reset;\n\n"
 
-      # out ã®ã¡ã¢ãªãã¢ã­ã±ã¼ã
+      # out のメモリをアロケート
       dir = :OUT; alloc_cp = "cPPAllocator_alloc"; alloc_cp_extra = nil; nest = 1
       alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra )
 
-      # å¯¾è±¡é¢æ°ãå¼åºã
-      file.print "	/* å¯¾è±¡é¢æ°ã®å¼åºã */\n"
+      # 対象関数を呼出す
+      file.print "	/* 対象関数の呼出し */\n"
       file.print "	SET_RPC_STATE( *state_, RPCSTATE_SERVER_EXEC );\n"
       if b_void then
@@ -871,11 +841,10 @@
       file.print( " );\n" )
 
-      # æ»ãå¤ãåºåå¼æ°ã®ååã³ã¼ãã®çæ
-
-      # oneway ã®å ´ååºåãæ»ãå¤ãç¡ããååãå¾
-ããªãï¼éåæãªå¼åºãï¼
+      # 戻り値、出力引数の受取コードの生成
+
+      # oneway の場合出力、戻り値が無く、受取を待たない（非同期な呼出し）
       if ! f.is_oneway? then
 
-        file.print "\n	/* SOPã®éåº */\n"
+        file.print "\n	/* SOPの送出 */\n"
         file.print "	SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_SOP );\n"
 
@@ -883,7 +852,7 @@
         file.print "		goto error_reset;\n"
 
-        b_get = false     # unmarshaler ã¯ put
+        b_get = false     # unmarshaler は put
         if( ! b_void )then
-          file.print "	/* æ»ãå¤ã®éåº */\n"
+          file.print "	/* 戻り値の送出 */\n"
           print_param( "retval_", f_type.get_type, file, 1, :RETURN, nil, nil, b_marshal, b_get )
         end
@@ -898,10 +867,10 @@
           indent = "	" * indent_level
 
-          file.print "#{indent}/* åºåå¤ã®éåº */\n"
+          file.print "#{indent}/* 出力値の送出 */\n"
           file.print "#{indent}SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_BODY );\n"
           print_params( params, file, indent_level, b_marshal, b_get, true, "cServerCall", f_name )
           print_params( params, file, indent_level, b_marshal, b_get, false, "cServerCall", f_name )
 
-          # receive ã®ã¡ã¢ãªããã¢ã­ã±ã¼ã
+          # receive のメモリをデアロケート
           if f_type.has_receive? then
             file.print "#{indent}/* dealloc receive parameter */\n"
@@ -915,5 +884,5 @@
         end
 
-        file.print "	/* ãã±ããã®çµããï¼æãã ãï¼ */\n"
+        file.print "	/* パケットの終わり（掃きだし） */\n"
         file.print "	SET_RPC_STATE( *state_, RPCSTATE_SERVER_SEND_EOP );\n"
         file.print "	if( (ercd_=cTDR_sendEOP(false)) != E_OK )\n"  # b_continue = false
@@ -926,5 +895,5 @@
 error_reset:
 EOT
-      # send ã®ãªã»ããç¨ãã¢ã­ã±ã¼ã
+      # send のリセット用デアロケート
       if f_type.has_send? then
         file.print "	/* dealloc send parameter */\n"
@@ -935,5 +904,5 @@
       end
 
-      # receive ã®ã¡ã¢ãªããã¢ã­ã±ã¼ã
+      # receive のメモリをデアロケート
       if f_type.has_receive? && b_ret_er then
         file.print "	/* dealloc receive parameter */\n"
@@ -947,7 +916,5 @@
       file.print "}\n\n"
 
-      # ããï¼åã
-ã®é¢æ°ï¼ã§ã¯ã¨ã©ã¼ãã³ãã©ã¼ã¯å¼ã³åºããªããå¼ã³å
-ï¼ãµã¼ãã¼ã®ã¡ã¤ã³é¢æ°ï¼ã§å¼ã³åºãã
+      # ここ（個々の関数）ではエラーハンドラーは呼び出さない。呼び元（サーバーのメイン関数）で呼び出す。
     }
   end
@@ -956,12 +923,9 @@
   #b_marshal:: bool
   #b_get:: bool
-  #  b_marshal = true  && b_get == false   :  ãã¼ã·ã£ã©ã§å
-¥åå¼æ°éåº
-  #  b_marshal = true  && b_get == true    :  ãã¼ã·ã£ã©ã§åºåå¼æ°åå
-  #  b_marshal = false && b_get == false   :  ã¢ã³ãã¼ã·ã£ã©ã§å
-¥åå¼æ°åå
-  #  b_marshal = false && b_get == true    :  ã¢ã³ãã¼ã·ã£ã©ã§åºåå¼æ°éåº
-  #b_referenced:: size_is, count_is, string ã§åç
-§ããã¦ãããã®ãåºå
+  #  b_marshal = true  && b_get == false   :  マーシャラで入力引数送出
+  #  b_marshal = true  && b_get == true    :  マーシャラで出力引数受取
+  #  b_marshal = false && b_get == false   :  アンマーシャラで入力引数受取
+  #  b_marshal = false && b_get == true    :  アンマーシャラで出力引数送出
+  #b_referenced:: size_is, count_is, string で参照されているものを出力
   def print_params( params, file, nest, b_marshal, b_get, b_referenced, port_name, func_name )
     params.each{ |param|
@@ -986,5 +950,5 @@
         case dir
         when :OUT, :INOUT
-          alloc_cp = nil        # inout ã® b_get==true&&b_marsha==true ã®ã¨ãã¢ã­ã±ã¼ã¿ã³ã¼ãã¯ä¸ç¨
+          alloc_cp = nil        # inout の b_get==true&&b_marsha==true のときアロケータコードは不用
           alloc_cp_extra = nil
           print_param( param.get_name, param.get_type, file, nest, dir, nil, nil, b_marshal, b_get, alloc_cp, alloc_cp_extra )
@@ -993,8 +957,8 @@
           alloc_cp_extra = nil
           if b_get then
-            outer = "(*"         # ãã¼ã·ã£ã©å´ã§ã¯ããã¤ã³ã¿ã (send ã¨æ¯ã¹) ä¸ã¤å¤ã
+            outer = "(*"         # マーシャラ側では、ポインタが (send と比べ) 一つ多い
             outer2 = ")"
           else
-            outer = nil          # ã¢ã³ãã¼ã·ã£ã©å´ã§ã¯ããã¤ã³ã¿ãä¸ã¤å¤ããã¦ãã
+            outer = nil          # アンマーシャラ側では、ポインタが一つ外されている
             outer2 = nil
           end
@@ -1006,5 +970,5 @@
   end
 
-  #=== ã¢ã­ã±ã¼ã¿ã³ã¼ããçæ (out ã®ã¢ã³ãã¼ã·ã£ã©ç¨)
+  #=== アロケータコードを生成 (out のアンマーシャラ用)
   def alloc_for_out_params( params, file, nest, dir, alloc_cp, alloc_cp_extra )
     params.each{ |param|
@@ -1016,5 +980,5 @@
   end
 
-  #=== ã¢ã­ã±ã¼ã¿ã³ã¼ããçæ (out ã®ã¢ã³ãã¼ã·ã£ã©ç¨åå¥ãã©ã¡ã¼ã¿ã®çæ)
+  #=== アロケータコードを生成 (out のアンマーシャラ用個別パラメータの生成)
   def alloc_for_out_param( name, type, file, nest, outer, outer2, alloc_cp, alloc_cp_extra )
     org_type = type.get_original_type
@@ -1029,5 +993,5 @@
       count = type.get_count; size = type.get_size; string = type.get_string
       if count || size || string then
-        loop_counter_type = IntType.new(16)   # mikan æ¹ã size_is, count_is ã®å¼æ°ã®åã¨ãã
+        loop_counter_type = IntType.new(16)   # mikan 方を size_is, count_is の引数の型とする
         if count then
           len = type.get_count.to_s
@@ -1042,6 +1006,5 @@
         end
 
-        # size_is ã« max æå®ãããå ´åãlength ã max ãè¶
-ãã¦ããããã§ãã¯ããã³ã¼ããçæ
+        # size_is に max 指定がある場合、length が max を超えているかチェックするコードを生成
         if org_type.get_max != nil && string == nil then
           file.print "#{indent}if( #{len} > #{type.get_max} ){\t/* GenOpaqueMarshaler max check 2 */\n"
@@ -1082,6 +1045,6 @@
   end
 
-  #=== å¼æ°ã®ä¸æ¬ãã¢ã­ã±ã¼ãã³ã¼ãã®çæ
-  # sendï¼ãã¼ã·ã£ã©ã®æå¾ãreceiveï¼ã¢ã³ãã¼ã·ã£ã©ã®æå¾ã§ä¸æ¬ãã¦å¼æ°ããã¢ã­ã±ã¼ããã
+  #=== 引数の一括デアロケートコードの生成
+  # send：マーシャラの最後、receive：アンマーシャラの最後で一括して引数をデアロケートする
   def dealloc_for_params( params, file, nest, dir, dealloc_cp, b_reset = false )
     if b_reset then
@@ -1097,5 +1060,5 @@
         aster = ""
         if dir == :RECEIVE then
-          type = type.get_type.get_original_type   # ãã¤ã³ã¿ãä¸ã¤å¤ã
+          type = type.get_type.get_original_type   # ポインタを一つ外す
           if b_reset then
             aster = "*"
@@ -1118,7 +1081,6 @@
   end
 
-  #== out ã§ nullable ãªå¼æ°ã®æ
-å ±ãæ¸¡ã
-  # out nullable ã®å ´åãin, send, receive ã®ããã«ãå¤ãæ¸¡ãç´åã§ã¯ãªããå¼åºãæã«æ¸¡ã
+  #== out で nullable な引数の情報を渡す
+  # out nullable の場合、in, send, receive のように、値を渡す直前ではなく、呼出し時に渡す
   def  print_out_nullable( params, file, nest, b_marshal );
     indent = "\t" * nest
@@ -1130,6 +1092,5 @@
         file.print "#{indent}\tgoto error_reset;\n"
       else
-        # å¼ã³å
-ã¯ alloc_for_out_param ã§ nullable ã®å¯¾å¿ãã
+        # 呼び先は alloc_for_out_param で nullable の対応する
         file.print "#{indent}if( (ercd_=cTDR_getInt8( &b_#{param.get_name}_null_)) != E_OK )\n"
         file.print "#{indent}\tgoto error_reset;\n"
