Справочное руководство по языку Ада-83


Субмодули компилируемых модулей - часть 3


-— предшествуют некоторые локальные описания

function F(X : REAL) return REAL is

begin

-— последовательность операторов функции F ... end F;

procedure G(Y, Z : REAL) is

-— использующие пакет TEXT_IO локальные процедуры ... begin

-— последовательность операторов процедуры G ... end G;

end FACILITY;

procedure TRANSFORM(U : in out REAL) is

use FACILITY; begin

U := F(U); ... end TRANSFORM;

begin -- TOP TRANSFORM(R); FACILITY.G(R, S); end TOP;

Тело пакета FACILITY и процедуру TRANSFORM можно представить в виде раздельно компилируемых субмодулей модуля ТОР. Тело процедуры G также может быть представлено как субмодуль модуля FACILITY.

Пример 3:

procedure TOP is

type REAL is digits 10; R, S : REAL :== 1.0; package FACILITY is

PI : constant := 3.14159_26536; function F (X : REAL) return REAL; procedure G (Y, Z : REAL); end FACILITY;

package body FACILITY is separate; procedure TRANSFORM (U : in out REAL) is separate;

begin -- TOP TRANSFORM(R); ... FACILITY.G(R, S): end TOP;

separate (TOP) procedure TRANSFORM(L) : in out REAL) is

use FACILITY; begin

U := F(U); ... end TRANSFORM;

separate (TOP) package body FACILITY is

-— предшествуют некоторые локальные описания function F(X : REAL) return REAL is

begin

-- последовательность операторов функции F ... end F;

procedure G (Y, Z : REAL) is separate; -- след тела G

end FACILITY;

with TEXT_IO; separate (TOP.FACILITY) -- полное имя пакета FACILITY procedure G(Y, Z : REAL) is

--использующие ТЕХТ_Ю локальные процедуры begin

-- последовательность операторов процедуры G ... end G;

В этом примере TRANSFORM и FACILITYявляются субмодулями процедуры TOP, а G -субмодулем пакета FACILITY. Видимость в этом пакете такая же, как и в предыдущем, с одним отличием : TEXT_IO используется только в G, по этому соответствующий спецификатор совместности написан для G, а не для процедуры TOP. В остальном видимость идентификаторов в соответствующих телах программ обеих версий одинакова.




Начало  Назад  Вперед