Spec-Zone.ru › Ada 2012
Руководство по Ada 2012

A.17 Пакет Environment_Variables

Пакет Environment_Variables позволяет программе читать или изменять переменные окружения. Переменные окружения представляют собой пары имя-значение, где и имя, и значение являются строками. Определение того, что представляет собой переменная окружения, а также значение имени и значения определяются реализацией.

Статическая семантика

В библиотечном пакете Environment_Variables содержится следующая декларация:
package Ada.Environment_Variables is
pragma Preelaborate(Environment_Variables);
function Value (Name : in String) return String;
function Value (Name : in String; Default : in String) return String;
function Exists (Name : in String) return Boolean;
procedure Set (Name : in String; Value : in String);
procedure Clear (Name : in String);
procedure Clear;
procedure Iterate
(Process : not null access procedure (Name, Value : in String));
end Ada.Environment_Variables;
function Value (Name : in String) return String;
Если внешняя среда выполнения поддерживает переменные окружения, то Value возвращает значение переменной окружения с заданным именем. Если переменная окружения с заданным именем не существует, то возникает ошибка Constraint_Error. Если среда выполнения не поддерживает переменные окружения, то возникает ошибка Program_Error.
function Value (Name : in String; Default : in String) return String;
Если внешняя среда выполнения поддерживает переменные окружения и переменная окружения с заданным именем в настоящее время существует, то Value возвращает её значение; в противном случае возвращает Default.
function Exists (Name : in String) return Boolean;
Если внешняя среда выполнения поддерживает переменные окружения и переменная окружения с заданным именем в настоящее время существует, то Exists возвращает True; в противном случае возвращает False.
procedure Set (Name : in String; Value : in String);
Если внешняя среда выполнения поддерживает переменные окружения, то Set сначала очищает все существующие переменные окружения с заданным именем, а затем определяет новую переменную окружения с заданным именем и значением. В противном случае возникает ошибка Program_Error.
Если по причинам, определяемым реализацией, запрещено определение переменной окружения с заданным именем и значением, то возникает ошибка Constraint_Error.
Определяется реализацией, существуют ли значения, для которых вызов Set(Name, Value) имеет тот же эффект, что и Clear(Name).
procedure Clear (Name : in String);
Если внешняя среда выполнения поддерживает переменные окружения, то Clear удаляет все существующие переменные окружения с заданным именем. В противном случае возникает ошибка Program_Error.
procedure Clear;
Если внешняя среда выполнения поддерживает переменные окружения, то Clear удаляет все существующие переменные окружения. В противном случае возникает ошибка Program_Error.
procedure Iterate
(Process : not null access procedure (Name, Value : in String));
Если внешняя среда выполнения поддерживает переменные окружения, то Iterate вызывает подпрограмму, обозначенную Process, для каждой существующей переменной окружения, передавая имя и значение этой переменной. В противном случае возникает ошибка Program_Error.
Если существует несколько переменных окружения с одинаковым именем, Process вызывается один раз для каждой такой переменной.

Ограниченные (временно́й) ошибки

Вызов Value является ограниченной ошибкой, если существует более одной переменной окружения с заданным именем; возможные исходы:
  • возвращается одно из значений, и это же значение возвращается в последующих вызовах при отсутствии изменений в среде; или
  • возникает ошибка Program_Error.

Ошибочное выполнение

Одновременные вызовы процедур Set или Clear с вызовами любой подпрограммы пакета Environment_Variables или любого экземпляра Iterate приводят к ошибочному выполнению.
Вызовы процедур Set или Clear в фактической подпрограмме, соответствующей параметру Process процедуры Iterate, приводят к ошибочному выполнению.

Требования к документации

Реализация должна документировать, как операции этого пакета ведут себя, если переменные окружения изменяются внешними механизмами (например, при вызове системных сервисов операционной системы).

Разрешения реализации

Реализация, работающая на системе, которая не поддерживает переменные окружения, имеет право определять операции пакета Environment_Variables с семантикой, соответствующей случаю, когда внешняя среда выполнения поддерживает переменные окружения. В этом случае она должна предоставить механизм инициализации непустого набора переменных окружения перед выполнением раздела.

Рекомендации по реализации

Если среда выполнения поддерживает дочерние процессы, то текущие определенные переменные окружения должны использоваться для инициализации переменных окружения дочернего процесса.
Изменения переменных окружения, сделанные вне контроля этого пакета, должны немедленно отражаться на эффекте операций этого пакета. Изменения переменных окружения, сделанные с использованием этого пакета, должны немедленно отражаться во внешней среде выполнения. Этот пакет не должен выполнять буферизацию переменных окружения.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API