(57)【特許請求の範囲】
【請求項１】
文字列Aを文字列Bに変換する処理を情報処理装置に実行させるプログラムであって、
前記文字列Aに、1種類以上の所定の文字列（以下「文字列X」と表記）を含むときは、
前記文字列Aに存在する前記文字列Xは、所定のルールCに基づいて置き換えられ、
前記文字列Bは、前記置き換えが行われた部分と、前記置き換えが行われなかった文字列と、が、第3の文字列によって区切られている
ことを特徴とするプログラム。
【請求項２】
請求項１に記載のプログラムは、
請求項１に記載の1種類以上の文字列Xは、少なくとも、第1の文字列、第2の文字列、第3の文字列を含む
ことを特徴とする、請求項１に記載のプログラム。
【請求項３】
請求項２に記載のプログラムは、
請求項２に記載の第1の文字列、請求項２に記載の第2の文字列は、
データベースの行または列の少なくともいずれかの境界を表し、
前記第1の文字列、前記第2の文字列は、
データベースのフィールドに書き込むと、
前記データベースを取り扱う情報処理装置が誤作動を起こす恐れがある
ことを特徴とする、請求項２に記載のプログラム。
【請求項４】
請求項１〜３の少なくともいずれかに記載のプログラムによって変換された文字列Bを、前記変換をする前の文字列Aに変換する処理を情報処理装置に実行させるプログラムであって、
前記文字列Bは第3の文字列を偶数個含み、
前記文字列Bに含まれる奇数個目の第3の文字列の次の文字から、その次の第3の文字列の1文字前までの間を、
請求項１〜３に記載の所定のルールCに基づいて置き換えられた文字列とみなし、
前記所定のルールCに基づいて変換された部分を、所定のルールC'に基づいて変換する処理を情報処理装置に実行させる
ことを特徴とするプログラム。
【請求項５】
請求項１〜３の少なくともいずれかによって作成された文字列に存在する2連続する第3の文字列を、1個の第4の文字列に置き換える第1の処理と、
前記処理によって置き換えられた第4の文字列を、2連続する第3の文字列に置き換える第2の処理と、
の少なくともいずれかの処理を情報処理装置に実行させることを特徴とするプログラム。
【請求項６】
請求項5に記載の第2の処理を情報処理装置に実行させるプログラムは、
請求項５に記載の処理の対象である文字列に存在する第4の文字列を、
請求項５に記載の第1の処理によって置き換えられた前記第4の文字列と、
請求項５に記載の第1の処理によって置き換えられたものではない前記第4の文字列と、
のうち、前者の第4の文字列のみを2連続する第3の文字列に置き換える処理を情報処理装置に実行させる
ことを特徴とする、請求項５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースから情報処理装置に前記データベースのデータをコピーし、前記データベースに対し行うべき変更・追加・削除を前記情報処理装置に記憶させ、前記情報処理装置に記憶された内容に基づいて、前記データベースを変更するプログラム及び情報処理システムに関する。
【背景技術】
【０００２】
従来、CSVファイルを編集するプログラムが知られている（例えば、特許文献１）
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特願２０１９−１２２６２１
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１に開示された技術では、
CSVファイルに、前記CSVファイルを処理する情報処理装置が誤作動を起こす恐れがある文字列（例えば、行やカラムの境目として用いられる文字列と同じ文字列）をフィールドとして含めることが難しい、
文字列を記憶させたフィールドから数値を取り出すとき、前記文字列によっては、数値が正しく取り出されない、
などの問題がある。
【０００５】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、
データベースを処理する情報処理装置が誤作動を起こす恐れがある文字列を取り扱うプログラムであって、前記データベースを処理する情報処理装置が誤作動を起こす恐れがある文字列を、前記文字列である旨の情報を保持しながら、前記誤作動を起こす恐れがある文字列を取り除く、
文字列を記憶させたフィールドから取り出した情報を、正しい数値に変換する、
などの特徴を持つプログラム及び情報処理装置を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一態様の情報処理システムは、データベースと、情報処理装置を含む情報処理システムであって、前記データベースのフィールドに記憶されている文字列を数値に変換するにあたり、A字（桁区切りとして使われることがある文字列）、B字（小数点として使われることがある文字列）、AA字（A字であり、B字でない文字列）、AB字（A字であり、B字である文字列）、BB字（A字でなく、B字である文字列）の位置、数、種類、の少なくともいずれかに基づいて、どのB字が小数点であるかを特定し、前記特定に基づいて、前記文字列を数値に変換する処理を、情報処理装置に実行させる。
【０００７】
本発明の一態様の情報処理システムは、データベースと、情報処理装置を含む情報処理システムであって、前記情報処理装置は、プログラムに基づいて例えばRAMに、データベースから取得した情報と、前記データベースに対し行うべき変更・追加・削除と、を記憶させ、前記記憶内容に基づいて、前記データベースの情報を編集する処理を、情報処理装置に実行させる。
【発明の効果】
【０００８】
本発明の一側面によれば、データベースを処理する情報処理装置が誤作動を起こす恐れがある文字列を取り扱うプログラムであって、前記データベースを処理する情報処理装置が誤作動を起こす恐れがある文字列を、前記文字列である旨の情報を保持しながら、前記誤作動を起こす恐れがある文字列を取り除く、文字列を記憶させたフィールドから取り出した情報を、正しい数値に変換すること、などが可能となる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置を示す図。
【図２】実施の形態１におけるデータベース処理部の図。
【図３】実施の形態２における文字列の置き換えを示す図。図３では、改行をRと表記する。
【図４】実施の形態３における文字列の置き換えを示す図。
【図５】実施の形態４における文字列の置き換えを示す図。
【図６】実施の形態５における処理を示す図。
【図７】実施の形態６における文字列の置き換えを示す図。図７では、改行をRと表記する。
【図８】実施の形態１におけるbef部２２２を表す図。
【図９】実施の形態１における情報２０１、設定２０２、set部２１１、setg部２２１、bef部２２２を表す図。
【図１０】実施の形態１におけるchan部２２３の図。
【図１１】実施の形態１におけるdel部２２４の図。
【図１２】実施の形態７における処理を示すフローチャート。
【図１３】実施の形態８における処理を示すフローチャート。
【図１４】実施の形態９における処理を示す図。
【図１５】実施の形態１０における処理を示す図。図１５では、半角スペースをSと表記する。
【図１６】実施の形態１０におけるステップＳ１５０６−０を示す図。
【図１７】実施の形態１１における処理を示すフローチャート。
【図１８】実施の形態１２に関する処理を示すフローチャート。
【図１９】実施の形態１におけるsave部２１２と、該save部２１２に関連する処理の図。
【発明を実施するための形態】
【００１０】
図１は、情報処理装置を示す図。
【００１１】
本明細書に記載の実施形態を、図1を参照し説明する。
【００１２】
情報処理装置１００
情報処理装置１００は、例えば、サーバ装置、パーソナルコンピュータ、スマートフォン等。
【００１３】
情報処理装置１００は、CPU１０１、記憶部１０２、RAM１０３、をそなえる。
【００１４】
実施内容によっては、入力部１０４、表示・出力部１０５、通信部１０６、の、少なくともいずれかをそなえる形態であってもよい。
【００１５】
CPU１０１
CPU１０１は、(CPUとはCentral Processing Unit)バスを介してハードウェア各部と接続されている。
【００１６】
CPU１０１は、例えば1個以上のCPUまたはマルチコアCPUをそなえる。
【００１７】
CPU１０１は、記憶部１０２に記憶されたプログラム１０２Pに従い、ハードウェア各部を制御する。
【００１８】
記憶部１０２
記憶部１０２は、例えばハードディスク、大容量メモリ。
【００１９】
ドライブ部（図示しない）を介して記憶媒体（図示しない）から、CPU１０１が処理を行う際に必要となるデータおよびプログラムを読み取る形態、あるいは、前記読み取ったデータおよびプログラムを例えばプログラム１０２Pとして例えば記憶部１０２に格納する形態であってもよい。
【００２０】
プログラム１０２P
プログラム１０２Pは、例えば記憶部１０２に記憶されるプログラム。通信部１０６を介してインストールされる形態であってもよいし、記憶媒体（図示しない）から、ドライブ部（図示しない）を介してインストールされる形態であってもよい。
【００２１】
RAM１０３
RAM１０３は、（RAMとはRandom  Access Memory）例えばSRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、フラッシュメモリ等。
【００２２】
RAM１０３は記憶部としても機能し、CPU１０１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００２３】
入力部１０４
入力部１０４は、マウスまたはキーボード等の入力デバイス。受け付けた操作情報をCPU１０１へ送信する。
【００２４】
表示・出力部１０５
表示・出力部１０５は、例えば液晶ディスプレイ（CPU１０１から送信された画像データを表示する）、スピーカー（CPU１０１から送信されたデータを音声として発生させる）、プリンタ（CPU１０１から送信されたデータを印刷する）等。
【００２５】
通信部１０６
通信部１０６は、例えば無線LANカードまたは携帯電話用通信モジュール等であり、通信網Nを介して各種情報を送受信する。
【００２６】
備考
データベース（図示しない）は、情報処理装置１００における記憶部１０２に記憶するものであってもよいし、通信網Nを介して送受信できるほかの情報処理装置に記憶するものであってもよい。
【００２７】
本明細書によって開示される発明を用いたプログラムは、例えば記憶部１０２に記憶され、入力部１０４を介して行われた入力に基づいてプログラム１０２Pが動作し、その結果を表示・出力部１０５に出力させる形態であってもよい。
【００２８】
ほかの情報処理装置から通信部１０６を介して提供されたデータに基づいてプログラム１０２Pが動作し、その結果を通信部１０６を介してほかの情報処理装置に提供する形態であってもよい。
【００２９】
図２は、実施の形態1におけるデータベース処理部の図。
【００３０】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３にクラス（のインスタンス）として作成・記憶・動作させる。
【００３１】
データベース処理部２００TB
データベース処理部２００TBは、本実施の形態におけるデータベース処理部。
【００３２】
例えば、クラス（のインスタンス）によって実現される。
【００３３】
情報２０１
情報２０１は、データベースに記憶されている情報。
【００３４】
例えば、フラットファイルデータベースにおける文字列。
【００３５】
設定２０２
設定２０２は、データベースを扱うために必要な情報。
【００３６】
例えば、データベースが存在するパス（フラットファイルデータベースにおける、データベースとなっているファイルおよび該ファイルが存在するフォルダのパス）、フラットファイルベースにおける行ならびに列を区切る文字が何であるか、カラムの意味を定義する行の位置、主キーとして扱うカラムの位置、といった情報。
【００３７】
情報２０３
情報２０３は、データベースに記憶されている情報。
【００３８】
例えば、フラットファイルデータベースにおける文字列。
【００３９】
情報２０４
情報２０４は、データベースに書き込まれる情報。
【００４０】
例えば、save部２１２は、情報２０３に対し、chan部２２３、del部２２４の記憶内容に基づいた処理を行い、その情報を情報２０４として返す。
【００４１】
set部２１１
set部２１１は、情報２０１、設定２０２を受け取り
（例えば、set部２１１はルーチンであって、該ルーチンは、情報２０１、設定２０２を引数とする）、
前記情報２０１を、bef部２２２に、前記設定２０２を、setg部２２１に記憶する。
【００４２】
save部２１２
save部２１２は、情報２０３を受け取り、前記情報２０３に対し、(a：chan部２２３、del部２２４の記憶内容に基づいた処理を行い）、その結果を情報２０４として返す。
【００４３】
これは、データベース処理部２００TBは、（b：複数の情報処理装置によって取り扱われていることがあり）、
もし、save部２１２が、bef部２２２に対し前記（a）をするならば、前記(b)のため、ほかの情報処理装置によって行われたデータベースの変更内容が消失するおそれがあるため。
【００４４】
setg部２２１
setg部２２１は、設定２０２の内容を、set部２１１を介して記憶してある。
【００４５】
bef部２２２
bef部２２２は、情報２０１の内容を、set部２１１を介してに記憶してある。
【００４６】
chan部２２３
chan部２２３は、bef部２２２の内容に対しすべき、レコードの変更およびレコードの追加を記憶する。
【００４７】
del部２２４
del部２２４は、bef部２２２の内容に対し削除すべきレコードの主キーを記憶する。
【００４８】
ただし、bef部２２２およびchan部２２３の内容に対し削除すべきレコードの主キーを記憶するものであってもよい。
【００４９】
処理部２３１
処理部２３１は、1個以上の処理部だが、ここでは1個の処理部として図示する。処理部２３１の説明は後述する。
【００５０】
備考
set部２１１、save部２１２、処理部２３１は、データベース処理部２００TBの外部から使用することができる（処理部２３１は、データベース処理部２００TBの外部から使用できないものがあってもよい）
bef部２２２、chan部２２３、del部２２４は、set部２１１、save部２１２、処理部２３１の一部または全部が、必要な情報を作成するために用いられ、望ましくはデータベース処理部２００TBの外部から使用できない仕様とする。（カプセル化）
図３は、実施の形態2における文字列の置き換えを示す図。図３では、改行をRと表記する。
【００５１】
ハードウェア動作（文字列３００から文字列３０５）
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３に記憶してある文字列と、置き換え後の文字列と、の組み合わせを決定して、例えばRAM１０３に記憶させる（変換定義３０１）。
【００５２】
例えばRAM１０３に記憶された特定の変換対象文字列を所定の文字列に置き換え（ステップS300）て作成した文字列
に存在する特定の文字列を境に0個以上の文字列に分割（ステップS302）し、
変換対象文字列を例えばRAM１０３に記憶された変換定義３０１に基づいて置き換え（ステップS303）、
前記0個以上の文字列を、所定の文字列を区切り文字として連結された文字列を作成（ステップS304）、
その文字列を例えばRAM１０３に記憶し、処理を終了する。
【００５３】
ハードウェア動作（文字列３０５から文字列３００）
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３に記憶された対象の文字列に存在する特定の文字を境に、0個以上の文字列に分割（ステップS305）し、
特定の位置に存在する文字列をプログラム１０２Pに基づいて置き換え(ステップS354)、
前記0個以上の文字列を、空文字列を区切り文字として連結された文字列を作成(ステップS353)し、
その文字列を例えばRAM１０３に記憶し、処理を終了する。
【００５４】
本実施の形態における発明が解決しようとする課題
本実施の形態では、特に断りがない限り、「文字列」とは、文字を含むものとする。文字は、１文字からなる文字列として扱うことができる。
【００５５】
フラットファイルデータベースは、第1の文字列を行の区切りと、第2の文字列をカラムの区切りと、それぞれみなす文字列を作成し、前記文字列を記録したファイルをデータベースとして扱う。
【００５６】
ゆえに、フィールドに第1の文字列、第2の文字列、第3の文字列（後述する）、のいずれかが含まれる場合、該フィールドが存在するフラットファイルデータベースを扱う情報処理装置が、誤作動を起こす恐れがあるから、フィールドに前記第1の文字列、前記第2の文字列、前記第3の文字列を含めることができない。
【００５７】
本発明では、フィールドに変換対象文字列があるとき、該変換対象文字列を（ｃ：一定の規則に基づいて、変換対象文字列でない文字列に変換）し、該変換によって作成された文字列と、そうでない文字列との境に第3の文字列を配置した文字列を作成する。
【００５８】
変換対象文字列とは、少なくとも第1の文字列、第2の文字列、第3の文字列を含む文字列の集合をいう。
【００５９】
第3の文字列は、（ｄ：前記（ｃ）によって作成された文字列と、そうでない文字列との境に配置する）文字列。
【００６０】
文字列３００
文字列３００は、本実施の形態における変換をする前の文字列。
【００６１】
本実施の形態では、第1の文字列は改行、第2の文字列はカンマ（,）、第3の文字列は等号（=）である場合を例に説明する。
【００６２】
文字列300は、第1の文字列、第2の文字列、第3の文字列を含んでいるため、フラットファイルデータベースのフィールドにこのまま書き込むと、該フィールドが存在するフラットファイルデータベースを扱う情報処理装置が、誤作動を起こす恐れがある。
【００６３】
変換定義３０１
変換定義３０１は、変換対象文字列が何であるか、ならびに、該変換対象文字列を何という文字列に変換すべきかを定義する。変換対象文字列は、少なくとも、第1の文字列、第2の文字列、第3の文字列を含む。これ以外の文字列は、変換対象文字列にあってもなくてもよい。
【００６４】
変換後の文字列を何にするかは、変換対象文字列を含まない文字列であればよく、種々の決め方が考えられるが、ここでは、改行はOUT1という文字列、改行以外の変換対象文字列は、該変換対象文字列をUnicode文字コードによってあらわした数値を16進数によって表記した（ただし、該変換対象文字列が複数の文字列からなる場合は、前記「該変換対象文字列をUnicode文字コードによってあらわした数値を16進数によって表記した」文字列同士を、第3の文字列を0個を除く偶数個（例えば2個）で連結した文字列。例えば、変換対象文字列が,,（カンマ2個）なら、2C==2C）ものとする。
【００６５】
ここでは、改行を=OUT1=、カンマを=2C=、等号を=3D=に変換するものとして説明する。（改行を表現する方法はいくつかあるため、しばしば、文字コードに変換しないほうが処理が容易となる）
変換定義３０１は、例えば、連想配列であり、前記連想配列は、改行をキーとしOUT1を返す「キーと値の組み合わせ」と、カンマをキーとし2Cを返す「キーと値の組み合わせ」と、等号をキーとし3Dを返す「キーと値の組み合わせ」と、を記憶した連想配列である形態が考えられる。
【００６６】
文字列３０２
文字列３０２は、文字列３００に存在する第3の文字列を、前記変換定義３０１に基づいて置き換えることによって作成された文字列である。
【００６７】
該文字列３０２を作成する前の文字列（例えば文字列３００）は、第3の文字列が前記（ｄ）の意味で用いられていない場合があるが、該文字列３０２以降は、第3の文字列は、前記（ｄ）の意味でのみ使用されることとなる。
【００６８】
文字列集合３０３
文字列集合３０３は、文字列３０２を、第3の文字列を境に０個以上の文字列に区切ったものである。
【００６９】
文字列集合３０４
文字列集合３０４は、文字列集合３０３における（最初の要素を0番とした）偶数番目の要素に存在する、変換定義３０１にて定義された変換対象文字列（第3の文字列を除く）を、前記変換定義３０１に基づいて置き換えることによって作成した文字列集合。ただし、ここでの変換は、前記変換定義３０１に定義されている置き換え後の文字列の先頭と末尾に、第3の文字列をを配置した文字列に変換する。
【００７０】
例えば、文字列３００では、改行はOUT1という文字列に置き換えられるとあるが、ここでは、=OUT1=に置き換える。
【００７１】
前記説明は、文字列集合３０３が配列であるものとした説明。
【００７２】
文字列３０５
文字列３０５は、文字列集合３０４の各要素を、第3の文字列を区切り文字として連結した文字列。
【００７３】
前記説明は、文字列集合３０４が配列であるものとした説明。
【００７４】
備考
前記文字列３００から前記文字列３０５に変換する過程は、データベースのフィールドに書き込むと、前記データベースを処理する情報処理装置が誤作動をお起こすおそれがある文字列を、前記おそれを防止する文字列に変換する過程の説明。
【００７５】
本実施の形態では、これ以降の説明は、前記変換によって（例えばデータベースのフィールドに記憶された）文字列を、前記変換をする前の文字列に戻す処理の説明。
【００７６】
よって、文字列３０５から文字列３００に変換する過程として説明する。
【００７７】
文字列集合３５４
文字列集合３５４は、文字列３０５を、第3の文字列を境に０個以上の文字列に区切ったものである。
【００７８】
文字列集合３５３
文字列集合３５３は、文字列集合３５４における（最初の要素を0番とした）奇数番目の要素に存在する文字列を置き換えることによって作成した文字列集合。
【００７９】
文字列３０５は、文字列３００を文字列３０５に変換するための処理として、文字列の置き換えを行った部分と、文字列の置き換えを行わなかった部分を、第3の文字列によって囲んでいる。よって、前記第3の文字列で区切って配列にしたなら、最初の要素は、前記文字列の置き換えを行わなかった部分であり、以後の要素は、文字列の置き換えを行った部分と文字列の置き換えを行わなかった部分が交互に並ぶ配列となる。よって（最初の要素を0番目とした）奇数番目を変換対象とする。
【００８０】
前記文字列集合３０３を前記文字列集合３０４に変換する際、変換対象文字列は、改行はOUT1に、改行以外は前記変換対象文字列に存在する文字のUnicode文字コードを16進数表記した文字列に置き換え、前記変改対象文字列が複数の文字列からなる場合は、前記「前記変換対象文字列に存在する文字のUnicode文字コードを16進数表記した文字列」同士を0個以外の偶数個（例えば2個）の第3の文字によって連結した文字列を作成することとした。という場合を例に説明する。
【００８１】
置き換え対象である要素に格納されている文字列は、OUT1という文字列であり改行に置き換えられるべき文字列であるか、数値が16進数表記された文字列であり前記文字列が表す数値と同じ文字コードにて表される文字に置き換えられるべき文字列であるか、のいずれかである。
【００８２】
よって、置き換え対象である要素に格納されている文字列は、OUT1ならば改行、OUT1以外なら該文字列を数値が16進数表記された文字列とみなして該文字列が表す数値と同じ文字コードを持つ文字に置き換える処理をする。ただし、前記処理ができないときは、前記処理ができない旨を表す文字ないし文字列（例えば、〓）に置き換える。
【００８３】
前記説明は、文字列集合３５４が配列であるものとした説明。
【００８４】
文字列３００
文字列３００は、文字列集合３５３を、空文字列を区切り文字として連結した文字列。
【００８５】
前記説明は、文字列集合３５３が配列であるものとした説明。
【００８６】
図４は、実施の形態3における文字列の置き換えを示す図。
【００８７】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３に記憶された文字列に存在する特定の文字を境に文字列を分割（ステップS404）し、
前記文字列のうち、前記特定の文字列以降に係る文字列の内容を変更（ステップS402）し、
前記文字列のうち、前記特定の文字列以降に係る文字列でないほうの文字列と、前記ステップS402によって作成された文字列とを連結（ステップS403）する動作
からなるループを実行し、前記ステップS403によって作成され当た文字列に、特定の文字列（ステップS404にて分割の基準となる）が存在しないとき、前記ループを脱出する処理をし、
前記ループを脱出する際に作成されている文字列を例えばRAM１０３に記憶し、処理を終了する。
【００８８】
本実施の形態における発明が解決しようとする課題
実施の形態２にて説明した通りの置き換えでは、文字数が過多になる（つまり、データ量が大きくなる）傾向にある。
【００８９】
よって、本実施の形態では、より少ない文字数にて同内容を表現することができるように文字列を変更する。
【００９０】
実施の形態２にて説明した文字列は、第3の文字列が2連続することがある。これは、第3の文字列、空文字列、第3の文字列が並んだ文字列であると解することができる。しかし、第3の文字列2連続は、第4の文字列1個に置き換えることができれば、文字数の節約になる。
【００９１】
この場合、第4の文字列は、変換定義３０１にて変換後の文字列と定義された文字列でない文字列で、第3の文字列の文字数の2倍未満の文字数を持つ文字列であればよい。
【００９２】
本実施の形態では、第3の文字列は等号（=）、第4の文字列は、マイナス記号（-）であるものとして説明する。
【００９３】
本実施の形態でいう第3の文字列とは、実施の形態2における第3の文字列と同様である。
【００９４】
文字列４０１
文字列４０１は、図３における文字列３０５に相当する。
【００９５】
文字列４０２Ｌ
文字列４０２Ｌは、文字列４０１（または文字列４０４）に、2連続する第3の文字列があるとき、前記文字列４０１における2連続する第3の文字列より左側（前記第3の文字列自体を含まない）にある文字列を抜き出すことによって作成した文字列。
【００９６】
例えば、12文字の文字列で（最初の文字を1文字目として）5文字目から2連続する第3の文字列がある場合は、１〜4文字目を、文字列４０２Ｌとする。
【００９７】
文字列４０２Ｒ
文字列４０２Ｒは、文字列４０１（または文字列４０４）に、2連続する第3の文字列があるとき、前記文字列４０１における2連続する第3の文字列より右側（前記第3の文字列自体を含む）にある文字列を抜き出すことによって作成した文字列。
【００９８】
例えば、12文字の文字列で（最初の文字を1文字目として）5文字目から2連続する第3の文字列がある場合は、５文字目以降を、文字列４０２Ｒとする。
【００９９】
文字列４０２Ｌ、文字列４０２Ｒに関する備考
前記2連続する第3の文字列が複数個あるとき、例えばもっとも左にある2連続する第3の文字列を境に文字列４０２Ｌ、文字列４０２Ｒに分けるが、必ずしもこの通りに分ける必要はない。
【０１００】
文字列４０３
文字列４０３は、文字列４０２Ｒに存在する2連続する第3の文字列（複数ある場合はもっとも左にある、2連続する第3の文字列）を、第4の文字列に置き換えることによって作成した文字列。
【０１０１】
文字列４０４
文字列４０４は、文字列４０２Ｌと、文字列４０３と、を連結することによって作成した文字列。文字列４０４は、文字列４０２Ｌと文字列４０３とを、空文字列を区切り文字として連結した文字列と解することができる。
【０１０２】
備考
本実施の形態における処理は、文字列４０４に、2連続第3の文字列が存在しなくなったとき、その文字列を処理結果として終了する。
【０１０３】
図５は、実施の形態4における文字列の置き換えを示す図。
【０１０４】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３に記憶されている文字列を、特定の文字列を境に0個以上の文字列に分割（ステップS501)し、
前記0個以上の文字列中の特定の条件を満たす文字列を置き換え(ステップS502)たものを、
特定の文字列を境に連結した文字列を作成（ステップS503）し、
その文字列を例えばRAM１０３に記憶し、処理を終了する。
【０１０５】
はじめに
本実施の形態では、実施の形態３にて置き換えた文字列を、置き換える前の文字列に変更する。
【０１０６】
本実施の形態では、第3の文字列は等号（=）、第4の文字列は、マイナス記号（-）であるものとして説明する。
【０１０７】
本実施の形態でいう第3の文字列、第4の文字列とは、実施の形態３における第3の文字列、第4の文字列と同様である。
【０１０８】
文字列５０１
文字列５０１は、図４における文字列４０４に相当する。
【０１０９】
文字列集合５０２
文字列集合５０２は、文字列５０１を、第3の文字列を境に０個以上の文字列に区切ったものである。
【０１１０】
文字列集合５０３
文字列集合５０３は、文字列集合５０２における（最初の要素を0番とした）奇数番目の要素に存在する第4の文字列を、2連続する第3の文字列に置き換えることによって作成した文字列集合。
【０１１１】
前記説明は、文字列集合５０２が配列であるものとした説明。
【０１１２】
文字列５０４
文字列５０４は、文字列集合５０３を、第3の文字列を区切り文字として連結した文字列。
【０１１３】
前記説明は、文字列集合５０３が配列であるものとした説明。
【０１１４】
図６は、実施の形態５における処理を示す図。
【０１１５】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３に記憶されている対象の文字列の内容を変更する処理をし
作成された文字列を例えばRAM１０３に記憶させ、処理を終了する。
【０１１６】
はじめに
本実施の形態では、データベースのフィールドに書き込むと誤作動を起こす恐れがある文字列と、第3の文字列と、の少なくともいずれかが存在する文字列を、前記データベースに書き込むための文字列に変換する処理（以下「データベース変換」）と、
前記変換によって作成され（データベースのフィールドに書き込まれている）文字列を、前記変換をする前の文字列に変換する処理（「以下データベース逆変換」）と、
について説明する。
【０１１７】
データベース変換は、本実施の形態では、文字列６００から文字列６０２に変換するものとして説明する。
【０１１８】
データベース逆変換は、本実施の形態では、文字列６０２から文字列６００に変換するものとして説明する。
【０１１９】
文字列６００
文字列６００は、データベース変換ををする前の文字列（図３における文字列３００に相当）。
【０１２０】
文字列６００は、データベース逆変換ををした後の文字列（図３における文字列３００に相当）。
【０１２１】
文字列６０１は、実施の形態２（文字列３０５から文字列３００）によって、文字列６００となる。
【０１２２】
文字列６０１
文字列６００は、実施の形態２にて説明した処理（文字列３００から文字列３０５）によって、文字列６０１となる。
【０１２３】
文字列６０２は、実施の形態４にて説明した処理によって、文字列６０１となる。
【０１２４】
文字列６０１は、図３における文字列３０５、図４における文字列４０１、図５における文字列５０４に、相当する。
【０１２５】
文字列６０２
文字列６０１は、実施の形態３にて説明した処理によって、文字列６０２となる。
【０１２６】
文字列６０２は、データベース変換をした後の文字列。（図４における文字列４０４に相当。）
文字列６０２は、データベース逆変換をする前の文字列。（図５における文字列５０１に相当。）
備考
データベース変換は、文字列６００を文字列６０１に変換する形態（文字列６０１から文字列６０２への変換を省略する）であってもよい。
【０１２７】
データベース逆変換は、前記省略をしたことがわかっている文字列に対してであれば、文字列６０１を文字列６００に変換する形態であってもよい。
【０１２８】
データベース変換において文字列６０１から文字列６０２への変換を省略した場合、実施の形態４によって変換する前の文字列と、実施の形態４によって変換した後の文字列（文字列６０２から文字列６０１に変換することによって作成した文字列）は、同一内容となる。
【０１２９】
図７は、実施の形態６における文字列の置き換えを示す図。図７では、改行をRと表記する。
【０１３０】
ハードウェア動作（文字列７０１から文字列７０７）
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
変換対象文字列と、該変換対象文字列を置き換えた後の文字列と、を定義（変換定義７０２）したものを例えばRAM１０３に記憶させ
例えばRAM１０３に記憶されている文字列中に存在しない文字列を特定し
前記文字列を変換対象文字列の前後に配置した文字列を作成し（ステップS701）、
前記文字列を境に0個以上の文字列に分割し（ステップS704）、
前記0個以上の文字列における特定の条件を満たす文字列を変換定義７０２に基づいてほかの文字列に置き換え(ステップS705）、
所定の文字列を区切り文字として連結した文字列を作成し（ステップS706)
作成された文字列を例えばRAM１０３に記憶させ、処理を終了する。
【０１３１】
ハードウェア動作（文字列７０４から文字列集合７０６）
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
所定の文字列を境に0個以上の文字列に分割し（ステップS706)、
所定の位置に存在する文字列をプログラム１０２Pに基づいてほかの文字列に置き換え（ステップS705）、
前記0個以上の文字列を空文字列を区切り文字として連結し（ステップS705b）、
作成された文字列を例えばRAM１０３に記憶させ、処理を終了する。
【０１３２】
本実施の形態における発明が解決しようとする課題
実施の形態2と同様。
【０１３３】
文字列７０１
文字列７０１は、本実施の形態における（文字列７０７への）変換をする前の文字列。
【０１３４】
本実施の形態では、第1の文字列は改行、第2の文字列はカンマ（,）、第3の文字列は等号（=）である場合を例に説明する。
【０１３５】
文字列７０１は、第1の文字列、第2の文字列、第3の文字列を含んでいるため、フラットファイルデータベースのフィールドにこのまま書き込むと、該フィールドが存在するフラットファイルデータベースを扱う情報処理装置が、誤作動を起こす恐れがある。
【０１３６】
変換定義７０２
変換定義７０２は、変換定義３０１と同様。
【０１３７】
区切り文字７０３
区切り文字７０３は（文字列であってもよい）、変換対象文字列にも文字列７０１にも存在しない文字。
【０１３８】
本実施の形態では、区切り文字７０３は、セミコロンである場合を例に説明する。
【０１３９】
文字列７０４
文字列７０４は、文字列７０１に存在する変換対象文字列を、前記変換対象文字列の前後を区切り文字７０３にて囲んだ文字列に置き換えることによって作成した文字列。
【０１４０】
ここでは、改行、カンマ、等号を、前後をセミコロンで囲んだ文字列に置き換えてある。
【０１４１】
文字列集合７０５
文字列集合７０５は、文字列７０４を、区切り文字７０３を境に０個以上の文字列に区切ったものである。
【０１４２】
文字列集合７０６
文字列集合７０６は、文字列集合７０５における（最初の様相を0番とした）奇数番目の要素に存在する文字列を、変換定義７０２にて定義された変換対象文字列を、前記変換定義７０２に基づいて置き換えることによって作成した文字列集合。
【０１４３】
前記説明は、文字列集合７０５が配列であるものとした説明。
【０１４４】
文字列７０７
文字列７０７は、文字列集合７０６の各要素を、第3の文字列を区切り文字として連結した文字列。
【０１４５】
前記説明は、文字列集合７０６が配列であるものとした説明。
【０１４６】
備考
前記文字列７０１から前記文字列７０７に変換する過程は、データベースのフィールドに書き込むと、前記データベースを処理する情報処理装置が誤作動をお起こすおそれがある文字列を、前記おそれを防止する文字列に変換する過程の説明。
【０１４７】
本実施の形態では、これ以降の説明は、前記変換によって（例えばデータベースのフィールドに記憶された）文字列を、前記変換をする前の文字列に戻す処理の説明。
【０１４８】
よって、文字列７０７から文字列７０１に変換する過程として説明する。
【０１４９】
文字列７０７
文字列７０７は、本実施の形態における（文字列７０１への）変換をする前の文字列。
【０１５０】
文字列集合７０６
文字列集合７０６は、文字列７０７を、第3の文字列を境に０個以上の文字列に区切ったものである。
【０１５１】
文字列集合７０５
文字列集合７０５は、文字列集合７０６をもとに作成された文字列集合。ただし、ここで行う変換は、文字列集合３５４から文字列集合３５３への変換と同様。
【０１５２】
前記説明は、文字列集合７０６が配列であるものとした説明。
【０１５３】
文字列７０１
文字列７０１は、文字列集合７０５を、空文字列を区切り文字として連結した文字列。
【０１５４】
前記説明は、文字列集合７０５が配列であるものとした説明。
【０１５５】
備考
本実施の形態によって作成された文字列７０７は、実施の形態３によって文字数を減らすことができる。
【０１５６】
前記の手段で文字数を減らした文字列は、実施の形態４によって文字列の内容を変更し、前記文字列を、文字列７０７として、本実施形態によって文字列７０１に変換することができる。
【０１５７】
図８は、実施の形態１におけるbef部２２２を表す図。
【０１５８】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３にクラス（のインスタンス）として作成・記憶・動作させ、
例えばRAM１０３に記憶された情報に基づいて、プログラム１０２Pによって定義された処理を行い、その結果を例えばRAM１０３に記憶させることがある。
【０１５９】
処理部８００
処理部８００は、図２におけるbef部２２２に相当する。
【０１６０】
処理部８０１
処理部８０１は、処理部８００の外部（例えばset部２１１）から提供された情報を受け取り、データベース情報記憶部８０２に記憶させる。
【０１６１】
データベース情報記憶部８０２
データベース情報記憶部８０２は、処理部８００の外部から提供されたデータベースの情報を記憶する。
【０１６２】
データベース情報記憶部８０２は、表形式で記憶されているため、ある主キーを持つレコードはどこかの行にあり、あるカラムはどこかの列にある、という状態にある。
【０１６３】
行情報８０２R
行情報８０２Rは、データベース情報記憶部８０２において、何という主キーを持つレコードが、どの行にあるかを表す情報。
【０１６４】
行情報８０２Rは、処理部８０１がデータベース情報記憶部８０２に書き込んでから（この書き込みと同時でもよい）、処理部８０３が必要な情報をデータベース情報記憶部８０２から取得するまで（この取得をする直前でもよい）の間に作成する。好ましくは、データベース情報記憶部８０２に情報が書き込まれた直後に作成する。
【０１６５】
列情報８０２C
列情報８０２Cは、データベース情報記憶部８０２において、何というカラムがどの列にあるかを表す情報。
【０１６６】
列情報８０２Cの作成タイミングは、行情報８０２Rの作成タイミングと同様。
【０１６７】
処理部８０３
処理部８０３は、必要な情報のキー（主キー）、カラムの指定に基づいて、行情報８０２Rを用いて所要の情報が存在するレコードの行を特定し、列情報８０２Cに基づいて所要の情報が存在するカラムの位置を特定し、
前記特定内容に基づいて特定されたフィールドに存在する値を返す。
【０１６８】
前記データベース情報記憶部８０２がフラットファイルデータベースの場合、行の区切りならびに列の区切りと同じ文字をフィールドに含めた場合など、誤作動を起こすおそれがある文字列があるから、その場合は、本明細書に説明した手段によって文字列の内容が変更されて記憶されている場合がある。
【０１６９】
そのため、ここでは、例えば、実施の形態２（文字列３０５から文字列３００）、ないし実施の形態３〜６にて説明した手段によって、変換前の文字列に直す必要がある。
【０１７０】
処理部８０４
処理部８０４は、処理部８００に記憶されているデータベースのカラム一覧を返す。
【０１７１】
列情報８０２Cのキーを、文字列集合（例えば配列）に変換して返す。
【０１７２】
処理部８０５
処理部８０５は、に記憶されているデータベースの主キー一覧を返す。
【０１７３】
行情報８０２Rのキーを、０個以上の情報の集合（例えば配列）に変換して返す。
【０１７４】
図９は、実施の形態１における情報２０１、設定２０２、set部２１１、setg部２２１、bef部２２２を表す図。
【０１７５】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３にクラス（のインスタンス）として作成・記憶・動作させ、
例えばRAM１０３に記憶された情報に基づいて、プログラム１０２Pによって定義された処理を行い、その結果を例えばRAM１０３に記憶させることがある。
【０１７６】
情報９０１
情報９０１は、図２における情報２０１に相当する。データベースに記憶されている情報。
【０１７７】
前記データベースがフラットファイルデータベースである場合を例に説明する。情報９０１は、前記フラットファイルデータベースであるテキストファイルに保存されている文字列。
【０１７８】
設定９０２
設定９０２は、図２における設定２０２に相当する。
【０１７９】
ここでは、本実施の形態にて扱われるデータベースがフラットファイルデータベースである場合を例に説明する。
【０１８０】
本実施の形態にて取り扱うデータベースは、主キーが存在する列がKEYCOLUMN、カラムを（主キーが存在する列ではない列では、どの列が何のカラムを意味するか）定義する行がTITLEROW、レコードを書き込む最初の行がSARTROW、行の区切りがROWKUGIRI、列の区切りがCOLUMNKUGIRI、実施の形態２における第3の文字列をOUTKUGIRI、実施の形態４における第4の文字列をOUTKUGIRI2、という、それぞれ定数（変数でもよい）にて定義されている。
【０１８１】
この定義は、設定９０２にて定義されている。例えば、プログラムの一部として定数が宣言され、該定数として定義されている。
【０１８２】
set部９１１
set部９１１は、図２におけるset部２１１に相当する。
【０１８３】
set部９１１は、例えばルーチンであって、前記ルーチンは、情報９０１、設定９０２から受け取る情報を引数として受け取る。
【０１８４】
その後、前記情報９０１から受け取った情報を、bef部９２２に存在する処理部９２２−１（図８における処理部８０１に相当）に提供し、
setg部９２１に存在する変数９２１−１に代入する。
【０１８５】
bef部９２２
bef部９２２は、図２におけるbef部２２２に相当する。
【０１８６】
setg部９２１
setg部９２１は、図２におけるsetg部２２１に相当する。
【０１８７】
図10は、実施の形態１におけるchan部２２３の図。
【０１８８】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３にクラス（のインスタンス）として作成・記憶・動作させ、
例えばRAM１０３に記憶された情報に基づいて、プログラム１０２Pによって定義された処理を行い、その結果を例えばRAM１０３に記憶させることがある。
【０１８９】
備考
chan部１０００について説明する場合、変更と表記した場合は、特に断りがない限り追加を含む。
【０１９０】
chan部１０００
chan部１０００は、図２におけるchan部２２３に相当する。
【０１９１】
chan部１０００は、例えばクラス（のインスタンス）。
【０１９２】
変数１００１
変数１００１は、chan部１０００の外部からadd部１００２を介して受け付けた指定内容を記憶し、item部１００３は、変数１００１に記憶された情報を読み取り、その結果をchan部１０００の外部に返す。
【０１９３】
データベースは、「どのキー」「どのカラム」のフィールドの情報を「何に」変更すべきか、つまり3つの情報が必要である。
【０１９４】
変数１００１は、例えば前記「どのキー」「どのカラム」を表す情報をキーとし、前記「何に」を値とする「キーと値の組み合わせ」を記憶する連想配列。
【０１９５】
前記キーは、処理部１０５１によって作成される。処理部１０５１が前記キーを作成する手順は後述する。
【０１９６】
上記の手順で作成したキーと、前記「何に」を値とする「キーと値の組み合わせ」を、変数１００１に記憶させる。
【０１９７】
add部１００２
add部１００２は、例えば変更対象のキー、変更対象のカラム、変更後のフィールド、をそれぞれ指定を受け付ける（引数を持つ）ルーチン。
【０１９８】
前記変更対象のキー、前記変更対象のカラムから、変数１００１を説明する際に説明した手順により「変数１００１のキー」を作成し、「キーと値の組み合わせ」として、該キーと、前記変更後のフィールドと、の組み合わせを、変数１００１に記憶させる。
【０１９９】
ただし、変数１００１がnullである場合は、前述した処理の前に、変数１００１を初期化する。
【０２００】
item部１００３
item部１００３は、例えば読み込み対象のキー、読み込み対象のカラム、読み込みに失敗した際に返す文字列、をそれぞれ指定を受け付ける（引数を持つ）ルーチン。
【０２０１】
item部１００３は、変数１００１に前記読み込み対象のキー、前記読み込み対象のカラムであるフィールドに書き込まれるべき情報が変数１００１に記憶されている場合は、その情報を返す。
【０２０２】
それ以外の場合は、読み込みに失敗した場合に返す文字列を返す。
【０２０３】
例えば、20をキー、氏名をカラムとするフィールドの情報を変数１００１から読み込むとする。
【０２０４】
変数１００１を説明する際に説明した手段により、変数１００１用のキーが作られ、そのキーは「;20;氏名」である。
【０２０５】
変数１００１は、キーと値の組み合わせであるから、前記キー（;20;氏名）と組み合わせている文字列がある場合はその文字列を返し、それ以外の場合は、「読み込みに失敗した際に返す文字列」を返す。
【０２０６】
keysORtitles部１００４
keysORtitles部１００４は、変数１００１のキーとして使われている「どのキー」、あるいは「どのカラム」の一覧を返す。
【０２０７】
keysORtitles部１００４は、例えば引数を持つルーチンであり、前記ルーチンの指定内容に基づいて、変数１００１のキーである「どのキー」、「どのカラム」のいずれかを返す。
【０２０８】
ただし、変数１００１がnullである場合は、空集合を意味する情報（例えば要素数0の配列）を出力する。
【０２０９】
keysORtitles部１００４は、「どのキー」の一覧を返す処理部と、「どのカラム」の一覧を返す処理部と、を、別々の処理部（図示しない）とすることができる。
【０２１０】
下記の説明では、「どのキー」あるいは「どのカラム」を文字列型でないデータ型で返すことができる。その場合は、返すための情報を作成するにあたり、型変換をすることができる。型変換をする場合、所望の型変換に変換することができない文字列（例えば、文字列「ツボッシー」をinteger型（int型）に変換しようとする）の場合、指定の値（例えば、integer型（int型）の最大値）に変換することができる。
【０２１１】
「どのキー」の一覧を返すとは
例えば、変数１００１のキーとして「,30,氏名」「,40,氏名」「,40,生年月日」が存在する場合を例に説明する。
【０２１２】
この文字列は、変数１００１でいう「どのキー」「どのカラム」を処理部１０５１によって文字列として表現したものであり、2〜n-1（ただしnは2文字目以降で最初に1文字目と同じ文字列が出現する位置）文字目が「どのキー」を表す部分。
【０２１３】
よって、ここでは「30」「40」からなる文字列集合（例えば配列）を返す。
【０２１４】
「どのカラム」の一覧を返すとは
例えば、変数１００１のキーとして「,30,氏名」「,40,氏名」「,40,生年月日」が存在する場合を例に説明する。
【０２１５】
この文字列は、でいう「どのキー」「どのカラム」を処理部１０５１によって文字列として表現したものであり、n+1（ただしnは2文字目以降で最初に1文字目と同じ文字列が出現する位置）文字目以降が「どのカラム」を表す部分。
【０２１６】
よって、ここでは「氏名」「生年月日」からなる文字列集合（例えば配列）を返す。
【０２１７】
処理部１０５１を説明する部分によると、変数１００１のキーは、「どのキー」「どのカラム」を組み合わせた文字列であり、該対象のキーを表す部分と、該対象のカラムを表す部分と、を、区切り文字によって区切られた文字列の、所定の位置（例えば1文字目）に前記区切り文字を設ける。
【０２１８】
そのため変数１００１のキーの、「どのキー」を抜き出し（具体的には、2文字目〜n-1文字目の間。ただし、ここではnとは2文字目以降にて最初に1文字目が存在する文字の位置。例えば、「x500x生年月日」という文字列からは、「500」という文字列が抜き出される）。
【０２１９】
変数１００１がnullである場合は、空集合を意味する値（例えば要素数0の配列）を処理結果とする。
【０２２０】
keyTOtitles部１００６
keyTOtitles部１００６は、変数１００１のキーとして使われている「どのカラム」のうち、「どのキー」が指定されたものであるものの一覧を返す。
【０２２１】
keyTOtitles部１００６は、例えば引数を持つルーチンであり、前記ルーチンの指定内容に基づいて、変数１００１のキーから、「どの（データベースの）キー」が指定されたものである「どのカラム」の一覧を返す。
【０２２２】
例えば、変数１００１のキーとして「,30,氏名」「,40,氏名」「,40,生年月日」が存在し、keyTOtitles部１００６を実行するにあたり40が指定された（例えばkeyTOtitles部１００６がルーチンであり、引数に40が指定された）場合を例に説明する。
【０２２３】
この文字列は、変数１００１でいう「どのキー」「どのカラム」を処理部１０５１によって文字列として表現したものであり、2〜n-1（ただしnは2文字目以降で最初に1文字目と同じ文字列が出現する位置）文字目が「どのキー」を表す部分。
【０２２４】
よって、変数１００１のキーから（最初の文字を1文字目として）、2〜n-1（ただし、nは2文字目以降にて、1文字目と同じ文字が存在する位置）文字目に存在する文字列が「整数に変換すると40になる文字列」であるものを抜き出し
（この操作では「,40,氏名」「,40,生年月日」が抜き出される）、
前記抜き出したものから、n+1文字目（ただし、nは2文字目以降にて、1文字目と同じ文字が存在する位置）以降の文字列を抜き出し、
（この操作では「氏名」「生年月日」が抜き出される）、
該捜査の結果を、keyTOtitles部１００６の処理結果（例えば、keyTOtitles部１００６がルーチンである場合は返り値）とする。
【０２２５】
変数１００１がnullである場合は、空集合を意味する値（例えば要素数0の配列）を処理結果とする。
【０２２６】
処理部１０５１
「どのキー」「どのカラム」を表す情報を文字列にし（例えば、10というキーの氏名というカラムを表す情報は、「10」「氏名」という文字列となる）、該文字列のどこにも存在しない文字（または文字列）を区切り文字として定める。
【０２２７】
次に、前記「どのキー」「どのカラム」を表す情報を文字列にした文字列の「どのキー」と、「どのカラム」を表す文字列を、前記区切り文字を境に連結し、該文字列の所定の位置（例えば1文字目）に、前記区切り文字を設けた文字列を作成する。この文字列は、変数１００１のキーとなる。
【０２２８】
（例えば、「10」「氏名」という文字列における区切り文字は、1、0、氏、名、以外の文字、例えばセミコロン（；）とし、前記文字列から、「;10;氏名」といった文字列が作成される。）
図１１は、実施の形態１におけるdel部２２４の図。
【０２２９】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３にクラス（のインスタンス）として作成・記憶・動作させ、
例えばRAM１０３に記憶された情報に基づいて、プログラム１０２Pによって定義された処理を行い、その結果を例えばRAM１０３に記憶させることがある。
【０２３０】
del部１１００
del部１１００は、図２におけるdel部２２４に相当する。
【０２３１】
処理部１１０１
処理部１１０１は、例えば主キーの番号を受け付ける引数を持つルーチン。
【０２３２】
処理部１１０１は、データベースから削除すべきレコードの主キーの指定を受け付けて、該主キーを、変数１１０２として記憶させる。
【０２３３】
ただし、変数１１０２がnullである場合は、上記の処理をする前に、該変数１１０２を初期化する。
【０２３４】
変数１１０２
変数１１０２は、削除すべきレコードの主キーの番号を記憶する。
【０２３５】
処理部１１０３
処理部１１０３は、変数１１０２の記憶内容を、del部１１００の外部に出力する。
【０２３６】
ただし、変数１１０２がnullである場合は、空集合を意味する情報（例えば要素数0の配列）を出力する。
【０２３７】
図１２は、実施の形態７における処理を示すフローチャート。
【０２３８】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３にdel部として記憶されている情報に、第1の指定と同じキーがあるか確認し（ステップS1210）、
該キーがある場合（ステップS1210:YES）は、第3の指定を例えばRAM１０３に記憶し、処理を終了する。
【０２３９】
該キーがない場合（ステップS1210:NO）は、
例えばRAM１０３に、chan部として記憶されている、第1の指定と同じキーと、第2の指定と同じカラムがあるか確認（ステップS1220）し、
該内容がある場合（ステップS1220:YES）は、item部１００３を実行し、その結果を例えばRAM１０３に記憶し処理を終了する。
【０２４０】
該内容がない場合（ステップS1220:NO）は、処理部８０３を実行し、その結果を例えばRAM１０３に記憶し処理を終了する。
【０２４１】
本実施の形態では、データベース処理部２００TBに記憶されている情報を、対象のキーおよびカラムを指定して取得する。
【０２４２】
本実施の形態における処理部は、図２にて処理部２３１として表現されている処理部のひとつ。
【０２４３】
本実施の形態では、第1の指定（主キー）、第2の指定（カラム）、に基づいて、前記指定されたキーおよびカラムであるフィールドに存在する情報を返す（これができないとき（例えば、前記キーまたはカラムの少なくともいずれかが存在しない）は、第3の指定（エラー時に返す情報）を返す）。
【０２４４】
例えば、前記第1の指定、前記第2の指定、前記第3の指定は引数であり、本実施の形態における処理は、前記引数を持つルーチンが実行する形態がある。
【０２４５】
ステップS１２１０
ステップS１２１０では、del部２２４に、第1の指定と同じ主キーが記憶されているか確認する。
【０２４６】
処理部１１０３によって受け取る情報（例えば配列）に、第1の指定と同じ情報が含まれているか確認する。
【０２４７】
前記情報が含まれている（ステップS1210:YES）場合は、ステップS1211に移行する。
【０２４８】
前記情報が含まれていない（ステップS1210:NO)場合は、ステップS1220に移行する。
【０２４９】
ステップS１２１１
ステップS１２１１では、第3の指定と同じ情報を返し処理を終了する。
【０２５０】
ステップS１２２０
ステップS１２２０では、chan部２２３に、第1の指定と同じキーがあり、第2の指定と同じカラムがある場合はYES、それ以外の場合はNOとする。
【０２５１】
keysORtitles部１００４における「どのキー」の一覧を返す処理と、「どのカラム」の一覧を返す処理と、を行い、前者の処理によって取得された情報（例えば主キーの配列）に、第1の情報と同じ主キーがあり、かつ、後者の処理によって取得された情報（例えばカラムの配列）に、第2の指定と同じカラムがある場合をYESとし、これ以外の場合をNOとする。
【０２５２】
前者の処理によって取得された情報、後者の処理によって取得された情報の少なくともいずれかがnullの場合は、NOとする。
【０２５３】
ステップS1220がYESの場合は、ステップS1221に移行する。
【０２５４】
ステップS1220がNOの場合は、ステップS1230に移行する。
【０２５５】
ステップＳ１２２０
ステップＳ１２２０では、item部１００３を実行し、前記item部１００３の返り値を返し、処理を終了する。
【０２５６】
ステップＳ１２３０
ステップＳ１２３０では、処理部８０３を実行し、前記処理部８０３の返り値を返し、処理を終了する。
【０２５７】
図１３は、実施の形態８における処理を示すフローチャート。
【０２５８】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
add部１００２を実行し、
該add部１００２によって例えばRAM１０３に実行結果が記憶され、処理を終了する。
【０２５９】
本実施の形態では、第１の指定（主キー）、第２の指定（カラム）、第３の指定（フィールド）を指定し、データベース処理部２００TBに、
本実施の形態における処理部は、図２にて処理部２３１として表現されている処理部のひとつ。
【０２６０】
前記第１の指定する主キー、前記第２の指定するカラムのフィールドの値を、前記第３の指定する値とすべき旨の情報を記憶させる。
【０２６１】
例えば、前記第1の指定、前記第2の指定、前記第3の指定は引数であり、本実施の形態における処理は、前記引数を持つルーチンが実行する形態がある。
【０２６２】
ステップＳ１３１０
ステップＳ１３１０では、add部１００２を実行する。
【０２６３】
図１４は、実施の形態９における処理を示す図。
【０２６４】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えばRAM１０３に記憶されている情報で、
記憶の有無の組み合わせが、所定条件を満たすものを抜き出し、
結果を例えばRAM１０３に記憶させ、処理を終了する。
【０２６５】
本実施の形態では、データベース処理部２００TBに記憶されている情報の主キーの一覧を返す。
【０２６６】
例えば、数値型配列が考えられる。
【０２６７】
本実施の形態における処理部は、図２にて処理部２３１として表現されている処理部のひとつ。
【０２６８】
データ集合１４０１Ａ
データ集合１４０１Ａは、処理部８０５を用いて取得され、主キーの番号を格納しているデータ集合（例えば、整数型配列）。
【０２６９】
データ集合１４０２Ａ
データ集合１４０２Ａは、keysORtitles部１００４を用いて（主キーの一覧が）取得され、主キーの番号を格納しているデータ集合（例えば、整数型配列）。
【０２７０】
データ集合１４０２Ｂ
データ集合１４０２Ｂは、データ集合１４０２Ａと、データ集合１４０１Ａと、を連結し、重複する情報を取り除くことによって作成された、主キーの番号を格納しているデータ集合（例えば、整数型配列）。
【０２７１】
データ集合１４０３Ａ
データ集合１４０３Ａは、処理部１１０３を用いて取得され、削除すべきレコードの主キーの番号を格納しているデータ集合（例えば、整数型配列）。
【０２７２】
データ集合１４０３Ｂ
データ集合１４０３Ｂは、データ集合１４０２Ｂから、データ集合１４０３Ａを、取り除くことによって作成された、主キーの番号を格納しているデータ集合（例えば、整数型配列）。
【０２７３】
本実施の形態は、データ集合１４０３Ｂを実行結果とし、処理を終了する。
【０２７４】
図１５は、実施の形態１０における処理を示す図。図１５では、半角スペースをSと表記する。
【０２７５】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
A文字、B文字の指定内容に基づいて、AA文字、AB文字、BB文字が何であるかを特定し、例えばRAM１０３に記憶する。
【０２７６】
例えばRAM１０３に記憶されている変換対象の文字列における、AA文字、AB文字、BB文字の数および位置に基づいて、
実行すべき処理を決定し、
該決定内容に基づいて、前記変換対象の文字列の内容を変更する。
【０２７７】
その結果を、例えばRAM１０３に記憶し、処理を終了する。
【０２７８】
本実施の形態における発明が解決しようとする課題
数値を文字列にて表現する場合、小数点や桁区切りにどんな文字を使うかは、国などによって異なる。
【０２７９】
例えば、「12,300」は、日本では一万二千三百という意味になるが、スペイン等、１２＋（１０÷３）に等しい数値を意味する場合がある。
【０２８０】
本実施の形態では、桁区切りとして扱うことがある文字列（本実施の形態では、Ａ文字と呼称する）、小数点として扱うことがある文字列（本実施の形態では、Ｂ字と呼称する）の配列や数に基づいて、Ａ文字、ならびに、Ｂ文字を、桁区切りないし小数点とみなし、文字列が誤った数値であると解釈されるおそれがある状態を修正する。
【０２８１】
本実施の形態では、数値に変換できない文字列を数値に変換しようとすることがある。これは本実施の形態を実行するルーチンを用いる場合を例にした説明だが、該ルーチンは、引数として、数値に変換できない文字列が指定された際の返り値を引数とする指定を受け付け、数値に変換できない文字列が指定された場合（例えば、ステップＳ１５０６−２に到達した）は、該指定に基づいた文字列を返す。
【０２８２】
備考
本実施の形態では、Ａ字でありＢ字でない文字列をＡＡ字、Ａ字でありＢ字である文字列をＡＢ字、Ａ字でなくＢ字である文字列をＢＢ字と呼称する。
【０２８３】
Ａ字集合１５０１Ａ
Ａ字集合１５０１Ａは、０種類以上のＡ字の集合。Ａ字集合１５０１Ａは、ＡＡ字かＡＢ字のいずれか。
【０２８４】
ここでは、Ａ字は、半角スペース（ ）、カンマ（,）、ピリオド（.）である場合を例示してある。
【０２８５】
Ｂ字集合１５０１Ｂ
Ｂ字集合１５０１Ｂは、０種類以上のＢ字の集合、Ｂ字集合１５０１Ｂは、ＡＢ字かＢＢ字かのいずれか。
【０２８６】
ここでは、Ｂ字は、カンマ、ピリオド、縦線（|）である場合を例示してある。
【０２８７】
ＡＡ字集合１５０２ＡＡ
ＡＡ字集合１５０２ＡＡは、（Ａ字集合１５０１Ａ、Ｂ字集合１５０１Ｂに基づいて作成された情報）Ａ字集合１５０１Ａに存在しＢ字集合１５０１Ｂに存在しない文字列の集合であり、ＡＡ字とみなす。
【０２８８】
ＡＢ字集合１５０２ＡＢ
ＡＢ字集合１５０２ＡＢは、（Ａ字集合１５０１Ａ、Ｂ字集合１５０１Ｂに基づいて作成された情報）Ａ字集合１５０１Ａに存在しＢ字集合１５０１Ｂに存在する文字列の集合であり、ＡＢ字とみなす。
【０２８９】
ＢＢ字集合１５０２ＢＢ
ＢＢ字集合１５０２ＢＢは、（Ａ字集合１５０１Ａ、Ｂ字集合１５０１Ｂに基づいて作成された情報）Ａ字集合１５０１Ａに存在せずＢ字集合１５０１Ｂに存在する文字列の集合であり、ＢＢ字とみなす。
【０２９０】
文字列１５０３
文字列１５０３は、本実施の形態における変換をする前の文字列。０個以上のＡＡ字、０個以上のＡＢ字、０個以上のＢＢ字を含む。
【０２９１】
文字列１５０４
文字列１５０４は、文字列１５０３からＡＡ字を取り除いた文字列。ＡＡ字は、桁区切りにしかならない（つまり小数点や数値にならない）ため、取り除く。
【０２９２】
ステップＳ１５０５
ステップＳ１５０５では、文字列１５０４に存在するＢＢ字の数を数え、該ＢＢ字の数によって、ステップＳ１５０６−０、ステップＳ１５０６−１、ステップＳ１５０６−２、の、いずれかを実行する。
【０２９３】
ステップＳ１５０６−０
ステップＳ１５０６−０は、ステップＳ１５０５にて数えたＢＢ字の数が０個である場合に実行する。
【０２９４】
図１６を参照しながら後述する。
【０２９５】
ステップＳ１５０６−１
ステップＳ１５０６−１は、ステップＳ１５０５にて数えたＢＢ字の数が１個である場合に実行する。
【０２９６】
変換対象の文字列に存在するＡＢ字をすべて取り除く（空文字列に置き換え）、ＢＢ字を小数点に置き換える。
【０２９７】
ステップＳ１５０６−２
ステップＳ１５０６−２は、ステップＳ１５０５にて数えたＢＢ字の数が２個である場合に実行する。
【０２９８】
数値に変換できない文字列として扱う。
【０２９９】
備考
実施の形態１０は、数値に変換することができる文字列を作成する処理。
【０３００】
よって、実施の形態１０を実行する情報処理装置が、どんな文字列を小数点とみなすかを判断し、小数点として扱うべき文字列を、前記「小数点とみなす」文字列に置き換える。
【０３０１】
情報処理装置が小数点として扱う文字列を特定する手段は、下記の通り。
【０３０２】
小数点が出現する位置が分かっている数値（例えば、円周率）を文字列に変換し、小数点が出現するであろう位置に存在する文字列を、情報処理装置が小数点として扱う文字列とみなす。（好適には、前記数値が０以上なら、該文字列における「+」記号を空文字列に置き換える処理をする。）
以下、円周率から小数点を特定する場合を例に説明。
【０３０３】
上記の処理をして得られた文字列は、例えば「3.14159」のように、（最初の文字を１文字目とした）２文字目に小数点が出現するであろうから、
上記の処理をして得られた文字列の、（最初の文字を１文字目とした）２文字目に出現した文字を、情報処理装置が小数点として扱う文字列であるとみなす。
【０３０４】
図１６は、実施の形態１０におけるステップＳ１５０６−０を示す図。
【０３０５】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
例えば情報処理装置１００に記憶されている文字列を、該文字列に存在する、AB字の種類及び数よおび位置に基づいて、該文字列の内容を変更し、結果を例えば情報処理装置１００に格納し、処理を終了する。
【０３０６】
文字列１６０１
文字列１６０１は、ステップＳ１５０６−０を開始する前の文字列。
【０３０７】
文字列１６０１は、文字列１５０４の時点でＡＡ字がすべて取り除かれているため、文字列１６０１は、ＡＡ字０個、ＡＢ字０個以上、ＢＢ字０個。
【０３０８】
表１６０２
表１６０２は、文字列１６０１に存在するＢＢ字の種類ごとの数を数えた表。
【０３０９】
ここでは、ＢＢ字であるカンマは２個、ピリオドは１個である場合を例に説明する。
【０３１０】
文字列１６０３
文字列１６０３は、文字列１６０１に存在する
「数が１個であるＡＢ字が１種類」である場合は、そのＡＢ字を小数点とみなし、それ以外のＡＢ字を取り除く（空文字列に置き換える）ことにより、文字列１６０３を作成する。
【０３１１】
上記以外の場合は、最も右にあるＡＢ字ではないＡＢ字を取り除く（空文字列に置き換える）ことにより、文字列１６０３を作成する。
【０３１２】
備考
上記の処理によって作成された文字列１６０３を、実施の形態１０によって作成された文字列として、処理を終了する。
【０３１３】
図１７は、実施の形態１１における処理を示すフローチャート。
【０３１４】
本実施の形態では、に記憶されている情報を、対象のキーおよびカラムを指定して取得し、数値に変換する。
【０３１５】
本実施の形態における処理部は、図２にて処理部２３１として表現されている処理部のひとつ。
【０３１６】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
実施の形態7、実施の形態10を実行することにより例えばRAM１０３に記憶された情報を数値に変換し
これを例えばRAM１０３に記憶し、処理を終了する。
【０３１７】
ステップＳ１７０１
ステップＳ１７０１では、実施の形態７を実行する。
【０３１８】
ステップＳ１７０２
ステップＳ１７０２では、ステップＳ１７０１によって取得した文字列を、実施の形態１０を実行することにより、数値に変換できる文字列に変換する。
【０３１９】
ステップＳ１７０３
ステップＳ１７０３では、ステップＳ１７０２によって作成された文字列を、数値に変換する。
【０３２０】
備考
本実施の形態は、ルーチンによることができる。読み込むべきデータベースのフィールドが、どの主キーのどのカラムに属するかを引数によって指定し、ステップＳ１７０１を実行する際に、前記指定に基づいて処理を実行する形態が考えられる。
【０３２１】
該ルーチンは、処理に失敗した際に返す値を（該ルーチンの返り値と同じデータ型の引数として）指定し、処理に失敗した際は、前記引数を返す構成とすることができる。
【０３２２】
本実施の形態では、数値を返すことを想定しているが、数値のデータ型は、double型はもちろん、decimal型、integer(int)型など、であってもよい。
【０３２３】
図１８は、実施の形態１２に関する処理を示すフローチャート。
【０３２４】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
実施の形態7を実行し（ステップS1810）、
該実施の形態7によって例えばRAM１０３に記憶された文字列に区切り文字があるか判断（ステップS1820）し、
該区切り文字が無い場合（ステップS1820:NO）は、該文字列の内容を、区切り文字があるように変更（ステップS1821）し、
ステップS1821を実行した場合はステップS1821によって作成され、それ以外の場合はステップS1810によって取得された文字列を、前記区切り文字を境に左右に分割し（ステップS1830）、
前記分割によって作成された2個の文字列のうち、いずれかを数値に変換し（ステップS1840）、
前記結果を例えばRAM１０３に格納し、処理を終了する。
【０３２５】
本実施の形態における発明が解決しようとする課題
データベースのフィールドに、例えば、最小値と最大値のような、複数の値を書き込む必要があることがある。
【０３２６】
本実施の形態では、複数の値が書き込まれたフィールドから、例えば、最小値または最大値のような、指定された値を取得する。
【０３２７】
ここでは、フィールドに書き込まれている値は、数値に変換できる文字列、数値に変換できる文字列２個を区切り文字によって区切った文字列であり、前記区切り文字はアンダースコア（_）であり、前記区切り文字の左側が最小値、右側が最大値である場合を例に説明する。
【０３２８】
ステップＳ１８１０
ステップＳ１８１０では、実施の形態７を実行する。
【０３２９】
ステップＳ１８２０
ステップＳ１８２０では、ステップＳ１８１０にて取得した文字列に区切り文字が存在するかを確認する。
【０３３０】
前記区切り文字が存在する場合は、ステップＳ１８１０にて取得された文字列をを数値に変換し、処理を終了する。
【０３３１】
（変形例：前記区切り文字が存在しない場合は、ステップＳ１８２１に移行する。）
ステップＳ１８２１
ステップＳ１８２１では、ステップＳ１８１０にて取得した文字列を２個並べ、前記２個の間に区切り文字を設けた文字列に変換する。
【０３３２】
例えば、ステップＳ１８１０にて取得した文字列が「23.4」であって、前記区切り文字が「_」である場合は、
ステップＳ１８２１にて、「23.4_23.4」という文字列に変換される。
【０３３３】
ステップＳ１８３０
ステップＳ１８３０でじゃ、ステップＳ１８１０にて取得された文字列（または、ステップＳ１８１０にて取得され、ステップＳ１８２１にて変更された文字列）
に存在する区切り文字を境に、前記文字列を左右に分ける。
【０３３４】
例えば、（最初の文字を１文字目として）n文字目に文字数mの区切り文字がある場合は、1〜n-1番目の文字列を抜き出した文字列（文字列Ｓ１８３０−Ｌ）と、n+m番目以降の文字列を抜き出した文字列（文字列Ｓ１８３０−Ｒ）と、２個の文字列に分ける。
【０３３５】
ステップＳ１８４０
ステップＳ１８４０では、ステップＳ１８３０にて作成された文字列のいずれかを数値に変換する。この変換に先立って実施の形態１０を用いて、数値に変換しようとする文字列を修正する形態であってもよい。
【０３３６】
例えば、最小値を必要とするときは文字列Ｓ１８３０−Ｌ、最大値を必要とするときは文字列Ｓ１８３０−Ｒ、を、数値に変換する。
【０３３７】
図１９は、実施の形態１におけるsave部２１２と、該save部２１２に関連する処理の図。
【０３３８】
ハードウェア動作
情報処理装置１００のCPU１０１は、プログラム１０２Pに基づいて、
データベースから取得され、例えばRAM１０３に記憶されている情報を、
例えばRAM１０３に記憶されている情報に基づいて変更し、
前記変更の結果を、例えばRAM１０３に記憶し、処理を終了する。
【０３３９】
本実施の形態における発明が解決しようとする課題
データベースは、複数の情報処理装置によって共用されている場合がある。
【０３４０】
本実施の形態では、変更前のデータベースの情報をbef部２２２に保持している。
【０３４１】
しかし、set部２１１を実行してからsave部２１２までの間に、ほかの情報処理装置によってデータベースが変更されていれば、
set部２１１を基準とした更新をすると、前記変更の内容が消失する。
【０３４２】
これを回避するため、ここでは（直前に）データベースの情報を読み込み、該情報を基準にデータベースを更新する。
【０３４３】
save部１９００
save部１９００は、図２におけるsave部２１２に相当する。
【０３４４】
情報１９０１
情報１９０１は、図２における情報２０３が、save部２１２の内部に読み込まれたものに相当する。
【０３４５】
情報１９０２
情報１９０２は、情報１９０１が、行（レコード）ごとに区分された、1個以上のデータの集合。
【０３４６】
前記説明は、情報１９０１がフラットファイルデータベースの文字列である場合の例。
【０３４７】
情報１９０２−ｒ
情報１９０２−ｒは、chan部２２３に記憶された、変更（図19の説明中、特に明記なき限り、変更と記載されているものは変更ないし追加を意味する）すべきレコードの主キー。
【０３４８】
ここでは、chan部２２３に、主キーが102であるレコード、主キーが104であるレコードの内容を変更すべき旨の情報が、記憶されている場合を例示してある。
【０３４９】
ここでは、keysORtitles部１００４を、「どのキー」の一覧を返すものとして実行し、該keysORtitles部１００４によって提供された情報を受け取る。
【０３５０】
情報１９０３
情報１９０３は、情報１９０２のうち、カラムの意味を定義する行と、変更の対象となるレコードを、
一次元配列である情報１９０２から、ジャグ配列である情報１９０３の、該情報１９０２の同じ番号の要素へ、カラムを区切る文字列を境に区切った配列に変更して書き込み、
該情報１９０３におけるその他の要素をnullとすることにより作成された。
【０３５１】
前記説明は、情報１９０２が一次元配列であり、
該一次元配列は、特定の番号を持つ要素が、タイトル行（少なくともキー列（主キーを格納してある列）を除く列にて、それぞれのカラムの意味を定義する行）の位置が定義され、
該一次元配列は、カラムを区切る文字列が何であるかが定義され、
該一次元配列は、キー列の位置が定義されているものとした例示。
【０３５２】
備考
情報１９０２は、カラムを区切る文字とカラムを区切る文字の間（フィールド）に、フィールドに含めると誤作動を起こす恐れがある文字列が、
例えば、実施の形態２,実施の形態５,実施の形態６によって（基づいて）置き換えされた文字列である場合がある。
【０３５３】
その場合、情報１９０３の要素に格納するとき、例えば、実施の形態４、実施の形態２（文字列３０５から文字列３００）、あるいは、実施の形態６（文字列７０７から文字列７０１）を実行することにより、
前記置き換えがされる前の文字列に変更してから格納する。
【０３５４】
情報１９０３−ｃ
情報１９０３−ｃは、chan部２２３に記憶された、変更すべきレコードのカラム。
【０３５５】
情報１９０４
情報１９０４は、情報１９０３をもとに、
「情報１９０２−ｒにあって情報１９０３にないキー列」を持つ行と
（ここでは、情報１９０２−ｒに、102、104、106があり、このうち情報１９０３の主キーにないのは106であるため、106を追加。）
「情報１９０３−ｃにあって情報１９０３にないカラム」を
（ここでは、情報１９０３−ｃには、情報X、情報Y、情報１があり、このうち、情報１９０３のカラムにないのは、情報X、情報Yであるため、情報X、情報Y、を追加）
追加することによって作成したもの。
【０３５６】
前記説明は、情報１９０３、情報１９０４が、ジャグ配列（キー列の位置が定義されている）であるものとした例示。
【０３５７】
図１９では、追加されたフィールド（要素）を灰色で表記してある。
【０３５８】
情報１９０４−d
情報１９０４−dは、変数１００１に記憶された、「どのキー」の「どのカラム」に属するフィールドを、「どんな情報」に変更すべきかを指定した情報。
【０３５９】
該情報１９０４−dを、keysORtitles部１００４を介して取得したものが、情報１９０２−ｒ、情報１９０３−ｃ。
【０３６０】
情報１９０５
情報１９０５は、情報１９０４を、item部１００３を介して取得した情報に基づいて変更することによって作成したもの。
【０３６１】
変更対象であるキーおよびカラムは、情報１９０２−ｒ、情報１９０３−ｃに基づいてわかっているため、これを用いてitem部１００３を実行することができる。
【０３６２】
なお、item部１００３は、「読み込みに失敗した際のに返す文字列」が設定されている。
【０３６３】
これは、変数１００１に存在しない組み合わせ、例えば、図１９でいうと、キーが102、カラムが情報１、を指定した場合に起きる。
【０３６４】
item部１００３が「読み込みに失敗」しているか否かを判別するため、item部１００３を、キー・カラムが同じで「読み込みに失敗した際に返す文字列」を違えて、
1回以上ずつ実行する。この複数回の実行にて、同じ文字列が返ってきた場合は、情報１９０４の該当フィールドを変更し、それ以外の場合は変更しない。
【０３６５】
情報１９０４では、nullである行や、存在しないフィールドに書き込むことはできない。
【０３６６】
それらのフィールドに書き込む際は、書き込む前に、配列を宣言（定義）する。
【０３６７】
図１９では、追加されたフィールド（要素）のうち、情報が書き込まれた要素を濃い灰色、情報が書き込まれなかった要素を薄い灰色で表記してある。
【０３６８】
情報１９０６
情報１９０６は、情報１９０５におけるnullではない要素に格納されている配列を、列を区切る文字を境にした文字列に直し、
該文字列を、情報１９０２における同じ番号の要素に格納することによって作成したもの。
【０３６９】
ただし、情報１９０５は、データベースのフィールドに含めると誤作動を起こす恐れがある文字列を含むことがある。
【０３７０】
よって、情報１９０５から情報１９０６を作成する際、例えば、実施の形態２（文字列３００から文字列３０５）、実施の形態３、実施の形態５（文字列６００から文字列６０２）、実施の形態６（文字列７０１から文字列７０７）のいずれかを実行することにより、誤作動を起こす恐れがある文字列を、ほかの文字列に変更する。
【０３７１】
前記説明は、情報１９０５が文字列型ジャグ配列で、情報１９０６が文字列型配列であるものとした例示。
【０３７２】
情報１９０６−ｄ
情報１９０６−ｄは、データベースから取り除くべきレコードを、主キーによって指定したもの。処理部１１０３を介して取得する。
【０３７３】
情報１９０７
情報１９０７は、情報１９０６から、削除すべきレコードを取り除くことによって作成されたもの。
【０３７４】
情報１９０８
情報１９０８は、情報１９０６を、行を区切る文字を区切り文字として連結することによって作成した文字列。
【０３７５】
前記説明は、情報１９０７が配列であるものとした例示。
【０３７６】
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図されている。また、各実施の形態は、処理内容を矛盾させない範囲で適宜組み合わせることができる。
【符号の説明】
【０３７７】
１００  情報処理装置
１０１  CPU
１０２  記憶部
１０２P  プログラム
１０３  RAM
１０４  入力部
１０５  表示・出力部
１０６  通信部  
２００DB  データベース
２００TB  データベース処理部
２０１  情報
２０２  設定
２０３  情報
２０４  情報
２１１  set部
２１２  save部
２２１  setg部
２２２  bef部
２２３  chan部
２２４  del部
２３１  処理部  
３００  文字列
３０１  変換定義
３０２  文字列
３０３  文字列集合
３０４  文字列集合
３０５  文字列
３５４  文字列集合
３５３  文字列集合  
４０１  文字列
４０２Ｌ  文字列
４０２Ｒ  文字列
４０３  文字列
４０４  文字列  
５０１  文字列
５０２  文字列集合
５０３  文字列集合
５０４  文字列  
６００  文字列
６０１  文字列
６０２  文字列  
７０１  文字列
７０２  変換定義
７０３  区切り文字
７０４  文字列
７０５  文字列集合
７０６  文字列集合
７０７  文字列  
８００  処理部
８０１  処理部
８０２  データベース情報記憶部
８０２R  行情報
８０２C  列情報
８０３  処理部
８０４  処理部
８０５  処理部  
９０１  情報
９０２  設定
９１１  set部
９２１  setg部
９２２  bef部  
１０００  chan部
１００１  変数
１００２  add部
１００３  item部
１００４  keysORtitles部
１００５  titles部
１００６  keyTOtitles部  
１１００  del部
１１０１  処理部
１１０２  変数
１１０３  処理部
１０５１  処理部  
１４０１Ａ  データ集合
１４０２Ａ  データ集合
１４０２Ｂ  データ集合
１４０３Ａ  データ集合
１４０３Ｂ  データ集合
１５０１Ａ  Ａ字集合
１５０１Ｂ  Ｂ字集合
１５０２ＡＡ  ＡＡ字集合
１５０２ＡＢ  ＡＢ字集合
１５０２ＢＢ  ＢＢ字集合
１５０３  文字列
１５０４  文字列
Ｓ１５０５  ステップ
Ｓ１５０６−０  ステップ
Ｓ１５０６−１  ステップ
Ｓ１５０６−２  ステップ  
１６０１  文字列
１６０２  表
１６０３  文字列  
Ｓ１７０１  ステップ
Ｓ１７０２  ステップ
Ｓ１７０３  ステップ
Ｓ１７０４  ステップ  
Ｓ１８１０  ステップ
Ｓ１８２０  ステップ
Ｓ１８２１  ステップ
Ｓ１８３０  ステップ
Ｓ１８３０−Ｌ  文字列
Ｓ１８３０−Ｒ  文字列
Ｓ１８４０  ステップ
Ｓ１８５０  ステップ
Ｓ１８６０  ステップ  
１９００  save部
１９０１  情報
１９０２  情報
１９０２−ｒ  情報
１９０３  情報
１９０３−ｃ  情報
１９０４  情報
１９０４−d  情報
１９０５  情報
１９０６  情報
１９０６−ｄ  情報
１９０７  情報
１９０８  情報
【図１】
0006867572.tif 000002
【図２】
0006867572.tif 000003
【図３】
0006867572.tif 000004
【図４】
0006867572.tif 000005
【図５】
0006867572.tif 000006
【図６】
0006867572.tif 000007
【図７】
0006867572.tif 000008
【図８】
0006867572.tif 000009
【図９】
0006867572.tif 000010
【図１０】
0006867572.tif 000011
【図１１】
0006867572.tif 000012
【図１２】
0006867572.tif 000013
【図１３】
0006867572.tif 000014
【図１４】
0006867572.tif 000015
【図１５】
0006867572.tif 000016
【図１６】
0006867572.tif 000017
【図１７】
0006867572.tif 000018
【図１８】
0006867572.tif 000019
【図１９】
0006867572.tif 000020