戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2013年 春期 午後 問05


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

 生命保険会社S社の社員の毎月の給与は、基本給と歩合給とから成る。基本給は、社員の等級に応じて固定であり、歩合給は変動する。歩合給は、社員が担当する生命保険の前月末日時点の担当契約数に対して5件ごとに10,000円、担当契約からの月払保険料の合計が50,000円ごとに5,000円である。担当契約には、終了した保険契約は含まない。例えば、担当契約数が18件、月払保険料の合計が120,000円の場合、歩合給は40,000円となる。   〔契約マスタファイルの説明〕  保険契約の情報は、10桁の数字列から成る証券番号の昇順に並んだ契約マスタファイル(以下、契約マスタという)で管理する。証券番号は、保険契約1件につき一意に付与する。契約マスタのレコード様式は、図1のとおりである。
基本情報技術者試験(平成25年 午後 問5 図1)
(1) 証券番号は、“0000000001”から始まる。 (2) 契約年月日には、保険契約が有効になる年月日を格納し、終了年月日には、保険契約が終了した年月日を格納する。終了していない保険契約の終了年月日は空白である。  保険契約の終了は、保険契約の解約、満了、死亡時の保険金支払など幾つかの要因で発生する。これら全てを、“終了”として扱う。 (3) 月払保険料には、契約者が支払う毎月の保険料の金額を格納する。終了した保険契約の月払保険料には0を格納する。 (4) 保障額には、死亡時に支払う生命保険の保険金の金額を格納する。 (5) 社員IDには、保険契約を担当する社員のIDを格納する。1件の保険契約は1名で担当し、保険契約の終了まで、担当する社員の変更はないものとする。 (6) 満了年月日には、保険契約が満了する年月日を格納する。 (7) 終了した保険契約のレコードは削除しない。   〔異動ファイルの説明〕  新たな保険契約の締結、既存の保険契約の終了、及び既存の保険契約の月払保険料・保障額の変動を、異動事由という。異動事由が発生する都度、発生順に異動ファイルに1レコードを作成する。異動事由の発生は、1件の保険契約につき1日1回までである。  異動ファイルは、これまで発生した全ての異動事由を記録したものであり、そのレコード様式は図2のとおりである。
基本情報技術者試験(平成25年 午後 問5 図2)
 異動事由には、“新契約”、“増額”、“減額”、“終了”のいずれかを格納する。  その他の項目には、異動事由に応じて契約マスタの更新に必要な値だけを格納する。異動事由が“新契約”のレコードの証券番号には、最後に発行した証券番号 + 1が新規に採番される。異動ファイルの内容に誤りはないものとする。   〔契約マスタ更新処理〕  毎日、異動ファイル中の前日発生分のレコードと前日の契約マスタ(以下、旧契約マスタという)から、更新した契約マスタ(以下、新契約マスタという)を作成する。契約マスタ更新処理の流れを、図3に示す。 (1) 異動事由が“新契約”の場合は、異動ファイルの当該レコードの情報から新たにレコードを作成して、新契約マスタに出力する。異動ファイルの当該レコードの異動年月日が、契約年月日となる。 (2) 異動事由が“増額”又は“減額”の場合は、当該保険契約の月払保険料と保障額を、異動ファイルの当該レコードの情報で更新して、新契約マスタに出力する。 (3) 異動事由が“終了”の場合は、当該保険契約の月払保険料を0にし、終了年月日を異動年月日に更新して、新契約マスタに出力する。 (4) 契約マスタ更新処理の実行が日をまたぐことはない。
基本情報技術者試験(平成25年 午後 問5 図3)   〔歩合給計算処理〕  毎月1日に、契約マスタ更新処理が終了した後、契約マスタから、社員ごとの担当契約数及び月払保険料の合計を求めて当月の歩合給を計算し、歩合給ファイルに社員1人につき1レコードを追加する。  歩合給ファイルのレコード様式を図4に、歩合給計算処理の流れを図5に示す。
基本情報技術者試験(平成25年 午後 問5 図4)
基本情報技術者試験(平成25年 午後 問5 図5)

設問1:

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

模範解答

a:エ、b:カ、c:オ、d:ア

解説

解答の導き方

