本節ではゴールド銀行について述べる。
ゴールド銀行の振る舞いに関する構成要素、つまり窓口処理について述べる。
サブルーチン $C3E2F2
は、銀行の窓口に「はなす」とすぐに開始される処理である。
以下に要点を挙げる。
挨拶で、係員がサービスの説明を初回しかしないように、フラグ$7E353C
& #$02
を用いる。
初回でない場合には、預金残高を伝える。預金残高がゼロか否かで台詞を変える。
サービスは「あずける」と「ひきだす」がある。どちらも後述するサブルーチンそれぞれが処理する。
取引を終えた後、係員が預金残高を伝えて終了する。残高がゼロか否かで台詞を変える。
これらの台詞のテキストを見れば、メモリー内に管理されている預金が本当に千単位であることが推察できる。
「あずける」を選択したときの処理はサブルーチン $C3E39E
に定義されている。
以下に要点を挙げる。
サブルーチン $C45BBA
で残高金額をチェックする。
このとき、メモリー内預金額が 10,000 以上の値になっていると、
係員はさらなる預金を断る。
サブルーチン $C45BEB
で預金をする。これは増加分だけを指定する。
この結果、初めて預金額更新が成功したかどうかがわかるので、それに応じて振る舞いが変わる。
入力金額が金庫の限界を超えることがわかったときには、
まず9,999 - メモリー内預金額
を計算する。
それから係員が入金可能金額の上限としてこの結果を伝えて、処理を金額入力まで戻す。
入力金額がパーティーの所持金を越えるときには、 係員が「失礼ですが~」と断り、処理を金額入力まで戻す。
預金が成功すれば、この手続きを終了する。
「ひきだす」を選択したときの処理はサブルーチン $C3E410
に定義されている。
以下に要点を挙げる。
汎用サブルーチン $C45BBA
で残高金額を得る。
値がゼロの場合は係員が台詞を言って手続きを打ち切る。
入力金額がゼロでない場合、
入力金額、パーティーの所持金、預金残高をサブルーチン $C45C5A
で比較する。
所持金総額がその上限を超えないような場合、
係員が引き出し額を確認して取引成立となる。
入力金額が預金残高以下ではあるが、 引き出したい金額をパーティの所持金に加算すると所持可能金額上限を超えるときには、 係員が多過ぎると言って、引き出し手続きを最初まで戻す。
すなわち入力金額が預金残高を越える値であるときには、 係員が預かっていないと言って、引き出し手続きを最初まで戻す。