Язык пакетной корректировки баз данных ИРБИС

Материал из Wikipedia
Версия от 14:08, 18 апреля 2013; Sokv (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Язык пакетной корректировки баз данных ИРБИС применяется для единовременной корректировки группы записей базы данных.

Общие сведения

Корректировка выполняется на уровне записей, полей и подполей. Можно задать следующие виды корректировки:

  • изменить значение поля или подполя в записи;
  • заменить целиком поле или подполе в записи;
  • добавить поле в запись;
  • добавить подполе в поле;
  • удалить поле или подполе в записи;
  • удалить запись;
  • восстановить удаленные записи;
  • создать новую запись в указанной базе данных и перейти к ее наполнению;
  • опустошить запись.

В заданиях на корректировку возможно использование операторов для следующих действий:

  • отобрать записи в указанной базе данных и перейти к их корректировке;
  • задать условие выполнения группы операторов;
  • организовать цикл выполнения группы операторов.

Задания на корректировку могут содержать комментарии.

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

Файл задания

Задание на пакетную корректировку представляет собой текстовый файл с расширением .gbl.

Создать файл задания можно в текстовом редакторе в соответствии со структурой файла, описанной в подразделе Структура файла задания. Можно для создания использовать модуль глобальной корректировки. В этом случае можно создать новое задание или откорректировать уже имеющееся.

Создание задания в модуле глобальной корректировки

При использовании модуля глобальной корректировки задание на корректировку задается в таблице, состоящей из любого количества строк (строка – оператор корректировки) и пяти столбцов (в случае использования параметров количество столбцов увеличивается). Данные в столбцах задаются с клавиатуры или выбираются из справочников:

  • Оператор. Задается в первом столбце выбором из меню. Основными операторами являются – ADD, REP, CHA, CHAC, DEL, именно для них настроены следующие столбцы. При выборе оператора некоторые столбцы забиваются, если они для этого оператора не имеют смысла.
  • Поле/подполе. Во втором столбце задаются данные в зависимости от оператора корректировки. Для основных операторов – это метка корректируемого поля с обозначением подполя. Предлагается выбрать метку из списка, но можно задать и с клавиатуры. Список формируется по файлу Default.ws, который имеется в каждой базе данных.
  • Повторение. Выбирается из списка или вводится с клавиатуры. Вместо N следует задать конкретное число – номер повторения, буква L обозначает последнее повторение.
  • Формат 1. Следует задать явный формат, который будет выполняться на текущей записи. Результат форматирования используется в зависимости от оператора. По двойному щелчку будет открыт генератор форматов или (в случае неудачи) текстовый редактор, в которых можно сделать формат и передать его в столбец таблицы.
  • Формат 2. См. предыдущий пункт.

Если задание создается для работы в режиме ГЛОБАЛЬНАЯ, то в задании можно определить наличие параметров, значения которых будут использоваться при отработке форматов. Использование параметров можно определить, корректировкой файла задания в стандартном редакторе. Когда задание создается в режиме ГЛОБАЛЬНАЯ, то количество параметров формируется как равное нулю. Можно использовать не более 9 параметров. Если в задании определено наличие параметров, то в таблице появятся дополнительные столбцы для задания значений параметров вводом с клавиатуры или выбором из меню. В форматах параметры обозначаются номером с предшествующим символом '%'. Значения параметров, заданные пользователем, заменяют символы '%n' в задании.

Структура файла задания

Файл задания содержит последовательность операторов корректировки, каждый из которых состоит из нескольких строк. Операторы выполняются в порядке их следования, причем каждый оператор использует значения полей и/или подполей измененных, возможно, предыдущими операторами.

Первая строка файла задания – это число, задающее количество параметров, используемых в операторах корректировки.

Последующие пары строк (число пар должно быть равно количеству параметров) используются программой глобальной корректировки. Первая строка пары - значение параметра или пусто, если пользователю предлагается задать его значение перед выполнением корректировки. В этой строке можно задать имя файла меню (с расширением MNU) или имя рабочего листа подполей (с расширением Wss), которые будут поданы для выбора значения параметра. Вторая строка пары – наименование параметра, которое появится в названии столбца, задающего параметр.

Далее следуют группы строк, описывающих операторы корректировки. Первая строка каждой группы – это имя оператора, которое может иметь одно из значений: ADD, REP, CHA, CHAC, DEL, DELR, UNDEL, CORREC, NEWMFN, END, IF, FI, ALL, EMPTY, REPEAT, UNTIL, //. Количество строк, описывающих оператор, зависит от его назначения. Операторы ADD, REP, CHA, CHAC, DEL описываются пятью строками, в которых задаются следующие элементы:

  • ИМЯ ОПЕРАТОРА.
  • МЕТКА ПОЛЯ/ПОДПОЛЯ: число, обозначающее метку поля, + разделитель подполя + обозначение подполя. Разделитель подполя с обозначением могут отсутствовать.
  • ПОВТОРЕНИЕ ПОЛЯ:
    • * – если корректируются все повторения;
    • F – если используется корректировка по формату;
    • N (число) – если корректируется N-ое повторение поля;
    • L – если корректируется последнее повторение поля;
    • L-N ( число) – если корректируется N-ое с конца повторение поля.
  • ФОРМАТ 1 – формат.
  • ФОРМАТ 2 – формат.

Для каждого конкретного оператора элементы ФОРМАТ 1 и ФОРМАТ 2 имеют свое назначение. Некоторые из элементов могут не задаваться, когда в конкретной конфигурации они не имеют смысла. Тогда соответствующая строка в задании должна быть пустой или занята символом-заполнителем, как это формирует программа глобальной корректировки.

Содержимое строк остальных операторов определяется их назначением и представлено в описании операторов.

Операторы корректировки

Каждый оператор корректировки занимает одну строку таблицы. Имеются кнопки для вставки пустой строки и удаления строки.

Оператор ADD

Оператор выполняет добавление нового повторения поля или подполя в заданное существующее поле. При этом выполняются следующие правила:

  • Если задана МЕТКА ПОЛЯ и не задано подполе, то:
    • столбец повторения поля блокируется как не имеющий смысла, соответствующая строка в файле задания заполняется символом-заполнителем;
    • все строки, сформированные ФОРМАТОМ 1, записываются как новые повторения поля.
  • Если заданы МЕТКА ПОЛЯ с обозначением подполя, то первая строка, которая формируется ФОРМАТОМ 1, записывается как подполе в заданное повторение поля.
  • Если заданного повторения нет в записи, то формируется новое повторение метки с заданным подполем.
  • Если ПОВТОРЕНИЕ задано признаком F, то:
    • ФОРМАТ 1 формирует строки добавляемых данных;
    • номер строки определяет номер того повторения, в которое будет добавлено заданное подполе с данными строки.
  • Если повторений поля в записи меньше, чем сформатированных строк, то лишние строки не используются, если повторений больше, чем строк, то лишние повторения не корректируются.

Во всех случаях ФОРМАТ 2 не используется и соответствующие строки в файле задания заполняются символом-заполнителем.

Оператор не позволяет приписывать данные в конец поля/подполя. Для этого можно воспользоваться оператором CHA.

Оператор REP

Оператор заменяет целиком поле или подполе на новое значение, которое задается ФОРМАТОМ 1. Выполняются следующие правила:

  • Если ПОВТОРЕНИЕ задано не признаком 'F', то заданное поле/подполе заменяется на строку, которую формирует ФОРМАТ 1 (используется только первая строка, остальные строки игнорируются).
  • Если ПОВТОРЕНИЕ задано признаком 'F', то строки, формируемые ФОРМАТОМ 1 заменяют повторения поля или подполя в повторении. Причем, номер строки по формату 1 соответствует номеру корректируемого повторения записи.
  • Если повторений в записи больше чем строк формата 1, то корректируются только те, для которых есть строки. Если повторений в записи меньше чем строк ФОРМАТА 1, то лишние строки ФОРМАТА 1 не используются.
  • Если ФОРМАТ 1 дает пустую строку, то соответствующее поле/подполе удаляется. Пустую строку следует получать, используя оператор пропуска строки #.

Во всех случаях ФОРМАТ 2 не используется и соответствующие строки в файле задания заполняются символом-заполнителем.

Оператор CHA/CHAC

Оператор выполняет замену данных в поле или в подполе. Отличие двух операторов в том, что CHAC выполняется с учетом регистра. Для определения заменяемых и заменяющих данных используются ФОРМАТ 1 и ФОРМАТ 2.

Выполняются следующие правила:

  • Если ПОВТОРЕНИЕ задано не признаком 'F', то:
    • первая строка ФОРМАТА 1 является той строкой, которая ищется в заданном поле/подполе (в заданном повторении или во всех повторениях) – строка A;
    • первая строка ФОРМАТА 2 является строкой, которая должна заменить найденную строку – строка B.
  • Если строка А пустая, то строка В приписывается в конец корректируемого поля/подполя.
  • Если строка В пустая, то строка А удаляется. Пустую строку следует получать, используя оператор пропуска строки #.
  • Если ПОВТОРЕНИЕ задано признаком 'F', то:
    • строки, получаемые ФОРМАТОМ 1 (строки Ai), ищутся в соответствующих по порядку повторениях поля;
    • строки, получаемые ФОРМАТОМ 2 (строки Bi), заменяют в соответствующих их порядку повторениях строки Ai, т.е. строка Bi заменит в i-ом повторении заданного поля или в подполе заданного поля строку Ai;
    • если строка Ai пустая, то строка Bi приписывается, если строка Bi пустая, то строка Ai удаляется.
  • Если в поле заданное для корректировки подполе встречается несколько раз, то корректируются все подполя.
  • Если строка А встречается в поле/подполе несколько раз, то заменяются все строки А.
  • Поиск строки A в тексте записи проводится без учета регистра (перед сравнением все переводится в верхний регистр). Строка B пишется в запись в том регистре, в котором задана.

Оператор DEL

Оператор удаляет поле или подполе в поле. Выполняются следующие правила:

  • Удаляется заданное повторение поля или в поле заданное подполе. Если в поле несколько заданных подполей, то удаляются все.
  • Если ПОВТОРЕНИЕ поля задано не признаком F, то ФОРМАТ 1 и ФОРМАТ 2 не используются, соответствующие столбцы блокируются и соответствующие строки в файле задания заполняются символом-заполнителем.
  • Если ПОВТОРЕНИЕ задано признаком F, то удаляются повторения в зависимости от значения строк, полученных ФОРМАТОМ 1. Если значение строки '1', то соответствующее по порядку повторение удаляется, иначе нет. ФОРМАТ 2 не используется.

Оператор DELR

Оператор удаляет записи, поданные на корректировку. Не требует никаких дополнительных данных.

Оператор UNDEL

Оператор восстанавливает записи в диапазоне MFN, который задан в форме ГЛОБАЛЬНОЙ. Не требует никаких дополнительных данных. Операторы, следующие за данным, выполняются на восстановленных записях.

Оператор CORREC

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

  1. Имя оператора – CORREC.
  2. Формат – результатом форматирования текущей записи должна быть текстовая строка, задающая имя той базы данных, в которой следует отобрать записи для пакетной корректировки. Если строка – '*', то этой базой данных останется текущая.
  3. Формат – результатом форматирования текущей записи должна быть строка, которая передается в корректируемые записи в виде модельного поля с меткой 1001. Т.е. это способ передачи данных от текущей записи в корректируемые. Следует не забывать в последнем операторе группы удалять поле 1001.
  4. Формат – результатом форматирования текущей записи должны быть строки, которые будут рассматриваться как термины словаря другой (или той же) базы данных. Записи, связанные с этими терминами, будут далее корректироваться. Если последним символом термина будет символ '$' (усечение), то отбор записей на корректировку будет аналогичен проведению в другой базе данных поиска 'термин$'
  5. Можно задать пятую строку, в которой указывается количество корректируемых записей, если надо корректировать не все отобранные записи.

Оператор NEWMFN

Оператор создает новую запись в текущей или другой базе данных. Предполагается, что за этим оператором следуют операторы ADD, которые будут наполнять новую запись. Группа операторов ADD завершается оператором END, после которого корректирующие операторы будут относиться к исходной базе данных и к исходной (текущей) записи. В операторах ADD форматирование по ФОРМАТ 1 происходит в исходной записи исходной базы данных. В файле задания оператор описывается двумя строками, которые содержат следующие данные:

  1. Имя оператора – NEWMFN.
  2. Формат – результатом форматирования текущей записи должна быть текстовая строка, задающая имя той базы данных, в которой будет создана новая запись. Если строка – '*', то этой базой данных останется текущая.

Оператор END

Завершает работу с другой базой данных, установленной в операторах CORREC или NEWREC. Состоит из единственной строки – END.

Оператор IF

Определяет условие выполнения операторов, следующих за ним до оператора FI. Состоит из двух строк: первая строка – имя оператора IF; вторая строка – формат, результатом которого может быть строка '1', что означает разрешение на выполнение последующих операторов, или любое другое значение, что означает запрет на выполнение последующих операторов.

Оператор FI

Завершает действие оператора IF. Состоит из одной строки – FI.

Оператор ALL

Оператор можно использовать в группе операторов после операторов NEWMFN или CORREC. Он дополняет записи всеми полями текущей записи. Т.е. это способ, например, создать новую запись и наполнить ее содержимым текущей записи. Или можно вызвать на корректировку другую запись (CORREC), очистить ее (EMPTY) и наполнить содержимым текущей записи.

Оператор EMPTY

Оператор очищает текущую запись.

Оператор REPEAT

Операторы REPEAT-UNTIL организуют цикл выполнения группы операторов. Группа операторов между ними будет выполняться до тех пор, пока формат в операторе UNTIL будет давать значение '1'.

Оператор UNTIL

Второй строкой оператора должен быть формат, который позволяет за-вершить цикл, если результат форматирования на текущей записи отличен от '1'.

Оператор //

Оператор – комментарий. Может находиться между другими операторами и содержать любые тексты в строках (до 4-х) после себя.

Примеры составления заданий на пакетную корректировку

Пример 1. Для каждой записи заданного фрагмента выполнить следующие действия:

  • В повторениях поля экземпляров (метка поля 910) удалить те повторения, у которых в подполе статуса экземпляра (подполе ^A) содержится значение "6", т.е. экземпляр списан.
  • Удаляемые из поля 910 повторения сохранить в поле архивных данных о выбытии (метка поля 940).
  • Перенести в поле общего примечания (метка поля 300), предварительно его очистив, некоторые данные о первом авторе (метка поля 700): фамилию (подполе ^A), через пробел инициалы (подполе ^B), через знак тире неотъемлемую часть имени (подполе ^1) и в скобках даты жизни (подполе ^F).
  • Заменить в повторениях поля экземпляров (метка поля 910), у которых значение места хранения "ФО-26" (подполе ^D), дату поступления (подполе ^C) на новую дату "20021206".
  • Заменить во всех повторениях поля экземпляров (метка поля 910) значение места хранения "ФМЗ" (подполе ^D) на новое значение "ФМЗ-1".

Задание на пакетную обработку:

0
ADD
940

(if p(v910) then if v910^A='6' then v910 fi fi/)

REP
910
F
(if p(v910) then if v910^A='6' then # else v910 fi fi/)

DEL
300
*


ADD
300

v700^A," "v700^B," - "v700^1,"("v700^F")"

CHA
910
F
(v910^C/)
(if p(v910) then if v910^D: 'ФО-26' then '20021206' else v910^C fi fi/)
CHA
910^D
*
'ФМЗ'
'ФМЗ-1' 

Пример 2. Для каждой записи заданного фрагмента выполнить следующие действия: Если в одном из повторений поля ГРНТИ (метка поля 964) содержится значение "14", то выполнить несколько операторов:

  • добавить поле 621 со значением "141";
  • добавить поле 606 со значением "Физика";
  • удалить поле 690.

Если в одном из повторений поля УДК (метка поля 675) содержится индекс "37(470.311)", то создать новую запись в базе данных CMPL, в которой надо сформировать поля:

  • метка 675 – значение этого индекса;
  • метка 920 – значение "PAZK";
  • метка 200 – значение из исходной записи;
  • метка 700 – значение из исходной записи;
  • метка 910 – все повторения из исходной записи.

Задание на пакетную обработку:

0
IF
if (v964|!|): '14!' then '1' else '0' fi
ADD
621

'141'

ADD
606

'Физика'

DEL
690
*

FI
NEWMFN
if (v675|!|): '37(470.311)!' then 'CMPL' else  fi
ADD
675

'37(470.311)'

ADD
920

'PAZK'

ADD
200

v200

ADD
700

v700

ADD
910

(v910/)

END

Пример 3. Для каждой записи заданного фрагмента выполнить следующие действия:

  • Если в поле кода рабочего листа (метка поля 920) содержится значение "SPEC", то для всех значений индекса УДК (метка поля 675) отобрать в той же БД записи с этими индексами УДК (значения индексов без усечения).
  • В отобранные записи добавить все повторения поля экземпляров (метка по-ля 910) из основной записи.
  • В основной же записи повторения поля экземпляров удалить.

Задание на пакетную обработку:

0
CORREC
if v920='SPEC' then '*' else  fi
(v910/)
(|U=|v675/)
ADD
910

(v1001/)

DEL
1001
*


END
DEL
910
*

Пример 4. Для каждой записи заданного фрагмента выполнить следующие действия: Во всех экземплярах (метка поля 910) заменить значение места хранения (подполе ^D) "XP" на значение "ОФ" и значение "ФМЗ" на значение "БИНТ". Это можно выполнить с помощью задания, в котором жестко указываются эти значения, а именно

0
CHA
910^D
*
‘ХР’
‘ОФ’
CHA
910^D
*
‘ФМЗ’
‘БИНТ’

Можно составить задание для общего случая замены старых значений мест хранения на новые, используя возможность работы с параметрами. Например, для замены значений двух разных мест хранения на новые значения нужно определить 4 параметра, причем вводить их можно, используя справочник с именем mhr.mnu.

Задание на пакетную обработку:

4
mhr.mnu
Старое значение (1)
mhr.mnu
Новое значение (1)
mhr.mnu
Старое значение (2)
mhr.mnu
Новое значение (2)
REP
910^d
F
(if p(v910) then if v910^d='%1' then '%2'else if v910^d='%3' then '%4' else v910^d fi fi fi/)

Пример 5. Для каждой записи заданного фрагмента выполнить следующие действия:

Создать в БД CMPL новую запись, которая является копией исходной, изменив в ней:

  • Код рабочего листа (метка поля 920) заменить на "ZK".
  • Год издания (метка поля 210, подполе ^D) заменить на 2002.
  • Объем (метка поля 215, подполе ^A) заменить на 500.
  • Удалить все повторения поля "Каталогизатор, дата" (метка поля 907) и добавить новое значение, задав этап работы, дату и ФИО.

Исходную запись при этом удалить.

Задание на пакетную обработку:

0
NEWMFN
'CMPL'
ALL
REP
920
*
'ZK'

REP
210^D
*
'2002'

REP
215^A
*
'500'

DEL
907
*


ADD
907

'^CПК^A20020524^BДСМ'

END

DELR

Ссылки

См. также:

Источники информации: