(57)【要約】      （修正有）【課題】抽象構文記法メッセージとＣ言語等のデータ構造の相互変換を行うプログラムルーチンを抽象構文で記述されたプロトコルから自動生成するにあたり、カスタマイズを反映させるプロトコル符号化・復号化システムを提供する。【解決手段】ユーザによって定義されたインタフェース用構造体およびプログラムルーチンの処理内容のカスタマイズルールを受け付ける手段と、受け付けた前記カスタマイズルールを前記プロトコル仕様とともに解析するカスタマイズルール解析手段と、解析された前記カスタマイズルールについて前記プロトコル仕様への適用を処理するカスタマイズルール処理手段と、前記カスタマイズルールにしたがってインタフェース用構造体およびプログラムルーチンを生成するプログラムルーチン生成手段と、前記プログラムルーチン生成手段によって得られた結果を出力する結果出力手段とを有することを特徴とするプロトコル符号化／復号化装置。【選択図】      図１
2004234405.tif 000002
【特許請求の範囲】
【請求項１】
プロトコル仕様の入力を受けて抽象構文記法メッセージと言語処理系のデータ構造との間の変換を行うプログラムルーチンをカスタマイズして生成するプロトコル符号化／復号化装置であって、
ユーザによって定義され入力されたインタフェース用構造体およびプログラムルーチンの処理内容に関するカスタマイズルールを受け付けるカスタマイズルール受付手段と、
受け付けた前記カスタマイズルールを前記プロトコル仕様とともに解析するカスタマイズルール解析手段と、
解析された前記カスタマイズルールについて前記プロトコル仕様への適用を処理するカスタマイズルール処理手段と、
前記カスタマイズルールにしたがってインタフェース用構造体およびプログラムルーチンを生成するプログラムルーチン生成手段と、
前記プログラムルーチン生成手段によって得られた結果を出力する結果出力手段と、
を有することを特徴とするプロトコル符号化／復号化装置。
【請求項２】
前記インタフェース用構造体およびプログラムルーチンに関するカスタマイズにおいて、前記プロトコル符号化／復号化装置は、現在処理中の型の出現位置に関する型依存関係の情報を記憶装置に逐次格納しておく型依存情報格納手段を有し、該位置における任意の型あるいはその任意の要素の変更を行うことを特徴とする請求項１記載のプロトコル符号化／復号化装置。
【請求項３】
前記カスタマイズルール処理手段は、型あるいは型依存関係に対し、任意のインタフェース用構造体およびプログラムルーチンが新たに定義される新規定義手段を有することを特徴とする請求項１あるいは請求項２記載のプロトコル符号化／復号化装置。
【請求項４】
前記インタフェース用構造体およびプログラムルーチンに関するカスタマイズにおいて、前記プロトコル符号化／復号化装置は、使用頻度の多いものについてテンプレートとして保存しておくテンプレート登録手段と、そのテンプレートを選択可能とするテンプレート選択手段とを有することを特徴とする請求項１乃至請求項３のいずれかに記載のプロトコル符号化／復号化装置。
【請求項５】
前記インタフェース用構造体の構造およびプログラムルーチンのカスタマイズにおいて、前記プロトコル符号化／復号化装置は、新規定義が行われない場合で、かつ、前記テンプレートが選択されない場合、前記インタフェース用構造体およびプログラムルーチンが採用するデフォルトを登録しておくデフォルト登録手段を有することを特徴とする請求項３あるいは請求項４記載のプロトコル符号化／復号化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、抽象構文記法メッセージとＣ言語等処理系のデータ構造との相互変換を行うプログラムルーチンを抽象構文で記述されたプロトコルから自動生成するにあたり、カスタマイズを反映させるプロトコル符号化／復号化システムの技術分野に関する。
【０００２】
【従来の技術】
コンピュータ間の送受信のプロトコルは、抽象構文記法１（ＡＳＮ．１：Ａｂｓｔｒａｃｔ  Ｓｙｎｔａｘ  Ｎｏｔａｔｉｏｎ１）による抽象構文で記述されている。これは、ＭＨＳ（Ｍｅｓｓａｇｅ  Ｈａｎｄｌｉｎｇ  Ｓｙｓｔｅｍ  電子メールシステム）やＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｐｒｏｔｏｃｏｌ簡易ネットワークプロトコル）等のプロトコルの構文規定をするための言語である。その手順については、ＩＳＯ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ  国際標準化機構）によって定められた標準に基づいている。そして、抽象構文記法メッセージは、ＭＨＳ、ＳＮＭＰなどで実際に扱われるデータであり、ＢＥＲ方式（Ｂａｓｉｃ  Ｅｎｃｏｄｉｎｇ  Ｒｕｌｅ）  やＤＥＲ方式（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｅｎｃｏｄｉｎｇ  Ｒｕｌｅ）  で符号化したデータにより、送受信されるのが一般的となっている。
【０００３】
上記抽象構文記法メッセージはそのままでは扱いにくいため、一般的にＣ言語等の処理系のデータ構造に変換して扱う。プロトコル毎に構文規定は異なるため、プログラムルーン（デコーダ／エンコーダ）、インターフェース用構造体もプロトコル毎に作成する必要があるが、大変な作業となるため、ＡＳＮ．１コンパイラが、抽象構文記法で記述されたプロトコルの構文規定からデコーダ、エンコーダ、インターフェース用構造体を作成するためのツールとして提供される現状にある。
【０００４】
ここで、以下に使用するキーの用語について具体例をもって説明しておく。
抽象構文記法「ＡＳＮ．１」：
例１（ＡＳＮ．１による構文規定）
2004234405.tif 000003
ＡＳＮ．１を用いて上記のように構文規定が行われている場合、以下の意味をもつ。ＴｙｐｅＡ  型はＴｙｐｅＢ  型であるｂ  とＴｙｐｅＣ  型であるｃ  をデータとしてもつ型である。ＴｙｐｅＢ  型はＩＮＴＥＧＥＲ  型すなわち整数値をもつ型であり、ＴｙｐｅＣ  型はＯＣＴＥＴ  ＳＴＲＩＮＧ型すなわちバイト列をもつ型である。
抽象構文記法メッセージ：
例２（「ＤＥＲ」方式符号化）
００００：  ３０              ＳＥＱＵＥＮＣＥの型番号
０００１：  ０８              データサイズ  （０００２〜０００９の８  バイト）
０００２：  ０２              ＩＮＴＥＧＥＲ  （＝  ＴｙｐｅＢ）  の型番号
０００３：  ０１              ｂ  のデータサイズ  （０００５の１  バイト）
０００４：  ０５              ｂ  のデータ
０００５：  ０４              ＯＣＴＥＴ  ＳＴＲＩＮＧ  （＝  ＴｙｐｅＣ）の型番号
０００６：  ０３              ｃ  のデータサイズ（０００７  〜０００９の３  バイト）
０００７：  ０３  ０２  ０３  ｃ  のデータ
（  注）  データは１６進数で記述している。
【０００５】
「型番号」「データサイズ」「データ」の構成となっており、上記例１の構文規定において、ｂ  が５という整数値、ｃ  が３、２、３というバイト列をデータとしてもつＴｙｐｅＡ  型のデータを扱う場合、「ＤＥＲ」方式で符号化したデータは上記１０バイトのデータとなる。
デコーダ、エンコーダ、インターフェース用構造体：
例３（例１の構文規定に対応したインターフェース用構造体）
2004234405.tif 000004
ｔｙｐｅＡ  は、ｂ  値をもつｔｙｐｅＢ  と  ｃ値をもつｔｙｐｅＣ  で構成され、ｔｙｐｅＢ  は  ｉｎｔ型、ｔｙｐｅＣ  は  ｃｈａｒ型へのポインタを示している。
【０００６】
上記のように、抽象構文記法メッセージは、一般にＣ言語等の処理系のデータ構造に変換して扱いやすい形式にして使用する。デコーダは、抽象構文記法メッセージから処理系のデータ構造に変換する処理を行うプログラムルーチンであり、エンコーダは、処理系のデータ構造から抽象構文記法メッセージに変換する処理を行うプログラムルーチンである。そして、インターフェース用構造体は、処理系のデータ構造を構築するためのものである。
【０００７】
従来、ＡＳＮ．１等の抽象構文記法で記述されたプロトコル仕様を入力として、インターフェース用構造体およびデコーダ  （ＢＥＲ、ＤＥＲ等の抽象構文記法メッセージをインターフェース用構造体に格納するためのＣ言語等で記述されたプログラムルーチン）  ／エンコーダ  （インターフェース用構造体に格納されたデータから抽象構文記法メッセージを生成するためのＣ言語等で記述されたプログラムルーチン）  を生成、出力するシステムが提案されてきた（例えば、特許文献１参照）。
【０００８】
さらに、上記従来例について、図１５に示す従来のプロトコル符号化／復号化のフローチャートを用いて説明する。ユーザの入力になるプロトコル仕様のデータを受けて（ステップＳ１１）、プロトコル仕様の内容を解析し（ステップＳ１２）、解析結果にしたがってインターフェース用構造体およびデコーダ／エンコーダのプログラムルーチンを生成し（ステップＳ１３）、その結果を出力する（ステップＳ１４）システムとなっている。
【０００９】
【特許文献１】
特開平７−１６８７７２号公報（第２〜９頁）
【００１０】
【発明が解決しようとする課題】
プロトコルを処理するアプリケーションを開発する上で、インターフェース用構造体の構造はアプリケーション毎に最適な構造であることが望ましい。しかしながら、従来技術では、生成できるインターフェース用構造体の構造、デコーダ、エンコーダの形式は固定されており、インターフェース用構造体の構成、デコーダ、エンコーダをアプリケーション毎に変えて生成するには、相当な手作業が入り、大変使い勝手の悪いものとなっていた。
【００１１】
また、多種のアプリケーションと接続する通信環境下では、既存のＡＳＮ．１コンパイラを使用して，インターフェース用構造体およびデコーダ、エンコーダをアプリケーション毎にカスタマイズするには、自動生成されたインターフェース用構造体およびデコーダ、エンコーダを人手で修正するため、バグも発生しやすく多大の工数を必要としていた。
【００１２】
そこで、アプリケーション開発において、抽象構文のメッセージを変換  （デコードおよびエンコード）  するためのプログラムルーチンおよびインターフェース用構造体の構成を、ユーザが使いやすいようにカスタマイズすることが求められる。本発明では、上記欠点を補うため、デコーダ／エンコーダのプログラムルーチンが処理しやすい形式のデータ構造を実現し、かつ、これらプログラムルーチンのサイズのコンパクト化および処理の高速化を図ることを目的とする。
【００１３】
【課題を解決するための手段】
第一の発明は、プロトコル仕様の入力を受けて抽象構文記法メッセージと言語処理系のデータ構造との間の変換を行うプログラムルーチンをカスタマイズして生成するプロトコル符号化／復号化装置であって、ユーザによって定義され入力されたインタフェース用構造体およびプログラムルーチンの処理内容に関するカスタマイズルールを受け付けるカスタマイズルール受付手段と、受け付けた前記カスタマイズルールを前記プロトコル仕様とともに解析するカスタマイズルール解析手段と、解析された前記カスタマイズルールについて前記プロトコル仕様への適用を処理するカスタマイズルール処理手段と、前記カスタマイズルールにしたがってインタフェース用構造体およびプログラムルーチンを生成するプログラムルーチン生成手段と、前記プログラムルーチン生成手段によって得られた結果を出力する結果出力手段とを有することを特徴とするプロトコル符号化／復号化装置に関する。
【００１４】
すなわち、第一の発明によれば、インターフェース用構造体の構造の変更、あるいはプログラムルーチン（デコーダ／エンコーダ）の処理内容の変更、追加を行うために、カスタマイズルール受付手段、カスタマイズルール解析手段、およびカスタマイズルール処理手段を持つことによって、利用者が意図するようなインターフェース用構造体の構造、およびプログラムルーチン（デコーダ／エンコーダ）を生成、出力するシステムが実現できる。
【００１５】
第二の発明は、前記インタフェース用構造体およびプログラムルーチンに関するカスタマイズにおいて、前記プロトコル符号化／復号化装置は、現在処理中の型の出現位置に関する型依存関係の情報を記憶装置に逐次格納しておく型依存情報格納手段を有し、該位置における任意の型あるいはその任意の要素の変更を行うことを特徴とする上記第一の発明に記載のプロトコル符号化／復号化装置に関する。
【００１６】
すなわち、第二の発明によれば、プロトコル符号化／復号化装置に型依存関係を記憶させておくことで、同じ型でも登場する位置によって、別の型に対応させたり、処理を行わせたりすることを可能にしている。
第三の発明は、前記カスタマイズルール処理手段は、型あるいは型依存関係に対し、任意のインタフェース用構造体およびプログラムルーチンが新たに定義される新規定義手段を有することを特徴とする上記第一あるいは第二の発明に記載のプロトコル符号化／復号化装置。
【００１７】
すなわち、第三の発明によれば、新規定義手段によって各々のＡＳＮ．１型および型依存関係を新たに定義しておくことで、任意のインターフェース用構造体およびプログラムルーチン（デコーダ／エンコーダ）を生成することが可能となる。
第四の発明は、前記インタフェース用構造体およびプログラムルーチンに関するカスタマイズにおいて、前記プロトコル符号化／復号化装置は、使用頻度の多いものについてテンプレートとして保存しておくテンプレート登録手段と、そのテンプレートを選択可能とするテンプレート選択手段とを有することを特徴とする上記第一乃至第三の発明に記載のプロトコル符号化／復号化装置に関する。
【００１８】
すなわち、第四の発明によれば、テンプレート格納手段およびテンプレート選択手段によって、インターフェース用構造体、プログラムルーチン（デコーダ／エンコーダ）に関して、よく実行されそうなカスタマイズについて予めいくつかのテンプレートを記憶させておくことで、使用時に記憶されたテンプレートを取り出して選択することが可能となる。
【００１９】
第五の発明は、前記インタフェース用構造体の構造およびプログラムルーチンのカスタマイズにおいて、前記プロトコル符号化／復号化装置は、新規定義が行われない場合で、かつ、前記テンプレートが選択されない場合、前記インタフェース用構造体およびプログラムルーチンが採用するデフォルトを登録しておくデフォルト登録手段を有することを特徴とする上記第三あるいは第四の発明に記載のプロトコル符号化／復号化装置に関する。
【００２０】
すなわち、第五の発明によれば、デフォルト格納手段によって、カスタマイズルールにて新規定義がなく、かつ、テンプレートの選択がない場合において、インターフェース用構造体、プログラムルーチン（デコーダ／エンコーダ）にデフォルトを使用することを可能としている。
【００２１】
【発明の実施の形態】
以下、図面にもとづいて本発明の実施形態を説明する。
図１に本発明の実施の形態になる基本システム構成を示す。プロトコル符号化／復号化装置１は、プロトコル処理装置２とカスタマイズ処理装置３および記憶装置４で構成される。
【００２２】
プロトコル処理装置２は、ユーザからのプロトコル仕様の入力を受け付けるプロトコル仕様受付手段２１、プロトコル仕様解析手段２２、現在処理中である型の依存関係の情報を格納する型依存情報格納手段２３、インターフェース用構造体およびデコーダ／エンコーダのプログラムルーチンを生成するプログラムルーチン生成手段２４、および結果出力手段２５を有する。
【００２３】
カスタマイズ処理装置３は、カスタマイズルール受付手段３１、カスタマイズルール処理手段３２、そのサブセットとして、カスタマイズの処理機能を追加する処理追加手段３２ａ、新しくカスタマイズの定義を規定する新規定義手段３２ｂ、予め登録されたテンプレートを選択するテンプレート選択手段３２ｃ、カスタマイズルール解析手段３３、およびテンプレート／デフォルトの入力を受付けてカタマイズルール記憶装置４に予め登録しておくテンプレート登録手段３４／デフォルト登録手段３５を有する。
【００２４】
記憶装置４には、現在処理中の型データを示す型依存情報４１、テンプレート４２、およびデフォルトテーブル４３が格納されている。
ここで、プロトコル符号化／復号化装置１はコンピュータであり、予め内蔵されたプロトコル処理およびカスタマイズ処理のプログラムが内蔵されており、プロトコル処理装置２およびカスタマイズ処理装置３における各手段によってコンピュータ上でそれらの処理が実行される。当該プログラムは、フロッピーディスク、コンパクトディスク、ＣＤ−ＲＯＭ等のコンピュータ読取可能な記録媒体に記録され、図には示していないが、内蔵あるいは、外部接続された媒体読取装置にセットしインストールすることによって実行可能な状態としてもよい。
【００２５】
つぎに、本発明の基本的な動作について、図２、図３のフローチャートを用いて以下に説明する。
図２は、本発明の実施の形態になるテンプレート／デフォルト登録のフローチャートを示す。ユーザによって入力されたテンプレート／デフォルトのデータを受付けて（ステップＳ１１）、そのテンプレート／デフォルトに関する入力情報は、テンプレート４２およびデフォルトテーブル４３として記憶装置４に初期登録される（ステップＳ１２）。
【００２６】
図３は、本発明の実施の形態になるプロトコル符号化／複号化のフローチャートを示す。プロトコル符号化／複号化１において、まず、プロトコル仕様受付手段２１が、ユーザからのプロトコル仕様の入力を受け付け（ステップＳ２１）、同時に、カスタマイズルール受付手段３１が、ユーザが定義し入力したカスタマイズルールを受け付け（ステップＳ２２）、カスタマイズルール解析手段３３およびプロトコル仕様解析手段２２によって、その受け付けたカスタマイズルールおよびプロトコル仕様が解析され（ステップＳ２３）、その解析されたカスタマイズルールに基づき、カスタマイズルール処理手段３２およびプログラムルーチン生成手段２４によって、該カスタマイズルールが適用処理され、カスタマイズを反映したインターフェース用構造体およびプログラムルーチンが自動生成され（ステップＳ２４）、結果出力手段２５によってその結果が出力される（ステップＳ２５）。
【００２７】
図４は、プロトコル仕様の例を示す。抽象構文記法で記述されたプロトコルの例で、ＳＥＱＵＥＮＣＥは複数の値を持たせる型を意味し、ＳａｍｐｌｅＡ  は、ＳａｍｐｌｅＡ．ｂ１．ｉ型やＳａｍｐｌｅＡ．ｂ２．ｉ型などはＩＮＴＥＧＥＲ  型であることを示している。このようなＩＮＴＥＧＥＲ  型のうち、ＳａｍｐｌｅＡ．ｂ１．ｉ型のみｄｏｕｂｌｅ型  （Ｃ）とし、それ以外のＩＮＴＥＧＥＲ  型をｉｎｔ  型  （Ｃ）にしたり、ＳａｍｐｌｅＡ．ｂ２．ｉ型もｉｎｔ  型  （Ｃ）にしたりというように、同じ型でも登場する位置によって対応する型  （Ｃ）や処理  （Ｃ）を変えたい場合が生じることがあるが、従来はそれへの対応は不可能であった（ここで、  （Ｃ）は、Ｃ言語適用の場合を示す）。そこで、以下に述べるカスタマイズの導入を行った。
【００２８】
図５は、本発明の実施の形態になるカスタマイズルールの例（その１）を示す。本発明では、システムに型依存関係を記憶させておくことで、同じ型でも登場する位置によって、別の型  （Ｃ）に対応させたり、処理  （Ｃ）を行わせたりすることを可能にしている。実施例において、ＳａｍｐｌｅＡ．ｂ１．ｉ型を処理する際にこの型がＩＮＴＥＧＥＲ  型、かつ  ＳａｍｐｌｅＢ．ｉ型、ＳａｍｐｌｅＡ．ｂ１．ｉ型であることを型依存情報４１として記憶装置４に記憶しているため、本図のようなカスタマイズルールを記述することによって、ＳａｍｐｌｅＡ．ｂ１．ｉ型はｄｏｕｂｌｅ型  （Ｃ）、それ以外のＩＮＴＥＧＥＲ  型は、ｉｎｔ  型  （Ｃ）として処理するようなインターフェース用構造体、デコーダ、エンコーダを生成することが可能となる（コード生成例は図１４の▲１▼に示す）。
【００２９】
図６は、本発明の実施の形態になるカスタマイズルールの例（その２）を示す。本例は、型あるいは型依存関係に対して、任意のインターフェース用構造体、デコーダ、エンコーダを新規定義するための新規定義手段３２ｂを有することで、カスタマイズルールに記述された新規定義を反映させた例を示す。図４のプロトコル仕様において、図６のようなカスタマイズルールにコードを埋め込むことによって、ＳａｍｐｌｅＣ  型に対応する任意のインターフェース用構造体、デコーダ、エンコーダの生成を可能にしている（コード生成例は図１４の▲２▼に示す）。
【００３０】
図７は、本発明の実施の形態になるカスタマイズルールの例（その３）を示す。図５のプロトコル仕様において、構造体をポインタ形式とするか、実体埋め込みとするのかのテンプレート  （図１１）を用意しておき、図７のようにカスタマイズルールを記述することによって、自動的にＳａｍｐｌｅＡ．ｂ２型に対応する構造体はポインタ参照形式、それ以外は実体埋め込み形式となるようなインターフェース用構造体、デコーダ、エンコーダを生成させることができる（コード生成例は図１４の▲３▼に示す）。
【００３１】
図８は、本発明の実施の形態になるカスタマイズルールの例（その４）を示す。ここでは、生成するデコーダあるいはエンコーダについて、その要素を処理する際に、インライン展開形式にしたい場合、あるいは関数呼び出し形式にしたいという場合示している。実施例では、図４のプロトコル仕様において、インライン展開か、関数呼び出しかのテンプレート（図１１）を用意しておき、図８のようなカスタマイズルールを記述することにより、自動的にＳａｍｐｌｅＡ．ｂ１型に対応する処理はインライン展開形式、それ以外は関数呼び出し形式となるようなデコーダ、エンコーダを生成することを可能としている（コード生成例は図１４の▲４▼に示す）。
【００３２】
図９は、本発明の実施の形態になるカスタマイズルールの例（その５）を示す。本例では、生成したデコーダもしくはエンコーダに任意の追加処理を付与するための処理追加手段３２ａを有することで、デコーダ、エンコーダにカスタマイズルールに記述された追加処理を付与可能としている。ここでは、生成されたデコーダ、エンコーダに対して、アプリケーションに特化した処理を追加したい場合を扱っている。図５のプロトコル仕様において、図１０のようなカスタマイズルールにコードを埋め込むことで、ＳａｍｐｌｅＡ  型およびＳａｍｐｌｅＡ．ｂ２型に対応するデコーダ、エンコーダに追加処理を付与したデコーダ、エンコーダが生成される（コード生成例は図１４の▲５▼に示す）。
【００３３】
本実施例では、ＳａｍｐｌｅＡ  やＳａｍｐｌｅＡ．の中のＣ  をデコードする前および後に出力処理させる例を示している。
図１０は、本発明の実施の形態になるテンプレートの例（その１）を示す。インターフェース用構造体、デコーダ、エンコーダを生成するにあたり、その全てのＡＳＮ．１型に対応するインターフェース用構造体、デコーダ、エンコーダをカスタマイズルールで定義するのは大変な作業である。しかし、例えば、ＩＮＴＥＧＥＲ  型をＣ  の型に変換するにあたり、ｉｎｔ  型  （Ｃ）やｄｏｕｂｌｅ型  （Ｃ）などのある程度決まった型に変換される。そこで、ＩＮＴＥＧＥＲ  型をｉｎｔ  型  （Ｃ）に変換するｄｅｃｏｄｅ＿ｉｎｔ  関数や、ｉｎｔ  型  （Ｃ）をＩＮＴＥＧＥＲ  型に変換するｅｎｃｏｄｅ＿ｉｎｔ  関数、ＩＮＴＥＧＥＲ  型をｄｏｕｂｌｅ型  （Ｃ）に変換するｄｅｃｏｄｅ＿ｄｏｕｂｌｅ＿ｆｏｒ  ＿ｒｅａｌ関数や、ｄｏｕｂｌｅ型  （Ｃ）を  ＩＮＴＥＧＥＲ型に変換するｅｎｃｏｄｅ＿ｄｏｕｂｌｅ＿ｆｏｒ  ＿ｒｅａｌ関数等について、例えば、本図のようなテンプレートを用意しておくことでＡＳＮ．１型に対応した変換を容易に行うことができる。
【００３４】
本例のテンプレート４２は、ＡＳＮ．１型１０１、生成型１０２、Ｃの型１０３、デコーダ１０４、およびエンコーダ１０５の項目を有する複数のレコードで構成されている。ＡＳＮ．１型１０１は、抽象構文記法による型であり、生成型１０２は、テンプレートとしての型名を表し、Ｃの型１０３は、インタフェース用構造体の型を含むＣ言語における型を示している。デコーダ１０４、エンコーダ１０５は、それぞれのプログラムルーチンにおける各関数を示している。
【００３５】
図１１は、本発明の実施の形態になるテンプレートの例（その２）を示す。生成するインターフェース用構造体の要素をポインタ参照形式にしたい場合や、実体埋め込み形式にしたい場合に本テンプレートが用意される。
図１２は、本発明の実施の形態になるテンプレートの例（その３）を示す。生成するデコーダあるいはエンコーダについて、要素を処理する際にインライン展開形式にしたい場合、あるいは関数呼び出し形式にしたい場合に適用される。
【００３６】
図１３は、本発明の実施の形態になるデフォルトの例を示す。カスタマイズルールにて新規定義が行われていない場合で、かつ、テンプレートが選択されない場合に本デフォルトが適用される。
本デフォルトテーブル４３は、ＡＳＮ．１型１０１、構造体１０３、デコーダ１０４、エンコーダ１０５、ポインタ／埋込１０６、およびインライン／関数１０７の項目を有する複数のレコードで構成されている。図１０と同様に、ＡＳＮ．１型１０１は、抽象構文記法による型であり、構造体１０３は、Ｃ言語によるインタフェース用構造体を示しており、デコーダ１０４、エンコーダ１０５は、それぞれのプログラムルーチンにおける型を示している。ポインタ／埋込１０６は、データはポインタ参照型形式とするか、実体埋め込み型形式とするかを示しており、また、インライン／関数１０７は、インライン展開形式とするか、関数呼び出し形式とするかを示しており、本実施例では、ＲＥＡＬ、ＩＮＴＥＧＥＲ  とも「実体埋め込み形式」、「関数呼び出し形式」としている。
【００３７】
図１４は、本発明の実施の形態になるプログラムルーチンの生成例を示す。本実施例では、デコーダのみの例で示している。これまで述べてきたカスタマイズルール例（その１）〜（その５）が適用された場合のプログラムルーチン（デコーダのケース）を示しており、それぞれの適用箇所については、図中に▲１▼〜▲５▼のマークを挿入して示した。
【００３８】
以上述べてきた発明の中で、さらに、プロトコル仕様の入力とカスタマイズルールの入力を分離し、カスタマイズルールでは、型依存関係とカスタマイズルールの組として記述することによって、同じプロトコルを処理するアプリケーションであっても、各々別のカスタマイズルールを採用したい場合に対する解決を与えるものとなる。
【００３９】
（付記１）  プロトコル仕様の入力を受けて抽象構文記法メッセージと言語処理系のデータ構造との間の変換を行うプログラムルーチンをカスタマイズして生成するプロトコル符号化／復号化装置であって、
ユーザによって定義され入力されたインタフェース用構造体およびプログラムルーチンの処理内容に関するカスタマイズルールを受け付けるカスタマイズルール受付手段と、
受け付けた前記カスタマイズルールを前記プロトコル仕様とともに解析するカスタマイズルール解析手段と、
解析された前記カスタマイズルールについて前記プロトコル仕様への適用を処理するカスタマイズルール処理手段と、
前記カスタマイズルールにしたがってインタフェース用構造体およびプログラムルーチンを生成するプログラムルーチン生成手段と、
前記プログラムルーチン生成手段によって得られた結果を出力する結果出力手段と、
を有することを特徴とするプロトコル符号化／復号化装置。
【００４０】
（付記２）  前記インタフェース用構造体およびプログラムルーチンに関するカスタマイズにおいて、前記プロトコル符号化／復号化装置は、現在処理中の型の出現位置に関する型依存関係の情報を記憶装置に逐次格納しておく型依存情報格納手段を有し、該位置における任意の型あるいはその任意の要素の変更を行うことを特徴とする付記１記載のプロトコル符号化／復号化装置。
【００４１】
（付記３）  前記カスタマイズルール処理手段は、型あるいは型依存関係に対し、任意のインタフェース用構造体およびプログラムルーチンが新たに定義される新規定義手段を有することを特徴とする付記１あるいは付記２記載のプロトコル符号化／復号化装置。
（付記４）  前記インタフェース用構造体およびプログラムルーチンに関するカスタマイズにおいて、前記プロトコル符号化／復号化装置は、使用頻度の多いものについてテンプレートとして保存しておくテンプレート登録手段と、そのテンプレートを選択可能とするテンプレート選択手段とを有することを特徴とする付記１乃至付記３のいずれかに記載のプロトコル符号化／復号化装置。
【００４２】
（付記５）  前記テンプレート登録手段では、テンプレートの追加、変更、および削除がユーザの入力によって行えることを特徴とする付記４記載のプロトコル符号化／復号化装置。
（付記６）  前記インタフェース用構造体の構造およびプログラムルーチンのカスタマイズにおいて、前記プロトコル符号化／復号化装置は、新規定義が行われない場合で、かつ、前記テンプレートが選択されない場合、前記インタフェース用構造体およびプログラムルーチンが採用するデフォルトを登録しておくデフォルト登録手段を有することを特徴とする付記３あるいは付記４記載のプロトコル符号化／復号化装置。
【００４３】
（付記７）  プロトコル仕様の入力を受けて抽象構文記法メッセージと言語処理系のデータ構造との間の変換を行うプログラムルーチンをカスタマイズして生成するプロトコル符号化／復号化方法であって、
ユーザによって定義され入力されたインタフェース用構造体およびプログラムルーチンの処理内容に関するカスタマイズルールを受け付けるカスタマイズルール受付ステップと、
受け付けた前記カスタマイズルールを前記プロトコル仕様とともに解析するカスタマイズルール解析ステップと、
解析された前記カスタマイズルールについて前記プロトコル仕様への適用を処理するカスタマイズルール処理ステップと、
前記カスタマイズルールにしたがってインタフェース用構造体およびプログラムルーチンを生成するプログラムルーチン生成ステップと、
前記プログラムルーチン生成ステップによって得られた結果を出力する結果出力ステップと、
を有することを特徴とするプロトコル符号化／復号化方法。
【００４４】
（付記８）  プロトコル仕様の入力を受けて抽象構文記法メッセージと言語処理系のデータ構造との間の変換を行うプログラムルーチンをカスタマイズして生成するプロトコル符号化／復号化プログラムであって、
コンピュータに、
ユーザによって定義され入力されたインタフェース用構造体およびプログラムルーチンの処理内容に関するカスタマイズルールを受け付けるカスタマイズルール受付ステップと、
受け付けた前記カスタマイズルールを前記プロトコル仕様とともに解析するカスタマイズルール解析ステップと、
解析された前記カスタマイズルールについて前記プロトコル仕様への適用を処理するカスタマイズルール処理ステップと、
前記カスタマイズルールにしたがってインタフェース用構造体およびプログラムルーチンを生成するプログラムルーチン生成ステップと、
前記プログラムルーチン生成ステップによって得られた結果を出力する結果出力ステップと、
を実行させるプロトコル符号化／復号化プログラム。
【００４５】
【発明の効果】
以上述べてきたように、抽象構文記法メッセージと言語処理系のデータ構造との相互変換を行うプログラムルーチン  （デコーダ／エンコーダ）について、カスタマイズルールを適用することによって、従来技術では、生成できるインタフェース用構造体の構造、デコーダ、エンコーダの形式は固定されたものとなっていたインターフェース用構造体の構造、デコーダ、エンコーダをアプリケーション毎に変えて生成することを可能とした。
【００４６】
本発明は、プロトコルを処理するアプリケーションを開発する上でインタフェース用構造体の構造について、アプリケーション毎に最適な構造を提供することとなり、アプリケーションの開発ユ−ザにとって、自動生成されたインタフェース用構造体およびデコーダ、エンコーダを人手で修正する必要がなくなり、工数の削減となる。
【図面の簡単な説明】
【図１】本発明の実施の形態になる基本システム構成を示す図である。
【図２】本発明の実施の形態になるテンプレ−ト／デフォルト登録のフロ−チャ−トを示す図である。
【図３】本発明の実施の形態になるプロトコル符号化／復号化のフローチャートを示す図である。
【図４】プロトコル仕様の例を示す図である。
【図５】本発明の実施の形態になるカスタマイズルールの例（その１）を示す図である。
【図６】本発明の実施の形態になるカスタマイズルールの例（その２）を示す図である。
【図７】本発明の実施の形態になるカスタマイズルールの例（その３）を示す図である。
【図８】本発明の実施の形態になるカスタマイズルールの例（その４）を示す図である。
【図９】本発明の実施の形態になるカスタマイズルールの例（その５）を示す図である。
【図１０】本発明の実施の形態になるテンプレートの例（その１）を示す図である。
【図１１】本発明の実施の形態になるテンプレートの例（その２）を示す図である。
【図１２】本発明の実施の形態になるテンプレートの例（その３）を示す図である。
【図１３】本発明の実施の形態になるデフォルトテーブルを示す図である。
【図１４】本発明の実施の形態になるプログラムルーチンの生成例を示す図である。
【図１５】従来のプロトコル符号化／復号化のフローチャートを示す図である。
【符号の説明】
１  プロトコル符号化／復号化装置
２  プロトコル処理装置
３  カスタマイズ処理装置
４  記憶装置
２１  プロトコル仕様受付手段
２２  プロトコル仕様解析手段
２３  型依存情報格納手段
２４  プログラムルーチン生成手段
２５  結果出力手段
３１  カスタマイズルール受付手段
３２  カスタマイズルール処理手段
３２ａ  処理追加手段
３２ｂ  新規定義手段
３２ｃ  テンプレート選択手段
３３  カスタマイズルール解析手段
３４  テンプレート登録手段
３５  デフォルト登録手段
４１  型依存情報
４２  テンプレート
４３  デフォルトテーブル
【図１】
2004234405.tif 000005
【図２】
2004234405.tif 000006
【図３】
2004234405.tif 000007
【図４】
2004234405.tif 000008
【図５】
2004234405.tif 000009
【図６】
2004234405.tif 000010
【図７】
2004234405.tif 000011
【図８】
2004234405.tif 000012
【図９】
2004234405.tif 000013
【図１０】
2004234405.tif 000014
【図１１】
2004234405.tif 000015
【図１２】
2004234405.tif 000016
【図１３】
2004234405.tif 000017
【図１４】
2004234405.tif 000018
【図１５】
2004234405.tif 000019