Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Администратор :  ИРБИС Irbis
 
Переместить одно слово из Заглавия
Пользователь: Talgat (IP-адрес скрыт)
Дата: 31, March, 2015 13:28

Здравствуйте. Нужно написать код на глобальную корректировку. Задача такая: Необходимо из подполя 200^A(Заглавие) переместить только одно слово "Текст" в подполе 200^B(Общее обозн. мат.).
Вот посмотрите мой код:

0
CHA
200
F
if(p(v200) then if(v200^A='Текст') then '1' else '0' fi fi/)

Но он почему то не работает.

Re: Переместить одно слово из Заглавия
Пользователь: ochagova (IP-адрес скрыт)
Дата: 31, March, 2015 16:03

Вы неверно используете оператор CHA. Лучше прочитать его описание в инструкции. Где пятая строка? Что значит '1' или '0'?
Я бы написала так:
REP
200
1
v200,if a(v200^B) and v200^A: 'Текст' then '^BТекст' fi

CHA
200^A
1
'Текст'
if v200^B: 'Текст' then '' else 'Текст' fi

Re: Переместить одно слово из Заглавия
Пользователь: Talgat (IP-адрес скрыт)
Дата: 01, April, 2015 06:55

Насколько я знаю из инструкции оператор REP заменяет поле целиком. А мне надо переместить или удалить всего одно слово из заглавия при этом не затронув остальной текст. Например, есть такое заглавие(200^A): "Революционер-народник Порфирий Иванович Войноральский[Текст]". Так вот мне из этого заглавия нужно удалить только слово "[Текст]" не тронув остальной текст. Чтобы в результате получилось: "Революционер-народник Порфирий Иванович Войноральский"

Re: Переместить одно слово из Заглавия
Пользователь: ochagova (IP-адрес скрыт)
Дата: 01, April, 2015 09:30

Удаляет слово второй оператор - CHA. Только надо точно формулировать - вам надо было удалить [Текст], а не Текст
Первый оператор - да, заменяет поле целиком на само себя, а также добавляет подполе ^B с "Текст" по условию. Тем самым переносит.

Re: Переместить одно слово из Заглавия
Пользователь: Talgat (IP-адрес скрыт)
Дата: 01, April, 2015 13:31

Да, извините нужно удалить [Текст]. Просто из этой инструкции ничего непонятно и там все как-то сухо написано об этом языке пакетной корректировки. Давайте так, я прокомментирую каждую строчку кода, как я понял:
REP - оператор, заменить поле целиком
200 - выбираем поле 200
1   - число повторения
v200,if a(v200^B) and v200^A: 'Текст' then '^BТекст' fi - Выбираем поле 200, если в поле a(v200^B) и поле v200^A есть слово 'Текст' тогда вносим слово 'Текст'в подполе ^B.
Кстати, за что отвечает буква "а" в "a(v200^B)"?

Идем дальше...

CHA - оператор, заменить данные
200^A - выбираем поле 200^A
1 - число повторения
'Текст' - то что будем искать в записях
if v200^B: 'Текст' then '' else 'Текст' fi - Если поле v200^B содержит слово 'Текст' тогда удалить иначе оставить как есть.

Я все правильно понял?

Кстати, я скопировал Ваш код и сохранил в файл с расширением .gbl
Через АРМ Администратор открыл инструмент "Глобальная корректировка" и загрузил файл-задание туда. Но там вышло диалоговое окно "Неправильная структура файла". Я поставил перед REP цифру 0 и файл после этого загрузился, но там не было оператора CHA.

Re: Переместить одно слово из Заглавия
Пользователь: ochagova (IP-адрес скрыт)
Дата: 01, April, 2015 13:46

Уточняю:

REP - оператор, заменить поле целиком
200 - выбираем поле 200
1 - номер повторения
v200,if a(v200^B) and v200^A: 'Текст' then '^BТекст' fi - оставляем поле как есть. Возможно добавление: если отсутствует подполе ^B a(v200^B) и в поле v200^A есть слово 'Текст' тогда добавляем подполе ^B и слово 'Текст'в подполе ^B.

буква "а" в "a(v200^B) - проверка отсутствия поля

Идем дальше...

CHA - оператор, заменить данные
200^A - выбираем поле 200^A
1 - номер повторения
'Текст' - то что будем искать в данном повторении
if v200^B: 'Текст' then '' else 'Текст' fi - Если поле v200^B содержит слово 'Текст' тогда удалить иначе оставить как есть

Первая строка д.б. :
0
Это означает отсутствие параметров
Каждая команда = 5 строк. У вас, видимо выпала пустая строка

Вообще новичку надо строить задание в интерфейсе. Хотя бы проверять в интерфейсе.

Re: Переместить одно слово из Заглавия
Пользователь: Talgat (IP-адрес скрыт)
Дата: 03, April, 2015 05:46

Спасибо, что разъяснили. Сделал Глоб.Корр в интерфейсе с оператором REP и все прекрасно получилось. в подполе 200^B появилось слово 'Текст'. Но CHA не заработал. В подполе 200^A по прежнему стоит слово '[Текст]'. Пробовал и без квадратных скобок удалить просто слово 'Текст', но также фиаско.
Версия ИРБИС64 2014.1

Re: Переместить одно слово из Заглавия
Пользователь: ochagova (IP-адрес скрыт)
Дата: 03, April, 2015 10:18

Проверила - у меня получилось. Прикладывайте запись (состояние до корректировки) и задание.

Re: Переместить одно слово из Заглавия
Пользователь: Talgat (IP-адрес скрыт)
Дата: 06, April, 2015 07:59

Прикрепил записи и файл-задания. Посмотрите.

Вложения: text.TXT (2.1KB)   zadanie.gbl (153 bytes)  
Re: Переместить одно слово из Заглавия
Пользователь: ochagova (IP-адрес скрыт)
Дата: 06, April, 2015 11:53

Вы в задании пробелов понаставили, оно вообще не должно было работать.

Вложения: zadanie.rar (207 bytes)  
Re: Переместить одно слово из Заглавия
Пользователь: Talgat (IP-адрес скрыт)
Дата: 07, April, 2015 14:53

Спасибо Людмила Николаевна. На русском языке прекрасно исправляет. Но в базе есть еще записи на казахском и др.языках. Так на этих записях ничего не исправляется. Я прикрепил записи на казахском для примера. Там только вместо слова "[Текст]" стоит слово "[Мәтін]". Остальное все тоже самое. В Вашем файле-задании тоже поменял слово "[Текст]" на "[Мәтін]".



Редактировано 3 раз. Последний раз 08.04.2015 10:37 пользователем Talgat.

Вложения: textkaz.TXT (7.9KB)  


Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.