平成25年春期試験午後問題 問5

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】

問5 ソフトウェア設計

社員の歩合給決定処理に関する次の記述を読んで,設問1~3に答えよ。

 生命保険会社 S 社の社員の毎月の給与は,基本給と歩合給とから成る。基本給は,社員の等級に応じて固定であり,歩合給は変動する。歩合給は,社員が担当する生命保険の前月末日時点の担当契約数に対して5件ごとに10,000円,担当契約からの月払保険料の合計が50,000円ごとに5,000円である。担当契約には,終了した保険契約は含まない。例えば,担当契約数が18件,月払保険料の合計が120,000円の場合,歩合給は40,000円となる。

〔契約マスタファイルの説明〕
 保険契約の情報は,10桁の数字列から成る証券番号の昇順に並んだ契約マスタファイル(以下,契約マスタという)で管理する。証券番号は,保険契約1件につき一意に付与する。契約マスタのレコード様式は,図1のとおりである。
pm05_1.png
  • 証券番号は,"0000000001"から始まる。
  • 契約年月日には,保険契約が有効になる年月日を格納し,終了年月日には,保険契約が終了した月日を格納する。終了していない保険契約の終了年月日は空白である。
     保険契約の終了は,保険契約の解約,満了,死亡時の保険金支払など幾つかの要因で発生する。これら全てを,"終了"として扱う。
  • 月払保険料には,契約者が支払う毎月の保険料の金額を格納する。終了した保険契約の月払保険料には 0 を格納する。
  • 保障額には,死亡時に支払う生命保険の保険金の金額を格納する。
  • 社員IDには,保険契約を担当する社員のIDを格納する。1件の保険契約は1名で担当し,保険契約の終了まで,担当する社員の変更はないものとする。
  • 満了年月日には,保険契約が満了する年月日を格納する。
  • 終了した保険契約のレコードは削除しない。


〔異動ファイルの説明〕
 新たな保険契約の締結,既存の保険契約の終了,及び既存の保険契約の月払保険料・保障額の変動を,異動事由という。異動事由が発生する都度,発生順に異動ファイルに1レコードを作成する。異動事由の発生は,1件の保険契約につき1日1回までである。
 異動ファイルは,これまで発生した全ての異動事由を記録したものであり,そのレコード様式は図2のとおりである。
pm05_2.png
 異動事由には,"新契約","増額","減額","終了"のいずれかを格納する。
 その他の項目には,異動事由に応じて契約マスタの更新に必要な値だけを格納する。異動事由が"新契約"のレコードの証券番号には,最後に発行した証券番号+1が 新規に採番される。異動ファイルの内容に誤りはないものとする。

〔契約マスタ更新処理〕
 毎日,異動ファイル中の前日発生分のレコードと前日の契約マスタ(以下,旧契約 マスタという)から,更新した契約マスタ(以下,新契約マスタという)を作成する。契約マスタ更新処理の流れを,図3に示す。
  • 異動事由が"新契約"の場合は,異動ファイルの当該レコードの情報から新たにレコードを作成して,新契約マスタに出力する。異動ファイルの当該レコードの異動年月日が,契約年月日となる。
  • 異動事由が"増額"又は"額減"の場合は,当該保険契約の月払保険料と保障額を,異動ファイルの当該レコードの情報で更新して,新契約マスタに出力する。
  • 異動事由が"終了"の場合は,当該保険契約の月払保険料を0にし,終了年月日を異動年月日に更新して,新契約マスタに出力する。
  • 契約マスタ更新処理の実行が日をまたぐことはない。
pm05_3.png
〔歩合給計算処理〕
 毎月1日に,契約マスタ更新処理が終了した後,契約マスタから,社員ごとの担当契約数及び月払保険料の合計を求めて当月の歩合給を計算し,歩合給ファイルに社員1人につき1レコードを追加する。
 歩合給ファイルのレコード様式を図4に,歩合給計算処理の流れを図5に示す。
pm05_4.png

設問1

表1に示す各処理の説明の に入れる正しい答えを,解答群の中から選べ。
a,d に関する解答群
  • 空白
  • 終了
  • 新契約
  • 前日
  • 前日より前
  • 当日
b,c に関する解答群
  • 異動事由
  • 異動年月日
  • 契約年月日
  • 社員ID
  • 終了年月日
  • 証券番号
解答選択欄
  • a:
  • b:
  • c:
  • d:
  • a=
  • b=
  • c=
  • d=

解説

aについて〕
「契約マスタ更新処理」は毎日行われ、異動ファイル中の前日発生分のレコードと旧契約マスタファイルから新しい契約マスタを出力する処理です。
したがって異動ファイルから異動年月日が前日のレコードを処理対象として抽出するのが適切です。

a=エ:前日

bについて〕
「契約マスタ更新処理」の処理3にて、旧契約マスタと中間ファイルT1で突き合わせ処理が行われることに注目します。

突き合わせ処理とは、「2つのファイル内のレコードを先頭からそれぞれ1件ずつ読込み、読み込まれたレコードを比較しながら処理をする」ことを読込み対象のレコードが無くなるまで繰り返す処理方法です。突き合わせ処理では先頭のレコードから順次比較が行われていくため、比較する2つのファイル内のレコードを、予め特定のキーを基準として整列しておく必要があります。
処理3は「T1と旧契約マスタを,証券番号をキーとして突き合わせ…」という説明があり、処理対象となる契約マスタファイルは「10桁の数字列から成る証券番号の昇順に並んだ…」形式のため、中間ファイルT1も旧契約マスタと同様に証券番号の昇順に整列しておく必要があります。

