JP2021009528A - データベースと情報処理システム - Google Patents
データベースと情報処理システム Download PDFInfo
- Publication number
- JP2021009528A JP2021009528A JP2019122621A JP2019122621A JP2021009528A JP 2021009528 A JP2021009528 A JP 2021009528A JP 2019122621 A JP2019122621 A JP 2019122621A JP 2019122621 A JP2019122621 A JP 2019122621A JP 2021009528 A JP2021009528 A JP 2021009528A
- Authority
- JP
- Japan
- Prior art keywords
- information
- database
- character string
- program
- storage unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】行やカラムの境目として用いられる文字列と同じ文字列をフィールドに含めるフラットファイルデータベースの内容を変更したとき、変更前のデータを保持するプログラムを提供する。【解決手段】プログラムにおいて、書き込み部511は、データベースから読み取った情報をデータベース記憶部501に書き込む処理と設定部から読み取った情報を設定記憶部504に書き込む処理を実行する。書き込み部511は、データベースから読み取った情報と情報を使用するための情報を引数とし、データベース記憶部501及び設定記憶部504に記憶する。キー出力部515は、データベース記憶部501又は変更記憶部502に記憶されており、かつ、削除記憶部513に記憶されていないキーを返す。【選択図】図5
Description
本発明は、1個ないし複数の情報処理装置において使用するデータベースおよびそれを取り扱う情報処理システムに関する。
従来、CSVファイルをデータベースとして取り扱うプログラムが知られている(例えば、特許文献1参照)
しかし、特許文献1に開示された技術では、CSVファイルに、行やカラムの境目として用いられる文字列と同じも文字列をフィールドとして含めることが難しい、CSVファイルの内容を変更したとき、変更前のデータを保持することが難しい、などの問題がある。
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、フラットファイルデータベースを取り扱うプログラムであって、行やカラムの境目として用いられる文字列と同じも文字列をフィールドとして含める、フラットファイルデータベースの内容を変更したとき、変更前のデータを保持する、などの特徴を持つプログラム及び情報処理システムを提供することになる。
本発明の一態様の情報処理システムは、情報処理装置ならびに記憶装置を通信網を介して接続し、情報処理装置は、データベースの所在を例えば記憶部に記憶し、必要に応じてデータベースの読み書きを行う。
本発明の一態様の情報処理装置は、データベースに記憶されている情報に基づいて、前記情報処理装置の例えば記憶部またはRAMに記憶すべき情報を作成し、前記情報に対して必要な情報のやり取りを行う。
本発明の一側面によれば、フラットファイルデータベースにおいて、行やカラムの境目として用いられる文字列と同じも文字列をフィールドとして含める、フラットファイルデータベースの内容を変更したとき、変更前のデータを保持することなどが可能となる。
図1は、情報処理装置を示すブロック図。情報処理装置1はインターネット、LAN(Local Area Network)又は携帯電話網等の通信網Nにより他の情報処理装置と相互に接続されている。情報処理装置1は、例えばサーバ装置、パーソナルコンピュータ又はスマートフォン等である。情報処理装置1は、CPU(Central Processing Unit)11、記憶部12、RAM(Random Access Memory)13、入力部14、表示部15、通信部16及びドライブ部17を備える。
CPU11は、バスを介してハードウェア各部と接続されている。CPU11は例えば一もしくは複数のCPU又はマルチコアCPU等を備える。CPU11は、記憶部12に記憶されたプログラム12Pに従いハードウェアの各部を制御する。
記憶部12は例えばハードディスク又は大容量メモリ等である。ドライブ部17は、光ディスク等の記録媒体10から情報を読み取る。記憶部12にはCPU11が処理を行う際に必要とする種々のデータ及びプログラム12Pを格納する。CPU11は、記録媒体10に記録されたプログラム12Pをドライブ部17に読み取らせ、読み取ったプログラム12Pを記憶部12に記憶させる。CPU11は、必要に応じてプログラム12Pを記憶部12からRAM13へロードし、ロードしたプログラム12Pに従って、各種の処理を実行する。なお、プログラム12Pは、情報処理装置1の外部からダウンロードされてもよく、予め記憶部12に記憶されていてもよい。この場合、情報処理装置1は、ドライブ部17を備えていない形態であってもよい。
RAM13は例えばSRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、フラッシュメモリ等である。RAM13は、記憶部としても機能し、CPU11による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
入力部14はマウス又はキーボード等の入力デバイスであり、受け付けた操作情報をCPU11へ送信する。表示部15はCPU11から送信された画像データを表示する。表示部15は例えば液晶ディスプレイである。通信部16は、例えば無線LANカード又は携帯電話用通信モジュール等であり、通信網Nを介して各種情報を送受信する。
<データベース>
図2は、データベースの一例を示す図。表201を取り扱うにあたり、左端の列を0列目、上端の行を0行目とし、どの行がタイトル行、データ開始行であって、どの列がキー列であるかは、別途定義されている
図2は、データベースの一例を示す図。表201を取り扱うにあたり、左端の列を0列目、上端の行を0行目とし、どの行がタイトル行、データ開始行であって、どの列がキー列であるかは、別途定義されている
(例えば、キー列は0列目、タイトル行は0行目、データ開始行は2行目と定義されているなら、0行目がタイトル行、2行目以降にレコードが書き込まれる)。
例えば、データベースを扱うクラス内の定数であるとか、データベースを扱う設定ファイルに記載されている等である。
表201は、データベースにおける表の一例。
列201−Aは、データベースにおけるキー列。キー列は、主キーが格納されている。
行201−0は、キー列を除く列において、どのカラムが何を意味するかを定義する。キー列を除く列において、どのカラムが何を意味するかを定義する行を「タイトル行」と呼称する。
行201−1は、1個目のレコード。これ以降、レコードが存在する行を「データ行」、データ行の上端である行を「データ開始行」と呼称する。データ開始行は、データ行である。レコードが存在しない表は、タイトル行は存在してもよいが、データ行は存在しない。
文字列202は、表201を表現する文字列。文字列201を記録したファイルは、フラットファイルデータベースとして扱うことができる。文字列202にて、カラムや行の区切りに用いる文字は別途定義されている
(例えば、カラムを区切る文字はカンマ、行を区切る文字は改行)。
(例えば、カラムを区切る文字はカンマ、行を区切る文字は改行)。
ただし、この方法では、カラムや行を区切る文字と同じ文字をフィールドに書き込むことができないという問題がある。それを解決する手段は、図7を説明する部分において説明する。
<実施の形態1>
図3は、実施の形態1に係る情報処理装置1がデータベースから読み込んだデータを、記憶部に記憶する処理を示す図。本実施の形態にかかる情報処理装置の構成は、図1を説明する部分にて説明した通りである。
図3は、実施の形態1に係る情報処理装置1がデータベースから読み込んだデータを、記憶部に記憶する処理を示す図。本実施の形態にかかる情報処理装置の構成は、図1を説明する部分にて説明した通りである。
本実施の形態では、データ300、処理部301、設定部303Aは、情報処理装置の内部に、例えばプログラムとして存在し、かつ、記憶装置302は、前記情報処理装置と通信部を介して接続されている他の情報処理装置または記憶装置である場合が考えられるが、ハードウェア構成は、この通りでなくてもよい。例えば、データベース302Aは、前記情報処理装置の記憶部に存在していてもよい。
データ300は、処理部301によって作成されたデータである。図5を説明する部分において説明する。データ300は、データベースから読み込まれた第1のデータと、前記第1のデータを使用するために必要な情報を記憶した第2のデータと、前記第1のデータに対してすべき変更(追加を含む。)を記憶した第3のデータと、前記第1のデータに対して削除すべきレコードを記憶した第4のデータと、をそなえる。
処理部301は、データベース302A、設定部303Aに基づいて、データ300を作成する処理をする。
記憶装置302は、データベースを記憶する記憶装置である。本実施の形態では、記憶装置302を情報処理装置1と異なる装置である場合を例示するが、記憶装置302の機能を、情報処理装置1、あるいは通信部16を介して接続された他の装置が担当してもよい。その場合、データベース302Aは、前記情報処理装置1または前記他の装置に記憶される。
(記憶装置302は、サーバ装置などのコンピュータである。記憶装置302は、CPU31、記憶部32、プログラム32P、RAM33、通信部34をそなえる。記憶部32は例えばハードディスク又は大容量メモリ等である。CPU31は、記憶部32に記憶されたプログラム32Pに従いハードウェアの各部を制御する。通信部34は、通信網Nを介して各種情報を送受信する。)
(記憶装置302は、サーバ装置などのコンピュータである。記憶装置302は、CPU31、記憶部32、プログラム32P、RAM33、通信部34をそなえる。記憶部32は例えばハードディスク又は大容量メモリ等である。CPU31は、記憶部32に記憶されたプログラム32Pに従いハードウェアの各部を制御する。通信部34は、通信網Nを介して各種情報を送受信する。)
データベース302Aは、処理部301によって読み込まれるデータベースである。本実施の形態では、データベース302Aを記憶装置302に記憶してある場合例示するが、データベース302Aは、情報処理装置1、あるいは通信部16を介して接続された他の装置に記憶してあってもよい。その場合、処理部301Aは、前記情報処理装置1または前記他の装置に記憶されたデータベース302Aを読み込む。
データベース302Aがファイルである場合を例に説明する。設定部303Aは、少なくとも、データベース302Aのファイル名、データベース302Aが存在するフォルダ名が設定されている。前記フォルダは、何らかのフォルダのサブフォルダであるか、何らかのハードウェアの直下に存在する。
ここでは、データベース302Aが、「\\12.345.67\ tsubossie\TEST\TEST.csv」というパスにて表現されるべき位置に記憶されている場合を例に説明する。この場合、12.345.67というIPアドレスを持つ記憶装置に、tsubossieというフォルダ(第1のフォルダ)が存在し、第1のフォルダのサブフォルダとしてTESTというフォルダ(第2のフォルダ)が存在し、第2のフォルダの内部にデータベース302Aが存在する。このとき、設定部303Aは、第2のフォルダの名称、データベース302Aのファイル名を記憶し、第1のフォルダは記憶しない。
第1のフォルダは、ユーザが設定ないし変更することができる
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えば入力部14を介した、第1のフォルダの設定または変更をすべき指示を受け付けて、前記指示に基づいて、第1のフォルダの位置を示す情報を、記憶部12に記憶する。ただし、すでに記憶部12に前記情報が記憶されている場合は、前記情報を変更する。)。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えば入力部14を介した、第1のフォルダの設定または変更をすべき指示を受け付けて、前記指示に基づいて、第1のフォルダの位置を示す情報を、記憶部12に記憶する。ただし、すでに記憶部12に前記情報が記憶されている場合は、前記情報を変更する。)。
本例示では、第1のフォルダを記憶装置の直下に設ける場合を例示したが、第1のフォルダを、他のフォルダのサブフォルダとしてもよいことは言うまでもない。
設定部303Aは、データベース302Aを使用するために必要な情報が書き込まれている。データベース302Aがフラットファイルデータベースである場合を例に説明する。データベース302Aを記憶すべきフォルダ名、データベース302Aのファイル名、データベース302Aにて、カラムの区切り文字として用いられる文字または文字列、データベース302Aにて、行の区切りとして用いられる文字または文字列、データベース302Aにおけるキー列の位置、データベース302Aにおけるタイトル行の位置、データベース302Aにおけるデータ開始行の位置。例示すれば上記があるが、これに限られない。また、これらをすべてそなえるべきということでもない。
本実施の形態では、処理部301が、データベース302Aに記憶された情報を読み取るステップS901(ただし、前記データベース302Aが存在しない場合は、前記ステップS901の前に、前記データベース301Aを作成するステップS900を実行する)、設定部303Aから設定内容を読み込むステップS902を実行し、データ300を作成する処理を実行する。
データ300は、データベース302Aから読み込まれたデータならびに設定部303Aから読み込まれたデータを受け付けて、受け付けた内容を前記データ300の内部に記憶する機能をそなえる。
(例えば、データ300はクラスであり、前記クラスは、データベース302Aから読み込まれたデータならびに設定部303Aから読み込まれたデータを代入するルーチンをそなえ、前記ルーチンは、データ300の内部に存在する変数に前記代入された値を格納する。)
図10は、設定部303Aにかかるソースコードの一例。
データベース302Aがフラットファイルデータベースである場合を例に、設定部303Aを、図10を参照して説明する。
FOLDER定数は、データベース302Aを保管するフォルダ、FILE定数は、データベース302Aのファイル名、DEFAULT定数は、データベース302Aが存在しない場合に前記データベース302Aを作成する場合において前記データベース302Aに書き込むべき情報である。
COLUMNKUGIRI定数は、データベース302Aにおけるカラムの区切り、ROWKUGIRI定数は、データベース302Aにおける行の区切りである。TITLEROW定数はデータベース302Aにおけるタイトル行の位置、STARTROW定数はデータベース302Aにおけるデータ開始行の位置、KEYCOLUMN定数はデータベース302Aにおけるキー列の位置である。
本明細書では、上記の説明のように定数による場合を例示することがあるが、これは定数でなければならないことを意図するものではなく、例えば設定ファイルに書き込んでおく、例えば他の情報処理装置または記憶装置が前記設定を記憶する等。他の手段によって定義されていてもよい。
(情報処理装置は、例えば記憶部、または、記憶部に格納されたプログラムによって、データベースを使用するために必要な情報が定義されている。ただし、RAMないし通信部を介して接続されるほかの情報処理装置または記憶装置に記憶されていてもよい。)
(情報処理装置は、例えば記憶部、または、記憶部に格納されたプログラムによって、データベースを使用するために必要な情報が定義されている。ただし、RAMないし通信部を介して接続されるほかの情報処理装置または記憶装置に記憶されていてもよい。)
図10は、設定部303Aのソースコードである。左側の数字は、行番号である。ここでは、データベース302Aがファイルである場合を例に説明する。定数FOLDERは、データベース302Aを格納するフォルダの名称を定義する。定数FILEは、データベース302Aのファイル名を定義する。
下記の説明は、データベース302Aがフラットファイルデータベースである場合を例にした説明である。
定数TITLEROWは、データベース302Aのタイトル行の位置を定義する。定数STARTROWは、データベース302Aにおけるデータ開始行の位置を定義する。定数KEYCOLUMNは、キー列の位置を定義する。定数ROWKUGIRIは、行の区切りを意味する文字列を定義する。定数COLIUMNKUGIRIは、カラムの区切りを意味する文字列を定義する。定数DEFAULTは、データベース302Aを作成する際に、前記データベース302Aに書き込むべき文字列を定義する。
(情報処理装置1のプログラム12Pは、データベースを使用するために必要な情報が定義されている。または、情報処理装置1のCPU11は、プログラム12Pに基づいて、データベースを使用するために必要な情報を、記憶部12またはRAM13の少なくともいずれかに記憶させる。)
(情報処理装置1のプログラム12Pは、データベースを使用するために必要な情報が定義されている。または、情報処理装置1のCPU11は、プログラム12Pに基づいて、データベースを使用するために必要な情報を、記憶部12またはRAM13の少なくともいずれかに記憶させる。)
図11は、情報処理装置が処理部301を実行するソースコードの一例(44〜66行目)。左側の数字は、前記ソースコードの行番号である。
44行目、引数centralは、データベースが存在するフォルダが存在するフォルダである。つまり、データベースは、引数centralによって表されるフォルダのサブフォルダの内部に存在するファイルとして記憶されている。
引数centralに記憶すべきフォルダは、情報処理装置の記憶部またはRAMに記憶され、前記情報処理装置のユーザによって、前記フォルダを変更することができる。
下記の説明は、データベースは特定のフォルダ内に存在するファイルである場合を例とした説明である。
47行目、SubFolderルーチンは、2個の引数を持ち、1個目の引数は任意のフォルダを、2個目の引数はフォルダ名を指定するものであり、前記SubFolderルーチンは、前記1個目の引数が表すフォルダのサブフォルダであって、前記2個目の引数に指定された名称と同名のフォルダ(が存在しない場合は前記フォルダを作成し、作成されたフォルダ)を表す情報を返すルーチンである。前記「2個目の引数に指定された名称」は、図10における定数FOLDERである。
48行目、fileINfolderルーチンは、2個の引数を持ち、1個目の引数は任意のフォルダを、2個目の引数はファイル名を指定する者であり、前記fileINfolderルーチンは、前記1個目の引数が示すフォルダの内部に存在する、前記2個目の引数に指定された名称と同名のファイル(が存在しない場合は前記ファイルを作成し、前記フォルダ)を表す情報を返すルーチンである。前記「2個目の引数に指定された名称」は、図10における定数FILEである。
51行目、storagefileTOtextAsyncルーチンは、1個の引数を持ち、1個目の引数が表すファイル(が存在しない場合は、前記ファイルを作成(空文字列を記憶)し、前記ファイル)に存在する文字列を返すルーチンである。
図11は、処理部301にかかるプログラムのソースコードである。左側の数字は、行番号である。ここでは、データベース302Aがファイルである場合を例に説明する。
処理部301は、ルーチンMASTERが相当する。
44行目、引数であるcentralは、データベース302Aを格納するフォルダを格納するフォルダを表す。
47行目、SubFolderルーチンは、第1引数が表すフォルダのサブフォルダ、かつ、第2引数に指定された名称のフォルダ、を表す情報を返すルーチン。第1引数は前記central変数、第2引数は、設定部303A(図11参照)における定数FOLDERが指定されている。SubFolderルーチンは、該当するフォルダが存在しない場合は、該当するフォルダを作成する。SubFolderルーチンの返り値である変数を介して、前記フォルダを操作することができる。
48行目、fileINfolderは、第1引数が表すフォルダに格納されている、第2引数に指定された名称のファイル、を表す情報を返すルーチン。第1引数は、前記SubFolderルーチンの返り値、第2引数は、設定部303A(図11参照)における定数FILEが指定されている。fileINfolderルーチンは、該当するファイルが存在しない場合は、該当するファイル(例えば、空文字列が格納されている)を作成する。fileINfolderルーチンの返り値である変数を介して、前記ファイルを操作することができる。
51行目、storagefileTOtextAsyncルーチンは、引数が表すファイルに記録されている文字列を返すルーチンである。NULLを返した場合は返り値を空文字列とみなし、返り値が空文字列である場合は、前記ファイルにデータベースが格納されていないとみなすことができる。
53〜56行目は、データベース302Aに必要なデータが格納されていない場合に実行される。
54行目、textTOfileルーチンは、第2引数に指定されたファイルに、第1引数に指定された文字列を書き込む処理を実行するルーチン。第2引数は前記fileINfolderの返り値である変数、第1引数は、設定部303A(図11参照)における定数DEFAULTが指定されている。
53〜55行目は、前記storagefileTOtextAsyncルーチンが空文字列またはNULLを返したときに実行される処理である。(空文字列またはNULLが返されることは、データベースに情報が存在しないことを表しているとみなすことができる)
54行目、textTOfileは、2個の引数を持ち、2個目の引数が表すファイルに、1個目の引数に指定された文字列を書き込むルーチンである。前記「1個目の引数に指定された文字列」は、図10における定数DEFAULTである。
55行目は、51行目と同様である。
60〜61行目は、42行目の変数textbagがNULLである場合に実行する処理である。
61行目は、変数textbagをインスタンス化する。
62行目は、変数textbagに存在するsetルーチンを実行する処理である。setルーチンは、データベースから読み取った情報と、前記データベースを使用するために必要な情報を受け取り、前記定数textbag内に前記情報を記憶するルーチンである。
44行目、引数であるcentralは、データベース302Aを格納するフォルダを格納するフォルダを表す。
47行目、SubFolderルーチンは、第1引数が表すフォルダのサブフォルダ、かつ、第2引数に指定された名称のフォルダ、を表す情報を返すルーチン。第1引数は前記central変数、第2引数は、設定部303A(図11参照)における定数FOLDERが指定されている。SubFolderルーチンは、該当するフォルダが存在しない場合は、該当するフォルダを作成する。SubFolderルーチンの返り値である変数を介して、前記フォルダを操作することができる。
48行目、fileINfolderは、第1引数が表すフォルダに格納されている、第2引数に指定された名称のファイル、を表す情報を返すルーチン。第1引数は、前記SubFolderルーチンの返り値、第2引数は、設定部303A(図11参照)における定数FILEが指定されている。fileINfolderルーチンは、該当するファイルが存在しない場合は、該当するファイル(例えば、空文字列が格納されている)を作成する。fileINfolderルーチンの返り値である変数を介して、前記ファイルを操作することができる。
51行目、storagefileTOtextAsyncルーチンは、引数が表すファイルに記録されている文字列を返すルーチンである。NULLを返した場合は返り値を空文字列とみなし、返り値が空文字列である場合は、前記ファイルにデータベースが格納されていないとみなすことができる。
53〜56行目は、データベース302Aに必要なデータが格納されていない場合に実行される。
54行目、textTOfileルーチンは、第2引数に指定されたファイルに、第1引数に指定された文字列を書き込む処理を実行するルーチン。第2引数は前記fileINfolderの返り値である変数、第1引数は、設定部303A(図11参照)における定数DEFAULTが指定されている。
53〜55行目は、前記storagefileTOtextAsyncルーチンが空文字列またはNULLを返したときに実行される処理である。(空文字列またはNULLが返されることは、データベースに情報が存在しないことを表しているとみなすことができる)
54行目、textTOfileは、2個の引数を持ち、2個目の引数が表すファイルに、1個目の引数に指定された文字列を書き込むルーチンである。前記「1個目の引数に指定された文字列」は、図10における定数DEFAULTである。
55行目は、51行目と同様である。
60〜61行目は、42行目の変数textbagがNULLである場合に実行する処理である。
61行目は、変数textbagをインスタンス化する。
62行目は、変数textbagに存在するsetルーチンを実行する処理である。setルーチンは、データベースから読み取った情報と、前記データベースを使用するために必要な情報を受け取り、前記定数textbag内に前記情報を記憶するルーチンである。
図12は、情報処理装置が実行する処理部301のフローチャート。
ステップS1201は、データベース302Aを操作するための変数を取得(前記データベースが存在しない場合は、前記データベースを作成)するステップである。
ステップS1202は、データベース302Aに情報が格納されているか否かを判定するステップである。その手段として、例えば、前記ステップS1201にて取得された変数を介して取得された情報が、空文字列またはNULLである場合は、前記データベースに情報が格納されていないとみなす手段がある。
ステップS1203は、データベース302Aに情報が格納されていない(ステップS1202:NO)場合に実行する処理である。データベース302Aに、設定部303Aに定義された情報を書き込み、ステップS1202と同様の処理を実行する。
ステップS1204は、データ300がNULLであるか否かを判断する。
ステップS1205は、データ300がNULLである(ステップS1204:YES)場合に実行する処理である。
情報処理装置1のCPU11は、プログラム12Pに基づいて、データベースに存在するファイルを記憶部12またはRAM13に記憶させる処理を実行する。この処理によって意味のある値を記憶させることができなかったときは、前記データベースに意味のあるデータが記憶されていないとみなし、前記データベースに意味のある値を記憶させる処理と、前記データベースに存在するファイルを記憶部12またはRAM13に記憶させる処理を実行する。
その後、記憶部12またはRAM13に、前記データベースを使用するためのデータ(図3におけるデータ300に相当)が記憶されているか判断し、前記データが存在しない場合は、前記データを作成し、前記データを。情報処理装置1の記憶部12またはRAM13に記憶する。
前記データベースは、例えば通信網Nを介した他の情報処理装置または記憶装置、または、前記情報処理装置1に記憶されている。
変形例:データ300がNULLでないなら、データベース302Aならびに設定部303Aから情報を読み取る処理、ならびに、データ300を作成する処理を省略することができる。そのため、データ300がNULLでないか確認するステップを実行し、データ300がNULLである場合に限り、ステップS1201、ステップS1202、ステップS1203(ステップS1202がNOの場合)、ステップS1205を実行する処理をする形態であってもよい。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、データ300が記憶部12またはRAM13に記憶されているか否かを判断し、データ300が記憶部12またはRAM13に記憶されていない場合は、例えば通信網Nを介して取得されたデータベース302Aと、例えば記憶部12またはRAM13に記憶されている設定部303Aに基づいて、データ300を作成し、前記データ300を、記憶部12またはRAM13に記憶する。)
<実施の形態2>
図4は、実施の形態2にかかる情報処理システムの構成を表す図。
図4は、実施の形態2にかかる情報処理システムの構成を表す図。
情報処理装置401、情報処理装置403、記憶装置402は、通信部を介して接続されている。ただし、情報処理装置、記憶装置の数量は、図4および図4を説明する部分において説明した通りでなくてもよい。例えば、3台以上の情報処理装置と、前記記憶装置を接続したものであってもよい。また、記憶装置は、情報処理システム中に存在する任意の情報処理装置が同機能をそなえていても(記憶装置の記憶部に記憶されるデータベースは、情報処理システム中に存在する任意の情報処理装置に記憶されていても)よい。
本実施の形態における情報処理システムは、データベースから作成された情報が情報処理装置に記憶されているときは、前記情報を使用し、データベースの内容を変更(削除を含む。以下この段落において同じ)するときは、変更すべき内容を前記情報処理に記憶させ、変更を実行する際は、変更をする直前に前記データベースから取得した情報に対して変更を実施する(このとき、変更前のデータベースと同一情報を記録した第2の情報を作成し、前記第2の情報を、例えば前記データベースと同一装置に記憶する)。これにより、データベースとの通信回数を減少させることなどができる。
情報処理装置401、情報処理装置403は、CPU(図示しない)、記憶部(図示しない)、プログラム(図示しない)、RAM(図示しない)、記憶部(図示しない)、出力部(図示しない)、通信部(図示しない)をそなえる。前記CPU(図示しない)、前記記憶部(図示しない)、前記プログラム(図示しない)、前記RAM(図示しない)、前記記憶部(図示しない)、前記出力部(図示しない)、前記通信部(図示しない)の構成は、図1を説明する際に説明したものと同様である。
記憶部402の構成は、実施の形態1における記憶装置302と同様である。
情報処理装置401、情報処理装置403が使用するデータベースの所在は、前記情報処理装置401、前記情報処理装置403における記憶部またはRAMに記憶されており、前記記憶に基づいて、前記データベースの読み取り、編集、書き込みを実行する。
ここでは、前記データベースは、記憶装置402に記憶されている場合を例に説明する。
データベースを読み込む(参照する)場合、情報処理装置401または情報処理装置402のCPUは、プログラムに基づいて、前記プログラムが存在する情報処理装置における記憶部またはRAMに、前記データベースに基づいて作成された第2の情報(例えば、前記データベースと同一内容が記憶されている)が存在しないか確認する。前記情報が存在しない場合は、データベースの情報を、情報処理装置の通信部を介して取得し、前記第2の情報を作成する。
データベースの内容を変更(削除を含む。以下この段落において同じ)をする場合、情報処理装置401または情報処理装置402のCPUは、実施すべき変更内容をプログラムに基づいて記憶部またはRAMに記憶する。前記変更処理を行う直前に、データベースの情報を、情報処理装置の通信部を介して取得し、取得された情報に対して、前記実施すべき変更内容に基づいた変更を行い、変更後のデータベースを記憶装置に書き込む。前記書き込む処理をする前に、変更前のデータベースと同一内容が記録された第2の情報を作成し、前記第2の情報は、例えば記憶装置402の記憶部に記憶される。
<実施の形態3>
図5は、データ300の構成を示すブロック図。本実施の形態にかかる情報処理装置の構成は、図1を説明する部分にて説明した通りである。
図5は、データ300の構成を示すブロック図。本実施の形態にかかる情報処理装置の構成は、図1を説明する部分にて説明した通りである。
書き込み部511は、処理部301がデータベース202Aから読み取った情報をデータベース記憶部501に書き込む処理と、設定部303Aから読み取った情報を設定記憶部504に書き込む処理と、を実行する。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、データベースから取得した情報と、前記データベースを使用するために必要な情報として例えば記憶部12ないしプログラム12Pに記憶されている情報を、記憶部12またはRAM13に書き込む。)
書き込み部511は、データベースから読み取った情報と、前記情報を使用するための情報と、を引数とし、前記情報をデータベース記憶部501ならびに設定記憶部504に記憶する。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、データベースから読み取った情報と、前記データベースを使用するために必要な情報と、を、記憶部12またはRAM13に記憶する。)
キー出力部515は、データ300におけるデータベースに存在するキーを返す。このとき、データベース記憶部501または変更記憶部502に記憶されているキーであって、かつ、削除記憶部513に記憶されていないものを、データ300におけるデータベースに存在するキーとみなして取り扱う。
図13は、書き込み部511を実行するソースコードの一例。左側の数字は行番号。
20〜37行目のsetルーチンは、図5における書き込み部511に相当する。setルーチンは、図11の62行目によって呼び出される。
16行目の変数befは、図5のデータベース記憶部501に相当する。
17〜18行目の変数は、図5の設定記憶部504に相当する。
データベースがフラットファイルデータベースである場合を例に説明する。
setルーチンの第1引数HStextは、データベース302Aである文字列であって、第2引数以降は設定部303Aに定義された値が代入されている。setルーチンは、引数をデータベース記憶部501および設定記憶部504に格納する。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、データベースから取得された第1の値と、前記データベースを使用するために必要な第2の値を受け付けて、前記第1の値および前記第2の値を、記憶部12またはRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、データベースから取得された第1の値と、前記データベースを使用するために必要な第2の値を受け付けて、前記第1の値および前記第2の値を、記憶部12またはRAM13に記憶する。)
図14は、変更記憶部502の記憶の仕組みの一例を示す図。
データベースは、「1というキーの、氏名というカラムの、フィールドをギコとせよ」のように、キー・カラム・フィールドの組み合わせによってデータを扱っている。そのため、変更記憶部502は、カラム・フィールドを組み合わせた第1の連想配列と、キー・第1の文字列を組み合わせた第2の連想配列を作成する。ただし、前記「第1の文字列」とは、前記第1の連想配列を一定のルールに従って文字列に変換したものである。これは、連想配列をキーとする連想配列は、記憶内容が消失する場合があるため、文字列に変換するものである。
(変形例:前記第2の連想配列を、前記第1の連想配列とは異なるルールに従って文字列に変換(第2の文字列)し、変更記憶部502に、前記第2の文字列を記憶する。)
(変形例:前記第2の連想配列を、前記第1の連想配列とは異なるルールに従って文字列に変換(第2の文字列)し、変更記憶部502に、前記第2の文字列を記憶する。)
図15は、図14を説明する部分における、第1の連想配列と第1の文字列を変換する処理を表すフローチャート。
図15に表す処理は、例えばルーチンによって処理され、第1引数に、連想配列から文字列に変換するか文字列から連想配列かを指定し、第2引数に連想配列(値渡し)、第3引数に文字列(値渡し)を設け、前記ルーチンは。処理に成功した場合はTRUE、失敗した場合はFALSEを返す。
この場合の処理は次の通り。
第1引数が、連想配列から文字列に変換する旨を指定した(例えば、S1501:TRUE)場合は、第2引数に代入された連想配列から文字列に変換する処理(S1503)を実行し、変換後の文字列を第3引数に代入し、前記ルーチンはTRUEを返す。
第1引数が、文字列から連想配列に変換する旨を指定した(例えば、S1501:FALSE)場合が、第3引数に代入された文字列から連想配列に変換する処理(S1502)を実行し、変換後の連想配列を第2引数に代入し、前記ルーチンはTRUEを返す。
図16は、図15にて説明した処理において、文字列から連想配列に変換する(S1502)処理を表すフローチャート。
前記処理にて変換する前の文字列を「変換前文字列」、変換後の連想配列「変換後連想配列」と表記する。
ステップS1601では、変換前文字列が0文字または1文字である場合と、それ以外の場合で処理を分岐する。ただし、変換前文字列がNULLである場合は、変換前文字列を0文字として扱う。
ステップS1602-Aは、ステップS1601にて変換前文字列が0文字の場合に実行される。
変換後配列をNULLとして、処理を終了する。
ステップS1602-Bは、ステップS1601にて変換前文字列が1文字の場合に実行される。
変換後配列を、キーと値の組み合わせが0個である配列として、処理を終了する。
ステップS1603は、変換前文字列の所定条件を満たす(例えば末尾1文字であるとか、)を区切り文字として、前記文字ではない文字列を、前記区切り文字を境に区切った1個以上の文字列に作成するステップ。
例えば、「氏名;ギコ;AA;(,,゜Д゜);」という文字列は、「氏名」「ギコ」「AA」「(゜Д゜)」という文字列が作成され、順序の概念を持ち、前述の順序である。
このとき、配列の要素0番に「氏名」、要素1番に「ギコ」、要素2番に「AA」、要素3番に「(゜Д゜)」が格納された配列を作成する形態であってもよい。
ステップS1604では、ステップS1603によって作成された1個以上の文字の、最初を0番目とした偶数番目をキー、前記偶数+1番目を値とした連想配列を作成する。0≦nとし、n番目をキー、n+1番目を値とする連想配列である。
例えば、「氏名」「ギコ」「AA」「(゜Д゜)」という文字列からは、「氏名」をキーとして「ギコ」、「AA」をキーとして「(゜Д゜)」を返す連想配列が作成される。
情報処理装置1のCPU11は、プログラム12Pに基づいて、指定された文字列に基づいて別の文字列を作成し、前記文字列を用いて連想配列を作成し、前記連想配列を記憶部12またはRAM13に記憶する。
図17は、図15にて説明した処理において、連想配列から文字列に変換する(S1503)処理を表すフローチャート。
前記処理にて変換する前の文字列を「変換前連想配列」、変換後の連想配列「変換後文字列」と表記する。
ステップS1701では、変換前連想配列がNULLまたはキーと値の組み合わせの個数が0個である場合と、それ以外の場合で処理を分岐する。
ステップS1702-Aは、ステップS1701にて変換前連想配列がNULLの場合に実行される。
変換後文字列を空文字列として、処理を終了する。
ステップS1702-Bは、ステップS1701にて変換前連想配列の、キーと値の組み合わせが0個である場合に実行される。
変換後文字列を、1文字の文字列として、処理を終了する。
ステップS1703は、変換前連想配列のキーと、前記キーに対応する値である文字列を取得する。
例えば、「氏名」をキーとして「ギコ」、「AA」をキーとして「(゜Д゜)」を返す連想配列が変換前連想配列である場合は、「氏名」「AA」という文字列と、「ギコ」「(゜Д゜)」という文字列が作成される。順序の概念を持ち、前述の順序である。
このとき、2個の配列を作成し、1個目の配列の0番目に「氏名」、1番目に「AA」を、2個目の配列の0個目に「ギコ」、1個目に「(゜Д゜)」が格納された配列を作成する形態であってもよい。
ステップS1704では、ステップS1703によって作成された文字列から、1個の文字列を作成する。具体的には、ステップS1703にて作成された文字列に存在しない文字(例えば、上記の例であれば「;」)を区切り文字とし、ステップS1703にて、連想配列のキーから作成された文字列と、連想配列の値から作成された文字列を交互に並べ、それらの文字列を前記区切り文字にて連結し、定められた位置(例えば末尾)に、前記区切り文字を連結する。
このとき、ステップS1703にて例示された場合を例にすると、作成される文字列は「氏名;ギコ;AA; (゜Д゜);」となる。
図18は、変更書き込み部512を実行する処理を説明する図。
表1801は、変更すべき内容として変更記憶部502に記憶されている内容の例。
変更(新規登録を含む)すべき対象のカラムとフィールドの組み合わせと、キーを関連付けてある。表1801は、1というキーを持つレコードの、氏名というカラムのフィールドをギコ、分類というカラムのフィールドを猫とすること、2というキーを持つフィールドの、氏名というカラムをモナー、漢字表記というカラムのフィールドを茂名とすることを表す。
表1802は、変更記憶部502に実際に記憶されている内容の例。カラム・フィールドの組み合わせを第1の連想配列とし、キーと前記第1の連想配列の組み合わせを変更記憶部502に記憶してもよいが、その場合、前記第1の配列が消えることがある。そのため、ここでは、前記第1の配列を文字列に変換し(第1の文字列)、キーと前記第1の文字列の組み合わせとして、変換記憶部502に記憶させる場合を例に説明する。
以下、変更記憶部502に新しい変更(新規登録を含む)する場合の説明として
・変更記憶部502に存在しないキーを追加する場合(パターンA)
・変更記憶部502に存在するキーに対応する記憶内容に存在しないカラムを追加する場合(パターンB)
・変更記憶部502に存在するキーに対応する記憶内容に存在するカラムのフィールドを変更する場合(パターンC)
を挙げ、それぞれについて説明する。図18の例でいうと、パターンAは、例えば4をキーとするレコードを追加すること、パターンBは、例えば1をキーとするレコードに「漢字表記」というカラムを追加すること、パターンCは、例えば1をキーとするレコードの「分類」というカラムを「キャット」に変換すること、などが該当する。
・変更記憶部502に存在しないキーを追加する場合(パターンA)
・変更記憶部502に存在するキーに対応する記憶内容に存在しないカラムを追加する場合(パターンB)
・変更記憶部502に存在するキーに対応する記憶内容に存在するカラムのフィールドを変更する場合(パターンC)
を挙げ、それぞれについて説明する。図18の例でいうと、パターンAは、例えば4をキーとするレコードを追加すること、パターンBは、例えば1をキーとするレコードに「漢字表記」というカラムを追加すること、パターンCは、例えば1をキーとするレコードの「分類」というカラムを「キャット」に変換すること、などが該当する。
ステップS1802では、変更記憶部502に記憶された文字列を取得する。
パターンAでは、前記文字列は取得されない。
パターンB・Cでは、変更記憶部502に記憶された文字列を取得する(文字列S1803-B、文字列S1803-C)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、記憶部12またはRAM13に記憶された情報に、指定されたキーに該当する情報が存在する場合、前記情報を読み取って、例えばRAM13に格納する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、記憶部12またはRAM13に記憶された情報に、指定されたキーに該当する情報が存在する場合、前記情報を読み取って、例えばRAM13に格納する。)
ステップS1803では、ステップS1802にて取得した文字列を連想配列に変換する。ただし、パターンAの場合は、前記連想配列を新しく作成する。このとき、前記連想配列は、キーと値の組み合わせが0個記憶されている。このとき、文字列を連想配列に変換する手順は、図16を説明する部分において説明した通りである。表1804-Aは、パターンAにおける連想配列(キーと値の組み合わせが0個)を表す表である。表1804-BはパターンB、表1804-CはパターンCにおいて文字列から変換された連想配列を表す表である。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列を連想配列に変換し、前記連想配列を、例えばRAM13に記憶させる。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列を連想配列に変換し、前記連想配列を、例えばRAM13に記憶させる。)
ステップS1804では、変更記憶部502に追加したい内容を、ステップS1803によって作成された連想配列に追加する。
パターンCの一例として、1をキーとするレコードの「分類」というカラムを「キャット」に変更する場合を例に説明する。ステップS1803によって作成された連想配列のキーである「分類」に対応する値は「キャット」に変更される。(表1805−C)
パターンBの一例として、1をキーとするレコードの「漢字表記」というカラムに「擬古」を追加する場合を例に説明する。ステップS1803によって作成された連想配列に、キー「漢字表記」、値「擬古」というキーと値の組み合わせを追加する。(表1805−B)
パターンAの一例として、4をキーとするレコードの「氏名」というカラムに「ぃよぅ」を追加する場合を例に説明する。ステップS1803によって作成された連想配列に、キー「氏名」、値「ぃょぅ」というキーと値の組み合わせを追加する。(表1805−A)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された連想配列の内容を変更し、変更後の連想配列は、例えばRAM13に記憶される。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された連想配列の内容を変更し、変更後の連想配列は、例えばRAM13に記憶される。)
ステップS1805では、ステップS1804によって編集された連想配列を文字列に変換する。このとき、文字列を連想配列に変換する手順は、図17を説明する部分において説明した通りである。文字列1806-Aは、パターンAにおける前記変換後の文字列である。文字列1806-Bは、パターンBにおける前記変換後の文字列である。文字列1806-Cは、パターンCにおける前記変換後の文字列である。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された連想配列を文字列に変換し、前記文字列を例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された連想配列を文字列に変換し、前記文字列を例えばRAM13に記憶する。)
ステップS1806では、変更後の文字列を、変更記憶部502に記憶されている連想配列の値として記憶する。表1807−Aは、パターンAにおいて、変更記憶部502の記憶内容を変更したものである。表1807−Bは、パターンBにおいて変更記憶部502の記憶内容を変更したものである。表1807−Cは、パターンCにおいて変更記憶部502の記憶内容を変更したものである。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列に基づき、変更記憶部502として記憶部12またはRAM13に記憶されている内容を変更する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列に基づき、変更記憶部502として記憶部12またはRAM13に記憶されている内容を変更する。)
図19は、削除書き込み部513を実行する処理を説明する図。
処理部1901は、削除書き込み部513の一例である。処理部1901は、例えば削除対象であるキーの指定を受け付けるルーチンであって、前記ルーチンは、指定内容に基づいて、記憶部1902の内容を更新する。例えば、記憶部1902に存在しないキーが指定されたとき、処理部1901によって、記憶部1902に、指定されたキーが追加される。
記憶部1902は、削除記憶部502の一例である。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、削除すべきキーを記憶部12またはRAM13に記憶させ、前記記憶内容を変更する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、削除すべきキーを記憶部12またはRAM13に記憶させ、前記記憶内容を変更する。)
図24は、フィールド取得部514を実行する処理を説明する図。
データベースは、「Aというキーの、Bというカラムのフィールドに、Cという値が格納されている」という形で情報が格納されている。ここでは、フィールド取得部514が、キーおよびカラムの指定を受け付けて、前記指定されたキーおよびカラムに該当する情報を返すものとして説明する。
削除判断ステップS2401は、削除記憶部503に、指定されたキーが記憶されているかを確認する。指定されたキーが記憶されている場合(ステップS3401:YES)は、該当するフィールドが存在しないものとして(処理2401)、処理を終了する。
変更読み取り2402は、変更記憶部502に、指定されたキーおよびカラムに該当する情報が記憶されているか確認する。その手順は、S1802からS1803にかけての処理と同様である。
変更読み取り2402が実行する処理の手順を、図25を参照しながら説明する。
図25は、変更読み取り2402を実行する処理を説明する図。
ここでは、「1」というキーにおける「氏名」いうカラムのフィールドに存在するデータが何であるかを求める場合を例に説明する。
表2501は、変更すべき内容として変更記憶部502に記憶されている内容の例。
変更(新規登録を含む)すべき対象のカラムとフィールドの組み合わせと、キーを関連付けてある。表1801は、1というキーを持つレコードの、氏名というカラムのフィールドをギコ、分類というカラムのフィールドを猫とすること、2というキーを持つフィールドの、氏名というカラムをモナー、漢字表記というカラムのフィールドを茂名とすることを表す。
表2502は、変更記憶部502に実際に記憶されている内容の例。カラム・フィールドの組み合わせを第1の連想配列とし、キーと前記第1の連想配列の組み合わせを変更記憶部502に記憶してもよいが、その場合、前記第1の配列が消えることがある。そのため、ここでは、前記第1の配列を文字列に変換し(第1の文字列)、キーと前記第1の文字列の組み合わせとして、変換記憶部502に記憶させてある場合を例に説明する。
ステップS2502では、変更記憶部502に記憶された文字列を取得する。
指定されたキーが、変更記憶部502に存在しない場合は、変更読み取り2402を終了し、データベース読み取り2403に移行する。
指定されたキーが、変更記憶部502に存在する場合、変更記憶部502に、前記キーに対応する文字列として記憶された文字列を取得する。(文字列2503−B)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、記憶部12またはRAM13に記憶された情報に、指定されたキーに該当する情報が存在する場合、前記情報を読み取って、例えばRAM13に格納する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、記憶部12またはRAM13に記憶された情報に、指定されたキーに該当する情報が存在する場合、前記情報を読み取って、例えばRAM13に格納する。)
図25では、キーが「1」である場合を例に説明している。
ステップS2503では、ステップS2502にて取得した文字列を連想配列に変換する。のとき、文字列を連想配列に変換する手順は、図16を説明する部分において説明した通りである。表2504-Bは文字列から変換された連想配列を表す表である。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列を連想配列に変換し、前記連想配列を、例えばRAM13に記憶させる。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列を連想配列に変換し、前記連想配列を、例えばRAM13に記憶させる。)
ステップS2503によって作成された連想配列のキーに、指定されたカラムと同じキーが存在する場合(図25の例では、指定されたカラムが「氏名」または「分類」である場合が該当する)は、前記キーに対応する値を取得し、フィールド取得部514を終了する。
ステップS2503によって作成された連想配列のキーに、指定されたカラムと同じキーが存在しない場合(図25の例では、指定されたカラムが「氏名」または「分類」以外である場合が該当する)は。フィールド読み取り2403に移行する。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列を連想配列に変換し、前記連想配列を、例えばRAM13に記憶させる。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列を連想配列に変換し、前記連想配列を、例えばRAM13に記憶させる。)
図25では、キーが「1」であり、カラムが「氏名」である場合は、変更読み取り2402は、「ギコ」という値を返す。
図26は、フィールド読み取り2403を実行する処理を説明する図。
ここでは、データベース記憶部501に記憶されているデータベースは、フラットファイルデータベースにおける文字列であって、行の区切りは改行、列の区切りはカンマ、左端の列を0列目と数え、キー列は0列目、上端の行を0行目と数え、タイトル行は0行目、データ開始行は1行目
キー列を除く列において、どのカラムが何を意味するかを定義する行を「タイトル行」と呼称する。レコードが存在する行を「データ行」、データ行の上端である行を「データ開始行」と呼称する。データ開始行は、データ行である。レコードが存在しない表は、タイトル行は存在してもよいが、データ行は存在しない。
文字列2601は、データベース記憶部501に記憶されている情報の一例である。
ステップS2601は、文字列2601から、タイトル行(行2602K)およびキー列(列2602T)を抜き出す。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に格納されているデータベースから、キー列、タイトル行を抜き出して、例えばRAM13に格納する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に格納されているデータベースから、キー列、タイトル行を抜き出して、例えばRAM13に格納する。)
ステップS2602は、行2602K、列2602Tを参照し、文字列2601における、対象となるフィールドが存在する位置を特定する。ここでは、キー「3」、カラム「AA」であるフィールドを特定するものとして説明する。
「対象のフィールド」とは、データベースにおける、読み込む対象となるフィールドを意味する。
行番号2602Kは、キー「3」が存在する行の番号である。キー列の数値と行番号が同じ数値であるのは偶然であり、必ずしも同じ数値になるとは限らない。行番号2602Kにおける「3」とは、上端の行を0行目として、3行目に、対象のフィールドが存在することを意味している。
列番号2602Tは、カラム「AA」が存在する列の番号である。左端の列を0列目として、2列目に、対象のフィールドが存在することを意味している。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に格納されている、ステップS2601によって作成された情報から、読み込む対象であるフィールドが存在する行ならびに列の位置を特定し、その情報を、例えばRAM13に書き込む。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に格納されている、ステップS2601によって作成された情報から、読み込む対象であるフィールドが存在する行ならびに列の位置を特定し、その情報を、例えばRAM13に書き込む。)
ステップS2603は、対象のフィールドが存在する行を、文字列2601から抜き出す。行2603は、ステップS2603によって作成された情報である。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2602によって作成された、読み込む対象であるフィールドが存在する行を表す情報をもとに、例えばRAM13に格納されている、文字列2601をもとに、前記「読み込む対象であるフィールドが存在する行」に存在する情報を読み取って、例えばRAM13に格納する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2602によって作成された、読み込む対象であるフィールドが存在する行を表す情報をもとに、例えばRAM13に格納されている、文字列2601をもとに、前記「読み込む対象であるフィールドが存在する行」に存在する情報を読み取って、例えばRAM13に格納する。)
ステップS2604は、対象のフィールドが存在する列に存在する情報を、ステップS2603によって作成された情報から読み取る。図26の例では、対象のフィールドは2列目であるため、2列目に存在する情報である、(゜ω゜)が、対象のフィールドに存在する情報である(情報2604)。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2603によって作成された情報と、ステップS2602によって作成された列番号2602T(これらは、例えばRAM13に格納されている)に基づいて、対象のフィールドの位置ならびに対象のフィールドに存在する情報を特定し、前記情報を、例えばRAM13に格納する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2603によって作成された情報と、ステップS2602によって作成された列番号2602T(これらは、例えばRAM13に格納されている)に基づいて、対象のフィールドの位置ならびに対象のフィールドに存在する情報を特定し、前記情報を、例えばRAM13に格納する。)
図24、図25、図26を参照しながら説明した処理は、ルーチンとすることができる。該ルーチンは、対象となるフィールドのキー、カラムを指定する引数と、処理に失敗した際に返す値を指定する引数(引数err)を持ち、処理に失敗した場合は、前記引数errを返す構成とすることができる。
図26は、特定の文字列を行、特定の文字列をカラムの区切りとして用いている。そのため、例えばカンマをカラムの区切りとして用いた時の(,,゜Д゜)という文字列など、フィールドにそのまま書き込むことは不適切である場合がある。事例は前述に限られないが、フィールドに含めると誤作動を起こす恐れがある文字は、特定の処理により、他の文字列に変換しておき、読み込むときに変換前の状態にもどすことが考えられる。
前記「特定の処理」は、図7を説明する部分において述べる通りである。
図27は、フィールド読み取り2403を実行する処理の説明を補足する図である。
文字列2701の意義は、文字列2601と同様である。文字列2704の意義は、文字列2604と同様である。
文字列2701から文字列2704に至る処理は、図26を説明する際に説明したものと同様である。
文字列2701から文字列2811に至る処理は、図7を説明する際に説明したものと同様である。
この処理をする場合、好ましくは、前記「文字列2701から文字列2811に至る処理」をする際に必要な情報、具体的には、アウト文字、アウト区切り文字が何かを定義する情報(アウト文字、アウト区切り文字の定義は、実施の形態5を参照)を、書き込み部511を介して、設定記憶部504に記憶させる構成とすることができる。
図28は、フィールド取得部514を実行する処理の説明を補足する図である。
この説明は、データベースに文字列として記憶されていた情報を、数値に変換することに関する。
処理2801は、図24にて説明した処理と同様であり、文字列2802は、処理2801によって取得された文字列である。
文字列2802から文字列2803に至る処理は、実施の形態4にて説明する通りの処理である。
図9は、フィールド取得部514を実行する処理の説明を補足する図である。
処理901は、図24にて説明した処理と同様であり、文字列902は、処理901によって取得された文字列である。ここでは、1個のフィールドに複数の値が格納されている場合に、そのうち1個の値を取り出す処理について説明する。この説明は、前記複数の値は、最小値と最大値であって、「_」という記号によって区切られ、前記記号の左側が最小値、右側が最大値であるばあを例に説明する。
文字列902から文字列903に至る処理では、最小値または最大値のうち、いずれかを取り出す(文字列903)。図9では、複数の文字列を抜き出しているかのように示しているが、好ましくは、1個の文字列を抜き出す形態である。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、処理901によって取得された文字列の、特定の位置に存在する文字列を抜き出して、例えばRAM13に記憶する)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、処理901によって取得された文字列の、特定の位置に存在する文字列を抜き出して、例えばRAM13に記憶する)
文字列903から文字列904に至る処理は、実施の形態4にて説明した処理をする。
図29は、データベース書き込み部516を実行する処理を説明する図である。
図29では、特に断りがない限り、データベース記憶部501を参照しない。なぜならば、ほかの情報処理装置が情報2901に対して何らかの編集を行っていた場合、仮に、データベース記憶部501を参照して本処理をすれば、前記編集によってなされた変更が失われることがあるためである。
データベース2900は、図3におけるデータベース302Aに相当する。
情報2901は、データベース2900に記憶されている情報である。
ステップS2901は、情報2901を読み込むステップである。文字列2921は、ステップS2921によって取得された文字列である。
ここでは、情報2901は、フラットファイルデータベースにおける文字列であるとして説明する。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えば通信部16、通信網Nを介してつながっている他の情報処理装置ないし記憶装置に存在するデータベースの情報を読み取り、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えば通信部16、通信網Nを介してつながっている他の情報処理装置ないし記憶装置に存在するデータベースの情報を読み取り、例えばRAM13に記憶する。)
ステップS2922は、文字列2921、設定記憶部2913をもとに、文字列2921を2次元のデータ(例えば、ジャグ配列)に変換する。具体的には、文字列2921に存在する、行の境目を表す文字(設定記憶部2913に記憶されている)を境に一次元配列に変換し、該一次元配列の各要素に存在する、カラムの境目を表す文字を境に、配列に変換する。このとき、好ましくは、一次元目の要素数(行数と表記することがある)は、設定記憶部2913に記憶されたデータ開始行の1行上の行が存在する行数とすることができる。(情報2922)
設定記憶部2913は、図5における設定記憶部504に相当する。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2901によって作成され例えばRAM13に記憶された文字列2921と、設定記憶部2913として例えばRAM13に記憶された情報に基づいて、例えばジャグ配列を作成し、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2901によって作成され例えばRAM13に記憶された文字列2921と、設定記憶部2913として例えばRAM13に記憶された情報に基づいて、例えばジャグ配列を作成し、例えばRAM13に記憶する。)
設定記憶部2913は、図5における設定記憶部504に相当する。
ステップS2922について、フラットファイルデータベースの文字列からジャグ配列に変換するため「特定の文字列を特別な意味(例えば、行の境目、カラムの境目)として使用する場合、前記特別な意味を持たせずに前記特定の文字列を使用した場合(例えば、フラットファイルデータベースのフィールドに、行の境目やカラムの境目を意味する文字と同じ文字を含めた)、予期しない動作をすることがある。例えば、カンマによってカラムを区切るフラットファイルデータベースでは、(,゜Д゜)など、カンマを含む文字列をフィールドに書き込むと、カラムの境界が正しく認識されなくなるおそれがある。」という事象を防ぐため、フィールドの文字列は、実施の形態5にて説明する処理が、文字列2921に施されている場合がある(例えば、(,゜Д゜)という文字列は、フラットファイルデータベースでは、(=2c=゜Д゜)のように表記される)。その場合、その文字列は、実施の形態5にて説明する手順によって変換され、情報2922は、変換後の文字列が格納される。
ステップS2923は、情報2922のタイトル行に、変更記憶部2912に記憶されたカラムを追加する。ここでは、設定記憶部2913に、タイトル行が0行目と記憶され、変更記憶部2912に「1」「2」「4」というキーが記憶され、それぞれのキーにおけるカラムに「氏名」「分類」、「氏名」「漢字表記」、「氏名」が書き込まれている場合を例に説明する。変更記憶部2912を参照されたい。
ステップS2923では、情報2922のタイトル行に存在し、変更記憶部2912のカラムに存在しないものを、情報2922のタイトル行に追加する。
情報2922のタイトル行は「氏名」「AA」があり、「分類」「漢字表記」が(変更記憶部2912にあるが)ないため、ステップS2923では、情報2922のタイトル行に「分類」「漢字表記」を追加する(情報2923)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2922によって作成され例えばRAM13に記憶された情報と、変更記憶部2912として例えばRAM13に記憶された情報に基づいて、例えばジャグ配列を作成し、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2922によって作成され例えばRAM13に記憶された情報と、変更記憶部2912として例えばRAM13に記憶された情報に基づいて、例えばジャグ配列を作成し、例えばRAM13に記憶する。)
変更記憶部2912は、図5における変更記憶部502に相当する。
ステップS2923は、上記のほかに、情報2922のキー列に、変更記憶部2912に記憶されたキーを追加する。情報2922のキー列は「1」「2」「3」があり、「4」が(変更記憶部2912にあるが)ないため、ステップS2923では、情報2922のキー列に「4」を追加する(上場2923)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2922によって作成され例えばRAM13に記憶された情報と、変更記憶部2912として例えばRAM13に記憶された情報に基づいて、例えばジャグ配列を作成し、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2922によって作成され例えばRAM13に記憶された情報と、変更記憶部2912として例えばRAM13に記憶された情報に基づいて、例えばジャグ配列を作成し、例えばRAM13に記憶する。)
変更記憶部2912は、図5における変更記憶部502に相当する。
ステップS2924は、変更記憶部2912をもとに、情報2923のフィールドの内容を変更した情報(情報2924)を作成する。具体的には、変更記憶部2912によって指定されたキー及びカラムである位置に、指定された情報を書き込む。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2923によって作成され例えばRAM13に記憶された情報と、変更記憶部2912として例えばRAM13に記憶された情報に基づいて、例えばジャグ配列を作成し、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2923によって作成され例えばRAM13に記憶された情報と、変更記憶部2912として例えばRAM13に記憶された情報に基づいて、例えばジャグ配列を作成し、例えばRAM13に記憶する。)
ステップS2925は、削除記憶部2911に記憶されたキーに相当するカラムを、情報2924から取り除く。
削除記憶部は、0個以上(複数でもよい)の情報を記憶することができるが、「3」という情報が記憶されている場合を例に説明する。情報2924から、3をキーとするレコードが格納されている行が取り除かれる(情報2925)。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2924によって作成され例えばRAM13に記憶された情報と、削除記憶部2911として例えばRAM13に記憶された情報に基づいて、例えばジャグ配列を作成し、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2924によって作成され例えばRAM13に記憶された情報と、削除記憶部2911として例えばRAM13に記憶された情報に基づいて、例えばジャグ配列を作成し、例えばRAM13に記憶する。)
削除記憶部2911は、図5における削除記憶部503に相当する。
ステップS2926は、情報2925、設定記憶部2913に基づいて、文字列2926を作成する。具体的には、情報2925を、設定記憶部2913に記憶された文字列を行・カラムの境目とする文字列2926を作成する。ここでは、ファイルデータベースとして使用される文字列に変換する場合を例に説明する。
変換後のデータベースのフィールドに特定の文字が存在する場合、正しく認識されない場合がある。例えば、フィールドに行やカラムの境目を表す文字と同じ文字が含まれている場合がこれに該当する。また、その部分を変換する処理をした場合、その処理をした部分と、していない部分の境目を表す文字と同じ文字はが含まれている場合、正しく認識されない場合がある。その場合、実施の形態5に述べた方法によって、フィールド内の文字列を変換する。
<実施の形態4>
図6は、実施の形態4に係る、文字列と数値を変換する処理を説明する図。
図6は、実施の形態4に係る、文字列と数値を変換する処理を説明する図。
数値を文字列として表現する際、小数点を必ずしもピリオドを用いて表記するとは限らない。カンマを桁区切り、ピリオドを小数点として用いる場合もあれば、カンマを小数点、ピリオドを桁区切りとして用いる場合もある。これだけとは限らない。
本実施の形態では、小数点、桁区切りの少なくともいずれかに用いられる文字を、下記の3種類に分類し、それぞれの文字の数や文字列中の位置をもとに、どれが小数点でどれが桁区切りなのかを判断し、数値に変換するプログラムを提供する。
A文字…小数点として用いられることがある文字。説明では、便宜上、|、カンマ、ピリオドをA文字として扱う。
B文字…桁区切りとして用いられることがある文字。例えば、半角スペース、カンマ、ピリオド。
AB文字…A文字でもB文字でもある文字。
(変形例:ステップS611にて数えた、「AB文字ではないA文字」が1個であるときのみステップS612-1を実行する。)(変形例:ステップS611にて数えた、「AB文字ではないA文字」が2個以上であるときのみステップS612-2を実行する。)(変形例:ステップS611にて数えた、「AB文字ではないA文字」が0個であるときのみステップS612-0を実行する。)
A文字…小数点として用いられることがある文字。説明では、便宜上、|、カンマ、ピリオドをA文字として扱う。
B文字…桁区切りとして用いられることがある文字。例えば、半角スペース、カンマ、ピリオド。
AB文字…A文字でもB文字でもある文字。
(変形例:ステップS611にて数えた、「AB文字ではないA文字」が1個であるときのみステップS612-1を実行する。)(変形例:ステップS611にて数えた、「AB文字ではないA文字」が2個以上であるときのみステップS612-2を実行する。)(変形例:ステップS611にて数えた、「AB文字ではないA文字」が0個であるときのみステップS612-0を実行する。)
なお、A文字、AB文字、B文字のいずれでもない文字は、小数点にも桁区切りにも用いられない文字である。
例えば、民、法、第、6、条、を、粉、砕、し、よ、う、等であるが、これに限られない。
取得601Aは、本実施の形態における処理をする処理部の外部から、A文字、B文字が何であるかを表す情報(例えば、設定ファイルから読み込んだ情報をもとに、A文字ないしB文字を書き込んだ配列またはリスト)を前記処理部が取得する。
作成601Bは、取得601Aにおいて1個以上のA文字ないしB文字を表す情報を受け取らなかったとき(例えば、要素数0の配列またはNULLを受け取った)、A文字を表す情報ないしB文字を表す情報を作成する。(例えば、A文字を表す情報に、|、カンマ、ピリオドを書き込む処理)(例えば、B文字を表す情報に、カンマ、ピリオド、半角スペースを書き込む処理。)
作成601Bは、取得601Aにおいて1個以上のA文字ないしB文字を表す情報を受け取ったとき、その情報をA文字ないしB文字に変換する。例えば、A文字ないしB文字を指定する情報として、「00FF」「U+00FF」のような16進数による数値を表す文字列であるなら、その文字コード(Unicode)を持つ文字に変換し、それができなければ(カンマ1個以上など、16進数による数値を表す文字列として扱うことができない文字列)、該文字列の所定の位置、例えば1文字めに存在する文字が、A文字ないしB文字に指定されたものとみなして取り扱う、といった形態が考えられる。
返却601Cは、取得601Aによって取得されたまたは作成601Bによって作成された情報を、本実施の形態における処理をする処理部の外部に提供する。(例えば、A文字ないしB文字を書き込んだ配列またはリストを提供し、前記提供された情報に基づいて、設定ファイルを作成ないし変更する)
取得601C、作成601B、返却601Cは、例えば、本実施の形態における処理をする処理部はルーチンであり、前記ルーチンは、A情報を授受する値渡しの引数と、B情報を授受する値渡しの引数を備える形態によって実現される。(情報処理装置1のCPU11は、プログラムに基づいて、A文字ないしB文字が何であるかを表す情報を作成または所定の部分(例えば記憶部12)から受け取り、前記情報を例えばRAM13に記憶する)
本実施の形態は、取得601A、作成601B、返却601Cを実施しない形態であってもよい。例えば、プログラム12Pにおいて、A文字ないしB文字を定義する形態であってもよい。
図6におけるS611〜S612-0などからなるフローチャートは、文字列と数値を変換する処理を説明するフローチャートである。
このフローチャートに基づく処理は、例えば上記の手段によって例えばRAM13に記憶されたA文字、B文字を定義する情報に基づいて実行される。
ステップS611は、数値に変換したい文字列中に存在する、「AB文字でないA文字の数」「AB文字」「AB文字でないB文字の数」を数え、その結果を記憶する。(情報処理装置1のCPU11は、プログラム12Pに基づいて、数値に変換したい文字列(例えばRAM13に記憶されている)に存在する、特定の条件を満たす文字の数を数え、その結果を例えばRAM13に記憶する)
1番処理S612-1は、数値に変換したい文字列、「A文字ではない文字を除いたAB文字」「B文字」を空文字列に置き換えて、A文字を小数点とみなして、数値に変換する。これに成功し、ステップS611にて数えた、前記「数値に変換したい文字列」に存在する「AB文字ではないA文字」が1個であるとき、S612-1以降を行わず、処理を終了する(図示しない)。上記以外のとき、S612-1に移る。
2番処理S612-2は、ステップS611にて数えた、数値に変換したい文字列中に「AB文字ではないA文字」が2個以上であるとき、前記文字列は数値に変換できない文字列であるとみなし、S612-0以降を行わず、処理を終了する(図示しない)。これ以外のとき、S612-0に移る。
0番処理S612-0は、数値に変換したい文字列中に存在する、「AB文字でないB文字」を空文字列に置き換える。その後、前記文字列中に存在するAB文字のうち、最も右にある文字列を小数点に置き換え、その他のAB文字を空文字列に置き換え、これを数値に変換する。(例えば、カンマ、ピリオドがAB文字であって、|がAB文字でないA文字、半角スペースがAB文字でないB文字である場合、「-12.345,67」という文字列は、(一番左を1個目として)左から4個目の位置にあるピリオドは空文字列、左から8個目の位置にあるカンマは小数点とみなし、これを数値に変換する。)
これに成功し、ステップS611にて数えた、前記「数値に変換したい文字列」に存在する「AB文字ではないA文字」が0個であるとき、前記「数値に変換したい文字列」を数値に変換し、処理を終了する(図示しない)。これ以外の場合、これ以降に出来る処理がないため、前記「数値に変換したい文字列」は、数値に変換できない文字列であるとみなし処理を終了する。(S612-2と同様である)
図20は、実施の形態4に係る0番処理の過程を表す図。
ここでは、|、カンマ、ピリオドがA文字で、カンマ。ピリオド、半角スペースがB文字である場合を例に説明する。
処理部2000−(S612-0)は、第0処理を実行する処理部である。この処理部は、図6におけるステップS612-0に相当する。
ステップS2001は、処理部2000の外部、具体的にはステップS611にてA文字、AB文字、B文字を数える対象となった、数値に変換する対象の文字列を複製する(文字列2001)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列を複製し、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列を複製し、例えばRAM13に記憶する。)
ステップS2002は、文字列2001における文字を1文字ずつ格納する。例えば、文字列と同数の要素数を持つ配列を作成し、該配列の0番目の要素に、文字列2001の(最初の文字を0番目とした)0番目の文字を格納し、以後、該配列のn番目の要素に、文字列2001の(最初の文字を0番目とした)n番目の文字を格納する(情報2002)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2001にて例えばRAM13に記憶された文字列の(最初を0文字目とした)n文字目の文字列を、例えば配列のn番目に格納し、これを例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2001にて例えばRAM13に記憶された文字列の(最初を0文字目とした)n文字目の文字列を、例えば配列のn番目に格納し、これを例えばRAM13に記憶する。)
ステップS2004は、情報2002に格納された文字列であって、「AB文字でないB文字」であるものを空文字列に置き換える(情報2004)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2002にて作成され、例えばRAM13に記憶されている情報に存在する、「AB文字でないB文字」を空文字列に置き換える。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2002にて作成され、例えばRAM13に記憶されている情報に存在する、「AB文字でないB文字」を空文字列に置き換える。)
ステップS2005は、情報2004に格納された文字列であって、AB文字であるものを空文字列に置き換え、最後に置き換えをした位置を記憶し、最後に置き換えをした位置に、小数点を書き込む。(例えば、-12.345.678,901という文字列は、最初の文字を0文字として、n文字目をn個目の要素に格納(ステップS2002)し、AB文字でないB文字を空文字列に置き換え(ステップS2004)るため、情報2004では、図21に示す通り格納されている。ステップS2005における処理を、図21を参照しながら説明する。
ステップS2006は、ステップS2005によって作成された情報を連結し、文字列に変換する。(例えば、ステップS2005によって作成された情報が、図6における情報2103に示す通りである配列なら、前記配列を、空文字列を区切り文字として連結することにより、-12345678.901という文字列を作成することができる。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2005によって作成された情報をもとに文字列を作成し、前記文字列を、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2005によって作成された情報をもとに文字列を作成し、前記文字列を、例えばRAM13に記憶する。)
ステップS2007では、ステップS611にて数えた「AB文字でないA文字の数」が0個であるか否かを判定し、0個以下である(ステップS2007:YES)場合は、ステップS2006によって作成された文字列を数値に変換し、0番処理を実行させた処理(ステップS611~ステップS612-0間の一連の処理)を終了する。
ステップS2007:NOの場合は、0番処理(ステップS612-0)を終了し、次の処理をする。
図21は、実施の形態4に係るステップS2005における一例。
情報2101は、図20における情報2004、情報2103は、図20における情報2005に相当する。
情報2101に存在するAB文字のうち、最も右に存在するAB文字の位置を記憶する
(記憶部2102B)。図21に記載されている記憶部2102Bの「11」とは、情報2101の最初の文字を0番目としたときに、最も右に存在するAB文字の位置が11番目であることを意味する)。
(記憶部2102B)。図21に記載されている記憶部2102Bの「11」とは、情報2101の最初の文字を0番目としたときに、最も右に存在するAB文字の位置が11番目であることを意味する)。
情報2101に存在するすべてのAB文字をいったん空文字列に置き換える(情報2102A)。その後、記憶部2102Bによって示される位置に、小数点を書き込む。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶されている、ステップS2004によって作成された情報に存在するAB文字のうち、最も右に存在するAB文字の位置を例えばRAM13に記憶し、前記ステップS2004によって作成された情報に存在するすべてのAB文字を空文字列に置き換える。その後、前記RAM13に記憶された情報が示す位置に、小数点を書き込む。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶されている、ステップS2004によって作成された情報に存在するAB文字のうち、最も右に存在するAB文字の位置を例えばRAM13に記憶し、前記ステップS2004によって作成された情報に存在するすべてのAB文字を空文字列に置き換える。その後、前記RAM13に記憶された情報が示す位置に、小数点を書き込む。)
小数点2102Cは、本プログラムを実行する情報処理装置にて、文字列を数値に変換する際に小数点とみなされる文字列である。前記小数点を特定する方法は、下記の通りである。
文字列に変換したときに小数点が出現する位置がわかっている数値を文字列に変換し、該文字列の小数点が出現するであろう位置に出現した文字列を、「本プログラムを実行する情報処理装置にて、文字列を数値に変換する際に小数点とみなされる文字列」であるとみなす。例えば、円周率(π)を文字列に変換すると、その文字列にて出現する最も左の「3」の1個右の位置に小数点が出現する(π≒3.14159265)ため、この位置に出現した文字列を、「本プログラムを実行する情報処理装置にて、文字列を数値に変換する際に小数点とみなされる文字列」とみなすことができる。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、文字列に変換したときに小数点が出現する位置がわかっている数値を文字列に変換し、該文字列において小数点が出現するであろう位置に存在する文字列を小数点として用いられる文字列であるとして、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、文字列に変換したときに小数点が出現する位置がわかっている数値を文字列に変換し、該文字列において小数点が出現するであろう位置に存在する文字列を小数点として用いられる文字列であるとして、例えばRAM13に記憶する。)
図22は、実施の形態4に係る1番処理を説明する図。
ここでは、|、カンマ。ピリオドがA文字、カンマ、ピリオド、半角スペースがB文字であるとして説明する。
処理部2200−(S612-1)は、第1処理を実行する処理部である。図6におけるステップS612−1に相当する。
ステップS2201は、処理部2000の外部、具体的にはステップS611にてA文字、AB文字、B文字を数える対象となった、数値に変換する対象の文字列を複製する(文字列2201)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列を複製し、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列を複製し、例えばRAM13に記憶する。)
ステップS2202は、文字列2201に存在するAB文字およびB文字を空文字列に置き換える。(文字列2202)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2201によって作成され例えばRAM13に記憶された文字列に存在するAB文字およびB文字を空文字列に置き換え、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2201によって作成され例えばRAM13に記憶された文字列に存在するAB文字およびB文字を空文字列に置き換え、例えばRAM13に記憶する。)
小数点2202Bは、本プログラムを実行する情報処理装置にて、文字列を数値に変換する際に小数点とみなされる文字列である。前記小数点を特定する方法は、下記の通りである。
文字列に変換したときに小数点が出現する位置がわかっている数値を文字列に変換し、該文字列の小数点が出現するであろう位置に出現した文字列を、「本プログラムを実行する情報処理装置にて、文字列を数値に変換する際に小数点とみなされる文字列」であるとみなす。例えば、円周率(π)を文字列に変換すると、その文字列にて出現する最も左の「3」の1個右の位置に小数点が出現する(π≒3.14159265)ため、この位置に出現した文字列を、「本プログラムを実行する情報処理装置にて、文字列を数値に変換する際に小数点とみなされる文字列」とみなすことができる。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、文字列に変換したときに小数点が出現する位置がわかっている数値を文字列に変換し、該文字列において小数点が出現するであろう位置に存在する文字列を小数点として用いられる文字列であるとして、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、文字列に変換したときに小数点が出現する位置がわかっている数値を文字列に変換し、該文字列において小数点が出現するであろう位置に存在する文字列を小数点として用いられる文字列であるとして、例えばRAM13に記憶する。)
ステップS2203は、文字列S2202に存在するA文字を小数点2203Bに置き換える。(文字列2203)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2202によって作成され例えばRAM13に記憶された文字列に存在するA文字を小数点2203Bに置き換え、例えばRAM13に記憶する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、ステップS2202によって作成され例えばRAM13に記憶された文字列に存在するA文字を小数点2203Bに置き換え、例えばRAM13に記憶する。)
ステップS2204は、ステップS611にて数えた「AB文字でないA文字の数」が1個であるか否かを判定し、1個である(ステップS2204:YES)場合は、ステップS2203によって作成された文字列を数値に変換し、1番処理を実行させた処理(ステップS611~ステップS612-0間の一連の処理)を終了する。
ステップS2007:NOの場合は、1番処理(ステップS612-1)を終了し、次の処理をする。
図23は、実施の形態4に係る2番処理を説明する図。
ステップS2301は、ステップS611にて数えた「AB文字でないA文字の数」が1個であるか否かを判定し、2個である(ステップS2301:YES)場合は、
数値に変換しようとしている文字列は、数値に変換できない文字列であるとみなし、1番処理を実行させた処理(ステップS611~ステップS612-0間の一連の処理)を終了する。
ステップS2007:NOの場合は、1番処理(ステップS612-1)を終了し、次の処理をする。
本実施の形態におけるルーチンについて説明する。
本実施の形態は、ルーチンによることができる。該ルーチンは、少なくとも、数値に変換したい文字列(文字列型)と、該文字列を数値に変換できなかったときに返す値(数値型)を引数とし、数値に変換できなかったときは、前記「該文字列を数値に変換できなかったときに返す値」を返すルーチンとすることができる。このルーチンが返す数値型の種類は、浮動小数点型、固定小数点型のいずれでもよい。
前記ルーチンは、1番処理、2番処理、0番処理をする部分にエラートラップを設置することにより、前記1番処理または前記2番処理または前記0番処理の途中でエラーが発生したときに、処理を中断し次の処理に移行する(0番処理では、数値に変換できなかったとして扱う)構成とすることができる。
<実施の形態5>
図7は、実施の形態5に係る、文字列中に存在してはならない文字列を、他の文字列に置き換える処理を説明する図。
図7は、実施の形態5に係る、文字列中に存在してはならない文字列を、他の文字列に置き換える処理を説明する図。
フラットファイルデータベースなど、特定の文字列を特別な意味(例えば、行の境目、カラムの境目)として使用する場合、前記特別な意味を持たせずに前記特定の文字列を使用した場合(例えば、フラットファイルデータベースのフィールドに、行の境目やカラムの境目を意味する文字と同じ文字を含めた)、予期しない動作をすることがある。例えば、カンマによってカラムを区切るフラットファイルデータベースでは、(,゜Д゜)など、カンマを含む文字列をフィールドに書き込むと、カラムの境界が正しく認識されなくなるおそれがある。
ここでは、文字列中に含めたくない文字を「アウト文字」と呼称し、アウト文字ではない文字を「セーフ文字」と呼称する。
アウト文字とセーフ文字が混在する文字列では、アウト文字に対してのみ、セーフ文字に置き換え、それ以外の部分は置き換えをしないことにする。その場合、前記置き換えをした部分と、しない部分を区切るための文字(または文字列)が必要になるが、前記区切るための文字を「アウト区切り文字」と呼称する。アウト区切り文字は、アウト文字とセーフ文字の境目に配置される文字であるため、それ以外のために文字列に存在するならば、予期しない動作をすることがある。よって、アウト区切り文字はアウト文字であるが、アウト文字とセーフ文字を区切るためならば、存在を許される。
本実施の形態では、情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列を変換し、変換後の文字列を、例えばRAM13に記憶する。
文字列701は、セーフ文字とアウト文字が混在する文字列の一例。
開括弧、カンマ、カンマ、半濁点、Д、半濁点、閉括弧、開括弧、半角等号、半濁点、ω、半濁点、閉括弧、改行、全角英数字1+1=2、改行、半角英数字1+1=2が連結された文字列である場合を例示している。
文字列701から文字列702を作成する処理を説明する。
ここでは、カンマ、改行がアウト文字であり、改行はOUT1に、改行以外のアウト文字は、該当するアウト文字のUnicode文字コードを16進数に変換した文字列(例えば、カンマは2c)に変換し、アウト区切り文字は半角等号(=)である場合を例に説明する。
ここでは、改行をOUT1に置き換える形態を例に説明しているが、改行ではない特定の文字列を、該特定の文字列とは異なる特定の文字列に置き換える処理をしてもよいし、改行の置き換え先の文字列がOUT1でなくてもよい。
文字列では、改行は\r、\r\nなど、複数の表現方法がある。そのため、改行を表す文字列を、いったん文字列701に存在しない文字(例えば、セミコロン)に置き換え、前記文字を、改行を表す特定の文字列に置き換える処理をする。例えば、文字列701には改行を表す文字として\rと\r\nが存在し、後者に統一する場合、\rおよび\r\nを、いったん文字列701に存在しない文字(例えばセミコロン)に置き換え、前記文字を、\r\nに置き換える。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列に存在する改行を意味する文字列を、前記文字列中に存在しない文字に置き換えて、前記文字を、怪魚を表す特定の文字列に置き換える。これにより作成された文字列は、例えばRAM13に記憶される。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、例えばRAM13に記憶された文字列に存在する改行を意味する文字列を、前記文字列中に存在しない文字に置き換えて、前記文字を、怪魚を表す特定の文字列に置き換える。これにより作成された文字列は、例えばRAM13に記憶される。)
次に、アウト文字を所定の文字列に置き換える処理をし、前記処理をした部分とそれ以外の部分の境目に、アウト区切り文字を設置する。例えば、カンマがアウト文字ならば、カンマを、=2c=という文字列に置き換える。ただし、=はアウト区切り文字、2cとはカンマを表すUnocode文字コードを16進数にて表現した文字列である。
文字列702は、本実施の形態に係る処理の途中にある状態の文字列の一例。
文字列702から文字列703を作成する処理を説明する。
文字列702は、偶数個のアウト区切り文字が存在する。また、アウト区切り文字が2連続することがある。この場合、アウト区切り文字、空文字列、アウト区切り文字が連続していると解することができる。アウト区切り文字が2連続する部分(アウト区切り文字2個)は、第2アウト区切り文字1個に置き換えることができる。これにより、本実施形態における変換後の文字数を減らすことができる。図7では、半角マイナス記号を第2アウト区切り文字として用いている。
この処理は必須ではない。
文字列703は、本実施の形態に係る処理をした後の文字列。
文字列703から文字列702を作成する処理を説明する。
左から数えて奇数個目のアウト区切り文字(最初のアウト区切り文字を1個目と数える)から、その次のアウト区切り文字の間に存在する、第2アウト区切り文字1個を、アウト区切り文字2個に置き換える。図26では、半角マイナス記号を第2アウト区切り文字として用い、半角等号をアウト区切り文字として扱っている。
文字列702から文字列701を作成する処理を説明する。
左から数えて奇数個目のアウト区切り文字(最初のアウト区切り文字を1個目と数える)から、その次のアウト区切り文字の間は、本実施形態における処理によって文字列が置き換えられた部分である。その部分に存在する文字列を、OUT1なら改行に置き換え、それ以外の文字列なら、その文字列を16進数の数値であるとみなし、その数値をUnicode文字コードとする文字に置き換える。(例えば、2cはカンマに置き換える。)
<実施の形態6>
本実施の形態は、データベースに存在する情報を、情報処理装置が記憶して、前記記憶内容に基づいて処理を行うこと、
前記情報処理装置記憶装置が記憶した内容に基づいてデータベースの内容を変更する事に関する。
本実施の形態は、データベースに存在する情報を、情報処理装置が記憶して、前記記憶内容に基づいて処理を行うこと、
前記情報処理装置記憶装置が記憶した内容に基づいてデータベースの内容を変更する事に関する。
プログラム集合体800は、例えばクラスである。ここでは、情報処理装置1にプログラム集合体800が存在するものとして説明する。
データベース800は、情報処理装置1の内部に存在してもよいし、通信部16を介して接続されている他の情報処理装置ないし記憶装置に記憶されていてもよい。前記データベース800の所在は、情報処理装置1の例えば記憶部12またはRAM13に記憶されており、前記記憶に基づいて、前記データベース800の情報を授受する。
処理部802は、データベース801から読み取ったデータを、記憶部803に記憶させる処理をする。その処理内容は、処置部301が、データ300を作成する処理と同様である。
データベース801は、図3におけるデータベース302A、処理部802は、図3における処理部300、設定部851は、図3におけるデータベース303A、記憶部803は、図3におけるデータ300に、それぞれ相当する。
記憶部803は、処理部802によって作成されるデータである。例えばプログラム12Pに基づいて、記憶内容が変更されることがある。
処理部804は、記憶部803の記憶内容に基づいて、データベース801の内容を変更する。
図30は、処理部804を実行する処理を説明する図である。
ステップS3000は、データベース801の記憶内容を複製する。
データベース801がファイルである場合を例に説明する。例えば、データベース801が存在するフォルダの中にサブフォルダを作成し、データベース800と同一内容であるファイルを作成し、そのファイルは、前記サブフォルダの中に格納される。望ましくは、ファイル名に、本操作がなされた日時を意味する文字列を付加する形態とすることができる。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、データベースに記憶されている情報が複製された情報を作成し、前記情報を、例えば記憶部12に格納する。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、データベースに記憶されている情報が複製された情報を作成し、前記情報を、例えば記憶部12に格納する。)
ステップS3001は、データベース801の内容を変更する。
データベース801がフラットファイルデータベースである場合を例に説明する。記憶部803によって、データベース801に書き込むべき文字列が作成される。その手順は、図29を説明する際に説明した通りである。具体的には、データベース801の記憶内容を記憶部803に提供し、記憶部803は、前記記憶内容にもとづいて文字列を作成し、データベース801に、前記文字列を書き込む。
(情報処理装置1のCPU11は、プログラム12Pに基づいて、データベースの記憶内容(例えば、記憶部)を読み取り、前記情報と、記憶部803として例えばRAM13に記憶されている情報に基づいて、データベースに書き込むべき文字列を作成し、データベースに、前記文字列を書き込む。)
(情報処理装置1のCPU11は、プログラム12Pに基づいて、データベースの記憶内容(例えば、記憶部)を読み取り、前記情報と、記憶部803として例えばRAM13に記憶されている情報に基づいて、データベースに書き込むべき文字列を作成し、データベースに、前記文字列を書き込む。)
プログラム集合体800は、UWP(Universal Windows Platform)、WPF(Windows Presentation Foundation)、Androidといったプラットフォームに依存したルーチンをそなえるプログラム集合体(例えば、クラス)である。
プログラム集合体850は、プラットフォームに依存しないルーチンをそなえるプログラム集合体(例えば、クラス)である。
これは、プログラム集合体に依存しないと実行できない機能(例えば、ファイルの読み書き)が存在し、プラットフォームに依存しないルーチンが、すべての動作ができるものではないためである。
UWP用のソフトウェアでは、プログラム集合体800はUWPに依存したルーチンを持ち、WPF用のソフトウェアでは、プログラム集合体800はWPFに依存したルーチンを持ち、Android用のソフトウェアでは、プログラム集合体800はAndroidに依存したルーチンを持つ。ただし、プログラム集合体850は、プラットフォームに依存しないルーチンを持つ。
ルーチン805を実行した際、ルーチン805は、処理部803に記憶された情報をルーチン855に提供(例えば、処理部803に記憶された情報をルーチン854の引数とする)し、ルーチン855を実行する。
ルーチン855が実行する処理は、処理部803から提供された情報を使用することがある。
ルーチン805に返り値がある場合は、ルーチン855の返り値を、ルーチン805の返り値とする。
(変形例:ルーチン805は、処理部802が返すルーチンを受け取る。このとき、処理部802は、記憶部803が作成されていなければ、データベース801および設定部851から記憶部803を作成してこれを返り値とする。すでに記憶部803が作成されていれば、記憶部803を返り値とする。)
プログラム集合体800、プログラム集合体850は、複数のルーチンを持ち得る。しかし、ここでは説明のため、ルーチン805、ルーチン855以外のルーチンは、説明に必要なものを除いて省略した。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。また、各実施の形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
本明細書における「変更」とは、その意味に「新規登録」を含めることができる。
本明細書における「変更」とは、その意味に「新規登録」を含めることができる。
201 表
201−A キー列
201−0 タイトル行
201−1 データ開始行
202 文字列
300 データ
301 処理部
302 記憶装置
302A データベース
303A 設定部
501 データベース記憶部
502 変更記憶部
503 削除記憶部
504 設定記憶部
511 書き込み部
512 変更書き込み部
513 削除書き込み部
201−A キー列
201−0 タイトル行
201−1 データ開始行
202 文字列
300 データ
301 処理部
302 記憶装置
302A データベース
303A 設定部
501 データベース記憶部
502 変更記憶部
503 削除記憶部
504 設定記憶部
511 書き込み部
512 変更書き込み部
513 削除書き込み部
Claims (72)
- データベースである第1の情報と、
前記データベースを使用するための情報である第2の情報と、
を読み込む処理(第1の処理)と、
前記第1の情報および前記第2の情報を記憶した第3の情報を作成する処理と(第2の処理)、
を実行することを特徴とするプログラム。 - 左端の列を0列目、上端の行を0行目とし、どの行がタイトル行、データ開始行であって、どの列がキー列であるかは、別途定義されているデータべース、
- データ300を作成ならびに処理することを特徴とするプログラム。
- 1台以上の情報処理装置と、
記憶装置が、
通信部を介して接続されている
ことを特徴とする情報処理システム。 - 請求項4に記載の記憶装置が担当する機能は、
請求項4に記載の情報処理システム中に存在する
任意の情報処理装置が担当し、
その場合、
請求項4に記載の記憶装置の数は0台以上であることを特徴とする、
請求項4に記載の情報処理システム。 - 請求項3に記載のプログラムは、
変更記憶部502をそなえ、
前記変更記憶部502に、変更または新規追加をすべき対象のキーと、第1の文字列の組み合わせによって記憶され、
前記第1の文字列は、対象となるカラムと、フィールドに書き込むべき情報の組み合わせを表す情報を、
第1の規則に従って文字列に変換して作成された文字列であり、
前記文字列は、第2の規則によって、対象となるカラムと、フィールドに書き込むべき情報の組み合わせに変換することができることを特徴とする、
請求項3に記載のプログラム。 - 請求項3に記載のデータ300は、
フィールド取得部514をそなえ、
前記フィールド取得部514は、
参照したいフィールドが属するキーおよびカラムの指定を受け付けて、
データ300にそなえられている削除記憶部503と、
データ300にそなえられている変更記憶部502と、
データ300にそなえられているデータベース記憶部501と、
を参照し、
削除記憶部に、前記指定したキーが記憶されている場合(場合1)は、前記フィールドの情報が存在しない旨の情報を返し、
上記以外の場合(場合2)、変更記憶部502に、前記指定したキーおよびカラムが合致する情報が存在する場合は、前記情報を返し、
上記以外の場合(場合3)、データベース記憶部501に、前記指定したキーおよびカラムが合致する情報が存在する場合は、前記情報を返し、
上記以外の場合(場合4)、前記フィールドの情報が存在しない旨の情報を返す
ことを特徴とする、請求項3に記載のプログラム。 - 文字列を数値に変換するプログラムであって、
前記文字列において小数点として扱われることがある文字(A文字)、
前記文字列において桁区切りとして扱われることがある文字(B文字)、
が、前記文字列において存在する数ならびに位置に基づいて、前記文字列を数値に変換することを特徴とするプログラム。 - 文字列中に含めたくない文字(アウト文字)が存在する文字列を、アウト文字を含めない文字列に変換するプログラムであって、
前記アウト文字は、前記アウト文字を用いない表現による文字列に変換され、
前記変換処理をした部分と、それ以外の部分は、特定の文字(アウト区切り文字)によって区切られる文字列を作成すること
を特徴とするプログラム。 - 請求項9に記載のプログラムによって作成された文字列を、
前記プログラムによって変換される前の文字列に変換することができることを特徴とするプログラム。 - データベースと、
プログラム集合体800と、
プログラム集合体850をそなえる
ことを特徴とする、情報処理システム。 - 請求項1に記載の第2の情報は、設定部に記憶されていることを特徴とする、
請求項1に記載のプログラム。 - 請求項1に記載の第3の情報は、
データベースから読み込まれた第4の情報と、
前記情報を使用するために必要な第5の情報と、
前記第4の情報に対してすべき変更および追加の少なくともいずれかを記憶した第6の情報と、
前記第4の情報に対して削除すべきレコードを記憶した第7の情報と、
をそなえることを特徴とする、請求項1に記載のプログラム。 - 請求項1に記載のデータベース302は、
請求項1に記載のプログラムを有する情報処理装置ではない処置、または、請求項1に記載のプログラムを有する情報処理装置に記憶されている
ことを特徴とする、請求項1に記載する、請求項1に記載のプログラム。 - 請求項1に記載の第2の情報は、請求項1に記載のデータベースの位置として、
前記データベースのファイル名(第3の情報)、
前記データベースが存在するフォルダ名(第4の情報)が定義されていることを特徴とする、
請求項1に記載のプログラム。 - 請求項15に記載の第4の情報が示すフォルダを格納するフォルダまたは記憶装置の定義(第5の情報)は、
請求項15に記載の第2の情報の外部に記憶され、
ユーザは、前記第5の情報を設定または変更の少なくともいずれかをすることができること
を特徴とする、請求項15に記載のプログラム。 - 請求項1に記載のデータベースは、
フラットファイルデータベースであり、
請求項1に記載の第2の情報は、
前記データベースを使用する際に必要な情報である
ことを特徴とする、請求項1に記載のプログラム。 - 請求項17に記載の「前記データベースを使用する際に必要な情報」は、
請求項17に記載のフラットファイルデータベースにおける、
行を区切る文字列と、
列を区切る文字列と、
請求項17に記載のフラットファイルデータベースのファイル名と、
請求項17に記載のフラットファイルデータベースを保存するフォルダと、
の少なくともいずれかを定義してあることを特徴とする、請求項17に記載のプログラム。 - 請求項1に記載の第1の処理は、
データベースから情報を読み取る第2のステップと、
前記第2のステップによってデータを読み込むことができなかったときは、
前記データベースを作成する第1のステップと、前記第1のステップによって作成されたデータベースから情報を読み取る第2のステップと、
を実行することを特徴とする、請求項1に記載のプログラム。 - 請求項1に記載の第2の処理は、
請求項1に記載の第1の処理によって取得した情報を、請求項1に記載の第3の情報が有する機能に対して提供することを特徴とする、請求項1に記載のプログラム。 - 請求項1に記載の第2の情報は、
請求項1に記載のプログラムを記憶した情報処理装置、
前記情報処理装置と通信部を介して接続されている他の情報処理装置または記憶装置、
のいずれかに記憶されている
ことを特徴とする、請求項1に記載のプログラム。 - 請求項1に記載の第1の処理は、
請求項1に記載されている第2の情報を読み取る処理を含み、
前記第2の情報は、
請求項1に記載のプログラムを記憶した情報処理装置、
前記情報処理装置と通信部を介して接続されている他の情報処理装置または記憶装置、
の少なくともいずれかに記憶されている
ことを特徴とする、請求項1に記載のプログラム。 - 請求項1に記載のデータベースが存在しない場合に
前記データベースを作成する処理を行い、
前記処理は、
設定部に定義されている情報を格納したデータベースを作成する処理と、
を含むことを特徴とする、請求項1に記載のプログラム。 - 請求項1に記載のデータベースは、
ユーザによって保管場所を決定することができることを特徴とする、請求項1に記載のプログラム。 - 請求項1に記載のデータベースは、
ユーザによって保管場所を変更することができることを特徴とする、請求項1に記載のプログラム。 - 請求項1に記載の第1の処理は、
請求項1に記載のデータベースが存在しない場合は前記データベースを作成する処理と、
請求項1に記載のデータベースを保存するフォルダが存在しない場合は前記フォルダを作成する処理と、
請求項1に記載のデータベースに記憶されている情報を取得する処理と、
を含むことを特徴とする、請求項1に記載のプログラム。 - 請求項26に記載の「前記フォルダを作成する処理」によって作成されるフォルダの名称は、
請求項1に記載の第2の情報によって定められていることを特徴とする、
請求項26に記載のプログラム。 - 請求項26に記載の「前記データベースを作成する処理」によって作成されるフォルダの名称は、
請求項1に記載の第2の情報によって定められていることを特徴とする、
請求項26に記載のプログラム。 - 請求項1に記載のプログラムは、
請求項1に記載の第1の情報を受け取る処理は、
前記第1の情報が格納されているファイルが存在しない場合は、
前記ファイルを作成する処理と、
を含むことを特徴とする、請求項1に記載のプログラム。 - 請求項29に記載のプログラムは、
請求項1に記載の第1の情報を受け取る処理は、
前記第1の情報が格納されているファイルを格納するフォルダが存在しない場合は、
前記フォルダを作成する処理と、
前記フォルダの中に前記ファイルが存在しない場合は、
前記ファイルを作成する処理と、
を含むことを特徴とする、請求項29に記載のプログラム。 - 請求項1に記載のプログラムは、
請求項1に記載の第1の情報を読み取ることができない場合は、
前記情報を作成する処理を実行することを特徴とする、
を含むことを特徴とする、請求項1に記載のプログラム。 - 請求項31に記載のプログラムは、
請求項31に記載の「前記情報を作成する処理」は、設定部に定義されている値が記録された情報を作成する処理と、
を含むことを特徴とする、請求項31に記載のプログラム。 - 請求項32に記載の「請求項1に記載のデータベースに記憶されている情報を取得する処理」は、
前記処理によって、請求項1に記載のデータベースに存在する情報を取得できなかった場合は、
請求項1に記載のデータベースに、あらかじめ定められた情報を書き込む処理と、
前記情報を取得する処理と、
を実行することを特徴とする、
請求項32に記載のプログラム。 - 請求項1に記載の第1の処理は、
請求項1に記載のデータベースに存在する情報を取得できなかった場合は、
請求項1に記載のデータベースに、あらかじめ定められた情報を書き込む処理と、
前記情報を取得する処理と、
を実行することを特徴とする、
請求項1に記載のプログラム。 - 請求項1に記載のプログラムは、
請求項1に記載の第3の情報が作成されていない場合は、
前記第3の情報を作成する処理と、
を実行することを特徴とする、請求項1に記載のプログラム。 - 請求項1に記載のプログラムは、
請求項1に記載の第3の情報が作成されているときは、
請求項1に記載の第1の処理と、
請求項1に記載の第2の処理と、
を実行しないことを特徴とする、請求項1に記載のプログラム。 - 請求項1に記載のプログラムは、
請求項1に記載の第3の情報が作成されているか否かを判断し、
前記第3の情報が作成されていない場合は、
請求項1に記載の第1の処理と、
請求項1に記載の第2の処理と、
を実行することを特徴とする、請求項1に記載のプログラム。 - 請求項4〜5に記載の情報処理システムは、
前記情報処理システムにて記憶されているデータベースは、
前記情報処理システム中に存在する情報処理装置によって、参照ないし変更がなされることを特徴とする、
請求項4〜5に記載の情報処理システム。 - 請求項4〜5に記載の情報処理システムは、
前記情報処理システム中に存在する情報処理装置は、
前記情報処理システムにて記憶されているデータベースから第2の情報を作成し、
前記データベースを参照するときは、
前記第2の情報を参照することによってこれに換えることができる
ことを特徴とする、
請求項4〜5に記載の情報処理システム。 - 請求項4〜5に記載の情報処理システムは、
請求項4〜5に記載のデータベース対して実行する変更および削除の内容を情報処理装置に記憶することを特徴とする、
請求項4〜5に記載の情報処理システム。 - 請求項40に記載の情報処理システムは、
請求項40に記載の記憶に基づいて、
請求項40に記載のデータベースの内容を変更する直前に、前記データベースと同一内容を持つデータを作成し、
前記記憶に基づいて、前記データベースの内容を変更することを特徴とする、
請求項40に記載の情報処理システム。 - 請求項3に記載のデータ300は、
書き込み部511をそなえ、
前記書き込み部511は、
データベースから読み取った情報をデータベース記憶部501に記憶させ、
前記データベースを使用するために必要な情報を
設定記憶部504に記憶させることを特徴とする、
請求項3に記載のプログラム。 - 請求項3に記載のデータ300は、
キー出力部515をそなえ、
前記キー出力部515は、
データ300にそなえられているデータベース記憶部501または
データ300にそなえられている変更記憶部502に記憶されているキーであり、かつ、
データ300にそなえられている削除記憶部503に記憶されているキーではないものを、
前記データ300におけるデータベースに存在するキーとして取り扱うことを特徴とする、
請求項3に記載にプログラム。 - 請求項3に記載のデータ300は、
変更書き込み部512をそなえ、
前記変更書き込み部512は、
変更(追加を含む。以下この請求項において同じ)すべき対象のキー、カラム、フィールドの指定を受け付けて、
前記指定内容を、変更記憶部502に記憶させることを特徴とする、
請求項3に記載のプログラム。 - 請求項3に記載のデータ300は、
変更記憶部502をそなえ、
前記変更記憶部502は、
データベースに対して行うべき変更または新規追加が存在する場合、
前記変更・新規追加の内容を、対象となるキーと、対称となるカラムと、前記キー・カラムによって特定されるフィールドに対して書き込むべき情報の組み合わせによって記憶してあることを特徴とする、
請求項3に記載のプログラム。 - 請求項6に記載の第2の規則は、
文字列を連想配列に変換するための規則であって、
変換前の文字列の所定の位置に存在する文字を区切り文字とし、
前記所定の位置以外の位置に存在する前記文字を境に区切った1個以上の第2の文字列を作成し、
前記第2の文字列を用いて連想配列を作成する
ことを特徴とする、請求項6に記載のプログラム。 - 請求項6に記載の第1の規則は、
連想配列を文字列に変換するための規則であって、
変換前の連想配列のキーまたは値に使われている文字列を取得し、
前記文字列に存在しない文字を区切り文字とし、
前記文字列を所定の順序で並べ、前記文字列を前記区切り文字を境に連結し、
所定の位置に、区切り文字として用いた文字列を配置した文字列を作成する
を特徴とする、請求項6に記載のプログラム。 - 請求項3に記載のデータ300は、
変更記憶部502をそなえ、
前記変更記憶部502は、
データベースに対して実行すべき変更(新規登録を含む)すべき内容を記憶するものであること
を特徴とする、請求項3に記載のプログラム。 - 請求項48に記載の変更記憶部502は、
データベースに対して実行すべき変更(新規登録を含む。以下この請求項において同じ)すべき内容を、変更対象であるレコードのキーと前記レコードの内容の組み合わせとして記憶すること
を特徴とする、請求項48に記載のプログラム。 - 請求項48に記載の変更記憶部502は、
請求項49に記載の「前記レコードの内容」は、請求項49に記載の「前記レコード」におけるカラムと該カラムに書き込むべき情報の組み合わせを記憶したものであることを特徴とする、
請求項48に記載のプログラム。 - 請求項50に記載の「カラムと該カラムに書き込むべき情報の組み合わせ」は、前記「カラムと該カラムに書き込むべき情報の組み合わせ」を、一定の規則により文字列に変換したものであること
を特徴とする、請求項50に記載のプログラム。 - 請求項3に記載のデータ300は、
削除書き込み部512をそなえ
前記削除書き込み部512は、
削除記憶部503の内容を変更する処理を実行することを特徴とする、
請求項3に記載のプログラム。 - 請求項7に記載の場合2は、
データ300にそなえられている変更記憶部502を参照し、
前記変更記憶部502に、請求項7に記載のキーおよびカラムに合致するフィールドの情報が記憶されている場合は、
前記変更記憶部502における、請求項7に記載のキーおよびカラムに合致するフィールドの情報を返すこと
を特徴とする、請求項7に記載のプログラム。 - 請求項7に記載の場合3は、
データ300にそなえられているデータベース記憶部501を参照し、
前記データベース記憶部501に、請求項7に記載のキーおよびカラムに合致するフィールドの情報が記憶されている場合は、
前記データベース記憶部501における、請求項7に記載のキーおよびカラムに合致するフィールドの情報を返すこと
を特徴とする、請求項7に記載のプログラム。 - 請求項7に記載の場合3は、
データ300にそなえられているデータベース記憶部501に、
前記データベース記憶部501における、請求項7に記載のキーおよびカラムに合致するフィールドの情報を返すとき、
前記情報が、少なくとも、請求項9に記載の処理が施されているときは、
請求項10に記載の処理を用いて、前記「請求項9に記載の処理」を施す前の情報に変換することを特徴とする、
請求項7に記載のプログラム。 - 請求項7に記載の処理によって取得された文字列を、請求項8に記載の処理によって数値に変換することを特徴とする、
請求項3に記載のプログラム。 - 請求項7に記載の処理によって取得された第1の文字列から、指定された条件にもとづいて文字列を抜き出して(第2の文字列)、
前記第2の文字列を、請求項8に記載の処理によって数値に変換することを特徴とする、
請求項3に記載のプログラム。 - 請求項3に記載のデータ300は、
データベース書き込み部516をそなえ、
前記データベース書き込み部516は、
データベースに存在する情報と、
変更記憶部502と、
削除記憶部503と、
を参照し、
データベースに書き込むべき情報を作成する処理をすること
を特徴とする、請求項3に記載のプログラム。 - 請求項8に記載の処理をする処理部は、
前記処理部の外部から受け取った情報に基づいて、
A文字と、
B文字と、
AB文字(A文字であって、かつ、B文字である文字)が、
何であるかを特定することを特徴とする、
請求項8に記載のプログラム。 - 請求項8に記載の処理をする処理部は、
前記処理部が、A文字が1個以上である旨の情報を受け取らなかったとき、
前記情報を、前記処理部が作成することを特徴とする、
請求項8に記載のプログラム。 - 請求項8に記載の処理をする処理部は、
前記処理部が、B文字が1個以上である旨の情報を受け取らなかったとき、
前記情報を、前記処理部が作成することを特徴とする、
請求項8に記載のプログラム。 - 請求項8に記載の処理部は、
A文字が何であるかを表す情報と、
B文字が何であるかを表す除法と、
を、前記処理部の外部に提供することを特徴とする、
請求項8に記載のプログラム。 - 請求項8に記載のプログラムは、
請求項8に記載の文字列中に存在するA文字の数が0個であるとき、
前記文字列中に存在するAB文字のうち、最も右にあるAB文字を小数点とみなし、それ以外のAB文字を空文字列とみなし、
前記文字列を数値に変換する処理をする
を特徴とする、請求項8に記載のプログラム。 - 請求項8に記載のプログラムは、
請求項8に記載の文字列中に存在するA文字の数が1個であるとき、
前記A文字を小数点、
前記A文字以外のAB文字およびB文字を空文字列とみなし、
前記文字列を数値に変換する処理をする
を特徴とする、請求項8に記載のプログラム。 - 請求項8に記載のプログラムは、
請求項8に記載の文字列中に存在するA文字の数が2個以上であるとき、
前記文字列は、数値に変換できない文字列である旨の判断をすることを特徴とする、
請求項8に記載のプログラム。 - 請求項8に記載のプログラムは、
請求項8に記載の文字列を数値に変換できなかったときに返す値の指定を受け付けて、
前記文字列を数値に変換できなかったとき、
前記値を返り値とすることを特徴とする、
請求項8に記載のプログラム。 - 請求項9に記載のプログラムは、
前記アウト文字を、アウト文字ではない文字のみからなる文字列に置き換える処理をするが、
あらかじめ定められた文字列であるときは、該文字列と異なる特定の文字列に置き換えることを特徴とする、
請求項9に記載のプログラム。 - 請求項9に記載のプログラムは、
変換対象とする文字列に存在するアウト文字が、改行を示す文字である場合は、前記文字を、特定の文字に変換することを特徴とする、
請求項9に記載のプログラム。 - 請求項11に記載にプログラム集合体800は、
処理部802をそなえ、
前記処理部802は、
データベースと、
処理部851に基づいて
記憶部803を作成し、
前記処理部851は、
プログラム集合体850に備えられている
ことを特徴とする、請求項11に記載の情報処理システム。 - 請求項11に記載のプログラム集合体800は、
処理部804をそなえ、
前記処理部804は、
請求項11に記載のデータベースを複製する第1のステップと、
請求項11に記載のデータベースの内容を変更する第2のステップと、
をそなえ、
前記第2のステップは、
請求項11に記載のデータベースに対して、
記憶部800に記憶された情報に基づいて実行されることを特徴とする、
請求項11に記載の情報処理システム。 - 請求項70に記載の第2のステップは、
記憶部803は、
データベース書き込み部をそなえ、
前記データベース書き込み部は、
データベース801に存在する情報と、
前記記憶部803の内部における変更記憶部502と、
前記記憶部803の内部における削除記憶部503と、
を参照し、
データベースに書き込むべき情報を作成する処理をすること
を特徴とする、請求項70に記載のプログラム。 - 請求項3に記載のデータ300は、
請求項1における第3の情報であることを特徴とする、
請求項3に記載のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019122621A JP2021009528A (ja) | 2019-06-30 | 2019-06-30 | データベースと情報処理システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019122621A JP2021009528A (ja) | 2019-06-30 | 2019-06-30 | データベースと情報処理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021009528A true JP2021009528A (ja) | 2021-01-28 |
Family
ID=74200008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019122621A Pending JP2021009528A (ja) | 2019-06-30 | 2019-06-30 | データベースと情報処理システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2021009528A (ja) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002183654A (ja) * | 2000-12-15 | 2002-06-28 | Sanyo Electric Co Ltd | 帳票データのcsvデータ変換装置及び方法 |
JP2005500623A (ja) * | 2001-08-17 | 2005-01-06 | ユニバーサル・ビジネス・マトリックス・エルエルシー | データにメタデータを加える方法 |
JP2008234035A (ja) * | 2007-03-16 | 2008-10-02 | Toshiba Tec Corp | データベース管理システム |
JP2008305391A (ja) * | 2007-05-08 | 2008-12-18 | Canon Inc | ドキュメント生成装置、ドキュメント生成方法及びプログラム |
JP2011186853A (ja) * | 2010-03-09 | 2011-09-22 | Nippon Telegr & Teleph Corp <Ntt> | データ処理装置及びシステム及び方法及びプログラム |
JP2017515180A (ja) * | 2014-03-14 | 2017-06-08 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ビッグ・データ・リポジトリにおけるデータ・セットの処理 |
JP2018132948A (ja) * | 2017-02-15 | 2018-08-23 | 富士通株式会社 | 読込プログラム、読込方法および情報処理装置 |
-
2019
- 2019-06-30 JP JP2019122621A patent/JP2021009528A/ja active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002183654A (ja) * | 2000-12-15 | 2002-06-28 | Sanyo Electric Co Ltd | 帳票データのcsvデータ変換装置及び方法 |
JP2005500623A (ja) * | 2001-08-17 | 2005-01-06 | ユニバーサル・ビジネス・マトリックス・エルエルシー | データにメタデータを加える方法 |
JP2008234035A (ja) * | 2007-03-16 | 2008-10-02 | Toshiba Tec Corp | データベース管理システム |
JP2008305391A (ja) * | 2007-05-08 | 2008-12-18 | Canon Inc | ドキュメント生成装置、ドキュメント生成方法及びプログラム |
JP2011186853A (ja) * | 2010-03-09 | 2011-09-22 | Nippon Telegr & Teleph Corp <Ntt> | データ処理装置及びシステム及び方法及びプログラム |
JP2017515180A (ja) * | 2014-03-14 | 2017-06-08 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ビッグ・データ・リポジトリにおけるデータ・セットの処理 |
JP2018132948A (ja) * | 2017-02-15 | 2018-08-23 | 富士通株式会社 | 読込プログラム、読込方法および情報処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2005200166B2 (en) | Searchable archive | |
EP2302538B1 (en) | Method and system for capturing change of data | |
EP4250136A2 (en) | Systems and methods for dataflow graph optimization | |
JP3452531B2 (ja) | データ・マイニングする方法およびシステム | |
CN102893281A (zh) | 信息搜索设备、信息搜索方法、计算机程序和数据结构 | |
CN109739828B (zh) | 一种数据处理方法、设备及计算机可读存储介质 | |
US5895473A (en) | System for extracting text from CAD files | |
CN107103035A (zh) | 本地表数据更新方法及装置 | |
US20080250068A1 (en) | System for preparing reports | |
CN106874329A (zh) | 数据库表索引的实现方法和装置 | |
WO2023197865A1 (zh) | 一种信息存储方法及装置 | |
JP2021009528A (ja) | データベースと情報処理システム | |
US7882114B2 (en) | Data processing method and data processing program | |
JP6432893B1 (ja) | データベース処理装置、グループマップファイル生産方法及びプログラム | |
US7133885B2 (en) | Database management system using offsets in entries with at least one varying-length column | |
CN110222105B (zh) | 数据汇总处理方法及装置 | |
CN104166739B (zh) | 分析数据库的指标文件处理方法及装置 | |
JP2018109898A (ja) | データマイグレーションシステム | |
CN116136839B (zh) | 法规文件花脸稿的生成方法、生成系统及相关设备 | |
KR20190109664A (ko) | 빅 데이터 비식별화 처리 시스템 및 방법 | |
JP4850581B2 (ja) | データ処理システム | |
JPH01286020A (ja) | プログラム検索方式 | |
JPH11232149A (ja) | ファイル比較処理方法,装置およびファイルの比較処理プログラムを記憶した媒体 | |
CN117171129A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
JP4850580B2 (ja) | データ処理システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200901 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20210406 |