問16 プログラム設計に関する次の記述を読んで,設問 1 〜 3 に答えよ。
ある企業では,社内で作成される報告書などのさまざまな文書ファイルを検索するシステムを, 開発することになった。
社内の文書と文書ファイルの概要及びプログラムの概要は,次のとおりである。
〔社内の文書と文書ファイルの概要〕
(1) 文書の様式は,部署やプロジェクトによって異なり,統一されていない。 例えば,作業報告書の場合,印刷結果は図 1 に示すようになる。
(2) すべての文書は,“<”と“>”で囲まれたタグによって文書の構造を, タグの間の文字列で文書の内容を示す形式の文書ファイルとして保存されている。
(3) 文書の作成年月日,作成者氏名及び表題は,文書の最初に順不同で記述されている。 ただし,作成年月日と作成者氏名の一方又は両方が記述されていない場合がある。
(4) 文書に作成者氏名が記述されている場合には,社員名簿に記載された氏名が使われていて, 一つだけが 1 行に記述されている。
(5) 文書に作成年月日が記述されている場合には,次の例のようなさまざまな様式となっている。
例:平成12年3月31日
2000-03-31
2000年3月31日 文書に記述される作成年月日は,一つだけが 1 行に記述されている。
(6) 文書には,表題が一つだけ必ず記述されている。
(7) すべての文書ファイルには“<body>”と“<p>”というタグが含まれており, この二つのタグの間に文書の作成年月日,作成者氏名及び表題が含まれている。 なお,文書ファイル中には,タグを示す以外には“<”と“>”の文字は 使われていないものとする。
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html lang="ja"> <head><meta http-equiv="content-type" content="text/html; charset=iso-2022-jp"> <title>報告書</title></head> <body> <div align="right">平成12年3月31日<br>山田太郎</div> <div align="center"><h1><u>3月度作業報告書</u></h1></div> <h2>1.概要</h2> <p>平成12年3月分の作業状況は,おおむね順調であり,新年度を控えて… :
〔プログラムの概要〕
サーバに格納されたすべての文書ファイルに,次の検索処理を行う。 (1) 文書の作成年月日,作成者氏名及び表題の文字列のいずれか又はそれらの組合せを 検索キーとして,該当する文書ファイルをすべて抽出する。検索キーとして指定した文字列と 一致するか,それを一部に含む文書ファイルを抽出する。 (2) 文書ファイルからデータを抽出する方法は,次のとおりである。 文書ファイルの先頭から文字列を走査し, “<body>”までを読み飛ばす。 “<”と“>”で囲まれた部分を タグとして認識し,“>”と“<”の間の文字列を抽出する。 の処理で抽出した文字列の種類を判別する。 ・文字列がない場合又は空白だけの場合には,何もしない。 ・抽出した文字列を基に社員名簿マスタファイルを検索し,マスタファイルの氏名と 一致した場合には,その文字列を文書の作成者氏名と見なす。 ・抽出した文字列が年月日を表すものであるかどうかを調べ,年月日であれば, その文字列を文書の作成年月日と見なして,“YYYY-MM-DD”の形式に変換する。 ・文字列が,氏名,年月日のどちらとも見なせなかった場合には,その文字列をその他のデータと見なす。 , の処理を次のいずれかの条件を満たすまで繰り返す。 ・文書の作成者氏名と見なされた文字列,文書の作成年月日と見なされた文字列及び その他のデータと見なされた文字列の 3 種類が抽出できた。 ・文書ファイルを走査中に“<p>”が出現した。 �ァ�〜の 処理で抽出した各文字列を対象として,検索キーと照合する。 ・検索キーに作成者氏名が指定された場合には,文書の作成者氏名と見なした文字列に, 検索キーの文字列が含まれるとき,一致したとする。 ・検索キーに作成年月日が指定された場合には,文書の作成年月日と見なした文字列と, 検索キーの年月日が同日であるとき,一致したとする。 ・検索キーに文書の表題が指定された場合には,その他のデータと見なした文字列に, 検索キーの文字列が含まれるとき,一致したとする。 (3) 指定した検索キーと一致する文書ファイルが存在した場合には,該当するファイル名を すべて出力する。存在しなかった場合には,その旨のメッセージを出力する。 (4) プログラムのモジュール構成の一部を,図 3 に示す。
解答群
ア 1. 検索キーの指定
イ 2.1 文書ファイルの読込み
ウ 2.2 該当データの抽出とデータ種別判定
エ 2.2.1 該当データの抽出
オ 2.2.2 抽出データの種別判定
カ 2.2.2.1 氏名の判定
キ 2.2.2.2 年月日の判定と変換
ク 2.3 検索キーとの照合
ケ 3. 検索結果の出力
ア 処理中の文書ファイルの文字列を走査して,“<”を読み込んだとき
イ 処理中の文書ファイルの文字列を走査して,“<body>”を読み込んだとき
ウ 処理中の文書ファイルの文字列を走査して,“<p>”を読み込んだとき
エ 処理中の文書ファイルの文字列を走査して,“>”を読み込んだとき
オ 処理中の文書ファイルの文字列を走査して,検索キーに該当する文字列が見つかったとき
カ 処理中の文書ファイルの文字列を走査して,検索キーに該当する文字列が見つからなかったとき
キ 処理中の文書ファイルの文字列を走査して,最後の位置まで読み込んだとき
新しい方式では,検索項目ファイルを作成するプログラムと,検索項目ファイルを 検索するプログラムに分ける。検索項目ファイルを作成するプログラムは, 図 3 の各モジュールのうち,幾つかをそのまま利用できる。 利用できるすべてのモジュールの組合せとして正しい答えを, 解答群の中から選べ。ここで,解答群中の“○”は利用できるモジュールを表す。
○
2.1 文書ファイルの読込み
2.2 該当データの抽出とデータ種別判定
2.2.1 該当データの抽出
2.2.2 抽出データの種別判定
2.2.2.1 氏名の判定
2.2.2.2 年月日の判定と変換
2.3 検索キーとの照合