DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦c25b291da⟧ TextFile

    Length: 1852 (0x73c)
    Types: TextFile
    Names: »B«

Derivation

└─⟦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⟧ 

TextFile

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;