したがって処理2で行う整列のキーとして適切なものは「証券番号」になります。

b=カ:証券番号

cdについて〕
歩合給は「社員が担当する生命保険の前月末時点の担当契約」を基準に計算されるので、契約マスタから処理対象として抽出すべきは(終了している契約を除外した)前月末時点で契約が有効になっているレコードになります。

契約マスタの説明に「終了年月日には,保険が終了した年月日が格納され、終了していない保険契約の終了年月日は空白である」という記述があるので、"終了年月日"が"空白"のレコードを歩合給計算の処理対象として抽出することになります。

c=オ:終了年月日
d=ア:空白

設問2

図6は,T1と旧契約マスタを突き合わせて,新契約マスタを作成する処理3の流れ図である。図中の に入れる正しい答えを,解答群の中から選べ。
pm05_5.png
e,f,g に関する解答群
  • T1 から1レコードを読み込む
  • T1 のレコードの情報から新たにレコードを作成して新契約マスタに出力する
  • 旧契約マスタから1レコードを読み込む
  • 旧契約マスタのレコードの情報を T1 のレコードの情報で更新し,そのレコードを新契約マスタに出力する
  • 旧契約マスタのレコードをそのまま新契約マスタに出力する
  • 新契約マスタのレコードをそのまま出力する
解答選択欄
  • e:
  • f:
  • g:
  • e=
  • f=
  • g=

解説

eについて〕
eは、「T1には読込むべきレコードが残っていないが、旧契約マスタには残っている」とき、又は「T1証券番号>旧契約マスタ証券番号」の場合の処理になります。

証券番号は昇順に整列されて、ファイルの先頭から順次読み込まれているため「T1証券番号>旧契約マスタの証券番号」は、旧契約マスタの証券番号に対応するT1のレコードが存在しないことを示しています。これは旧契約マスタの現在読み込まれているレコードに対する異動がないことを意味するため、旧契約マスタの現在のレコードを新契約マスタにそのまま出力することになります。
同様に「T1には読込むべきレコードが残っていないが、旧契約マスタには残っている」場合も、旧契約マスタの残りのレコードに対する異動が存在しないことを意味するため、そのまま出力する処理が行われます。

e=オ:旧契約マスタのレコードをそのまま新契約マスタに出力する

fについて〕
fは、「T1証券番号=旧契約マスタ証券番号」のときの処理になります。

「T1証券番号=旧契約マスタの証券番号」は、現在読み込まれている旧契約マスタのレコードに対応するT1のレコードが存在することを示しています。これは旧契約マスタの現在読み込まれているレコードに対する異動があることを意味するため、旧契約マスタの現在のレコードとT1のレコードの内容から新たなレコードを作成し、新契約マスタに出力することになります。

f=エ:旧契約マスタのレコードをT1の情報で更新し,そのレコードを新契約マスタに出力する

gについて〕
gは、「旧契約マスタには読込むべきレコードが残っていないが、T1には残っている」場合の処理になります。

レコードは証券番号の昇順に整列されているため、旧契約マスタの読込みが完了した時点でT1に残っているレコードは、証券番号に「最後に発行した証券番号+1」が採番された異動事由"新契約"のレコードだけになります。したがってT1のレコードの内容から新たなレコードを作成し新契約マスタに出力することになります。

g=イ:T1のレコードから新たにレコードを作成して新契約マスタに出力する
pm05_8.png

設問3

歩合給の計算方法を変更して,新契約を成立させた月が,過去3か月間連続した場合は,当月の歩合給を2割増にする。過去3か月間連続して新契約を成立した社員の歩合給が0円である場合は,5,000円を歩合給として支給する。
 表2は,2013年5月1日時点の契約マスタからの,社員 A00001 と社員 B00001 のレコードの抜粋である。また,表3は,2013年4月30日の異動ファイルからの,社員 A00001 と社員 B00001 のレコードの抜粋である。2013年5月1日に,契約マスタを更新し,変更後の歩合給計算処理を実行したときの社員 A00001 と社員 B00001 の歩合給の組合せとして,正しい答えを,解答群の中から選べ。
pm05_6.png
解答群
pm05_7.png
解答選択欄
  •  
  •  

解説

表2"契約マスタ"を表3"異動ファイル"で更新すると以下の内容になります。
pm05_9.png
さらにこの表から終了している契約を除き、担当している社員IDごとに色分けすると以下のようになります。
pm05_10.png
続いて歩合給計算の基となる"契約数"と"月払保険料"を集計し、以下の基準で社員ごとに歩合給を計算します。
pm05_11.png

[社員 A00001]
契約数:6件
月払保険料:170,000円
3か月連続の新契約:○

したがって歩合給は、
 (10,000×1+5,000×3)×1.2=30,000(円)

[社員 B00001]
契約数:3件
月払保険料:28,000円
3か月連続の新契約:○

契約数と月払保険料が基準に満たないので計算される金額は0円になりますが、3か月連続の新契約の条件を満たしているので5,000円の歩合給が支給されることになります。

したがって適切な組合せは「オ」です。

Pagetop