DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

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

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦57d16dc60⟧ TextFile

    Length: 4861 (0x12fd)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦a82d72c70⟧ 
            └─⟦this⟧ 

TextFile

separate(expertSystem)

package body tuple is

   function cardinality(theTuple : tuple.object) return natural is
   begin
      return theTuple.count;
   end cardinality;

   function isNull(theTuple : tuple.object) return boolean is
   begin
      return theTuple.count = 0;
   end isNull;

   function isNotNull(theTuple : tuple.object) return boolean is
   begin
      return theTuple.count /= 0;
   end isNotNull;

   procedure forAll(theTuple : tuple.object) is
   begin
      for i in 1..theTuple.count loop
  	 action(get(theTuple,i));
      end loop;
   end forAll;

   function first(theTuple : tuple.object) return expertSystem.reference is
   begin
      return get(theTuple,1);
   end first;

   function second(theTuple : tuple.object) return expertSystem.reference is
   begin
      return get(theTuple,2);
   end second;

   function third(theTuple : tuple.object) return expertSystem.reference is
   begin
      return get(theTuple,3);
   end third;

   function fourth(theTuple : tuple.object) return expertSystem.reference is
   begin
      return get(theTuple,4);
   end fourth;

   function fifth(theTuple : tuple.object) return expertSystem.reference is
   begin
      return get(theTuple,5);
   end fifth;

   function sixth(theTuple : tuple.object) return expertSystem.reference is
   begin
      return get(theTuple,6);
   end sixth;

   function seventh(theTuple : tuple.object) return expertSystem.reference is
   begin
      return get(theTuple,7);
   end seventh;

   function eighth(theTuple : tuple.object) return expertSystem.reference is
   begin
      return get(theTuple,8);
   end eighth;

   function ninth(theTuple : tuple.object) return expertSystem.reference is
   begin
      return get(theTuple,9);
   end ninth;

   function tenth(theTuple : tuple.object) return expertSystem.reference is
   begin
      return get(theTuple,10);
   end tenth;

   function get(theTuple : tuple.object;
		item     : positive := 1) return expertSystem.reference is
   begin
      if item > theTuple.count then
	 return nullReference;
      else
	 return theTuple.cells(item);
      end if;
   end get;

   procedure add(theTuple : in out tuple.object;
		 aRef : expertSystem.reference) is
   begin
      if theTuple.count = theTuple.size then
	 declare
	    bigTuple: tuple.object(theTuple.size + theTuple.size/2);
	 begin
	    bigTuple.cells(1..theTuple.size) := theTuple.cells(1..theTuple.size);
	    bigTuple.count := theTuple.count;
	    bigTuple.unity := theTuple.unity;
	    theTuple := bigTuple;
	 end;
      end if;
      theTuple.count := theTuple.count + 1;
      theTuple.cells(theTuple.count) := aRef;
   end add;

   procedure merge(theTuple : in out tuple.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(theTuple, r1);
       end if;
       if r2 /= nullReference then
	  add(theTuple, r2);
       end if;
       if r3 /= nullReference then
	  add(theTuple, r3);
       end if;
       if r4 /= nullReference then
	  add(theTuple, r4);
       end if;
       if r4 /= nullReference then
	  add(theTuple, r4);
       end if;
       if r5 /= nullReference then
	  add(theTuple, r5);
       end if;
       if r6 /= nullReference then
	  add(theTuple, r6);
       end if;
       if r7 /= nullReference then
	  add(theTuple, r7);
       end if;
       if r8 /= nullReference then
	  add(theTuple, r8);
       end if;
       if r9 /= nullReference then
	  add(theTuple, r9);
       end if;
       if r10 /= nullReference then
	  add(theTuple, r10);
       end if;
   end merge;

   function asObject(aRef : expertSystem.reference) return tuple.object is
      result : tuple.object;
   begin
      add(result,aRef);
      return result;
   end asobject;

   procedure sort(theTuple : in out tuple.object) is
      repere: integer range theTuple.cells'FIRST-1..
			    theTuple.cells'LAST;
      nombre: expertSystem.reference;
   begin
      for i in theTuple.cells'FIRST+1..theTuple.count-1 loop
	 nombre := theTuple.cells(i);
	 repere := i - 1;
	 while (repere /= theTuple.cells'FIRST-1) and then
	       (nombre < theTuple.cells(repere)) loop
	    theTuple.cells(repere+1) := theTuple.cells(repere);
	    repere := repere - 1;
	 end loop;
	 theTuple.cells(repere+1) := nombre;
      end loop;
   end sort;

end tuple;