DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ B T ┃
Length: 1852 (0x73c) Types: TextFile Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧ └─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04 └─ ⟦d65440be7⟧ »DATA« └─⟦this⟧
package body Banque is Courant : array (Code_Clef range 1 .. Code_Clef'Last) of Argent := (others => 0); Disponible : array (Code_Clef range 1 .. Code_Clef'Last) of Boolean := (others => True); procedure Ouvrir_Compte (Compte : in out Clef; Somme : Argent) is begin if Compte.Code = 0 then for I in Disponible'Range loop if Disponible (I) then Disponible (I) := False; Courant (I) := Somme; Compte.Code := I; end if; end loop; end if; end Ouvrir_Compte; procedure Valide (Compte : in Clef) is begin if not Valable (Compte) then raise Alarme; end if; end Valide; procedure Cloturer_Compte (Compte : in out Clef; Somme : out Argent) is begin Valide (Compte); Somme := Courant (Compte.Code); Disponible (Compte.Code) := True; Compte.Code := 0; end Cloturer_Compte; procedure Deposer (Compte : in Clef; Somme : in Argent) is begin Valide (Compte); Courant (Compte.Code) := Courant (Compte.Code) + Somme; end Deposer; procedure Retirer (Compte : in out Clef; Somme : in out Argent) is begin Valide (Compte); if Courant (Compte.Code) >= Somme then Courant (Compte.Code) := Courant (Compte.Code) - Somme; else Somme := Courant (Compte.Code); Disponible (Compte.Code) := True; Compte.Code := 0; end if; end Retirer; function Releve (Compte : Clef) return Argent is begin Valide (Compte); return Courant (Compte.Code); end Releve; function Valable (Compte : Clef) return Boolean is begin return Compte.Code /= 0; end Valable; end Banque;