(57)【要約】【課題】構造体等のデータ集合体に係るデータを転送することができるプログラム及び情報処理システムを提供する。【解決手段】プログラム１２Ｐは、データ集合体に含まれる一個以上のメンバに格納されたデータを、配列の一個以上の要素に格納する配列作成処理と、前記配列の一個以上の要素に格納されたデータ及びデータの区切りを示す区切り文字を含んだ文字列を作成する文字列作成処理とを情報処理装置に実行させる。データ集合体を文字列へ変換して他の情報処理装置へ転送することが可能となる。【選択図】図１
2018022472.tif 000002
【特許請求の範囲】
【請求項１】
データ集合体に含まれる一個以上のメンバに格納されたデータを、配列の一個以上の要素に格納する配列作成処理と、
前記配列の一個以上の要素に格納されたデータ及びデータの区切りを示す区切り文字を含んだ文字列を作成する文字列作成処理と
を情報処理装置に実行させるプログラム。
【請求項２】
前記配列作成処理は、
前記データ集合体に第２のデータ集合体が含まれる場合に、該第２のデータ集合体に含まれる一個以上のメンバに格納されたデータを、第１の配列の一個以上の要素に格納し、
前記第１の配列の一個以上の要素に格納されたデータ及び第１の区切り文字を含んだ第１の文字列を作成し、
前記第２のデータ集合体以外のメンバ及び前記第１の文字列の少なくとも何れかを、第２の配列の一個以上の要素に格納する処理を含み、
前記文字列作成処理は、
前記第２の配列の一個以上の要素に格納されたデータ及び第２の区切り文字を含んだ文字列を作成する処理を含む
請求項１に記載のプログラム。
【請求項３】
配列のいずれの要素にも含まれていない文字を、データの区切りを示す区切り文字として特定し、
前記配列の一個以上の要素に格納されているデータを、特定した区切り文字を境にして連結し、
区切り文字を境にして連結したデータを含み、所定の位置に前記区切り文字を含んだ文字列を作成する
処理を情報処理装置に実行させるプログラム。
【請求項４】
文字列の中から、該文字列中の文字の位置に基づいて、データの区切りを示す区切り文字を特定し、
特定した区切り文字に基づいて、前記文字列を０個以上のデータへ変換し、一個以上のデータを配列の一個以上の要素に格納し、
前記配列の一個以上の要素に格納されたデータを、データ集合体の一個以上のメンバに格納する
処理を情報処理装置に実行させるプログラム。
【請求項５】
第１情報処理装置及び第２情報処理装置を通信網で接続した情報処理システムであって、
前記第１情報処理装置は、
データ集合体に含まれる一個以上のメンバに格納されたデータを、予め定められている対応関係に従って、配列の一個以上の要素に格納する第１配列作成部と、
前記配列の一個以上の要素に格納されたデータ及びデータの区切りを示す区切り文字を含んだ文字列を作成する文字列作成部と、
該文字列作成部が作成した文字列を出力する出力部とを備え、
前記第２情報処理装置は、
前記データ集合体の一個以上のメンバと前記配列の一個以上の要素との間の前記対応関係を前記第１情報処理装置と共有しており、
前記出力部が出力した文字列を取得する取得部と、
該取得部で取得した文字列を、前記区切り文字に基づいて０個以上のデータへ変換し、一個以上のデータを配列の一個以上の要素に格納する第２配列作成部と、
前記配列の一個以上の要素に格納されたデータを、前記対応関係に従って、データ集合体に含まれる一個以上のメンバに格納するデータ集合体作成部とを備える
情報処理システム。
【請求項６】
前記第１配列作成部は、
前記データ集合体に第２のデータ集合体が含まれる場合に、該第２のデータ集合体に含まれる一個以上のメンバに格納されたデータを、第１の配列の一個以上の要素に格納し、
前記第１の配列の一個以上の要素に格納されたデータ及び第１の区切り文字を含んだ第１の文字列を作成し、
前記第２のデータ集合体以外のメンバ及び前記第１の文字列の少なくとも何れかを、第２の配列の一個以上の要素に格納し、
前記文字列作成部は、
前記第２の配列の一個以上の要素に格納されたデータ及び第２の区切り文字を含んだ第２の文字列を作成する
請求項５に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置から他の情報処理装置へデータを転送することを可能にするプログラム及び情報処理システムに関する。
【背景技術】
【０００２】
従来、区切り文字により区切られたテキストデータを転送するプログラムが知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−５７２３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１に開示された技術では、複数のデータにより構成される構造体等のデータ集合体に対応することが難しいという問題がある。ここで、データ集合体は、配列、連想配列、構造体、ユーザ定義型の変数、クラス及び共用体等、０個以上の値を持つことができる変数である。変数には、オブジェクト、及びオブジェクトのインスタンスが含まれる。構造体等のデータ集合体は、夫々に変数である０個以上のメンバを含んでいる。データ集合体中の変数が要素と呼称される場合は、メンバには要素が含まれる。０個以上のメンバは、順番等の互いの関係が定義されており、０個以上の何れかにデータが代入される。
【０００５】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、データ集合体に係るデータを転送することができるプログラム及び情報処理システムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一態様のプログラムは、データ集合体に含まれる一個以上のメンバに格納されたデータを、配列の一個以上の要素に格納する配列作成処理と、前記配列の一個以上の要素に格納されたデータ及びデータの区切りを示す区切り文字を含んだ文字列を作成する文字列作成処理とを情報処理装置に実行させる。
【０００７】
本発明の一態様の情報処理システムは、第１情報処理装置及び第２情報処理装置を通信網で接続した情報処理システムであって、前記第１情報処理装置は、データ集合体に含まれる一個以上のメンバに格納されたデータを、予め定められている対応関係に従って、配列の一個以上の要素に格納する第１配列作成部と、前記配列の一個以上の要素に格納されたデータ及びデータの区切りを示す区切り文字を含んだ文字列を作成する文字列作成部と、該文字列作成部が作成した文字列を出力する出力部とを備え、前記第２情報処理装置は、前記データ集合体の一個以上のメンバと前記配列の一個以上の要素との間の前記対応関係を前記第１情報処理装置と共有しており、前記出力部が出力した文字列を取得する取得部と、該取得部で取得した文字列を、前記区切り文字に基づいて０個以上のデータへ変換し、一個以上のデータを配列の一個以上の要素に格納する第２配列作成部と、前記配列の一個以上の要素に格納されたデータを、前記対応関係に従って、データ集合体に含まれる一個以上のメンバに格納するデータ集合体作成部とを備える。
【発明の効果】
【０００８】
本発明の一側面によれば、構造体等のデータ集合体に係るデータを転送することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置を示すブロック図である。
【図２】実施の形態１に係る情報処理装置が配列変換を実行する処理の手順を示したフローチャートである。
【図３】実施の形態２に係る情報処理装置が連想配列の配列変換を行う処理の手順を示したフローチャートである。
【図４】実施の形態３における情報処理装置が行う変換処理の例を説明するための説明図である。
【図５】実施の形態３におけるデータ集合体の各メンバと配列の各要素との対応関係の例を示す図表である。
【図６】実施の形態３に係る情報処理装置が行うテキスト変換の処理の手順を示したフローチャートである。
【図７】実施の形態４における情報処理装置が行うデータ集合体を文字列へ変換する処理の例を説明するための説明図である。
【図８】実施の形態４におけるデータ集合体の各メンバと配列の各要素との対応関係の例を示す図表である。
【図９】実施の形態４における情報処理装置が行う文字列をデータ集合体へ変換する処理の例を説明するための説明図である。
【図１０】実施の形態４に係る情報処理装置が行うテキスト変換の処理の手順を示したフローチャートである。
【図１１】実施の形態７に係る情報処理システムの構成を示すブロック図である。
【図１２】実施の形態７に係る情報処理システムが実行する処理の手順を示すフローチャートである。
【図１３】実施の形態８に係る情報処理システムの構成を示すブロック図である。
【図１４】実施の形態８に係る情報処理装置が実行する処理の手順を示すフローチャートである。
【図１５】実施の形態８に係る第２情報処理装置２が実行する処理の手順を示すフローチャートである。
【図１６】外部からアクセスできないメンバを持つデータ集合体４に対する処理の概念を示す概念図である。
【発明を実施するための形態】
【００１０】
＜実施の形態１＞
以下本実施の形態を、図面を参照して説明する。図１は情報処理装置を示すブロック図である。情報処理装置１はインターネット、ＬＡＮ(Local Area Network)又は携帯電話網等の通信網Ｎにより他の情報処理装置と相互に接続されている。情報処理装置１は、例えばサーバ装置、パーソナルコンピュータ又はスマートフォン等である。情報処理装置１は、ＣＰＵ(Central Processing Unit)１１、記憶部１２、ＲＡＭ（Random Access Memory）１３、入力部１４、表示部１５、通信部１６及びドライブ部１７を備える。
【００１１】
ＣＰＵ１１は、バスを介してハードウェア各部と接続されている。ＣＰＵ１１は例えば一もしくは複数のＣＰＵ又はマルチコアＣＰＵ等を備える。ＣＰＵ１１は、記憶部１２に記憶されたプログラム１２Ｐに従いハードウェアの各部を制御する。
【００１２】
記憶部１２は例えばハードディスク又は大容量メモリ等である。ドライブ部１７は、光ディスク等の記録媒体１０から情報を読み取る。記憶部１２にはＣＰＵ１１が処理を行う際に必要とする種々のデータ及びプログラム１２Ｐを格納する。ＣＰＵ１１は、記録媒体１０に記録されたプログラム１２Ｐをドライブ部１７に読み取らせ、読み取ったプログラム１２Ｐを記憶部１２に記憶させる。ＣＰＵ１１は、必要に応じてプログラム１２Ｐを記憶部１２からＲＡＭ１３へロードし、ロードしたプログラム１２Ｐに従って、各種の処理を実行する。なお、プログラム１２Ｐは、情報処理装置１の外部からダウンロードされてもよく、予め記憶部１２に記憶されていてもよい。この場合、情報処理装置１は、ドライブ部１７を備えていない形態であってもよい。
【００１３】
ＲＡＭ１３は例えばＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）、フラッシュメモリ等である。ＲＡＭ１３は、記憶部としても機能し、ＣＰＵ１１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１４】
入力部１４はマウス又はキーボード等の入力デバイスであり、受け付けた操作情報をＣＰＵ１１へ送信する。表示部１５はＣＰＵ１１から送信された画像データを表示する。表示部１５は例えば液晶ディスプレイである。通信部１６は、例えば無線ＬＡＮカード又は携帯電話用通信モジュール等であり、通信網Ｎを介して各種情報を送受信する。
【００１５】
実施の形態１では、情報処理装置１は、配列を文字列へ変換し、また文字列を配列へ変換する。配列を文字列へ変換する方法を説明する。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となる。ただし、連想配列のキー及び値のいずれかが文字列型ではない場合があることを考慮し、連想配列のキー若しくは値のデータ型に合わせたルーチンを設けること、又は作成された値を適切なデータ型に変更するルーチンを別途作成することも可能である。
【００２７】
図３は、実施の形態２に係る情報処理装置が連想配列の配列変換を行う処理の手順を示したフローチャートである。図３に示す処理の手順は、連想配列の配列変換を行うためのルーチンによりＣＰＵ１１が行う処理の一例である。情報処理装置１のＣＰＵ１１は、プログラム１２Ｐに基づいて以下の処理を実行する。ＣＰＵ１１は、引数に基づいて、連想配列を文字列へ変換するのかそれとも逆かを判定する（ステップＳ２１）。連想配列を文字列へ変換する場合（ステップＳ２１：ＹＥＳ）、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶している連想配列の各キーを各要素に代入した第１の配列を作成する（ステップＳ２２）。ＣＰＵ１１は、第１の配列の各要素に代入された文字列をキーとして連想配列から得られる値を各要素に代入した第２の配列を作成する（ステップＳ２３）。ＣＰＵ１１は、第１の配列及び第２の配列を配列変換し（ステップＳ２４）、第１の配列及び第２の配列を配列変換した文字列を各要素に代入した第３の配列を作成する（ステップＳ２５）。ＣＰＵ１１は、次に、第３の配列を配列変換する（ステップＳ２６）。ＣＰＵ１１は、ステップＳ２６により作成した文字列をＲＡＭ１３又は記憶部１２に記憶し、処理を終了する。
【００２８】
ステップＳ２１で、文字列を連想配列へ変換する場合は（ステップＳ２１：ＮＯ）、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶している文字列を配列変換することにより、第４の配列を作成する（ステップＳ２８）。ＣＰＵ１１は、第４の配列の各要素を配列変換することにより、各要素に代入されている文字列を配列変換した第５の配列及び第６の配列を作成する（ステップＳ２８）。ＣＰＵ１１は、第５の配列の各要素に代入されているデータをキー、第６の配列の各要素に代入されているデータを値として、連想配列を作成する（ステップＳ２９）。ＣＰＵ１１は、作成した連想配列をＲＡＭ１３又は記憶部１２に記憶し、処理を終了する。
【００２９】
＜実施の形態３＞
実施の形態３では、情報処理装置１は、構造体等のデータ集合体をメンバとして含んでいないデータ集合体を文字列へ変換し、また文字列をデータ集合体へ変換する。本実施の形態に係る情報処理装置１の構成は、実施の形態１と同様である。以後、データ集合体を文字列へ変換する処理及び文字列をデータ集合体へ変換する処理を「テキスト変換」と呼称する。
【００３０】
図４は、実施の形態３における情報処理装置１が行う変換処理の例を説明するための説明図である。図４中にＡで示した部分はデータ集合体を文字列へ変換する処理の例を説明する。図４中にＢで示した部分は文字列をデータ集合体へ変換する処理の例を説明する。
【００３１】
データ集合体を文字列へ変換する方法を説明する。図４のＡに示すように第１情報処理装置１は構造体等のデータ集合体３１を配列３２を介して文字列３５へ変換する。ただし、どの型のデータ集合体から生成された文字列であるかを示す識別文字列を文字列に付加することもでき、この場合は識別文字列を付加した文字列を作成する。データ集合体３１は、food型の変数foodとして宣言されているとする。データ集合体３１には、name及びkindという二個のメンバが含まれており、name及びkindはString型の変数であるとする。データ集合体３１のメンバfood.name及びfood.kindには、「ステーキ」及び「主食」という文字列のデータが格納されているとする。
【００３２】
第１情報処理装置１は、データ集合体３１の各メンバに代入されているデータを、各メンバに対応する配列３２の各要素に代入することにより、配列３２を作成する。定数ARR_NAME=0、ARR_KIND=1が定義され、配列３２は、johoAという配列であり、String型のjohoA(ARR_NAME)及びjohoA(ARR_KIND)という要素を含んでいるとする。データ集合体３１の各メンバと配列３２の各要素との対応関係が予め定められている。例えば、データ集合体３３１の各メンバが配列３２の各要素に対応する順番が定められている。
【００３３】
図５は、実施の形態３におけるデータ集合体３１の各メンバと配列３２の各要素との対応関係の例を示す図表である。図５に示す如き対応関係はプログラム１２Ｐに記載されている。ＣＰＵ１１はプログラム１２Ｐを参照することで対応関係を読み込む。なお、図５に示す如き対応関係はプログラム１２Ｐとは別に記憶部１２に記憶されていてもよい。図５に示す例では、food.nameに対応する配列３２のインデックスは０とし、food.kindに対応する配列３２のインデックスは１とする。すなわち、food.nameとjohoA(0)とが対応し、food.kindとjohoA(1)とが対応する。johoA(0)＝”ステーキ”となり、johoA(1)＝”主食”となる。
【００３４】
第１情報処理装置１は、配列３２を配列変換することにより、文字列３５を作成する。本例では、johoA(0)及びjohoA(1)に代入されている「ステーキ」及び「主食」という文字列３３１及び３３２が、区切り文字「；」を境にして連結され、１文字目に区切り文字が付加された文字列３５が作成される。本例では、文字列３５は「；ステーキ；主食」である。また、文字列３５は、food型から生成された文字列であることを示す文字列が付加されていてもよい。例えば、「foodclass:」が付加される場合は、「foodclass:；ステーキ；主食」という文字列３５が得られる。データ集合体に値が代入されていない場合は、情報処理装置１は、データ集合体を各メンバにデフォルト値が代入された（値が代入されていない状態がデフォルトの場合はその状態）データ集合体とみなして処理を行うこともできる。
【００３５】
文字列をデータ集合体へ変換する方法を説明する。文字列にfood型から生成された文字列であることを示す識別文字列が付加される場合は、情報処理装置１は、food型を示す識別文字列が文字列中の所定の位置に存在するか否かを判定する。識別文字列が所定の位置に存在しない場合は、情報処理装置１は、取得した文字列はfood型から生成された文字列ではないと判定し、処理を中止する。識別文字列が所定の位置に存在する場合は、情報処理装置１は、識別文字列を取り除いた文字列を作成し、これをデータ集合体へ変換すべき文字列であるとみなす。
【００３６】
図４のＢに示すように、情報処理装置１は文字列３６を配列３８を介してデータ集合体３９へ変換する。識別文字列を取り除いた後の文字列３６は「；ステーキ；主食」である。情報処理装置１は、文字列３６を配列変換することにより、配列３８を作成する。本例では、johoA(0)及びjohoA(1)を要素とする配列johoAが作成され、文字列３６から得られた「ステーキ」及び「主食」という文字列３７１及び３７２が、johoA(0)及びjohoA(1)に代入される。情報処理装置１は、データ集合体に含まれる各メンバと配列に含まれる各要素との予め定められている対応関係に従って、配列３８の各要素に代入されているデータを、対応するデータ集合体３９の各メンバに代入する。すなわち、johoA(0)に格納されている「ステーキ」というデータがfood.nameに代入され、johoA(1)に格納されている「主食」というデータがfood.kindに代入される。このようにして、文字列がデータ集合体へ変換される。
【００３７】
情報処理装置１は、データ集合体をテキスト変換するためのルーチン（返り値はboolean型）を作成し、該ルーチンの引数を３つ設ける。引数は、配列を文字列へ変換するのかそれとも逆かを指定する値渡しのboolean型変数(toobj)、参照渡しのデータ集合体(obj)、及び参照渡しのstring型(text)である。toobjがTRUEの場合はtextからテキスト変換により作成されたデータ集合体をobjに代入し、FALSEの場合はobjをテキスト変換して作成された文字列をtextに代入する。いずれの場合も、成功したら返り値はTRUE、失敗したら返り値はFALSEを返す。
【００３８】
図６は、実施の形態３に係る情報処理装置１が行うテキスト変換の処理の手順を示したフローチャートである。図６に示す処理の手順は、データ集合体をメンバとして含んでいないデータ集合体のテキスト変換を行うためのルーチンによりＣＰＵ１１が行う処理の一例である。情報処理装置１のＣＰＵ１１は、プログラム１２Ｐに基づいて以下の処理を実行する。ＣＰＵ１１は、引数に基づいて、データ集合体を文字列へ変換するのかそれとも逆かを判定する（ステップＳ３１）。データ集合体を文字列へ変換する場合（ステップＳ３１：ＹＥＳ）、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶しているデータ集合体の各メンバに格納されているデータを配列の各要素に代入することにより、データ集合体から配列を作成する（ステップＳ３２）。ステップＳ３２では、データ集合体の各メンバと配列の各要素との予め定められている対応関係に従って、各メンバに格納されているデータが対応する要素に代入される。ＣＰＵ１１は、次に、配列を配列変換することにより、文字列を作成する（ステップＳ３３）。ＣＰＵ２１は、作成した文字列をＲＡＭ１３又は記憶部１２に記憶し、処理を終了する。
【００３９】
ステップＳ３１で、文字列をデータ集合体へ変換する場合は（ステップＳ３１：ＮＯ）、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶している文字列を配列変換することにより、配列を作成する（ステップＳ３４）。ＣＰＵ１１は、次に、配列の各要素に格納されているデータをデータ集合体の各メンバに代入することにより、配列からデータ集合体を作成する（ステップＳ３５）。ステップＳ３３では、配列の各要素とデータ集合体の各メンバとの予め定められている対応関係に従って、各要素に格納されているデータが対応するメンバに代入される。ＣＰＵ１１は、作成したデータ集合体をＲＡＭ１３又は記憶部１２に記憶し、処理を終了する。
【００４０】
本実施の形態によれば、情報処理装置１は、構造体等のデータ集合体を文字列へ変換することができ、また、文字列をデータ集合体へ変換することができる。これにより、一の情報処理装置で構造体等のデータ集合体を用いてまとめて記憶されたデータを、文字列へ変換して他の情報処理装置へ転送することが可能となる。
【００４１】
＜実施の形態４＞
実施の形態４ではデータ集合体をメンバに含むデータ集合体を文字列へ変換し、また文字列を、データ集合体をメンバに含むデータ集合体へ変換する。本実施の形態に係る情報処理装置１の構成は、実施の形態１と同様である。
【００４２】
データ集合体をメンバに含むデータ集合体を文字列へ変換する方法を説明する。図７は、実施の形態４における情報処理装置１が行うデータ集合体を文字列へ変換する処理の例を説明するための説明図である。第１情報処理装置１は、データ集合体４０を文字列４４へ変換する。データ集合体４０は、string型のnameというメンバと、eiyou型のeiyouというメンバを持つとする。eiyou型は、メンバとしてデータ集合体４０に含まれている第２のデータ集合体であり、VitaminA、VitaminBというメンバ（いずれもstring型）を持つとする。データ集合体４０は、nameに「ステーキ」、eiyou型のVitaminAに「ビタミンＡ」、ViraminBに「ビタミンＢ」が代入されているとする。
【００４３】
データ集合体４０をテキスト変換するためのルーチンは、eiyou型の第２のデータ集合体をテキスト変換するためのルーチンを呼び出す。第２のデータ集合体food.eiyouは、テキスト変換により、johoBという第１の配列４１へ変換され、第１の配列４１の各要素を含んだ第１の文字列４２へ変換される。johoBという第１の配列４１は、johoB(0)＝”ビタミンＡ"及びjohoB(1)＝”ビタミンＢ"という要素を含む。第１の配列４１は、「eiyou:；ビタミンＡ；ビタミンＢ」という第１の文字列４２へ変換される。第１の文字列４２では、第１の配列４１の各要素に格納されたデータが第１の区切り文字「；」を境にして連結され、また、eiyou型のデータ集合体をテキスト変換したことを示す文字列「eiyou:」が付加されている。food.eiyouに値が代入されていない場合は、情報処理装置１は、テキスト変換を行わず、第１の文字列４２を空文字列とする。
【００４４】
データ集合体４０は、更に、テキスト変換により、johoAという第２の配列４３へ変換され、第２の配列４３の各要素を含んだ第２の文字列４４へ変換される。第２の配列４３は、ARR_NAME=0、ARR_EIYOU=1という定数が定義されている。johoA(ARR_NAME)はstring型のnameが代入され、johoA(ARR_EIYOU)はeiyou型をテキスト変換した第１の文字列４２（但し、food.eiyouに値が代入されていない場合は空文字列）が代入される。すなわち、johoA(0)＝”ステーキ”、johoA(1)＝”eiyou:；ビタミンＡ；ビタミンＢ”である。第２の文字列４４は、配列johoAを配列変換した文字列「＃ステーキ＃eiyou:；ビタミンＡ；ビタミンＢ」（但し、food.eiyouに値が代入されていない場合は「＃ステーキ＃」）にfood型のデータ集合体４０をテキスト変換したことを示す文字列「food:」が付記されたものである。配列johoAを配列変換した文字列は、第２の配列４３の各要素に格納されたデータが第２の区切り文字「＃」を境にして連結された文字列である。第２の区切り文字は、第２の配列４３のいずれの要素にも存在しない文字である。すなわち文字列４５は、「food:＃ステーキ＃eiyou:；ビタミンＡ；ビタミンＢ」（但し、food.eiyouに値が代入されていない場合は「food:＃ステーキ＃」）となる。
【００４５】
データ集合体４０の各メンバと第２の配列４３の各要素との対応関係、及び第２のデータ集合体の各メンバと第１の配列４１の各要素との対応関係は、予め定められている。例えば、データ集合体４０の各メンバが第２の配列４３の各要素に対応する順番、及び第２のデータ集合体の各メンバが第１の配列４１の各要素に対応する順番が定められている。図８は、実施の形態４におけるデータ集合体の各メンバと配列の各要素との対応関係の例を示す図表である。図８に示す如き対応関係はプログラム１２Ｐに記載されている。ＣＰＵ１１はプログラム１２Ｐを参照することで対応関係を読み込む。なお、図８に示す如き対応関係はプログラム１２Ｐとは別に記憶部１２に記憶されていてもよい。図８に示す例では、food.nameとjohoA(0)とが対応し、food.eiyouとjohoA(1)とが対応する。また、food.eiyouのメンバであるVitaminAとjohoB(0)とが対応し、VitaminBとjohoB(1)とが対応する。
【００４６】
データ集合体をメンバに含むデータ集合体へ文字列を変換する方法を説明する。図９は、実施の形態４における情報処理装置１が行う文字列をデータ集合体へ変換する処理の例を説明するための説明図である。情報処理装置１は、文字列４５をデータ集合体４９へ変換する。文字列４５は「food:＃ステーキ＃eiyou:；ビタミンＡ；ビタミンＢ」である。情報処理装置１は、food型を示す文字列が取得した文字列中の所定の位置に存在するか否かを判定する。当該文字列が所定の位置に存在しない場合は、情報処理装置１は、取得した文字列はfood型から生成された文字列ではないと判定し、処理を中止する。food型を示す文字列が所定の位置に存在する場合は、情報処理装置１は、取得した文字列４５からfood型を示す文字列を取り除き、「＃ステーキ＃eiyou:；ビタミンＡ；ビタミンＢ」という文字列を得る。この文字列を配列変換することにより、「ステーキ」及び「eiyou:；ビタミンＡ；ビタミンＢ」という文字列４６１及び４６２が得られ、johoA(0)=”ステーキ”、johoA(1)=”eiyou:；ビタミンＡ；ビタミンＢ”を要素とするjohoAという配列４７が得られる。
【００４７】
johoA(1)に格納された文字列は、eiyou型を示す文字列を取り除いた上で配列変換され、johoB(0)=”ビタミンＡ”、johoB(1)=”ビタミンＢ”を要素とするjohoBという配列４８が得られる。food型のデータ集合体４９のメンバであるnameにはjohoA(0)が代入され、メンバであるデータ集合体eiyouには、配列johoBの各要素が代入される。但しjohoA(1)が空文字列の場合は、情報処理装置１は、johoA(1)をテキスト変換せず、各メンバにデフォルト値が代入された（値が代入されていない状態がデフォルトの場合はその状態）eiyouを作成する。情報処理装置１は、図８に示す如き予め定められている対応関係に従って、配列の各要素に格納されているデータを、対応するデータ集合体の各メンバに代入する。このようにして、データ集合体をメンバに含むデータ集合体４９が作成される。
【００４８】
情報処理装置１は、データ集合体をテキスト変換するためのルーチン（返り値はboolean型）を作成し、該ルーチンの引数を３つ設ける。引数は、配列を文字列へ変換するのかそれとも逆かを指定する値渡しのboolean型変数(toobj)、参照渡しのデータ集合体(obj)、及び参照渡しのstring型(text)である。toobjがTRUEの場合はtextからテキスト変換により作成されたデータ集合体をobjに代入し、FALSEの場合はobjをテキスト変換して作成された文字列をtextに代入する。いずれの場合も、成功したら返り値はTRUE、失敗したら返り値はFALSEを返す。
【００４９】
図１０は、実施の形態４に係る情報処理装置１が行うテキスト変換の処理の手順を示したフローチャートである。図１０に示す処理の手順は、データ集合体のテキスト変換を行うためのルーチンによりＣＰＵ１１が行う処理の一例である。情報処理装置１のＣＰＵ１１は、プログラム１２Ｐに基づいて以下の処理を実行する。ＣＰＵ１１は、引数に基づいて、データ集合体を文字列へ変換するのかそれとも逆かを判定する（ステップＳ４０１）。データ集合体を文字列へ変換する場合（ステップＳ４０１：ＹＥＳ）、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶しているデータ集合体のメンバとして第２のデータ集合体が含まれているか否かを判定する（ステップＳ４０２）。第２のデータ集合体が含まれている場合は（ステップＳ４０２：ＹＥＳ）、ＣＰＵ１１は、第２のデータ集合体の各メンバに格納されているデータを配列の各要素に代入することにより、第２のデータ集合体から配列を作成する（ステップＳ４０３）。ステップＳ４０３で作成する配列は第１の配列に対応する。ＣＰＵ１１は、次に、配列を配列変換することにより、文字列を作成する（ステップＳ４０４）。ステップＳ４０４で作成する文字列は第１の文字列に対応する。
【００５０】
ステップＳ４０４が終了した場合、又は第２のデータ集合体が含まれていない場合は（ステップＳ４０２：ＮＯ）、ＣＰＵ１１は、データ集合体から配列を作成する（ステップＳ４０５）。データ集合体に第２のデータ集合体が含まれている場合は、ステップＳ４０４で作成された文字列を要素に格納した配列が作成され、作成された配列は第２の配列に対応する。ＣＰＵ１１は、次に、配列を配列変換することにより、文字列を作成する（ステップＳ４０６）。データ集合体に第２のデータ集合体が含まれている場合は、作成される文字列は第２の文字列に対応する。ＣＰＵ２１は、作成した文字列をＲＡＭ１３又は記憶部１２に記憶し、処理を終了する。
【００５１】
ステップＳ４０１で、文字列をデータ集合体へ変換する場合は（ステップＳ４０１：ＮＯ）、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶している文字列を配列変換することにより、配列を作成する（ステップＳ４０７）。ＣＰＵ１１は、次に、配列のいずれかの要素に、データ集合体をテキスト変換した文字列が格納されているか否かを判定する（ステップＳ４０８）。例えば、ＣＰＵ１１は、各要素に格納されている文字列に、「eiyou:」等、データ集合体をテキスト変換したことを示す文字列が含まれているか否かを判定する。データ集合体をテキスト変換した文字列がある場合は（Ｓ４０９）、当該文字列を配列変換することにより、配列を作成する（ステップＳ４０９）。ステップＳ４０９が終了した場合、又はデータ集合体をテキスト変換した文字列が無い場合は（ステップＳ４０８：ＮＯ）、配列の各要素に格納されているデータをデータ集合体の各メンバに代入することにより、配列からデータ集合体を作成する（ステップＳ４１０）。ステップＳ４１０では、配列の各要素とデータ集合体の各メンバとの予め定められている対応関係に従って、各要素に格納されているデータが対応するメンバに代入される。ＣＰＵ１１は、作成したデータ集合体をＲＡＭ１３又は記憶部１２に記憶し、処理を終了する。
【００５２】
本実施の形態によれば、情報処理装置１は、データ集合体をメンバに含むデータ集合体を文字列へ変換することができ、また、データ集合体をメンバに含むデータ集合体へ文字列を変換することができる。これにより、データ集合体をメンバに含むデータ集合体を用いてまとめて一の情報処理装置で記憶されたデータを、文字列へ変換して他の情報処理装置へ転送することが可能となる。
【００５３】
＜実施の形態５＞
実施の形態５では、連想配列をメンバに含むデータ集合体を文字列へ変換し、また文字列を、連想配列をメンバに含むデータ集合体へ変換する。本実施の形態に係る情報処理装置１の構成は、実施の形態１と同様である。
【００５４】
連想配列をメンバに含むデータ集合体を文字列へ変換する方法を説明する。連想配列をメンバに含むデータ集合体をdelta型とする。delta型のデータ集合体は、メンバとしてstring型のnameと、integer型をキーとしてstring型を返す連想配列phoneticと、date型のdays_nodate99991231とを持つ。delta型のオブジェクトであるobjは、obj.name=”フォネティック”、obj.days_nodate99991231=”2017/6/12”、及び連想配列obj.phoneticを含む。obj.phoneticには、１→”あるふぁ”、２→”ぶらぼー”、３→”ちゃーりー”をそれぞれ返す連想配列が代入されている。情報処理装置１は、要素数が３である配列johoAを作成する。ARR_NAME=0、ARR_PHO=1、ARR_DAYS=2が定数として定義されている。情報処理装置１は、johoA(ARR_NAME)にobj.nameつまり「フォネティック」を代入し、johoA(ARR_PHO)に配列変換されたobj.phoneticを代入し、johoA(ARR_DAYS)にobj.days_nodate99991231を示す文字列を代入する。つまり、johoA(ARR_NAME)=”フォネティック”、及びjohoA(ARR_PHO)=”＃;1;2;3＃;あるふぁ;ぶらぼー;ちゃーりー＞”であり、johoA(ARR_DAYS)はobj.days_nodate99991231を示す文字列が代入されている。
【００５５】
情報処理装置１は、配列johoAを配列変換して、文字列「＞フォネティック＞＃;1;2;3＃;あるふぁ;ぶらぼー;ちゃーりー＞2017年6月12日」を得る。ここで、「＞」は区切り文字である。情報処理装置１は、この文字列にdelta型からテキスト変換されたものであることを示す文字列を付加して、「delta:＞フォネティック＞＃;1;2;3＃;あるふぁ;ぶらぼー;ちゃーりー＞2017年6月12日」という文字列を得る。
【００５６】
連想配列をメンバに含むデータ集合体へ文字列を変換する方法を説明する。「delta:＞フォネティック＞＃;1;2;3＃;あるふぁ;ぶらぼー;ちゃーりー＞2017年6月12日」をテキスト変換しようとしているとする。情報処理装置１は、文字列にdelta型からテキスト変換されたものであることを示す文字列が含まれているか否かを判定する。文字列にdelta型からテキスト変換されたものであることを示す文字列が含まれていない場合は、情報処理装置１は、文字列はdelta型からテキスト変換されたものではないと判定し、処理を終了する。文字列にdelta型からテキスト変換されたものであることを示す文字列が含まれている場合は、情報処理装置１は、delta型からテキスト変換されたものであることを示す文字列を取り除いて、「＞フォネティック＞＃;1;2;3＃;あるふぁ;ぶらぼー;ちゃーりー＞2017年6月12日」を得る。
【００５７】
情報処理装置１は、得られた文字列を配列変換して、johoA(0)=“フォネティック”、johoA(1)=“＃;1;2;3＃;あるふぁ;ぶらぼー;ちゃーりー”、及びjohoA(2)=” 2017年6月12日”を要素とする配列johoAを得る。情報処理装置１は、Delta型オブジェクトのメンバであるnameに、johoA(0)を代入し、phoneticにはjohoA(1)をinteger型をキーとする連想配列になるようにテキスト変換したもの（johoA(1)が空文字列である場合は要素数ゼロの連想配列）を代入し、days_nodate99991231にはjohoA(2)を日付型に変換したものを代入する。ただし、johoA(2)に「２０１７年８月３２日」「NO MORE CHILD LABOUR」「」（空文字列）といった日付として扱うことができない文字列が代入されている場合は、情報処理装置１は、obj.days_nodate99991231に9999年12月31日を代入する。
【００５８】
情報処理装置１は、連想配列をメンバに含むデータ集合体をテキスト変換するためのルーチン（返り値はboolean型）を作成し、ルーチンの引数を３つ設ける。引数は、配列を文字列へ変換するのかそれとも逆かを指定する値渡しのboolean型変数(toobj)、参照渡しのデータ集合体(obj)、及び参照渡しのstring型(text)である。toobjがTRUEの場合はtextをテキスト変換して作成されたデータ集合体をobjに代入し、FALSEの場合はobjをテキスト変換して作成された文字列をtextに代入する。いずれの場合も、成功したら返り値はTRUE、失敗したら返り値はFALSEを返す。
【００５９】
データ集合体は、クラスを用いてオブジェクトを定義した場合等、データ集合体の外部からアクセスできないメンバを持つ場合がある。この場合、データ集合体のメンバである連想配列phoneticに代入がなされたとき、情報処理装置１は、代入された内容を、phoneticと同じデータ型であり外部からアクセスできない連想配列p_phoneticに書き込む。書き込み時にp_phoneticが無い場合は、情報処理装置１は、例えばＮｅｗステートメントにより、p_phoneticを作成する。連想配列phoneticから値を読み出そうとしたとき、p_phoneticが無いのであれば、情報処理装置１は、p_phoneticが要素数ゼロの配列であるとして処理を行う。p_phoneticがあれば、情報処理装置１は、p_phoneticから取り出された値を返す。
【００６０】
実施の形態５に係る情報処理装置１は、図６に示したステップＳ３１〜Ｓ３５と同様の処理を実行することにより、連想配列をメンバに含むデータ集合体のテキスト変換を実行する。ＣＰＵ１１は、プログラム１２Ｐに基づいてステップＳ３１〜Ｓ３５と同様の処理を実行する。ステップＳ３２では、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶しているデータ集合体のメンバに含まれる連想配列を配列変換して文字列を作成し、作成した配列及び他のメンバを配列の各要素に代入することにより、データ集合体から配列を作成する。ステップＳ３３が終了した後、ＣＰＵ２１は、作成した文字列をＲＡＭ１３又は記憶部１２に記憶する。ステップＳ３５では、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶している文字列を配列変換した後、配列の要素に格納されている、連想配列を配列変換した文字列を、連想配列へ変換する。ステップＳ３５が終了した後、ＣＰＵ１１は、作成したデータ集合体をＲＡＭ１３又は記憶部１２に記憶する。
【００６１】
＜実施の形態６＞
実施の形態６では、配列をメンバに含むデータ集合体を文字列へ変換し、また文字列を、配列をメンバに含むデータ集合体へ変換する。本実施の形態に係る情報処理装置１の構成は、実施の形態１と同様である。
【００６２】
配列をメンバに含むデータ集合体を文字列へ変換する方法を説明する。配列をメンバに含むデータ集合体をecho型とする。echo型のデータ集合体は、メンバとしてboolean型のispayと、decimal型のpayと、decimal型のtaxと、delta型の配列であるarrとを持つ。ただし、payとtaxはispay=falseの場合は例外をスローする。echo型のオブジェクトであるobjは、obj.ispay=TRUE、obj.pay=200、obj.tax=0.08、及びobj.arrを含む。obj.arrにはdelta型の配列が入っている。情報処理装置１は、要素数が４である配列johoAを作成する。ARR_ISPAY=0、ARR_PAY=1、ARR_TAX=2、ARR_DELTA=3が定数として定義されている。
【００６３】
情報処理装置１は、johoA(ARR_ISPAY)にはobj.ispayを文字列型に変換したものを代入し、johoA(ARR_PAY)にはobj.payを文字列型に変換したものを代入し、johoA(ARR_TAX)にはobj.taxを文字列型に変換したものを代入する。また、情報処理装置１は、配列obj.arrと同数の要素数を持つ配列johoBを作成し、obj.arrの各要素に対応するjohoBの各要素に、obj.arrの各要素をテキスト変換した文字列を代入する。例えば、obj.arrの要素と同一番号のjohoBの要素が、obj.arrの要素と対応している。情報処理装置１は、配列johoBを配列変換し、配列変換により作成した文字列をjohoA(ARR_DELTA)に代入する。ただし、情報処理装置１は、obj.ispay=FALSEである場合はjohoA(ARR_PAY)およびjohoA(ARR_TAX)に空文字列を代入する。情報処理装置１は、配列johoAを配列変換し、配列変換により作成した文字列に、echo型をテキスト変換した文字列であることを示す文字列を付加する。
【００６４】
配列をメンバに含むデータ集合体へ文字列を変換する方法を説明する。配列をメンバに含むデータ集合体をテキスト変換した文字列を変換しようとしているとする。情報処理装置１は、文字列にecho型からテキスト変換されたものであることを示す文字列が含まれているか否かを判定する。文字列にecho型からテキスト変換されたものであることを示す文字列が含まれていない場合は、情報処理装置１は、文字列はecho型からテキスト変換されたものではないと判定し、処理を終了する。文字列にecho型からテキスト変換されたものであることを示す文字列が含まれている場合は、情報処理装置１は、変換対象の文字列から、echo型からテキスト変換されたものであることを示す文字列を取り除き、配列変換を行う。配列変換により作成された配列をjohoAとする。このとき、johoA(0)は真理値型に変換すればtrueとなる文字列が格納され、johoA(1)は十進型に変換すれば２００となる文字列が格納され、johoA(2)は十進型に変換すれば０．０８となる文字列が格納されている。また、johoA(3)は、配列変換すればdelta型をテキスト変換したものが代入されている配列になる文字列が格納されている。
【００６５】
情報処理装置１は、obj.ispayにjohoA(0)を真理値に変換したものを代入し、obj.payにjohoA(1)を十進型に変換したものを代入し、obj.taxにjohoA(2)を十進型に変換したものを代入する。ただし、情報処理装置１は、obj.ispayにFALSEが代入されたときは、obj.pay、obj.taxへの代入を行わない。情報処理装置１は、johoA(3)に格納された文字列を配列変換した配列（johoA(3)が空文字列である場合は要素数ゼロの配列）johoBを作成し、obj.arrにjohoBと同数の要素数を定義する。johoBの各要素をテキスト変換し、johoBの各要素に対応するobj.arrの各要素に、johoBの各要素をテキスト変換したデータを代入する。例えば、johoBの要素と同一番号のobj.arrの要素が、johoBの要素と対応している。
【００６６】
情報処理装置１は、配列をメンバに含むデータ集合体をテキスト変換するためのルーチン（返り値はboolean型）を作成し、ルーチンの引数を３つ設ける。１つ目の引数はデータ集合体を文字列へ変換するのかそれとも逆かを指定する値渡しのboolean型変数(toobj)である。２つ目の引数は参照渡しのデータ集合体(obj)である。３つ目の引数は参照渡しのstring(text)型である。toobjがTRUEの場合はtextをテキスト変換して作成されたデータ集合体をobjに代入し、FALSEの場合はobjをテキスト変換して作成された文字列をtextに代入する。いずれの場合も、成功したら返り値はTRUE、失敗したら返り値はFALSEを返す。
【００６７】
実施の形態６に係る情報処理装置１は、図６に示したステップＳ３１〜Ｓ３５と同様の処理を実行することにより、配列をメンバに含むデータ集合体のテキスト変換を実行する。ＣＰＵ１１は、プログラム１２Ｐに基づいてステップＳ３１〜Ｓ３５と同様の処理を実行する。ステップＳ３２では、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶しているデータ集合体のメンバに含まれる配列を配列変換して文字列を作成し、作成した配列及び他のメンバを配列の各要素に代入することにより、データ集合体から配列を作成する。ステップＳ３３が終了した後、ＣＰＵ２１は、作成した文字列をＲＡＭ１３又は記憶部１２に記憶する。ステップＳ３５では、ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶している文字列を配列変換した後、配列の要素に格納されている、配列を配列変換した文字列を、配列へ変換する。ステップＳ３５が終了した後、ＣＰＵ１１は、作成したデータ集合体をＲＡＭ１３又は記憶部１２に記憶する。
【００６８】
＜実施の形態７＞
実施の形態７では、データ集合体を情報処理装置間で転送する。図１１は、実施の形態７に係る情報処理システムの構成を示すブロック図である。情報処理システムは、情報処理装置（第１情報処理装置）１及び第２情報処理装置２を備える。情報処理装置１の構成は、実施の形態１〜６と同様である。図１１に示すように、情報処理装置１及び第２情報処理装置２は、通信網Ｎに接続されている。
【００６９】
第２情報処理装置２は、サーバ装置、パーソナルコンピュータ又はスマートフォン等のコンピュータである。第２情報処理装置２は、ＣＰＵ２１、記憶部２２、ＲＡＭ２３、入力部２４、表示部２５、通信部２６及びドライブ部２７を備える。第２情報処理装置２のＣＰＵ２１、記憶部２２、ＲＡＭ２３、入力部２４、表示部２５、通信部２６及びドライブ部２７の構成は、情報処理装置１のＣＰＵ１１、記憶部１２、ＲＡＭ１３、入力部１４、表示部１５、通信部１６及びドライブ部１７の構成と同様であるため、簡潔のため記載を省略する。ＣＰＵ２１は、光ディスク等の記録媒体２０に記録されたプログラム２２Ｐをドライブ部２７に読み取らせ、読み取ったプログラム２２Ｐを記憶部２２に記憶させる。なお、プログラム２２Ｐは、サーバ２の外部からダウンロードされてもよく、予め記憶部２２に記憶されていてもよい。この場合、サーバ２は、ドライブ部２７を備えていない形態であってもよい。
【００７０】
情報処理装置１及び第２情報処理装置２は、図５又は図８に示す如き、予め定められているデータ集合体と配列との対応関係を記憶している。例えば、対応関係は、プログラム１２Ｐ及びプログラム２２Ｐに含まれている。また例えば、対応関係は、記憶部１２及び記憶部２２に記憶されている。
【００７１】
図１２は、実施の形態７に係る情報処理システムが実行する処理の手順を示すフローチャートである。情報処理装置１のＣＰＵ１１は、プログラム１２Ｐに基づいて以下のステップＳ５１〜Ｓ５４の処理を実行し、第２情報処理装置２のＣＰＵ２１は、プログラム２２Ｐに基づいて以下のステップＳ５５〜Ｓ５９の処理を実行する。ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶しているデータ集合体の中から、転送すべきデータ集合体を指定する（ステップＳ５１）。ステップＳ５１では、ＣＰＵ１１は、例えば、使用者が入力部１４を操作することによって、転送すべきデータ集合体を示す情報を受け付け、受け付けた情報が示すデータ集合体を指定する。ＣＰＵ１１は、次に、指定したデータ集合体をテキスト変換することにより、データ集合体を変換した文字列を作成する（ステップＳ５２）。データ集合体を文字列へ変換する方法は、実施の形態１〜６で説明した方法と同様である。ＣＰＵ１１は、次に、作成した文字列を含むデータファイルを作成し（ステップＳ５３）、作成したデータファイルを、通信部１６に、通信網Ｎを介して第２情報処理装置２へ送信させる（ステップＳ５４）。データ集合体を変換した文字列は、テキストデータとしてデータファイルに含まれる。
【００７２】
第２情報処理装置２は、情報処理装置１から送信されたデータファイルを通信部２６で受信する（ステップＳ５５）。第２情報処理装置２は、受信したデータファイルをＲＡＭ２３又は記憶部２２に記憶し、ＣＰＵ２１は、受信したデータファイルの中から、データファイルを指定する（ステップＳ５６）。より詳しくは、ＣＰＵ２１は、取得すべきデータ集合体に係る文字列が含まれているデータファイルを指定する。ＣＰＵ１１は、例えば、使用者が入力部２４を操作することによって、データファイルを示す情報を受け付け、受け付けた情報が示すデータファイルを指定する。ＣＰＵ２１は、次に、指定したデータファイルから、データ集合体が変換された文字列を取得し（ステップＳ５７）、テキスト変換により、文字列をデータ集合体へ変換する（ステップＳ５８）。文字列をデータ集合体へ変換する方法は、実施の形態１〜６で説明した方法と同様である。ＣＰＵ２１は、作成したデータ集合体を記憶部２２に保存し（ステップＳ５９）、処理を終了する。
【００７３】
本実施の形態によれば、情報処理装置１は、データ集合体を文字列へ変換して第２情報処理装置２へ送信し、第２情報処理装置２は、受信した文字列をデータ集合体へ変換する。これにより、一以上のデータをまとめたデータ集合体を情報処理装置１から第２情報処理装置２へ転送することが可能となる。
【００７４】
＜実施の形態８＞
実施の形態８では、情報処理装置はデータ集合体をダウンロードにより取得する。図１３は、実施の形態８に係る情報処理システムの構成を示すブロック図である。情報処理システムは、情報処理装置（第１情報処理装置）１、第２情報処理装置２及び記憶装置３を備える。情報処理装置１及び第２情報処理装置２の構成は、実施の形態７と同様である。図１１に示すように、情報処理装置１、第２情報処理装置２及び記憶装置３は、通信網Ｎに接続されている。
【００７５】
記憶装置３は、サーバ装置等のコンピュータである。記憶装置３は、ＣＰＵ３１、記憶部３２、ＲＡＭ３３及び通信部３４を備える。記憶部３２は例えばハードディスク又は大容量メモリ等である。ＣＰＵ３１は、記憶部３２に記憶されたプログラム３２Ｐに従いハードウェアの各部を制御する。通信部３４は、通信網Ｎを介して各種情報を送受信する。
【００７６】
本実施形態では、情報処理装置１はデータ集合体をテキスト変換して記憶装置３へアップロードし、第２情報処理装置２は記憶装置３からデータをダウンロードすることによりデータ集合体を取得する。図１４は、実施の形態８に係る情報処理装置１が実行する処理の手順を示すフローチャートである。情報処理装置１のＣＰＵ１１は、プログラム１２Ｐに基づいて以下の処理を実行する。ＣＰＵ１１は、ＲＡＭ１３又は記憶部１２に記憶しているデータ集合体をテキスト変換することにより、データ集合体を変換した文字列を作成し、作成した文字列を含むデータファイルを作成する（ステップＳ６１）。データ集合体を文字列へ変換する方法は、実施の形態１〜６で説明した方法と同様である。データ集合体を変換した文字列は、テキストデータとしてデータファイルに含まれる。
【００７７】
ＣＰＵ１１は、次に、データ集合体に関する設定内容を各データ集合体別に記録したリストを作成し、作成したリストを含むリストファイルを作成する（ステップＳ６２）。データ集合体に関する設定内容には、データ集合体を変換した文字列が含まれるデータファイルの名称、データファイルをダウンロードできる期間、データ集合体の定義、データ集合体のメンバとデータ集合体を変換した配列の要素との対応関係等が含まれている。ＣＰＵ１１は、次に、データファイル及びリストファイルを、通信部１６に、通信網Ｎを介して記憶装置３へ送信させ（ステップＳ６３）、処理を終了する。
【００７８】
記憶装置３は、情報処理装置１から送信されたデータファイル及びリストファイルを通信部３４で受信し、受信したデータファイル及びリストファイルを記憶部３２に記憶する。この結果、記憶部３２にはデータファイル３２１及びリストファイル３２２が記憶されている。
【００７９】
図１５は、実施の形態８に係る第２情報処理装置２が実行する処理の手順を示すフローチャートである。ＣＰＵ２１は、通信部２６に、記憶装置３から通信網Ｎを介してリストファイル３２２をダウンロードさせる（ステップＳ７１）。ＣＰＵ２１は、次に、リストファイル３２２を利用して、ダウンロードすべきデータファイルを指定する（ステップＳ７２）。ダウンロードすべきデータファイルを指定する方法には、種々の方法が用いられ得る。例えば、ＣＰＵ２１は、リストファイル３２２を利用して、データファイルの名称等のデータ集合体に関する設定内容のリストを表示部２５に表示させ、表示されたリストを視認した使用者が入力部２４を操作することによって、データファイルを示す情報を受け付け、受け付けた情報が示すデータファイルを指定してもよい。また、例えば、ＣＰＵ２１は、リストに記録されたデータファイルを無条件で指定してもよい。また、例えば、ＣＰＵ２１は、作成されてからの経過時間が一定期間内であるデータファイルを指定する等、時刻に応じてデータファイルを指定してもよい。ＣＰＵ２１は、次に、指定したデータファイル３２１を、通信部２６に、記憶装置３から通信網Ｎを介してダウンロードさせる（ステップＳ７３）。ＣＰＵ２１は、ダウンロードしたデータファイル３２１をＲＡＭ２３又は記憶部２２に記憶する。
【００８０】
ＣＰＵ２１は、ダウンロードしたデータファイル３２１の中から、データ集合体が変換された文字列を取得し（ステップＳ７４）、テキスト変換により、文字列をデータ集合体へ変換する（ステップＳ７５）。文字列をデータ集合体へ変換する方法は、実施の形態１〜６で説明した方法と同様である。ＣＰＵ２１は、作成したデータ集合体を記憶部２２に保存し（ステップＳ７６）、処理を終了する。
【００８１】
本実施の形態によれば、情報処理装置１は、データ集合体を文字列へ変換し、文字列を含むデータを記憶装置３へアップロードし、第２情報処理装置２は、文字列を含むデータをダウンロードし、文字列をデータ集合体へ変換する。これにより、複数のデータをまとめたデータ集合体を、記憶装置３を中継して情報処理装置１から第２情報処理装置２へ転送することが可能となる。また、記憶装置３に記憶されているデータを情報処理装置で随時ダウンロードしてデータ集合体を作成することにより、複数の情報処理装置でデータ集合体を共用することができる。
【００８２】
なお、実施の形態７及び８においては、通信網Ｎを介してデータの転送を行う形態を示したが、情報処理装置１及び第２情報処理装置２は、その他の方法でデータの転送を行う形態であってもよい。例えば、情報処理装置１は、データ集合体を変換した文字列を記録媒体に記録することによって文字列を出力し、第２情報処理装置２は、記録媒体から文字列を読み出すことによって文字列を取得し、文字列をデータ集合体へ変換してもよい。
【００８３】
また、実施の形態１〜８においては、データ集合体は、当該データ集合体の外部からアクセスできないメンバを持つことができる。図１６は、外部からアクセスできないメンバを持つデータ集合体４に対する処理の概念を示す概念図である。情報処理装置１（又は第２情報処理装置２）は、データ集合体４がデータ集合体４の外部からアクセスできないメンバを持つ場合、外部からのアクセス可能なメンバ４１に代入４０１があったとき、代入された内容を、外部からアクセスできないメンバ４２に代入４０２を行う。メンバ４１から値を取り出すとき、情報処理装置１（又は第２情報処理装置２）は、メンバ４２の内容の確認４０３を行い、メンバ４２に値が代入されていないとき（メンバ４２のデータ型について予め定められている特定の値が代入されているときを含む）は、予め決められた値を返す（４０４）。例えば、メンバ４２が配列又は連想配列であれば、要素数０の配列又は連想配列が返される。メンバ４２が配列及び連想配列以外のデータ集合体であれば、各メンバにデフォルト値が代入された状態（値が代入されていない状態がデフォルトの場合はその状態）のデータ集合体が返される。メンバ４２に値が代入されているとき（特定の値が代入されているときを除く）は、情報処理装置１は、メンバ４２に代入された値を返す（４０４）。
【００８４】
また、実施の形態１〜８においては、変数がNull許容型である場合、変数は、値を文字列にするときに、変数のデータ型の値にならない文字列を代入されることができる。例えば、変数は、数値型であれば、空文字列などの数値にならない値を代入されることができ、日付型であれば、空文字列などの日付にならない値を代入されることができる。Null許容型の変数にそのデータ型にならない文字列を代入しようとする場合、代わりにNullを代入することができる。
【００８５】
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。また、各実施の形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【符号の説明】
【００８６】
１  情報処理装置（第１情報処理装置）
１２Ｐ  プログラム
２  第２情報処理装置
２２Ｐ  プログラム
【図１】
2018022472.tif 000003
【図２】
2018022472.tif 000004
【図３】
2018022472.tif 000005
【図４】
2018022472.tif 000006
【図５】
2018022472.tif 000007
【図６】
2018022472.tif 000008
【図７】
2018022472.tif 000009
【図８】
2018022472.tif 000010
【図９】
2018022472.tif 000011
【図１０】
2018022472.tif 000012
【図１１】
2018022472.tif 000013
【図１２】
2018022472.tif 000014
【図１３】
2018022472.tif 000015
【図１４】
2018022472.tif 000016
【図１５】
2018022472.tif 000017
【図１６】
2018022472.tif 000018