5.17. ゴールド銀行

5.17.1. 構造に関する構成要素
5.17.2. 振る舞いに関する構成要素
5.17.2.1. サブルーチン $C3E2F2: ゴールド銀行メイン
5.17.2.2. サブルーチン $C3E39E: あずける
5.17.2.3. サブルーチン $C3E410: ひきだす

本節ではゴールド銀行について述べる。

5.17.1. 構造に関する構成要素

ゴールド銀行については、大規模なデータが存在しない。

5.17.2. 振る舞いに関する構成要素

ゴールド銀行の振る舞いに関する構成要素、つまり窓口処理について述べる。

5.17.2.1. サブルーチン $C3E2F2: ゴールド銀行メイン

サブルーチン $C3E2F2 は、銀行の窓口に「はなす」とすぐに開始される処理である。 以下に要点を挙げる。

  • 挨拶で、係員がサービスの説明を初回しかしないように、フラグ$7E353C & #$02 を用いる。

  • 初回でない場合には、預金残高を伝える。預金残高がゼロか否かで台詞を変える。

  • サービスは「あずける」と「ひきだす」がある。どちらも後述するサブルーチンそれぞれが処理する。

  • 取引を終えた後、係員が預金残高を伝えて終了する。残高がゼロか否かで台詞を変える。

これらの台詞のテキストを見れば、メモリー内に管理されている預金が本当に千単位であることが推察できる。

5.17.2.2. サブルーチン $C3E39E: あずける

「あずける」を選択したときの処理はサブルーチン $C3E39E に定義されている。 以下に要点を挙げる。

  • サブルーチン $C45BBA で残高金額をチェックする。 このとき、メモリー内預金額が 10,000 以上の値になっていると、 係員はさらなる預金を断る。

  • サブルーチン $C45BEB で預金をする。これは増加分だけを指定する。 この結果、初めて預金額更新が成功したかどうかがわかるので、それに応じて振る舞いが変わる。

    • 入力金額が金庫の限界を超えることがわかったときには、 まず9,999 - メモリー内預金額 を計算する。 それから係員が入金可能金額の上限としてこの結果を伝えて、処理を金額入力まで戻す。

    • 入力金額がパーティーの所持金を越えるときには、 係員が「失礼ですが~」と断り、処理を金額入力まで戻す。

  • 預金が成功すれば、この手続きを終了する。

5.17.2.3. サブルーチン $C3E410: ひきだす

「ひきだす」を選択したときの処理はサブルーチン $C3E410 に定義されている。 以下に要点を挙げる。

  • 汎用サブルーチン $C45BBA で残高金額を得る。 値がゼロの場合は係員が台詞を言って手続きを打ち切る。

  • 入力金額がゼロでない場合、 入力金額、パーティーの所持金、預金残高をサブルーチン $C45C5A で比較する。 所持金総額がその上限を超えないような場合、 係員が引き出し額を確認して取引成立となる。

    • 入力金額が預金残高以下ではあるが、 引き出したい金額をパーティの所持金に加算すると所持可能金額上限を超えるときには、 係員が多過ぎると言って、引き出し手続きを最初まで戻す。

    • すなわち入力金額が預金残高を越える値であるときには、 係員が預かっていないと言って、引き出し手続きを最初まで戻す。