問16 プログラム設計に関する次の記述を読んで,設問 1 〜 3 に答えよ。
ある企業では,社内で作成される報告書などのさまざまな文書ファイルを検索するシステムを,開発することになった。
社内の文書と文書ファイルの概要及びプログラムの概要は,次のとおりである。
[社内の文書と文書ファイルの概要]
| (1) | 文書の様式は,部署やプロジェクトによって異なり,統一されていない。例えば,作業報告書の場合,印刷結果は図1に示すようになる。
![]() |
| (2) | すべての文書は,“<”と“>”で囲まれたタグによって文書の構造を,タグの間の文字列で文書の内容を示す形式の文書ファイルとして保存されている。 |
| (3) | 文書の作成年月日,作成者氏名及び表題は,文書の最初に順不同で記述されている。ただし,作成年月日と作成者氏名の一方又は両方が記述されていない場合がある。 |
| (4) | 文書に作成者氏名が記述されている場合には,社員名簿に記載された氏名が使われていて,一つだけが1行に記述されている。 |
| (5) | 文書に作成年月日が記述されている場合には,次の例のようなさまざまな様式となっている。
例:平成12年3月31日 2000-03-31 2000年3月31日 文書に記述される作成年月日は,一つだけが1行に記述されている。 |
| (6) | 文書には,表題が一つだけ必ず記述されている。 |
| (7) | すべての文書ファイルには“<body>”と“<p>”というタグが含まれており,この二つのタグの間に文書の作成年月日,作成者氏名及び表題が含まれている。
なお,文書ファイル中には,タグを示す以外には“<”と“>”の文字は使われていないものとする。 ![]() |
[プログラムの概要]
サーバに格納されたすべての文書ファイルに,次の検索処理を行う。
| (1) | 文書の作成年月日,作成者氏名及び表題の文字列のいずれか又はそれらの組合せを検索キーとして,該当する文書ファイルをすべて抽出する。検索キーとして指定した文字列と一致するか,それを一部に含む文書ファイルを抽出する。 | |||
| (2) | 文書ファイルからデータを抽出する方法は,次のとおりである。
|
|||
| (3) | 指定した検索キーと一致する文書ファイルが存在した場合には,該当するファイル名をすべて出力する。存在しなかった場合には,その旨のメッセージを出力する。 | |||
| (4) | プログラムのモジュール構成の一部を図3に示す。 |

設問1
図3のモジュール構成の“2. 文書ファイルごとの処理”にちは,繰返し処理を示す記号が記されている。図3には,このほかに繰返し処理を示す記号が必要なモジュールがもう一つある。このモジュールとして正しいものを,解答群の中から選べ。解答群
| ア | 1. 検索キーの指定 |
| イ | 2.1 文書ファイルの読込み |
| ウ | 2.2 該当データの抽出とデータ種別判定 |
| エ | 2.2.1 該当データの抽出 |
| オ | 2.2.2 抽出データの種別判定 |
| カ | 2.2.2.1 氏名の判定 |
| キ | 2.2.2.2 年月日の判定と変換 |
| ク | 2.3 検索キーとの照合 |
| ケ | 3. 検索結果の出力 |
設問2
図3のモジュール構成の“2.2.1 該当データの抽出”の中で,文字列を走査する処理が終了する条件として正しい答えを,解答群の中から選べ。解答群
| ア | 処理中の文書ファイルの文字列を走査して,“<”を読み込んだとき |
| イ | 処理中の文書ファイルの文字列を走査して,“<body>”を読み込んだとき |
| ウ | 処理中の文書ファイルの文字列を走査して,“<p>”を読み込んだとき |
| エ | 処理中の文書ファイルの文字列を走査して,“>”を読み込んだとき |
| オ | 処理中の文書ファイルの文字列を走査して,検索キーに該当する文字列が見つかったとき |
| カ | 処理中の文書ファイルの文字列を走査して,検索キーに該当する文字列が見つからなかったとき |
| キ | 処理中の文書ファイルの文字列を走査して,最後の位置まで読み込んだとき |
設問3
社内の文書量が増大すると,1件の検索に要する時間が非常に長くなることが分かった。そこであらかじめ各文書ファイルから文書の作成年月日,作成者氏名及び表題を抽出して別個に格納したファイル(検索項目ファイル)を作成することにした。検索の際には,この検索項目ファイルを参照して検索キーと照合し,該当する文書ファイルが見つかればそのファイル名を表示するという方式に作りかえることにした。解答群
検索項目ファイルの構成は図4のとおりである。
作成年月日 作成者氏名 表題 文書ファイル名 図4 検索項目ファイルの構成 新しい方式では,検索項目ファイルを作成するプログラムと,検索項目ファイルを検索するプログラムに分ける。検索項目ファイルを作成するプログラムは,図3の各モジュールのうち,幾つかをそのまま利用できる。利用できるすべてのモジュールの組合せとして正しい答えを,解答群の中から選べ。ここで,解答群中の“○”は利用できるモジュールを表す。
| ア | イ | ウ | エ | オ | カ | キ | ク | |
| 1. 検索キーの指定 | ○ | ○ | ||||||
| 2. 文書ファイルごとの処理 | ○ | ○ | ○ | ○ | ||||
| 2.1 文書ファイルの読込み | ○ | ○ | ○ | ○ | ||||
| 2.2 該当データの抽出とデータ種別判定 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |
| 2.2.1 該当データの抽出 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |
| 2.2.2 抽出データの種別判定 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |
| 2.2.2.1 氏名の判定 | ○ | ○ | ○ | ○ | ○ | ○ | ||
| 2.2.2.2 年月日の判定と変換 | ○ | ○ | ○ | ○ | ○ | ○ | ||
| 2.3 検索キーとの照合 | ○ | ○ |