(57)【要約】【課題】ドキュメントを利用したページング処理を含む一覧表示を自動作成する。【解決手段】サーバ側のデータベースから情報を取得する情報取得関数のページング処理を共通関数という形でパッケージ化し、情報取得関数のソースに記述する内容を必要最低限にする。表計算ソフトで作成したサーバクライアント間のインターフェース仕様書の要素を単純変換することで、サーバ側の状態取得関数のソースコードを自動作成する。また、クライアント側のソースも関数呼び出しの部分のみ作成を行い、クライアント側のプログラムに追記できるようにする。インターフェース仕様書を基に、ＳＱＬを含む手続き型言語のプログラムとそれを呼び出すクライアントのプログラムを、マクロを使うことで出力し、実際に内容を取得するための基本的なＳＱＬさえ記述すれば、複雑な処理を意識することなく、ページング処理を含む一覧表示を実現できる。【選択図】図１
2013008271.tif 000002
【特許請求の範囲】
【請求項１】
サーバクライアント間のインターフェース仕様書を基に、ＳＱＬを含む手続き型言語のサーバ側のプログラムのソースコードと、前記サーバ側のプログラムを呼び出すクライアント側のプログラムのソースコードとを出力する開発端末と、
データベースを管理し、前記サーバ側のプログラムの呼び出しに応じて、前記サーバ側のプログラムを実行し、前記サーバ側のプログラムに従って、ページング処理をパッケージ化した共通関数の処理を実行するサーバと、
前記クライアント側のプログラムに従って、前記サーバ側のプログラムを呼び出し、前記データベースを検索し、検索結果について、複数ページに分割し表示を行うページング処理を含む一覧表示を行い、意味ある並びを持つ一覧を、データの削除・追加があった場合でもその並びを維持したまま、一定行の一覧に分割して表示を行うクライアントと
を含む
一覧表示自動作成システム。
【請求項２】
請求項１に記載の一覧表示自動作成システムであって、
前記開発端末は、
表計算ソフトを使用して前記インターフェース仕様書を作成する手段と、
前記インターフェース仕様書の要素を単純変換し、前記サーバ側で前記データベースから情報を取得する状態取得関数のソースコードを自動作成して前記サーバに提供し、前記クライアント側のソースコードとして、前記状態取得関数の呼び出しの部分のソースコードを作成して前記クライアントに提供する手段と、
前記状態取得関数のソースコードを自動作成する際、前記情報取得関数におけるページング処理を、共通関数という形でパッケージ化し、前記情報取得関数のソースコードに記述する内容を必要最低限に抑える手段と
を具備する
一覧表示自動作成システム。
【請求項３】
請求項２に記載の一覧表示自動作成システムであって、
前記開発端末は、
前記表計算ソフトを使用して前記インターフェース仕様書を作成する際、前記インターフェース仕様書に、入力パラメータ、出力パラメータ、並び替えに必要なソートキーの情報をそれぞれ記述する手段と、
前記インターフェース仕様書を基に、関数の名前、引数を抽出し、関数の宣言文、処理文を、マクロを使用して作成する手段と、
引数には、入力パラメータに記述された値、出力パラメータに記述された値に加えて、共通の入力引数として、取得最大行数、先頭行のソートキーの値をまとめたポジションキーを追加し、共通の出力引数として、取得行数、取得したデータより後のデータが存在するかの区分を示すエンドフラグ、取得したデータの最後のポジションキーを示すエンドポジションキーを追加する手段と、
処理文には、前記共通関数の呼び出し、前記共通関数の引数に設定する値の代入、前記共通関数で取得したデータを関数の出力引数に代入する処理を記述する手段と
を更に具備する
一覧表示自動作成システム。
【請求項４】
請求項３に記載の一覧表示自動作成システムであって、
前記サーバは、
前記クライアント側の関数からの呼び出しに応じて前記情報取得関数の処理を実行した場合、前記情報取得関数の処理に従って前記共通関数を呼び出す手段と、
前記共通関数の処理に従ってＳＱＬファイルを読み込む手段と、
入力引数のソートキーの情報を基に、ＳＱＬのＷＨＥＲＥ句、並びに、ＯＲＤＥＲ  ＢＹ句を作成し、前記ＳＱＬファイルのＳＱＬ文に追加し、実行するＳＱＬ文を作成する処理を行う手段と、
ポジションキーを桁数によってソートキー単位に分割し、それぞれのソートキーをバインド変数に代入し、前記ＳＱＬ文を実行する手段と、
前記ＳＱＬ文の実行後、取得した最後の行の値を繋げたものをエンドポジションキーとして、ポジションキーが指定された場合にはトップフラグをデータありとし、取得行数以上にデータがあった場合にはエンドフラグをデータありとして、前記ＳＱＬ文の実行によって取得したデータを、それぞれ配列として前記呼び出し元の関数に返す手段と
を具備する
一覧表示自動作成システム。
【請求項５】
請求項１乃至４のいずれか一項に記載の一覧表示自動作成システムであって、
前記クライアントは、
前記クライアント側のソースコードを基に、前記サーバ側の前記情報取得関数を呼び出すための情報を前記一覧表示コントロールの関数を使用して設定する処理を行う手段と、
前記クライアント側の一覧表示用コントロールに対して、次のページを読み込む動作を行う関数を用意し、該関数で使用される引数に入力する値となるポジションキーと取得最大行数とを設定する手段と
を具備する
一覧表示自動作成システム。
【請求項６】
請求項１乃至５のいずれか一項に記載の一覧表示自動作成システムで、開発端末、サーバ、及びクライアントのうち少なくとも１つとして使用される計算機。
【請求項７】
サーバクライアント間のインターフェース仕様書を基に、ＳＱＬを含む手続き型言語のサーバ側のプログラムのソースコードと、前記サーバ側のプログラムを呼び出すクライアント側のプログラムのソースコードとを出力する手段と、
データベースを管理し、前記サーバ側のプログラムの呼び出しに応じて、前記サーバ側のプログラムを実行し、前記サーバ側のプログラムに従って、ページング処理をパッケージ化した共通関数の処理を実行する手段と、
前記クライアント側のプログラムに従って、前記サーバ側のプログラムを呼び出し、前記データベースを検索し、検索結果について、複数ページに分割し表示を行うページング処理を含む一覧表示を行い、意味ある並びを持つ一覧を、データの削除・追加があった場合でもその並びを維持したまま、一定行の一覧に分割して表示を行う手段と
を具備する
計算機。
【請求項８】
計算機により実施される一覧表示自動作成方法であって、
サーバクライアント間のインターフェース仕様書を基に、ＳＱＬを含む手続き型言語のサーバ側のプログラムのソースコードと、前記サーバ側のプログラムを呼び出すクライアント側のプログラムのソースコードとを出力することと、
データベースを管理し、前記サーバ側のプログラムの呼び出しに応じて、前記サーバ側のプログラムを実行し、前記サーバ側のプログラムに従って、ページング処理をパッケージ化した共通関数の処理を実行することと、
前記クライアント側のプログラムに従って、前記サーバ側のプログラムを呼び出し、前記データベースを検索し、検索結果について、複数ページに分割し表示を行うページング処理を含む一覧表示を行い、意味ある並びを持つ一覧を、データの削除・追加があった場合でもその並びを維持したまま、一定行の一覧に分割して表示を行うことと
を含む
一覧表示自動作成方法。
【請求項９】
サーバクライアント間のインターフェース仕様書を基に、ＳＱＬを含む手続き型言語のサーバ側のプログラムのソースコードと、前記サーバ側のプログラムを呼び出すクライアント側のプログラムのソースコードとを出力するステップと、
データベースを管理し、前記サーバ側のプログラムの呼び出しに応じて、前記サーバ側のプログラムを実行し、前記サーバ側のプログラムに従って、ページング処理をパッケージ化した共通関数の処理を実行するステップと、
前記クライアント側のプログラムに従って、前記サーバ側のプログラムを呼び出し、前記データベースを検索し、検索結果について、複数ページに分割し表示を行うページング処理を含む一覧表示を行い、意味ある並びを持つ一覧を、データの削除・追加があった場合でもその並びを維持したまま、一定行の一覧に分割して表示を行うステップと
を計算機に実行させるための
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一覧表示自動作成システムに関し、特にクライアント側からサーバ側のデータベースを検索し、その検索結果をクライアント側で一覧表示するための一覧表示自動作成システムに関する。
【背景技術】
【０００２】
現在、膨大な数のデータを効率良く管理するために、データベースは、リレーショナルデータベースというデータ管理方式に基づいて設計されることが多い。リレーショナルデータベースを管理するためのソフトウェアが、リレーショナルデータベース管理システム（ＲＤＢＭＳ：Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）である。
【０００３】
なお、ＲＤＢＭＳの例として、「Ｏｒａｃｌｅ  Ｄａｔａｂａｓｅ」、「Ｍｉｃｒｏｓｏｆｔ  Ａｃｃｅｓｓ」、「Ｍｉｃｒｏｓｏｆｔ  ＳＱＬ  Ｓｅｒｖｅｒ」、「ＰｏｓｔｇｒｅＳＱＬ」、「ＭｙＳＱＬ」（以上、登録商標）等が知られている。
【０００４】
ＲＤＢＭＳにおいては、データベース内のデータの操作や定義を行うためのデータベース言語（問い合わせ言語）の一つとして、ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）が用いられている。
【０００５】
ＳＱＬ文（ＳＱＬコマンドライン）を用いてデータベースから一覧データを取得して表示する際に、行数が多くなりすぎることによる観覧や通信量の不可を避けるための解決策の一つとして、一覧データを複数ページに分割して表示を行うページング処理という手法がある。
【０００６】
しかし、上記の手法を実現するためには、動的なＳＱＬ文を使用した処理を記述する必要があり、同じような処理であるのにも関わらず、一覧データ毎に表示画面上でその処理のＳＱＬ文を記述しなくてはいけないという問題がある。
【０００７】
また、上記の問題に付随して、データを取ってくるためのＳＱＬ処理とページファイル（スワップファイル）を取得するための処理が混合してしまい、作成されたプログラムは、可読性、拡張性等が欠如したものになるという問題も存在する。
【０００８】
また、データベース側のデータを取得するプログラムと、そのプログラムを呼び出してデータを一覧表示するプログラムは、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）等のインターフェース（関数、コマンド等）を同じにする必要があるため、項目が多い場合等、これらのプログラムのソースコード（Ｓｏｕｒｃｅ  ｃｏｄｅ：原始プログラム）の記述の食い違いを防ぐ必要があるため、プログラムの作成に非常に多くの時間を費やす場合がある。
【０００９】
関連する技術として、特許文献１（特開２０００−１９４５９３号公報）に異機種分散データのレコード単位アクセス方式が開示されている。この関連技術では、該データアクセス用共通関数として、バイナリファイルからレコードを参照する（読み出す）ために利用されるデータ読み込み関数と、バイナリファイルにレコードを出力する（書き込む）ために利用されるデータ書き込み関数の２つの関数が用意されている。データ読み込み関数は、引数として受け取ったファイル識別ＩＤ及びレコードの位置（レコード番号）等を指定して、データ変換用共通関数を呼び出す。
【００１０】
また、特許文献２（特開２００８−５８８２６号公報）に暗号処理装置、及び暗号処理方法、並びにコンピュータ・プログラムが開示されている。この関連技術では、データ系列数「ｄ」を「ｄ≧３」の整数とした拡張型「Ｆｅｉｓｔｅｌ」構造を適用した暗号処理構成において、インボリューション性、すなわち暗号化処理と復号処理に共通の関数を適用可能としている。復号処理におけるラウンド鍵の入れ替えやＦ関数の入れ替えを行う構成とすることで、スワップ関数を暗号化処理と復号処理とにおいて同一の処理態様に設定することで共通関数による処理を可能としている。ラウンド関数（Ｆ関数）の各ラウンドの切り替え部分では、各データ系列を入れ替えるスワップ処理が実行される。このスワップ処理に適用する関数がスワップ関数である。スワップ関数は、暗号化関数の１つの構成要素となる。スワップ関数は、各ラウンドの切り替え時に、各データ系列の出力に対して適用され、各データ系列の出力に対応する次のラウンドにおける入力系列を設定するための関数である。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０００−１９４５９３号公報
【特許文献２】特開２００８−５８８２６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明の目的は、ドキュメントを利用したページング処理を含む一覧表示用情報（データ一覧情報）の自動作成を行う一覧表示自動作成システムを提供することである。
【課題を解決するための手段】
【００１３】
本発明に係る一覧表示自動作成システムは、サーバクライアント間のインターフェース仕様書を基に、ＳＱＬを含む手続き型言語のサーバ側のプログラムのソースコードと、該サーバ側のプログラムを呼び出すクライアント側のプログラムのソースコードとを出力する開発端末と、データベースを管理し、該サーバ側のプログラムの呼び出しに応じて、該サーバ側のプログラムを実行し、該サーバ側のプログラムに従って、ページング処理をパッケージ化した共通関数の処理を実行するサーバと、該クライアント側のプログラムに従って、該サーバ側のプログラムを呼び出し、該データベースを検索し、検索結果について、複数ページに分割し表示を行うページング処理を含む一覧表示を行い、意味ある並びを持つ一覧を、データの削除・追加があった場合でもその並びを維持したまま、一定行の一覧に分割して表示を行うクライアントを含む。
【００１４】
本発明に係る一覧表示自動作成方法は、計算機により実施される一覧表示自動作成方法であって、サーバクライアント間のインターフェース仕様書を基に、ＳＱＬを含む手続き型言語のサーバ側のプログラムのソースコードと、該サーバ側のプログラムを呼び出すクライアント側のプログラムのソースコードとを出力することと、データベースを管理し、該サーバ側のプログラムの呼び出しに応じて、該サーバ側のプログラムを実行し、該サーバ側のプログラムに従って、ページング処理をパッケージ化した共通関数の処理を実行することと、該クライアント側のプログラムに従って、該サーバ側のプログラムを呼び出し、該データベースを検索し、検索結果について、複数ページに分割し表示を行うページング処理を含む一覧表示を行い、意味ある並びを持つ一覧を、データの削除・追加があった場合でもその並びを維持したまま、一定行の一覧に分割して表示を行うことを含む。
【００１５】
本発明に係るプログラムは、上記の一覧表示自動作成方法における処理を、計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【発明の効果】
【００１６】
実際に内容を取得するための基本的なＳＱＬさえ記述すれば、複雑な処理を意識することなく、ページング処理を含む一覧表示のシステムを作成することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明に係る一覧表示自動作成システムの構成例を示す図である。
【図２】インターフェース仕様書の例を示す図である。
【図３】ＳＱＬファイルの例を示す図である。
【図４】本発明に係る一覧表示自動作成システムの処理手順を示すフローチャートである。
【図５】共通関数の処理の流れに従い、ＳＱＬの「ＷＨＥＲＥ」句を作成する手順を示す図である。
【発明を実施するための形態】
【００１８】
＜実施形態＞
以下に、本発明の実施形態について添付図面を参照して説明する。
【００１９】
本発明では、ページング処理を行う仕組みをサーバクライアントシステムの形で構成する。
【００２０】
本発明におけるページング処理とは、日時順等、意味ある並びを持つ一覧を、データの削除や追加があった場合でもその並びを維持したまま、一定行の一覧に分割して表示を行う処理を指す。例えば、ページの最後の行の次の行が削除された場合、次のページではその次の行から一ページ分の一覧を表示するといった処理である。
【００２１】
［システム構成］
図１を参照して、本発明に係る一覧表示自動作成システムの構成例の詳細について説明する。
【００２２】
本発明に係る一覧表示自動作成システムは、開発端末１０と、サーバ２０と、クライアント３０を含む。
【００２３】
［開発端末の構成］
開発端末１０は、仕様書作成部１１と、ソースコード作成部１２を備える。
【００２４】
仕様書作成部１１は、表計算ソフト（ｓｐｒｅａｄ  ｓｈｅｅｔ  ｓｏｆｔｗａｒｅ）を使用し、インターフェース仕様書１を作成する。表計算ソフトは、数値データの集計・分析に用いられる作表アプリケーションソフトウェアである。
【００２５】
ソースコード作成部１２は、インターフェース仕様書１を基に、サーバ２０用のソースコード２とクライアント３０用のソースコード３を、マクロ（ｍａｃｒｏ）によって作成・出力する。なお、マクロとは、表計算ソフト等において、特定の処理手順をプログラムとして記述して自動化する機能である。ここでは、ソースコード作成部１２は、インターフェース仕様書１を読み込み、マクロによってソースコード２とソースコード３を作成し、サーバ２０にソースコード２を提供し、クライアント３０にソースコード３を提供する。
【００２６】
［サーバの構成］
サーバ２０は、データベース２１と、データベース管理部２２を備える。
【００２７】
データベース２１は、リレーショナルデータベースである。
【００２８】
データベース管理部２２は、データベース管理システム（ＤＢＭＳ：ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）として機能し、手続き型プログラム言語で作成された関数を登録できる。また、データベース管理部２２は、ソースコード２を基に、情報取得関数４や共通関数６を実行し、ＳＱＬファイル５を読み込んでページング処理を行う。
【００２９】
［クライアントの構成］
クライアント３０は、一覧表示用処理部３１と、表示画面３２を備える。
【００３０】
一覧表示用処理部３１は、ソースコード３を基に、サーバ２０に登録された関数にアクセスし、当該関数を用いて得られたデータに対し、一覧表示用コントロール（表示コントロール）を使用し、ドキュメントを利用したページング処理を含む一覧表示用情報（データ一覧情報）の自動作成を行い、表示画面３２に一覧表示する。
【００３１】
表示画面３２は、サーバ２０に登録された関数にアクセスしてデータベース２１を検索するためのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）や、その検索結果に基づく一覧表示用情報（データ一覧情報）の表示を行う。
【００３２】
［ファイル・関数］
本発明に係る一覧表示自動作成システムでは、インターフェース仕様書１と、ソースコード２と、ソースコード３と、情報取得関数４と、ＳＱＬファイル５と、共通関数６が用いられる。
【００３３】
インターフェース仕様書１は、ソースコードを作成する際に用いられる仕様書であって、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）等のインターフェースとなる関数や、この関数で使用される変数の設定が記述された仕様書である。
【００３４】
ソースコード２は、サーバ２０上で実行されるデータ取得のための関数の処理のソースコードである。具体的には、ソースコード２は、後述する情報取得関数４の処理のソースコードである。
【００３５】
ソースコード３は、クライアント３０側から、サーバ２０側の情報取得関数４を呼び出すために必要な情報を一覧表示コントロールの関数を使用して設定する処理のソースコードである。
【００３６】
情報取得関数４は、ＳＱＬ文（ＳＱＬコマンドライン）を記述できる手続き型プログラミング言語で作成された関数であり、クライアント３０側からの要求に応じて、ＳＱＬファイル５を読み込んでページング処理を行い、クライアント３０側に結果を返す関数である。ここでは、情報取得関数４は、ソースコード２をコンパイル（又はビルド）して変換したものであり、サーバ２０に登録される。すなわち、情報取得関数４は、「サーバ２０に登録された関数」の１つとなる。
【００３７】
ＳＱＬファイル５は、データ取得のためのＳＱＬ文が記述されたファイルであり、情報取得関数４により読み込まれる。ＳＱＬファイル５は、外部ファイルであるため、更新／修正が容易である。
【００３８】
共通関数６は、情報取得関数４の処理のうちページング処理を共通関数という形でパッケージ化したものである。ここでは、共通関数６は、実際にＳＱＬファイル５からＳＱＬ文を読み込み、ＳＱＬ文を書き直して、データ取得及びパラメータ作成等の処理や、ページング処理を行う関数である。これらの処理に用いられる引数は、ソースコード２に書き込まれており、情報取得関数４から共通関数６に与えられる。なお、共通関数６は、ソースコード２に直接記述された関数（埋め込まれた関数）に限らず、情報取得関数４により呼び出される外部ファイルに記述された関数でも良い。例えば、共通関数６は、ライブラリ（Ｌｉｂｒａｒｙ）のように、再利用可能な形式で保持されていても良い。
【００３９】
なお、情報取得関数４、ＳＱＬファイル５、及び共通関数６は、シェル・スクリプト等でも良い。
【００４０】
［ファイル・関数と各部との関係］
開発端末１０の仕様書作成部１１は、インターフェース仕様書１に、データ取得のための情報取得関数４を作成する際に必要となる引数の情報と、ＳＱＬファイル５を読み込んでページング処理を行うために必要な情報を記述する。
【００４１】
開発端末１０のソースコード作成部１２は、ソースコード２を作成する際、インターフェース仕様書１の情報を共通関数６の引数に設定する。これにより、サーバ２０は、ソースコード２に基づく情報取得関数４を用いて共通関数６を呼び出した際、共通関数６に従ってページング処理を行い、取得した情報を呼び出し元であるソースコード２に基づく情報取得関数４に返す。
【００４２】
ここでは、ソースコード２の記述言語として、非手続き型言語（ｎｏｎ−ｐｒｏｃｅｄｕａｌ  ｌａｎｇｕａｇｅ）であるＳＱＬを手続き型言語（ｐｒｏｃｅｄｕｒａｌ  ｌａｎｇｕａｇｅ）に拡張した「ＰＬ／ＳＱＬ」（Ｐｒｏｃｅｄｕｒａｌ  Ｌａｎｇｕａｇｅ  Ｅｘｔｅｎｓｉｏｎｓ  ｔｏ  ＳＱＬ）を想定している。但し、実際には、これらの例に限定されない。
【００４３】
ＰＬ／ＳＱＬによる処理は、手続き型言語であり、埋め込みＳＱＬによる処理と同様に、変数を利用でき、制御構造を記述して業務ロジックをデータベース内に実装することができる。
【００４４】
ＰＬ／ＳＱＬは、ストアドプロシージャ、ストアドファンクション、及びストアドパッケージ等により構成される。ストアドプロシージャは、データベースに格納（Ｓｔｏｒｅｄ）されているユーザープログラム（Ｐｒｏｃｅｄｕｒｅ）である。ストアドファンクションは、ストアドプロシージャの機能を内包しているものや、ストアドプロシージャ自体に戻り値を持たせたものである。ストアドパッケージは、ストアドプロシージャとストアドファンクションのライブラリ集である。
【００４５】
ＰＬ／ＳＱＬでは、ストアドプロシージャ、ストアドファンクション、及びストアドパッケージは、通常、登録作成時や呼び出し時に自動的にコンパイルされる。しかし、プログラムを変更したことによって他のプログラムに影響を与える場合には、事前にコンパイルしておくと好適である。
【００４６】
なお、サーバ２０のデータベース管理部２２は、ソースコード２がコンパイラ言語（ＶＢ、Ｃ、Ｃ＋＋、Ｊａｖａ等）で記述されている場合、ソースコード２をコンパイル（又はビルド）してオブジェクトコード（ｏｂｊｅｃｔ  ｃｏｄｅ：実行形式プログラム）に変換し、このオブジェクトコードを登録する。このオブジェクトコードは、デーモン（ｄａｅｍｏｎ）やエージェント（ａｇｅｎｔ）等のソフトウェアとして、サーバ２０上で常時稼働していても良い。なお、ソースコード２がインタープリタ言語（Ｐｅｒｌ、ＰＨＰ：Ｈｙｐｅｒｔｅｘｔ  Ｐｒｅｐｒｏｃｅｓｓｏｒ等）で記述されている場合には、コンパイルを行う必要はない。
【００４７】
例えば、データベース管理部２２は、「Ｊａｖａ  Ｓｅｒｖｌｅｔ」や「ＪＳＰ」（ＪａｖａＳｅｒｖｅｒ  Ｐａｇｅｓ）等により情報取得関数４を実行する場合、ソースコード２をコンパイル（又はビルド）してオブジェクトコードに変換し、このオブジェクトコードを登録する。
【００４８】
反対に、データベース管理部２２は、「ＣＧＩ」（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）等により情報取得関数４を実行する場合、既存のソースコード２を、新規のソースコード２で上書きする。すなわち、既存のソースコード２に対して、新規のソースコード２との相違点（変更箇所）を反映する。
【００４９】
また、開発端末１０のソースコード作成部１２は、ソースコード３を、クライアント３０の表示画面プログラムに追記する。これにより、クライアント３０は、一覧表示コントロールで必要な初期設定について、サーバ２０側と整合性を保つことができる。
【００５０】
クライアント３０の一覧表示用処理部３１は、表示画面プログラムに従って、表示画面３２内に独立した小さな画面領域（ウィンドウ：ｗｉｎｄｏｗ）を用意して、その中に一覧表示用情報（データ一覧情報）を表示する。
【００５１】
表示画面プログラムは、表示画面３２内にウィンドウ（ｗｉｎｄｏｗ）を表示するためのプログラムである。一覧表示用コントロールは、表示画面プログラムの中に存在し、ウィンドウ（ｗｉｎｄｏｗ）の中にデータを一覧表示するための機能又は関数である。
【００５２】
表示画面プログラムの例として、ウィンドウ（ｗｉｎｄｏｗ）内にデータを表示可能なアプリケーションソフトウェアを想定している。このようなアプリケーションソフトウェアの例として、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）やＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）等のマークアップ言語を用いた構造化文書を表示するブラウザ等も考えられる。但し、実際には、これらの例に限定されない。
【００５３】
一覧表示用処理部３１は、ソースコード３の内容を基に、クライアント３０側から、サーバ２０側の情報取得関数４を呼び出すために必要な情報を、クライアント３０上の表示画面プログラムに追加する。例えば、一覧表示用処理部３１は、ソースコード３の内容を基に、表示画面プログラムに所定の引数を渡したり、一覧表示用コントロールの設定情報を変更したりする。
【００５４】
なお、表示画面プログラムは、上記のような構造化文書である場合、サーバ２０上に存在していても良い。一覧表示用処理部３１は、ブラウザ等を用いてサーバ２０上の表示画面プログラムにアクセスした際に、この表示画面プログラムを取得（ダウンロード）して一時保存し、この表示画面プログラムに基づく内容を表示画面３２に表示する。この場合、一覧表示用処理部３１は、クライアント３０上に一時保存された表示画面プログラムに、ソースコード３の内容を追加することになる。
【００５５】
また、一覧表示用処理部３１は、ソースコード３がコンパイラ言語で記述されている場合、ソースコード３をコンパイル（又はビルド）してオブジェクトコードに変換し、このオブジェクトコードを新規の表示画面プログラムとして、既存の表示画面プログラムを更新しても良い。例えば、表示画面プログラムに埋め込まれた関数やコードが、ソースコード３に基づくオブジェクトコードを呼び出すものであれば、このオブジェクトコードさえ更新すれば、表示画面プログラムの更新は不要となる。
【００５６】
［ハードウェアの例示］
以下に、本発明に係る一覧表示自動作成システムを構成する具体的なハードウェアの例について説明する。
【００５７】
開発端末１０、サーバ２０、及びクライアント３０の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。なお、開発端末１０、サーバ２０、及びクライアント３０は、端末やサーバに限らず、中継機器や周辺機器でも良い。また、開発端末１０、サーバ２０、及びクライアント３０は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）でも良い。開発端末１０、サーバ２０、及びクライアント３０は、車両や船舶、航空機等の移動体に搭載されていても良い。
【００５８】
また、本発明に係る一覧表示自動作成システム自体が、単体の計算機等であっても良い。すなわち、開発端末１０、サーバ２０、及びクライアント３０は、同一の計算機でも良い。
【００５９】
図示しないが、上記のような計算機は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、ネットワークとの通信に用いられるインターフェースによって実現される。
【００６０】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路（ＩＣ：Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等が考えられる。
【００６１】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。また、バッファ（ｂｕｆｆｅｒ）やレジスタ（ｒｅｇｉｓｔｅｒ）でも良い。或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。
【００６２】
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。従って、電子機器等に搭載される１チップマイコンが、上記のプロセッサ及び上記のメモリを備えている事例が考えられる。
【００６３】
上記のインターフェースの例として、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【００６４】
また、ネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。
【００６５】
なお、開発端末１０、サーバ２０、及びクライアント３０内の各部（内部構成）は、モジュール（ｍｏｄｕｌｅ）、コンポーネント（ｃｏｍｐｏｎｅｎｔ）、或いは専用デバイス、又はこれらの起動（呼出）プログラムでも良い。
【００６６】
また、開発端末１０の仕様書作成部１１の例として、ＫＶＭ（キーボード・ビデオ・マウス）、コンソール（ｃｏｎｓｏｌｅ）、キーパッド（ｋｅｙｐａｄ）、タッチパネル（ｔｏｕｃｈ  ｐａｎｅｌ）、タブレット（ｔａｂｌｅｔ）等の入力装置、又は、各種の情報伝達媒体の読取装置が考えられる。或いは、仕様書作成部１１は、外部の入力装置や記憶装置等から情報を取得するためのインターフェース（Ｉ／Ｆ：ｉｎｔｅｒｆａｃｅ）でも良い。
【００６７】
また、クライアント３０の表示画面３２の例として、ＬＣＤ（液晶ディスプレイ）やＰＤＰ（プラズマディスプレイ）、有機ＥＬディスプレイ（ｏｒｇａｎｉｃ  ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ  ｄｉｓｐｌａｙ）等の表示装置、出力内容を用紙等に印刷するプリンタ等の印刷装置、又は、出力内容を壁やスクリーンに投影するプロジェクタ等の映写装置等が考えられる。或いは、表示画面３２は、外部の表示装置や記憶装置等に情報を出力するためのインターフェース（Ｉ／Ｆ）でも良い。すなわち、表示画面３２は、何らかの出力装置であれば良い。
【００６８】
但し、実際には、これらの例に限定されない。
【００６９】
［インターフェース仕様書の詳細］
図２を参照して、インターフェース仕様書１の詳細について説明する。
【００７０】
インターフェース仕様書１には、「関数名」と、「内容」と、「入力パラメータ」と、「出力パラメータ」と、「ソートキー」（ソートパラメータ）が記述されている。
【００７１】
「関数名」は、関数の名称を示す。ここでは、「関数名」には、「ＴＥＳＴ情報取得関数」を示す「ｆｕｎｃ＿ｔｅｓｔ」が記述されている。
【００７２】
「内容」は、関数の処理内容の説明文を示す。ここでは、「内容」には、「テストの情報を取得する」という旨の説明が記述されている。
【００７３】
「入力パラメータ」は、関数に入力される変数を定義した情報を示す。「入力パラメータ」には、「日本語名」、「変数名」、「ＳＱＬで使用するかどうかの区分」、「変数の型」、「桁数」がテーブル形式で記述されている。ここでは、入力パラメータのテーブルの１行目には、「日本語名：入力１」、「変数名：ｉｎｐｕｔ１」、「ＳＱＬで使用するかどうかの区分：する」、「変数の型：ＣＨＡＲ」、「桁数：５」が記述されている。また、入力パラメータのテーブルの２行目には、「日本語名：入力２」、「変数名：ｉｎｐｕｔ２」、「ＳＱＬで使用するかどうかの区分：しない」、「変数の型：ＩＮＴ」、「桁数：２」が記述されている。
【００７４】
「出力パラメータ」は、関数から出力される変数を定義した情報を示す。「出力パラメータ」には、「日本語名」、「変数名」、「変数の型」、「桁数」、「ＳＱＬの列の順番」がテーブル形式で記述されている。ここでは、出力パラメータのテーブルの１行目には、「日本語名：項目Ａ」、「変数名：ｏｕｔｐｕｔ＿ａ」、「変数の型：ＩＮＴ」、「桁数：１」、「ＳＱＬの列の順番：１」が記述されている。また、出力パラメータのテーブルの２行目には、「日本語名：項目Ｂ」、「変数名：ｏｕｔｐｕｔ＿ｂ」、「変数の型：ＣＨＡＲ」、「桁数：４」、「ＳＱＬの列の順番：３」が記述されている。また、出力パラメータのテーブルの３行目には、「日本語名：項目Ｃ」、「変数名：ｏｕｔｐｕｔ＿ｃ」、「変数の型：ＣＨＡＲ」、「桁数：５」、「ＳＱＬの列の順番：４」が記述されている。
【００７５】
「ソートキー」（ソートパラメータ）は、並び替えに必要なキーとなる変数を定義した情報を示す。「ソートキー」には、優先順位が高い順に、「日本語名」、「変数名」、「変数の型」、「桁数」、「ＳＱＬの列の順番」、「昇順／降順」がテーブル形式で記述されている。ここでは、ソートキー（ソートパラメータ）のテーブルの１行目には、「日本語名：キーＡ」、「変数名：ｋｅｙ＿ａ」、「変数の型：ＩＮＴ」、「桁数：１」、「ＳＱＬの列の順番：１」、「昇順／降順：昇順」が記述されている。また、ソートキー（ソートパラメータ）のテーブルの２行目には、「日本語名：キーＢ」、「変数名：ｋｅｙ＿ｂ」、「変数の型：ＣＨＡＲ」、「桁数：４」、「ＳＱＬの列の順番：２」、「昇順／降順：降順」が記述されている。また、ソートキー（ソートパラメータ）のテーブルの３行目には、「日本語名：キーＣ」、「変数名：ｋｅｙ＿ｃ」、「変数の型：ＣＨＡＲ」、「桁数：４」、「ＳＱＬの列の順番：３」、「昇順／降順：降順」が記述されている。
【００７６】
［ＳＱＬファイルの詳細］
図３を参照して、ＳＱＬファイル５の詳細について説明する。
【００７７】
ＳＱＬファイル５には、データ取得のためのＳＱＬ文が記述されている。
【００７８】
当該ＳＱＬ文は、「ＳＥＬＥＣＴ  “テーブル別名”．“フィールド１”  “フィールド別名”  ＦＲＯＭ  “テーブル名”  “テーブル別名”  ＷＨＥＲＥ  “条件式１”  ＡＮＤ  “条件式２”」という構文で記述されている。
【００７９】
図３に示すＳＱＬ文には、「ＳＥＬＥＣＴ  ｔ１．ａ  ａ，  ｔ２．ｂ  ｂ，  ｔ１．ｃ  ｃ，  ｔ２．ｄ  ｄ  ＦＲＯＭ  ｔｅｓｔ１＿ｔａｂｌｅ  ｔ１，  ｔｅｓｔ２＿ｔａｂｌｅ  ｔ２  ＷＨＥＲＥ  ｔ１．ｋｅｙ１＝ｔ２．ｋｅｙ１  ＡＮＤ  ａ＞：ｉｎｐｕｔ１」と記述されている。
【００８０】
「：」が文字列の頭にある変数は「バインド変数」を示す。バインド変数は、データベースを操作するプログラムを作成する際に、ＳＱＬ文に埋め込まれる当該プログラムの変数である。ここでは、バインド変数は、図２に示すインターフェース仕様書１の入力パラメータ「入力１」の変数「ｉｎｐｕｔ１」である。
【００８１】
すなわち、図３に示すＳＱＬ文には、「ｔｅｓｔ＿ｔａｂｌｅ１」（テーブル別名「ｔ１」とする）、「ｔｅｓｔ＿ｔａｂｌｅ２」（テーブル別名「ｔ２」とする）という２つのテーブルのレコードを検索し、テーブル「ｔ１」のフィールド「ｋｅｙ１」の値がテーブル「ｔ２」のフィールド「ｋｅｙ１」の値と等しく、テーブル「ｔ１」のフィールド「ａ」の値がバインド変数「ｉｎｐｕｔ１」の値より大きいという条件を満たす場合、テーブル「ｔ１」のフィールド「ａ」と、テーブル「ｔ２」のフィールド「ｂ」と、テーブル「ｔ１」のフィールド「ｃ」と、テーブル「ｔ２」のフィールド「ｄ」を出力する旨が記載されている。
【００８２】
［処理手順］
図４を参照して、本発明に係る一覧表示自動作成システムの処理手順について詳細に説明する。
【００８３】
（１）ステップＳ１０１
仕様書作成部１１は、表計算ソフトを使用し、インターフェース仕様書１を作成する。
【００８４】
このとき、仕様書作成部１１は、インターフェース仕様書１に、図２に示すように、「入力パラメータ」、「出力パラメータ」、及び「ソートキー」（並び替えに必要なキー）の情報を記述する。
【００８５】
ここでは、仕様書作成部１１は、「入力パラメータ」に、「日本語名」、「変数名」、「ＳＱＬで使用するかどうかの区分」、「変数の型」、「桁数」を記述する。
【００８６】
また、仕様書作成部１１は、「出力パラメータ」に、「日本語名」、「変数名」、「変数の型」、「桁数」、「ＳＱＬの列の順番」を記述する。なお、「ＳＱＬの列の順番」は、「データを取得するためのＳＱＬのＳＥＬＥＣＴ句の要素の何番目にあたるか」を示す。
【００８７】
また、仕様書作成部１１は、「ソートキー」に、優先順位が高い順に、「日本語名」、「変数名」、「変数の型」、「桁数」、「ＳＱＬの列の順番」、「昇順／降順」を記述する。なお、「昇順／降順」は、「昇順で並べるか降順で並べるか」を示す。
【００８８】
（２）ステップＳ１０２
ソースコード作成部１２は、このインターフェース仕様書１から、「関数の名前」や「引数」を抽出し、「関数の宣言文」や「処理文」を含むソースコード２やソースコード３を、マクロ等によって作り出す。
【００８９】
このとき、ソースコード作成部１２は、「引数」として、「入力パラメータに記述された値」や「出力パラメータに記述された値」に加えて、以下のような「共通の入力引数／出力引数」を追加する。
【００９０】
ここでは、ソースコード作成部１２は、「共通の入力引数」として、「取得最大行数」や「先頭行のソートキーの値をまとめたもの」（以下、ポジションキーと呼ぶ）を追加する。
【００９１】
また、ソースコード作成部１２は、「共通の出力引数」として、「取得行数」、「取得したデータより前にデータが存在するかの区分（データあり／なし）」（以下、トップフラグと呼ぶ）、「取得したデータより後にデータが存在するかの区分（データあり／なし）」（以下、エンドフラグと呼ぶ）、及び「取得したデータの最後のポジションキー」（以下、エンドポジションキーと呼ぶ）を追加する。
【００９２】
また、ソースコード作成部１２は、「処理文」として、「共通関数６の呼び出し」、「共通関数６の引数に設定する値の代入」、及び「共通関数６で取得したデータを関数の出力引数に代入する処理」を記述する。
【００９３】
（３）ステップＳ１０３
ソースコード作成部１２は、ソースコード２を出力する。サーバ２０は、ソースコード２を入力する。ここでは、ソースコード２は、コンパイラ言語で記述されているものとする。サーバ２０のデータベース管理部２２は、ＤＢＭＳとして機能し、インターフェース仕様書１から作成された関数のソースコード２をコンパイル（又はビルド）して情報取得関数４に変換し、この情報取得関数４を登録する。
【００９４】
（４）ステップＳ１０４
ソースコード作成部１２は、ソースコード３を出力する。クライアント３０は、ソースコード３を入力する。クライアント３０の一覧表示用処理部３１は、ソースコード３を基に、サーバ２０側の情報取得関数４を呼び出すために必要な情報を、一覧表示コントロールの関数を使用して設定する。
【００９５】
（５）ステップＳ１０５
一覧表示用処理部３１は、一覧表示用コントロールを使用し、サーバ２０にアクセスし、サーバ２０に登録された情報取得関数４を呼び出す。
【００９６】
（６）ステップＳ１０６
データベース管理部２２は、クライアント３０側からの呼び出しに応じて、情報取得関数４の処理を実行する。
【００９７】
（７）ステップＳ１０７
データベース管理部２２は、情報取得関数４の処理を実行した場合、共通関数６を呼び出す。なお、共通関数６は、情報取得関数４に含まれている。情報取得関数４と共通関数６は、別のファイルに記述されていても良い。
【００９８】
（８）ステップＳ１０８
データベース管理部２２は、共通関数６の処理を実行した場合、入力引数のソートキーの情報を基に、ＳＱＬの「ＷＨＥＲＥ」句、並びに「ＯＲＤＥＲ  ＢＹ」句を作成し、ＳＱＬファイル５のＳＱＬ文に追加し、実行するＳＱＬ文を作成する処理と、バインド変数に値を代入し、このＳＱＬ文を実行して、ＳＱＬ文の実行結果を取得する処理を行う。
【００９９】
（９）ステップＳ１０９
一覧表示用処理部３１は、ドキュメントを利用したページング処理を含む一覧表示用情報の自動作成を行い、表示画面３２に一覧表示する。
【０１００】
［クライアント側のソースコードの作成・出力］
以下に、図４のステップＳ１０２及びステップＳ１０４におけるソースコード３の作成・出力の処理の例について説明する。
【０１０１】
クライアント３０側のプログラムとなる一覧表示用コントロールは、情報取得関数５の呼び出しに必要な引数指定の関数を持ち、サーバ２０に登録されている情報取得関数５を呼び出し、情報取得関数５から取得したデータを表形式で表示する機能を持つ。
【０１０２】
開発端末１０のソースコード作成部１２は、マクロを用いて、インターフェース仕様書１から引数の値を抽出し、この一覧表示用コントロールが持つ引数指定の関数に、それらの引数の値を入れた形で、ソースコード３を作成して出力する。
【０１０３】
［情報取得関数の呼び出し処理］
以下に、図４のステップＳ１０５における情報取得関数５の呼び出し処理の例について説明する。
【０１０４】
クライアント３０の一覧表示用処理部３１は、一覧表示用コントロールを使用する表示画面プログラムにソースコード３を追加して、一覧表示用コントロールに、情報取得関数５を呼び出す関数と、次のページを読み込む動作を行う関数を用意し、その関数で使用される引数に入れるべき値であるポジションキーと取得最大行数等を設定する。
【０１０５】
一覧表示用処理部３１は、表示画面プログラムを実行し、その表示画面プログラムを実行することで、サーバ２０に登録されている情報取得関数５を呼び出す。
【０１０６】
［共通関数の処理］
以下に、図４のステップＳ１０８における共通関数６の処理の流れについて説明する。
【０１０７】
ここでは、インターフェース仕様書１は、図２に示すとおりである。また、ＳＱＬファイル５は、図３に示すとおりである。
【０１０８】
［「ＷＨＥＲＥ」句の作成］
サーバ２０のデータベース管理部２２は、「ＷＨＥＲＥ」句を作成する手順を、図２に示すインターフェース仕様書１の「ソートキー」（ソートパラメータ）の数に応じたステップ数で行う。
【０１０９】
ここでは、データベース管理部２２は、図３に示すＳＱＬファイル５内の「ＷＨＥＲＥ」句に追加するＳＱＬ文を記述する。
【０１１０】
［「キーＡ」の部分の作成］
まず、データベース管理部２２は、ＳＱＬファイル５内の「ＷＨＥＲＥ」句と処理の混合を避けるため、「ＡＮＤ」と「括弧で括った文字列」を作成し、その文字列の中に、図２に示すインターフェース仕様書１の「ソートキー」（ソートパラメータ）で１番上に記述された「キーＡ」の部分を作成する。
【０１１１】
データベース管理部２２は、図２に示すインターフェース仕様書１の「ソートキー」（ソートパラメータ）において、「キーＡ」の「変数名」は「ｋｅｙ＿ａ」と指定され、「キーＡ」の「ＳＱＬの列の順番」は「１」（ＳＱＬファイル５の一列目）と指定され、「キーＡ」の「昇順／降順」は「昇順」と指定されているので、「（（ｔ１．ａ  ＞  ：ｋｅｙ＿ａ））」と記述する。変数「ｋｅｙ＿ａ」は、「：」が文字列の頭にあるため、バインド変数である。
【０１１２】
すなわち、データベース管理部２２は、図５の（１）に示すように、「ＡＮＤ  （（（ｔ１．ａ  ＞  ：ｋｅｙ＿ａ）））」と記述する。
【０１１３】
［「キーＢ」の部分の作成］
次に、データベース管理部２２は、図２に示すインターフェース仕様書１の「ソートキー」（ソートパラメータ）で２番目に記述された「キーＢ」の部分を作成する。
【０１１４】
データベース管理部２２は、図２に示すインターフェース仕様書１の「ソートキー」（ソートパラメータ）において、「キーＢ」の「変数名」は「ｋｅｙ＿ｂ」と指定され、「キーＢ」の「ＳＱＬの列の順番」は「２」（ＳＱＬファイル５の二列目）と指定され、「キーＢ」の「昇順／降順」は「降順」と指定されているので、「（（ｔ２．ｂ  ＜  ：ｋｅｙ＿ｂ））」と記述する。変数「ｋｅｙ＿ｂ」は、「：」が文字列の頭にあるため、バインド変数である。
【０１１５】
「キーＢ」は、「キーＡ」の部分の条件で順序が決まらない場合、すなわち「キーＡ」がバインド変数に代入する値と同じときのみ考慮する値なので、その条件を示す「（（ｔ１．ａ  ＝  ：ｋｅｙ＿ａ）  ＡＮＤ  （ｔ２．ｂ  ＜  ：ｋｅｙ＿ｂ））」を「ＯＲ」で括り、「キーＡ」の部分の後に追加する。
【０１１６】
すなわち、データベース管理部２２は、図５の（２）に示すように、「キーＡ」の部分の後に「キーＢ」の部分を追加して、「ＡＮＤ  （（（ｔ１．ａ  ＞  ：ｋｅｙ＿ａ）））  ＯＲ  （（ｔ１．ａ  ＝  ：ｋｅｙ＿ａ）  ＡＮＤ  （ｔ２．ｂ  ＜  ：ｋｅｙ＿ｂ））」と記述する。
【０１１７】
［「キーＣ」の部分の作成］
次に、データベース管理部２２は、図２に示すインターフェース仕様書１の「ソートキー」（ソートパラメータ）で３番目に記述された「キーＣ」の部分を作成する。
【０１１８】
データベース管理部２２は、図２に示すインターフェース仕様書１の「ソートキー」（ソートパラメータ）において、「キーＣ」の「変数名」は「ｋｅｙ＿ｃ」と指定され、「キーＣ」の「ＳＱＬの列の順番」は「３」（ＳＱＬファイル５の三列目）と指定され、「キーＣ」の「昇順／降順」は「降順」と指定されているので、「（（ｔ１．ｃ  ＜  ：ｋｅｙ＿ｃ））」と記述する。変数「ｋｅｙ＿ｃ」は、「：」が文字列の頭にあるため、バインド変数である。
【０１１９】
「キーＣ」は、「キーＢ」の部分の条件でも順序が決まらない場合、すなわち「キーＡ」及び「キーＢ」のそれぞれがバインド変数に代入する値と同じときのみ考慮する値なので、その条件を示す「（（ｔ１．ａ  ＝  ：ｋｅｙ＿ａ）  ＡＮＤ  （ｔ２．ｂ  ＝  ：ｋｅｙ＿ｂ）  ＡＮＤ  （ｔ１．ｃ  ＜  ：ｋｅｙ＿ｃ））」を「ＯＲ」で括り、「キーＢ」の部分の後に追加する。
【０１２０】
すなわち、データベース管理部２２は、図５の（３）に示すように、「キーＢ」の部分の後に「キーＣ」の部分を追加して、「ＡＮＤ  （（（ｔ１．ａ  ＞  ：ｋｅｙ＿ａ）））  ＯＲ  （（ｔ１．ａ  ＝  ：ｋｅｙ＿ａ）  ＡＮＤ  （ｔ２．ｂ  ＜  ：ｋｅｙ＿ｂ））  ＯＲ  （（ｔ１．ａ  ＝  ：ｋｅｙ＿ａ）  ＡＮＤ  （ｔ２．ｂ  ＝  ：ｋｅｙ＿ｂ）  ＡＮＤ  （ｔ１．ｃ  ＜  ：ｋｅｙ＿ｃ））」と記述する。
【０１２１】
［「ＷＨＥＲＥ」句の作成の終了］
ここでは、図２に示すインターフェース仕様書１の「ソートキー」（ソートパラメータ）に記述されているキーは、「キーＡ」、「キーＢ」、「キーＣ」の３つだけであるが、他にキーがあったとしても、同じようにキーの部分を作成して追加する処理を行う。図２に示すインターフェース仕様書１の「ソートキー」（ソートパラメータ）に記述されている全てのキーの部分の記述が終われば、「ＷＨＥＲＥ」句の作成の処理を終了する。
【０１２２】
［「ＯＲＤＥＲ  ＢＹ」句の作成］
また、データベース管理部２２は、「ＯＲＤＥＲ  ＢＹ」句を作成する際、図２に示すインターフェース仕様書１の「ソートキー」（ソートパラメータ）で指定したＳＱＬの列の順番と昇順・降順かを考慮し、「ＯＲＤＥＲ  ＢＹ」句を作成する。
【０１２３】
当該「ＯＲＤＥＲ  ＢＹ」句は、「ＯＲＤＥＲ  ＢＹ  “フィールド１”  ［ＡＳＣ，  ＤＥＳＣ］，  “フィールド２”  ［ＡＳＣ，  ＤＥＳＣ］，  “フィールド３”  ［ＡＳＣ，  ＤＥＳＣ］」という構文で記述されている。
【０１２４】
ここでは、データベース管理部２２は、「ＯＲＤＥＲ  ＢＹ」句として、「ＯＲＤＥＲ  ＢＹ  １  ＡＳＣ，２  ＤＥＳＣ  ，３  ＤＥＳＣ」と記述する。
【０１２５】
「ＡＳＣ」（ａｓｃｅｎｄｉｎｇ：昇順）は、結果が昇順に並ぶことを表し、「ＤＥＳＣ」（ｄｅｓｃｅｎｄｉｎｇ：降順）は、結果が降順に並ぶことを表す。その両者とも記述されていない場合、「ＡＳＣ」を使うことになる。
【０１２６】
データベース管理部２２は、ＳＱＬ文の実行時には、「ソートキー」（ソートパラメータ）の処理として、ポジションキーを桁数によって「ソートキー」（ソートパラメータ）単位に分割し、それぞれをバインド変数に代入し、加えて図２に示すインターフェース仕様書１の入力パラメータもバインド変数に代入する。
【０１２７】
データベース管理部２２は、ＳＱＬ文の実行後、取得した最後の行の値を繋げたものを「エンドポジションキー」として、ポジションキーが指定された場合には、「トップフラグ」を「データあり」とし、取得行数以上にデータがあった場合には、「エンドフラグ」を「データあり」として、ＳＱＬ文の実行によって取得したデータ（ＳＱＬ実行結果）を、それぞれ配列として呼び出し元の関数に返す。ここでは、呼び出し元の関数は、クライアント３０の一覧表示用コントロールに用意された情報取得関数５を呼び出す関数である。
【０１２８】
［一覧表示の処理］
以下に、図４のステップＳ１０９における一覧表示の処理の例について説明する。
【０１２９】
クライアント３０の一覧表示用処理部３１は、表示画面プログラムによる本来の表示内容に、情報取得関数５から取得したデータ（ＳＱＬ実行結果）を追記して、ドキュメントを利用したページング処理を含む一覧表示用情報の自動作成を行い、表示画面３２に一覧表示することで、情報取得関数５の呼び出し処理を完了する。
【０１３０】
一覧表示用処理部３１は、表示画面プログラムにおいて、ボタン押下等のイベントに応じて、一覧表示用コントロールに用意された次のページを読み込む動作を行う関数を呼び出すことで、ページの遷移を実現する。
【０１３１】
なお、一覧表示用処理部３１は、「トップフラグ」が「データあり」であれば、前ページに遷移するためのボタンを表示／有効化し、「エンドフラグ」が「データあり」であれば、後ページに遷移するためのボタンを表示／有効化する。
【０１３２】
［本実施形態の効果］
本発明では、複雑なページングの処理は共通関数に、ＳＱＬはＳＱＬファイルに記述されているため、共通関数を呼び出すソースには、インターフェース仕様書１に記述された必要最小限の情報のみ記述しているため、可読性が大幅に改善し、拡張性にも繋がる。
【０１３３】
また、それぞれの役割でファイルが分かれているため、修正範囲が最小限になる。
【０１３４】
また、クライアント側のソースも同時に作成することで、それぞれのソースの食い違いの発生も防ぐことができる。
【０１３５】
従来の類似システムでは、インターフェース仕様書を作ってあったとしても、サーバとクライアントのプログラムは、ほとんどの場合、違うプログラミング言語で作成されたプログラミングであり、それぞれのプログラムを別々で作成する必要が出てくる。引数が多くなった場合、それぞれのプログラムで使用される変数の名称や型式、桁数等を合わせるのは、非常に手間のかかる作業になる可能性がある。
【０１３６】
本発明では、サーバ側のプログラムもクライアント側のプログラムもインターフェース部分を記述する部分を単純化し、それぞれのプログラムを作成する際に、インターフェース仕様書から必要な情報を抽出する仕組みになっているため、それぞれのプログラムでの食い違いの心配がない。
【０１３７】
＜本発明の特徴＞
本発明に係る一覧表示自動作成システムは、ページング処理を含む一覧表示用情報の自動作成を行うものである。
【０１３８】
本発明に係る一覧表示自動作成システムは、サーバクライアント間のインターフェース仕様書から、ＳＱＬを含む手続き型言語のプログラムと、それを呼び出すクライアントのプログラムを、マクロを使うことで出力する。
【０１３９】
本発明に係る一覧表示自動作成システムは、実際に内容を取得するための基本的なＳＱＬさえ記述すれば、複雑な処理を意識することなく、ページング処理を含む一覧表示用情報を作成することができる。すなわち、ＳＱＬファイルの作成／変更のみで、一覧データ毎に個別の表示画面を実現することができる。
【０１４０】
具体的には、本発明に係る一覧表示自動作成システムでは、サーバ側で作成するデータベースから情報を取得する情報取得関数のページング処理を共通関数という形でパッケージ化し、情報取得関数のソースに記述する内容を必要最低限にする。
【０１４１】
このように、表計算ソフトで作成したサーバクライアント間のインターフェース仕様書の要素を単純変換することで、サーバ側の状態取得関数のソースコードを自動作成する。また、クライアント側のソースも関数呼び出しの部分のみ作成を行い、クライアント側のプログラムに追記できるようにする。
【０１４２】
すなわち、本発明に係る一覧表示自動作成システムの要旨は、「ページング処理をパッケージ化した共通関数の仕組み」と、「仕様書から、サーバ側とクライアント側の両方のプログラムのソースコードを作成する点」にある。
【０１４３】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【０１４４】
（付記１）
サーバクライアント間のインターフェース仕様書を基に、ＳＱＬを含む手続き型言語のサーバ側のプログラムのソースコードと、前記サーバ側のプログラムを呼び出すクライアント側のプログラムのソースコードとを出力する開発端末と、
データベースを管理し、前記サーバ側のプログラムの呼び出しに応じて、前記サーバ側のプログラムを実行し、前記サーバ側のプログラムに従って、ページング処理をパッケージ化した共通関数の処理を実行するサーバと、
前記クライアント側のプログラムに従って、前記サーバ側のプログラムを呼び出し、前記データベースを検索し、検索結果について、複数ページに分割し表示を行うページング処理を含む一覧表示を行い、意味ある並びを持つ一覧を、データの削除・追加があった場合でもその並びを維持したまま、一定行の一覧に分割して表示を行うクライアントと
を含む
一覧表示自動作成システム。
【０１４５】
（付記２）
付記１に記載の一覧表示自動作成システムであって、
前記開発端末は、
表計算ソフトを使用して前記インターフェース仕様書を作成する手段と、
前記インターフェース仕様書の要素を単純変換し、前記サーバ側で前記データベースから情報を取得する状態取得関数のソースコードを自動作成して前記サーバに提供し、前記クライアント側のソースコードとして、前記状態取得関数の呼び出しの部分のソースコードを作成して前記クライアントに提供する手段と、
前記状態取得関数のソースコードを自動作成する際、前記情報取得関数におけるページング処理を、共通関数という形でパッケージ化し、前記情報取得関数のソースコードに記述する内容を必要最低限に抑える手段と
を具備する
一覧表示自動作成システム。
【０１４６】
（付記３）
付記２に記載の一覧表示自動作成システムであって、
前記開発端末は、
前記表計算ソフトを使用して前記インターフェース仕様書を作成する際、前記インターフェース仕様書に、入力パラメータ、出力パラメータ、並び替えに必要なソートキーの情報をそれぞれ記述する手段と、
前記インターフェース仕様書を基に、関数の名前、引数を抽出し、関数の宣言文、処理文を、マクロを使用して作成する手段と、
引数には、入力パラメータに記述された値、出力パラメータに記述された値に加えて、共通の入力引数として、取得最大行数、先頭行のソートキーの値をまとめたポジションキーを追加し、共通の出力引数として、取得行数、取得したデータより後のデータが存在するかの区分を示すエンドフラグ、取得したデータの最後のポジションキーを示すエンドポジションキーを追加する手段と、
処理文には、前記共通関数の呼び出し、前記共通関数の引数に設定する値の代入、前記共通関数で取得したデータを関数の出力引数に代入する処理を記述する手段と
を更に具備する
一覧表示自動作成システム。
【０１４７】
（付記４）
付記１乃至３のいずれかに記載の一覧表示自動作成システムであって、
前記サーバは、
前記クライアント側の関数からの呼び出しに応じて前記情報取得関数の処理を実行した場合、前記情報取得関数の処理に従って前記共通関数を呼び出す手段と、
前記共通関数の処理に従ってＳＱＬファイルを読み込む手段と、
入力引数のソートキーの情報を基に、ＳＱＬの「ＷＨＥＲＥ」句、並びに「ＯＲＤＥＲ  ＢＹ」句を作成し、前記ＳＱＬファイルのＳＱＬ文に追加し、実行するＳＱＬ文を作成する処理を行う手段と、
バインド変数に値を代入し、前記ＳＱＬ文を実行する手段と、
前記ＳＱＬ文の実行によって取得したデータを、前記呼び出し元の関数に返す処理を行う手段と
を具備する
一覧表示自動作成システム。
【０１４８】
（付記５）
付記４に記載の一覧表示自動作成システムであって、
前記サーバは、
前記ＳＱＬ文を実行する際、ポジションキーを桁数によってソートキー単位に分割し、それぞれのソートキーをバインド変数に代入し、前記ＳＱＬ文を実行する手段と、
前記ＳＱＬ文の実行後、取得した最後の行の値を繋げたものを「エンドポジションキー」として、ポジションキーが指定された場合には「トップフラグ」を「データあり」とし、取得行数以上にデータがあった場合には「エンドフラグ」を「データあり」として、前記ＳＱＬ文の実行によって取得したデータを、それぞれ配列として前記呼び出し元の関数に返す手段と
を具備する
一覧表示自動作成システム。
【０１４９】
（付記６）
付記１乃至５のいずれかに記載の一覧表示自動作成システムであって、
前記クライアントは、
前記クライアント側のソースコードを基に、前記サーバ側の前記情報取得関数を呼び出すための情報を前記一覧表示コントロールの関数を使用して設定する処理を行う手段と、
前記クライアント側の一覧表示用コントロールに対して、次のページを読み込む動作を行う関数を用意し、該関数で使用される引数に入力する値となるポジションキーと取得最大行数とを設定する手段と
を具備する
一覧表示自動作成システム。
【０１５０】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【符号の説明】
【０１５１】
１…  インターフェース仕様書
２…  ソースコード
３…  ソースコード
４…  情報取得関数
５…  ＳＱＬファイル
６…  共通関数
１０…  開発端末
１１…  仕様書作成部
１２…  ソースコード作成部
２０…  サーバ
２１…  データベース
２２…  データベース管理部
３０…  クライアント
３１…  一覧表示用処理部
３２…  表示画面
【図１】
2013008271.tif 000003
【図２】
2013008271.tif 000004
【図３】
2013008271.tif 000005
【図４】
2013008271.tif 000006
【図５】
2013008271.tif 000007