D3 Reference Manual

Index | Help

Поиск по страницам

Разделы / Записи описания атрибутов / Использование записей описания атрибутов

Использование записей описания атрибутов

Описывают, форматируют и обрабатывают данные, содержащиеся в файлах.

Записи описания атрибутов ("Attribute Defining Items" или "ADI") хранятся в словаре файла и в главном словаре счета. Они используются практически всеми процессорами D3. С их помощью создаются взаимосвязи между данными, обеспечивается форматирование и отбор данных.

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

  • Атрибут 0: Идентификатор записи

Идентификатор записи описания, хранящейся в словаре. Так, например, в главном словаре любого счета есть запись "a/amc". Она определяет второй атрибут записи описания атрибута (ADI).

  • Атрибут 1: Словарный код ("d/code")

Cодержит символ "a", "s" или "x". Это означает "атрибут", "синоним" или "скрытый атрибут", соответственно. Код "s" нужен только ради удобства, чтобы разработчик мог создавать по одной записи с кодом "a" на каждый атрибут файла, а дополнительные ADI (синонимы) для того же самого атрибута создавать с кодом "s". Код "x" нужен для того, чтобы атрибут игнорировался в Update и в AQL. В D3 можно добавлять после кода любой текст, что не влияет на функционирование.

Можно создать цепочку записей описания атрибутов с последовательными числовыми идентификаторами, начиная с 1, которые будут использоваться глаголами AQL в качестве спецификаций вывода по умолчанию, при отсутствии явных спецификаций вывода. Идентификаторы должны быть последовательными, т.е. чтобы выводился атрибут с идентификатором 3, должны существовать атрибуты с идентификаторами 1 и 2, даже если они не нужны при выводе. Чтобы атрибут не отображался при выводе, необходимо установить в нем код "x".

Записи описания синонимов (со словарным кодом "s") ничем не отличаются от записей описания атрибутов (с кодом "a"). Они используются при создании нескольких ADI для одного и того же атрибута. (С помощью нескольких записей описания одного атрибута можно обрабатывать одни и те же данные различными способами). По общепринятому соглашению на один атрибут создается только одна запись описания с кодом "a". Остальные ADI для того же самого атрибута создаются с кодом "s" или "x".

  • Атрибут 2: Номер атрибута ("a/amc")

Здесь хранится номер определяемого атрибута. Сокращение "AMC" означает "Attribute Mark Count", то есть порядковый номер атрибута в записи. Нумерация начинается с единицы, то есть первый атрибут записи имеет номер атрибута (AMC) "1", "n"-й атрибут имеет AMC "n". По этому номеру определяется физическое местоположение значений атрибута в записи файла.

  • Атрибут 3: Заголовок (sub.header)

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

  • Атрибут 4: Структура (structure)

Используется для создания внутренних взаимосвязей в записи по принципу "главный атрибут и зависимые атрибуты". Суть такой взаимосвязи в том, что пока не появится значение в главном атрибуте, нельзя вводить значения в зависимые атрибуты (это поддерживается процессорами Update и AQL). Каждое значение главного атрибута управляет соответствующими значениями в зависимых атрибутах. Для указания управляющего и зависимого атрибутов используются коды "c" и "d", соответственно. Структура задается в следующем формате:

c;номер_атрибута;номер_атрибута;... 
d;номер_управляющего_атрибута  

У зависимых атрибутов, номера которых перечислены после "с", должны быть записи описания со строкой "d;номер_управляющего_атрибута" в четвертом атрибуте.

Формат "c;" (управляющий без зависимых) действителен и применяется для того, чтобы процессор Update выводил заголовок столбца не слева, а над значением поля.

  • Атрибут 5: Зарезервирован и недоступен
  • Атрибут 6: Зарезервирован и недоступен
  • Атрибут 7: Выходная конверсия

Этот атрибут содержит коды обработки, с помощью которых непустые значения определяемого атрибута преобразуются перед выводом. Коды обработки ("Processing Codes") подробно описаны, как отдельные термины. С их помощью данные подвергаются обработке на системном уровне, что позволяет во многих случаях избежать написания программ.

  • Атрибут 8: Корреляция (correlative)

Этот атрибут, так же как и атрибут "Конверсия" cодержит коды обработки, но эти коды выполняются до сортировки или создания активного списка выборки, после чего выполняются коды конверсии.

  • Атрибут 9: Тип атрибута (выравнивание)