この設問では、日次の契約マスタ更新処理と、月次の歩合給計算処理で、どのレコードを選び、どの項目で並べ替えるかを考えます。
  1. a:異動年月日がいつのレコードを選ぶか
    契約マスタ更新処理について、本文には「毎日、異動ファイル中の前日発生分のレコードと前日の契約マスタ」から更新するとあります。
    つまり、今日の処理で使う異動ファイルのレコードは、今日発生したものではなく、前日に発生したものです。そのため、処理1で選ぶ条件は「異動年月日が前日であるレコード」です。aには**前日(エ)**が入ります。
  2. b:T1を何の順に並べ替えるか
    契約マスタは、証券番号の昇順、つまり証券番号が小さいものから順に並んでいます。処理3では、この契約マスタとT1の内容を照らし合わせます。
    図6では、T1の証券番号と旧契約マスタの証券番号を比べて、大小や一致を判定しています。こうした突合せ(2つのデータを、同じ項目の値を比べながら照らし合わせる処理)を正しく進めるには、T1も契約マスタと同じく証券番号の順に並んでいる必要があります。
    証券番号は契約ごとに一意なので、どの契約かを特定するキー項目(データを一件ずつ識別するために使う項目)として使えます。したがって、bには**証券番号(カ)**が入ります。
  3. c、d:歩合給計算でどの契約を選ぶか
    歩合給の対象は、終了していない契約です。一方、本文には、終了した保険契約のレコードは削除しないとあります。そのため、契約マスタのレコードをすべて数えると、終了した契約まで担当契約数に含めてしまいます。
    終了していない契約については、終了年月日が空白です。終了した契約には終了年月日が入り、月払保険料は0になります。したがって、終了していない契約だけを選ぶ条件は「終了年月日が空白」です。
    この条件にするには、cに終了年月日(オ)、dに**空白(ア)**が入ります。こうすれば、担当契約数と月払保険料の合計を、終了していない契約だけから求められます。

誤りやすいポイント

  • aを「当日」と考えないこと。 日次処理では、本文のとおり前日発生分の異動を処理します。
  • bを異動年月日や社員IDと間違えないこと。 処理3では旧契約マスタと証券番号を比較するため、T1も証券番号順に並べます。
  • 終了した契約のレコードが残っていることに注意すること。 レコードが削除されないので、契約マスタの全レコードをそのまま数えると担当契約数が誤ります。
  • 月払保険料が0かどうかだけで契約の有効・終了を判断しないこと。 問題文で、終了していない契約の終了年月日は空白と定義されています。処理4では、その項目を使って対象を選びます。

FAQ

Q: なぜ、終了した契約を契約マスタから削除しないのですか?
A: 契約が終了したことも記録として残すためです。そのため、歩合給計算では終了年月日を確認し、終了していない契約だけを選びます。
Q: T1を異動年月日順に並べても、処理3はできませんか?
A: 処理3は、旧契約マスタと証券番号を比較しながら進みます。旧契約マスタと同じ証券番号順に並べることで、対応する契約を順番に見つけられます。
Q: 終了した契約は月払保険料が0なので、担当契約数にも影響しませんか?
A: 影響します。月払保険料が0でもレコード自体は残っているため、終了年月日で絞り込まないと担当契約数に含まれてしまいます。

関連キーワード: キー項目、昇順整列、突合せ処理、条件抽出、マスタファイル

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

 図6は、T1と旧契約マスタを突き合わせて、新契約マスタを作成する処理3の流れ図である。図中のに入れる正しい答えを、解答群の中から選べ。
基本情報技術者試験(平成25年 午後 問5 図6)
e〜gに関する解答群  ア:T1から1レコードを読み込む  イ:T1のレコードの情報から新たにレコードを作成して新契約マスタに出力する  ウ:旧契約マスタから1レコードを読み込む  エ:旧契約マスタのレコードの情報をT1のレコードの情報で更新し、そのレコードを新契約マスタに出力する  オ:旧契約マスタのレコードをそのまま新契約マスタに出力する  カ:新契約マスタのレコードをそのまま出力する

模範解答

e:オ、f:エ、g:イ

解説

解答の導き方

