|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 7395 (0x1ce3)
Types: TextFile
Notes: R1k Text-file segment
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦23408fdbc⟧
└─⟦this⟧
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;