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

⟦203695789⟧ TextFile

    Length: 7395 (0x1ce3)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦23408fdbc⟧ 
            └─⟦this⟧ 

TextFile

package detail is

type detail_kind is (real,group,unknown);

type object(kind : detail_kind := unknown) is private;

procedure create_real(item : in out object;index : in positive);
procedure create_group(item : in out object;position : in positive);
procedure show(item : in object);
function is_a_real(item : in object) return boolean;
function is_a_group(item : in object) return boolean;
function field(item : in object) return natural;
function image(item : object) return string;

null_object : constant object;

private

type object(kind : detail_kind := unknown) is record
case kind is
when field =>
field_index : natural :=0;
when group =>
group_position: natural :=0;
when unknown =>
null;
end record;

null_object : constant object := (kind=>unknown);

end;

with text_io,the_order,complement_identifier_array,field_identifier_array;
package body detail is

procedure create_real(item : in out object;index : in positive) is

begin
item:=(kind=>real,field_index=>index);
end;

procedure create_group(item : in out object;position : in positive) is

begin
item:=(kind=>group,group_position=>index);
end;

procedure show(item : in object) is

begin
text_io.put_line("Detail : Kind : " & detail_kind'image(item.kind) &
image(item));
end;

function is_a_real(item : in object) return boolean is

begin
return item.kind = real;
end;

function is_a_group(item : in object) return boolean is

begin
return item.kind = group;
end;

function field(item : in object) return natural is

begin
case item.kind is
when real =>
return item.field_index;
when group =>
field_identifier_array.index(complement_identifier_array.image(the_order.complement(item.group_position)));
when unknown =>
return 0;
end;

function image(item : object) return string is

begin
field_identifier_array.image(field(item)); -- si zero ??????
end;

end;

with objet,detail,identifier;
package attribute is

type object is private;

--procedure put(item : out object;an_objet : in objet.object;field_name : in string);
--procedure put(item : out object;an_objet : in objet.object;field_index : in natural);
procedure put(item : out object;an_objet : in objet.object;a_detail : in detail.object);
procedure affect (item : in object;number : integer;ok : out boolean); 
procedure affect (item : in object;enumeration,literal : in positive;ok : out boolean); 
procedure show(item : in object);
function is_a_number(item : in object) return boolean;
function is_a_sentence(item : in object) return boolean;
function is_an_enumerate(item : in object) return boolean; 
function exist(item : in object) return boolean; 
function image(item : in object) return string;
function number(item : in object) return integer;
function sentence(item : in object) return string;
function enumeration(item : in object) return natural;
function literal(item : in object) return natural;

private
type object is record
the_objet : objet.object := objet.null_object;
the_detail : detail.object := detail.null_object;
--field_index : natural := 0;
--field_name : identifier.object := identifier.null_object;
end record;

--null_object (the_objet => objet.null_object,field_name=> identifier.null_object); 
 null_object (the_objet => objet.null_object,the_detail=> detail.null_object); 

end;

with text_io,complement_array,enumeration_array;
package body attribute is

--procedure put(item : out object;an_objet : in objet.object;field_name : in string) is

--begin
--	item.an_objet := an_objet;
--	identifier.put(item.field_name,field_name);
--end;

--procedure put(item : out object;an_objet : in objet.object;field_index : in natural) is
procedure put(item : out object;an_objet : in objet.object;a_detail : in detail.object) is

begin
	item.the_objet := an_objet;
item.the_detail := a_detail;
--	item.field_index:=field_index;
end;

procedure affect (item : in object;number : integer;ok : out boolean) is

begin
  if is_a_number(item) then
  	complement_array.field_Put_number (objet.complement(item.the_objet),field(item.the_detail),number,ok);
	else 
	 ok := false;
	end if;
end;

procedure affect (item : in object;enumeration,literal : in positive; ok : out boolean) is

begin
  if is_an_enumerate(item) then
	complement_array.field_Put_enumerate(objet.complement(item.the_objet),filed(item.the_detail),enumeration,literal,ok);
	else 
	  ok := false;
	end if;
end;

procedure show(item : in object) is

begin
	text_io.put_line("Attribute :")
	Objet.show(item.the_objet);
--	text_io.put("Field : " & identifer.image(item.field_name));
	--text_io.put("Field : " & natural'image(item.field_index));
detail.show(item.the_detail);	
if is_a_number(item) then
		text_io.put_line("Number : " & image(item));	
	elsif is_a_sentence(item) then
		text_io.put_line("Sentence : " & image(item));		
	elsif is_an_enumerate(item) then
		text_io.put_line("Enumerate : " & image(item)); 
	else
	  new_line;
	end;
end;

function is_a_number(item : in object) return boolean is

begin
--return complement_array.field_is_a_number(objet.complement(item.an_objet),
--identifier.image(item.field_name));
return complement_array.field_is_a_number(objet.complement(item.the_objet),
field(item.the_detail);
end;
	
function is_a_sentence(item : in object) return boolean is

begin
--return complement_array.field_is_a_sentence(objet.complement(item.an_objet),
--identifier.image(item.field_name));
return complement_array.field_is_a_sentence(objet.complement(item.the_objet),
field(item.the_detail));
end;

function is_an_enumerate(item : in object) return boolean is

begin
--return complement_array.field_is_an_enumerate(objet.complement(item.an_objet),
--identifier.image(field_name));
return complement_array.field_is_an_enumerate(objet.complement(item.the_objet),
field(the_detail));
end;

function exist(item : in object) return boolean is

begin
--	return complement_array.field_exist(objet.complement(item.an_objet),field_name);
	return complement_array.field_belong(objet.complement(item.the_objet),field(item;the_detail));
end;

function image(item : in object) return string is

begin
	if is_a_number(item) then
		return integer'image(number(item));	
	elsif is_a_sentence(item) then
		return sentence(item);		
	elsif is_an_enumerate(item) then
		return enumeration_array.literal_image(enumeration(item),
			literal(item));
	else
	  return "";
	end;
end;

function number(item : in object) return integer is

begin
--return complement_array.field_number(objet.complement(item.an_objet),
--identifier.image(item.field_name));
return complement_array.field_number(objet.complement(item.an_objet),
field(item.the_detail));
end;

function sentence(item : in object) return string is

begin
--return complement_array.field_sentence(objet.complement(item.an_objet),
--identifier.image(item.field_name));
return complement_array.field_sentence(objet.complement(item.an_objet),
field(item.the_detail);
end;

function enumeration(item : in object) return natural is

begin
--return complement_array.enumeration(objet.complement(item.an_objet),
--identifier.image(item.field_name));
return complement_array.field_enumeration(objet.complement(item.an_objet),
field(item.the_detail));
end;

function literal(item : in object) return natural is

begin
--return complement_array.literal(objet.complement(item.an_objet),
--identifier.image(item.field_name));
return complement_array.field_literal(objet.complement(item.an_objet),
field(item;the_detail);
end;

end;