この処理3では、前日の契約マスタと、前日に発生した異動をまとめたT1を照らし合わせ、新契約マスタを作ります。T1は、処理の途中で使う中間ファイルです。
照らし合わせには証券番号を使います。本文には「証券番号は、保険契約1件につき一意に付与する」とあります。つまり、同じ証券番号なら同じ保険契約です。また、旧契約マスタは証券番号の昇順に並んでいます。T1も証券番号順に整列しておくことで、両方のファイルを先頭から順に見ながら、同じ契約を探せます。
図6では、まず両方のファイルからレコードを読み込み、証券番号を比べます。ここでEOFは「End Of File:ファイルの終わり」を表します。ファイルの終わりに達しているかどうかも確認しながら、次のように判断します。
状況どのレコードを出力するか図6の空欄
T1の証券番号の方が大きい旧契約マスタの証券番号の方が小さいため、その契約には前日の異動がありません。旧契約マスタのレコードをそのまま出力します。e
証券番号が同じ同じ保険契約についての異動があるため、旧契約マスタのレコードをT1の情報で更新して出力します。f
T1の証券番号の方が小さいその証券番号に対応する旧契約マスタのレコードがありません。新契約のレコードとして、T1の情報から作成して出力します。g
たとえば、T1の証券番号が旧契約マスタの証券番号より小さいとき、旧契約マスタはすでにその番号を通り過ぎています。両方が証券番号順に並んでいるので、旧契約マスタに対応する契約はないと判断できます。そのため、新規レコードを作る処理になります。
ファイルの終わりに達した場合も、残っているレコードを出力します。T1だけが終わっていて旧契約マスタにレコードが残っている場合は、残りの旧契約マスタのレコードを変更せずに出力します。反対に、旧契約マスタだけが終わっていてT1にレコードが残っている場合は、残りのT1の情報から新しいレコードを作成します。両方とも終わったときに、処理を終了します。

誤りやすいポイント

  • T1の証券番号が旧契約マスタの証券番号より大きい場合、T1のレコードを出力するのではありません。証券番号が小さい旧契約マスタのレコードを、変更せずに出力します。
  • 証券番号が同じ場合は新規作成ではなく、既存の契約を更新します。
  • T1の証券番号が旧契約マスタの証券番号より小さい場合は、対応する旧契約がないので、新規レコードを作成します。
  • 片方のファイルが終わっただけでは、処理全体は終わりません。残っている側のレコードも新契約マスタに出力します。

FAQ

Q: 旧契約マスタのレコードを、そのまま新契約マスタに出力するのはなぜですか?
A: 新契約マスタは前日の契約マスタを更新して作るためです。前日に異動がなかった契約も、新契約マスタに引き継ぐ必要があります。
Q: 証券番号が同じ場合、なぜ両方のレコードを読み進めるのですか?
A: 同じ契約について、旧契約マスタの情報とT1の異動情報を使って更新したレコードを出力した後は、両方のファイルで次の契約を比べるためです。
Q: 旧契約マスタが先に終わったら、残りのT1のレコードはどうなりますか?
A: 対応する旧契約がないため、残りのT1の情報から新しいレコードを作成して出力します。

関連キーワード: マージ処理、キー項目、昇順、EOF

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

 歩合給の計算方法を変更して、新契約を成立させた月が、過去3か月間連続した場合は、当月の歩合給を2割増にする。過去3か月間連続して新契約を成立した社員の歩合給が0円である場合は、5,000円を歩合給として支給する。  表2は、2013年5月1日時点の契約マスタからの、社員A00001と社員B00001のレコードの抜粋である。また、表3は、2013年4月30日の異動ファイルからの、社員A00001と社員B00001のレコードの抜粋である。2013年5月1日に、契約マスタを更新し、変更後の歩合給計算処理を実行したときの社員A00001と社員B00001の歩合給の組合せとして、正しい答えを、解答群の中から選べ。
基本情報技術者試験(平成25年 午後 問5 表2)
基本情報技術者試験(平成25年 午後 問5 表3)
解答群 基本情報技術者試験(平成25年 午後 問5 設問3 解答群)

模範解答

オ

解説

