package PLANIMETRY is type length is digits 5 range 0.0 .. 1.0E10; type area is digits 5 range 0.0 .. 1.0E20; function area_rectangle (L,H : length) return area; function area_circle (R : length) return area; function area_triangle (B,H : length) return area; function circumf_circle (R : length) return length; end PLANIMETRY;
package body PLANIMETRY is PI : constant := 3.1415926536; function area_rectangle (L,H : length) return area is begin return area(L) * area(H); end; function area_circle (R : length) return area is begin return PI * area(R) ** 2; end; function area_triangle (B,H : length) return area is begin return area(B) * area(H) / 2.0; end; function circumf_circle (R : length) return length is begin return 2.0 * PI * R; end; end PLANIMETRY;
with TEXT_IO, PLANIMETRY; procedure main is use TEXT_IO; ... declarations L : PLANIMETRY.length; -- length H : PLANIMETRY.length; -- height A : PLANIMETRY.area; -- area R : PLANIMETRY.length; -- radius begin R := ... ; A := PLANIMETRY.area_circle (R); end main;