ГОСТ Р И С 010303-11 — 2009
с объявлением)» является тип данных, объявленный для исходного фактического параметра, или тип данных
результата вычисления выражения, определяющего фактический параметр, в соответствии с разделом 12. а не
тип данных, объявленный для формального параметра, вместо которого он подставлен,
1)если V является агрегированным значением, то имя типа данных является просто именем агре
гированного типа данных (ARRAY. BAG. LIST. SET), а не каким-либо другим.
2) если V является перечисляемым типом данных, базирующимся на другом перечисляемом типе
данных, то добавляют имена перечисляемых типов данных, получаемых при прослеживании взаимо
связей BASED_ON. начиная от данного перечисляемого типа данных.
3) если V является наращиваемым перечисляемым типом данных, то рекурсивно добавляются
имена перечисляемых типов данных, являющихся расширениями V.
П р и м е ч а н и е — Две последние из перечисленных выше позиций справедливы для расширяемого
перечисляемого типа данных, который базируется на другом перечисляемом типе данных.
4) если V имеет неопределенное (?) значение, то возвращается пустой набор типа данных SET;
b
) повторяют следующие действия до тех пор. пока возвращаемый набор не перестанет
расширяться:
1) выполняют следующие действия для всех имен в возвращаемом наборе:
- если текущее имя является именем простого типа данных, то пропускают.
- если текущее имя является именем агрегированного типа данных (ARRAY. BAG. LIST. SET), то
пропускают.
- если текущее имя является именем перечисляемого типа данных, то пропускают.
- если текущее имя является именем выбираемого типа данных, то к возвращаемому набору
добавляются имена всех типов данных (с именем схемы) из списка выбора, которые действительно
конкретизируются посредством V (данных имен может быть несколько, так как список выбора может
содержать имена типов данных, являющихся совместимыми подтипами общего супертипа или конкре
тизациями одного общего обобщенного типа),
- если текущее имя является именем любого другого вида определенного типа данных, то имя
типа данных, на который ссылается определение данного типа данных, включая (при необходимости)
имя схемы, добавляется к возвращаемому набору. Если ссылка делается на агрегированный тип дан
ных. то добавляется имя данного агрегированного типа данных,
- если текущее имя является именем объекта, то к возвращаемому набору добавляются имена
всех тех подтипов (включая, при необходимости, имя схемы), которыедействительно конкретизируются
посредством V.
2) выполняют следующие действия для всех имен в возвращаемом наборе:
- если текущее имя является именем подтипа, то к возвращаемому набору добавляются имена
всех его супертипов.
- если текущее имя является именем конкретизации, то к возвращаемому набору добавляются
имена всех ее обобщений,
3) выполняют следующие действия для всех имен в возвращаемом наборе и для каждого типа
данных SELECT, у которого текущее имя присутствует всписке выбора:
- добавляют имя выбираемого типа данных ксписку,
- если выбираемый тип данных базируется на другом выбираемом типе данных, то добавляют
имена выбираемых типовданных, получаемых при прослеживании взаимосвязей BASED_ON. начиная с
текущего выбираемого типа данных.
- если выбираемый типданных является наращиваемым выбираемым типомданных, то рекурсив
но добавляют имена выбираемых типов данных, являющихся расширениями текущего выбираемого
типа данных.
4) выполняют следующие действия для всех имен в возвращаемом наборе: если текущее имя
импортировано всхему посредством операторов USE или REFERENCE, то в возвращаемый набор до
бавляют имя из схемы, откуда был осуществлен импорт, уточненное именем данной схемы. Поскольку
операторы USE могут быть связаны в цепочки, в возвращаемый набор также добавляют имена из всех
связанных схем, уточненные именами соответствующих схем;
c) результатом функции является сформированный возвращаемый набор.
Если V имеет неопределенное (?) значение, то функция TYPEOF возвращает пустой набор.
П р и м е ч а н и е — Функция TYPEOF завершает свою работу, когда встречается агрегированный тип
данных. Функция не дает информации относительно базисного типа данных агрегированного значения. При
109