(57)【要約】      （修正有）【課題】情報処理装置から他の情報処理装置へデータを転送する場合でも、転送したデータを他の情報処理装置で使用するために必要な他のデータを含める。【解決手段】本発明は、データ集合体を他の情報処理装置に転送するためのデータを作成するプログラムであって、第１のデータ集合体を他の情報処理装置に転送するためのデータを、前記第１のデータ集合体を使用するために必要な情報を０個以上含めて作成する処理を情報処理装置に実行させる。【選択図】図３
2019049854.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータ集合体を他の情報処理装置に転送するためのデータを作成するプログラムであって、
前記プログラムは、前記第１のデータ集合体を使用するために必要な情報を０個以上含めて
前記転送するためのデータを作成することを特徴とするプログラム。
【請求項２】
請求項１のプログラムは、
他の情報処理装置に転送するための対象および他の情報処理装置に転送するためのデータの保存先を
ユーザーが指定することが出来ることを特徴とするプログラム。
【請求項３】
請求項１のプログラムによって作成されたデータから、
前記第１のデータ集合体と、前記第１のデータ集合体を使用するために必要な情報を０個以上作成することを
特徴とするプログラム。
【請求項４】
前記第１のデータ集合体と、前記第１のデータ集合体を使用するために必要な情報の少なくともいずれかを、
保存することが必要であるかどうかを判断し、
必要であるならばいかなるキーとして保存するかを決定して保存の要否を決定するプログラムであって、
保存が必要であると判断された場合は適切なキーを決定して保存することを特徴とするプログラム。
【請求項５】
０個以上の甲ならびに０個以上の乙の少なくともいずれかがあり、
甲はいかなる種類ならびに量の甲または乙によって構成されているのかが定義されている場合、
甲ならびに乙がそれぞれ０個以上指定されたときに、
前記甲ならびに乙がいかなる種類および量の乙によって構成されているのかを算出することを特徴とするプログラム。
【請求項６】
請求項５に記載のプログラムは、甲が直接または間接的に前記甲自身を参照していることを検知した場合、
計算を中止し、前記中止を行った旨を計算結果として示すことを特徴とするプログラム。
【請求項７】
請求項１のデータ集合体の構成が、複数の情報処理装置間で異なる場合は、
前記データ集合体を受け取る情報処理装置は、
前記データ集合体を受け取るときに、情報の一部または全部を適切な内容に変更することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置から他の情報処理装置へデータを転送することを可能にするプログラム及び情報処理システムであって、前記他の情報処理装置で前記データを使用するために必要な他のデータを０個以上含めたデータを転送するプログラム及び情報処理システムに関する。
【背景技術】
【０００２】
従来、情報処理装置から他の情報処理装置へデータを転送することを可能にするプログラム及び情報処理システムが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特願２０１７−０９６２６２
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１に開示された技術では、転送したデータを他の情報処理装置で使用するために必要な他のデータを含めることが難しいいう問題がある。ここで、データ集合体は、配列、連想配列、構造体、ユーザ定義型の変数、クラス及び共用体等、０個以上の値を持つことができる変数である。変数には、オブジェクト、及びオブジェクトのインスタンスが含まれる。構造体等のデータ集合体は、夫々に変数である０個以上のメンバを含んでいる。データ集合体中の変数が要素と呼称される場合は、メンバには要素が含まれる。０個以上のメンバは、順番等の互いの関係が定義されていてもよく、０個以上の何れかにデータが代入される。
【０００５】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、データ集合体を他の情報処理装置に転送するためのデータを作成するプログラムであって、前記プログラムは、前記データ集合体を使用するために必要な情報を０個以上含めて前記転送するためのデータを作成することを特徴とするプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一態様のプログラムは、第１のデータ集合体を他の情報処理装置に転送するためのデータを、前記第１のデータ集合体を使用するために必要な情報を０個以上含めて作成する処理とを情報処理装置に実行させる。
【０００７】
本発明の一態様のプログラムは、 ０個以上の甲ならびに０個以上の乙の少なくともいずれかがあり、甲はいかなる種類ならびに量の甲または乙によって構成されているのかが定義されている場合、甲ならびに乙がそれぞれ０個以上指定されたときに、前記甲ならびに乙がいかなる種類および量の乙によって構成されているのかを算出する処理を情報処理装置に実行させる。
【発明の効果】
【０００８】
本発明の一側面によれば、構造体等のデータ集合体に係るデータであって、前記データを使用するために必要な情報を０個以上含めたデータを転送することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置を示すブロック図。
【図２】料理に含まれる料理および食品の一例を例示した図。
【図３】情報処理装置１が情報処理装置２へデータを転送する過程の一例を例示した図。
【図４】図３を、料理の情報を転送する場合に適用した場合の一例を例示した図。
【図５】図４を、料理はdish型データ集合体であって、前記料理および前記料理を使用するために必要なデータがdishANDfood型データ集合体である場合の一例を例示した図。
【図６】情報処理装置１が記憶している、甲と乙の組み合わせの一例を示した図。ここでは甲は料理で乙は食品。実際には料理または食品を示すキー（例えば、DS11010のような英数字）によって記憶されていてもよいが、説明のため、名称がキーとして格納されているものとして説明することがある。
【図７】実施の形態２における情報処理装置が行う計算の対象となるデータの一例を示した図表。
【図８】本実施形態実施の形態４に係る情報処理装置が行う計算の処理の手順を示したフローチャート。
【図９】本例示における情報処理装置が行う計算によって作成されたデータの一例を示した図表。ただし、「１〜２」などの「〜」を挟む数値は、その甲または乙の数量、例えば「レモン 50〜200」は「レモンが、数量５０〜２００」であることを示す。
【図１０】実施の形態８に係る情報処理システムの構成を示すブロック図。
【図１１】実施の形態８に係る情報処理装置１が実行する処理の手順を示すフローチャート。
【図１２】実施の形態３に係る第２情報処理装置２が実行する処理の手順を示すフローチャート
【図１３】配列変換の手順を示すフローチャート。
【図１４】連想配列変換の手順を示すフローチャート。
【図１５】外部からアクセスできないメンバを持つデータ集合体４に対する処理の概念を示す概念図。
【図１６】情報処理装置が行うテキスト変換の処理の手順を示したフローチャート。
【図１７】tape二次元配列テキスト変換の手順を示したフローチャート。
【図１８】tape一次元配列テキスト変換の手順を示したフローチャート。
【発明を実施するための形態】
【００１０】
＜ハードウェア構成＞
図１は、情報処理装置を示すブロック図である。情報処理装置１はインターネット、ＬＡＮ(Local Area Network)又は携帯電話網等の通信網Ｎにより他の情報処理装置と相互に接続されている。情報処理装置１は、例えばサーバ装置、パーソナルコンピュータ又はスマートフォン等である。情報処理装置１は、ＣＰＵ(Central Processing Unit)１１、記憶部１２、ＲＡＭ（Random Access Memory）１３、入力部１４、表示部１５、通信部１６及びドライブ部１７を備える。
ＣＰＵ１１は、バスを介してハードウェア各部と接続されている。ＣＰＵ１１は例えば一もしくは複数のＣＰＵ又はマルチコアＣＰＵ等を備える。ＣＰＵ１１は、記憶部１２に記憶されたプログラム１２Ｐに従いハードウェアの各部を制御する。
記憶部１２は例えばハードディスク又は大容量メモリ等である。ドライブ部１７は、光ディスク等の記録媒体１０から情報を読み取る。記憶部１２にはＣＰＵ１１が処理を行う際に必要とする種々のデータ及びプログラム１２Ｐを格納する。ＣＰＵ１１は、記録媒体１０に記録されたプログラム１２Ｐをドライブ部１７に読み取らせ、読み取ったプログラム１２Ｐを記憶部１２に記憶させる。ＣＰＵ１１は、必要に応じてプログラム１２Ｐを記憶部１２からＲＡＭ１３へロードし、ロードしたプログラム１２Ｐに従って、各種の処理を実行する。なお、プログラム１２Ｐは、情報処理装置１の外部からダウンロードされてもよく、予め記憶部１２に記憶されていてもよい。この場合、情報処理装置１は、ドライブ部１７を備えていない形態であってもよい。
ＲＡＭ１３は例えばＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）、フラッシュメモリ等である。ＲＡＭ１３は、記憶部としても機能し、ＣＰＵ１１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
入力部１４はマウス又はキーボード等の入力デバイスであり、受け付けた操作情報をＣＰＵ１１へ送信する。表示部１５はＣＰＵ１１から送信された画像データを表示する。表示部１５は例えば液晶ディスプレイである。通信部１６は、例えば無線ＬＡＮカード又は携帯電話用通信モジュール等であり、通信網Ｎを介して各種情報を送受信する。なお、各種情報のやりとりは、例えばＣＤ−ＲＯＭ、フラッシュメモリなどの記憶媒体であってもよく、その場合は、例えばドライブ部１７によって前記記憶媒体に各種情報が書き込まれ、例えば情報処理装置２のドライブ部２７を介して各種情報がやりとりされる。
【００１１】
＜甲を含む甲と乙＞
第１の情報処理装置から第２の情報処理装置に送信したいデータであるＡを表現するためにはＢ、Ｃが必要で、Ｂを表現するためにはＥ、Ｆが必要で、Ｃを表現するためにはＧが必要であるなど、Ａを表現するためにはＡだけを送信すればよいとは限らない状況があるとする。（図２の図形２０１を「Ａ」、図形２１１を「Ｂ」、図形２１２を「Ｃ」と読み替えていただきたい）
【００１２】
前記Ａを表現するために、前記Ａに「ＢとＣが含まれている」という情報が格納されていても、前記Ａに、前記Ｂおよび前記Ｃが何を示すかは格納されていない。
しかし、前記第２の情報処理装置に、前記Ｂまたは前記Ｃの情報が格納されているとは限らない、前記ＢまたはＣの情報が前記情報処理装置２に存在しない場合、前記情報処理装置２に転送した「Ａ」のデータが、情報処理装置２では不完全な情報となる。
それを防ぐため、前記第１の情報処理装置に格納されている前記Ａが何を含んでいるかを求め、その情報を、他の情報処理装置に転送するデータに格納しなければならない。
【００１３】
前記情報処理装置２に前記Ａを保存するときに一定のルールによってＡを示すキーが与えられている場合、情報処理装置２では、同じキーに異なるデータが関連付けられているかもしれないから、情報処理装置２でも情報処理装置１と同じキーによって前記Ａを記憶すればよいとは限らない。
【００１４】
すなわち、情報処理装置２にて前記を保存するたに必要となる、キーを特定するための情報を求め、その情報を、他の情報処理装置に転送するデータに格納しなければならない。
【００１５】
料理と食品を扱うソフトウェアを一例として例示し、説明する。
【００１６】
例えば「牛皿」という料理と「ごはん」という料理からなる料理「牛丼」は、図２に示す通り、前記「牛皿」および前記「ごはん」のデータがないと不完全なデータとなり、前記「牛皿」、前記「ごはん」もそれを構成する食品のデータがないと不完全なデータとなる。
つまり、前記「牛丼」の料理データを送るならば、前記「牛丼」を構成する料理および食品のデータも送らなければならないことになる。なお、図３では料理を構成するものはすべて料理かすべて食品かのいずれかであるが、必ずしもそのいずれかであるとは限らない。例えば「レモン牛丼」なるレモン（食品）と牛丼（料理）からなる料理なども考えられる。また、0個の料理および食品からなる料理が存在していてもよい。例えば「100円引き」など、情報処理装置が料理として扱うと都合のよい、料理ではない概念を料理として扱うことである
【００１７】
前記「牛丼」の例では、前記牛丼を示す第１のデータ集合体に、前記第１のデータ集合体が、前記「牛皿」、前記「ごはん」を含む旨が格納されていても、前記「牛皿」、前記「ごはん」が何を含むかが格納されているわけではない。
しかし、他の情報処理装置に前記「牛皿」または前記「ごはん」の情報が格納されているとは限らず、前記「牛皿」または前記「ごはん」のデータが前記情報処理装置２に存在しない場合、前記情報処理装置２に転送した前記「牛丼」のデータが、前記他の情報処理装置では不完全な情報となる。
それを防ぐため、第１のデータ集合体に格納されている、前記第１のデータ集合体が示す料理・食品に含まれる料理・食品が何であるかを求め、その情報を、他の情報処理装置に転送するデータに格納しなければならない。
【００１８】
情報処理装置１に料理を保存するときに一定のルール（例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える）にしたがって決定された値（たとえば文字列）をキーとして値が記憶されている。
しかし、情報処理装置２では、同じキーに登録されている料理や食品が存在しないかもしれないし、同じキーに違う料理や食品が登録されているかもしれない。
【００１９】
すなわち、前記「一定のルール」に従ってキーを決定するために必要な情報（前記の例では料理の大分類および小分類）を示す情報も送らなければならない。
つまり、他の情報処理装置では、情報処理装置１と同じ料理や食品を、情報処理装置１と同じキーで記憶すればよいとは限らない。
【００２０】
これらは例示であり、牛丼などの料理や食品に関するものに限定されるものではなく、前記一定のルールが大分類および小分類を決定する方法に関するものに限定されるものでもない。
【００２１】
＜実施の形態１＞
情報処理装置１は、記憶部１２またはＲＡＭ１３または記憶媒体１０に記憶されたデータまたは入力部１４を介して入力されたデータを、他の情報処理装置で必要な他のデータを０個以上含めたデータを含めた、他の情報処理装置が認識できる状態のデータを作成し転送する。
【００２２】
前記転送に用いる手段を例示すると、例えば通信部１６および通信網Ｎを介した送受信、ドライブ部１７が記憶媒体への書き込みを行って前記記憶媒体をドライブ部２７が読み取る、表示部１５に表示された内容を入力部２４を介して情報処理装置に入力する、図示しない出力部（例えばプリンターがＱＲコード（登録商標）などのバーコードを印字して、前記バーコードを情報処理装置２の図示しない認識部が認識する）などが考えられるが、情報処理装置２が認識できる方式であれば何でもよい。
【００２３】
情報処理装置２は、受け取ったデータから必要なデータを取り出し、記憶部２２またはＲＡＭ２３または記憶媒体２０に記憶する。
【００２４】
図３を参照し、情報処理装置1に記憶された情報を転送する方法の一例を例示する。
データ３０１は、情報処理装置１が転送しようとしているデータ。
【００２５】
データ３００は、データ３０１を他の情報処理装置が使用するために必要なデータ。
例えば、情報処理装置１の図示しない記憶部に記憶された図示しないプログラムに基づいて図示しないＣＰＵがデータ３０１を使用するために必要であると判断したデータを情報処理装置１の図示しない記憶部またはＲＡＭまたは記憶媒体から読み込み、データ３００とすることが考えられるが、これに限られない。
【００２６】
データ３０２は、データ３０１および０個以上のデータ３００を記憶したデータ。
たとえば、前記データ３０１および前記データ３００を格納することができるメンバを持つデータ集合体とすることが考えられるが、これに限られない。
【００２７】
データ３０３は、データ３０２から作成された、他の情報処理装置に転送できる状態のデータである。
【００２８】
前記データ３０３は、例えば通信手段Ｎを介して情報処理装置２に転送され、前記情報処理装置２ではデータ３５３としてこれを扱う。
前記通信手段Ｎは、例えば通信網や、ＣＤ−ＲＯＭやフラッシュメモリ等の記憶媒体を用いる等が考えられるが、これに限られない。
【００２９】
データ３５３は、例えば前記通信手段Ｎを介するなどの方法によって情報処理装置１から受け取ったデータである。
【００３０】
データ３５２は、データ３５３から作成されたデータであって、データ３５１ならびに０個以上のデータ３５０となるデータが格納されている。
ただし、情報処理装置２に保存された図示しないプログラムに基づく図示しないＣＰＵの判断によって、データ３５１ならびにデータ３５０の一部または全部が作成されない場合もある。
【００３１】
つまり、情報処理装置１のＣＰＵ１１はプログラム１２Ｐに基づいて、転送したいデータ３０１を転送するときに、前記データ３０１を他の情報処理装置が使用する際に必要となるデータは何であるかを判断して、データ３０１および前記判断によって必要とされたデータ３００を０個以上含めたデータ３０２を作成し、前記データ３０２から他の情報処理装置に転送できるデータ３０３を作成し、前記データ３０３を転送する。
情報処理装置２のＣＰＵ２１はプログラム２２Ｐに基づいて、前記転送によって情報処理装置２が受け取ったデータ３５３から、情報処理装置２はデータ３５２を作成し、前記データ３５２に記憶された情報からデータ３５０を取得する。情報処理装置２は、データ３５０がデータ３５１を表現するために必要な情報であるか否かを判断（前記判断のためにデータ３５１を取得してもよい）し、必要である場合は情報処理装置２の記憶部の記憶部２２またはＲＡＭ２３または記憶媒体２０に記憶し、前記データ３５１が取得されていなければ前記データ３５１を取得し、前記データ３５１を情報処理装置２の記憶部２２またはＲＡＭ２３または記憶媒体２０に記憶する。
【００３２】
データ３０１および０個以上のデータ３００からデータ３０２を作成する方法を説明する。
【００３３】
ただし、データ３００はデータ３０１を使用するために必要なデータであると情報処理装置１のプログラムＰ１２に基づいてＣＰＵ１１が判断したものであって、記憶部１２またはＲＡＭまたは記憶媒体１３または記憶媒体１０に記憶されたものである。
【００３４】
情報処理装置１のＣＰＵ１１は、記憶部１２に記憶されたプログラム１２Ｐに基づき、データ３０１を他の情報処理装置にて必要となるデータが何であるかを判断し、前記データを記憶部１２またはＲＡＭ１３または記憶媒体１０から読み込んでデータ３００とし、データ３０１ならびにデータ３００を含むデータ３０２を作成する。前記データ３０２を記憶部１２またはＲＡＭ１３または記憶媒体１０に格納し、処理を終了する。
【００３５】
データ集合体３０２から他の情報処理装置に転送できるデータ３０３を作成する方法を説明する。
【００３６】
情報処理装置１は、前記データ３０２を一定のルールに従って文字列に変換し、前記文字列をデータ３０３とする。
前記一定のルールとは、例えば前記データ３０２をテキスト変換によって文字列に変換することが考えられるが、これに限られない。
【００３７】
他の情報処理装置に転送できるデータ３０３を他の情報処理装置に転送する場合、前記転送によって他の情報処理装置が受け取ったデータは、データ３５３として扱われる。
【００３８】
受け取ったデータ３５３からデータ３５２を作成する方法を説明する。
【００３９】
情報処理装置２は、前記データ３５３を一定のルールに従って文字列に変換し、前記文字列をデータ３５２とする。
前記一定のルールとは、例えば前記データ３５３をテキスト変換によってデータ集合体に変換することが考えられるが、これに限られない。
【００４０】
データ３５２から、データ３５０およびデータ３５１を作成する方法を説明する。
【００４１】
情報処理装置２は、データ３５２に格納されたデータを取り出してデータ３５０をおよびデータ３５１を作成し、
記憶部２２に格納されたプログラム２２Ｐに基づいて、ＣＰＵ２２が、前記データ３５０の内容と、前記情報処理装置２に格納されたデータを参照し、前記情報処理装置２に記憶させるべきデータであると判断した場合は、ＣＰＵ２２は、データ３５０の一部または全部を情報処理装置２の記憶部２２またはＲＡＭ２３または記憶媒体２０に記憶させる。
データ３５１に対しても、同様の処理を行う。
【００４２】
図４を参照し、料理の情報を他の情報処理装置に転送する方法の一連を例示する。
データ４０１は、情報処理装置１が転送しようとしているデータ。（図３のデータ３０１に対応する）
【００４３】
データ４００は、データ４０１を他の情報処理装置が使用するために必要なデータ（例えば、データ４０１が示す料理を構成する料理または材料となる食品のデータ）。図３のデータ３００に対応する。
例えば、情報処理装置１の図示しない記憶部に記憶された図示しないプログラムに基づいて図示しないＣＰＵがデータ４０１を使用するために必要であると判断したデータを情報処理装置１の図示しない記憶部またはＲＡＭまたは記憶媒体から読み込み、データ４００とすることが考えられるが、これに限られない。
【００４４】
データ４０２は、データ４０１および０個以上のデータ４００を記憶したデータ。図３のデータ３０２に対応する。
例えば、前記データ４０１および前記データ４００を格納することができるメンバを持つデータ集合体とすることが考えられるが、これに限られない。
ＯＫ
【００４５】
メンバ４０２１は、前記データ４０２のメンバであって、前記データ４０１を格納するメンバ。
【００４６】
メンバ４０２１ＳＥＴは、情報処理措置２がメンバ４０２１に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置２に料理を保存するときに一定のルール（例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。）にしたがってキーを決定するために必要なデータなどが考えられるが、これに限られない。
【００４７】
メンバ４０２２は、前記データ４０２のメンバであって、前記データ４０１を他の情報処理装置が使用するために必要なデータを格納するメンバ。
例えば、前記データ４０１または前記メンバが料理である場合は、前記データ４０２は前記データ４０１が示す料理に含まれる料理または食品を示すデータが格納されることが考えられるが、これに限られない。
【００４８】
メンバ４０２２ＳＥＴは、メンバ４０２２に記憶されたデータを情報処理装置２が記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置２に料理または食品を保存するときに一定のルール（例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。食品の場合はメンバ４０２２に格納されたキーをそのまま情報処理装置２に記憶させるべき旨を示すデータただし、これに限られない。）にしたがってキーを決定するために必要なデータ。
【００４９】
データ４０３は、データ４０２から作成された、他の情報処理装置に転送できる状態のデータである。データ４０３は、図３のデータ３０３に対応する。
【００５０】
前記データ４０３は、例えば通信手段Ｎを介して情報処理装置２に転送され、前記情報処理装置２ではデータ４５３としてこれを扱う。
前記通信手段Ｎは、例えば通信網や、ＣＤ−ＲＯＭやフラッシュメモリ等の記憶媒体を用いる等が考えられるが、これに限られない。
【００５１】
データ４５３は、例えば前記通信手段Ｎを介するなどの方法によって情報処理装置１から受け取ったデータである。前記データ４５３は、図３のデータ３５３に対応する。
【００５２】
データ４５２は、データ４５３から作成されたデータであってデータ４５１ならびに０個以上のデータ４５０となるデータが格納されている。前記格納は、データ４５２がデータ集合体であって、前記データ４５２のメンバとして格納されていることが考えられるが、これに限られない。
ただし、情報処理装置２に保存された図示しないプログラムに基づく図示しないＣＰＵの判断によって、データ４５１ならびにデータ４５０の一部または全部が作成されない場合もある。
データ４５２は、図３のデータ３５２に対応する。
【００５３】
メンバ４５２１は、データ４５２のメンバであって、情報処理装置１ではメンバ４０２１に格納されていたデータが格納されている。ただし、メンバ４０２１に格納されたデータからメンバ４５２１に格納されたデータが作成されるまでの間に、必要に応じて、データの一部または全部が変更されていてもよい。（例えば、メンバ４０２１にデータを格納する際に作者を示す情報を付加するなどが考えられるが、これに限られない）
【００５４】
メンバ４５２１ＳＥＴは、情報処理措置２がメンバ４５２１に記憶されたデータを記憶するために必要な情報を格納するメンバ。
例えば、例えば、情報処理装置２に料理を保存するときに一定のルール（例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。）にしたがってキーを決定するために必要なデータなどが考えられるが、これに限られない。
【００５５】
メンバ４５２２は、情報処理装置２がメンバ４５２１に記憶されたデータを使用するために必要な情報を格納するメンバ。
例えば、前記データ４５２１または前記メンバが料理である場合は、前記データ４５２１が示す料理に含まれる料理または食品を示すデータが格納されることが考えられるが、これに限られない。
【００５６】
メンバ４５２２ＳＥＴは、情報処理措置２がメンバ４５２２に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置２に料理を保存するときに一定のルール（例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。食品の場合はメンバ４０２２に格納されたキーをそのまま情報処理装置２に記憶させるべき旨を示すデータただし、これに限られない。）にしたがってキーを決定するために必要なデータ。
【００５７】
データ４５０は、情報処理装置２がメンバ４５１格納された値を使用するために必要なデータを格納するメンバ。図３のデータ３５０に対応する。
【００５８】
メンバ４５１は、情報処理装置２に転送するデータとして情報処理装置１から送信されたデータを格納するメンバ。図３のデータ３５１に対応する。
【００５９】
つまり、情報処理装置１のＣＰＵ１１はプログラム１２Ｐに基づいて、転送したいデータ４０１を転送するときに、前記データ４０１を他の情報処理装置が使用する際に必要となるデータは何であるかを判断して、データ４０１および前記判断によって必要とされたデータ４００を０個以上含めたデータ４０２を作成し、前記データ４０２から他の情報処理装置に転送できるデータ４０３を作成し、前記データ４０３を転送する。
情報処理装置２のＣＰＵ２１はプログラム２２Ｐに基づいて、前記転送によって情報処理装置２が受け取ったデータ４５３から、情報処理装置２はデータ４５２を作成し、前記データ４５２に記憶された情報からデータ４５０を取得する。情報処理装置２は、データ４５０がデータ４５１を表現するために必要な情報であるか否かを判断（前記判断のためにデータ４５１を取得してもよい）し、必要である場合は情報処理装置２の記憶部の記憶部２２またはＲＡＭ２３または記憶媒体２０に記憶し、前記データ４５１が取得されていなければ前記データ４５１を取得し、前記データ４５１を情報処理装置２の記憶部２２またはＲＡＭ２３または記憶媒体２０に記憶する。
【００６０】
データ集合体４０１および０個以上のデータ４００からデータ集合体４０２を作成する方法を一例として例示する。
【００６１】
ただし、データ４００は、データ集合体４０１を使用するために必要なデータであると情報処理装置１のプログラムＰ１２に基づいてＣＰＵ１１が判断したものであって、記憶部１２またはＲＡＭ１３または記憶媒体１０に記憶されたものである。
【００６２】
ここでは、情報処理装置１ならびに情報処理装置２は、キーとデータ（値）が関連付けられて記憶部１２（情報処理装置２では記憶部２２）またはＲＡＭ１３（情報処理装置２ではＲＡＭ２３）または記憶媒体１０（情報処理装置２では記憶媒体２０）に記憶されている場合を例示する。ただし、これ以外の方式によって記憶されていてもよい。また、データの記憶場所は記憶部１２またはＲＡＭ１３または記憶媒体１０以外の場所、例えば必要の都度にダウンロードされる、などであってもよい。
【００６３】
データ４０２のメンバ４０２１に、データ４０１を格納する。
【００６４】
データ４０２のメンバ４０２１ＳＥＴに、データ４０１を情報処理装置２が記憶するために必要な情報を格納する。
例えば、データ４０２に格納された情報を、データ４０２１に格納された情報を情報処理装置２が記憶するために必要な情報を格納することが考えられるが、これに限られない。
【００６５】
データ４０２のメンバ４０２２に、データ４０２を使用するために必要な情報を格納する。
【００６６】
データ４０２のメンバ４０２２ＳＥＴに、メンバ４０２２を情報処理装置に記憶させるために必要な情報を格納する。
例えば、データ４０２に格納された情報を、データ４０２２に格納された情報を情報処理装置２が記憶するために必要な情報を格納することが考えられるが、これに限られない。
【００６７】
情報処理装置のＣＰＵ１１は、記憶部１２に記憶されたプログラム１２Ｐに基づき、データ４０１を他の情報処理装置にて必要となるデータが何であるかを判断し、前記データを記憶部１２またはＲＡＭ１３または記憶媒体１０から読み込んで、メンバ４０２１またはメンバ４０２２に格納する。前記メンバ４０２１または前記メンバ４０２２を他の情報処理装置に記憶させるために必要な情報をメンバ４０２１ＳＥＴ、メンバ４０２２ＳＥＴに格納する。メンバ４０２１、メンバ４０２１ＳＥＴ、メンバ４０２２、メンバ４０２２ＳＥＴを含んだデータ４０２を記憶部１２またはＲＡＭ１３または記憶媒体１０に格納し、処理を終了する。
【００６８】
データ４０２から他の情報処理装置に転送できるデータ４０３を作成する方法を説明する。
【００６９】
情報処理装置１は、前記データ４０２を一定のルールに従って文字列に変換し、前記文字列をデータ４０３とする。
前記一定のルールとは、例えば前記データ４０２をテキスト変換によって文字列に変換することが考えられるが、これに限られない。
【００７０】
他の情報処理装置に転送できるデータ４０３を他の情報処理装置に転送する場合、前記転送によって他の情報処理装置が受け取ったデータは、データ４５３として扱われる。
【００７１】
受け取ったデータ４５３からデータ２５２を作成する方法を説明する。
【００７２】
情報処理装置１は、前記データ４５２を一定のルールに従って文字列に変換し、前記文字列をデータ４５３とする。
前記一定のルールとは、例えば前記データ４５２をテキスト変換によってデータ集合体に変換することが考えられるが、これに限られない。
【００７３】
データ４５２から、データ４５０およびデータ４５１を作成する方法を説明する。
【００７４】
情報処理装置２は、データ４５２に格納されたデータを取り出してデータ４５０をおよびデータ４５１を作成し、
記憶部２２に格納されたプログラム２２Ｐに基づいて、ＣＰＵ２２が、前記データ４５０の内容と、前記情報処理装置２に格納されたデータを参照し、前記情報処理装置２に記憶させるべきデータであると判断した場合は、ＣＰＵ２２は、データ４５０の一部または全部を情報処理装置２の記憶部２２またはＲＡＭ２３または記憶媒体２０に記憶させる。
【００７５】
データ４５１に対しても、同様の処理を行う。
【００７６】
図５を参照し、dish型データ集合体を他の情報処理装置に転送する方法の一例を例示する。
データ５０１は、情報処理装置1が転送しようとしているデータ。（図４のデータ４０１に対応する）
【００７７】
データ５００は、データ４０１を他の情報処理装置が使用するために必要なデータ（例えば、データ５０１が示す料理を構成する料理または材料となる食品のデータ）。図４のデータ４００に対応する。
例えば、情報処理装置１の図示しない記憶部に記憶された図示しないプログラムに基づいて図示しないＣＰＵがデータ５０１を使用するために必要であると判断したデータを情報処理装置１の図示しない記憶部またはＲＡＭまたは記憶媒体から読み込み、データ５００とすることが考えられるが、これに限られない。
【００７８】
データ５０２は、データ集合体であるdishANDfood型データ。図４のデータ４０２に対応する。
【００７９】
図５のメンバ５０２２、メンバ５０２３、メンバ５０２４は、図４のメンバ４０２２に対応する。
図５のメンバ５０２２ＳＥＴ、メンバ５０２３ＳＥＴは、図４のメンバ４０２２ＳＥＴに対応する。
【００８０】
メンバ５０２１は、前記データ５０２のメンバであって、データ５０１を格納するメンバ。
【００８１】
メンバ５０２１ＳＥＴは、情報処理装置２がメンバ５０２１に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置２に料理を保存するときに一定のルール（例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。）にしたがってキーを決定するために必要なデータ。
【００８２】
メンバ５０２２は、前記データ５０２のメンバであって、前記５０２を構成する料理のデータを格納したデータを格納するメンバ。
例えば、キーと値の組み合わせであって、キーを指定すれば前記キーに関連付けられた料理を示すデータが返る連想配列とすることが考えられるが、これに限られない。
【００８３】
メンバ５０２２ＳＥＴは、メンバ５０２２に記憶されたデータを情報処理装置２が記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置２に料理を保存するときに一定のルール（例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。）にしたがってキーを決定するために必要なデータ。
【００８４】
メンバ５０２３は、前記データ５０２のメンバであって、前記５０２を構成する食品のデータを格納するメンバ。
例えば、キーと値の組み合わせであって、キーを指定すれば前記キーに関連付けられた食品を示すデータが返る連想配列とすることが考えられるが、これに限られない。
【００８５】
メンバ５０２３ＳＥＴは、情報処理装置２がメンバ５０２３に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置２に料理を保存するときに一定のルール（例えば、前記メンバ５０２３に使用されているキーをそのまま情報処理装置２では食品の情報を記憶させるためのキーとすべき旨を示す情報）にしたがってキーを決定するために必要なデータ。
【００８６】
メンバ５０２４は、メンバ５０２１に格納されたデータまたはデータ５０１が示す料理を構成する料理および食品を示すキーを格納するメンバ。
前記情報を計算する方法は、例えば実施の形態２にて説明する方法が考えられるが、これに限られない。
【００８７】
データ５０３は、データ５０２から作成された、他の情報処理装置に転送できる状態のデータである。データ５０３は、図４のデータ４０３に対応する。
【００８８】
前記データ５０３は、例えば通信手段Ｎを介して情報処理装置２に転送され、前記情報処理装置２ではデータ５５３としてこれを扱う。
前記通信手段Ｎは、例えば通信網や、ＣＤ−ＲＯＭやフラッシュメモリ等の記憶媒体を用いる等が考えられるが、これに限られない。
【００８９】
データ５５３は、例えば前記通信手段Ｎを介するなどの方法によって情報処理装置１から受け取ったデータである。前記データ５５３は、図４のデータ４５３に対応する。
【００９０】
データ５５２は、データ５５３から作成されたデータであって、例えばdishANDfood型データ集合体であるが、これに限られない。
前記データ５５２は、データ５５１ならびに０個以上のデータ５５０となるデータが格納されている。
ただし、情報処理装置２に保存された図示しないプログラムに基づく図示しないＣＰＵの判断によって、データ５５１ならびにデータ５５０の一部または全部が作成されない場合もある。データ５５２は、図４のデータ４５２に対応する。
【００９１】
データ５５２１は、前記データ５５２のメンバであって、後述するデータ５５１に格納されるデータを格納するメンバ。図４のメンバ４５２１に対応する。
【００９２】
メンバ５５２１ＳＥＴは、情報処理措置２がメンバ５５２１に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置２に料理を保存するときに一定のルール（例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。）にしたがってキーを決定するために必要なデータ。
【００９３】
データ５５２２は、前記データ５０２のメンバであって、前記５０２を構成する料理のデータを格納したデータを格納するメンバ。
例えば、キーと値の組み合わせであって、キーを指定すれば前記キーに関連付けられた料理を示すデータが返る連想配列とすることが考えられるが、これに限られない。
【００９４】
データ５５２２ＳＥＴは、メンバ５５２２に記憶されたデータを情報処理装置２が記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置２に料理を保存するときに一定のルール（例えば料理の大分類および小分類を指定し、指定された大分類および小分類に割り当てることができる空き番号をキーとして与える。ただし、これに限られない。）にしたがってキーを決定するために必要なデータ。
【００９５】
データ５５２３は、前記データ５５２のメンバであって、前記５５２を構成する食品のデータを格納するメンバ。
例えば、キーと値の組み合わせであって、キーを指定すれば前記キーに関連付けられた食品を示すデータが返る連想配列とすることが考えられるが、これに限られない。
【００９６】
データ５５２３ＳＥＴは、情報処理装置２がメンバ５５２３に記憶されたデータを記憶するために必要な情報を格納するメンバ。
前記情報は、例えば、情報処理装置２に料理を保存するときに一定のルール（例えば、前記メンバ５５２３に使用されているキーをそのまま情報処理装置２では食品の情報を記憶させるためのキーとすべき旨を示す情報）にしたがってキーを決定するために必要なデータ。
【００９７】
データ５５２４は、メンバ５５２１に格納されたデータまたはデータ５５１が示す料理を構成する料理および食品を示すキーを格納するメンバ。
【００９８】
メンバ５５０は、情報処理装置２がメンバ５５１に格納された値を使用するために必要なデータを格納するメンバ。図４のデータ４５０に対応する。
【００９９】
メンバ５５１は、情報処理装置２に転送するデータとして情報処理装置１から送信されたデータを格納するメンバ。図３のデータ４５１に対応する。
【０１００】
つまり、情報処理装置１のＣＰＵ１１はプログラム１２Ｐに基づいて、転送したいデータ５０１を転送するときに、前記データ５０１を他の情報処理装置が使用する際に必要となるデータは何であるかを判断して、
データ５０２１に、前記データ５０２１を、
データ５０２１ＳＥＴに、前記データ５０２１を他の情報処理装置が記憶するときに使用するキーを特定するための情報を、
データ５０２４に、前記データ５０２１を構成する料理または食品のキーを、
データ５０２２に、前記データ５０２１を構成する料理のキーから前記料理を示すデータを返す連想配列を、
データ５０２２ＳＥＴに、前記データ５０２１を構成する料理のキーから前記キーが示す料理を他の情報処理装置が記憶するときに使用するキーを特定するための情報を、
データ５０２３に、前記データ５０２１を構成する料理のキーから前記料理を示すデータを返す連想配列を、
データ５０２３ＳＥＴに、前記データ５０２１を構成する料理のキーから前記キーが示す料理を他の情報処理装置が記憶するときに使用するキーを特定するための情報を、
それぞれ格納したデータ５０２を作成し、
前記データ５０２から他の情報処理装置に転送できるデータ５０３を作成し、データ５０３を転送する。
情報処理装置２のＣＰＵ２１はプログラム２２Ｐに基づいて、前記転送によって情報処理装置２が受け取ったデータ５５３から、情報処理装置２はデータ５５２を作成し、
メンバ５５２４に格納されたキーと同じキーがメンバ５５２２に存在すれば、条件を満たす場合（例えば、前記データ５５２２から取得された値と同じ名前の料理が情報処理装置２に記憶されていない場合）は前記値を情報処理装置２に記憶する。このとき、前記値と関連付けられるキーはメンバ５５２２ＳＥＴに格納されたデータによって決定される。
メンバ５５２４に格納されたキーと同じキーがメンバ５５２３に存在すれば、条件を満たす場合（例えば、メンバ５５２４が示すキーと同じキーの食品が情報処理装置２に記憶されていない場合）は前記値を情報処理装置２に記憶する。このとき、前記値と関連付けられるキーはメンバ５５２３ＳＥＴに格納されたデータによって決定される。
その後、メンバ５５２１から取得されたデータを、条件を満たす場合（例えば、前記データ５５２１から取得された値と同じ名前の料理が情報処理装置２に記憶されていない場合）は前記値を情報処理装置２に記憶する。このとき、前記値と関連付けられるキーはメンバ５５２１ＳＥＴに格納されたデータによって決定される。
【０１０１】
データ集合体であるdish型データ５０１および0個以上のデータ５００から、dishANDfood型のデータ集合体であるデータ５０２を作成する方法を一例として例示する。
【０１０２】
ただし、データ５００は、使用するために必要なデータであると情報処理装置１のプログラムＰ１２に基づいてＣＰＵ１１が判断したものであって、記憶部１２またはＲＡＭ１３または記憶媒体１０に記憶されたものである。
【０１０３】
ここでは、情報処理装置１ならびに情報処理装置２は、キーとデータ（値）が関連付けられて記憶部１２（情報処理装置２では記憶部２２）またはＲＡＭ１３（情報処理装置２ではＲＡＭ２３）または記憶媒体１０（情報処理装置２では記憶媒体２０）に記憶されている場合を例示する。ただし、これ以外の方式によって記憶されていてもよい。また、データの記憶場所は記憶部１２またはＲＡＭ１３または記憶媒体１０以外の場所、例えば必要の都度にダウンロードされる、などであってもよい。
【０１０４】
データ５０２のメンバ５０２１に、データ５０１を格納する。
【０１０５】
データ５０２のメンバ５０２１ＳＥＴに、データ５０１を情報処理装置２が記憶するために必要な情報を格納する。
例えば、情報処理装置１および２では料理の大分類および小分類が指定され前記指定された料理の大分類および小分類に使用可能な文字列であっていまだ使用さいれていない文字列を料理のキーとして前記キーと値の組み合わせとして記憶部またはＲＡＭまたは外部媒体に記憶する方式を採用している場合を例に例示すると、
前記メンバ５０２１ＳＥＴは、前記５０２１が示す料理が属する大分類および小分類を示す情報を格納する。
【０１０６】
データ５０２のメンバ５０２４に、前記データ５０２１または前記データ５０２を構成する料理または食品を示すキーを計算し、前記計算結果を格納する。その計算方法は、実施の形態２にて説明した通りである。
【０１０７】
データ５０２のメンバ５０２２に、データ５０２１を構成する料理の情報を格納する。
例えば、キーと値の組み合わせであって、キーを指定すれば関連付けられた値を返す連想配列であって、前記連想配列が返す値は料理の情報を示すものであることが考えられるが、これに限られない。
【０１０８】
データ５０２のメンバ５０２２ＳＥＴに、データ５０２２に格納された情報を情報処理装置２が記憶するために必要な情報を格納する。
例えば、キーと値の組み合わせであって、キーを指定すれば、前記キーがデータ５０２２にて関連付けられている値を、情報処理装置２に記憶するときに使用するキーを決定するために必要なデータを返す連想配列であることが考えられるが、これに限られない。
【０１０９】
データ５０２のメンバ５０２３に、データ５０２１を構成する食品の情報を格納する。
例えば、キーと値の組み合わせであって、キーを指定すれば関連付けられた値を返す連想配列であって、前記連想配列が返す値は食品の情報を示すものであることが考えられるが、これに限られない。
【０１１０】
データ５０２のメンバ５０２３ＳＥＴに、データ５０２３に格納された情報を情報処理装置２が記憶するために必要な情報を格納する。
例えば、データ５０２２のキーに関連付けられた値を情報処理装置２に記憶するときに、前記キーをそのまま使用すべき旨を示す情報であることが考えられるが、これに限られない。
【０１１１】
情報処理装置のＣＰＵ１１は、記憶部１２に記憶されたプログラム１２Ｐに基づき、データ５０１を他の情報処理装置にて必要となるデータが何であるかを判断し、前記データを記憶部１２またはＲＡＭ１３または記憶媒体１０から読み込んで、メンバ５０２１またはメンバ５０２２またはメンバ５０２３に格納する。
メンバ５０２１に格納された料理を構成する料理または食品のキーをメンバ５０２４に格納する。
メンバ５０２１を情報処理装置２に記憶させるために必要な情報をメンバ５０２１ＳＥＴに、メンバ５０２２を情報処理装置２に記憶させるために必要な情報をメンバ５０２２ＳＳＥＴに、メンバ５０２３を情報処理装置２に記憶させるために必要な情報をメンバ５０２３ＳＥＴにそれぞれ格納する。
データ５０２を記憶部１２またはＲＡＭ１３または記憶媒体１０に格納し、処理を終了する。
【０１１２】
データ集合体であるdishANDfood型データ５０２から他の情報処理装置に転送できるデータ５０３を作成する方法を説明する。
【０１１３】
情報処理装置１は、前記データ集合体５０２をdishANDfoodテキスト変換して作成した文字列を他の情報処理装置に転送できるデータ５０３とする。
dishANDfoodテキスト変換とは何であるかは＜用語の意味＞にて後述する。dishANDfood型から文字列を作成する場合が該当し、作成されたデータ集合体がデータ５０３となる。
ただし、後述する＜用語の意味＞で説明文中に使われるdishとはメンバ５０２１、dishSETとはメンバ５０２１ＳＥＴ、codeTOdishとはメンバ５０２２、codeTOdishSETとはメンバ５０２２ＳＥＴ、codeTOfoodとはメンバ５０２３、codeTOfoodSETとはメンバ５０２３ＳＥＴ、tapeとはメンバ５０２４がそれぞれ相当し、dishANDfoodテキスト変換によって作成された文字列はデータ５０３として格納される。
【０１１４】
他の情報処理装置に転送できるデータ５０３を他の情報処理装置に転送する場合、前記転送によって情報処理装置２が受け取ったデータは、データ５５３として扱われる。
【０１１５】
受け取ったデータ５５３からデータ集合体であるdishANDfood型データ５５２を作成する方法を説明する。
【０１１６】
情報処理装置１は、前記データ集合体５５３をdishANDfoodテキスト変換して作成した文字列を他の情報処理装置に転送できるデータ５５２とする。
dishANDfoodテキスト変換とは何であるかは＜用語の意味＞にて後述する。文字列からdishANDfood型を作成する場合が該当し、作成されたデータ集合体がデータ５５２となる。
ただし、後述する＜用語の意味＞で説明文中に使われるdishとはメンバ５５２１、dishSETとはメンバ５５２１ＳＥＴ、codeTOdishとはメンバ５５２２、codeTOdishSETとはメンバ５５２２ＳＥＴ、codeTOfoodとはメンバ５５２３、codeTOfoodSETとはメンバ５５２３ＳＥＴ、tapeとはメンバ５５２４がそれぞれ相当し、dishANDfoodテキスト変換によって作成された文字列はデータ５０３として格納される。
【０１１７】
データ集合体であるdishANDfood型データ５５２から、データ５５０およびデータ集合体であるdish型データ５５１を作成する方法を説明する。
【０１１８】
情報処理装置２は、データ５５２のメンバ５５２４に格納された０個以上の値を参照し、下記の動作を行う。
【０１１９】
前記メンバ５５２４に格納された値と同じキーが前記５５２のメンバ５５２２に存在する場合、前記メンバ５５２２から取得した値が条件を満たす（例えば、前記値と同じ名前の料理が情報処理装置２に記憶された料理に存在しない）場合は、前記値を情報処理装置２に記憶させる。ただし、前記記憶させる際に使用するキーは、メンバ５５２のメンバである５５２２ＳＥＴに記憶されたデータをもとに決定する。
【０１２０】
前記メンバ５５２４に格納された値と同じキーが前記５５２のメンバである５５２３に存在する場合、前記メンバ５５２３から取得した値が条件を満たす（例えば、前記メンバ５５２４に格納された値と同じキーの食品が情報処理装置２に記憶された食品に存在しない）場合は、前記値を情報処理装置２に記憶させる。ただし、前記記憶させる際に使用するキーは、メンバ５５３２のメンバである５５２３ＳＥＴに記憶されたデータをもとに決定する。
【０１２１】
図５を参照し、情報処理装置１が図６の通りに甲（料理）が甲および乙（食品）を含む旨が記憶されているときに、「レモン牛丼」のデータを情報処理装置２に転送するためのデータを作成し、情報処理装置２は、前記データを読み込んで「レモン牛丼」のデータを記憶する過程を例示しながら情報処理装置1および情報処理装置２の動作を説明する。
【０１２２】
データ集合体５０２のメンバ５０２１をdish、メンバ５０２１ＳＥＴをdishSET、メンバ５０２４をtapeというメンバであるとして説明する。
前記dishにメンバ５０１を格納し、前記dishSETに前記dishが情報処理装置１ではどの大分類および小分類に属していたかを示す情報を格納し、tapeにdishを構成する料理および食品を実施の形態２に示す方法によって計算した結果を格納する。
例えば、前記「レモン牛丼」が、大分類「複合的な食品」、小分類「複合的な食品」、前記レモン牛丼を構成する料理および食品は「レモン」と「牛丼」として情報処理装置１に記憶されていて、情報処理装置１は牛丼など他の料理を構成する食品が図６に示す如く記憶されているとしたとき、前記dishはレモン牛丼を示す情報、前記dishSETは前記レモン牛丼が大分類「複合的な食品」、小分類「複合的な食品」である旨を示す情報、tapeはレモン牛丼を構成する料理および食品が「レモン」「牛丼」「牛皿」「ごはん」「牛肉」「玉ねぎ」「醤油」「コメ」である旨を示す情報が格納される。
【０１２３】
データ集合体５０２のメンバ５０２２をcodeTOdish、メンバ５０２３をcodeTOfoodというメンバであるとして説明する。
メンバtapeに記憶されている料理および食品のキーをデータ集合体（例えば配列）johoAに格納する（前記johoAに、dishを構成する料理または食品のキーを追加してもよい。その場合、この例示では「レモン」「牛丼」を追加する）。具体的には、tapeに格納されている料理または食品である「レモン」「牛丼」「牛皿」「ごはん」「牛肉」「玉ねぎ」「醤油」「コメ」を示す情報がjohoAに格納される。
整数型変数JにjohoAの添え字として使用できる最小の数値を格納し、JがjohoAの添え字として使用できる最大の数値以下である間、
情報処理装置２がjohoAのJ番の要素に格納されたデータと同じキーが料理のキーとして存在すれば、前記キーをキーとして取得できる料理の情報をデータ集合体dishobjに格納し、johoAのJ番目の要素をキーとしdishobjを値とするキーと値の組み合わせをcodeTOdishに記憶し、
情報処理装置２がjohoAのJ番の要素に格納されたデータと同じキーが食品のキーとして存在すれば、前記キーをキーとして取得できる食品の情報をデータ集合体foodojに格納し、johoAのJ番目の要素をキーとしfoodobjを値とするキーと値の組み合わせをcodeTOfoodに記憶し、
Jに１を加算する操作を繰り返す。
具体的には、johoAに「レモン」「牛丼」「牛皿」「ごはん」「牛肉」「玉ねぎ」「醤油」「コメ」を示す情報が格納されていて、「牛丼」「牛皿」「ごはん」が料理でそれ以外が食品として情報処理装置１に格納されている場合は、codeTOdishは、情報処理装置１が牛丼を示す値に関連付けられたデータ（例えばDS61010）をキーとし牛丼を示す情報を値とするキーと値の組み合わせが記憶（牛皿、ごはんも同様）され、
codeTOfoodは、情報処理装置１がレモンを示す値に関連付けられたキー（例えばFD12345）をキーとしレモンを示す情報を値とするキーと値の組み合わせが記憶（牛肉、玉ねぎ、醤油、コメも同様）される。
【０１２４】
データ集合体５０２のメンバ５０２２ＳＥＴをcodeTOdishSET、メンバ５０２３ＳＥＴをcodeTOfoodSETというメンバであるとして説明する。
codeTOdishに格納されたキーをデータ集合体（例えば配列）johoAに格納し、codeTOfoodに格納されたキーをデータ集合体（例えば配列）johoBに格納し、johoAとjohoBを連結しjohoAとし、前記johoAの異なる要素に同じデータが格納されている場合は、前記データが1個ずつになるように重複を除去したものをjohoAとすることによって、johoAを作成する。
整数型変数JにjohoAの添え字として使用できる最小の数値を格納し、JがjohoAの添え字として使用できる最大の数値以下である間、
johoAのJ番の要素にに格納されたデータと同じキーが料理のキーとして存在すれば、前記キーにcodeTOdishにて関連付けられた値が情報処理装置１ではどの大分類および小分類に属していたかを示す情報を変数iremonoとし、johoAのJ番目の要素をキーとしiremonoを値とするキーと値の組み合わせをcodeTOdishSETに記憶する操作と、
Jに１を加算する操作を繰り返す。
codeTOfoodSETは、codeTOfoodのキーとして使用している値をそのまま情報処理装置２でキーとして使用すべき旨を示す情報を格納する。
具体的には、johoAに「レモン」「牛丼」「牛皿」「ごはん」「牛肉」「玉ねぎ」「醤油」「コメ」を示す情報が格納されていて、「牛丼」「牛皿」「ごはん」が料理でそれ以外が食品として情報処理装置１に格納されている場合は、
codeTOdishSETは、情報処理装置１が牛丼を示す値に関連付けられたキー（例えばDS61010）をキーとし牛丼が属する大分類および小分類を示す情報を値とするキーと値の組み合わせが記憶（牛皿、ごはんも同様）される。
【０１２５】
前述の方法によって作成されたデータ集合体５０２は、dishANDfoodテキスト変換によって文字列５０３に変換され、文字列５０３は何らかの方法（例えばインターネットにアップロードする、文字列５０３を記したファイルを添付した電子メールが送信される等が考えられるが、これらに限られない）によって情報処理装置２に転送され、情報処理装置２は受け取ったデータをデータ５５３として扱う。
【０１２６】
情報処理装置２が受け取ったデータ５５３は、dishANDfoodテキスト変換によってデータ集合体５５２に変換される。
【０１２７】
データ集合体５５２から、情報処理装置２が前記データ５５２に格納されたデータを使用するために必要な情報を取得する方法を例示する。この例示は、
前記データ５５２に記憶された料理は、前記情報処理装置２に同じ名称である料理の情報が存在しない場合に前記料理の情報前記情報処理装置２に記憶され、
前記データ５５２に記憶された食品は、前記情報処理装置２に同じキーと関連付けられた食品が存在しない場合に前記食品の情報が記憶される場合を例にした例示である。
【０１２８】
情報処理装置２は、前記データ５５２のメンバである５５２４に格納されたデータから、データ集合体（例えば配列）codearrを作成する。
【０１２９】
情報処理装置２は、前記データ５５２のメンバである５５２２に格納された料理の名称を記憶したデータ集合体dishnamehashを作成する。
【０１３０】
データ集合体５５２のメンバ５５２２をcodeTOdish、メンバ５５２２ＳＥＴをcodeTOdishSET、メンバ５５２３をcodeTOfood、メンバ５５２３ＳＥＴをcodeTOfoodSET、メンバ５５２４をtapeというメンバであるとして説明する。
【０１３１】
メンバdishDICのキーをデータ集合体（例えば配列）johoAに格納し、johoAの各要素に記録されたデータをキーとしてメンバdishDICから取得される値が示す料理名を、データ集合体dishnamehashに格納する。
例えば、dishDICに、DS12345、DS23456、DS34567というキーが格納され、それぞれに関連付けられている料理のデータが示す料理の名称が、それぞれ、牛丼、牛皿、ごはん、である場合、dishnamehashは、牛丼、牛皿、ごはん、という3個のデータが格納されている。（前記「レモン牛丼」のデータを情報処理装置２に転送した場合、実際にはこれより多くの情報が入っている）
【０１３２】
ここでは、tapeの各要素をデータ集合体（例えば配列）codearrに、同じデータが複数の要素に記憶されることがないように記憶したものとして説明する。（tapeの各用紙に記憶されたデータをそのまま使用してもよい）
数値型変数Jにcodearrの添え字に使用できる最小の数値を格納し、Jがcodearrの添え字に使用できる最大の数値以下である間、
codearr(J)に格納されたデータと同じキーがメンバcodeTOdishに存在する場合はメンバcodeTOdishからcodearr(J)をキーとし取得できる値をdish型変数dishobjに格納し、メンバcodeTOdishSETから、dishobjを情報処理装置２に記憶するために必要な情報（例えばdishobjに格納されたデータが属する大分類ならびに小分類）を取得し、前記データをもとに情報処理装２によって決定されたdishobjに関連付けられたキーを変数iremonoに格納し、iremonoをキーとしdishobjを値とするキーと値の組み合わせを情報処理装置２に記憶するステップと、
codearr(J)に格納されたデータと同じキーがメンバcodeTOfoodに存在する場合はメンバcodeTOfoodからcodearr(J)をキーとして取得できる値をfood型変数foodobjに格納し、codearr(J)をキーとしfoodobjを値とするキーと値の組み合わせを情報処理装置２に記憶するステップ（メンバcodeTOfoodSETから取得された情報によって情報処理装置２にfoodobjを記憶するときに使用するキーを決定するものであってもよい。）と、
Jに1を加算するステップと、
を繰り返す。ただし、codearr(J)とはcodearrのJ番の要素に格納されたデータを意味する。
例えば、codearrにDS12345、DS23456、DS34567、FD45678、FD56789というデータが格納され、codeTOdishにDS12345に関連付けられた値として牛丼、DS23456に関連付けられた値として牛皿、DS34567に関連付けられた値としてごはんを示す料理のデータが格納され、codeTOfoodに、FD45678に関連付けられた値としてレモン、FD56789に関連付けられた値として牛肉を示す食品のデータが記憶されている場合、情報処理装置２は、牛丼、牛皿、ごはん、レモン、牛肉をしめすデータを、条件を満たしたとき（例えば、料理では同じ名前の料理が記憶されていないこと、食品では同じキーが記憶されていないこと）、記憶する。（前記「レモン牛丼」のデータを情報処理装置２に転送した場合、実際にはこれより多くの情報が入っている）
【０１３３】
メンバdishSETから、メンバdishを情報処理装置２に記憶するために必要な情報（例えばメンバdishに格納されたデータが属する大分類ならびに小分類）を取得し、前記データをもとに情報処理装２によって決定された、メンバdishに関連付けられたキーを変数iremonoに格納し、iremonoをキーとしメンバdishに格納されたデータを値とするキーと値の組み合わせを情報処理装置２に記憶する。
【０１３４】
＜実施の形態２＞
０個以上の甲ならびに０個以上の乙の少なくともいずれかがあり、甲はいかなる種類ならびに量の甲または乙によって構成されているのかが定義されている場合、甲ならびに乙がそれぞれ０個以上指定されたときに、前記甲ならびに乙がいかなる種類ならびに量の乙によって構成されているのかを算出する方法を説明する。
【０１３５】
たとえば、甲は料理であって乙は食品であって、甲または乙の種類、最小量、最大量が定義され、これに基づいて計算することを例にして説明するが、これに限られない。本実施の形態に係る情報処理装置１の構成は、実施の形態１と同様である。
【０１３６】
図８は、本実施形態実施の形態４に係る情報処理装置が行う計算の処理の手順を示したフローチャート。
本実施形態では、計算したいデータを「第0世代のデータ」とするステップ（Ｓ８０１）、下記の無限ループによって、下記の無限ループ中のある時点にて作成されている最大の世代をｎとして第ｎ世代から第ｎ＋１世代のデータを作成する処理を繰り返し、第ｎ世代のデータがすべて乙になったことをもって計算を終了することによって、前記計算したいデータでの甲および乙が、いかなる乙によって構成されているかを計算する。
前記無限ループは、脱出判定ステップ（Ｓ８０２）、構成作成ステップ（Ｓ８０３）、循環参照ステップ（Ｓ８０４）を繰り返し、前記脱出判定ステップによって前記無限ループを脱出すべきと判断した場合は前記無限ループを脱出し、前記循環参照作成ステップによって循環参照（本実施例では、ある甲が、その甲自身によって構成されていること）が検出された場合は計算を中止する。
【０１３７】
前記ステップＳ８０１は、種々の形態が考えられるが、例えばジャグ配列を作成し、前記ジャグ配列の添え字として使用できる最小の数値をJとし、前記ジャグ配列のJ番の要素に、計算したいデータを格納する事が考えられる。ただし、これは例示であって、これに限られない。
【０１３８】
たとえば、図７の通りに計算したいデータが与えられ、甲を構成する甲および乙は図６の通りに定義されている場合は、前記ステップＳ８０１では、ジャグ配列を作成し、前記ジャグ配列の添え字として使用できる最小の数値をJとし、前記ジャグ配列のJ番を要素数３の配列とし、それぞれの要素に「レモン牛丼１〜２」「ロースかつ定食１〜１」「100円引き１〜１」を示すデータを格納することが考えられる。それぞれの要素は、図９におけるデータ９００１、データ９００２、データ９００３に対応する。
【０１３９】
前記脱出判定ステップＳ８０２は、その時点で作成されている最大の世代をｎとし、第ｎ世代がすべて乙であるかどうかを判断する。すべて乙であれば前記無限ループを脱出し、それ以外の場合は脱出しない。
【０１４０】
前記構成要素書き込みステップＳ８０３は、その時点で作成されている最大の世代をｎとし、第ｎ世代であるおのおのの甲または乙に対し、甲ならば前記甲を構成する乙を、乙ならば乙自身を第ｎ＋１世代のデータとして作成する。このとき、前記作成されたデータは、そのデータが、どの甲を示すデータから作成されたかを示す情報（以下、befという）を格納する。
【０１４１】
前記循環参照チェックステップＳ８０４は、その時点で作成されている最大の世代をｎとし、第ｎ世代であるおのおのの甲または乙に対し、前記befを用いて、そのデータを作成する元となったデータを、第0世代に至るまでにたどり、同一の甲が複数出現したら、循環参照とみなし計算を中止する。
たとえば、Ａという甲はＢという甲とｃという乙から構成され、Ｂという甲はＡという甲とｄという乙から構成されていると定義されている場合、第2世代のＡから第0世代までたどると、Ａ→Ｂ→Ａ、となり、複数のＡが出現する。この場合、循環参照とみなし計算を中止する。
但し、第ｎ世代のデータに乙が存在する場合は、第ｎ世代に存在する乙を循環参照チェック対象としなくてもよい。
例えば、図９における第3世代を循環参照チェックする場合にデータ９３０４を循環参照チェックしようとした場合、前記データ９３０４は乙であってデータ９２０１から作成されたものである。第2世代を循環参照チェックする際に前記データ９２０１からデータ９００１に至るまでの間における循環参照チェックは官僚しており、前記データ９３０４は乙であることから、今後前記データ９３０４および前記９３０４を甲が参照することはない。よって、循環参照チェックをしたとしても無意味であるから省略してもかまわない。
【０１４２】
その例として、甲は料理、乙は食品である例を挙げることができるが、これに限られない。すなわち、計算したいデータは料理または食品であって、前記計算したいデータを「第0世代」として計算を開始し、第ｎ世代（ただし、ｎはその時点で作成されている最大の世代）がすべて料理になるまで、下記の無限ループを繰り返す。
図７は、実施の形態２における情報処理装置が行う計算の対象となるデータの一例を示した図表。
図９は、本例示における情報処理装置が行う計算によって作成されたデータの一例を示した図表。ただし、「１〜２」などの「〜」を挟む数値は、その甲または乙の数量、例えば「レモン 50〜200」は「レモンが、数量５０〜２００」であることを示す。
ここでは、図７の通りに計算したいデータが与えられ、甲を構成する甲および乙は図６の通りに定義されている（例えば、レモン牛丼という料理はレモン50〜100、牛丼1〜1によって構成されている）場合を一例として例示し、説明する。ただし、図６および前記「50〜100」「1〜1」などの数値は、該当する甲の、１あたりに含まれる数量を表す。
この例示では、無限ループであるから「第0世代から第1世代を作成するときのステップＳ８０２」のように、どの世代からどの世代を作成するときのステップであるのかを明示しながら説明する。
【０１４３】
たとえば、図７の通りに計算したいデータが与えられ、甲を構成する甲および乙は図６の通りに定義されている場合は、前記ステップＳ８０１では、ジャグ配列を作成し、前記ジャグ配列の添え字として使用できる最小の数値をJとし、前記ジャグ配列のJ番を要素数３の配列とし、それぞれの要素に「レモン牛丼１〜２」「ロースかつ定食１〜１」「100円引き１〜１」を示すデータを格納することが考えられる。それぞれの要素は、図９におけるデータ９００１、データ９００２、データ９００３に対応する。
【０１４４】
第0世代から第1世代を作成するときの前記ステップＳ８０２は、第0世代の情報は「レモン牛丼」「ロースかつ定食」「100円引き」を示す情報が格納されているが、甲が1個以上含まれているため脱出しない。
【０１４５】
第0世代から第1世代を作成するときの前記ステップＳ８０３は、
第0世代である「レモン牛丼」を構成する「レモン」「牛丼」を示す情報を取得し、第1世代のデータとして格納する。図６では「レモン50〜100」「牛丼1〜1」とあるが、レモン牛丼の数は１〜２であるため、最小値に１、最大値に２を乗じて「レモン50〜200」「牛丼1〜1」を第1世代のデータとする。（図９ではデータ９１００、データ９１０１にあたる）前記データ９１００、データ９１０１に、第0世代のレモン牛丼から作成された旨をしめす情報が格納される。
同様に、「ロースかつ定食」から「とんかつ1〜1」「キャベツ50〜60」「ごはん1〜1」「豚汁1〜1」を作成しデータ９１０２〜９１０５、「100円引き」から、該当する甲または乙が0個である旨の情報（例えば「データなし」）を作成し、データ９１０６を作成する。ただし、前記該当する甲または乙が0個である旨の情報は、乙として扱われる。（前記該当する甲または乙が0個である旨の情報は、作成しないこととしてもよい）
データ９１００は「レモン  ５０〜２００」がデータ９０００から作成された旨を示す情報、データ９１０１は「牛丼  １〜２」を示すデータがデータ９０００から作成された旨を示す情報、データ９１０２は「とんかつ  １〜１」を示すデータがデータ９００１から作成された旨を示す情報、データ９１０３は「キャベツ  ５０〜６０」を示すデータがデータ９００１から作成された旨を示す情報、データ９１０４は「ごはん  １〜１」を示すデータがデータ９００１から作成された旨を示す情報、データ９１０５は「豚汁  １〜１」を示すデータがデータ９００１から作成された旨を示す情報、データ９０１６は「データなし」（乙扱い）を示すデータがデータ９００２から作成された旨を示す情報がそれぞれ格納される。
【０１４６】
第0世代から第1世代を作成するときの前記ステップＳ８０４は、第1世代の各データから、第0世代に至るまで、それぞれのデータを作成したデータを参照し、その過程で同一の甲が複数回出現した場合は循環参照とみなし計算を中止する。
データ９１００は、データ９０００から作成された旨を示す情報が記憶されているため、データ９１００→データ９０００を参照し、「レモン」「レモン牛丼」が出現する。よって同一の甲が複数出現しないため循環参照ではないとする。
同様に、データ９１０１〜データ９１０５はデータ９００１から作成された旨を示す情報が記憶されているため、同一の甲が複数出現しないため循環参照ではないとする。
同様に、データ９１０６はデータ９００２から作成された旨を示す情報が記憶されているため、同一の甲が複数出現しないため循環参照ではないとする。
【０１４７】
第1世代から第2世代を作成するときの前記ステップＳ８０２は、第1世代の情報は「レモン」「牛丼」「とんかつ」「キャベツ」「ごはん」「豚汁」「データなし」であって、「レモン」「キャベツ」「データなし」が乙であるものの、その他のデータが甲であるため脱出しない。
【０１４８】
第1世代から第2世代を作成するときの前記ステップＳ８０３は、
第1世代の「レモン」が乙であるため前記「レモン」を示すデータを第2世代に作成し（データ９２００に相当）、前記作成されたデータに、第1世代の「レモン」（データ９１００に相当）から作成された旨のデータを記憶する。
同様に、「牛丼1〜1」から「牛皿1〜1」「ごはん1〜1」を作成しデータ９２０１〜９２０２、「とんかつ1〜1」から「かつ80〜90」「片栗粉20〜20」「卵30〜30」「パン粉20〜20」を作成しデータ９２０３〜データ９２０６に、「キャベツ50〜60」は乙であるため「キャベツ50〜60」をデータ９２０７に、「ごはん1〜1」から「コメ150〜170」を作成しデータ９２０８に、「豚汁1〜1」から「味噌50〜50」「豚肉50〜50」「レンコン50〜50」「人参50〜50」を作成しデータ９２０９〜データ９２１２に、「データなし」は乙であるため、前記「データなし」を示すデータ９２１３に記憶する。
データ９２００は、「レモン  ５０〜２００」を示すデータがデータ９１００から作成された旨の情報、データ９２０１は、「牛皿  １〜２」を示すデータがデータ９１０１から作成された旨の情報、データ９２０２は、「ごはん  １〜２」を示すデータがデータ９１０１から作成された旨の情報、データ９２０３は、「かつ  ８０〜９０」を示すデータがデータ９１０１から作成された旨の情報、データ９２０４は、「片栗粉  ２０〜２０」を示すデータがデータ９１０１から作成された旨の情報、データ９２０５は、「卵  ３０〜３０」を示すデータがデータ９２０２から作成された旨の情報、データ９２０６は、「パン粉  ２０〜２０」を示すデータがデータ９２０２から作成された旨の情報、データ９２０７は、「キャベツ  ５０〜６０」を示すデータがデータ９２０３から作成された旨の情報、データ９２０８は、「コメ  １５０〜１７０」を示すデータがデータ９２０４から作成された旨の情報、データ９２０９は、「味噌  ５０〜５０」を示すデータがデータ９２０５から作成された旨を示す情報、データ９２１０は、「豚肉  ５０〜５０」を示すデータがデータ９２０５から作成された旨を示す情報、データ９２１１は、「レンコン  ５０〜５０」を示すデータがデータ９２０５から作成された旨を示す情報、データ９２１２は、「人参  ５０〜５０」を示すデータがデータ９２０５から作成された旨を示す情報、データ９２１３は、「データなし」を示すデータがデータ９２０６から作成された旨を示す情報、が格納される。
【０１４９】
第1世代から第2世代を作成するときの前記ステップＳ８０４は、第2世代の各データから、第0世代に至るまで、それぞれのデータを作成したデータを参照し、その過程で同一の甲が複数回出現した場合は循環参照とみなし計算を中止する。
第2世代及び第1世代の各データに記録された、どの作成されたものであるかを示す情報によって、ここではデータ９２００はデータ９１００とデータ９０００、
データ９２０１〜データ９２０２はデータ９１０１とデータ９０００、データ９２０３〜データ９３０６はデータ９１０２とデータ９００１、データ９２０７はデータ９１０３とデータ９００１、データ９２０８はデータ９１０４とデータ９００１、データ９２０９〜データ９２１２はデータ９１０５とデータ９００１、データ９２１３はデータ９１０６とデータ９００２を参照すればよく、そのいずれにも同一の甲が複数出現しないため循環参照ではないとする。
【０１５０】
第2世代から第3世代を作成するときの前記ステップＳ８０２は、第2世代の情報は「レモン」「かつ」「片栗粉」「パン粉」「キャベツ」「コメ」「味噌」「豚肉」「レンコン」「人参」「データなし」が乙であるものの、甲が存在する（牛皿、ごはん）ため脱出しない。
【０１５１】
第2世代から第3世代を作成するときの前記ステップＳ８０３は、
第2世代の「牛皿」を構成する甲または乙が図６に示す通り「牛肉150〜170」「玉ねぎ50〜60」「醤油50〜60」であるが、第２世代の牛皿の数量は「１〜２」であるため、最小値に１を、最大値に２を乗じ「牛肉150〜340」「玉ねぎ50〜120」「醤油50〜120」とし、第2世代のどのデータから作成されたデータであるかを示す情報をふくめて、第3世代のデータを作成する。
第2世代の「ごはん」を構成する甲または乙が図６に示す通り「コメ150〜170」であるが、第２世代のごはんの数量は「１〜２」であるため、最小値に１を、最大値に２を乗じ「コメ150〜340」とし、第2世代のどのデータから作成されたデータであるかを示す情報をふくめて、第3世代のデータを作成する。
第2世代のその他のデータは乙であるため、前記乙と同種同数量を示すデータを、第2世代のどのデータから作成されたデータであるかを示す情報をふくめて、第3世代のデータを作成する。
【０１５２】
第2世代から第3世代を作成するときの前記ステップＳ８０４は、第2世代の各データから、第0世代に至るまで、それぞれのデータを作成したデータを参照し、その過程で同一の甲が複数回出現した場合は循環参照とみなし計算を中止する。
第3世代のデータ９３０１〜データ９３０３はデータ９２０１、データ９１０１、データ９０００を参照し、同一の甲が複数出現しないため循環参照ではないとする。
第3世代の他のデータも、そのデータが参照しているデータを、第0世代に至るまで参照しても、同一の甲が複数出現しないため循環参照ではないとする。
【０１５３】
第3世代から第4世代を作成するときの前記ステップＳ８０２は、第3世代の情報はすべて乙であるため、前記無限ループを脱出する。従って、本例の場合、実際には第4世代以降は作成されない。
【０１５４】
＜実施の形態３＞
実施の形態３では、情報処理装置はデータ集合体をダウンロードにより取得する。図１０は、実施の形態３に係る情報処理システムの構成を示す図である。情報処理システムは、情報処理装置（第１情報処理装置）１、第２情報処理装置２及び記憶装置３を備える。情報処理装置１及び第２情報処理装置２の構成は、実施の形態１と同様である。図１０に示すように、情報処理装置１、第２情報処理装置２及び記憶装置３は、通信網Ｎに接続されている。
記憶装置３は、サーバ装置等のコンピュータである。記憶装置３は、ＣＰＵ３１、記憶部３２、ＲＡＭ３３及び通信部３４を備える。記憶部３２は例えばハードディスク又は大容量メモリ等である。ＣＰＵ３１は、記憶部３２に記憶されたプログラム３２Ｐに従いハードウェアの各部を制御する。通信部３４は、通信網Ｎを介して各種情報を送受信する。
【０１５５】
本実施形態では、情報処理装置１はデータ集合体を他の情報処理装置に転送できる状態に（例えばテキスト変換）して記憶装置３へアップロードし、第２情報処理装置２は記憶装置３からデータをダウンロードすることによりデータ集合体を取得する。図１１は、実施の形態８に係る情報処理装置１が実行する処理の手順を示すフローチャートである。情報処理装置１のＣＰＵ１１は、プログラム１２Ｐに基づいて以下の処理を実行する。ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶しているデータ集合体をテキスト変換することにより、データ集合体を変換した文字列を作成し、作成した文字列を含むデータファイルを作成する（ステップＳ６１）。データ集合体を文字列へ変換する方法は、実施の形態１〜６で説明した方法と同様である。データ集合体を変換した文字列は、テキストデータとしてデータファイルに含まれる。ＣＰＵ１１は、次に、データ集合体に関する設定内容を各データ集合体別に記録したリストを作成し、作成したリストを含むリストファイルを作成する（ステップＳ６２）。データ集合体に関する設定内容には、データ集合体を変換した文字列が含まれるデータファイルの名称、データファイルをダウンロードできる期間、データ集合体の定義、データ集合体のメンバとデータ集合体を変換した配列の要素との対応関係等が含まれている。ＣＰＵ１１は、次に、データファイル及びリストファイルを、通信部１６に、通信網Ｎを介して記憶装置３へ送信させ（ステップＳ６３）、処理を終了する。
【０１５６】
記憶装置３は、情報処理装置１から送信されたデータファイル及びリストファイルを通信部３４で受信し、受信したデータファイル及びリストファイルを記憶部３２に記憶する。この結果、記憶部３２にはデータファイル３２１及びリストファイル３２２が記憶されている。
図１２は、実施の形態８に係る第２情報処理装置２が実行する処理の手順を示すフローチャートである。ＣＰＵ２１は、通信部２６に、記憶装置３から通信網Ｎを介してリストファイル３２２をダウンロードさせる（ステップＳ７１）。ＣＰＵ２１は、次に、リストファイル３２２を利用して、ダウンロードすべきデータファイルを指定する（ステップＳ７２）。ダウンロードすべきデータファイルを指定する方法には、種々の方法が用いられ得る。例えば、ＣＰＵ２１は、リストファイル３２２を利用して、データファイルの名称等のデータ集合体に関する設定内容のリストを表示部２５に表示させ、表示されたリストを視認した使用者が入力部２４を操作することによって、データファイルを示す情報を受け付け、受け付けた情報が示すデータファイルを指定してもよい。また、例えば、ＣＰＵ２１は、リストに記録されたデータファイルを無条件で指定してもよい。また、例えば、ＣＰＵ２１は、作成されてからの経過時間が一定期間内であるデータファイルを指定する等、時刻に応じてデータファイルを指定してもよい。ＣＰＵ２１は、次に、指定したデータファイル３２１を、通信部２６に、記憶装置３から通信網Ｎを介してダウンロードさせる（ステップＳ７３）。ＣＰＵ２１は、ダウンロードしたデータファイル３２１をＲＡＭ２３又は記憶部２２に記憶する。
【０１５７】
図１２は、実施の形態８に係る第２情報処理装置２が実行する処理の手順を示すフローチャートである。ＣＰＵ２１は、通信部２６に、記憶装置３から通信網Ｎを介してリストファイル３２２をダウンロードさせる（ステップＳ７１）。ＣＰＵ２１は、次に、リストファイル３２２を利用して、ダウンロードすべきデータファイルを指定する（ステップＳ７２）。ダウンロードすべきデータファイルを指定する方法には、種々の方法が用いられ得る。例えば、ＣＰＵ２１は、リストファイル３２２を利用して、データファイルの名称等のデータ集合体に関する設定内容のリストを表示部２５に表示させ、表示されたリストを視認した使用者が入力部２４を操作することによって、データファイルを示す情報を受け付け、受け付けた情報が示すデータファイルを指定してもよい。また、例えば、ＣＰＵ２１は、リストに記録されたデータファイルを無条件で指定してもよい。また、例えば、ＣＰＵ２１は、作成されてからの経過時間が一定期間内であるデータファイルを指定する等、時刻に応じてデータファイルを指定してもよい。ＣＰＵ２１は、次に、指定したデータファイル３２１を、通信部２６に、記憶装置３から通信網Ｎを介してダウンロードさせる（ステップＳ７３）。ＣＰＵ２１は、ダウンロードしたデータファイル３２１をＲＡＭ２３又は記憶部２２に記憶する。
【０１５８】
ＣＰＵ２１は、ダウンロードしたデータファイル３２１または前記データファイル３２１に記録されたデータ（例えば文字列）または前記データファイル３２１がダウンロードすべきと指定され情報処理装置２がダウンロードしたデータを、情報処理装置２が扱えるデータ（例えばデータ集合体）へ変換する（ステップＳ７５）。前記データを情報処理装置２が扱えるデータへ変換する方法は、実施の形態１〜２で説明した方法と同様である。ＣＰＵ２１は、条件を満たす（例えば、前記データファイル３２１が料理を示すデータであって、前記データが示す料理と同じ料理が情報処理装置２に記録されていない）場合、作成したデータ集合体または前記データ集合体に格納されたデータの一部または全部を記憶部２２に保存し（ステップＳ７６）、処理を終了する。
【０１５９】
＜用語の意味＞
【０１６０】
配列変換とは、配列を文字列へ変換し、また文字列を配列へ変換する。配列を文字列へ変換することをいう。
【０１６１】
配列を文字列へ変換する配列変換をする方法を説明する。johoA という要素数が３である配列があり、johoA の要素をjohoA(0)、johoA(1)及びjohoA(2)とする。johoA(0)に”あああ”、johoA(1)に”いいい”、johoA(2)に”ううう”が代入されているとする。配列のいずれの要素にも存在しない文字（例えば「;」）を区切り文字とし、区切り文字を境にして配列の全ての要素を連結し、区切り文字が何であるかを示すために、所定の位置（例えば１文字目）に区切り文字を付記して、文字列を作成する。より具体的には、ＣＰＵ１１は、配列の各要素に格納されているデータを、要素の順に、各要素のデータの区切りを示す区切り文字を付加しながら連結し、所定の位置に区切り文字を付記することにより、文字列を作成する。文字列の作成により、配列が文字列へ変換される。配列johoA は、「;あああ;いいい;ううう」という文字列に変換される。
値が代入されていない配列を文字列へ変換しようとした場合は、情報処理装置１は、配列を要素数ゼロの配列とみなして処理を行う（例えば、ＶＢ．ｎｅｔで用いられるnothingを文字列へ変換しようとした場合は、情報処理装置１は、nothingを要素数ゼロの配列とみなして処理を行う）こととしてもよい。
なお、本実施形態では区切り文字を「；」としたが、これに限られない。例えば、配列のいずれかの要素に「；」が存在した場合、いずれの要素にも存在しない文字、例えば「…」を区切り文字として付加してもよい。なお、本実施形態では区切り文字は文字列を区切る文字としたが、数字等であってもよい。また本実施形態では文字列の先頭に区切り文字を付加したが、区切り文字の位置はこれに限られない。例えば、区切り文字は文字列の後ろに付加してもよい。また、区切りを示すために二個以上の区切り文字が用いられてもよい。
【０１６２】
次に、文字列を配列へ変換する方法を説明する。文字列の予め定められている所定の位置（例えば１文字目）を区切り文字とみなし、それ以外の文字列は区切り文字によって区切られた文字列とみなす。また、取得した文字列に含まれている順番に、区切り文字によって区切られた文字列を、配列の各要素に格納する。このようにして、文字列は配列の各要素に格納されたデータへ変換される。すなわち、文字列は配列へ変換される。例えば、「たほげほげたぬるぬるたうにうに」という文字列では、１文字目が「た」であるので、「た」が区切り文字であるとみなされる。１文字目の区切り文字を取り除いた文字列「ほげほげたぬるぬるたうにうに」が得られる。この文字列が区切り文字を境にして分割され、johoA(0)=”ほげほげ”、johoA(1)=”ぬるぬる”及びjohoA(2)=”うにうに”という要素を含んだ要素数３の配列johoA が得られる。文字列が空文字列である場合は、情報処理装置１は、文字列を要素数ゼロの配列へ変換する。
【０１６３】
配列変換をするためのルーチンを設けてもよい。該ルーチンの一例を例示し説明する。
情報処理装置１は、配列変換を行うためのルーチン（返り値はboolean型）を作成し、該ルーチンの引数を３つ設ける。引数は、配列を文字列へ変換するのかそれとも逆かを指定する値渡しのboolean型変数(toarr)、参照渡しのstring型の配列(arr)、及び参照渡しのstring型(text)である。２つ目の引数は、参照渡しのstring型の配列(arr)である。３つ目の引数は、参照渡しのstring(text)型である。ルーチンは、ＶＢ．ｎｅｔ等で用いられるプロシージャ、又はＣ言語等で用いられる関数である。toarrがTRUEの場合はtextを配列変換して作成された配列（textが空文字列の場合は要素数ゼロの配列）がarrに代入され、toarrがFALSEの場合はarrを配列変換して作成された文字列（arrに値が代入されていない場合は空文字列）がtextに代入される。いずれの場合も、成功したら返り値はTRUE、失敗したら返り値はFALSEとなる。ただし、配列が文字列型ではない場合があることを考慮し、配列のデータ型に合わせたルーチンを設けること、又は作成された配列を適切なデータ型に変更するルーチンを別途作成することも可能である。
【０１６４】
図１３は、情報処理装置が配列変換を実行する処理の手順を示したフローチャートである。図１３に示す処理の手順は、配列変換を行うためのルーチンによりＣＰＵ１１が行う処理の一例である。情報処理装置１のＣＰＵ１１は、プログラム１２Ｐに基づいて以下の処理を実行する。ＣＰＵ１１は、引数に基づいて、配列を文字列へ変換するのかそれとも逆かを判定する（ステップＳ１１）。配列を文字列へ変換する場合（ステップＳ１１：ＹＥＳ）、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶している配列のいずれの要素にも存在しない文字を区切り文字とすることにより、区切り文字を特定する（ステップＳ１２）。ＣＰＵ１１は、配列の各要素に代入されている各データを読み出し、区切り文字を境にしてデータを連結する（ステップＳ１３）。ＣＰＵ１１は、次に、区切り文字を境にして連結されたデータを含み、所定の位置に区切り文字を含んだ文字列を作成する（ステップＳ１４）。ＣＰＵ１１は、作成した文字列をＲＡＭ１３又は記憶部１２に記憶し、処理を終了する。
【０１６５】
図１３のステップＳ１１で、文字列を配列へ変換する場合は（ステップＳ１１：ＮＯ）、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶している文字列の所定の位置に含まれている文字を区切り文字とみなすことにより、区切り文字を特定する（ステップＳ１５）。ＣＰＵ１１は、区切り文字で区切られたデータを文字列から抽出することにより、文字列を０個以上のデータへ変換する（ステップＳ１６）。ＣＰＵ１１は、データの数と同数の要素を有する配列を作成し、配列の各要素に各データを代入する（Ｓ１７）。ＣＰＵ１１は、作成した配列をＲＡＭ１３又は記憶部１２に記憶し、処理を終了する。
【０１６６】
連想配列変換とは、連想配列を文字列へ変換し、また文字列を連想配列へ変換することをいう。
【０１６７】
連想配列を文字列へ変換する方法を説明する。連想配列の全てのキーを取り出し、各キーを各要素に代入した第１の配列johoAを作成する。同数の要素数を持つ第２の配列johoBを作成し、配列johoAの各要素に代入された文字列をキーとして連想配列から得られる文字列を、配列johoAの各要素に対応する配列johoBの各要素に代入する。その後、配列johoA及び配列johoBを配列変換し、要素数が２である第３の配列johoCを作成する。また、配列johoAを配列変換した文字列を配列johoCの最初の要素に代入し、配列johoBを配列変換した文字列を配列johoCの次の順番の要素に代入する。そして、配列johoCを配列変換する。
また、値が代入されていない連想配列を文字列へ変換しようとした場合は、情報処理装置１は、連想配列を要素数ゼロの連想配列とみなして処理を行う（例えば、ＶＢ．ｎｅｔで用いられるNothingを文字列へ変換しようとした場合は、情報処理装置１は、Nothingを要素数ゼロの連想配列とみなして処理を行う）こととしてもよい。
【０１６８】
例えば、連想配列のキーが「ど」「は」「あ」「お」「も」であり、値が夫々「まる」「ぎん」「とう」「はん」「ゆう」であるとする。配列johoAは、johoA(0)=”ど”、johoA(1)=”は”、johoA(2)=”あ”、johoA(3)=”お”、及びjohoA(4)=”も”という要素を含んだ要素数５の配列である。配列johoBでは、各キーが格納された配列johoAの各要素と同一の番号の要素に、連想配列の値が格納される。「ど」をキーとする場合は値が「まる」であるため、johoB(0)=”まる”となり、以後同様にjohoB(1)=”ぎん”、johoB(2)=”とう”、johoB(3)=”はん”、johoB(4)=”ゆう”となる。配列johoA及び配列johoBを配列変換すると、夫々「;ど;は;あ;お;も」、「;まる;ぎん;とう;はん;ゆう」となる。夫々の文字列が配列johoCの各要素に格納される。johoC(0)=”;ど;は;あ;お;も”、johoC(1)=”;まる;ぎん;とう;はん;ゆう”となる。johoCを配列変換し、「＃;ど;は;あ;お;も＃;まる;ぎん;とう;はん;ゆう」が得られる。
【０１６９】
文字列を連想配列へ変換する方法を説明する。文字列を配列変換することにより、第４の配列johoCを作成する。配列johoCの各要素に代入されている文字列を配列変換する。すなわち、配列johoCの最初の要素に代入されている文字列を配列変換した第５の配列johoAを作成し、配列johoCの次の順番の要素に代入されている文字列を配列変換した第６の配列johoBを作成する。配列johoAの各要素に代入されているデータをキー、配列johoAの各要素に対応する配列johoBの各要素に代入されているデータを値として、各データを連想配列に代入することにより、連想配列を作成する。文字列が空文字列である場合は、情報処理装置１は、文字列を要素数ゼロの配列へ変換する。
【０１７０】
例えば、文字列が「＃;赤;橙;青;紫;黄＃;Ｓｒ;Ｎａ;;Ｋ;Ｂａ」であるとする。この文字列を配列変換することにより、johoC(0)=” ;赤;橙;青;紫;黄”、johoC(1)=”;Ｓｒ;Ｎａ;;Ｋ;Ｂａ”という要素を含んだ要素数２の配列johoCが作成される。配列johoCのjohoC(0)に格納された文字列を配列変換して配列johoAが作成され、johoC(1)に格納された文字列を配列変換して配列johoBが作成される。johoAは、johoA(0)=”赤”、johoA(1)=”橙”、johoA(2)=”青”、johoA(3)=”紫”、及びjohoA(4)=”黄”という要素を含む。johoBは、johoB(0)=”Ｓｒ”、johoB(1)=”Ｎａ”、johoB(2)=””（空文字列）、johoB(3)=”Ｋ”、及びjohoB(4)=”Ｂａ”という要素を含む。johoAの各要素に格納されたデータをキー、キーが格納されたjohoAの要素と同番号のjohoBの要素に格納されたデータを値として、連想配列が作成される。
【０１７１】
情報処理装置１は、連想配列を配列変換するためのルーチン（返り値はboolean型）を作成し、該ルーチンの引数を３つ設ける。引数は、配列を文字列へ変換するのかそれとも逆かを指定する値渡しのboolean型(toobj)、参照渡しの連想配列(obj)、及び参照渡しのstring型(text)である。toobjがTRUEの場合は、textを連想配列に配列変換して作成された連想配列（textが空文字列の場合は要素数ゼロの連想配列）がobjに代入される。toobjがFALSEの場合は、連想配列を配列変換することによりobjから作成された文字列（objに値が代入されていない場合は空文字列）がtextに代入される。いずれの場合も、成功したら返り値はTRUE、失敗したら返り値はFALSEとなる。ただし、連想配列のキー及び値のいずれかが文字列型ではない場合があることを考慮し、連想配列のキー若しくは値のデータ型に合わせたルーチンを設けること、又は作成された値を適切なデータ型に変更するルーチンを別途作成することも可能である。
【０１７２】
図１４は、情報処理装置が連想配列の配列変換を行う処理の手順を示したフローチャートである。図１４に示す処理の手順は、連想配列の配列変換を行うためのルーチンによりＣＰＵ１１が行う処理の一例である。情報処理装置１のＣＰＵ１１は、プログラム１２Ｐに基づいて以下の処理を実行する。ＣＰＵ１１は、引数に基づいて、連想配列を文字列へ変換するのかそれとも逆かを判定する（ステップＳ２１）。連想配列を文字列へ変換する場合（ステップＳ２１：ＹＥＳ）、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶している連想配列の各キーを各要素に代入した第１の配列を作成する（ステップＳ２２）。ＣＰＵ１１は、第１の配列の各要素に代入された文字列をキーとして連想配列から得られる値を各要素に代入した第２の配列を作成する（ステップＳ２３）。ＣＰＵ１１は、第１の配列及び第２の配列を配列変換し（ステップＳ２４）、第１の配列及び第２の配列を配列変換した文字列を各要素に代入した第３の配列を作成する（ステップＳ２５）。ＣＰＵ１１は、次に、第３の配列を配列変換する（ステップＳ２６）。ＣＰＵ１１は、ステップＳ２６により作成した文字列をＲＡＭ１３又は記憶部１２に記憶し、処理を終了する。
【０１７３】
ステップＳ２１で、文字列を連想配列へ変換する場合は（ステップＳ２１：ＮＯ）、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶している文字列を配列変換することにより、第４の配列を作成する（ステップＳ２８）。ＣＰＵ１１は、第４の配列の各要素を配列変換することにより、各要素に代入されている文字列を配列変換した第５の配列及び第６の配列を作成する（ステップＳ２８）。ＣＰＵ１１は、第５の配列の各要素に代入されているデータをキー、第６の配列の各要素に代入されているデータを値として、連想配列を作成する（ステップＳ２９）。ＣＰＵ１１は、作成した連想配列をＲＡＭ１３又は記憶部１２に記憶し、処理を終了する。
【０１７４】
テキスト変換とは、データ集合体を文字列へ変換し、また文字列をデータ集合体へ変換することをいう。情報処理装置１がデータ集合体を文字列型へ変換したものを情報処理装置２に転送し、前記情報処理装置2が受け取ったデータをデータ集合体に変換しようとしたときに、データ集合体のメンバが異なっている場合、情報処理装置２は、前記受け取ったデータが示す情報の一部または全部を無視しデータ集合体を作成する（例えば、dish型を情報処理装置１から情報処理装置２に転送した場合に、前記情報処理装置２におけるdish型の定義に前記情報処理装置１におけるdish型に存在するメンバであるnameが存在せず、前記情報処理装置１におけるdish型に存在しないメンバであるsortが存在する場合、前記情報処理装置２は、nameを無視し、sortに決められた値（例えば空文字列）を格納することによって、情報処理装置２は、情報処理装置１から受け取ったデータの一部または全部を無視してデータ集合体を作成できる）こととしてもよい。
【０１７５】
図１６は、情報処理装置１が行うテキスト変換の処理の手順を示したフローチャートである。図１６に示す処理の手順は、データ集合体のテキスト変換を行うためのルーチンによりＣＰＵ１１が行う処理の一例である。情報処理装置１のＣＰＵ１１は、プログラム１２Ｐに基づいて以下の処理を実行する。ＣＰＵ１１は、引数に基づいて、データ集合体を文字列へ変換するのかそれとも逆かを判定する（ステップＳ３１）。データ集合体を文字列へ変換する場合（ステップＳ３１：ＹＥＳ）、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶しているデータ集合体の各メンバに格納されているデータまたは前記データを配列変換、連想配列変換、テキスト変換などの決められた処理をして取得したデータ（例えば文字列）から連想配列を作成することにより、データ集合体から連想配列を作成する（ステップＳ３２）。ステップＳ３２では、データ集合体の各メンバと連想配列の各キーとの予め定められている対応関係に従って、各キーと関連付けてに格納されている値または前記値を配列変換、連想配列変換、テキスト変換などの決められた処理をして作成されたデータが、対応する要素に代入される。ＣＰＵ１１は、次に、配列を配列変換することにより、文字列を作成する（ステップＳ３３）。ＣＰＵ２１は、作成した文字列をＲＡＭ１３又は記憶部１２に記憶し、処理を終了する。
ただし、データ集合体によってメンバの構成が異なるため、テキスト変換の手順は異なる。そのため、本明細書ではデータ集合体の種類ごとのテキスト変換の手順を説明することがある。
【０１７６】
dishANDfoodテキスト変換とは、dishANDfood型のデータ集合体を文字列へ変換し、また文字列をdishANDfood型のデータ集合体へ変換するテキスト変換をいう。dishANDfood型のメンバがdish（dish型）、dishSET（文字列型）、tape（tape型ジャグ配列）、codeTOdish（文字列型をキーとしdish型を返す連想配列）、codeTOfood（文字列型をキーとしfood型を返す連想配列）、codeTOdishSET（文字列型をキーとし文字列型を返す連想配列）、codeTOfoodSET（文字列型をキーとし文字列型を返す連想配列）であるとして説明する。ただし、これ以外のメンバまたはルーチンが存在していてもよい。
【０１７７】
dishANDfood型を文字列に変換する方法を説明する。ここでは、変換しようとするdishANDfood型データ集合体をobjと表記する。
dishANDfood型のメンバに対応する文字列定数LEFT、DISH、DISHSET、CODETOFOOD、CODETOFOODSET、CODETODISH、CODETODISHSET、TAPEが定義され、この定義は文字列をdishANDfood型に変換する場合にも同一の定義が使用される。連想配列ARRHASHを定義し（ここでは、文字列型をキーとし文字列型を返す連想配列として説明するが、これに限られない。）、
objのメンバであるcodeTOdishのキーをデータ集合体（例えば配列）johoAに格納し、データ集合体（例えば連想配列）hashobjを定義し、整数型変数JにjohoAの添え字として使用できる最小の数値を格納し、JがjohoAの添え字として使用できる最大の数値以下である間、johoAのJ番の要素に格納されたデータをキーとしてobjのメンバであるcodeTOdishから取得できる値を変数disobjに格納し、dishobjをdishテキスト変換し取得する値（たとえば文字列）を変数iremonoに格納し、johoA(J)をキーとしiremonoを値とするキーと値の組み合わせをhashobjに格納し、Jに1を加算する処理を繰り返すことによってhashobjを作成し、hashobjを連想配列変換して取得した文字列をiremonoに格納することによってiremonoを作成し、
前記ARRHASHに、CODETIDHSHをキーとしiremonoを値とするキーと値の組み合わせを記憶し、
変数hashobjにobjのメンバであるcodeTOdishSETを記憶し、hashobjを連想配列変換して取得した文字列を変数iremonoに格納し、
前記ARRHASHに、CODETODISHSETをキーとしiremonoを値とするキーと値の組み合わせを記憶し、
objのメンバであるcodeTOfoodのキーをデータ集合体（例えば配列）johoAに記憶し、データ集合体（例えば連想配列）hashobjを定義し、整数型変数JにjohoAの添え字として使用できる最小の数値を格納し、JがjohoAの添え字として使用できる最大の数値以下である間、objのメンバであるcodeTOfoodにjohoAのJ番に格納された値を指定して取得できる値を変数foodobjに格納し、foodobjをfoodテキスト変換して作成したデータ（例えば文字列）を変数iremonoに格納し、hashobjにjohoAのJ番に格納されたデータをキーとしiremonoを値とするキーと値の組み合わせを格納し、Jに1を加算する処理を繰り返すことによってhashobjを作成し、hashobjを連想配列変換して得られた文字列をiremonoに格納することによってiremonoを作成し、
前記ARRHASHにCODETOFOODをキーとしiremonoを格納するキーと値の組み合わせを記憶し、
変数hashobjにobjのメンバであるcodeTOfoodSETを記憶し、hashobjを連想配列変換して得られた文字列を変数iremonoに格納し、
前記ARRHASHにCODETOFOODSETをキーとしiremonoを値とするキーと値の組み合わせを記憶し、
変数iremonoにobjのメンバであるdishをdishテキスト変換して取得したデータを格納し、
前記ARRHASHにDISHをキーとしiremonoを値とするキーと値の組み合わせを格納し、
変数iremonoにobjのメンバであるdishSETを格納し、
前記ARRHASHにDISHSETをキーとしiremonoを値とするキーと値の組み合わせを格納し、
変数iremonoにobjのメンバであるtapeをtape二次元配列テキスト変換して得られた文字列を格納し、
前記ARRHASHにTAPEをキーとしiremonoを値とするキーと値の組み合わせを格納することによって、
作成されたARRHASHを連想配列変換して作成された文字列を変数iremonoに格納し、
iremonoの所定の位置（例えば1文字目よりひだりがわ）にLEFTを連結した文字列を作成し、
前記文字列がdishANDfoodテキスト変換によって作成された文字列となる。
【０１７８】
文字列をdishANDfood型に変換する方法を説明する。ここでは、変換後のデータ集合体をobjと表記する。
変換しようとする文字列を変数textに格納し、textの所定位置（例えば1文字目以降）にLEFTという文字列が存在しない場合は、前記textはdishANDfoodテキスト変換できない文字列であるとみなし処理を中止する。それ以外の場合は、前記位置に存在するLEFTを取り除いた文字列を変数iremonoに格納し、iremonoを連想配列変換することによって連想配列ARRHASHを作成し（ここでは、文字列型をキーとし文字列型を返す連想配列として説明するが、これに限られない。）、
変数iremonoにARRHASHからCODETODISHをキーとして取得されるデータ（存在しない場合は空文字列）を格納し、
前記iremonoが空文字列ならばobjのメンバであるcodeTOdishを要素数0の連想配列とし、それ以外の場合は、
前記iremonoを連想配列変換して作成される連想配列を変数（例えば文字列型をキーとし文字列型を返す連想配列）hashobjに格納し、hashobjのキーをデータ集合体（例えば配列）johoAに格納し、johoAの添え字に使用できる最小の数値を数値型変数Jに格納し、前記JがjohoAの添え字に使用できる最大の数値以下である間、johoAのJ番に格納されたデータをキーに前記hashobjから取得される値を変数iremonoに格納し、前記iremonoをdishテキスト変換して取得されるデータ集合体をdish型変数dishobjに格納し（これができないときはdishobjにNothingまたはNullを格納）、objのメンバであるcodeTOdishに、johoAのJ番の要素に格納されたデータをキーとしdishobjを値とするキーと値の組み合わせを格納（dishobjがNothingまたはNullである場合を除く）し、Jに1を加算する処理を繰り返すことによって、
objのメンバであるcodeTOdishを作成する。
変数iremonoにARRHASHからCODETODISHSETをキーとして取得されるデータ（存在しない場合は空文字列）を格納し、
前記iremonoが空文字列ならばobjのメンバであるcodeTOdishSETは要素数0の連想配列とし、それ以外の場合は、
前記iremonoを連想配列変換して作成したデータ集合体を変数hashobjに格納し、前記hashobjをobjのメンバであるcodeTOdishSETに格納することによって、
objのメンバであるcodeTOdishSETを作成する。
変数iremonoにARRHASHからCODETOFOODをキーとして取得されるデータ（存在しない場合は空文字列）を格納し、
前記iremonoが空文字列である場合は、objのメンバであるcodeTOfoodは要素数0の連想配列とし、それ以外の場合は、
変数（例えば文字列型をキーとし文字列型を返す連想配列）hashobjにiremonoを連想配列変換して作成したデータを格納し、データ集合体（例えば配列）johoAにhashobjのキーを格納し、整数型変数JにjohoAの添え字として使用できる最小の数値を格納し、JがjohoAの添え字として使用できる最大の数値以下である間、変数iremonoに前記hashobjからjohoAのJ番の要素に格納されたデータをキーとして取得される値を格納し、前記iremonoをfoodテキスト変換して取得されるデータ集合体を変数foodobjに格納し、objのメンバであるcodeTOfoodにjohoAのJ番の要素に格納されたデータをキーとしfoodobjを値とするキーと値の組み合わせを格納し、Jに1を加算する操作を繰り返ことによって、
objのメンバであるcodeTOfoodを作成する。
変数iremonoにARRHASHからCODETOFOODSETをキーとして取得されるデータ（存在しない場合は空文字列）を格納し、
変数（例えば文字列型をキーとし文字列型を返す連想配列）hashobjを定義し、前記iremonoが空文字列である場合は前記hashobjを要素数0の連想配列とし、それ以外の場合は、
前記iremonoを連想配列変換して取得したデータを前記hashobjに格納し、objのメンバであるcodeTOfoodSETに前記hashobjを格納することによって、
objのメンバであるcodeTOfoodSETを作成する。
変数iremonoにARRHASHからDISHをキーとして取得される値（存在しない場合は空文字列）を格納し、
前記iremonoが空文字列でない場合はiremonoをdishテキスト変換して取得したデータをdish型変数dishobjに格納し、objのメンバであるdishに前記dishobjを格納することによって、
objのメンバであるdishを作成する。
変数iremonoにARRHASHからDISHSETをキーとして取得されるデータ（存在しない場合は空文字列）を格納し、
objのメンバであるdishSETに前記iremonoを格納することによって、
objのメンバであるdishSETを作成する。
変数iremonoにARRHASHからTAPEをキーとして取得されるデータ（存在しない場合は空文字列）を格納し、
Iremonoが空文字列でない場合はiremonoをtape二次元テキスト変換して取得した値をobjのメンバであるtapeに格納し、iremonoが空文字列である場合はobjのメンバであるtapeを要素数0の配列とすることによって、
objのメンバであるtapeを作成する。
上記の処理によって作成されたobjは、文字列をdishANDfoodテキスト変換して作成したデータ集合体となる。
【０１７９】
情報処理装置１は、データ集合体をdishANDfoodテキスト変換するためのルーチン（返り値はboolean型）を作成し、該ルーチンの引数を３つ設ける。引数は、配列を文字列へ変換するのかそれとも逆かを指定する値渡しのboolean型変数(toobj)、参照渡しのデータ集合体(obj)、及び参照渡しのstring型(text)である。toobjがTRUEの場合はtextからdishANDfoodテキスト変換により作成されたデータ集合体をobjに代入し、FALSEの場合はobjをdishANDfoodテキスト変換して作成された文字列をtextに代入する。いずれの場合も、成功したら返り値はTRUE、失敗したら返り値はFALSEを返す。
【０１８０】
dishテキスト変換とは、dish型のデータ集合体を文字列へ変換し、また文字列をdish型のデータ集合体へ変換するテキスト変換をいう。dishテキスト変換は、少なくとも一定の規則に従って変換したいデータ集合体を文字列に変換し、また文字列を一定の規則に従ってdish型に変換するという点がdishANDfoodテキスト変換と同様である。例えば、特願２０１７−０９６２６２に開示した方法が考えられるが、これでなくてもよい。
【０１８１】
foodテキスト変換とは、dish型のデータ集合体を文字列へ変換し、また文字列をfood型のデータ集合体へ変換するテキスト変換をいう。foodテキスト変換は、少なくとも一定の規則に従って変換したいデータ集合体を文字列に変換し、また文字列を一定の規則に従ってfood型に変換するという点がdishANDfoodテキスト変換と同様である。例えば、特願２０１７−０９６２６２に開示した方法が考えられるが、これでなくてもよい。
【０１８２】
tape二次元配列テキスト変換とは、tape型ジャグ配列を文字列へ変換し、また文字列をtape型ジャグ配列へ変換することをいう。tape型のメンバがbef（整数型）、codeminmax（codeminmax型）であるとして説明する。ただし、これ以外のメンバまたはルーチンが存在していてもよい。
【０１８３】
tape型ジャグ配列を文字列に変換する方法を説明する。ここでは変換しようとするデータ集合体をarrと表記する。
arrと同数の要素数を持つ配列johoAを作成し、前記johoAの各要素に、arrにおける同じ番号の要素に格納されたデータをtape一次元配列テキスト変換して作成したデータを格納する。その後前記johoAを配列変換し、文字列型定数LEFT（前記LEFTは、文字列からtape型ジャグ配列を作成する際に使用するLEFTと同一の値）を前記配列変換によって作成した文字列の所定の位置（例えば左端）に追加して作成した文字列を、tape二次元配列テキスト変換して作成した文字列とする。
【０１８４】
文字列をtape型ジャグ配列に変換する方法を説明する。ここでは変換後のデータ集合体をarrと表記する。
変換したい文字列の所定の位置（例えば1文字目以降）に前記LEFTが存在するかを確認し、前記LEFTが所定の位置に存在しない場合は変換したい文字列はtape型ジャグ配列に変換できない文字列とみなしtape一次元配列テキスト変換を中止する。
前記LEFTが所定の位置に存在する場合は、前記LEFTを取り除いた文字列を配列変換して作成した配列をjohoDとし、前記johoDと同数の要素数を持つジャグ配列としてarrを定義する。前記arrの各要素に、johoDにおける同じ番号の要素に格納されたデータをtape一次元配列テキスト変換して作成したデータ集合体（例えば配列）を格納することによって作成したarrを、変換したい文字列をtape二次元配列テキスト変換して作成したデータ集合体であるとする。
【０１８５】
図１７は、情報処理装置がtape二次元配列テキスト変換を実行する処理の手順を示したフローチャートである。図１７に示す処理の手順は、tape二次元配列テキスト変換を行うためのルーチンによりＣＰＵ１１が行う処理の一例である。情報処理装置１のＣＰＵ１１は、プログラム１２Ｐに基づいて以下の処理を実行する。ＣＰＵ１１は、tape型ジャグ配列を文字列へ変換するのかそれとも逆かを判定する（ステップＳ１７０１）。
tape型ジャグ配列を文字列に変換する場合（Ｓ１７０１：ＮＯ）、ＣＰＵ１１は、ＲＡＭ１３または記憶部１２または記録媒体１０に記録されたtape型ジャグ配列の各要素をtape一次元配列することによって配列を作成し（ステップＳ１７０２）、前記配列を配列変換することによって文字列を作成し（ステップＳ１７０３）、前記文字列の所定の位置に所定の文字列を付加する（ステップＳ１７０４）ことによって作成した文字列をＲＡＭ１３または記憶部１２または記録媒体１０に記憶し、処理を終了する。
文字列をtape型ジャグ配列に変換する場合（Ｓ１７０１：ＹＥＳ）、ＣＰＵ１１は、ＡＭ１３または記憶部１２または記録媒体１０に記録された前記文字列が所定の条件を満たす（例えば、所定の位置に所定の文字列が存在する）かを判定し（ステップ：Ｓ１７５１）、前記判定がＹＥＳである（Ｓ１７５１：ＹＥＳ）であれば前記文字列の所定の位置に存在する所定の文字列を取り除いた文字列を配列変換して配列を作成し（ステップＳ１７５２）、前記配列の各要素をtape一次元配列テキスト変換して作成された配列（ステップＳ１７５３）をＲＡＭ１３または記憶部１２または記録媒体１０に記憶し、処理を終了する。
【０１８６】
tape一次元配列テキスト変換とは、tape型一次元配列を文字列へ変換し、また文字列をtape型ジャグ配列へ変換することをいう。tape型のメンバはtape二次元配列テキスト変換と同様である。
【０１８７】
tape型一次元配列を文字列に変換する方法を説明する。ここでは変換しようとするデータ集合体をarrと表記する。
arrと同数の要素数を持つ配列johoBを作成し、前記johoBの各要素に、arrにおける同じ番号の要素に格納されたデータをtapeテキスト変換して作成したデータを格納する。その後、johoBを配列変換し、文字列型定数LEFT（前記LEFTは、文字列からtape型一次元配列を作成する際に使用するLEFTと同一の値）を前記配列変換によって作成した文字列の所定の位置（例えば左端）に追加して作成した文字列を、tape一次元配列テキスト変換して作成した文字列とする。
【０１８８】
文字列をtape型一次元配列に変換する方法を説明する。ここでは変換後のデータ集合体をarrと表記する。
変換したい文字列の所定の位置（例えば1文字目以降）に前記LEFTが存在するかを確認し、前記LEFTが所定の位置に存在しない場合は変換したい文字列はtape型一次元配列に変換できない文字列とみなしtape一次元配列テキスト変換を中止する。
前記LEFTが所定の位置に存在する場合は、前記LEFTを取り除いた文字列を配列変換して配列johoCを作成し、前記arrを前記johoCと同数の要素数を持つ配列とする。前記arrの各要素に、johoCにおける同じ番号の要素に格納されたデータをtapeテキスト変換して作成したデータを格納することにより作成したarrを、変換したい文字列をtape一次元配列テキスト変換して作成したデータ集合体とする。
【０１８９】
図１８は、情報処理装置がtape一次元配列テキスト変換を実行する処理の手順を示したフローチャートである。図１８に示す処理の手順は、tape一次元配列テキスト変換を行うためのルーチンによりＣＰＵ１１が行う処理の一例である。情報処理装置１のＣＰＵ１１は、プログラム１２Ｐに基づいて以下の処理を実行する。ＣＰＵ１１は、tape型一次元配列を文字列へ変換するのかそれとも逆かを判定する（ステップＳ１７０１）。
tape型一次元配列を文字列に変換する（Ｓ１８０１：ＹＥＳ）場合は、前記tape型一次元配列の各要素をtapeテキスト変換して作成した文字列を同じ番号の要素に格納することによって配列を作成（ステップＳ１８０２）し、前記配列を配列変換（ステップＳ１８０３）して作成した文字列をＲＡＭ１３または記憶部１２または記録媒体１０に記憶し、処理を終了する。
文字列をtape型一次元配列に変換する（Ｓ１８０１：ＮＯ）場合は、ＣＰＵ１１は、ＡＭ１３または記憶部１２または記録媒体１０に記録された前記文字列が所定の条件を満たす（例えば、所定の位置に所定の文字列が存在する）かを判定し（ステップ：Ｓ１８５１）、前記判定がＹＥＳである（Ｓ１７５１：ＹＥＳ）であれば前記文字列の所定の位置に存在する所定の文字列を取り除いた文字列を配列変換して配列を作成し（ステップＳ１８５２）、前記配列の各要素をtapeテキスト変換して作成された配列（ステップＳ１８５３）をＲＡＭ１３または記憶部１２または記録媒体１０に記憶し、処理を終了する。
【０１９０】
codeminmaxテキスト変換とは、dish型のデータ集合体を文字列へ変換し、また文字列をcodeminmax型のデータ集合体へ変換するテキスト変換をいう。foodテキスト変換は、少なくとも一定の規則に従って変換したいデータ集合体を文字列に変換し、また文字列を一定の規則に従ってfood型に変換するという点がdishANDfoodテキスト変換と同様である。例えば、特願２０１７−０９６２６２に開示した方法が考えられるが、これでなくてもよい。
【０１９１】
tapeテキスト変換とは、tape型のデータ集合体を文字列へ変換し、また文字列をtape型のデータ集合体へ変換するテキスト変換をいう。ここでは、tape型は、メンバとしてbef（整数型）、codeminmax（codeminmax型）を持つデータ集合体であるとして説明する。ただし、これ以外のメンバまたはルーチンが存在していてもよい。
【０１９２】
tape型データ集合体を文字列に変換する方法を説明する。ここでは、変換したいデータ集合体をobjと表記し、情報処理装置１がtape型データ集合体を文字列に変換する処理をするものとして説明する。
連想配列ARRHASHを定義し、ＣＰＵ１１はプログラム１２Ｐに基づいて、前記ARRHASHに、BEF（文字列型定数）をキーとしobjのメンバであるbefをキーとするキーと値の組み合わせと、CODEMINMAX（文字列型定数）をキーとしobjのメンバであるcodeminmaxをcodeminmaxテキスト変換して作成した文字列をキーとするキーと値の組み合わせを、それぞれ記憶させ、前記ARRHASHを連想配列変換して作成した文字列に識別文字列LEFT（文字列型定数）を所定の位置（例えば1文字目の左）に付加し、tape型データ集合体を文字列に変換して作成した文字列であるとする。ＣＰＵ１１は、前記文字列をＲＡＭ１３または記憶部１２または記憶媒体１０に記憶する。（前記BEF、CODEMINMAX、LEFTという定数は、文字列をtape型データ集合体に変換するときにも同一の値が格納されているものを使う）
【０１９３】
文字列をtape型データ集合体に変換する方法を説明する。ここでは、変換後のデータ集合体をobjと表記し、情報処理装置１が文字列をtapeがたデータ集合体を文字列に変換する処理をするものとして説明する。
変換したい文字列の所定の位置に前記LEFTが存在するかを、ＣＰＵ１１はプログラム１２Ｐに基づいて、判断し、存在しない場合はtapeテキスト変換できない文字列であるとみなし処理を中止する。
これ以外の場合は、前記文字列から所定の位置に存在するLEFTを取り除いた文字列を連想配列変換し（ＣＰＵ１１が）て作成した連想配列をARRHASHとし、objのメンバであるbefに、ARRHASHから、BEFをキーとし取得できる値を整数型に変換した文字列を格納し、objのメンバであるcodeminmaxに、ARRHASHから、CODEMINMAXをキーとして取得できる値をcodeminmaxテキスト変換して取得した値を格納することによって、作成したobjを、ＣＰＵ１１は、ＲＡＭ１３または記憶部１２または記憶媒体１０に記憶する。
【０１９４】
なお、実施の形態１および３においては、通信網Ｎを介してデータの転送を行う形態を示したが、情報処理装置１及び第２情報処理装置２は、その他の方法でデータの転送を行う形態であってもよい。例えば、情報処理装置１は、データ集合体を変換した文字列を記録媒体に記録することによって文字列を出力し、第２情報処理装置２は、記録媒体から文字列を読み出すことによって文字列を取得し、文字列をデータ集合体へ変換してもよい。
【０１９５】
また、実施の形態１〜３においては、データ集合体は、当該データ集合体の外部からアクセスできないメンバを持つことができる。図１５は、外部からアクセスできないメンバを持つデータ集合体４に対する処理の概念を示す概念図である。情報処理装置１（又は情報処理装置２）は、データ集合体４がデータ集合体４の外部からアクセスできないメンバを持つ場合、外部からのアクセス可能なメンバ４１に代入４０１があったとき、代入された内容を、外部からアクセスできないメンバ４２に代入４０２を行う。メンバ４１から値を取り出すとき、情報処理装置１（又は第２情報処理装置２）は、メンバ４２の内容の確認４０３を行い、メンバ４２に値が代入されていないとき（メンバ４２のデータ型について予め定められている特定の値が代入されているときを含む）は、予め決められた値を返す（４０４）。例えば、メンバ４２が配列又は連想配列であれば、要素数０の配列又は連想配列が返される。メンバ４２が配列及び連想配列以外のデータ集合体であれば、各メンバにデフォルト値が代入された状態（値が代入されていない状態がデフォルトの場合はその状態）のデータ集合体が返される。メンバ４２に値が代入されているとき（特定の値が代入されているときを除く）は、情報処理装置１は、メンバ４２に代入された値を返す（４０４）。
【０１９６】
また、実施の形態１〜３においては、変数がNull許容型である場合、変数は、値を文字列にするときに、変数のデータ型の値にならない文字列を代入されることができるものであってもよい。例えば、変数は、数値型であれば、空文字列などの数値にならない値を代入されることができ、日付型であれば、空文字列などの日付にならない値を代入されることができる。Null許容型の変数にそのデータ型にならない文字列を代入しようとする場合、代わりにNullを代入することができるものであってもよい。
【０１９７】
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。また、各実施の形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【図１】
2019049854.tif 000003
【図２】
2019049854.tif 000004
【図３】
2019049854.tif 000005
【図４】
2019049854.tif 000006
【図５】
2019049854.tif 000007
【図６】
2019049854.tif 000008
【図７】
2019049854.tif 000009
【図８】
2019049854.tif 000010
【図９】
2019049854.tif 000011
【図１０】
2019049854.tif 000012
【図１１】
2019049854.tif 000013
【図１２】
2019049854.tif 000014
【図１３】
2019049854.tif 000015
【図１４】
2019049854.tif 000016
【図１５】
2019049854.tif 000017
【図１６】
2019049854.tif 000018
【図１７】
2019049854.tif 000019
【図１８】
2019049854.tif 000020