Здравствуйте, Mamut, Вы писали:
M>Что такое еxported items?
Все что написано внутри модуля считается инкапсулированным в нем. Модуль является не только единицей компиляции и исполнения, но и единицей инкапсуляции (что правильно). Для того чтобы что-то из написанного можно было увидеть из других модулей это что-то надо как-то отметить, логично да? Вопрос как это синтаксически отметить так чтобы и видно сразу было и писать не много? Вот для этих отметок придумали использовать "*" и "-". Для переменных "-" означает доступ только для чтения, "*" означает полный доступ. Подробности в Langauge Report, а тут пример:
MODULE Test;
TYPE
MyPrivateType = RECORD (* ... *) END; (* Другие модули этого типа не видят *)
MyPublicType* = RECORD (* Другие модули этот тип видят *)
PrivateVariable : INTEGER; (* Из других модулей эта переменная не видна *)
ReadOnlyVariable- : INTEGER; (* Другие модули могут только читать эту переменную *)
ReadWriteVariable*: INTEGER; (* Другие модули могут и читать и писать в эту переменную *)
END;
VAR
PrivateVariable : INTEGER; (* Из других модулей эта переменная не видна *)
ReadOnlyVariable- : INTEGER; (* Другие модули могут только читать эту переменную *)
ReadWriteVariable*: INTEGER; (* Другие модули могут и читать и писать в эту переменную *)
PROCEDURE DoSmth1(); (* Другие модули не видят этой процедуры *)
BEGIN
(* ... *)
END DoSmth1;
PROCEDURE DoSmth2*(); (* Другие модули могут вызывать эту процедуру *)
BEGIN
(* ... *)
END DoSmth2;
END Test;