解答の導き方

  1. まず、2013年4月30日の異動を反映します。
    歩合給計算処理は、「契約マスタ更新処理が終了した後」に行います。したがって、2013年5月1日の計算では、表3の異動を反映した後の契約内容を使います。
    「終了」の契約は担当契約数に含めません。また、契約マスタには終了した契約の記録が残りますが、終了年月日が設定され、月払保険料が0になった契約は、歩合給の計算から除きます。
  2. 社員A00001の担当契約数と保険料の合計を求めます。
    表3では、A00001の契約について、次のように更新します。
    • 0004157003は「終了」なので、担当契約から除きます。
    • 0004157006は、月払保険料が22,000円になります。
    • 0004157007は、月払保険料が50,000円になります。
    • 0004157009は、月払保険料が40,000円になります。
    • 0004157010と0004157011は、新契約として追加されます。
    これに加えて、終了していない0004157004も含めると、A00001の担当契約は6件です。月払保険料の合計は、次のとおりです。
    円
    歩合給は、「5件ごとに10,000円」と「月払保険料の合計が50,000円ごとに5,000円」の合計です。したがって、通常の歩合給は次のようになります。
    • 契約数による分: のまとまりが1つなので、10,000円
    • 保険料による分: のまとまりが3つなので、15,000円
    通常の歩合給は、円です。
  3. 社員B00001の担当契約数と保険料の合計を求めます。
    B00001については、0004157001はすでに終了しています。さらに、表3の「終了」によって0004157002も終了します。
    終了していない契約は0004157005、0004157008、新契約の0004157012の3件です。月払保険料の合計は次のとおりです。
    円
    3件では5件に達せず、28,000円では50,000円に達しません。そのため、通常の歩合給は0円です。
  4. 過去3か月間に、新契約が毎月あったかを確認します。
    2013年5月1日の計算で対象となる過去3か月は、2月、3月、4月です。問題文では「過去3か月間連続した場合は、当月の歩合給を2割増にする」とあります。
    • A00001は、表2に2月と3月の契約があり、表3には4月の新契約があります。
    • B00001も、表2に2月と3月の契約があり、表3には4月の新契約があります。
    表3の新契約は、異動年月日である2013/04/30が契約年月日になります。したがって、A00001とB00001の両方について、2月、3月、4月の各月に新契約が成立しています。
  5. 特別ルールを適用します。
    A00001の通常の歩合給は25,000円です。2割増は、通常の金額に20%分を加えることなので、次の金額になります。
    円
    B00001は通常の歩合給が0円です。問題文には、過去3か月間連続して新契約を成立させた社員の歩合給が0円の場合、「5,000円を歩合給として支給する」とあります。よって、B00001には5,000円が支給されます。
    したがって、該当する組合せは、A00001が30,000円、B00001が5,000円のオです。

誤りやすいポイント

  • 終了した契約を担当契約数に含めてしまうこと
    契約マスタにレコードが残っていても、終了した契約は担当契約数に含めません。終了後の月払保険料も合計に含めません。
  • 異動を反映する前の金額で計算すること
    5月1日の歩合給計算は、契約マスタの更新後に行います。4月30日の増額・減額・終了・新契約を反映してから集計します。
  • 保険料や契約数を比例計算してしまうこと
    「5件ごと」「50,000円ごと」なので、まとまりの数で計算します。A00001の6件は1まとまり、170,000円は3まとまりです。
  • 増額・減額を新契約として数えること
    新契約の連続月を確認するときは、異動事由が「新契約」のものを見ます。増額・減額は、新契約の成立には当たりません。
  • B00001の0円に2割増だけを適用すること
    0円の社員には、問題文にある特別ルールで5,000円を支給します。0円に1.2を掛けて0円のままにするのではありません。

FAQ

Q: 2月、3月、4月にそれぞれ何件以上の新契約が必要ですか?
A: 各月に1件以上あれば条件を満たします。この問題では、毎月の件数が複数かどうかではなく、3か月連続で新契約が成立したかを確認します。
Q: 終了した契約のレコードが契約マスタに残っているのはなぜですか?
A: 問題文では、終了した保険契約のレコードは削除しないとされています。ただし、記録が残っていることと、歩合給の対象になることは別です。
Q: 2割増は、契約数による分と保険料による分のそれぞれに適用しますか?
A: 先に通常の歩合給を合計し、その金額を2割増にします。この問題では、A00001の通常の歩合給25,000円に1.2を掛けています。

関連キーワード: レコード、キー項目、ファイル更新処理、条件抽出、集計処理

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

戦国ITクイズ機能

\ せっかくなら /

基本情報技術者を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について