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: 25557 (0x63d5) Types: TextFile Names: »B«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13 └─ ⟦124ff5788⟧ »DATA« └─⟦this⟧ └─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧ └─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16 └─ ⟦6f12a12be⟧ »DATA« └─⟦this⟧ └─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04 └─ ⟦d65440be7⟧ »DATA« └─⟦this⟧
separate (Expertsystem) package body Tuplecollection is function Getref (C : Collection.Object; Number : Positive := 1) return Expertsystem.Reference renames Collection.Get; function Card (C : Collection.Object) return Natural renames Collection.Cardinality; function Get (Thetuplecollection : Tuplecollection.Object; Number : Positive := 1) return Expertsystem.Reference is begin if Number > Thetuplecollection.Count then return Nullreference; else return Thetuplecollection.Cells (Number); end if; end Get; function Isfull (Thetuplecollection : Tuplecollection.Object) return Boolean is begin return Thetuplecollection.Count >= Thetuplecollection.Size; end Isfull; procedure Add (Thetuplecollection : in out Tuplecollection.Object; Aref : Expertsystem.Reference) is begin if Isfull (Thetuplecollection) then declare Bigtuplecoll : Tuplecollection.Object (Thetuplecollection.Size + Thetuplecollection.Size / 2); begin Bigtuplecoll.Cells (1 .. Thetuplecollection.Size) := Thetuplecollection.Cells (1 .. Thetuplecollection.Size); Bigtuplecoll.Count := Thetuplecollection.Count; Bigtuplecoll.Unity := Thetuplecollection.Unity; Thetuplecollection := Bigtuplecoll; end; end if; Thetuplecollection.Count := Thetuplecollection.Count + 1; Thetuplecollection.Cells (Thetuplecollection.Count) := Aref; end Add; procedure Merge (Thetuplecollection : in out Tuplecollection.Object; R1 : Expertsystem.Reference := Nullreference; R2 : Expertsystem.Reference := Nullreference; R3 : Expertsystem.Reference := Nullreference; R4 : Expertsystem.Reference := Nullreference; R5 : Expertsystem.Reference := Nullreference; R6 : Expertsystem.Reference := Nullreference; R7 : Expertsystem.Reference := Nullreference; R8 : Expertsystem.Reference := Nullreference; R9 : Expertsystem.Reference := Nullreference; R10 : Expertsystem.Reference := Nullreference) is begin if R1 /= Nullreference then Add (Thetuplecollection, R1); end if; if R2 /= Nullreference then Add (Thetuplecollection, R2); end if; if R3 /= Nullreference then Add (Thetuplecollection, R3); end if; if R4 /= Nullreference then Add (Thetuplecollection, R4); end if; if R4 /= Nullreference then Add (Thetuplecollection, R4); end if; if R5 /= Nullreference then Add (Thetuplecollection, R5); end if; if R6 /= Nullreference then Add (Thetuplecollection, R6); end if; if R7 /= Nullreference then Add (Thetuplecollection, R7); end if; if R8 /= Nullreference then Add (Thetuplecollection, R8); end if; if R9 /= Nullreference then Add (Thetuplecollection, R9); end if; if R10 /= Nullreference then Add (Thetuplecollection, R10); end if; end Merge; function Cardinality (Thetuplecollection : Tuplecollection.Object) return Natural is begin return Thetuplecollection.Count / Thetuplecollection.Unity; end Cardinality; function Isnull (Thetuplecollection : Tuplecollection.Object) return Boolean is begin return Thetuplecollection.Count = 0; end Isnull; function Isnotnull (Thetuplecollection : Tuplecollection.Object) return Boolean is begin return Thetuplecollection.Count /= 0; end Isnotnull; function Join1 (C1 : Collection.Object; Quantity : Natural := 1) return Tuplecollection.Object is Thetuplecollection : Tuplecollection.Object; R1 : Expertsystem.Reference; begin Thetuplecollection.Count := 0; Thetuplecollection.Unity := 1; for I in 1 .. Card (C1) loop R1 := Getref (C1, I); if Match (R1) then Merge (Thetuplecollection, R1); if (Quantity /= Any) and then (Thetuplecollection.Count / Thetuplecollection.Unity >= Quantity) then return Thetuplecollection; end if; end if; end loop; return Thetuplecollection; end Join1; function Join2 (C1, C2 : Collection.Object; Quantity : Natural := 1) return Tuplecollection.Object is Thetuplecollection : Tuplecollection.Object; R1, R2 : Expertsystem.Reference; begin Thetuplecollection.Count := 0; Thetuplecollection.Unity := 2; for I in 1 .. Card (C1) loop R1 := Getref (C1, I); for J in 1 .. Card (C2) loop R2 := Getref (C2, J); if Match (R1, R2) then Merge (Thetuplecollection, R1, R2); if (Quantity /= Any) and then (Thetuplecollection.Count / Thetuplecollection.Unity >= Quantity) then return Thetuplecollection; end if; end if; end loop; end loop; return Thetuplecollection; end Join2; function Join3 (C1, C2, C3 : Collection.Object; Quantity : Natural := 1) return Tuplecollection.Object is Thetuplecollection : Tuplecollection.Object; R1, R2, R3 : Expertsystem.Reference; begin Thetuplecollection.Count := 0; Thetuplecollection.Unity := 3; for I in 1 .. Card (C1) loop R1 := Getref (C1, I); for J in 1 .. Card (C2) loop R2 := Getref (C2, J); for K in 1 .. Card (C3) loop R3 := Getref (C3, K); if Match (R1, R2, R3) then Merge (Thetuplecollection, R1, R2, R3); if (Quantity /= Any) and then (Thetuplecollection.Count / Thetuplecollection.Unity >= Quantity) then return Thetuplecollection; end if; end if; end loop; end loop; end loop; return Thetuplecollection; end Join3; function Join4 (C1, C2, C3, C4 : Collection.Object; Quantity : Natural := 1) return Tuplecollection.Object is Thetuplecollection : Tuplecollection.Object; R1, R2, R3, R4 : Expertsystem.Reference; begin Thetuplecollection.Count := 0; Thetuplecollection.Unity := 4; for I in 1 .. Card (C1) loop R1 := Getref (C1, I); for J in 1 .. Card (C2) loop R2 := Getref (C2, J); for K in 1 .. Card (C3) loop R3 := Getref (C3, K); for L in 1 .. Card (C4) loop R4 := Getref (C4, L); if Match (R1, R2, R3, R4) then Merge (Thetuplecollection, R1, R2, R3, R4); if (Quantity /= Any) and then (Thetuplecollection.Count / Thetuplecollection.Unity >= Quantity) then return Thetuplecollection; end if; end if; end loop; end loop; end loop; end loop; return Thetuplecollection; end Join4; function Join5 (C1, C2, C3, C4, C5 : Collection.Object; Quantity : Natural := 1) return Tuplecollection.Object is Thetuplecollection : Tuplecollection.Object; R1, R2, R3, R4, R5 : Expertsystem.Reference; begin Thetuplecollection.Count := 0; Thetuplecollection.Unity := 5; for I in 1 .. Card (C1) loop R1 := Getref (C1, I); for J in 1 .. Card (C2) loop R2 := Getref (C2, J); for K in 1 .. Card (C3) loop R3 := Getref (C3, K); for L in 1 .. Card (C4) loop R4 := Getref (C4, L); for M in 1 .. Card (C5) loop R5 := Getref (C5, M); if Match (R1, R2, R3, R4, R5) then Merge (Thetuplecollection, R1, R2, R3, R4, R5); if (Quantity /= Any) and then (Thetuplecollection.Count / Thetuplecollection.Unity >= Quantity) then return Thetuplecollection; end if; end if; end loop; end loop; end loop; end loop; end loop; return Thetuplecollection; end Join5; function Join6 (C1, C2, C3, C4, C5, C6 : Collection.Object; Quantity : Natural := 1) return Tuplecollection.Object is Thetuplecollection : Tuplecollection.Object; R1, R2, R3, R4, R5, R6 : Expertsystem.Reference; begin Thetuplecollection.Count := 0; Thetuplecollection.Unity := 6; for I in 1 .. Card (C1) loop R1 := Getref (C1, I); for J in 1 .. Card (C2) loop R2 := Getref (C2, J); for K in 1 .. Card (C3) loop R3 := Getref (C3, K); for L in 1 .. Card (C4) loop R4 := Getref (C4, L); for M in 1 .. Card (C5) loop R5 := Getref (C5, M); for N in 1 .. Card (C6) loop R6 := Getref (C6, N); if Match (R1, R2, R3, R4, R5, R6) then Merge (Thetuplecollection, R1, R2, R3, R4, R5, R6); if (Quantity /= Any) and then (Thetuplecollection.Count / Thetuplecollection.Unity >= Quantity) then return Thetuplecollection; end if; end if; end loop; end loop; end loop; end loop; end loop; end loop; return Thetuplecollection; end Join6; function Join7 (C1, C2, C3, C4, C5, C6, C7 : Collection.Object; Quantity : Natural := 1) return Tuplecollection.Object is Thetuplecollection : Tuplecollection.Object; R1, R2, R3, R4, R5, R6, R7 : Expertsystem.Reference; begin Thetuplecollection.Count := 0; Thetuplecollection.Unity := 7; for I in 1 .. Card (C1) loop R1 := Getref (C1, I); for J in 1 .. Card (C2) loop R2 := Getref (C2, J); for K in 1 .. Card (C3) loop R3 := Getref (C3, K); for L in 1 .. Card (C4) loop R4 := Getref (C4, L); for M in 1 .. Card (C5) loop R5 := Getref (C5, M); for N in 1 .. Card (C6) loop R6 := Getref (C6, N); for P in 1 .. Card (C7) loop R7 := Getref (C7, P); if Match (R1, R2, R3, R4, R5, R6, R7) then Merge (Thetuplecollection, R1, R2, R3, R4, R5, R6, R7); if (Quantity /= Any) and then (Thetuplecollection.Count / Thetuplecollection.Unity >= Quantity) then return Thetuplecollection; end if; end if; end loop; end loop; end loop; end loop; end loop; end loop; end loop; return Thetuplecollection; end Join7; function Join8 (C1, C2, C3, C4, C5, C6, C7, C8 : Collection.Object; Quantity : Natural := 1) return Tuplecollection.Object is Thetuplecollection : Tuplecollection.Object; R1, R2, R3, R4, R5, R6, R7, R8 : Expertsystem.Reference; begin Thetuplecollection.Count := 0; Thetuplecollection.Unity := 8; for I in 1 .. Card (C1) loop R1 := Getref (C1, I); for J in 1 .. Card (C2) loop R2 := Getref (C2, J); for K in 1 .. Card (C3) loop R3 := Getref (C3, K); for L in 1 .. Card (C4) loop R4 := Getref (C4, L); for M in 1 .. Card (C5) loop R5 := Getref (C5, M); for N in 1 .. Card (C6) loop R6 := Getref (C6, N); for P in 1 .. Card (C7) loop R7 := Getref (C7, P); for Q in 1 .. Card (C8) loop R8 := Getref (C8, Q); if Match (R1, R2, R3, R4, R5, R6, R7, R8) then Merge (Thetuplecollection, R1, R2, R3, R4, R5, R6, R7, R8); if (Quantity /= Any) and then (Thetuplecollection.Count / Thetuplecollection.Unity >= Quantity) then return Thetuplecollection; end if; end if; end loop; end loop; end loop; end loop; end loop; end loop; end loop; end loop; return Thetuplecollection; end Join8; function Join9 (C1, C2, C3, C4, C5, C6, C7, C8, C9 : Collection.Object; Quantity : Natural := 1) return Tuplecollection.Object is Thetuplecollection : Tuplecollection.Object; R1, R2, R3, R4, R5, R6, R7, R8, R9 : Expertsystem.Reference; begin Thetuplecollection.Count := 0; Thetuplecollection.Unity := 9; for I in 1 .. Card (C1) loop R1 := Getref (C1, I); for J in 1 .. Card (C2) loop R2 := Getref (C2, J); for K in 1 .. Card (C3) loop R3 := Getref (C3, K); for L in 1 .. Card (C4) loop R4 := Getref (C4, L); for M in 1 .. Card (C5) loop R5 := Getref (C5, M); for N in 1 .. Card (C6) loop R6 := Getref (C6, N); for P in 1 .. Card (C7) loop R7 := Getref (C7, P); for Q in 1 .. Card (C8) loop R8 := Getref (C8, Q); for R in 1 .. Card (C9) loop R9 := Getref (C9, R); if Match (R1, R2, R3, R4, R5, R6, R7, R8, R9) then Merge (Thetuplecollection, R1, R2, R3, R4, R5, R6, R7, R8, R9); if (Quantity /= Any) and then (Thetuplecollection.Count / Thetuplecollection.Unity >= Quantity) then return Thetuplecollection; end if; end if; end loop; end loop; end loop; end loop; end loop; end loop; end loop; end loop; end loop; return Thetuplecollection; end Join9; function Join10 (C1, C2, C3, C4, C5, C6, C7, C8, C9, C10 : Collection.Object; Quantity : Natural := 1) return Tuplecollection.Object is Thetuplecollection : Tuplecollection.Object; R1, R2, R3, R4, R5, R6, R7, R8, R9, R10 : Expertsystem.Reference; begin Thetuplecollection.Count := 0; Thetuplecollection.Unity := 10; for I in 1 .. Card (C1) loop R1 := Getref (C1, I); for J in 1 .. Card (C2) loop R2 := Getref (C2, J); for K in 1 .. Card (C3) loop R3 := Getref (C3, K); for L in 1 .. Card (C4) loop R4 := Getref (C4, L); for M in 1 .. Card (C5) loop R5 := Getref (C5, M); for N in 1 .. Card (C6) loop R6 := Getref (C6, N); for P in 1 .. Card (C7) loop R7 := Getref (C7, P); for Q in 1 .. Card (C8) loop R8 := Getref (C8, Q); for R in 1 .. Card (C9) loop R9 := Getref (C9, R); for S in 1 .. Card (C10) loop R10 := Getref (C10, S); if Match (R1, R2, R3, R4, R5, R6, R7, R8, R9, R10) then Merge (Thetuplecollection, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10); if (Quantity /= Any) and then (Thetuplecollection.Count / Thetuplecollection.Unity >= Quantity) then return Thetuplecollection; end if; end if; end loop; end loop; end loop; end loop; end loop; end loop; end loop; end loop; end loop; end loop; return Thetuplecollection; end Join10; function Themost (Thetuplecollection : Object) return Tuple.Object is Tu, Ti : Tuple.Object; begin if Thetuplecollection.Count /= 0 then Tu := First (Thetuplecollection); for I in 2 .. Thetuplecollection.Count / Thetuplecollection.Unity loop Ti := Get (Thetuplecollection, I); if not Predicate (Tu, Ti) then Tu := Ti; end if; end loop; end if; return Tu; end Themost; function Restrict (Thetuplecollection : Tuplecollection.Object; Quantity : Natural := Any) return Tuplecollection.Object is Result : Tuplecollection.Object; Ti : Tuple.Object; begin if Thetuplecollection.Count /= 0 then Result.Unity := Thetuplecollection.Unity; for I in 1 .. Thetuplecollection.Count / Thetuplecollection.Unity loop Ti := Get (Thetuplecollection, I); if Predicate (Ti) then for J in 1 .. Thetuplecollection.Unity loop Add (Result, Tuple.Get (Ti, J)); end loop; if (Quantity /= Any) and then (Result.Count / Result.Unity >= Quantity) then return Result; end if; end if; end loop; end if; return Result; end Restrict; function Findone (Thetuplecollection : Tuplecollection.Object) return Tuple.Object is T : Tuple.Object; begin if Thetuplecollection.Count /= 0 then for I in 1 .. Thetuplecollection.Count / Thetuplecollection.Unity loop T := Get (Thetuplecollection, I); if Predicate (T) then return T; end if; end loop; end if; return T; end Findone; function Get (Thetuplecollection : Tuplecollection.Object; Number : Positive := 1) return Tuple.Object is Tu : Tuple.Object; begin if Number <= Thetuplecollection.Count / Thetuplecollection.Unity then for I in 1 .. Thetuplecollection.Unity loop Tuple.Add (Tu, Get (Thetuplecollection, (Number - 1) * Thetuplecollection.Unity + I)); end loop; end if; return Tu; end Get; function First (Thetuplecollection : Tuplecollection.Object) return Tuple.Object is begin return Get (Thetuplecollection, 1); end First; function Get (Thetuplecollection : Tuplecollection.Object; Frompos : Positive := 1; Topos : Positive) return Tuplecollection.Object is Tuc : Tuplecollection.Object; Bornefrom : Natural; Borneto : Natural; begin if Topos > Thetuplecollection.Count / Thetuplecollection.Unity then Borneto := Thetuplecollection.Count / Thetuplecollection.Unity; else Borneto := Topos; end if; if Frompos < Thetuplecollection.Cells'First then Bornefrom := Thetuplecollection.Cells'First; else Bornefrom := Frompos; end if; Tuc.Unity := Thetuplecollection.Unity; for I in Bornefrom .. Thetuplecollection.Unity * Borneto loop Add (Tuc, Get (Thetuplecollection, I)); end loop; return Tuc; end Get; procedure Forall (Thetuplecollection : Tuplecollection.Object) is begin for I in 1 .. Thetuplecollection.Count / Thetuplecollection.Unity loop declare Tu : Tuple.Object; begin for J in 1 .. Thetuplecollection.Unity loop Tuple.Add (Tu, Get (Thetuplecollection, (I - 1) * Thetuplecollection.Unity + J)); end loop; Action (Tu); end; end loop; end Forall; package body Iterator is function Open (Thetuplecollection : Tuplecollection.Object) return Iter is begin if Thetuplecollection.Count = 0 then return 0; else return 1; end if; end Open; function Get (Thetuplecollection : Tuplecollection.Object; I : Iter) return Tuple.Object is begin if I > Iter (Thetuplecollection.Count / Thetuplecollection.Unity) then raise Illegalaccess; end if; return Get (Thetuplecollection, Positive (I)); exception when Constraint_Error => raise Illegalaccess; end Get; function Next (Thetuplecollection : Tuplecollection.Object; I : Iter) return Iter is Idx : Integer; begin Idx := Integer (I) + 1; if Idx > Thetuplecollection.Count / Thetuplecollection.Unity then return 0; else return Iter (Idx); end if; exception when Constraint_Error => raise Illegalaccess; end Next; function Atend (Thetuplecollection : Tuplecollection.Object; I : Iter) return Boolean is begin return I = 0; end Atend; end Iterator; end Tuplecollection;