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 で比較する。 所持金総額がその上限を超えないような場合、 係員が引き出し額を確認して取引成立となる。

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

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