Index: azure_iot_hub/trunk/asp3_dcre/cfg/GenFile.rb
===================================================================
--- azure_iot_hub/trunk/asp3_dcre/cfg/GenFile.rb	(revision 388)
+++ azure_iot_hub/trunk/asp3_dcre/cfg/GenFile.rb	(revision 389)
@@ -8,47 +8,32 @@
 #  Copyright (C) 2016 by APTJ Co., Ltd., JAPAN
 #
-#  ä¸è¨èä½æ¨©è
-ã¯ï¼ä»¥ä¸ã®(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$
@@ -56,12 +41,11 @@
 
 #
-#		ãã¡ã¤ã«ä½æã¯ã©ã¹
+#		ファイル作成クラス
 #
 
 #
-# ãã¡ã¤ã«ã«æ¸ããã¨ããå
-å®¹ãå¤æ°ã«èç©ãï¼ãã­ã°ã©ã ã®çµäºæï¼output
-# ã¡ã½ãããå¼ã°ããæï¼ã«ãã¡ã¤ã«ã«åºåããï¼æ¢ã«ãã¡ã¤ã«ãå­å¨ãï¼å·®
-# åããªãå ´åã¯åºåããªãï¼ã¿ã¤ã ã¹ã¿ã³ããæ´æ°ããªãï¼ï¼
+# ファイルに書こうとした内容を変数に蓄積し，プログラムの終了時（output
+# メソッドが呼ばれた時）にファイルに出力する．既にファイルが存在し，差
+# 分がない場合は出力しない（タイムスタンプを更新しない）．
 #
 class GenFile
@@ -75,20 +59,20 @@
   end
 
-  # ãã¡ã¤ã«ãã¼ã¿ã®æ«å°¾ã«æå­åãè¿½å ãã
+  # ファイルデータの末尾に文字列を追加する
   def append(code = "")
     @@fileDataHash[@selfFileName] << code
   end
 
-  # ãã¡ã¤ã«ãã¼ã¿ã«1è¡è¿½å ãã
+  # ファイルデータに1行追加する
   def add(code = "")
     @@fileDataHash[@selfFileName] << code << "\n"
   end
 
-  # ãã¡ã¤ã«ãã¼ã¿ã«1è¡è¿½å ãã(æ¹è¡2å)
+  # ファイルデータに1行追加する(改行2回)
   def add2(code = "")
     add(code + "\n")
   end
 
-  # ã³ã¡ã³ãããããè¿½å ãã
+  # コメントヘッダを追加する
   def comment_header(comment)
     add("/*")
@@ -99,15 +83,14 @@
   end
 
-  # ãã¡ã¤ã«ãã¼ã¿ãè¡¨ç¤ºãã
+  # ファイルデータを表示する
   def print()
     puts(@@fileDataHash[@selfFileName])
   end
 
-  # å
-¨ãã¡ã¤ã«ãåºåãã
+  # 全ファイルを出力する
   def self.output()
     @@fileDataHash.each do |fileName, fileData|
-      # æ¢ã«ãã¡ã¤ã«ãå­å¨ãï¼å·®åããªãå ´åã¯åºåããªã
-      #ï¼ã¿ã¤ã ã¹ã¿ã³ããæ´æ°ããªãï¼
+      # 既にファイルが存在し，差分がない場合は出力しない
+      #（タイムスタンプを更新しない）
       if File.exist?(fileName)
         if fileData == File.read(fileName)
Index: azure_iot_hub/trunk/asp3_dcre/cfg/MANIFEST
===================================================================
--- azure_iot_hub/trunk/asp3_dcre/cfg/MANIFEST	(revision 388)
+++ azure_iot_hub/trunk/asp3_dcre/cfg/MANIFEST	(revision 389)
Index: azure_iot_hub/trunk/asp3_dcre/cfg/SRecord.rb
===================================================================
--- azure_iot_hub/trunk/asp3_dcre/cfg/SRecord.rb	(revision 388)
+++ azure_iot_hub/trunk/asp3_dcre/cfg/SRecord.rb	(revision 389)
@@ -7,47 +7,32 @@
 #  Copyright (C) 2015 by FUJI SOFT INCORPORATED, JAPAN
 #
-#  ä¸è¨èä½æ¨©è
-ã¯ï¼ä»¥ä¸ã®(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$
@@ -55,15 +40,14 @@
 
 #
-#		Sã¬ã³ã¼ããã¡ã¤ã«å¦çã¯ã©ã¹
+#		Sレコードファイル処理クラス
 #
 
 #
-# Sã¬ã³ã¼ããã¡ã¤ã«ãå¤æ°ã«èª­ã¿è¾¼ã¿ï¼è¦æ±ãããçªå°ã®ãã¼ã¿ãè¿ãï¼
+# Sレコードファイルを変数に読み込み，要求された番地のデータを返す．
 #
-# @sRecDataã¯ï¼å
-é ­çªå°ãã­ã¼ã¨ãï¼ããããã®ãã¼ã¿ï¼ãã­ãµãã³ãå½¢å¼ï¼
-# ãå¤ã¨ãã­ãã¯ãæ ¼ç´ãããããã·ã¥ã§ããï¼é£ç¶ãããã­ãã¯ã¯ï¼1ã¤ã®ã
-# ã­ãã¯ã«ã¾ã¨ãã¦æ ¼ç´ãããã®ã¨ããï¼ããããªãã¨ï¼ãã¼ã¿ã®ååºãããµã¼
-# ããé¢åã«ãªãï¼ï¼
+# @sRecDataは，先頭番地をキーとし，そこからのデータ（ヘキサダンプ形式）
+# を値とブロックが格納されたハッシュである．連続するブロックは，1つのブ
+# ロックにまとめて格納するものとする（そうしないと，データの取出しやサー
+# チが面倒になる）．
 #
 class SRecord
@@ -74,32 +58,32 @@
       prevData = ""
       file.each do |line|
-        # ãã¼ã¿ã¬ã³ã¼ãã«ããåå²
+        # データレコードにより分岐
         case line.slice(0, 2)
         when "S1"
-          # ãã¼ã¿é·ï¼ã¢ãã¬ã¹å[2byte]+ãã§ãã¯ãµã å1byteãæ¸ç®ï¼
+          # データ長（アドレス分[2byte]+チェックサム分1byteを減算）
           length = line.slice(2, 2).hex - 2 - 1
 
-          # ã¢ãã¬ã¹ï¼4æå­=2byteï¼
+          # アドレス（4文字=2byte）
           address = line.slice(4, 4).hex
 
-          # ãã¼ã¿ï¼ãã®æç¹ã§ã¯æå­åã§åã£ã¦ããï¼
+          # データ（この時点では文字列で取っておく）
           data = line.slice(8, length * 2)
         when "S2"
-          # ãã¼ã¿é·ï¼ã¢ãã¬ã¹å[3byte]+ãã§ãã¯ãµã å1byteãæ¸ç®ï¼
+          # データ長（アドレス分[3byte]+チェックサム分1byteを減算）
           length = line.slice(2, 2).hex - 3 - 1
 
-          # ã¢ãã¬ã¹ï¼6æå­=3byteï¼
+          # アドレス（6文字=3byte）
           address = line.slice(4, 6).hex
 
-          # ãã¼ã¿ï¼ãã®æç¹ã§ã¯æå­åã§åã£ã¦ããï¼
+          # データ（この時点では文字列で取っておく）
           data = line.slice(10, length * 2)
         when "S3"
-          # ãã¼ã¿é·ï¼ã¢ãã¬ã¹å[4byte]+ãã§ãã¯ãµã å1byteãæ¸ç®ï¼
+          # データ長（アドレス分[4byte]+チェックサム分1byteを減算）
           length = line.slice(2, 2).hex - 4 - 1
 
-          # ã¢ãã¬ã¹ï¼8æå­=4byteï¼
+          # アドレス（8文字=4byte）
           address = line.slice(4, 8).hex
 
-          # ãã¼ã¿ï¼ãã®æç¹ã§ã¯æå­åã§åã£ã¦ããï¼
+          # データ（この時点では文字列で取っておく）
           data = line.slice(12, length * 2)
         else
@@ -108,5 +92,5 @@
 
         if !address.nil?
-          # ãã¼ã¿ãæ ¼ç´ãã
+          # データを格納する
           if address == prevAddress + prevData.size / 2
             prevData << data
@@ -122,5 +106,5 @@
   end
 
-  # ãã¼ã¿åå¾
+  # データ取得
   def get_data(address, size)
     endAddress = address + size
@@ -134,5 +118,5 @@
   end
 
-  # ãã¼ã¿æ¸è¾¼ã¿
+  # データ書込み
   def set_data(address, data)
     endAddress = address + data.size / 2
@@ -141,15 +125,13 @@
 
       if nEndBlock < address || endAddress < block
-        # éãªãããªã
+        # 重なりがない
       elsif address < block
-        # æ°è¦ãã¼ã¿ã®æ¹ãå
-é ­çªå°ãå°ãã
-        # ããã§ã¯ endAddress >= block ãæç«ãã¦ãã
+        # 新規データの方が先頭番地が小さい
+        # ここでは endAddress >= block が成立している
         offset = (endAddress - block) * 2
         data << blockData[offset..-1]
         @sRecData.delete(block)
       else
-        # ç»é²æ¸ã¿ãã¼ã¿ã®æ¹ãå
-é ­çªå°ãå°ãããåã
+        # 登録済みデータの方が先頭番地が小さいか同じ
         offset = (address - block) * 2
         address = block
@@ -162,5 +144,5 @@
   end
 
-  # å¤ã¨ãã¦ã®ãã¼ã¿åå¾
+  # 値としてのデータ取得
   def get_value(address, size, signed)
     targetData = get_data(address, size)
@@ -169,7 +151,7 @@
     else
       if $endianLittle
-        # ãªãã«ã¨ã³ãã£ã¢ã³ã®å ´åï¼ãã¤ããªã¼ãã¼ãéã«ãã
+        # リトルエンディアンの場合，バイトオーダーを逆にする
         reverseData = ""
-        # å¾ããã2æå­ãã¤æãåºãï¼ä¸¦ã³æ¿ãã
+        # 後ろから2文字ずつ抜き出し，並び替える
         while targetData.size > 0
           reverseData << targetData[-2, 2]
@@ -181,5 +163,5 @@
       end
 
-      # è² ã®æ°ã®å¦ç
+      # 負の数の処理
       if signed && (returnData & (1 << (size * 8 - 1))) != 0
         returnData -= (1 << (size * 8))
Index: azure_iot_hub/trunk/asp3_dcre/cfg/cfg.rb
===================================================================
--- azure_iot_hub/trunk/asp3_dcre/cfg/cfg.rb	(revision 388)
+++ azure_iot_hub/trunk/asp3_dcre/cfg/cfg.rb	(revision 389)
@@ -8,47 +8,32 @@
 #              Graduate School of Information Science, Nagoya Univ., JAPAN
 #
-#  ä¸è¨èä½æ¨©è
-ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
-#  ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹
-#  å¤ã»åé
-å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
-#  (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
-#      æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
-#      ã¹ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
-#  (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#      ç¨ã§ããå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨
-#      è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
-#      ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#  (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#      ç¨ã§ããªãå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
-#      ã¨ï¼
-#    (a) åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
-#        ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#    (b) åé
-å¸ã®å½¢æ
-ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«
-#        å ±åãããã¨ï¼
-#  (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
-#      å®³ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ããå
-è²¬ãããã¨ï¼
-#      ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç
-#      ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ãã
-#      å
-è²¬ãããã¨ï¼
-#
-#  æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
-ã
-#  ãã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç
-#  ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§
-#  ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã
-#  ã®è²¬ä»»ãè² ããªãï¼
+#  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+#  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+#  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+#  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#      スコード中に含まれていること．
+#  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#      の無保証規定を掲載すること．
+#  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#      と．
+#    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#        作権表示，この利用条件および下記の無保証規定を掲載すること．
+#    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#        報告すること．
+#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+#      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+#      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+#      免責すること．
+#
+#  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+#  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+#  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+#  の責任を負わない．
 #
 #  $Id$
@@ -68,11 +53,10 @@
 
 #
-#  å®æ°å®ç¾©
-#
-# å
-±é
+#  定数定義
+#
+# 共通
 VERSION = "1.2.2"
 
-# cfg1_outé¢ä¿
+# cfg1_out関係
 CFG1_PREFIX        = "TOPPERS_cfg_"
 CFG1_MAGIC_NUM     = "TOPPERS_magic_number"
@@ -85,19 +69,19 @@
 CFG1_OUT_TARGET_H  = "target_cfg1_out.h"
 
-# cfg2_outé¢ä¿
+# cfg2_out関係
 CFG2_OUT_DB        = "cfg2_out.db"
 
-# cfg3_outé¢ä¿
+# cfg3_out関係
 CFG3_OUT_DB        = "cfg3_out.db"
 
 #
-#  ã¨ã©ã¼çºçæç¡ãã©ã°
+#  エラー発生有無フラグ
 #
 $errorFlag = false
 
 #
-#  ã¨ã©ã¼ï¼è­¦åè¡¨ç¤ºé¢æ°
-#
-# ä¸è¬çãªã¨ã©ã¼è¡¨ç¤ºï¼å¦çãä¸­æ­ï¼
+#  エラー／警告表示関数
+#
+# 一般的なエラー表示（処理を中断）
 def error_exit(message, location = "")
   location += " " if location != ""
@@ -105,5 +89,5 @@
 end
 
-# ä¸è¬çãªã¨ã©ã¼è¡¨ç¤ºï¼å¦çãç¶ç¶ï¼
+# 一般的なエラー表示（処理を継続）
 def error(message, location = "")
   location += " " if location != ""
@@ -112,5 +96,5 @@
 end
 
-# ä¸è¬çãªè­¦åè¡¨ç¤º
+# 一般的な警告表示
 def warning(message, location = "")
   location += " " if location != ""
@@ -118,5 +102,5 @@
 end
 
-# ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®æ§æè§£ææã®ã¨ã©ã¼
+# システムコンフィギュレーションファイルの構文解析時のエラー
 $noParseError = 0
 def parse_error(cfgFile, message)
@@ -127,5 +111,5 @@
 end
 
-# ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®æ§æè§£ææã®è­¦å
+# システムコンフィギュレーションファイルの構文解析時の警告
 def parse_warning(cfgFile, message)
   warning(message, "#{cfgFile.getFileName()}:#{cfgFile.getLineNo}:")
@@ -133,12 +117,12 @@
 
 #
-#  éçAPIå¦çæã®ã¨ã©ã¼ï¼è­¦åè¡¨ç¤ºé¢æ°
-#
-# éçAPIå¦çæã®ã¨ã©ã¼ï¼è­¦åãç­ãè¨è¿°ã§ããããã«ï¼ã¡ãã»ã¼ã¸ä¸­ã®%ã¾
-# ãã¯%%ã§å§ã¾ãè¨è¿°ãä»¥ä¸ã®ããã«å±éããï¼
-#	%label â #{params[:label]}
-#	%%label â label `#{params[:label]}'
-#
-# ã¨ã©ã¼ï¼è­¦åã¡ãã»ã¼ã¸ã®å±é
+#  静的API処理時のエラー／警告表示関数
+#
+# 静的API処理時のエラー／警告を短く記述できるように，メッセージ中の%ま
+# たは%%で始まる記述を以下のように展開する．
+#	%label → #{params[:label]}
+#	%%label → label `#{params[:label]}'
+#
+# エラー／警告メッセージの展開
 def expand_message(message, params)
   result = message.dup
@@ -156,5 +140,5 @@
 end
 
-# éçAPIå¦çæã®ã¨ã©ã¼
+# 静的API処理時のエラー
 def error_api(params, message)
   error(expand_message(message, params), \
@@ -162,5 +146,5 @@
 end
 
-# éçAPIå¦çæã®è­¦å
+# 静的API処理時の警告
 def warning_api(params, message)
   warning(expand_message(message, params), \
@@ -168,15 +152,15 @@
 end
 
-# éçAPIå¦çæã®ã¨ã©ã¼ï¼ã¨ã©ã¼ã³ã¼ãä»ãï¼
+# 静的API処理時のエラー（エラーコード付き）
 def error_ercd(errorCode, params, message)
   error_api(params, "#{errorCode}: #{message}")
 end
 
-# éçAPIå¦çæã®è­¦åï¼ã¨ã©ã¼ã³ã¼ãä»ãï¼
+# 静的API処理時の警告（エラーコード付き）
 def warning_ercd(errorCode, params, message)
   warning_api(params, "#{errorCode}: #{message}")
 end
 
-# ãã©ã¡ã¼ã¿ã®ã¨ã©ã¼
+# パラメータのエラー
 def error_wrong(errorCode, params, symbol, wrong)
   error_ercd(errorCode, params, "%%#{symbol} is #{wrong} in %apiname")
@@ -193,5 +177,5 @@
 end
 
-# ãã©ã¡ã¼ã¿ä¸æ­£ã®ã¨ã©ã¼
+# パラメータ不正のエラー
 def error_illegal(errorCode, params, symbol)
   error_ercd(errorCode, params, "illegal %%#{symbol} in %apiname")
@@ -209,9 +193,9 @@
 
 #
-#  Stringã¯ã©ã¹ã®æ¡å¼µï¼äºéå¼ç¨ç¬¦ã§å²ã¾ããæå­åã®ä½æï¼å±éï¼
+#  Stringクラスの拡張（二重引用符で囲まれた文字列の作成／展開）
 #
 class String
   #
-  #  äºéå¼ç¨ç¬¦ã§å²ã¾ããæå­åã®ä½æ
+  #  二重引用符で囲まれた文字列の作成
   #
   def quote
@@ -249,5 +233,5 @@
 
   #
-  #  äºéå¼ç¨ç¬¦ã§å²ã¾ããæå­åã®å±é
+  #  二重引用符で囲まれた文字列の展開
   #
   def unquote
@@ -299,5 +283,5 @@
 
 #
-#  NumStrã¯ã©ã¹ï¼æ°å¤ã«æå­åãä»å ãããã®ï¼ã®å®ç¾©
+#  NumStrクラス（数値に文字列を付加したもの）の定義
 #
 class NumStr
@@ -307,6 +291,5 @@
   end
 
-  # æ°å¤æ
-å ±ãè¿ã
+  # 数値情報を返す
   def val
     return @val
@@ -314,6 +297,5 @@
   alias_method :to_i, :val
 
-  # æå­åæ
-å ±ãè¿ã
+  # 文字列情報を返す
   def str
     return @str
@@ -321,6 +303,5 @@
   alias_method :to_s, :str
 
-  # æ¯è¼ã¯æ°å¤æ
-å ±ã§è¡ã
+  # 比較は数値情報で行う
   def ==(other)
     @val == other
@@ -333,16 +314,15 @@
   end
 
-  # ããã·ã¥ã®ã­ã¼ã¨ãã¦ä½¿ãæã®æ¯è¼ãæ°å¤æ
-å ±ã§è¡ã
+  # ハッシュのキーとして使う時の比較も数値情報で行う
   def eql?(other)
     @val == other.val
   end
 
-  # ããã·ã¥å¤ã®å®ç¾©ãä¸æ¸ããã
+  # ハッシュ値の定義も上書きする
   def hash
     return @val.hash
   end
 
-  # æ°å¤ã¯ã©ã¹ã¨æ¼ç®ã§ããããã«ãã
+  # 数値クラスと演算できるようにする
   def coerce(other)
     if other.kind_of?(Numeric)
@@ -353,15 +333,15 @@
   end
 
-  # äºéå¼ç¨ç¬¦ã§å²ã¾ããæå­åã®ä½æ
+  # 二重引用符で囲まれた文字列の作成
   def quote
     str.quote
   end
 
-  # äºéå¼ç¨ç¬¦ã§å²ã¾ããæå­åã®å±é
+  # 二重引用符で囲まれた文字列の展開
   def unquote
     str.unquote
   end
 
-  # ppæã®è¡¨ç¤º
+  # pp時の表示
   def pretty_print(q)
     q.text("[#{@val}(=0x#{@val.to_s(16)}),")
@@ -370,5 +350,5 @@
   end
 
-  # æªå®ç¾©ã®ã¡ã½ããã¯@valã«éã
+  # 未定義のメソッドは@valに送る
   def method_missing(*method)
     @val.send(*method)
@@ -377,8 +357,8 @@
 
 #
-#  ã·ã³ãã«ãã¡ã¤ã«ã®èª­ã¿è¾¼ã¿
-#
-#  ä»¥ä¸ã®ã¡ã½ããã¯ï¼GNUã®nmãçæããã·ã³ãã«ãã¡ã¤ã«ã«å¯¾å¿ãã¦ããï¼
-#  å¥ã®ãã¼ã«ã«å¯¾å¿ããå ´åã«ã¯ï¼ãã®ã¡ã½ãããæ¸ãæããã°ããï¼
+#  シンボルファイルの読み込み
+#
+#  以下のメソッドは，GNUのnmが生成するシンボルファイルに対応している．
+#  別のツールに対応する場合には，このメソッドを書き換えればよい．
 #
 def ReadSymbolFile(symbolFileName)
@@ -391,8 +371,8 @@
   symbolAddress = {}
   symbolFile.each do |line|
-    # ã¹ãã¼ã¹åºåãã§åè§£
+    # スペース区切りで分解
     fields = line.split(/\s+/)
 
-    # 3åã«ãªã£ã¦ããªãè¡ã¯é¤å¤
+    # 3列になっていない行は除外
     if fields.size == 3
       symbolAddress[fields[2]] = fields[0].hex
@@ -404,5 +384,5 @@
 
 #
-#  å¤åå¾ã·ã³ãã«ãã°ã­ã¼ãã«å¤æ°ã¨ãã¦å®ç¾©ãã
+#  値取得シンボルをグローバル変数として定義する
 #
 def DefineSymbolValue
@@ -415,19 +395,19 @@
 
 #
-#  ã¤ã³ã¯ã«ã¼ããã¹ãããã¡ã¤ã«ãæ¢ã
+#  インクルードパスからファイルを探す
 #
 def SearchFilePath(fileName)
   if File.exist?(fileName)
-    # æå®ãããã¡ã¤ã«ãã¹ã«å­å¨ãã
+    # 指定したファイルパスに存在する
     return fileName
   elsif /^\./ =~ fileName
-    # ç¸å¯¾ãã¹ãæå®ãã¦ãã¦è¦ã¤ãããªãã£ãå ´åï¼å­å¨ããªããã®ã¨ãã
-    #ï¼æå³ããªããã¡ã¤ã«ãå¯¾è±¡ã¨ãªããã¨ãé²æ­¢ï¼
+    # 相対パスを指定していて見つからなかった場合，存在しないものとする
+    #（意図しないファイルが対象となることを防止）
     return nil
   else
-    # åã¤ã³ã¯ã«ã¼ããã¹ãããã¡ã¤ã«å­å¨ãã§ãã¯
+    # 各インクルードパスからファイル存在チェック
     $includeDirectories.each do |includeDirectory|
       path = includeDirectory + "/" + fileName
-      # è¦ã¤ãã£ããç¸å¯¾ãã¹ãè¿ã
+      # 見つかったら相対パスを返す
       if File.exist?(path)
         return path
@@ -439,5 +419,5 @@
 
 #
-#  æå®ããçæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼ãæ¤ç´¢ãã¦loadãã
+#  指定した生成スクリプト（trbファイル）を検索してloadする
 #
 def IncludeTrb(fileName)
@@ -451,10 +431,9 @@
 
 #
-#  ãã¹3ã®å¦ç
+#  パス3の処理
 #
 def Pass3
   #
-  #  ãã¹2ããå¼ãæ¸¡ãããæ
-å ±ããã¡ã¤ã«ããèª­ã¿è¾¼ã
+  #  パス2から引き渡される情報をファイルから読み込む
   #
   db = PStore.new(CFG2_OUT_DB)
@@ -472,10 +451,10 @@
 
   #
-  #  å¤åå¾ã·ã³ãã«ãã°ã­ã¼ãã«å¤æ°ã¨ãã¦å®ç¾©ãã
+  #  値取得シンボルをグローバル変数として定義する
   #
   DefineSymbolValue()
 
   #
-  #  çæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼ãå®è¡ãã
+  #  生成スクリプト（trbファイル）を実行する
   #
   $trbFileNames.each do |trbFileName|
@@ -484,6 +463,5 @@
 
   #
-  #  ãã¹4ã«å¼ãæ¸¡ãæ
-å ±ããã¡ã¤ã«ã«çæ
+  #  パス4に引き渡す情報をファイルに生成
   #
   if $omitOutputDb.nil?
@@ -503,10 +481,9 @@
 
 #
-#  ãã¹4ã®å¦ç
+#  パス4の処理
 #
 def Pass4
   #
-  #  ãã¹3ããå¼ãæ¸¡ãããæ
-å ±ããã¡ã¤ã«ããèª­ã¿è¾¼ã
+  #  パス3から引き渡される情報をファイルから読み込む
   #
   db = PStore.new(CFG3_OUT_DB)
@@ -523,10 +500,10 @@
 
   #
-  #  å¤åå¾ã·ã³ãã«ãã°ã­ã¼ãã«å¤æ°ã¨ãã¦å®ç¾©ãã
+  #  値取得シンボルをグローバル変数として定義する
   #
   DefineSymbolValue()
 
   #
-  #  çæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼ãå®è¡ãã
+  #  生成スクリプト（trbファイル）を実行する
   #
   $trbFileNames.each do |trbFileName|
@@ -536,5 +513,5 @@
 
 #
-#  çæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼åãã®é¢æ°
+#  生成スクリプト（trbファイル）向けの関数
 #
 def SYMBOL(symbol)
@@ -570,5 +547,5 @@
 
 #
-#  ã°ã­ã¼ãã«å¤æ°ã®åæå
+#  グローバル変数の初期化
 #
 $kernel = nil
@@ -585,5 +562,5 @@
 
 #
-#  ãªãã·ã§ã³ã®å¦ç
+#  オプションの処理
 #
 OptionParser.new(banner="Usage: cfg.rb [options] CONFIG-FILE", 40) do |opt|
@@ -639,9 +616,8 @@
 
 #
-#  ãªãã·ã§ã³ã®ãã§ãã¯
+#  オプションのチェック
 #
 if $pass.nil?
-  # ãã¹ã®æå®ã¯å¿
-é 
+  # パスの指定は必須
   abort("`--pass' option is mandatory")
 elsif /^[1234]$/ !~ $pass
@@ -649,12 +625,10 @@
 end
 
-# ãã¹1ã§ã¯ï¼éçAPIãã¼ãã«ã¯å¿
-é 
+# パス1では，静的APIテーブルは必須
 if ($pass == "1" && $apiTableFileNames.empty?)
   abort("`--api-table' option must be specified in pass 1")
 end
 
-# ãã¹1ä»¥å¤ã§ã¯ï¼çæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼ãå¿
-é 
+# パス1以外では，生成スクリプト（trbファイル）が必須
 if ($pass != "1" && $trbFileNames.empty?)
   abort("`--trb-file' must be specified except in pass 1")
@@ -662,5 +636,5 @@
 
 #
-#  ã«ã¼ãã«ãªãã·ã§ã³ã®å¦ç
+#  カーネルオプションの処理
 #
 case $kernel
@@ -672,6 +646,5 @@
 
 #
-#  IDçªå·å
-¥åãã¡ã¤ã«ã®åãè¾¼ã¿
+#  ID番号入力ファイルの取り込み
 #
 $inputObjid = {}
@@ -692,5 +665,5 @@
 
 #
-#  æå®ãããã·ã³ãã«ãã¡ã¤ã«ã®èª­ã¿è¾¼ã¿
+#  指定されたシンボルファイルの読み込み
 #
 if !$romSymbolFileName.nil?
@@ -703,5 +676,5 @@
 
 #
-#  æå®ãããSã¬ã³ã¼ããã¡ã¤ã«ã®èª­ã¿è¾¼ã¿
+#  指定されたSレコードファイルの読み込み
 #
 if !$romImageFileName.nil?
@@ -714,5 +687,5 @@
 
 #
-#  ãã¹ã«å¾ã£ã¦åå¦çãå®è¡
+#  パスに従って各処理を実行
 #
 case $pass
@@ -731,10 +704,10 @@
 end
 
-# ã¨ã©ã¼çºçæã¯abortãã
+# エラー発生時はabortする
 if $errorFlag
   if ($0 == __FILE__)
     abort()
   else
-    # simplecovå¯¾å¿
+    # simplecov対応
     raise()
   end
@@ -742,10 +715,10 @@
 
 #
-#  ä½æãããã¹ã¦ã®ãã¡ã¤ã«ãåºåãã
+#  作成したすべてのファイルを出力する
 #
 GenFile.output
 
 # 
-#  ã¿ã¤ã ã¹ã¿ã³ããã¡ã¤ã«ã®çæ
+#  タイムスタンプファイルの生成
 # 
 if !$timeStampFileName.nil?
Index: azure_iot_hub/trunk/asp3_dcre/cfg/pass1.rb
===================================================================
--- azure_iot_hub/trunk/asp3_dcre/cfg/pass1.rb	(revision 388)
+++ azure_iot_hub/trunk/asp3_dcre/cfg/pass1.rb	(revision 389)
@@ -7,47 +7,32 @@
 #              Graduate School of Information Science, Nagoya Univ., JAPAN
 #
-#  ä¸è¨èä½æ¨©è
-ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
-#  ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹
-#  å¤ã»åé
-å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
-#  (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
-#      æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
-#      ã¹ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
-#  (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#      ç¨ã§ããå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨
-#      è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
-#      ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#  (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#      ç¨ã§ããªãå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
-#      ã¨ï¼
-#    (a) åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
-#        ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#    (b) åé
-å¸ã®å½¢æ
-ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«
-#        å ±åãããã¨ï¼
-#  (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
-#      å®³ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ããå
-è²¬ãããã¨ï¼
-#      ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç
-#      ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ãã
-#      å
-è²¬ãããã¨ï¼
-#
-#  æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
-ã
-#  ãã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç
-#  ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§
-#  ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã
-#  ã®è²¬ä»»ãè² ããªãï¼
+#  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+#  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+#  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+#  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#      スコード中に含まれていること．
+#  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#      の無保証規定を掲載すること．
+#  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#      と．
+#    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#        作権表示，この利用条件および下記の無保証規定を掲載すること．
+#    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#        報告すること．
+#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+#      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+#      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+#      免責すること．
+#
+#  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+#  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+#  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+#  の責任を負わない．
 #
 #  $Id$
@@ -55,9 +40,9 @@
 
 #
-#		ãã¹1ã®å¦ç
-#
-
-#
-#  å¤åå¾ã·ã³ãã«ãã¼ãã«ã¸ã®åºå®ç»é²
+#		パス1の処理
+#
+
+#
+#  値取得シンボルテーブルへの固定登録
 #
 $symbolValueTable = {
@@ -80,5 +65,5 @@
 
 #
-#  éçAPIãã¼ãã«ã¸ã®åºå®ç»é²
+#  静的APIテーブルへの固定登録
 #
 $apiDefinition = { "INCLUDE" =>
@@ -86,5 +71,5 @@
 
 #
-#  éçAPIãã¼ãã«ã®èª­ã¿è¾¼ã¿
+#  静的APIテーブルの読み込み
 #
 def ReadApiTableFile
@@ -102,9 +87,9 @@
     apiFile = File.open(apiTableFileName)
     apiFile.each do |line|
-      next if /^#/ =~ line			# ã³ã¡ã³ããã¹ã­ãã
-
-      fields = line.split(/\s+/)	# ãã£ã¼ã«ãã«åè§£
-
-      apiName = fields.shift		# APIåã®åãåºã
+      next if /^#/ =~ line			# コメントをスキップ
+
+      fields = line.split(/\s+/)	# フィールドに分解
+
+      apiName = fields.shift		# API名の取り出し
       if /^(.+)\[(.+)\]$/ =~ apiName
         apiName = $1
@@ -127,17 +112,16 @@
 
           case prefix
-          when "#"					# ãªãã¸ã§ã¯ãè­å¥åï¼å®ç¾©ï¼
+          when "#"					# オブジェクト識別名（定義）
             apiParam[:ID_DEF] = true
-          when "%"					# ãªãã¸ã§ã¯ãè­å¥åï¼åç
-§ï¼
+          when "%"					# オブジェクト識別名（参照）
             apiParam[:ID_REF] = true
-          when "."					# ç¬¦å·ç¡ãæ´æ°å®æ°å¼ãã©ã¡ã¼ã¿
+          when "."					# 符号無し整数定数式パラメータ
             apiParam[:EXPTYPE] = "unsigned_t"
-          when "+"					# ç¬¦å·ä»ãæ´æ°å®æ°å¼ãã©ã¡ã¼ã¿
+          when "+"					# 符号付き整数定数式パラメータ
             apiParam[:EXPTYPE] = "signed_t"
             apiParam[:SIGNED] = true
-          when "&"					# ä¸è¬æ´æ°å®æ°å¼ãã©ã¡ã¼ã¿
+          when "&"					# 一般整数定数式パラメータ
             # do nothing
-          when "$"					# æå­åå®æ°å¼ãã©ã¡ã¼ã¿
+          when "$"					# 文字列定数式パラメータ
             apiParam[:STRING] = true
           else
@@ -146,9 +130,9 @@
 
           case postfix
-          when "*"					# ã­ã¼ãæ±ºãããã©ã¡ã¼ã¿
+          when "*"					# キーを決めるパラメータ
             apiDef[:KEYPAR] = name
-          when "?"					# ãªãã·ã§ã³ãã©ã¡ã¼ã¿
+          when "?"					# オプションパラメータ
             apiParam[:OPTIONAL] = true
-          when "\.\.\."				# ãªã¹ããã©ã¡ã¼ã¿
+          when "\.\.\."				# リストパラメータ
             apiParam[:LIST] = true
           end
@@ -175,5 +159,5 @@
 
 #
-#  å¤åå¾ã·ã³ãã«ãã¼ãã«ã®èª­ã¿è¾¼ã¿
+#  値取得シンボルテーブルの読み込み
 #
 def ReadSymvalTable
@@ -187,5 +171,5 @@
 						{ skip_blanks: true, skip_lines: /^#/ })
     symvalCsv.each do |record|
-      # å¤æ°å
+      # 変数名
       if record[0].nil?
         error_exit("invalid variable name in " \
@@ -196,5 +180,5 @@
       variable = record[0]
 
-      # å¼
+      # 式
       if record[1].nil? || record[1].empty?
         symbol[:EXPR] = variable
@@ -203,22 +187,22 @@
       end
 
-      # å¼ã®å
+      # 式の型
       if !record[2].nil? && !record[2].empty?
         case record[2]
-        when /^[bB]/				# çå½å¤
+        when /^[bB]/				# 真偽値
           symbol[:BOOL] = true
-        when /^[uU]/				# ç¬¦å·ç¡ãæ´æ°å¤
-          # ä½ãè¨­å®ããªã
-        else						# ç¬¦å·ä»ãæ´æ°å¤
+        when /^[uU]/				# 符号無し整数値
+          # 何も設定しない
+        else						# 符号付き整数値
           symbol[:SIGNED] = true
         end
       end
 
-      # ã³ã³ãã¤ã«æ¡ä»¶
+      # コンパイル条件
       if !record[3].nil? && !record[3].empty?
         symbol[:CONDITION] = record[3]
       end
 
-      # æ¡ä»¶ãæç«ããªãæã®å¼
+      # 条件が成立しない時の式
       if !record[4].nil? && !record[4].empty?
         symbol[:ELSE_EXPR] = record[4]
@@ -232,5 +216,5 @@
 
 #
-#  ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ããã®èª­ã¿è¾¼ã¿ã¯ã©ã¹
+#  システムコンフィギュレーションファイルからの読み込みクラス
 #
 class ConfigFile
@@ -254,5 +238,5 @@
     return(nil) if line.nil?
 
-	line.encode!("UTF-16BE", "UTF-8",	# ä¸æ­£ãªãã¤ãåãé¤å¤ãã
+	line.encode!("UTF-16BE", "UTF-8",	# 不正なバイト列を除外する
 					:invalid => :replace,
 					:undef => :replace,
@@ -263,6 +247,6 @@
     if @withinComment
       case line
-      when /\*\//						# Cè¨èªã¹ã¿ã¤ã«ã®ã³ã¡ã³ãçµäº
-        line.sub!(/^.*?\*\//, "")		# æåã®*/ã«ãããããã */
+      when /\*\//						# C言語スタイルのコメント終了
+        line.sub!(/^.*?\*\//, "")		# 最初の*/にマッチさせる */
         @withinComment = false
       else
@@ -271,8 +255,8 @@
     end
     if !@withinComment
-      line.gsub!(/\/\*.*?\*\//, "")		# Cè¨èªã¹ã¿ã¤ã«ã®ã³ã¡ã³ãã®é¤å»
-										# æåã®*/ã«ãããããã */
+      line.gsub!(/\/\*.*?\*\//, "")		# C言語スタイルのコメントの除去
+										# 最初の*/にマッチさせる */
       case line
-      when /^\s*#/						# ããªãã­ã»ããµãã£ã¬ã¯ãã£ã
+      when /^\s*#/						# プリプロセッサディレクティブ
         if withinApi
           parse_error(self, \
@@ -280,8 +264,8 @@
           line = ""
         end
-      when /\/\*/						# Cè¨èªã¹ã¿ã¤ã«ã®ã³ã¡ã³ãéå§
+      when /\/\*/						# C言語スタイルのコメント開始
         line.sub!(/\/\*.*$/, "")
         @withinComment = true
-      when /\/\//						# C++è¨èªã¹ã¿ã¤ã«ã®ã³ã¡ã³ã
+      when /\/\//						# C++言語スタイルのコメント
         line.sub!(/\/\/.*$/, "")
       end
@@ -300,5 +284,5 @@
 
 #
-#  ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®ãã¼ãµã¼ã¯ã©ã¹
+#  システムコンフィギュレーションファイルのパーサークラス
 #
 class CfgParser
@@ -310,9 +294,9 @@
   def initialize
     @line = ""
-    @skipComma = false						# æ¬¡ã,ã§ããã°èª­ã¿é£ã°ã
-  end
-
-  #
-  #  æå­åæ«ã¾ã§èª­ã
+    @skipComma = false						# 次が,であれば読み飛ばす
+  end
+
+  #
+  #  文字列末まで読む
   #
   def parseString(cfgFile)
@@ -320,15 +304,15 @@
     begin
       case @line
-      when /^([^"]*\\\\)(.*)$/				# \\ã¾ã§èª­ã
+      when /^([^"]*\\\\)(.*)$/				# \\まで読む
         string += $1
         @line = $2
-      when /^([^"]*\\\")(.*)$/				# \"ã¾ã§èª­ã
+      when /^([^"]*\\\")(.*)$/				# \"まで読む
         string += $1
         @line = $2
-      when /^([^"]*\")(.*)$/				# "ã¾ã§èª­ã
+      when /^([^"]*\")(.*)$/				# "まで読む
         string += $1
         @line = $2
         return(string)
-      else									# è¡æ«ã¾ã§èª­ã
+      else									# 行末まで読む
         string += @line + "\n"
         @line = cfgFile.getNextLine(true)
@@ -340,5 +324,5 @@
 
   #
-  #  æå­æ«ã¾ã§èª­ã
+  #  文字末まで読む
   #
   def parseChar(cfgFile)
@@ -346,15 +330,15 @@
     begin
       case @line
-      when /^([^']*\\\\)(.*)$/				# \\ã¾ã§èª­ã
+      when /^([^']*\\\\)(.*)$/				# \\まで読む
         string += $1
         @line = $2
-      when /^([^']*\\\')(.*)$/				# \'ã¾ã§èª­ã
+      when /^([^']*\\\')(.*)$/				# \'まで読む
         string += $1
         @line = $2
-      when /^([^']*\')(.*)$/				# 'ã¾ã§èª­ã
+      when /^([^']*\')(.*)$/				# 'まで読む
         string += $1
         @line = $2
         return(string)
-      else									# è¡æ«ã¾ã§èª­ã
+      else									# 行末まで読む
         string += @line + "\n"
         @line = cfgFile.getNextLine(true)
@@ -366,22 +350,21 @@
 
   #
-  #  æ¹è¡ã¨ç©ºç½æå­ãèª­ã¿é£ã°ã
+  #  改行と空白文字を読み飛ばす
   #
   def skipSpace(cfgFile, withinApi)
     loop do
-      return if @line.nil?						# ãã¡ã¤ã«æ«ã§ããã°ãªã¿ã¼ã³
-      @line.lstrip!								# å
-é ­ã®ç©ºç½ãåé¤
-      return if @line != ""						# ç©ºè¡ã§ãªããã°ãªã¿ã¼ã³
-      @line = cfgFile.getNextLine(withinApi)	# æ¬¡ã®è¡ãèª­ã
-    end
-  end
-
-  #
-  #  æ¬¡ã®æå­ã¾ã§èª­ã¿é£ã°ã
+      return if @line.nil?						# ファイル末であればリターン
+      @line.lstrip!								# 先頭の空白を削除
+      return if @line != ""						# 空行でなければリターン
+      @line = cfgFile.getNextLine(withinApi)	# 次の行を読む
+    end
+  end
+
+  #
+  #  次の文字まで読み飛ばす
   #
   def skipToToken(cfgFile, withinApi=true)
     skipSpace(cfgFile, withinApi)
-    if @line.nil?							# ãã¡ã¤ã«æ«ã§ããã°ã¨ã©ã¼çµäº
+    if @line.nil?							# ファイル末であればエラー終了
       error_exit("unexpexced end-of-file")
     end
@@ -389,18 +372,17 @@
 
   #
-  #  ãã©ã¡ã¼ã¿ã1ã¤èª­ã
-  #
-  # @lineã®å
-é ­ãããã©ã¡ã¼ã¿ã1ã¤èª­ãã§ï¼ãããæå­åã§è¿ãï¼èª­ãã ã
-  # ã©ã¡ã¼ã¿ã¯ï¼@lineããã¯åé¤ããï¼ãã©ã¡ã¼ã¿ã®éä¸­ã§è¡æ«ã«éããæã¯ï¼
-  # cfgFileããæ¬¡ã®è¡ãåãåºãï¼ãã¡ã¤ã«æ«ã«éããæã¯ï¼nilãè¿ãï¼
+  #  パラメータを1つ読む
+  #
+  # @lineの先頭からパラメータを1つ読んで，それを文字列で返す．読んだパ
+  # ラメータは，@lineからは削除する．パラメータの途中で行末に達した時は，
+  # cfgFileから次の行を取り出す．ファイル末に達した時は，nilを返す．
   #
   def parseParam(cfgFile)
-    param = ""								# èª­ãã æå­å
-    parenLevel = 0							# æ¬å¼§ã®ãã¹ãã¬ãã«
+    param = ""								# 読んだ文字列
+    parenLevel = 0							# 括弧のネストレベル
     skipComma = @skipComma
     @skipComma = false
 
-    skipToToken(cfgFile)					# æ¬¡ã®æå­ã¾ã§èª­ã¿é£ã°ã
+    skipToToken(cfgFile)					# 次の文字まで読み飛ばす
     begin
       if parenLevel == 0
@@ -410,5 +392,5 @@
           if param == "" && skipComma
             skipComma = false
-            return(parseParam(cfgFile))		# åå¸°å¼ã³åºã
+            return(parseParam(cfgFile))		# 再帰呼び出し
           else
             return(param.strip)
@@ -425,5 +407,5 @@
           @line = $2
           parenLevel += 1
-        when /^(\s*([)}]))(.*)$/			# }ã)
+        when /^(\s*([)}]))(.*)$/			# }か)
           if param != ""
             return(param.strip)
@@ -439,14 +421,13 @@
           @line = $2
           param += $1 + parseChar(cfgFile)
-        when /^(\s*[^,{}()"'\s]+)(.*)$/		# ãã®ä»ã®æå­å
+        when /^(\s*[^,{}()"'\s]+)(.*)$/		# その他の文字列
           param += $1
           @line = $2
-        else								# è¡æ«
+        else								# 行末
           param += " "
           @line = cfgFile.getNextLine(true)
         end
       else
-        # æ¬å¼§å
-ã®å¦ç
+        # 括弧内の処理
         case @line
         when /^(\s*\()(.*)$/				# "("
@@ -464,8 +445,8 @@
           @line = $2
           param += $1 + parseChar(cfgFile)
-        when /^(\s*[^()"'\s]+)(.*)$/		# ãã®ä»ã®æå­å
+        when /^(\s*[^()"'\s]+)(.*)$/		# その他の文字列
           param += $1
           @line = $2
-        else								# è¡æ«
+        else								# 行末
           param += " "
           @line = cfgFile.getNextLine(true)
@@ -499,10 +480,10 @@
 
   def parseApi(cfgFile, apiName)
-    # éçAPIã®èª­ã¿è¾¼ã¿
+    # 静的APIの読み込み
     staticApi = {}
     tooFewParams = false
     skipUntilBrace = 0
 
-    skipToToken(cfgFile)					# æ¬¡ã®æå­ã¾ã§èª­ã¿é£ã°ã
+    skipToToken(cfgFile)					# 次の文字まで読み飛ばす
     if (/^\((.*)$/ =~ @line)
       @line = $1
@@ -515,8 +496,8 @@
 
       apiDef[:PARAM].each do |apiParam|
-        return(staticApi) if param.nil?		# ãã¡ã¤ã«æ«ã§ããã°ãªã¿ã¼ã³
+        return(staticApi) if param.nil?		# ファイル末であればリターン
 
         if skipUntilBrace > 0
-          # APIå®ç¾©ã}ã¾ã§ã¹ã­ããä¸­
+          # API定義を}までスキップ中
           if apiParam.has_key?(:BRACE)
             case apiParam[:BRACE]
@@ -540,18 +521,18 @@
             staticApi[apiParam[:NAME]].push(getParam(apiParam, param, cfgFile))
             param = parseParam(cfgFile)
-            break if param.nil?				# ãã¡ã¤ã«æ«ã®å ´å
+            break if param.nil?				# ファイル末の場合
           end
         elsif apiParam.has_key?(:OPTBRACE)
           if param == apiParam[:BRACE]
             param = parseParam(cfgFile)
-            break if param.nil?				# ãã¡ã¤ã«æ«ã®å ´å
+            break if param.nil?				# ファイル末の場合
           else
             if param == ""
               param = parseParam(cfgFile)
-              break if param.nil?			# ãã¡ã¤ã«æ«ã®å ´å
+              break if param.nil?			# ファイル末の場合
             elsif /^([})])$/ !~ param
               parse_error(cfgFile, "`{...}' expected before #{param}")
             end
-            skipUntilBrace += 1          	# APIå®ç¾©ã}ã¾ã§ã¹ã­ãã
+            skipUntilBrace += 1          	# API定義を}までスキップ
           end
         elsif !apiParam.has_key?(:BRACE)
@@ -568,5 +549,5 @@
         else
           parse_error(cfgFile, "`#{apiParam[:BRACE]}' expected before #{param}")
-          # )ããã¡ã¤ã«æ«ã¾ã§èª­ã¿é£ã°ã
+          # )かファイル末まで読み飛ばす
           loop do
             param = parseParam(cfgFile)
@@ -577,10 +558,9 @@
       end
 
-      # æå¾
-ããããã©ã¡ã¼ã¿ããã¹ã¦èª­ãã å¾ã®å¦ç
+      # 期待されるパラメータをすべて読んだ後の処理
       if param != ")"
         begin
           param = parseParam(cfgFile)
-          return(staticApi) if param.nil?	# ãã¡ã¤ã«æ«ã§ããã°ãªã¿ã¼ã³
+          return(staticApi) if param.nil?	# ファイル末であればリターン
         end while param != ")"
         parse_error(cfgFile, "too many parameters before `)'")
@@ -594,6 +574,6 @@
 
   def parseOpenBrace(cfgFile)
-    # {ã®èª­ã¿è¾¼ã¿
-    skipToToken(cfgFile)					# æ¬¡ã®æå­ã¾ã§èª­ã¿é£ã°ã
+    # {の読み込み
+    skipToToken(cfgFile)					# 次の文字まで読み飛ばす
     if (/^\{(.*)$/ =~ @line)
       @line = $1
@@ -609,19 +589,18 @@
       cfgFile = cfgFiles.last
 
-      skipSpace(cfgFile, false)				# æ¹è¡ã¨ç©ºç½æå­ãèª­ã¿é£ã°ã
+      skipSpace(cfgFile, false)				# 改行と空白文字を読み飛ばす
       if @line.nil?
-        # ãã¡ã¤ã«æ«ã®å¦ç
+        # ファイル末の処理
         cfgFiles.pop.close
         if cfgFiles.empty?
-          break								# ãã¼ã¹å¦ççµäº
+          break								# パース処理終了
         else
-          @line = ""						# å
-ã®ãã¡ã¤ã«ã«æ»ã£ã¦ç¶ãã
+          @line = ""						# 元のファイルに戻って続ける
         end
       elsif /^;(.*)$/ =~ @line
-        # ;ã¯èª­ã¿é£ã°ã
+        # ;は読み飛ばす
         @line = $1
       elsif /^#/ =~ @line
-        # ããªãã­ã»ããµãã£ã¬ã¯ãã£ããèª­ã
+        # プリプロセッサディレクティブを読む
         case @line
         when /^#include\b(.*)$/
@@ -662,6 +641,5 @@
             if !$domainId.has_key?(domid)
               if $inputObjid.has_key?(domid)
-                # IDçªå·å
-¥åãã¡ã¤ã«ã«å®ç¾©ããã¦ããå ´å
+                # ID番号入力ファイルに定義されていた場合
                 $domainId[domid] = $inputObjid[domid]
                 if $domainId[domid] > 32
@@ -690,10 +668,10 @@
         else
           if $apiDefinition.has_key?(apiName)
-            # éçAPIã1ã¤èª­ã
+            # 静的APIを1つ読む
             staticApi = parseApi(cfgFile, apiName)
             if staticApi.empty?
-              # ãã¡ã¤ã«æ«ãææ³ã¨ã©ã¼
+              # ファイル末か文法エラー
             elsif (staticApi[:APINAME] == "INCLUDE")
-              # INCLUDEã®å¦ç
+              # INCLUDEの処理
               includeFilePath = SearchFilePath(staticApi[:file])
               if includeFilePath.nil?
@@ -704,5 +682,5 @@
               end
             else
-              # éçAPIã®å¦ç
+              # 静的APIの処理
               if !@@currentDomain.nil?
                 staticApi[:DOMAIN] = @@currentDomain
@@ -721,5 +699,5 @@
         end
       elsif (/^\}(.*)$/ =~ @line)
-        # }ã®å¦ç
+        # }の処理
         if @@nestDC.size > 0
           case @@nestDC.pop
@@ -742,9 +720,9 @@
 
 #
-#  cfg1_out.cã®çæ
+#  cfg1_out.cの生成
 #
 module Cfg1OutC
   #
-  #  éçAPIã®ãã¡ã¤ã«åã¨è¡çªå·ã®åºå
+  #  静的APIのファイル名と行番号の出力
   #
   def self.OutLineNumber(cfgInfo)
@@ -753,5 +731,5 @@
 
   #
-  #  ã¯ã©ã¹è¨è¿°ã®ãã¡ã¤ã«åã¨è¡çªå·ã®åºå
+  #  クラス記述のファイル名と行番号の出力
   #
   def self.OutClassLineNumber(cfgInfo)
@@ -760,5 +738,5 @@
 
   #
-  #  ãã©ã¡ã¼ã¿ã«é¢ããå®ç¾©ã®åºå
+  #  パラメータに関する定義の出力
   #
   def self.OutParamDef(param, index, apiParam, cfgInfo)
@@ -774,5 +752,5 @@
 
   #
-  #  cfg1_out.cã®çæï¼ã¡ã¤ã³ã®å¦çï¼
+  #  cfg1_out.cの生成（メインの処理）
   #
   def self.Generate
@@ -785,5 +763,5 @@
 EOS
 
-    # ã¤ã³ã¯ã«ã¼ãããããã¡ã¤ã«
+    # インクルードヘッダファイル
     $includeFiles.each do |file|
       @cfg1Out.add("#include #{file}")
@@ -813,5 +791,5 @@
 EOS
 
-    # å¤åå¾ã·ã³ãã«ã®å¦ç
+    # 値取得シンボルの処理
     $symbolValueTable.each do |symbolName, symbolData|
       if symbolData.has_key?(:BOOL) || symbolData.has_key?(:SIGNED)
@@ -836,5 +814,5 @@
     @cfg1Out.add
 
-    # ãã¡ã¤ã³IDã®å®ç¾©ã®çæ
+    # ドメインIDの定義の生成
     $domainId.each do |domainName, domainVal|
       if domainVal > 0
@@ -844,5 +822,5 @@
     @cfg1Out.add
 
-    # éçAPIï¼ããªãã­ã»ããµãã£ã¬ã¯ãã£ãã®å¦ç
+    # 静的API／プリプロセッサディレクティブの処理
     $cfgFileInfo.each do |cfgInfo|
       if cfgInfo.has_key?(:DIRECTIVE)
@@ -857,5 +835,5 @@
           next unless apiParam.has_key?(:NAME)
           paramName = apiParam[:NAME]
-          next unless cfgInfo.has_key?(paramName)	# ãã©ã¡ã¼ã¿ããªãå ´å
+          next unless cfgInfo.has_key?(paramName)	# パラメータがない場合
           paramData = cfgInfo[paramName]
 
@@ -869,5 +847,5 @@
         end
         if cfgInfo.has_key?(:CLASS)
-          # ã¯ã©ã¹IDã®åå¾ã®ããã®å¦ç
+          # クラスIDの取得のための処理
           OutClassLineNumber(cfgInfo)
           @cfg1Out.add("const signed_t #{CFG1_PREFIX}valueof_CLASS_" \
@@ -881,24 +859,24 @@
 
 #
-#  ãã¹1ã®å¦ç
+#  パス1の処理
 #
 def Pass1
   # 
-  #  ã¿ã¤ã ã¹ã¿ã³ããã¡ã¤ã«ã®æå®
+  #  タイムスタンプファイルの指定
   # 
   $timeStampFileName = CFG1_OUT_TIMESTAMP
 
   #
-  #  éçAPIãã¼ãã«ã®èª­ã¿è¾¼ã¿
+  #  静的APIテーブルの読み込み
   #
   ReadApiTableFile()
 
   #
-  #  å¤åå¾ã·ã³ãã«ãã¼ãã«ã®èª­ã¿è¾¼ã¿
+  #  値取得シンボルテーブルの読み込み
   #
   ReadSymvalTable()
 
   #
-  #  ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®èª­ã¿è¾¼ã¿
+  #  システムコンフィギュレーションファイルの読み込み
   #
   $cfgFileInfo = []
@@ -909,8 +887,8 @@
     CfgParser.new.parseFile(configFileName)
   end
-  abort if $errorFlag					# ã¨ã©ã¼çºçæã¯abortãã
-
-  #
-  #  ãã¡ã¤ã³IDã®å²å½ã¦å¦ç
+  abort if $errorFlag					# エラー発生時はabortする
+
+  #
+  #  ドメインIDの割当て処理
   #
   nextDomainId = 1
@@ -929,10 +907,10 @@
 
   #
-  #  cfg1_out.cã®çæ
+  #  cfg1_out.cの生成
   #
   Cfg1OutC::Generate()
 
   #
-  #  ä¾å­é¢ä¿ã®åºå
+  #  依存関係の出力
   #
   if !$dependencyFileName.nil?
@@ -959,6 +937,5 @@
 
   #
-  #  ãã¹2ã«å¼ãæ¸¡ãæ
-å ±ããã¡ã¤ã«ã«çæ
+  #  パス2に引き渡す情報をファイルに生成
   #
   if $omitOutputDb.nil?
Index: azure_iot_hub/trunk/asp3_dcre/cfg/pass2.rb
===================================================================
--- azure_iot_hub/trunk/asp3_dcre/cfg/pass2.rb	(revision 388)
+++ azure_iot_hub/trunk/asp3_dcre/cfg/pass2.rb	(revision 389)
@@ -7,47 +7,32 @@
 #              Graduate School of Information Science, Nagoya Univ., JAPAN
 #
-#  ä¸è¨èä½æ¨©è
-ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
-#  ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹
-#  å¤ã»åé
-å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
-#  (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
-#      æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
-#      ã¹ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
-#  (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#      ç¨ã§ããå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨
-#      è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
-#      ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#  (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
-#      ç¨ã§ããªãå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
-#      ã¨ï¼
-#    (a) åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
-#        ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
-#    (b) åé
-å¸ã®å½¢æ
-ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«
-#        å ±åãããã¨ï¼
-#  (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
-#      å®³ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ããå
-è²¬ãããã¨ï¼
-#      ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç
-#      ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ãã
-#      å
-è²¬ãããã¨ï¼
-#
-#  æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
-ã
-#  ãã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç
-#  ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§
-#  ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã
-#  ã®è²¬ä»»ãè² ããªãï¼
+#  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+#  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+#  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+#  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#      スコード中に含まれていること．
+#  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#      の無保証規定を掲載すること．
+#  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#      と．
+#    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#        作権表示，この利用条件および下記の無保証規定を掲載すること．
+#    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#        報告すること．
+#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+#      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+#      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+#      免責すること．
+#
+#  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+#  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+#  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+#  の責任を負わない．
 #
 #  $Id$
@@ -55,13 +40,13 @@
 
 #
-#		ãã¹2ã®å¦ç
-#
-
-#
-#  ãã¹1ã®çæç©ã®èª­ã¿è¾¼ã¿
+#		パス2の処理
+#
+
+#
+#  パス1の生成物の読み込み
 #
 module Cfg1Out
   #
-  #  Sã¬ã³ã¼ããã¡ã¤ã«ããã·ã³ãã«ã®å¤ãåãåºã
+  #  Sレコードファイルからシンボルの値を取り出す
   #
   def self.GetSymbolValue(symbol, size, signed)
@@ -74,11 +59,11 @@
 
   #
-  #  ãã¹1ã®çæç©ã®èª­ã¿è¾¼ã¿ï¼ã¡ã¤ã³ã®å¦çï¼
+  #  パス1の生成物の読み込み（メインの処理）
   #
   def self.Read
-    # cfg1_out.symsã®èª­ã¿è¾¼ã¿
+    # cfg1_out.symsの読み込み
     @symbolAddress = ReadSymbolFile(CFG1_OUT_SYMS)
 
-    # cfg1_out.srecã®èª­ã¿è¾¼ã¿
+    # cfg1_out.srecの読み込み
     begin
       @cfg1SRec = SRecord.new(CFG1_OUT_SREC)
@@ -87,5 +72,5 @@
     end
 
-    # ãã¸ãã¯ãã³ãã¼ã®åå¾
+    # マジックナンバーの取得
     if @symbolAddress.has_key?(CFG1_MAGIC_NUM)
       $asmLabel = ""
@@ -108,8 +93,8 @@
     end
 
-    # åºå®åºåããå¤æ°ã®åå¾
+    # 固定出力した変数の取得
     $sizeOfSigned = GetSymbolValue($asmLabel + CFG1_SIZEOF_SIGNED, 4, false)
 
-    # å¤åå¾ã·ã³ãã«ã®åå¾
+    # 値取得シンボルの取得
     $symbolValueTable.each do |symbolName, symbolData|
       symbol = $cfg1_prefix + symbolName
@@ -117,5 +102,5 @@
         value = GetSymbolValue(symbol, $sizeOfSigned, true)
         if !value.nil?
-          # Cè¨èªã®çå½å¤ãRubyã®çå½å¤ã«å¤æãã¦åãè¾¼ã
+          # C言語の真偽値をRubyの真偽値に変換して取り込む
           symbolData[:VALUE] = (value != 0)
         end
@@ -130,5 +115,5 @@
 
     #
-    #  ããã·ã¥ã®åæå
+    #  ハッシュの初期化
     #
     $cfgData = {}
@@ -148,5 +133,5 @@
 
     #
-    #  ãã¡ã¤ã³çæãã¼ã¿ãã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¼ã¿ï¼$cfgDataï¼ã«æ ¼ç´
+    #  ドメイン生成データをコンフィギュレーションデータ（$cfgData）に格納
     #
     $cfgData[:CRE_DOM] = {}
@@ -160,11 +145,10 @@
 
   #
-  #  ãã©ã¡ã¼ã¿ã®å¤ãåãåºã
+  #  パラメータの値を取り出す
   #
   def self.GetParamValue(paramName, param, apiIndex, index, apiParam, cfgInfo)
-    if apiParam.has_key?(:ID_DEF)				# ãªãã¸ã§ã¯ãè­å¥åï¼å®ç¾©ï¼
+    if apiParam.has_key?(:ID_DEF)				# オブジェクト識別名（定義）
       value = @objidValues[paramName][param]
-    elsif apiParam.has_key?(:ID_REF)			# ãªãã¸ã§ã¯ãè­å¥åï¼åç
-§ï¼
+    elsif apiParam.has_key?(:ID_REF)			# オブジェクト識別名（参照）
       if @objidValues[paramName].has_key?(param)
         value = @objidValues[paramName][param]
@@ -176,5 +160,5 @@
         value = nil
       end
-    elsif apiParam.has_key?(:EXPTYPE)			# æ´æ°å®æ°å¼ãã©ã¡ã¼ã¿
+    elsif apiParam.has_key?(:EXPTYPE)			# 整数定数式パラメータ
       if apiIndex.nil?
         if param.is_a?(NumStr)
@@ -188,5 +172,5 @@
 									apiParam.has_key?(:SIGNED))
       end
-    else										# ä¸è¬å®æ°å¼ï¼æå­åãã©ã¡ã¼ã¿
+    else										# 一般定数式／文字列パラメータ
       return(param)
     end
@@ -195,40 +179,39 @@
 
   #
-  #  æå®ãããã§ã¼ãºã®ããã®ãã¹1ã®çæç©ã®èª­ã¿è¾¼ã¿
+  #  指定したフェーズのためのパス1の生成物の読み込み
   #
   def self.ReadPhase(phase)
     #
-    #  ãªãã¸ã§ã¯ãIDã®å²å½ã¦
-    #
-    # å²ãå½ã¦ããªãã¸ã§ã¯ãIDã¯ï¼@objidValuesã«ä¿æããï¼@objidValuesã¯ï¼
-    # 2éã®ããã·ã¥ï¼ããã·ã¥ã®ããã·ã¥ï¼ã§ããï¼
-    #
-    # å
-·ä½çã«ã¯ï¼@objidValuesã¯ï¼ãªãã¸ã§ã¯ãIDã®ãã©ã¡ã¼ã¿åï¼ä¾ãã°ï¼ã»
-    # ããã©IDã§ããã°"semid"ï¼ãããä¿æããå¤æ°åã¯ï¼objidParamNameã¨ã
-    # ãï¼ãã­ã¼ã¨ãï¼ãã®ãªãã¸ã§ã¯ãIDã®å²å½ã¦è¡¨ï¼ãããä¿æããå¤æ°å
-    # ã¯ï¼objidListã¨ããï¼ãå¤ã¨ããããã·ã¥ã§ããï¼ãªãã¸ã§ã¯ãIDã®å²å½
-    # ã¦è¡¨ã¯ï¼ãªãã¸ã§ã¯ãåï¼ãããä¿æããå¤æ°åã¯ï¼objNameã¨ããï¼ãã­ã¼
-    # ã¨ãï¼ãã®IDçªå·ï¼ãããä¿æããå¤æ°åã¯ï¼objidNumberã¨ããï¼ãå¤ã¨
-    # ããããã·ã¥ã§ããï¼
-    #
-    # ä¾ãã°ï¼ã»ããã©SEM1ã®IDçªå·ã1ã®å ´åã«ã¯ï¼æ¬¡ã®ããã«è¨­å®ãããï¼
+    #  オブジェクトIDの割当て
+    #
+    # 割り当てたオブジェクトIDは，@objidValuesに保持する．@objidValuesは，
+    # 2重のハッシュ（ハッシュのハッシュ）である．
+    #
+    # 具体的には，@objidValuesは，オブジェクトIDのパラメータ名（例えば，セ
+    # マフォIDであれば"semid"．これを保持する変数名は，objidParamNameとす
+    # る）をキーとし，そのオブジェクトIDの割当て表（これを保持する変数名
+    # は，objidListとする）を値とするハッシュである．オブジェクトIDの割当
+    # て表は，オブジェクト名（これを保持する変数名は，objNameとする）をキー
+    # とし，そのID番号（これを保持する変数名は，objidNumberとする）を値と
+    # するハッシュである．
+    #
+    # 例えば，セマフォSEM1のID番号が1の場合には，次のように設定される．
     #   @objidValues["semid"]["SEM1"] == 1
     #
 
-    # IDçªå·å²ãå½ã¦ã®åå¦ç
+    # ID番号割り当ての前処理
     objidParamNameList = []
     $cfgFileInfo.each do |cfgInfo|
-      # ããªãã­ã»ããµãã£ã¬ã¯ãã£ãã¯èª­ã¿é£ã°ã
+      # プリプロセッサディレクティブは読み飛ばす
       next if cfgInfo.has_key?(:DIRECTIVE)
 
       apiDef = $apiDefinition[cfgInfo[:APINAME]]
-      # ç°ãªããã§ã¼ãºã®éçAPIã¯èª­ã¿é£ã°ã
+      # 異なるフェーズの静的APIは読み飛ばす
       next if apiDef[:PHASE] != phase
 
       apiIndex = cfgInfo[:INDEX]
       if !apiIndex.nil?
-        # ã·ã³ãã«ãã¡ã¤ã«ã«éçAPIã®ã¤ã³ããã¯ã¹ãå­å¨ããªããã°èª­ã¿é£
-        # ã°ãï¼ifdefç­ã§æ¶ããéçAPIï¼
+        # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
+        # ばす（ifdef等で消えた静的API）
         symbol = "#{$cfg1_prefix}static_api_#{apiIndex}"
         next unless @symbolAddress.has_key?(symbol)
@@ -240,6 +223,5 @@
           objName = cfgInfo[objidParamName]
           if $inputObjid.has_key?(objName)
-            # IDçªå·å
-¥åãã¡ã¤ã«ã«å®ç¾©ããã¦ããå ´å
+            # ID番号入力ファイルに定義されていた場合
             @objidValues[objidParamName][objName] = $inputObjid[objName]
           else
@@ -251,21 +233,20 @@
     end
 
-    # IDçªå·ã®å²å½ã¦å¦ç
+    # ID番号の割当て処理
     objidParamNameList.each do |objidParamName|
       objidList = @objidValues[objidParamName]
 
-      # æªä½¿ç¨ã®IDçªå·ã®ãªã¹ãï¼ä½¿ç¨ãããã®ããæ¶ãã¦ããï¼
+      # 未使用のID番号のリスト（使用したものから消していく）
       unusedObjidList = (1.upto(objidList.keys.size)).to_a
 
-      # å²ãå½ã¦æ¸ã¿ã®IDçªå·ã®å¦ç
+      # 割り当て済みのID番号の処理
       objidList.each do |objName, objidNumber|
         if $inputObjid.has_key?(objName)
           objidIndex = unusedObjidList.index($inputObjid[objName])
           if objidIndex.nil?
-            # IDçªå·å
-¥åãã¡ã¤ã«ã§æå®ãããå¤ãä¸æ­£
+            # ID番号入力ファイルで指定された値が不正
             error_exit("value of `#{objName}' in ID input file is illegal")
           else
-            # æªä½¿ç¨ã®IDçªå·ã®ãªã¹ãããåé¤
+            # 未使用のID番号のリストから削除
             unusedObjidList.delete_at(objidIndex)
           end
@@ -273,8 +254,8 @@
       end
 
-      # IDçªå·ã®å²å½ã¦
+      # ID番号の割当て
       objidList.each do |objName, objidNumber|
         if objidList[objName].nil?
-          # ä»¥ä¸ã§ï¼@objidValuesãæ¸ãæãã¦ãã
+          # 以下で，@objidValuesを書き換えている
           objidList[objName] = unusedObjidList.shift
         end
@@ -283,12 +264,12 @@
 
     #
-    #  éçAPIãã¼ã¿ãã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¼ã¿ï¼$cfgDataï¼ã«æ ¼ç´
+    #  静的APIデータをコンフィギュレーションデータ（$cfgData）に格納
     #
     $cfgFileInfo.each do |cfgInfo|
-      # ããªãã­ã»ããµãã£ã¬ã¯ãã£ãã¯èª­ã¿é£ã°ã
+      # プリプロセッサディレクティブは読み飛ばす
       next if cfgInfo.has_key?(:DIRECTIVE)
 
       apiDef = $apiDefinition[cfgInfo[:APINAME]]
-      # ç°ãªããã§ã¼ãºã®éçAPIã¯èª­ã¿é£ã°ã
+      # 異なるフェーズの静的APIは読み飛ばす
       next if apiDef[:PHASE] != phase
 
@@ -296,16 +277,16 @@
       apiIndex = cfgInfo[:INDEX]
       if !apiIndex.nil?
-        # ã·ã³ãã«ãã¡ã¤ã«ã«éçAPIã®ã¤ã³ããã¯ã¹ãå­å¨ããªããã°èª­ã¿é£
-        # ã°ãï¼ifdefç­ã§æ¶ããéçAPIï¼
+        # シンボルファイルに静的APIのインデックスが存在しなければ読み飛
+        # ばす（ifdef等で消えた静的API）
         symbol = "#{$cfg1_prefix}static_api_#{apiIndex}"
         next unless @symbolAddress.has_key?(symbol)
       end
 
-      # ãã©ã¡ã¼ã¿ã®å¤ãããã·ã¥å½¢å¼ã«æ ¼ç´
+      # パラメータの値をハッシュ形式に格納
       params = {}
       apiDef[:PARAM].each do |apiParam|
         next unless apiParam.has_key?(:NAME)
         paramName = apiParam[:NAME]
-        next unless cfgInfo.has_key?(paramName)		# ãã©ã¡ã¼ã¿ããªãå ´å
+        next unless cfgInfo.has_key?(paramName)		# パラメータがない場合
         paramData = cfgInfo[paramName]
 
@@ -322,5 +303,5 @@
       end
 
-      # ãã¡ã¤ã³IDãè¿½å 
+      # ドメインIDを追加
       if cfgInfo.has_key?(:DOMAIN)
         domainName = cfgInfo[:DOMAIN]
@@ -328,5 +309,5 @@
       end
 
-      # ã¯ã©ã¹IDãè¿½å 
+      # クラスIDを追加
       if cfgInfo.has_key?(:CLASS)
         if apiIndex.nil?
@@ -339,15 +320,15 @@
       end
 
-      # APIåï¼ãã¡ã¤ã«åï¼è¡çªå·ãè¿½å 
+      # API名，ファイル名，行番号を追加
       params[:apiname] = cfgInfo[:APINAME]
       params[:_file_] = cfgInfo[:_FILE_]
       params[:_line_] = cfgInfo[:_LINE_]
 
-      # ç»é²ã­ã¼ãæ±ºå®ãã
+      # 登録キーを決定する
       if apiDef.has_key?(:KEYPAR)
         keyParam = params[apiDef[:KEYPAR].to_sym]
         key = keyParam.val
         if $cfgData[apiSym].has_key?(key)
-          # ç»é²ã­ã¼ã®éè¤
+          # 登録キーの重複
           error("E_OBJ: #{apiDef[:KEYPAR]} `#{keyParam}' " \
 								"is duplicated in #{cfgInfo[:APINAME]}",
@@ -362,5 +343,5 @@
 
   #
-  #  IDçªå·åºåãã¡ã¤ã«ã®çæ
+  #  ID番号出力ファイルの生成
   #
   def self.OutputId(fileName)
@@ -375,10 +356,9 @@
 
 #
-#  ãã¹2ã®å¦ç
+#  パス2の処理
 #
 def Pass2
   #
-  #  ãã¹1ããå¼ãæ¸¡ãããæ
-å ±ããã¡ã¤ã«ããèª­ã¿è¾¼ã
+  #  パス1から引き渡される情報をファイルから読み込む
   #
   db = PStore.new(CFG1_OUT_DB)
@@ -393,16 +373,16 @@
 
   #
-  #  ãã¹1ã®çæç©ãèª­ã¿è¾¼ã
+  #  パス1の生成物を読み込む
   #
   Cfg1Out.Read()
-  abort if $errorFlag					# ã¨ã©ã¼çºçæã¯abortãã
-
-  #
-  #  å¤åå¾ã·ã³ãã«ãã°ã­ã¼ãã«å¤æ°ã¨ãã¦å®ç¾©ãã
+  abort if $errorFlag					# エラー発生時はabortする
+
+  #
+  #  値取得シンボルをグローバル変数として定義する
   #
   DefineSymbolValue()
 
   #
-  #  çæã¹ã¯ãªããï¼trbãã¡ã¤ã«ï¼ãå®è¡ãã
+  #  生成スクリプト（trbファイル）を実行する
   #
   $trbFileNames.each do |trbFileName|
@@ -415,5 +395,5 @@
 
   #
-  #  IDçªå·åºåãã¡ã¤ã«ã®çæ
+  #  ID番号出力ファイルの生成
   #
   if !$idOutputFileName.nil?
@@ -422,6 +402,5 @@
 
   #
-  #  ãã¹3ã«å¼ãæ¸¡ãæ
-å ±ããã¡ã¤ã«ã«çæ
+  #  パス3に引き渡す情報をファイルに生成
   #
   if $omitOutputDb.nil?