Этот атрибут содержит коды выравнивания данных при выводе. Более подробную информацию см. в "attribute-type" и "master dictionary".

  • Атрибут 10: Ширина столбца

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

  • Атрибут 11: Зарезервирован и недоступен
  • Атрибут 12: Зарезервирован и недоступен
  • Атрибут 13: Зарезервирован и недоступен
  • Атрибут 14: Входная конверсия

Содержит коды обработки данных непосредственно после ввода. Их можно использовать для входного контроля и преобразования данных. Они применяются и к пустым значениям тоже.

  • Атрибут 15: Макро (macro)

Содержит имена атрибутов, передаваемых процессору Update при переходе в связанный файл по ссылке ("zooming"). Имена атрибутов перечисляются через пробел, без каких-либо знаков препинания.

  • Атрибут 16: Зарезервирован и недоступен
  • Атрибут 17: Описание

Используется для хранения комментариев и описаний, касающихся назначения данной записи описания атрибута. Текст, который хранится в этом атрибуте, выводится в качестве помощи в процессоре Update, если вместо данных вводится "?".

  • Атрибут 18: Зарезервирован и недоступен
  • Атрибут 19: Зарезервирован и недоступен
  • Атрибуты 20-30: Горячие клавиши (hotkey.all, hotkey0, ... hotkey9)

При работе с процессором Update можно использовать одиннадцать горячих клавиш для вызова подпрограмм FlashBASIC. Эти программы указываются в записях описания файла и в записях описания атрибута в формате "call имя_подпрограммы" в атрибутах с 20-го по 30-й. 20-й атрибут - универсальный для всех клавиш (hotkey.all), 21-й - для клавиши 1 (hotkey1) ... 30-й - для клавиши 0 (hotkey0) . Пользователь выбирает клавишу, которую он хотел бы использовать, путем ввода <Ctrl+x>клавиша (0-9). Далее производится поиск нужной подпрограммы в следующей последовательности:

  1. атрибут 20 в записи описания атрибута.
  2. атрибут 2n (где n - клавиша) в записи описания атрибута.
  3. атрибут 20 в записи описания файла.
  4. атрибут 2n (где n - клавиша) в записи описания файла.

Как только обнаруживается непустой атрибут, поиск заканчивается, и выполняется указанная в нем подпрограмма.

В подпрограммы FlashBASIC, вызываемые нажатием горячих клавиш, невозможно передать параметры.

Примеры:

Ниже приведены записи описания управляющего и зависимого атрибутов с кодами обработки:

dictionary-code        A
attribute-count        2
substitute-header 
structure              C;3
output-conversion 
correlative 
attribute-type         L
column-width           10
input-conversion
macro 
output-macro 
description            Этот атрибут управляет атрибутом 3.
dictionary-code        A
attribute-count        3
substitute-header
structure              D;2 
output-conversion     
correlative 
attribute-type         lw
column-width           10
input-conversion 
macro 
output-macro 
description            Этот атрибут зависит от атрибута 2.

Следующая запись описания атрибута может быть помещена в главный словарь и использоваться для обычных подсчетов, когда требуется, например, выяснить количество записей, соответствующих определенному критерию:

item id:               tally
dictionary-code        A
attribute-count        999
substitute-header
structure    
output-conversion      mrz
correlative            a"1"
attribute-type         R
column-width           4
input-conversion
macro
output-macro 
description            Обеспечивает константу "1", чтобы можно
                       было с помощью конструкции "total tally
                       det-supp" показывать количество записей
                       в разделе отчета (break-on).
hotkey.all 
Записи атрибутов по умолчанию

Записи описания атрибутов, которые могут находиться в словаре любого файла. Они выводятся автоматически, если в запросе AQL явно не указано ни одного атрибута вывода.

Записи описания "атрибутов по умолчанию" должны иметь последовательные числовые идентификаторы, начиная с 1. Эти идентификаторы используются глаголами AQL в качестве спецификаций вывода при полном отсутствии каких-либо других спецификаций вывода, включая атрибут "Output-Macro" в записи описания файла (FDI).

Числовые идентификаторы записей должны быть последовательными, т.е. чтобы распечатать атрибут по умолчанию с идентификатором 3, должны существовать атрибуты с идентификаторами 1 и 2, даже если они не нужны при выводе. Для того, чтобы атрибут по умолчанию не отображался при выводе, необходимо установить в нем код "x" в поле d/code.