with Ada.Text_IO; use Ada.Text_IO; with Ada.Integer_Text_IO; package body SimpleADT is function "+"(Data1, Data2 : DATA_STRUCTURE) return DATA_STRUCTURE is Temp : DATA_STRUCTURE; begin Temp(1) := Data1(1) + Data2(1); Temp(2) := Data1(2) + Data2(2); Temp(3) := Data1(3) + Data2(3); return Temp; end "+"; function "-"(Data1, Data2 : DATA_STRUCTURE) return DATA_STRUCTURE is Temp : DATA_STRUCTURE; begin Temp(1) := Data1(1) - Data2(1); Temp(2) := Data1(2) - Data2(2); Temp(3) := Data1(3) - Data2(3); return Temp; end "-"; function Build_Structure(Val1, Val2, Val3 : INTEGER) return DATA_STRUCTURE is Temp : DATA_STRUCTURE; begin Temp(1) := Val1; Temp(2) := Val2; Temp(3) := Val3; return Temp; end Build_Structure; procedure Decompose(Data1 : DATA_STRUCTURE; Val1, Val2, Val3 : out INTEGER) is begin Val1 := Data1(1); Val2 := Data1(2); Val3 := Data1(3); end Decompose; procedure setElt(Data: IN OUT DATA_STRUCTURE; Index: In Integer; Value: In Integer) is begin Data(Index) := Value; end setElt; function GetElt(Data : IN DATA_STRUCTURE; Index: In Integer) return Integer is begin return Data(Index); end GetElt; procedure PrintData(Data : IN DATA_STRUCTURE) is Index : Integer; begin for Index in 1..3 loop Ada.Integer_Text_IO.Put(Data(Index)); Ada.Text_IO.Put(" "); end loop; Ada.Text_IO.Put_Line(""); end PrintData; end SimpleADT;