Откройте актуальную версию документа прямо сейчас
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.
Приложение D
(справочное)
Примеры
D.1 Пример использования упрощенного класса OPERATION
Применим следующее упрощенное определение классов информационных объектов OPERATION ERROR:
OPERATION : : = CLASS
{
&ArgumentType OPTIONAL,
&ResultType OPTIONAL,
& Errors ERROR OPTIONAL,
&Linked OPERATION OPTIONAL,
&resultReturned BOOLEAN DEFAULT TRUE,
&operationCode INTEGER UNIQUE
}
WITH SYNTAX
{
[ARGUMENT &ArgumentType]
[RESULT &ResultType]
[RETURN RESULT &resultReturned]
[ERRORS &Errors]
[LINKED &Linked]
CODE &operationCode
}
ERROR : : = CLASS
{
&ParameterType OPTIONAL
&errorCode INTEGER UNIQUE
}
WITH SYNTAX
}
[PARAMETER &ParameterType]
CODE &errorCode
}
Можно определить следующее множество объектов, которое содержит два объекта OPERATION:
My-Operations OPERATION : : = {operation A | operation В}
operationA OPERATION : : = {
ARGUMENT INTEGER
ERRORS {{PARAMETER INTEGER CODE 1000} | {CODE 1001}}
CODE 1
}
operationB OPERATION : : = {
ARGUMETN IA5String
RESULT BOOLEAN
ERRORS {{CODE 1002} | {PARAMETER IA5String CODE 1003}}
CODE 2
}
Извлечение множества объектов ERROR из приведенного выше множества объектов проводят следующим образом:
My-Operation Errors ERROR : : = {My-Operations.&Errors}
Результирующее множество объектов есть:
My-Operation Errors ERROR : : = {
{ PARAMETER INTEGER CODE 1000}
{ CODE 1001}
{ CODE 1002}
{ PARAMETER IA5String CODE 1003}
Извлечение множества кодов ошибок операций проводят следующим образом:
Му-Ореration ErrorCodes INTEGER : : = {Му-Ореrations.&Errors.&errorCode}
Результирующее множество значений есть:
My-OperationErrorCodes INTEGER : : = {1000 | 1001 | 1002 I 1003}
D.2 Пример использования "ObjectClassFieldType"
Продукция "ObjectClassFieldType" может использоваться в спецификации типов, например:
- - Типы "ObjectClassFieldType" извлекаются из этого класса.
- - Только первые пять полей могут быть использованы при извлечении.
EXAMPLE-CLASS : : = CLASS {
&ТуреField OPTIONAL,
&fixedTypeValueField INTEGER OPTIONAL,
&variableTypeValueField &TypeField OPTIONAL,
&FixedTypeValueSetField INTEGER OPTIONAL,
&VariableTypeValueSetField &TypeField OPTIONAL,
&objectField SIMPLE-CLASS OPTIONAL,
&ObjectSetField SIMPLE-CLASS OPTIONAL
}
WITH SYNTAX {
[TYPE-FIELD &Type Field]
[FIXED-TYPE-VALUE-FIELD &fixedTypeValueField]
[FIXED-TYPE-VALUE-SET-FIELD &variableTypeValueField]
[FIXED-TYPE-VALUE-SET-FIELD &FixedTypeValueSetField]
[VARIABLE-TYPE-VALUE-SET-FIELD &VariableTypeValueSetField]
[OBJECT-FIELD &objectField]
[OBJECT-SET-FIELD &ObjectSetField]
}
SIMPLE-CLASS : : = CLASS {
&value INTEGER
}
WITH SYNTAX {
&value
}
- - Этот тип содержит компоненты, которые специфицированы с
- - использованием нотации "ObjectClassFieldType".
- - В случае полей типа, полей значений и множеств значений
- - переменного-типа результирующий тип компонента является
- - открытым типом. В случае полей значения и множества значений
- - фиксированного-типа результирующим типом компонента является INTEGER.
- - Примечание:
- - Ограничения опущены из всех последующих
- - использований "ObjectClassFieldType"; обычно можно использовать
- - ограничения при ссылке на "ObjectClassFieldType".
ExampleType : : = SEQUENCE {
openTypeComponent1 EXAMPLE-CLASS.&TypeField,
integerComponent1 EXAMPLE-CLASS.&fixedTypeValueField,
openTypeComponent2 EXAMPLE-CLASS.&variableTypeValueField,
integerComponent2 EXAMPLE-CLASS.&FixedTypeValueSetField,
openTypeComponent3 EXAMPLE-CLASS.&VariableTypeValueSetField,
}
exampleValue ExampleType : : = {
openTypeComponent1 BOOLEAN : TRUE,
integerComponent1 123,
openTypeComponent2 IA5String: "abcdef",
integerComponent2 456
openTypeComponent3 BIT STRING : '0101010101'B
D.3 Пример использования объектов и множества объектов
Пример использования класса объектов, определенного в D.2:
objectA EXAMPLE-CLASS : : = {
FIXED-TYPE-VALUE-FIELD 123
FIXED-TYPE-VALUE-SET-FIELD {1|2|3}
OBJЕСТ-FIELD {1}
OBJECT-SET-FIELD {{2} | {3}}
}
objectB EXAMPLE-CLASS : : = {
TYPE-FIELD IA5String
FIXED-TYPE-VALUE-FIELD 456
VARIABLE-TYPE-VALUE-FIELD "abc"
VARIABLE-TYPE-VALUE-SET-FIELD {"d" | "e" | "f"}
}
- - Следующее множество объектов содержит два определяемых
- - объекта и один встроенный.
ObjectSet EXAMPLE-CLASS : : = {
objectА |
objectB |
{
TYPE-FIELD INTEGER
FIXED-TYPE-VALUE-FIELD 789
VARIABLE-TYPE-VALUE-SET-FIELD {4 | 5 | 6}
}
}
- - Следующие определения извлекают информацию из объектов и
- - множества объектов.
integer Value INTEGER : : = objectA.&fixedTypeValueField
stringValue IA5String : : = objectB.&variableTypeValueField
IntegerValueSetFromObjectA INTEGER : : = {objectA.&FixedTypeValueSetField}
StringValueSet IA5String : : = {objectB.&VariableTypeValueSetField}
StringType : : = objectB.&TypeField
objectFromObjectA SIMPLE-CLASS : : = objectA.&objectField}
ObjectSetFromObjectA SIMPLE-CLASS : : = {objectA.&ObjectSetField}
SetOfValuesInObjectSet INTEGER : : = {ObjectSet.&fixedTypeValueField}
SetOfValueSetsInObjectSet INTEGER : : = {ObjectSet.&FixedTypeValueSetField}
SetOfObjectsInObjectSet SIMPLE-CLASS : : = {ObjectSet.&objectField}
SetOfObjectSetsInObjectSet SIMPLE-CLASS : : = {ObjectSeL&ObjectSetField}
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.