JP4447373B2 - データ交換計算機 - Google Patents

データ交換計算機 Download PDF

Info

Publication number
JP4447373B2
JP4447373B2 JP2004144256A JP2004144256A JP4447373B2 JP 4447373 B2 JP4447373 B2 JP 4447373B2 JP 2004144256 A JP2004144256 A JP 2004144256A JP 2004144256 A JP2004144256 A JP 2004144256A JP 4447373 B2 JP4447373 B2 JP 4447373B2
Authority
JP
Japan
Prior art keywords
data
item
markup
bytes
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004144256A
Other languages
English (en)
Other versions
JP2005327057A (ja
Inventor
隆 土屋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2004144256A priority Critical patent/JP4447373B2/ja
Publication of JP2005327057A publication Critical patent/JP2005327057A/ja
Application granted granted Critical
Publication of JP4447373B2 publication Critical patent/JP4447373B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

第1のデータ型を有する第1のデータを第1のデータ型とは異なる第2のデータ型を有する第2のデータにデータ交換をする場合に、マークアップ言語で記述されたマークアップデータを介してデータ交換するデータ交換システム、及び、データ交換計算機、データ交換方法、第1実行プログラム、第2実行プログラムに関する。
インターネットの普及に伴い、ネットワークを介して異なるオペレーティング・システムの計算機間でデータの送受信を行うシステムの構築が必要とされている。このとき、データの送信側と受信側にそれぞれデータを使用する利用者プログラムを作成することとなるが、両者が異なるプログラム言語で作成することもある。利用者プログラムでは、互いに関連をもつ複数のデータ項目の集合ならびにデータ階層を、構造体と呼ばれるデータ構造で表す。ここでは構造体として表されたデータを構造体データと呼ぶ。異なる計算機システムまたは異なるプログラム言語では、構造体データの定義方法、計算機の記憶装置やファイル・システム上での格納方法も異なっており、それらの間で構造体データを交換するために、データ表現形式を取り決める必要がある。
計算機間で送受信されるデータの形式として、マークアップ言語が採用されることが一般的となっている。マークアップ言語とは、データ内容を表す文字列を、文書構造や修飾情報を表すタグで区切って記述する方式の言語で、代表的なものにXML(eXtensible Markup Language)がある。XMLは、階層をもつデータの構造を利用者が任意に定義できること、テキストファイルとして人間が可読であること等を特徴とする。ここでは、マークアップ言語の仕様を用いて表現されたデータをマークアップデータと呼ぶ。
マークアップ言語を用いて計算機間でデータを送受信するために、計算機上の構造体データをマークアップデータに変換する手順と、逆にマークアップデータを構造体データに変換する手順が必要であり、並びに、それらを実現する利用者プログラムの作成が必要である。
例えば、特開2003−241974号公報の「実行可能オブジェクト生成方法及びプログラム」(特許文献1)に示された、XML形式のデータを送受信する実行可能プログラムの作成方法がある。
特開2003−241974号公報
特許文献1を一例とする従来のマークアップデータ生成方法ならびに利用者プログラムの作成方法は、構造体データとマークアップデータを相互に変換するプログラムを構造体データごとに用意する必要があった。そのため利用者プログラム作成のための管理対象が増える、さらに実行可能プログラムのサイズが大きくなるという問題点があった。
また、データ変換手順を実現するプログラムに誤りがあったときや、データ変換手順を高速化するといった改良が行われたときに、構造体データとマークアップデータを相互に変換するプログラムをすべて作成し直す必要があり、利用者プログラムの再構築に手間がかかるという問題があった。
この発明は上記のような問題点を解決するためになされたもので、構造体データとマークアップデータを相互に変換するためのデータ変換手段、ならびにそれを実現するプログラムを特定プログラム言語ごとに1つだけ用意することによって、利用者プログラムの作成を効率化することを目的とする。
また、データ変換手順を実現するプログラムの修正および改良が行われたときに、利用者プログラムの再構築を簡単に行えるようにすることを目的とする。
この発明に係る第1のデータ型を有する第1のデータを入力して、上記第1のデータ型とは異なる第2のデータ型を有する第2のデータにデータ交換して出力するデータ交換システムは、上記第1のデータのデータ構造を定義した第1のデータ構造定義情報と、上記第1のデータのバイト数と上記第1のデータ型とを定義した第1の位置情報とを入力して、上記第1のデータ構造定義情報に基づいて上記第1のデータを入力し、入力した第1のデータから上記第1の位置情報のバイト数分のデータを取得して上記第1のデータ型のデータを文字列型のデータ文字列情報として含むマークアップデータを生成して出力する第1の実行部を備えた第1のデータ交換計算機と、上記第1のデータ交換計算機の第1の実行部が出力したマークアップデータと、上記第2のデータのデータ構造を定義した第2のデータ構造定義情報と、上記第2のデータのバイト数と第2のデータ型とを定義した第2の位置情報とを入力して、入力したマークアップデータから上記データ文字列情報を取得し、取得したデータ文字列情報を上記データ型の上記第2の位置情報のバイト数を有する第2のデータに変換し、変換したデータを上記第2のデータ構造定義情報に基づいて出力する第2の実行部を備えた第2のデータ交換計算機とを備えたことを特徴とする。
この発明のデータ交換システムは、第1の実行部は第1のデータ構造定義情報と第1の位置情報とを用いて第1のデータ型の第1のデータを取得してマークアップデータを生成する。このため、異なるデータ構造を有するデータからそれぞれマークアップデータを作成する場合であっても、それぞれのデータに対応する第1のデータ構造定義情報と第1の位置情報とを用意して第1の実行部に入力することによって、マークアップデータを生成する処理手順は、それぞれのデータ構造の違いに関係無く同じ処理手順を使用できる。この結果、第1の実行部は第1のデータ交換計算機のオペレーティング・システム上で動作可能なプログラム言語の種類毎に用意すれば良く、データ構造の違い毎に第1の実行部を用意する必要が無いので、第1の実行部の作成を効率化できる効果がある。
また、第2の実行部は、第2のデータ構造定義情報と第2の位置情報とを用いてマークアップデータを第2のデータ型の第2のデータにデータ交換する。このため、マークアップデータから異なるデータ構造を有するデータにそれぞれデータ交換する場合であっても、それぞれのデータに対応する第2のデータ構造定義情報と第2の位置情報とを用意して第2の実行部に入力することによって、マークアップデータからデータを生成する処理手順は、それぞれのデータ構造の違いに関係無く同じ処理手順を使用できる。この結果、第2の実行部は第2のデータ交換計算機のオペレーティング・システム上で動作可能なプログラム言語の種類毎に用意すれば良く、データ構造の違い毎に第2の実行部を用意する必要が無いので、第2の実行部の作成を効率化できる効果がある。
実施の形態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のデータ交換計算機とをそれぞれ異なるクライアント装置としてデータ交換を行うことも可能である。
実施の形態1のデータ交換システムのシステム構成図である。 第1のデータ交換計算機と第2のデータ交換計算機とのハードウェア構成図である。 この発明によるデータ交換システム、データ交換計算機、データ交換方法ならびに第1と第2の実行プログラムの作成方法を示す全体構成図である。 (a),(b)は構造体データ定義情報に設定する内容の例を示す図である。 (a)は構造体定義ソースの例を示し、(b)はデータ項目位置情報の例を示す図である。 (a)は送信側利用者プログラムの例を示し、(b)は受信側利用者プログラムの例を示す図である。 構造体データからマークアップデータを生成して出力する処理を行う関数に記述された処理手順のフローチャート図である。 構造体データからマークアップデータを生成して出力する処理を行う関数に記述された処理手順のフローチャート図である。 構造体データからマークアップデータを生成して出力する処理を行う関数に記述された処理手順のフローチャート図である。 構造体データとマークアップデータの例を示す図である。 マークアップデータから構造体データを生成して出力する処理を行う関数に記述された処理手順のフローチャート図である。 マークアップデータから構造体データを生成して出力する処理を行う関数に記述された処理手順のフローチャート図である。 マークアップデータから構造体データを生成して出力する処理を行う関数に記述された処理手順のフローチャート図である。 構造体データとマークアップデータの例を示す図である。 実施の形態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 バイト数。

Claims (1)

  1. 項目間にすき間データを含む複数の項目を有し、上記複数の項目の位置をバイト数で示したオフセット値が所定のプログラム言語のデータ型の所定のバイト数に依存した第1のデータの各項目のバイト数とデータ型とが上記所定のプログラム言語のデータ型の所定のバイト数に依存しない形式で定義された第1のデータ定義情報を入力先頭の項目のオフセット値を0とし、先頭以外の項目に対して、当該項目のデータ型に対応した上記所定のプログラム言語のデータ型の所定のバイト数の倍数であって、当該項目の1つ前の項目のオフセット値に上記所定のプログラム言語のデータ型の所定のバイト数に依存しない形式で定義された上記1つ前の項目のバイト数を加算した値よりも大きい倍数を求めて当該項目のオフセット値とし、各項目のオフセット値と上記第1のデータ定義情報で定義された所定のプログラム言語のデータ型の所定のバイト数に依存しない形式の各項目のバイト数とデータ型とを有する第1の位置情報を生成する第1の構造体定義生成部
    上記第1の構造体定義生成部が生成した上記第1の位置情報を入力するとともに、上記第1のデータを入力し、上記第1の位置情報の各項目のオフセット値に基づいて、入力した第1のデータの各項目の開始する位置を求め、上記第1の位置情報の所定のプログラム言語のデータ型の所定のバイト数に依存しない形式の各項目のバイト数とデータ型とに基づいて、上記第1のデータの各項目の開始する位置から上記第1のデータに含まれたすき間データを除いた項目ごとのデータを取得し、取得した項目ごとのデータを文字列型のデータ文字列情報に変換して、変換した文字列型のデータ文字列情報を含むマークアップデータを生成して出力する第1の実行部とを
    備えることを特徴とするデータ交換計算機。
JP2004144256A 2004-05-14 2004-05-14 データ交換計算機 Expired - Fee Related JP4447373B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004144256A JP4447373B2 (ja) 2004-05-14 2004-05-14 データ交換計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004144256A JP4447373B2 (ja) 2004-05-14 2004-05-14 データ交換計算機

Publications (2)

Publication Number Publication Date
JP2005327057A JP2005327057A (ja) 2005-11-24
JP4447373B2 true JP4447373B2 (ja) 2010-04-07

Family

ID=35473378

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004144256A Expired - Fee Related JP4447373B2 (ja) 2004-05-14 2004-05-14 データ交換計算機

Country Status (1)

Country Link
JP (1) JP4447373B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5119884B2 (ja) * 2007-11-21 2013-01-16 富士電機リテイルシステムズ株式会社 稼動情報収集システム
JP6075210B2 (ja) * 2013-05-24 2017-02-08 三菱電機株式会社 通信データ構造圧縮装置、通信データ構造復元装置、通信データ圧縮復元システム、及び、通信データ圧縮復元方法

Also Published As

Publication number Publication date
JP2005327057A (ja) 2005-11-24

Similar Documents

Publication Publication Date Title
US7391735B2 (en) Parsing messages with multiple data formats
US7774404B2 (en) Managing software component versions within a service oriented architecture
US9424003B1 (en) Schema-less system output object parser and code generator
US9652312B2 (en) Realtime processing of streaming data
JP5188284B2 (ja) サービス接続システム及びサービス接続方法
US8429624B2 (en) Application programming interface (API) router implementation and method
US20060075334A1 (en) Information processing apparatus, history file generation method and program
WO2008116760A2 (en) Method and apparatus for processing extensible markup language security messages using delta parsing technology
US20110137958A1 (en) Implementation Method of DATACOM Data Command Platform
US6766350B1 (en) Shared management of data objects in a communication network
US9582523B2 (en) Apparatus and method for converting VO
US20080077601A1 (en) Method, Apparatus and System for Transforming, Converting and Processing Messages Between Multiple Systems
JP5166565B2 (ja) Exiエンコーダおよびプログラム
US20090256731A1 (en) Information processing apparatus, information processing method, and computer program
JP4447373B2 (ja) データ交換計算機
JP2009252153A5 (ja)
CN111143310B (zh) 日志记录方法及装置、可读存储介质
JP2009301538A (ja) サービスフロー処理装置及び方法
JP2009059215A (ja) 構造化文書処理装置、構造化文書処理方法
JP2006216024A (ja) 交換フォーマットメッセージの効率的な変換
US7769896B2 (en) Method, apparatus and system for dispatching messages within a system
CN111324645A (zh) 区块链的数据处理方法及装置
JP6330277B2 (ja) 送信装置、送信方法、送信プログラム、及び、中継システム
JP2004234405A (ja) プロトコル符号化/復号化装置
JP5168398B2 (ja) 装置、データ処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090901

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091030

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100119

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100120

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130129

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130129

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees