実施の形態1.
この実施の形態では、ネットワークで接続されたサーバ装置とクライアント装置とを備え、サーバ装置とクライアント装置との間でデータ交換を行うデータ交換システムについて一例を説明する。
図1は、実施の形態1のデータ交換システムのシステム構成図である。図1において、データ交換システム100は、サーバ装置である第2のデータ交換計算機103と、クライアント装置である第1のデータ交換計算機101a〜101fとを備えている。第2のデータ交換計算機103と第1のデータ交換計算機101a〜101fとは、ネットワーク102によって接続されている。また、第2のデータ交換計算機のオペレーティング・システムと第1のデータ交換計算機101aのオペレーティング・システムとは、それぞれ異なるものとする。また、第1のデータ交換計算機101a上で動作するプログラムを作成するプログラム言語と、第2のデータ交換計算機103上で動作するプログラムを作成するプログラム言語とは、異なるものとする。また、第1のデータ交換計算機101a〜101fのそれぞれのオペレーティング・システムは、異なっていても、同じでもかまわない。この実施の形態では、第2のデータ交換計算機103と第1のデータ交換計算機101aとの間でデータ交換を行う例を説明する。
図2は、第1のデータ交換計算機と第2のデータ交換計算機とのハードウェア構成図である。図2において、第1のデータ交換計算機101aと第2のデータ交換計算機103とはそれぞれ、同じ図2に示すハードウェア構成をしている。第1のデータ交換計算機101aと第2のデータ交換計算機103とは、プログラムを実行するCPU(Central Processing Unit)137を備えている。CPU137は、バス138を介してROM(read only memory)139、RAM(random access memory)140、通信ボード144、CRT表示装置141、K/B(キーボード装置)142、マウス143、FDD(Flexible Disk Drive)145、磁気ディスク装置146(磁気ディスク装置は光ディスク装置でも良い。また、磁気ディスク装置146の他に光ディスク装置を備えていても良い。)、CDD(コンパクトディスクドライブ)186、プリンタ装置187、スキャナ装置188と接続されている。RAM140は、揮発性メモリの一例である。ROM139、FDD145、CDD186、磁気ディスク装置146、光ディスク装置は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。通信ボード144は、ファクシミリ装置や、電話器、ネットワーク102のLAN等に接続されている。例えば、通信ボード144、K/B142、FDD145などは、情報入力部の一例である。また、例えば、通信ボード144、スキャナ装置188、CRT表示装置141などは、出力部の一例である。
ここで、通信ボード144は、LANに限らず、直接、インターネット、或いはISDN等のWAN(ワイドエリアネットワーク)に接続されていても構わない。磁気ディスク装置146には、オペレーティング・システム(OS)147、ウィンドウシステム148、プログラム群149、ファイル群150が記憶されている。プログラム群149は、CPU137、OS147、ウィンドウシステム148により実行される。例えば、第1の実行プログラムは、第1のデータ交換計算機101aのプログラム群149に記憶され、第1のデータ構造定義情報や第1の位置情報や第1のデータや第1のデータ定義情報とは、第1のデータ交換計算機101aのファイル群150に記憶されている。また、例えば、第2の実行プログラムは、第2のデータ交換計算機103のプログラム群149に記憶され、第2のデータ構造定義情報や第2の位置情報や第2のデータや第1のデータ定義情報とは、第2のデータ交換計算機103のファイル群150に記憶されている。
上記プログラム群149には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPUにより読み出され実行される。ファイル群150には、以下に述べる実施の形態の説明において、「〜情報」、「〜データ」として説明するものが、「〜ファイル」として記憶されている。また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、ROM139に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
また、以下に述べる実施の形態を実施するプログラムは、磁気ディスク装置、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体による記録装置を用いて記憶されても構わない。
図3は、この発明によるデータ交換システム、データ交換計算機、データ交換方法ならびに第1と第2の実行プログラムの作成方法を示す全体構成図である。図3において、第1のデータ定義情報である構造体データ定義情報11は、第1のデータ交換計算機101aと第2のデータ交換計算機103とのそれぞれの外側に図示しているが、これは説明を容易にするため外側に記載したものであって、それぞれの計算機が備える記憶媒体に記憶されているものとする。構造体データ定義情報11は、データ交換を行うデータの構造をプログラム言語やオペレーティング・システムに依存しない表現形式によってユーザが定義する情報である。このように、プログラム言語やオペレーティング・システムに依存しない表現形式によって定義するので、1つのデータについて一度定義を行えばよい。第1の構造体定義生成部21は、第1のデータ交換計算機101aに備えられ、構造体データ定義情報11を入力して、第1のデータ構造定義情報である構造体定義ソース31と第1の位置情報であるデータ項目位置情報32を生成して出力する。すなわち、構造体定義ソース31とデータ項目位置情報32とはそれぞれ、自動生成される。第2の構造体定義生成部22は、第2のデータ交換計算機103に備えられ、構造体データ定義情報11を入力して、第2のデータ構造定義情報である構造体定義ソース33と第2の位置情報であるデータ項目位置情報34を生成して出力する。すなわち、構造体定義ソース33とデータ項目位置情報34とはそれぞれ、自動生成される。また、上記したように、第1のデータ交換計算機101a上で動作するプログラムを作成するプログラム言語と、第2のデータ交換計算機103上で動作するプログラムを作成するプログラム言語とは異なるので、構造体定義ソース31と構造体定義ソース33とは、異なるプログラム言語に基づく内容となる。また、データ項目位置情報32とデータ項目位置情報34とは、異なるプログラム言語に基づく内容となる。
第1のデータである構造体データ52は、第1のデータ交換計算機101aからアクセス可能な記憶媒体に記憶されたデータ交換元の第1のデータである。第1の実行プログラムである送信側利用者プログラム41は、ユーザが第1のデータ交換計算機101a上で動作するプログラム言語を使用して作成したプログラムである。ユーザは構造体定義ソース31を参照して、送信側利用者プログラム41を作成する。第1の実行部であるデータ変換部42は、CPU137、OS147、ウィンドウシステム148の制御の元送信側利用者プログラム41に記述された処理手順に従い動作して、構造体データ52をマークアップデータ51に変換して出力する。データ送信部43は、データ変換部42が出力したマークアップデータ51を、ネットワーク102を介して第2のデータ交換計算機103に送信する。
データ受信部46は、第1のデータ交換計算機101aからネットワーク102を介して送信されたマークアップデータ51を受け取る。第2のデータである構造体データ53は、第2のデータ交換計算機103からアクセス可能な記憶媒体に記憶されたデータ交換後の第2のデータである。第2の実行プログラムである受信側利用者プログラム44は、ユーザが第2のデータ交換計算機103上で動作するプログラム言語を使用して作成したプログラムである。ユーザは構造体定義ソース33を参照して、受信側利用者プログラム44を作成する。第2の実行部であるデータ変換部45は、CPU137、OS147、ウィンドウシステム148の制御の元受信側利用者プログラム44に記述された処理手順に従い動作して、マークアップデータ51を構造体データ53に変換して出力する。
なお、第1のデータ交換計算機101aから第2のデータ交換計算機へ、単にデータを送信するためにマークアップデータを使用する場合には、すなわち、第1のデータ交換計算機101aと第2のデータ交換計算機103が同じプログラム言語で作成されたプログラムを実行できる場合には、第1の構造体定義生成部21と第2の構造体定義生成部22とは同じものとなり、結果として出力される構造体定義ソース31,33及びデータ項目位置情報32,34とはそれぞれ、同じものとなる。このように、データ交換システムは、OSや実行可能なプログラムを記述するプログラム言語が同一である計算機間においても、マークアップデータを介するデータの送受信が行える。
次に、データ交換を行う動作について説明する。まず、利用者は、構造体データ定義情報11を作成し、これを機械可読な形式で保存する。構造体データ定義情報11は、第1のデータ交換計算機101aと第2のデータ交換計算機103とにより使用するので、ネットワーク102で接続されたそれぞれの計算機からアクセス可能な記憶媒体をネットワーク102上に用意しておき、その記憶媒体に記憶させる。或いは、構造体データ定義情報11をネットワーク102上のそれぞれの計算機に対して送信してもかまわない。
図4は、構造体データ定義情報に設定する内容の例を示す図である。構造体データ定義情報11は、構造体を識別する構造体名1101と、データ構造を示す項目情報1110とを有する。項目情報1110は、項目の階層1102、項目名1103、項目が配列の場合にその要素数を表す配列1104、項目のデータ型1105、項目のサイズ1106を有する。
データ型1105には、文字、文字列、真偽値、整数、浮動小数点数、日付、時刻、日時(日付と時刻の両方を表す)がある。
項目情報1110は、入れ子の構造体の定義を含んでもよい。入れ子の構造体を定義する場合は、データ型1105に構造体の型を特定する構造体名を含める。例えば図4の項目情報1110の上から2行目にその例を示す。入れ子の構造体に含まれるデータ項目は、階層1102を1つ深くすることによって示す。例えば図4の項目情報1110の上から3,4行目(「ITEM21,ITEM22」)に入れ子の構造体を示している。「ITEM21,ITEM22」は、階層1102が「2」であり、「構造体(STRUCT_B)」の入れ子であることを定義している。
サイズ1106が表す意味は、データ型によって異なる。データ型が文字列のときは、サイズはそこに含まれる最大の文字数を表す。データ型が整数や浮動小数点数のときは、サイズはバイト数またはビット数とする。
図4の例では、整数と浮動小数点数についてデータ型とサイズを分けて表したが、データ型を「2バイト整数」「4バイト整数」「4バイト浮動小数点」「8バイト浮動小数点数」というようにして、データ型によって、サイズを区別して表してもよい。
構造体データ定義情報11を機械可読な形式で保存するにあたって、その形式は1つ以上のCSV(Comma Separeted Value)の組み合わせとしてもよいし、XML(Extensible Markup Language)としてもよい。
図4の例では、データ型を「整数」「文字列」のように日本語で表したが、機械可読な形式で保存するにあたっては、それらを区別することが可能な記号としてもよい。また、構造体データ定義情報11を定義する場合には、図2のK/B142やマウス143を使用して入力する。
次に、第1の構造体定義生成部21に構造体データ定義情報11を与えて、構造体定義ソース31とデータ項目位置情報32とを生成する。
図5に、第1の構造体定義生成部21がプログラム言語としてC言語を使用して構造体定義ソース31とデータ項目位置情報32を作成した場合の例を示す。構造体定義ソース31の1行目には構造体名1101を定義し、2行目以降に項目情報1110をC言語のプログラミング規則に従い定義する。データ項目位置情報32の階層3202は構造体データ定義情報11の階層1102と同じであり、項目名3203は構造体データ定義情報11の項目名1103と同じであり、配列3204は構造体データ定義情報11の配列1104と同じであり、データ型3205は構造体データ定義情報11のデータ型1105と同じである。オフセット3207は、項目の構造体先頭からのバイト位置を表すオフセット値である。ただし、項目が入れ子の構造体に含まれるときは、入れ子の構造体先頭からのバイト位置とする。バイト数3208は、項目のバイト数である。項目が配列の場合は、1つの要素のバイト数とする。項目情報3210は、階層3202、項目名3203、配列3204、データ型3205、オフセット3207、バイト数3208とを有する。
プログラム言語によっては、項目のデータ型に応じてそのオフセットを2、4、または8の倍数に揃えることがある。このために、直前の項目との間に隙間を設ける。データ項目位置情報のオフセットとバイト数は、この隙間を加味したものとする。図5の例では、「GROUP2」のオフセットを8の倍数にするために、「GROUP2」の直前の項目である「ITEM1」との間に4バイトの隙間を設ける。また、「ITEM22」のオフセットを8の倍数にするために、「ITEM22」の直前の項目である「ITEM21」との間に6バイトの隙間を設ける。これらの隙間を考慮して、第1の構造体定義生成部21は、データ項目位置情報32のオフセット3207とバイト数3208を求める。データ項目位置情報32のオフセット3207とバイト数3208以外の項目については、構造体データ定義情報11の該当する項目の内容をそのまま引き継いで定義する。
第1の構造体定義生成部21は、構造体定義ソース31をテキストファイルとして、またデータ項目位置情報32を機械可読な形式で保存する。データ項目位置情報32を機械可読な形式で保存するにあたって、その形式は1つ以上のCSV(Comma Separeted Value)の組み合わせとしてもよいし、XML(Extensible Markup Language)としてもよい。
同様にして、第2の構造体定義生成部22に構造体データ定義情報11を与えて、構造体定義ソース33とデータ項目位置情報34を生成する。このとき、第2の構造体定義生成部22は、第1の構造体定義生成部21が使用したプログラム言語とは異なるプログラム言語を使用して構造体定義ソース33を生成する。ただし、単に第1のデータ交換計算機101aと第2のデータ交換計算機103との間でマークアップデータを介して単にデータを送受信する場合には、第1の構造体定義生成部21と第2の構造体定義生成部22とは、同じプログラム言語を使用して構造体定義ソース31、33を生成することもある。
利用者は、構造体定義ソース31を参照する送信側利用者プログラム41を作成する。送信側利用者プログラム41には、生成された構造体定義ソース31に定義された構造体をデータ型とする変数の宣言と、構造体定義ソース31に定義された構造体を有するデータからマークアップデータを生成して出力する処理と、マークアップデータを送信する処理とを記述する。マークアップデータを生成して出力する処理と、マークアップデータを送信する処理とはそれぞれ、予め関数としてプログラミングされており、ユーザはその関数を呼び出す処理を送信側利用者プログラム41に定義する。マークアップデータを生成する処理の関数を呼び出す場合には、パラメータとして、第1のデータの構造体名と、構造体をデータ型とする変数の先頭位置と、変換後のマークアップデータを格納する変数を指定する。図6(a)に送信側利用者プログラムの例を示す。
同様に、利用者は、構造体定義ソース33を参照する受信側利用者プログラム44を作成する。受信側利用者プログラム44には、生成された構造体定義ソース33に定義された構造体をデータ型とする変数の宣言と、マークアップデータを受信する処理と、マークアップデータを構造体定義ソース33に定義した構造体を有するデータに変換して出力する処理とを記述する。マークアップデータを受信する処理と、マークアップデータを構造体定義ソース33に定義した構造体を有するデータに変換して出力する処理とはそれぞれ、予め関数としてプログラミングされており、ユーザはその関数を呼び出す処理を受信側利用者プログラム44に定義する。マークアップデータを構造体定義ソース33に定義した構造体を有するデータに変換して出力する処理の関数を呼び出す場合には、パラメータとして、第2のデータの構造体名と、構造体をデータ型とする変数の先頭位置と、変換前のマークアップデータを格納した変数を指定する。図6(b)に受信側の利用者プログラムの例を示す。上記したように、第1のデータ交換計算機101aと第2のデータ交換計算機103とはそれぞれ、異なるプログラム言語で記述された処理手順を実行する。このため、送信側利用者プログラム41と受信側利用者プログラム44とは、それぞれ異なるプログラム言語により記述する。また、送信側利用者プログラム41と受信側利用者プログラム44とがそれぞれ呼び出す関数は、送信側利用者プログラム41と受信側利用者プログラム44とをそれぞれ記述した別々のプログラム言語を用いて記述するものとする。また、構造体定義ソース31は、送信側利用者プログラム41を記述したプログラム言語と同じプログラム言語を用いて作成し、構造体定義ソース33は、受信側利用者プログラム44を記述したプログラム言語と同じプログラム言語を用いて作成する。
利用者は、送信側利用者プログラム41と受信側利用者プログラム44と構造体定義ソース31、33とをそれぞれコンパイルして、実行可能プログラムを生成する。次にそれぞれの実行可能プログラムを実行する。送信側利用者プログラム41を第1のデータ交換計算機101aが実行した場合の動作を説明する。
第1のデータ交換計算機101aのデータ変換部42は、送信側利用者プログラム41に記述された処理手順に従い、まず、構造体定義ソース31に定義された構造体をデータ型とする変数に構造体データ52を格納する(図6(a)の「構造体データの読み込み」)。続いて、構造体データ52からマークアップデータを生成して出力する処理を行う関数に記述された処理手順を実行する(図6(a)の「toMarkUpData(“STRUCT_A”,&sa,&xml)」)。
構造体データ52からマークアップデータを生成して出力する処理を行う関数に記述された処理手順は、データ項目位置情報32を参照しながら、構造体データ52をマークアップデータに変換する。構造体データ52からマークアップデータを生成して出力する処理を行う関数に記述された処理手順のフローチャートを図7〜図9に示す。
図7において、送信側利用者プログラム41で指定された構造体名(STRUCT_A)をもとに、データ項目位置情報32を取得する(S4201)。次に変換手順で構造体データの中のどの位置のデータ項目を変換するかを示すデータ・ポインタを0に代入する。これは構造体データの先頭を表す(S4202)。データ変換部42は、データ項目位置情報32の項目情報3210を順番に1行ずつ参照しながら、データ項目変換処理(S4203)を繰り返す(S4205,NO)。データ項目変換処理については、このあと図8の説明で述べる。データ項目位置情報32のすべての項目情報3210の処理が終了したら(S4205,YES)、マークアップデータ全体を生成する(S4204)。
図8のデータ項目変換処理について説明する。データ項目変換処理は、データ項目位置情報の項目情報3210の有する1つの項目(例えば、図5の「ITEM1」,「GROUP2」毎)に関する変換処理を行う。まず、データ項目が配列か否かを判定する。項目が配列でないときは(S4217,NO)、単項目変換処理(S4211)を行う。単項目変換処理については、このあと図9の説明で述べる。次に、データ・ポインタに項目のバイト数を加える(S4212)。項目が配列のときは(S4217,YES)、まず配列開始処理を行う(S4213)。ここでは、マークアップ言語に配列の開始を表すタグがある場合にそれを生成する。次に配列の要素数分(S4218,NO)、単項目変換処理を行う(S4214)。次に、データ・ポインタに項目の配列要素1つ分のバイト数を加える(S4215)。配列の要素数分の処理が終了したら(S4218,YES)、配列終了処理を行う(S4216)。ここでは、マークアップ言語に配列の終了を表すタグがある場合にそれを生成する。
図9の単項目変換処理について説明する。単項目変換処理は、1つのデータ項目に関する変換処理を行う。ただし、データ項目が配列の場合は1つの要素に関する変換処理を行う。まず、項目が構造体か否かを判定する。項目が構造体ではないときは(S4227,NO)、構造体データのデータ・ポインタの位置からデータ項目位置情報の項目情報3210で指定されたバイト数3208分のデータを取り出し、同じく項目情報3210で指定されたデータ型3205の型の値に変換する(S4221)。さらに、変換した値を文字列型にする(S4229)。次に、項目情報3210の項目名3203を文字列型に変換した値に対するタグとして、マークアップデータのエレメントを生成する(S4222)。項目が構造体のときは(S4227,YES)、まず構造体開始処理を行う(S4223)。ここでは、マークアップ言語に構造体の開始を表すタグがある場合にそれを生成する。次に、構造体データ内の入れ子のデータ項目の位置を指すための副データ・ポインタに、現在のデータ・ポインタの値を代入する(S4224)。次に入れ子のデータ項目がある間(S4228,NO)、再帰的なデータ項目変換処理の呼び出し(S4225)を繰り返す。ただし、ここで呼び出されたデータ項目変換処理の中でのデータ・ポインタは副データ・ポインタに読み替える。入れ子のデータ項目が終了したら(S4228,YES)、構造体終了処理を行う(S4226)。ここでは、マークアップ言語に構造体の開始を表すタグがある場合にそれを生成する。入れ子のデータ項目の終了は、データ項目位置情報32の階層3202が、構造体の階層より深いか否かで判定する。
図4、図5の構造体の例を使用して、構造体データと、それを変換したマークアップデータの例を図10に示す。構造体データは、四角で示したデータ項目が、第1のデータ変換計算機101aのメモリ上に図10の上にある項目から連続して配置されたものである。データ項目の左上の数値は構造体データの先頭からのオフセットを表す。データ項目の下の数値はデータ項目のバイト数を表す。四角の中の文字や数値は、データ項目に格納されている値を表す。塗りつぶされた四角はデータ項目の間の隙間データを表す。
生成されたマークアップデータは、図6(a)に記載した送信側利用者プログラム41によると、変数「xml」に格納される。第1のデータ交換計算機101aは、データ送信部43により「xml」に格納されたマークアップデータ51をネットワーク102を介して第2のデータ交換計算機103に送信する。しかし、マークアップデータの送信を行う処理を送信側利用者プログラム41に記述することによって、送信側利用者プログラム41をデータ変換部42が実行する中で、データ送信部43を起動して「xml」に格納したマークアップデータ51を第2のデータ交換計算機103に送信するようにしてもかまわない。
第2のデータ交換計算機103は、データ受信部46によってネットワーク102を介して第1のデータ交換計算機101aから送信されたマークアップデータ51を受け取る。
受信側利用者プログラム44は、受け取ったマークアップデータを格納するために変数を指定するとともに、マークアップデータを構造体データ53に変換する際の構造体のデータ型を指定する構造体名を宣言する。
第2のデータ交換計算機103のデータ変換部45は、受信側利用者プログラム44に記述された処理手順に従い、まず、マークアップデータを格納するために指定した変数「xml」にマークアップデータを格納する(図6(b)の「マークアップデータの読み込み」)。続いて、マークアップデータから構造体データ53を生成して出力する処理を行う関数に記述された処理手順を実行する(図6(b)の「fromMarkUpData(“STRUCT_A”,&sa,xml)」)。
マークアップデータから構造体データ53を生成して出力する処理を行う関数に記述された処理手順は、データ項目位置情報34を参照しながら、マークアップデータを構造体データ53に変換する。マークアップデータから構造体データ53を生成して出力する処理を行う関数に記述された処理手順のフローチャートを図11〜図13に示す。
図11〜図13が図7〜図9の送信側のデータ変換処理と異なるのは、送信側のデータ変換部42が、構造体データ52からデータ項目の値を取り出してマークアップデータのエレメントを生成する処理を繰り返すのに対し、受信側のデータ変換処理は、図14に示すように、マークアップデータのエレメントの値を構造体データ53のデータ項目に格納する処理を繰り返す点である。
上記した第1の構造体定義生成部21は、第1のデータ交換計算機101aで実行可能なプログラム言語を使用して構造体定義ソース31とデータ項目位置情報32とを生成していた。第1のデータ交換計算機101aで実行可能なプログラム言語は1つとは限らず、複数あることが考えられる。このため、使用するプログラム言語を指定する情報をパラメータとして第1の構造体定義生成部21に与えてもかまわない。また同じように、第2の構造体定義生成部は、第2のデータ交換計算機103で実行可能なプログラム言語を使用して構造体定義ソース33とデータ項目位置情報34とを生成していた。第2のデータ交換計算機103で実行可能なプログラム言語は1つとは限らず、複数あることが考えられる。このため、使用するプログラム言語を指定する情報をパラメータとして第2の構造体定義生成部22に与えてもかまわない。
以上のように、この実施の形態のデータ交換システム、データ交換計算機、データ交換方法、第1の実行プログラム、第2の実行プログラムは、以下の効果を奏する。
第1のデータ構造定義情報と第1の位置情報とを使用してマークアップデータに変換するので、異なる構造を有する複数の変換元のデータでマークアップデータを生成する第1の実行部や第1の実行工程や第1の実行プログラムを共有して使用できる。このため、プログラムの本数が減り、プログラムの管理が容易になるとともに、共有して使用するので、変換元のデータの構造毎にプログラムを作成するよりも、作成効率が上がる。また、プログラムのバグにより受ける影響を少なくできる。また、マークアップデータを生成する手順に変更が発生したり、処理を高速化する等の変更が発生した場合であっても、第1の実行部や第1の実行工程や第1の実行プログラムを対応させる手間を少なくできる。
また、第2のデータ構造定義情報と第2の位置情報とを使用してマークアップデータから変換するので、複数の変換後のデータでマークアップデータから変換後のデータを生成する第2の実行部や第2の実行工程や第2の実行プログラムを共有して使用できる。このため、プログラムの本数が減り、プログラムの管理が容易になるとともに、共有して使用するので、変換後のデータの構造毎にプログラムを作成するよりも、作成効率が上がる。また、プログラムのバグにより受ける影響を少なくできる。また、マークアップデータから変換後のデータを生成する手順に変更が発生したり、処理を高速化する等の変更が発生した場合であっても、第2の実行部や第2の実行工程や第2の実行プログラムを対応させる手間が少なくなる。
また、マークアップデータはマークアップ言語を使用して生成する。このため、例えば、データ内容を示す文字列にデータ項目名をタグとして付加でき、文字列が対応するデータ項目名を容易に判断できる。また、構造体の開始と終了とをそれぞれ表すタグがあるため、構造体を容易に判断できる。
また、第1のデータ交換計算機は送信部を備え、第2のデータ交換計算機は受信部を備えた。このため、ネットワークで接続された計算機の間でマークアップデータを送受信して、データ交換を容易に実行できる。
また、第1のデータ構造定義情報と第1の位置情報とを自動生成する第1の構造体定義生成部を備えた。このため、第1のデータ構造定義情報と第1の位置情報とは、統一されたフォーマットで生成される。また、生成された内容にバグが無い。
また、第2のデータ構造定義情報と第2の位置情報とを自動生成する第2の構造体定義生成部を備えた。このため、第2のデータ構造定義情報と第2の位置情報とは、統一されたフォーマットで生成される。また、生成された内容にバグが無い。
また、第1のデータ構造定義情報と第1の位置情報と第2のデータ構造定義情報と第2の位置情報とは、同一の第1のデータ定義情報を元にして生成される。このため、ユーザが第1のデータ定義情報を用意するだけで、データ変換に使用する第1のデータ構造定義情報と第1の位置情報と第2のデータ構造定義情報と第2の位置情報とが自動生成され、データ変換を容易に実行できる。
また、データ交換方法は送信工程及び受信工程を有する。このため、ネットワークで接続された計算機の間でマークアップデータを送受信して、データ交換を容易に実行できる。
また、データ交換方法は、第1のデータ構造定義情報と第1の位置情報とを自動生成する第1の構造体定義生成工程を有する。このため、第1のデータ構造定義情報と第1の位置情報とは、統一されたフォーマットで生成される。また、生成された内容にバグが無い。
また、データ交換方法は、第2のデータ構造定義情報と第2の位置情報とを自動生成する第2の構造体定義生成工程を有する。このため、第2のデータ構造定義情報と第2の位置情報とは、統一されたフォーマットで生成される。また、生成された内容にバグが無い。
また、第1のデータ構造定義情報と第1の位置情報と第2のデータ構造定義情報と第2の位置情報とは、同一の第1のデータ定義情報を元にして生成される。このため、ユーザが第1のデータ定義情報を用意するだけで、データ変換に使用する第1のデータ構造定義情報と第1の位置情報と第2のデータ構造定義情報と第2の位置情報とが自動生成され、データ変換を容易に実行できる。
この実施の形態では、利用者プログラムで定義された構造体データとマークアップデータの間で相互に変換する方法において、構造体データ内のデータ項目位置情報を用いて、構造体データからマークアップデータに変換する手順と、逆にマークアップデータを構造体データに変換する手順を備えることを特徴とするマークアップデータの生成方法の一例を説明した。
また、構造体データ定義情報から、特定プログラム言語で記述された利用者プログラムが使用する構造体定義ソースと、構造体データ内のデータ項目位置情報を生成する手段を備え、生成された項目データ位置情報を、前記の構造体データとマークアップデータの間の変換手順で用いることを特徴とするマークアップデータの生成方法の一例を説明した。
また、マークアップ言語はXML(eXtensible Markup Language)であることを特徴とするマークアップデータの生成方法の一例を説明した。
また、高水準言語で記述された利用者プログラムの作成方法の一例を説明した。
また、マークアップデータを別の利用者プログラムに送るデータ送信手段と、マークアップデータを別の利用者プログラムから受け取るデータ受信手段を備えることを特徴とする利用者プログラムの作成方法の一例を説明した。
また、マークアップデータを送信する利用者プログラムと、受信する利用者プログラムを記述する高水準言語が異なることを特徴とする利用者プログラムの作成方法の一例を説明した。
実施の形態2.
この実施の形態では、1台のデータ交換計算機を使用してデータ交換を行う一例を説明する。
図15は、この実施の形態のデータ交換システムのシステム構成図である。図15のデータ交換計算機101は、図3に示した第1のデータ交換計算機101aと第2のデータ交換計算機103がそれぞれ備える要素のうち、データ送信部43とデータ受信部46以外の要素を全て備える。これは、データ交換計算機101は、1台の計算機でデータ交換を実現するため、マークアップデータをネットワークを介して送受信する必要がないためである。また、計算機の構成は図3と同様に図2の構成を備えるものとする。
以下に、データ交換計算機101の利用形態例を説明する。例えば、データ交換計算機101はプログラム言語Aを使用して作成したプログラムと、プログラム言語Bを使用して作成したプログラムとを実行できるものとする。構造体データ52は、プログラム言語Aで作成されたプログラムによって生成されるが、データの加工はプログラム言語Bを使用して作成したプログラムで行うものとする。このような場合には、構造体データ52をデータ変換部42によってマークアップデータに変換して、データ変換部45によってマークアップデータを構造体データ53に変換する。変換するために必要な構造体定義ソース31,33とデータ項目位置情報32,34と利用者プログラム41,44とは、上記した実施の形態1と同様に作成する。
以上のように、1台のデータ交換計算機によってもデータ交換が行えるので、例えば、構造体データを作成するプログラムと使用するプログラムとでプログラム言語が異なる場合に容易に対応できる効果がある。
実施の形態3.
実施の形態1では、第1のデータ交換計算機をクライアント装置とし、第2のデータ交換計算機をサーバ装置として、データ交換を行う例を説明した。しかし、第2のデータ交換計算機をクライアント装置とし、第1のデータ交換計算機をサーバ装置としてもかまわない。また、第1のデータ交換計算機と第2のデータ交換計算機とをそれぞれ異なるクライアント装置としてデータ交換を行うことも可能である。
11 構造体データ定義情報、21 第1の構造体定義生成部、22 第2の構造体定義生成部、31 構造体定義ソース、32 データ項目位置情報、33 構造体定義ソース、34 データ項目位置情報、41 利用者プログラム、42 データ変換部、43 データ送信部、44 利用者プログラム、45 データ変換部、46 データ受信部、51 マークアップデータ、52,53 構造体データ、100 データ交換システム、101 データ交換計算機、101a〜101f 第1のデータ交換計算機、102 ネットワーク、103 第2のデータ交換計算機、137 CPU、138 バス、139 ROM、140 RAM、141 CRT表示装置、142 K/B、143 マウス、144 通信ボード、145 FDD、146 磁気ディスク装置、147 オペレーティング・システム(OS)、148 ウィンドウシステム、149 プログラム群、150 ファイル群、186 CDD、187 プリンタ装置、188 スキャナ装置、1101 構造体名、1102,3202 階層、1103,3203 項目名、1104,3204 配列、1105,3205 データ型、1106 サイズ、1110,3210 項目情報、3207 オフセット、3208 バイト数。