スクリーンショット_2020-02-20_13

H25年春期 問5ソフトウェア設計

試験問題はこちら

テーマは「社員の歩合給決定処理」

二つのファイルを照合させて必要な更新処理を行う「突合せ」は、ソフトウェア設計の定番問題の一つです。突合せの基本を理解するうえでこの問題は分かりやすく、お勧めです。

この問題では、契約情報を記録した「契約マスタ」と、契約の変更情報を記録した「異動ファイル」の2つのファイルがあり、異動ファイルをもとに契約マスタを書き換える際に突合せが必要になります。

突合せは、2つのファイルに共通するキー項目で並べ替え、対比させることで行います。
共通する項目で並べ替えて、マスタのそれぞれのレコードに対応する更新情報があるかどうかを、上から順番に調べていきます。
更新情報があればその情報でマスタのレコードを更新し、更新情報がなければマスタのレコードはそのままにします。
これが突合せの基本です。

スクリーンショット 2020-02-20 16.08.27


【設問1】

「処理1」は契約マスタ更新処理で、異動ファイルをもとに最初に行う処理です。
その次に行うのが「処理2」です。

前に書いたように、突合せは共通するキー項目で並べ替えることで始めます。
「処理2」が
「処理1で抽出した結果を[ b ]の昇順で整列して〜」
と書かれているので、これがその最初に行う並べ替え作業と推測できます。
並べ替えのキー、すなわち契約マスタと異動ファイルで共通するキー項目は証券番号ですから、空欄bは「証券番号」です。

では「処理1」の
「異動ファイルから異動年月日が[ a ]であるレコードを処理対象として抽出する」
という作業は何か。
「処理1」は契約マスタ更新処理で最初に行う作業なので、〔契約マスタ更新処理〕のところを見ると、このように書かれています。

「毎日、異動ファイル中の前日発生分のレコードと前日の契約マスタから(以下、旧契約マスタという)から、更新した契約マスタ(以下、新契約マスタという)を作成する。」

つまり契約マスタ更新処理で使う異動ファイルは、「前日発生分」のレコードというわけです。
異動ファイルは、〔異動ファイルの説明〕に書かれているとおり「これまで発生した全ての異動事由を記録したもの」なので、古い異動事由も残っています。
契約マスタ更新処理は毎日行われているので、前々日以前のものは前日までに契約マスタへの反映が終わっています。
終わっていないのは前日分だけなので、それを切り出す必要があります。
それが処理1なのです。

一方、「処理4」は「歩合給計算処理」で最初に行うものです。
「処理5」で「処理4で抽出した結果を社員IDの昇順に整列して〜」と書かれており、そこから突合せが始まると考えられるので、その前に必要な処理です。

〔歩合給計算処理〕では、
「契約マスタから、社員ごとの担当契約数及び月額保険料の合計を求めて〜」
と書かれています。
契約マスタには「社員ID」があるので、社員IDごとに、担当契約数と月額保険料を集計します。

ここで「担当契約」というものが何かを確認しなくてはなりません。
注意すべき点が問題冒頭5行目に書かれています。

「担当契約には、終了した保険契約は含まない。」

契約マスタは、〔契約マスタファイルの説明〕の(7)に「終了した保険契約のレコードは削除しない」と書かれているので、既に終了した保険契約も契約マスタに残っています。
担当契約を集計するためには、その終了した保険契約を契約マスタから取り除かなくてはなりません。
「処理4」はその処理を意味しているのです。

終了した保険契約は、契約マスタ上ではどのようになっているか。
〔契約マスタファイルの説明〕の(2)に
「終了していない保険契約の終了年月日は空白である。」
と書かれています。

ならば問題の
「契約マスタから[ c ]が[ d ]であるレコードを処理対象として抽出する」
の空欄に入る答えは明白ですね。

ここから先は

1,514字 / 7画像

¥ 100

この記事が気に入ったらサポートをしてみませんか?