Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Web;
- using System.Collections.Specialized;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Data.Sql;
- using System.Data.SqlClient;
- using System.Data.SqlTypes;
- using System.Windows.Forms;
- using Microsoft.Win32;
- namespace OPAC2Rusm
- {
- public class BJ2RUSMarc
- {
- String BAZA, rs, tr, str, R, Inst, P001;
- SqlConnection con;
- DataSet ds, ds2, ds3, dsS;
- SqlDataAdapter da;
- Int32 l;
- Byte[] mrc;
- int posbrr;
- Int32 DIDDATA;
- SqlCommand command;
- Int32 L, cnt, KMAIN;
- String P102, blok80, S675;
- String PREFIX001 = "OPAC_VGBIL";
- public Byte[] start_convert(String IDSession, String FN)
- {
- try
- {
- //str = XmlConnections.GetConnection(@"/Connections/t");//t-VVV,t3-YAA
- }
- catch (Exception ex)
- {
- Console.Write(ex.Message + "исключение возникло при попытке прочитать строку подключения");
- //MessageBox.Show(ex.Message + "Программа аварийно завершает работу.");
- throw;
- }
- try
- {
- SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
- builder.DataSource = @"xxx.xxx.x.xx,xxxx";
- builder.UserID = @"xxxxxx";
- builder.Password = @"xxxxxxx";
- builder.PersistSecurityInfo = true;
- builder.InitialCatalog = @"xxxxxxxxxxx";
- Console.Write(builder.ConnectionString);
- //con = new SqlConnection(@builder.ConnectionString);
- con = new SqlConnection();
- con.ConnectionString = "Data Source=xxx.xxx.x.xx,xxxx;Initial Catalog=xxxxx;Persist Security Info=True;User ID=xxxxx;Password=xxxxx;";
- str = con.ConnectionString;
- //builder.ConnectionString;
- //Console.Read();
- }
- catch (System.ArgumentException ex)
- {
- Console.WriteLine(ex.Message + "исключение возникло при попытке создать подключение. ");
- //Console.WriteLine(ex.InnerException.Message);
- //Console.WriteLine(ex.StackTrace);
- //Console.WriteLine(ex.TargetSite);
- //Console.WriteLine(ex.TypeName);
- //Console.WriteLine(ex.Message);
- ;
- throw;
- }
- Int32 K = str.IndexOf(" Catalog=");
- String rs = str.Substring(K + 9);
- K = rs.IndexOf(";");
- BAZA = rs.Remove(K);
- da = new SqlDataAdapter();
- R = "USE BJRUSMARC; "
- + " DELETE BJRUSMARC..RUSM; DELETE BJRUSMARC..REZULT";
- // + " IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[RUSM]') AND type in (N'U')) "
- // + " DROP TABLE [dbo].[RUSM] ;"
- // + " SET ANSI_PADDING ON; "
- // + " CREATE TABLE [RUSM2]([ID] [int] IDENTITY(1,1) NOT NULL, "
- // + " [IDMAIN] [int] NULL, "
- // + " [IDBLOCK] [int] NULL, "
- // + " [MET] [smallint] NULL, "
- // + " [IND1] [char](1) NULL, "
- // + " [IND2] [char](1) NULL, "
- // + " [IDENT] [char](1) NULL, "
- // + " [POL] [nvarchar](3500) NULL "
- // + " ) ON [PRIMARY];"
- // + " SET ANSI_PADDING OFF"
- // + " CREATE NONCLUSTERED INDEX [IX_RUSM2_ALL] ON [dbo].[RUSM2] "
- // + " ( [IDMAIN] ASC, [IDBLOCK] ASC ,[MET] ASC ,[IND1] ASC ,[IND2] ASC"
- // + " )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,"
- // + " SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,"
- // + " ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON"
- // + " ) ON [PRIMARY] ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- cnt = command.ExecuteNonQuery();
- con.Close();
- // 581972+
- //Cedillo Vázquez,Luciano
- // ¡Vaaamonos! : Luchas, anécdotas y problemas de los ferrocarrileros / Luciano Cedillo. - Mexico : Ediciones de Cultura Popular, 1979. - 146 p. : 4 f. il., portr.
- //1. История Мексики • 1911-2006 гг. • Государство 2. История Мексики • Политические партии и движения
- // 1063094+
- //Антоний (Блум, А.Б.; 1914-2003)
- // Проповеди и беседы. - Париж, 1976. - 120 с. - Экз. инв. N 2328741 с экслибрисом.
- //1. Православие • Россия
- // 1218017+
- // RASC supplement/University of Southern Denmark
- // Odense: Syddansk universitetsforlag, - ISSN 1395-7236
- // (University of Southern Denmark Studies in Linguistics)
- //1. Сторм,Йохан Фредрик Бреда (1836-1920) 2. Языкознание • Биографии языковедов • Дания
- // 178252+
- //Anthony (Bloom, A.B.; 1914-2003)
- // "Death and bereavement": Four Parish talks delivered at the Cathedral on 12 Apr., 3, 17 and 31 May 1984 / Ed. transcript Metropolitan Anthony. - London : The Russ.orthodox Cathedral, 1986. - 40 p. - Экз. инв. N 2328736 с экслибрисом.
- //1. Православие • Россия
- // 581942+
- //Canela Garayoa,Mercé
- // Utinghami, el rey de la niebla / Trad. del orig. catalán por Joles Sennell; Il.: Montserrat Brucart. - 2.ed. - Barcelona : La Galera, 1984. - 115 p. : il. - ISBN 84-246-7713-7.
- //1. Каталанская детская литература
- //127230+
- //Nemoshkalenko,V.V.
- // Academy of Sciences of the Ukrainian SSR / Ed. by M. P. Semenenko. - Kiev : Naukova dumka, 1970. - 167 p., [1] l.diagr. : ill., portr. - Перед загл. авт.: V. V. Nemoshkalenko, M. V. Novikov and V. M. Pelykh.
- //1. Научные учреждения • Россия • История
- //1251000+ Том многотомника
- //Chukovskaya, L.K.
- // The Akhmatova journals
- // Vol. 1: The Akhmatova journals. Vol. 1: 1938-41 / Lydia Chukovskaya; Transl. from the author's revised text by Milena Michalski and Sylva Rubashova; Poetry transl. by Peter Norman. - London : Harvill, 1994. - 310 p., [4] l. ill., portr. - (The Akhmatova journals; Vol. 1).
- //- Экз. инв. № 2516144 с автограф. - Указ. с.297-310. - ISBN 0-00-216391-8.
- //1. Ахматова, А.А. (1889-1966) 2. Русское литературоведение • История литературы • 20 в. • Персоналии писателей 3.
- Int32[] Iidm = new Int32[] { 1251000, 127230, 581942 };
- //da.SelectCommand = new SqlCommand();
- //da.SelectCommand.CommandText = " SELECT idbook FROM TECHNOLOG_VVV..USERLIST "
- //+ " WHERE session='" + IDSession + "'"; // параметр start_convert
- //da.SelectCommand.Connection = con;
- //da.SelectCommand.CommandTimeout = 1200;
- //ds0 = new DataSet();
- //KMAIN = da.Fill(ds0, "listM0");
- KMAIN = Iidm.Count();
- Byte[] str_out = new Byte[0];
- if (KMAIN > 0) // есть IDN для конвертирования и вывода
- {
- foreach (Int32 IDM in Iidm)
- {
- //IDM = Int32.Parse(ds0.Tables["listM0"].Rows[countM][0].ToString());
- PBJ2RUSM(IDM); // Создание таблицы RUSM
- if (P102.Length > 0)
- {
- P102 += (char)31 + "2VGBILGEO";
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",1,"
- + "102,' ',' ','a','" + P102 + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- MERGERUSM(); // Создание таблицы RUSM2
- Byte[] b_rez = SaveZap(IDM, FN); // Формирование РУСМАРК-записи в виде массива байтов (UTF-8)
- Int32 lrez = b_rez.Count();
- Int32 lstr = str_out.Count();
- Byte[] b_tmp = new Byte[lstr];
- if (lstr > 1)
- {
- for (int i = 0; i < lstr; i++)
- {
- b_tmp[i] = str_out[i];
- }
- }
- str_out = new Byte[lstr + lrez];
- // Формирование строки РУСМАРК и сохранение в таблице REZULT
- if (lstr > 1)
- {
- for (int i = 0; i < lstr; i++)
- {
- str_out[i] = b_tmp[i]; // Копирование
- }
- }
- for (int i = 0; i < lrez; i++)
- {
- str_out[i+lstr] = b_rez[i]; // Добавление полей
- }
- } // цикл по IDM
- } // KMAIN > 0
- //foreach (Byte b in str_out)
- //{
- // MessageBox.Show(b.ToString());
- //}
- return str_out;
- } // start_convert
- //-- Description: Конвертирование BJVVV в RUSMARC
- //-- =============================================
- public void PBJ2RUSM(Int32 IDM)
- {
- Int32 DMNF, KK, KK2;
- String DMSF, DPPLAIN, IND1, IND2, IDENT;
- Int16 VID_OBR, MET;
- P102 = "";
- //-- Формирование обязательных полей
- INITRUSM(IDM);
- R = " SELECT P.IDDATA,MNFIELD,MSFIELD,PLAIN "
- + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
- + " WHERE P.IDMAIN=" + IDM.ToString() + " ORDER BY IDDATA,MNFIELD,MSFIELD ";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- dsS = new DataSet();
- KK = da.Fill(dsS, "listS");
- if (KK > 0)
- {
- for (int countS = 0; countS < KK; countS++)
- {
- DIDDATA = Int32.Parse(dsS.Tables["listS"].Rows[countS][0].ToString());
- DMNF = Int32.Parse(dsS.Tables["listS"].Rows[countS][1].ToString());
- DMSF = dsS.Tables["listS"].Rows[countS][2].ToString();
- DPPLAIN = dsS.Tables["listS"].Rows[countS][3].ToString();
- DPPLAIN = DPPLAIN.Replace("'","~");
- VID_OBR = -1;
- R = " SELECT VID_OBR, MET1, IND1, IND2, IDEN1 "
- + " FROM [BJRUSMARC]..BJ2RUSMVVV "
- + " WHERE MNF= " + DMNF + " AND MSF= '" + DMSF + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK2 = da.Fill(ds, "list0");
- if (KK2 == 0) // Неопознанное поле
- {
- MessageBox.Show("!! " + IDM.ToString() + " Неопознанное поле " + DMNF.ToString() + " " + DMSF);
- R = " SELECT [NAME] FROM " + BAZA + "..FIELDS "
- + " WHERE MNFIELD= " + DMNF.ToString() + " AND MSFIELD= '" + DMSF + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- da.SelectCommand.Connection.Open();
- ds = new DataSet();
- KK2 = da.Fill(ds, "list1");
- Inst = ds.Tables["list1"].Rows[0][0].ToString();
- // 830a -- Общее примечание, составленное каталогизатором
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",830,' ',' ','a','"
- + Inst + "'+': '+ '" + DPPLAIN + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- goto M5;
- } // Неопознанное поле
- VID_OBR = Int16.Parse(ds.Tables["list0"].Rows[0][0].ToString());
- MET = Int16.Parse(ds.Tables["list0"].Rows[0][1].ToString());
- IND1 = ds.Tables["list0"].Rows[0][2].ToString();
- IND2 = ds.Tables["list0"].Rows[0][3].ToString();
- IDENT = ds.Tables["list0"].Rows[0][4].ToString();
- if (VID_OBR == 0) // Копирование в выходную запись
- {
- //10 $a Номер ISBN 0 010 a
- //10 $b Уточнения 0 010 b
- //10 $z Ошибочный 0 010 z
- //11 $9 Тираж 0 010 9
- //11 $a Номер ISSN 0 011 a
- //11 $y Отмененный 1 011 y
- //11 $z Ошибочный 0 011 z
- //200 $a Основное заглавие документа 0 200 a
- //200 $b Основное заглавие произведения того же автора 1 200 a
- //200 $d Параллельное основное заглавие 1 200 d
- //200 $e Сведения, относящиеся к заглавию 1 200 e
- //200 $f Сведения об ответственности 0 200 f
- //200 $h Номер части 1 200 h
- //200 $i Наименование части 1 200 i
- //200 $z Язык параллельного заглавия 1 200 z
- //205 $a Сведения об издании 0 205 a
- //205 $b Дополнительные сведения об издании 1 205 b
- //205 $f Первые сведения об ответственности, относящиеся к изданию 1 205 f
- //205 $g Последующие сведения об ответственности, относящиеся к изданию 1 205 g
- //215 $a Объём 1 215 a
- //215 $c Размер 1 215 d
- //215 $d Сопроводительный материал 1 215 e
- //300 $a Общие примечания 0 300 a
- //320 $a Примечание о библиографии и указателе 0 320 a
- //326 $a Примечание о периодичности 0 326 a
- //327 $a Примечание о содержании 1 327 a
- //330 $a Текст аннотации 0 330 a
- //500 $3 АФ 0 0 NULL
- //500 $a Унифицированное заглавие 0 500 a
- //501 $3 АФ 0 0 NULL
- //501 $a Унифицированное общее заглавие 0 501 a
- //503 $3 АФ 0 0 NULL
- //503 $a Унифицированный заголовок 0 503 a
- //830 $a Примечание каталогизатора 0 830 a
- //921 $a Носитель 1 200 b
- //922 $b Трофей 0 300 a
- //1000 $a Оригинал 1 454 1
- //1000 $b Перевод 1 453 1
- //1000 $c Последующее заглавие произведения 1 442 1
- //1000 $e Приложение 1 421 1
- //2100 $d Дата издания 0 210 d
- //2111 $e Географическое название 1 620 d
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + DPPLAIN + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- goto M5;
- } // VID_OBR = 0 Копирование в выходную запись
- if (VID_OBR == 1) // Вид издания
- {
- OBR1(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
- goto M5;
- } // VID_OBR == 1) // Вид издания
- if (VID_OBR == 3) // Иллюстрации
- {
- OBR3(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
- goto M5;
- } // Иллюстрации
- if (VID_OBR == 6) // 700,701,702
- {
- OBR6(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
- goto M5;
- } // VID_OBR == 6 -- 700,701,702
- if (VID_OBR == 9) // Сводный уровень - Заглавие, номер в серии
- {
- OBR9(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
- goto M5;
- } // Сводный уровень - Заглавие, номер в серии
- if (VID_OBR == 101) // Язык публикации
- {
- OBR101(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
- goto M5;
- } // VID_OBR == 101 --- Язык публикации
- if (VID_OBR == 102) // Место издания
- {
- OBR102(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
- goto M5;
- } // VID_OBR == 102 ----- Место издания
- if (VID_OBR == 200) // Сведения об ответственности
- {
- OBR200(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
- goto M5;
- } // VID_OBR == 200 ----- Сведения об ответственности
- if (VID_OBR == 606) // ПР
- {
- OBR606(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
- goto M5;
- } // VID_OBR == 606 ----- ПР
- if (VID_OBR == 517) // Другое заглавие
- {
- OBR517(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
- goto M5;
- } // VID_OBR == 517 --- Другое заглавие
- if (VID_OBR == 710) // Наименование организации - 710,711,712
- {
- OBR710(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
- goto M5;
- } // VID_OBR == 710 --- Наименование организации - 710,711,712
- //if (VID_OBR == 852) // Наименование фонда
- //{
- // OBR852(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
- // goto M5;
- //} // VID_OBR == 852 --- Наименование фонда
- M5: ;
- } // FOR
- } // KK>0 - Есть поля
- }
- //
- //-- =============================================
- //-- Description: Инициализация РУСМАРК - записи
- //-- =============================================
- private void INITRUSM(Int32 IDM2)
- // 2011.04.11
- {
- Int32 IDM;
- String P005;
- Int16 IDLEVEL;
- IDM = IDM2;
- INITMARKER(IDM, out IDLEVEL);
- //-- Идентификатор записи
- P001 = PREFIX001 + IDM.ToString().PadLeft(8, '0');
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",0,001,0,0,0,'" + P001 + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- //-- Идентификатор версии/
- // Console.WriteLine(date1.ToString("s"));
- // Displays 2008-04-10T06:30:00
- P005 = DateTime.Now.ToString("s");
- P005 = P005.Replace("-", "");
- P005 = P005.Replace("T", "");
- P005 = P005.Replace(":", "");
- P005 = P005 += ".0";
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",0,005,0,0,0,'" + P005 + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- //-- Инициализация поля 100
- //-- 100 ДАННЫЕ ОБЩЕЙ ОБРАБОТКИ
- //-- Поле содержит кодированные данные фиксированной длины, применимые к записям о документах, представленных на любых носителях.
- //-- Обязательное. Не повторяется.
- //-- Индикатор 1: # (не определен)
- //-- Индикатор 2: # (не определен)
- INITP100(IDM, IDLEVEL);
- //-- IF @IDLEVEL = 1 OR @IDLEVEL = -100 OR @IDLEVEL = -2 OR @IDLEVEL = 2
- //-- OR @IDLEVEL = 3 OR @IDLEVEL = -4 OR @IDLEVEL = 4
- //-- OR @IDLEVEL = 5 begin
- if (IDLEVEL == 1 || IDLEVEL == -100 || IDLEVEL == 1 || IDLEVEL == 1 || IDLEVEL == 1 || IDLEVEL == 1)
- {
- //---- Инициализация поля 105
- //---- 105 ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ТЕКСТОВЫЕ МАТЕРИАЛЫ, МОНОГРАФИЧЕСКИЕ
- //---- Поле содержит кодированные данные, относящиеся к монографическим текстовым изданиям.
- //---- Примечание: для описания монографических серий используется поле 110.
- //---- Обязательное для печатных монографических текстовых документов (например, для книг).
- //---- Не повторяется.
- //---- Индикатор 1: # (не определен)
- //---- Индикатор 2: # (не определен)
- INITP105(IDM);
- //-- end -- IDLEVEL - Монография
- }
- else //-- Сводный уровень Серия, Подсерия,Продолжающиеся издания
- {
- //---- Инициализация поля 110
- //-- --EXECUTE INITP110 @IDM, @IDLEVEL - Удалено по требованию Селицкой 20091030
- INITP110(IDM, IDLEVEL);
- //---- 110 ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ПРОДОЛЖАЮЩИЕСЯ РЕСУРСЫ
- //---- Поле содержит кодированные данные, относящиеся к продолжающимся ресурсам, включая монографические серии, каталогизируемые как сериальные документы, а не как самостоятельные монографии.
- //---- Обязательное в записи высшего уровня, составляемой для описания продолжающегося ресурса в целом.
- //---- Не повторяется.
- //---- Примечание: Указание на содержание отдельных выпусков продолжающегося ресурса может (но не является обязательным) размещаться в позициях 110$a/4-6 записи уровня физической единицы, описывающей отдельный выпуск. Допускается также использование в записи уровня физической единицы позиции 110$a/7, если отдельный/отдельные выпуски содержат материалы конференции, однако, отражение этих материалов - не главная функция продолжающегося ресурса в целом (позиция $a/7 записи высшего уровня содержит 0).
- //---- Индикатор 1: # (не определен)
- //---- Индикатор 2: # (не определен)
- //-- END -- IDLEVEL <0 -Сериальное издание или сериальное издание
- }
- //-- Формирование обязательных 801-ых полей
- //-- 801 ИСТОЧНИК ЗАПИСИ
- //-- Поле содержит указание на источники записи, к котор ым от носятся:
- //-- организация, создающая данные; организация, преобразующая данные в
- //-- машиночитаемую форму; организация, модифицирующая первоначальные записи /
- //-- данные; организация, распространяющая записи.
- //-- Обязательное.
- //-- Повторяется для каждой из перечисленных функций, вы полня емых той или иной
- //-- организацией.
- //-- Индикатор 1: # (не определен)
- //-- Индикатор 2: Индикатор функции
- //-- Этот индикатор определяет функцию, выполняемую ор ганиз ацией, название
- //-- которой помещено в подполе $b.
- //-- 0 - Агентство, производящее первоначальную катало гизац ию
- //-- Организация, подготовившая данные для записи.
- //-- 1 - Агентство, преобразующее данные
- //-- Организация, конвертировавшая данные в машиночита емую форму
- //-- 2 - Агентство, вносящее изменения в запись
- //-- Организация, модифицировавшая содержание записи, либо ее структуру.
- //-- 3 - Агентство, распространяющее запись
- //-- Организация, распространявшая запись
- //--
- //-- В машиночитаемой записи должно быть не менее двух вхождений поля 801, т.к.
- //-- для того чтобы данные привести в машиночитаемую форму, их надо
- //-- подготовить. Т.о. у первого вхождения поля 801 индикатор = 0, а у второго = 1.
- OBR98(IDM); // ФОРМИРОВАНИЕ ПОЛЯ 801 - Источник записи
- P102 = ""; // Коды страны и места издания
- blok80 = "";
- return;
- }
- //
- //-- =============================================
- //-- Description: Инициализвция МАРКЕРа
- //-- =============================================
- public void INITMARKER(Int32 IDM, out Int16 IDLEVEL)
- {
- Int32 KK, KK2;
- String C, MARKER;
- //-- МАРКЕР записи
- //--0-4 Длина записи
- //-- Пять десятичных цифр, при необходимости выравниваемых вправо начальными
- //-- нулями, указывают количество символов в записи, включая маркер записи,
- //-- справочник и переменные поля. Вычисляется автоматически, когда запись
- //-- окончательно сформирована для обмена.
- //--5 Статус записи
- //-- n = новая запись
- //--6 Тип записи
- //-- а = текстовые материалы, кроме рукописных. В том числе печатные
- //-- текстовые материалы, микроформы печатных текстовых материалов, а
- //-- также электронные текстовые материалы.
- //-- b = текстовые материалы, рукописные. В том числе микроформы рукописных
- //-- текстовых материалов и электронные рукописные текстовые материалы.
- //-- с = музыкальные партитуры, кроме рукописных
- //-- d = музыкальные партитуры, рукописные
- //-- е = картографические материалы, кроме рукописных
- //-- f = картографические материалы, рукописные
- //-- g = проекционные и видеоматериалы (кинофильмы, диафильмы, слайды,
- //-- пленочные материалы, видеозаписи). Включает цифровые видеоматериалы
- //-- (не используется для не-проекционной двухмерной графики: см. ниже
- //-- код "k").
- //-- i = звукозаписи, немузыкальные
- //-- j = звукозаписи, музыкальные
- //-- k = двухмерная графика (иллюстрации, чертежи и т. п.)
- //-- l = электронный ресурс
- //-- m = информация на нескольких носителях (например, книга с приложением
- //-- программ на дискете, CD и т. п.)
- //-- r = трехмерные искусственные и естественные объекты
- //--7 Библиографический уровень (позиция символа 7)
- //-- а = аналитический - документ, является частью физической единицы
- //-- (составная часть)
- //-- i = интегрируемый ресурс – ресурс, изменяющийся посредством обновлений (изъятия, вставки или замещения отдельных его частей), которые не публикуются отдельно, а интегрируются в новое единое целое
- //-- m = монографический - документ, представляет собой физически единое
- //-- целое или издается в заранее определенном количестве частей
- //-- Например: отдельная книга, многотомное издание в целом, том
- //-- многотомного издания, выпуск сериального издания.
- //-- s = сериальный - продолжающийся ресурс, выпускаемый последовательными
- //-- частями (как правило, нумерованными и (или) датированными выпусками)
- //-- и рассчитанный на издание в течение времени, продолжительность
- //-- которого заранее не установлена
- //-- с = подборка - библиографическая единица, скомплектованная из отдельных
- //-- физических единиц
- //--8 Код иерархического уровня (позиция символа 8)
- //-- Код определяет иерархическую связь записи с другими записями в том же
- //-- файле и показывает ее относительное положение в иерархии.
- //-- # = иерархическая связь не определена
- //-- 0 = иерархическая связь отсутствует
- //-- 1 = запись высшего уровня
- //-- 2 = запись ниже высшего уровня (любая запись ниже высшего уровня)
- //--9 Не определено. Содержит символ пробела: #.
- //--10 Длина индикатора. Содержит цифру "2".
- //--11 Длина идентификатора подполя. Содержит цифру "2".
- //--12-16 Базовый адрес данных (позиции символов 12-16)
- //-- Пять десятичных цифр, выровненных вправо начальными нулями, указывающие
- //-- на начальную символьную позицию первого поля данных относительно
- //-- начала записи. Это число будет равно общему количеству символов в
- //-- маркере и справочнике, включая разделитель подполя в конце справочника.
- //-- В справочнике начальная позиция символов для каждого поля задается
- //-- относительно первого символа первого поля данных, которое является
- //-- полем 001, а не от начала записи. Базовый адрес, таким образом,
- //-- является основой, с помощью которой рассчитывается позиция каждого поля.
- //--17 Уровень кодирования
- //-- # = полный уровень. Корректно составленная запись о полностью
- //-- каталогизированном документе, подготовленная для использования в
- //-- Электронном каталоге или для обмена.
- //-- 1 = подуровень 1. Запись, составленная на основе каталожной карточки
- //-- (ретроконверсия) или импортированная из другого формата, не
- //-- предоставляющего достаточно данных для корректного заполнения всех
- //-- обязательных (в т. ч. условно обязательных) элементов формата, и
- //-- неоткорректированная по документу.
- //--18 Форма каталогизационного описания
- //-- # = запись составлена по правилам ISBD.
- //-- i = запись составлена не полностью по правилам ISBD (отдельные поля
- //-- соответствуют положениям ISBD).
- //--19 Не определено. Содержит символ пробела: #.
- //--20 Длина элемента "длина поля данных". Содержит символ: 4
- //--21 Длина элемента "позиция начального символа". Содержит символ: 5
- //--22 Длина элемента "часть, определяемая при применении". Содержит символ: 0
- //--23 Не определено. Содержит символ пробела: #.
- //-- Элементы данных, входящие в МАРКЕР ЗАПИСИ, больше нигде в формате не
- //-- используются. Хотя некоторые из значений кодов применения (например,
- //-- "тип записи" и "библиографический уровень") могут частично совпадать
- //-- с другими кодированными данными, в действительности, коды в МАРКЕРЕ
- //-- ЗАПИСИ относятся к характеристикам записей, а не к характеристикам
- //-- самой библиографической единицы.
- R = " SELECT IDLEVEL FROM " + BAZA + "..MAIN WHERE ID= " + IDM.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK = da.Fill(ds, "list0");
- IDLEVEL = Int16.Parse(ds.Tables["list0"].Rows[0][0].ToString());
- switch (IDLEVEL)
- {
- case -3: // Серия. Сводный уровень
- C = "s";
- break;
- case -33: // Подсерия. Сводный уровень
- C = "s";
- break;
- case -5: // Продолжающееся издание. Сводный уровень
- C = "s";
- break;
- case -100: // Подборка. Сводный уровень
- C = "c";
- break;
- case -4: // Сборник. Часть - аналитика
- C = "a";
- break;
- default:
- C = "m";
- break;
- }
- MARKER = " na" + C + " 2200000 i 450 ";
- R = " SELECT P.ID "
- + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
- + " WHERE MNFIELD=899 AND MSFIELD='$b' AND P.IDMAIN=" + IDM.ToString()
- + " AND CHARINDEX('ретро-конверсии карт',PLAIN)>0 ";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK2 = da.Fill(ds, "list0");
- if (KK2 > 0)
- {
- MARKER = MARKER.ToString().PadLeft(17) + '1' + MARKER.Substring(19, 30);
- //-- Запись МАРКЕРА
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",0,0,0,0,0,'" + MARKER + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- //
- //-- =============================================
- //-- Description: Инициализвция Поля 100
- //-- =============================================
- private void INITP100(Int32 IDM, Int16 IDLEVEL)
- {
- Int32 KK;
- String P100, C1, T;
- //-- Поле 100
- //-- Данные общейй обработки
- //--Дата ввода записи в файл * 8 0-7
- //-- Восемь цифровых символов в стандартной форме по ISO 8601-2004 для даты:
- //-- ГГГГMMДД, где ГГГГ соответствует году, ММ - месяцу, при необходимости с
- //-- начальным нулем, ДД - дню месяца, также с начальным нулем, если необходимо.
- //--Тип даты публикации * 1 8
- //-- а = текущий продолжающийся ресурс
- //-- Дата публикации 1 содержит год начала публикации. Если дата начала
- //-- публикации точно не известна, вместо любой неизвестной цифры
- //-- проставляется символ пробела: '#'.
- //-- Дата публикации 2 всегда содержит 9999.
- //-- b = продолжающийся ресурс, публикация которого прекращена
- //-- Дата публикации 1 содержит год начала публикации продолжающегося
- //-- ресурса. Если дата начала публикации точно не известна, вместо
- //-- любой неизвестной цифры проставляется символ пробела: '#'.
- //-- Дата публикации 2 содержит год прекращения издания. Для ресурсов,
- //-- о которых известно, что они больше не издаются, но последняя дата не
- //-- определена, вместо любой неизвестной цифры проставляется символ пробела: '#'.
- //-- с = продолжающийся ресурс с неизвестным статусом
- //-- Продолжающийся ресурс, о котором точно не известно, издается ли он
- //-- сейчас, или его издание прекращено. Дата публикации 1 содержит год
- //-- начала публикации продолжающегося ресурса. Если дата начала публикации
- //-- точно не известна, вместо любой неизвестной цифры проставляется знак '#'.
- //-- Дата публикации 2 содержит четыре символа пробела: ####.
- //-- d = монография, изданная в одном томе или изданная в течение одного
- //-- календарного года
- //-- Монография, изданная в одном томе, либо в нескольких томах, изданных
- //-- в одно время или с одинаковой датой издания, т.е. изданная в течение
- //-- одного календарного года. Если дата точно не известна, используется
- //-- код 'f'. Однако, если дата точно не известна, но указана в области
- //-- выходных данных как единичный год, например, [1769?], или [около 1769],
- //-- то используется код 'd'.
- //-- Описание выпуска продолжающегося ресурса или тома многотомника
- //-- содержит в позиции 100$a/8 код d.
- //-- Код 'd' используется также, если известна дата copyright'a, но
- //-- неизвестна дата издания, иначе говоря, в этом случае дата
- //-- copyright'a используется вместо даты издания.
- //-- Если монография издавалась с интервалом по времени, используется код 'g'.
- //-- Дата публикации 1 содержит год издания.
- //-- Дата публикации 2 содержит четыре символа пробела: ####.
- //-- e = репродуцированный документ
- //-- Каталогизируемый документ является репринтом, перепечаткой,
- //-- факсимильной копией, и т.д., но не новым изданием. Для новых
- //-- изданий используются коды: 'd', 'f', 'g', или 'h', в соответствии
- //-- с правилами их применения.
- //-- Если это продолжающийся ресурс, то указывается начальный год
- //-- переиздания и начальный год издания.
- //-- Дата публикации 1 содержит год издания репродукции.
- //-- Дата публикации 2 содержит год издания оригинала.
- //-- Если одна из дат точно не известна, вместо любой неизвестной цифры
- //-- указывается символ пробела: '#'.
- //-- f = монография, дата публикации которой точно не известна
- //-- Дата публикации 1 содержит наиболее раннюю из предполагаемых дат издания.
- //-- Дата публикации 2 содержит наиболее позднюю из возможных дат издания.
- //-- g = монография, публикация которой продолжается более года
- //-- Дата публикации 1 содержит год начала издания. Если начальная дата издания точно не известна, вместо любой неизвестной цифры проставляется пробел: '#'.
- //-- Дата публикации 2 содержит дату окончания издания или 9999, если издание все еще продолжается. Если дата окончания точно не известна, вместо любой неизвестной цифры проставляется пробел: '#'.
- //-- В редких случаях на однотомном документе (или выпуске сериального документа)
- //-- указаны два года издания. В этих случаях используется код 'g'
- //-- с соответствующими датами.
- //-- h = монография с фактической датой публикации и датой присвоения
- //-- авторского права / привилегии
- //-- Дата публикации отличается от даты присвоения авторского
- //-- права / привилегии, указанного в документе. Если дата публикации
- //-- неизвестна, используется код 'd'. Привилегия определяется как
- //-- монопольное право, предоставляемое государственным органом автору
- //-- или книготорговой организации на издание в течение установленного
- //-- периода времени.
- //-- Дата публикации 1 содержит дату публикации.
- //-- Дата публикации 2 содержит дату присвоения авторского права / привилегии.
- //-- i = монографии, имеющие как дату производства, так и дату реализации
- //-- Используется для фильмов, аудиовизуальных материалов и т.д., когда
- //-- есть различия между датой производства документа и датой его реализации.
- //-- Дата публикации 1 содержит дату реализации.
- //-- Дата публикации 2 содержит дату производства.
- //-- j = документ с точной датой публикации
- //-- используется в случае, когда важно записать месяц (и, возможно,
- //-- день) публикации.
- //-- Дата публикации 1 содержит год публикации.
- //-- Дата публикации 2 содержит дату (месяц и день) в формате ММДД,
- //-- где ММ - обозначение месяца, ДД - дня, при необходимости с
- //-- дополнительными нулями. Если день не известен, или не имеет
- //-- существенного значения, позиции 15 и 16 заполняются символами
- //-- пробела: '#'.
- //-- u = дата(ы) публикации неизвестна(ы)
- //-- Используется, если дату издания определить невозможно, и никакая
- //-- дата не может быть присвоена документу.
- //-- Дата публикации 1 содержит четыре символа пробела: ####.
- //-- Дата публикации 2 содержит четыре символа пробела: ####.
- //--
- //--Дата публикации 1 * 4 9-12
- //--Дата публикации 2 * 4 13-16
- //--
- //--Код целевого назначения *** 3 17-19
- //-- а = для юношества, общего характера (используется вместо кодов b, c, d или е, когда эти коды не используются или не могут быть использованы).
- //-- b = для детей дошкольного возраста, 0-5 лет
- //-- с = для детей младшего возраста, 5-10 лет
- //-- d = для детей среднего возраста, 9-14 лет
- //-- е = для юношества, возраст 14-20 лет
- //-- k = для взрослых, научная
- //-- m = для взрослых, общего характера
- //-- u = неизвестно
- //--Код правительственной публикации ** 1 20
- //-- а = федеральный/национальный
- //-- b = республика, штат/провинция
- //-- с = край, область, округ, графство/департамент
- //-- d = местный (муниципальный, городской и т.д.)
- //-- е = межтерриториальный (включающий разные департаменты и правительства ниже национального уровня)
- //-- f = межправительственный
- //-- g = нелегальное правительство или правительство в изгнании
- //-- h = уровень не определен
- //-- u = не известно
- //-- y = неправительственная публикация
- //-- z = другой административный уровень
- //--Код модифицированной записи ** 1 21
- //-- Заполнение обязательно, если производится модификация записи.
- //-- Этот односимвольный код показывает, достаточно ли оказалось имеющегося
- //-- набора символов для передачи данных в той форме, как они представлены в
- //-- документе. Если нет, а это может получиться, например, из-за
- //-- использования в документе специфических шрифтов или математических
- //-- формул, то для представления этих данных может использоваться
- //-- транслитерация, греческие буквы или какая-либо другая нотация.
- //-- Если при этом данных, введенных в запись, достаточно для воспроизведения
- //-- оригинального написания, то запись считается модифицированной,
- //-- и в позиции 100$a/21 проставляется 1. Если имеющихся наборов символов
- //-- оказывается достаточно для полноценного их представления в записи,
- //-- что как правило и происходит, или данные в записи не полностью отражают
- //-- исходные данные, - такая запись считается немодифицированной, и в
- //-- позиции 100$a/21 проставляется 0.
- //--
- //--Язык каталогизации * 3 22-24
- //-- Всегда RUS
- //--
- //--Код транслитерации ** 1 25
- //-- a = правила транслитерации ISO
- //-- b = другие правила
- //-- c = несколько схем транслитерации – ISO или другие правила
- //-- y = транслитерация не используется
- //--
- //--Наборы символов * 4 26-29
- //--Дополнительные наборы символов ** 4 30-33
- //--Два двухсимвольных кода, определяющие основные наборы графических символов, используемых при обмене записями. Позиции 26-27 определяют набор G0, позиции 28-29 - набор G1. Если набор G1 не нужен, позиции 28-29 содержат символы пробела: '##'.
- //--Используются следующие двухсимвольные коды (при необходимости перечень их может быть расширен):
- //--01 = ISO 646, версия IRV (основной латинский набор)
- //--02 = ISO регистрация #37 (основной кириллический набор)
- //--03 = ISO 5426 (расширенный латинский набор)
- //--04 = ISO DIS 5427 (расширенный кириллический набор)
- //--05 = ISO 5428 (греческий набор)
- //--06 = ISO 6438 (набор кодированных африканских символов)
- //--07 = ISO 10586 (набор символов грузинского алфавита)
- //--08 = ISO 8957 (набор символов иврита) таблица 1
- //--09 = ISO 8957 (набор символов иврита) таблица 2
- //--10 [Зарезервировано]
- //--11 = ISO 5426-2 (латинские символы, используемые в редких европейских языках и устаревших типографиях)
- //--50 = ISO 10646 (Unicode, UTF-8)
- //--79 = Code Page 866
- //--89 = WIN 1251
- //--99 = KOI-8
- //--Следует заметить, что ISO 10646, будучи 16-битным набором символов,
- //-- содержит все необходимые символы. Если позиции 26-27 содержат код "50",
- //-- то он используется для наборов C0, C1 и G0-G3. Позиции 28-33 содержат
- //-- символы пробелов.
- //--
- //--Графика заглавия ** 2 34-35
- //-- Заполнение обязательно, если графика заглавия отличается от обычной для
- //-- языка, указанного в подполе 101$g (или 101$a, если нет $g).
- //-- Двухсимвольный код, определяющий графику заглавия, используемого как
- //-- основное заглавие (в случае сериальных документов – ключевое заглавие).
- //---Относится к алфавиту, в котором заглавие приводится на источнике описания,
- //-- а не к набору символов записи (см. пример 28).
- //-- При отсутствии международных стандартов наборов кодов, рекомендуются
- //-- следующие коды:
- //--ba = латинская
- //--са = кириллическая
- //--da = японская - неопределенная графика
- //--db = японская - канджи
- //--dc = японская - кана
- //--еа = китайская
- //--fa = арабская
- //--ga = греческая
- //--ha = иврит
- //--ia = тайская
- //--ja = деванагари
- //--ка = корейская
- //--la = тамильская
- //--ma = грузинская
- //--mb = армянская
- //--zz = другая
- //--
- if (IDLEVEL > 0) C1 = "a ";
- else
- {
- if (IDLEVEL == -3 || IDLEVEL == -33 || IDLEVEL == -5) C1 = "a 9999";
- else C1 = "b ";
- }
- // ДАТА ИЗДАНИЯ
- R = " SELECT PLAIN "
- + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
- + " WHERE P.IDMAIN= " + IDM.ToString() + " AND MNFIELD=2100 ";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK = da.Fill(ds, "list0");
- if (KK > 0)
- {
- T = ds.Tables["list0"].Rows[0][0].ToString();
- T.Replace("(", "[").TrimStart();
- T.Replace(")", "]");
- if (T.Length > 3)
- {
- if ((T.Length == 8) && (Int32.TryParse(T, out L) == true)) //ISNUMERIC(T)
- {
- C1 = "b" + T;
- }
- else
- {
- if (T == "Б.г." || T == "б.г." || T == "Б. г." || T == "б. г.") goto M1;
- if (T == "S.a." || T == "s.a." || T == "S. a." || T == "s. a.") goto M1;
- if (T == "O.j." || T == "o.j." || T == "O. j." || T == "o. j.") goto M1;
- if (T.Substring(0, 4) == "S.a.") goto M1;
- if ((T.Substring(0, 1)) == "[" && (T.Substring(T.Length - 1, 1) == "]"))
- {
- T = T.Substring(1, T.Length - 2);
- }
- if (T.StartsWith("ca "))
- {
- T = T.Substring(3).TrimStart();
- }
- if (T.StartsWith("cop.") || T.StartsWith( "ante ") || T.StartsWith("post "))
- {
- T = T.Substring(4).TrimStart();
- }
- if (T.StartsWith("pref."))
- {
- T = T.Substring(5).TrimStart();
- }
- if (T.StartsWith("An "))
- {
- if (T.Substring(T.Length - 1, 1) != "]")
- {
- T.Substring(T.Length - 4, 4);
- }
- if (Int32.TryParse(T, out L) == true)
- {
- C1 = "d" + T + " ";
- goto M1;
- }
- }
- }
- } // Длина Т > 3
- else
- {
- KK = T.IndexOf('[');
- T = T.Substring(KK + 1, T.Length - KK);
- T = T.Remove(T.Length - 1); // Удаление]
- if (T.Length == 4)
- {
- C1 = 'd' + T + " ";
- }
- else
- {
- T = T.Replace("/", "");
- }
- if (Int32.TryParse(T, out L) == true)
- {
- C1 = 'f' + T;
- }
- goto M1;
- }
- if (T.IndexOf("Vor") != -1) //// ?????????????????? == "Vor"
- {
- T = T.Substring(T.Length - 4, 4); // Последние 4 цифры
- if (Int32.TryParse(T, out L) == true)
- {
- C1 = 'f' + T + " ";
- }
- goto M1;
- }
- T.Replace("XII", "12");
- T.Replace("XI", "11");
- T.Replace("IX", "09");
- T.Replace("X", "10");
- T.Replace("VIII", "08");
- T.Replace("VII", "07");
- T.Replace("VI", "06");
- T.Replace("IV", "04");
- T.Replace("V", "05");
- T.Replace("III", "03");
- T.Replace("II", "02");
- T.Replace("I", "01");
- T.Replace(".", "");
- if (T.IndexOf('=') != -1)
- {
- KK = T.IndexOf('=');
- T = T.Substring(KK + 1).TrimStart();
- }
- M2: ;
- if (T.Length == 4 && Int32.TryParse(T, out L) == true)
- {
- C1 = "d" + T + " ";
- goto M1;
- }
- if (T.Substring(0, 1) == "[")
- {
- T = T.Remove(0, 1);
- L = T.IndexOf(']');
- if (L != -1)
- {
- T = T.Remove(L);
- }
- goto M2;
- }
- if (T.Length == 9)
- {
- T = T.Replace("/", "");
- if (Int32.TryParse(T, out L) == true)
- {
- C1 = "f" + T;
- goto M1;
- }
- }
- if (Int32.TryParse(T, out L) == true)
- {
- if (T.Length > 4)
- {
- if (T.Length == 7) T = "0" + T;
- if (T.Length == 6) T = " " + T;
- C1 = "j" + T.Substring(T.Length - 4, 4) + T.Substring(0, 4);
- goto M1;
- }
- }
- T = T.Substring(T.Length - 4, 4);
- if (Int32.TryParse(T, out L) == true)
- {
- C1 = "d" + T + " ";
- }
- }
- M1: ;
- // 2010-11-30T12:12:48f00012000u y0rusy50 ca
- P100 = DateTime.Now.ToString("s").Replace("-", "").Substring(0, 8) + C1 + "u y0rusy50 ca";
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",0,100,' ',' ','a','" + P100 + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // INITP100
- //
- //*********************************************************
- private void INITP105(Int32 IDM)
- {
- //-- Description: Инициализвция Поля 105
- //-- Description: ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ТЕКСТОВЫЕ МАТЕРИАЛЫ, МОНОГРАФИЧЕСКИЕ
- String P105, R;
- P105 = "y z 000|y";
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM + ",0,105,' ',' ','a','" + P105 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // INITP105
- //-- =============================================
- private void INITP110(Int32 IDM, Int16 IDLEVEL)
- // 2011.04.12 13:00
- {
- //-- Description: Инициализвция Поля 110
- //--110 ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ПРОДОЛЖАЮЩИЕСЯ РЕСУРСЫ
- String C, P110;
- switch (IDLEVEL)
- {
- case -2: // Многотомное издание
- C = "b";
- break;
- default:
- C = "a"; // Серии, подсерии и продолжающиеся издания
- break;
- }
- P110 = C + "uuz||||0zz";
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM + ",0,110,' ',' ','a','" + P110 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- return;
- } // INITP110
- //*********************************************************
- //-- Description: ФОРМИРОВАНИЕ ПОЛЯ 801 - Источник записи
- //-- =============================================
- private void OBR98(Int32 IDM)
- {
- String D, S;
- //--801 ИСТОЧНИК ЗАПИСИ
- //--Поле содержит указание на источники записи, к которым относятся:
- //-- организация, создающая данные; организация, преобразующая данные
- //-- в машиночитаемую форму; организация, модифицирующая первоначальные
- //-- записи / данные; организация, распространяющая записи.
- //--Обязательное. Повторяется для каждой из перечисленных функций,
- //-- выполняемых той или иной организацией.
- //--Индикатор 1: # (не определен)
- //--Индикатор 2: Индикатор функции
- //-- 0 - Агентство, производящее первоначальную каталогизацию
- //-- 1 - Агентство, преобразующее данные
- //-- 2 - Агентство, вносящее изменения в запись
- //-- 3 - Агентство, распространяющее запись
- //-- $a Страна
- //-- Двухсимвольный код страны, в которой находится организация,
- //-- указанная в подполе $b. См. Приложение B.
- //-- Обязательное. Не повторяется.
- //-- $b Наименование (в кодированной или полной форме) организации.
- //-- В связи с отсутствием общепринятых международных кодов,
- //-- рекомендуется использовать коды из MARC Code list for Organizations
- //-- – cписка кодов для организаций, который содержит коды для многих
- //-- библиографирующих организаций как внутри, так и вне США. Также
- //-- может быть использовано полное наименование организации или
- //-- национальный код.
- //-- Обязательное. Не повторяется.
- //-- $с Дата выполнения той операции с записью, на которую указывает
- //-- индикатор 2. Дату следует записывать в соответствии с международным
- //-- стандартом ISO 8601-2004, указывая цифры года, месяца и дня без
- //-- разделителей между ними, т.е. ГГГГММДД.
- //-- Обязательное при наличии данных. Не повторяется.
- //-- $g Правила каталогизации
- //-- Подполе содержит сокращенное наименование правил каталогизации,
- //-- которые использовались для подготовки библиографической записи.
- //-- Коды некоторых Правил приведены в Приложении Н. Подполе следует
- //-- использовать в том случае, если второй индикатор имеет значение 0
- //-- (для организации, выполняющей первоначальную каталогизацию)
- //-- или 2 (для организации, модифицирующей запись).
- //-- Факультативное. Повторяется (при использовании в одной записи
- //-- различных правил).
- //-- RCR - код Российских правил каталогизации (Москва, 2005)
- //-- $2 Код формата
- //-- Подполе содержит наименование формата машиночитаемой записи.
- //-- Коды машиночитаемых форматов приведены в Приложении H.
- //-- Факультативное. Не повторяется.
- //-- rusmarc - код РУСМАРКа
- //-- unimarc - UNIMARC Manual (London : IFLA UBCIM Programme)
- //-- unimrur - Руководство по UNIMARC = UNIMARC Manual. (Москва :
- //-- Государственная публичная научно-техническая библиотека
- //-- России)
- //-- marc21 - MARC 21 format for bibliographic data (Washington : Library
- //-- of Congress)
- //-- usmarc - USMARC Bibliographic Format. (Washington : Libray of Congress)
- //--
- //-- Во многих случаях одна и та же организация выполняет все или отдельные
- //-- выше перечисленные функции. Поле следует повторять для каждой функции
- //-- т. к. даты обработки могут быть различными.
- //-- В машиночитаемой записи должно быть не менее двух вхождений поля 801,
- //-- т.к. для того чтобы данные привести в машиночитаемую форму, их надо
- //-- подготовить. Т.о. у первого вхождения поля 801 индикатор = 0, а у
- //-- второго = 1.
- //-- Если организация сразу каталогизирует документ в машиночитаемой форме,
- //-- то должно быть приведены два вхождения поля 801 с одинаковыми подполями
- //-- $c - дата составления.
- //--
- //-- Взаимосвязанные поля
- //-- МАРКЕР ЗАПИСИ, позиция символа 18 и позиция символа 5.
- //-- 035 ДРУГИЕ СИСТЕМНЫЕ НОМЕРА
- //-- Идентификатор и наименование организации, создавшей или
- //-- модифицировавшей запись, полученную из другой системы, могут также
- //-- быть введены в поле 035.
- //-- 100 ДАННЫЕ ОБЩЕЙ ОБРАБОТКИ, Дата ввода записи в файл ($a, позиции
- //-- символов 0-7). Дата в поле 100 может иметь такое же значение, как
- //-- и дата преобразования записи в машиночитаемую форму, однако ее
- //-- необходимо повторить в поле 801.
- //-- 801 0 -- КАТАЛОГИЗАЦИЯ
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",-3,801,' ','0','a','RU')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",-3,801,' ','0','b',"
- + "'Федеральное государственное учреждение культуры ' + CHAR(34) + '"
- + "Всероссийская государственная библиотека иностранной литературы имени М.И.Рудомино' + CHAR(34))";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- // -- Дата каталогизации - поле DateCreate из таблицы MAIN
- R = " SELECT REPLACE(CONVERT(VARCHAR(100),DateCreate,102),'.','')"
- + " FROM [BJVVV]..MAIN WHERE ID = " + IDM.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- da.Fill(ds, "list0");
- D = ds.Tables["list0"].Rows[0][0].ToString();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM + ",-3,801,' ','0','c','" + D + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- // -- Код правил каталогизации
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",-3,801,' ','0','g','RCR')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- //-- 801 1 -- КОНВЕРТИРОВАНИЕ
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",-2,801,' ','1','a','RU')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",-2,801,' ','1','b',"
- + "'Федеральное государственное учреждение культуры ' + CHAR(34) + '"
- + "Всероссийская государственная библиотека иностранной литературы имени М.И.Рудомино' + CHAR(34))";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- //-- 801 3 - РАСПРОСТРАНЕНИЕ
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",-1,801,' ','3','a','RU') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",-1,801,' ','3','b',"
- + "'Федеральное государственное учреждение культуры ' + CHAR(34) + '"
- + "Всероссийская государственная библиотека иностранной литературы имени М.И.Рудомино' + CHAR(34))";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- // -- Дата создания записи - первые 8 символов из поля 100
- R = "SELECT LEFT(POL,8) FROM [BJRUSMARC]..RUSM WHERE MET=100 and IDMAIN=" + IDM.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- da.Fill(ds, "list0");
- S = ds.Tables["list0"].Rows[0][0].ToString();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",-1,801,' ','3','c'," + S + ")";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- // -- Формат записи
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + ",-1,801,' ','3','2','rusmarc') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // OBR98 - ФОРМИРОВАНИЕ ПОЛЯ 801 - Источник записи
- //
- //-- =============================================
- //-- Description: Вид обработки = 1 - Вид издания Поле BJ921b
- //-- =============================================
- private void OBR1(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1, String IND2
- , String IDENT, String DSORT)
- {
- String MARKER, POL, P4;
- Int16 METU;
- Int32 IDL, KK2;
- //-- Значения поля
- //-- Альбом
- //-- Атлас
- //-- Брошюра
- //-- Издание картографическое
- //-- Издание листовое
- //-- Издание музыкальное
- //-- Издание научное
- //-- Издание официальное
- //-- Издание справочное
- //-- Издание учебное
- //-- Каталог
- //-- Книжка памятная
- //-- Пособие учебно-методическое
- //-- Проспект
- //-- Путеводитель
- //-- Словарь
- //-- Трофей 2008
- //-- Учебник
- //-- Энциклопедия
- //--
- if (DSORT == "Издание картографическое")
- {
- //-- Модификация МАРКЕРА - поз. 6
- R = " SELECT POL FROM BJRUSMARC..RUSM WHERE MET=0 AND IDMAIN=" + IDM.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- da.Fill(ds, "list0");
- MARKER = ds.Tables["list0"].Rows[0][0].ToString().Insert(6, "e");
- R = "UPDATE BJRUSMARC..RUSM set POL='" + MARKER + "' WHERE MET=0 AND IDMAIN=" + IDM.ToString();
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // Издание картографическое
- else
- {
- if (DSORT == "Издание музыкальное")
- {
- //-- Модификация МАРКЕРА
- R = " SELECT POL FROM BJRUSMARC..RUSM WHERE MET=0 AND IDMAIN=" + IDM.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- da.Fill(ds, "list0");
- MARKER = ds.Tables["list0"].Rows[0][0].ToString().Insert(6, "c");
- R = "UPDATE BJRUSMARC..RUSM set POL='" + MARKER + "' WHERE MET=0 AND IDMAIN=" + IDM.ToString();
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // Издание музыкальное
- } // Модификация по. 6 МАРКЕРА
- //M0: ;
- R = " SELECT IDLEVEL FROM " + BAZA + "..MAIN WHERE ID = " + IDM.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK2 = da.Fill(ds, "list0");
- IDL = Int32.Parse(ds.Tables["list0"].Rows[0][0].ToString());
- //-- MAIN.IDLEVEL =
- //-- 1 - МОНОГРАФИЯ
- //-- 100 - ПОДБОРКА. СВОДНЫЙ УРОВЕНЬ
- //-- - 2 - МНОГОТОМНОЕ ИЗДАНИЕ. СВОДНЫЙ УРОВЕНЬ
- //-- 2 - ТОМ МНОГОТОМНОГО ИЗДАНИЯ
- //-- - 3 - СЕРИЯ. СВОДНЫЙ УРОВЕНЬ
- //-- -33 - ПОДСЕРИЯ. СВОДНЫЙ УРОВЕНЬ
- //-- 3 - ВЫПУСК СЕРИИ
- //-- - 4 - СБОРНИК. СВОДНЫЙ УРОВЕНЬ
- //-- 4 - ЧАСТЬ СБОРНИКА
- //-- - 5 - ПРОДОЛЖАЮЩЕЕСЯ ИЗДАНИЕ. СВОДНЫЙ УРОВЕНЬ
- //-- 5 - ВЫПУСК (НОМЕР) ПРОДОЛЖАЮЩЕГОСЯ ИЗДАНИЯ
- if (IDL > 0 || IDL == -100 || IDL == -2 || IDL == -4)
- {
- METU = 105;
- //-- Модификация поля 105
- //--105 ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ТЕКСТОВЫЕ МАТЕРИАЛЫ, МОНОГРАФИЧЕСКИЕ
- //-- Поле содержит кодированные данные, относящиеся к монографическим текстовым изданиям.
- //-- Примечание: для описания монографических серий используется поле 110.
- //--
- //--$a Кодированные данные о монографическом текстовом документе
- //-- Все данные, записываемые в подполе $a, идентифицируются позицией символа
- //-- в подполе.
- //-- Позиции символов нумеруются от 0 до 12. Все позиции символов должны
- //-- быть представлены в подполе. Если элемент данных не кодируется,
- //-- соответствующие позиции заполняются символами-заполнителями: ‘ | ’.
- //-- Если используется лишь часть возможных позиций, отведенных для данного
- //-- элемента, то неиспользуемые позиции содержат символ пробела: '#'.
- //-- Элементы фиксированной длины подполя $a:
- //--Наименование элемента данных Количество символов Позиции символов
- //-- Коды иллюстраций 4 0-3
- //-- Коды формы содержания 4 4-7
- //-- Код конференции или совещания 1 8
- //-- Индикатор юбилейного издания 1 9
- //-- Индикатор указателя 1 10
- //-- Код литературного жанра 1 11
- //-- Код биографии 1 12
- //--
- //-- Коды иллюстраций
- //-- Для кодов иллюстраций отводится четыре позиции символов, которые
- //-- заполняются слева направо. Неиспользуемые позиции заполняются
- //-- пробелами (#). Если для описания документа могут быть применены
- //-- более четырех кодов (т.е. присутствуют более четырех типов
- //-- иллюстраций), следует выбрать первые четыре в том порядке, в
- //-- котором они приведены в списке ниже.
- //-- Если элемент данных не используется, позиции символов 0-3 заполняются
- //-- символами-заполнителями ' | '. Если элемент данных используется, но
- //-- присутствует менее четырех типов иллюстраций, оставшиеся позиции
- //-- заполняются символами пробела: '#'.
- //-- a = иллюстрации
- //-- Используется для типов иллюстраций, которые не включены в перечень,
- //-- приведенный ниже, например диаграммы, графики или типы иллюстраций,
- //-- не кодируемые отдельно.
- //-- b = карты
- //-- с = портреты. Индивидуальные и групповые.
- //-- d = морские карты, предназначенные для использования в навигации.
- //-- е = планы, например, планы территорий со зданиями.
- //-- f = вкладные листы, содержащие иллюстративные материалы с текстовыми
- //-- пояснениями или без них и не являющиеся частью страниц или листов
- //-- основного текста.
- //-- g = музыкальные произведения
- //-- Только в текстовой форме. Для звукозаписей, являющихся
- //-- сопроводительным материалом, используется код 'm'.
- //-- h = факсимиле
- //-- Воспроизведение части или целого документа средствами репродуцирования
- //-- или печати.
- //-- i = гербы
- //-- j = генеалогические таблицы, схемы
- //-- k = формы (бланки, анкеты и т.д. )
- //-- l = образцы (шаблоны и т. п. )
- //-- m = звукозаписи. Например, пластинка или диск с звукозаписью, вложенные
- //-- в кармашек книги
- //-- n = прозрачные пленочные материалы (transparencies)
- //-- Например, набор transparencies, в кармашке, прикрепленном к книге.
- //-- o = украшения и орнаменты, раскрашенные буквы в рукописи
- //-- y = без иллюстраций
- //-- Допускается единственная форма использования: y###.
- //--
- //-- Коды формы содержания
- //-- а = библиографическое издание
- //-- b = каталог
- //-- c = указатель
- //-- Алфавитный перечень имен или предметов с информацией о них в этой же
- //-- работе или где-либо еще.
- //-- Если документ содержит указатель к собственному тексту, позиция
- //-- 105$a/10 (Индикатор указателя) должна содержать 1.
- //-- d = реферат или резюме, включая описательные, справочные и информационные
- //-- рефераты
- //-- e = словарь
- //-- f = энциклопедия
- //-- g = справочное издание
- //-- h = описание проекта
- //-- i = статистические данные
- //-- j = учебник
- //-- k = патентный документ
- //-- l = стандарт
- //-- m = диссертация (оригинал)
- //-- n = законы и законодательные акты
- //-- o = цифровые таблицы
- //-- p = технический отчет
- //-- q = экзаменационный лист
- //-- r = литературный обзор/рецензия
- //-- s = договоры
- //-- t = карикатуры или комиксы
- //-- v = диссертация (переработанная)
- //-- w = религиозные тексты
- //-- z = другой тип содержания
- //--
- //-- Код конференции
- //-- 0 = не является изданием, публикуемым от имени конференции
- //-- 1 = является изданием, публикуемым от имени конференции
- //--
- //-- Индикатор юбилейного издания
- //-- 0 = не является юбилейным изданием
- //-- 1 = является юбилейным изданием
- //--
- //-- Индикатор указателя
- //-- 0 = указатель отсутствует
- //-- 1 = указатель имеется
- //-- Код литературного жанра
- //-- a = художественная литература
- //-- b = драма. Включая телевизионные пьесы, сценарии и т.д.
- //-- с = очерки, эссе
- //-- d = юмор, сатира Но не карикатура и т.д.
- //-- е = письма как литературная форма
- //-- f = короткие рассказы
- //-- g = поэтические произведения, включая нелитературные работы в стихах
- //-- h = речи и другие риторические формы
- //-- i = либретто
- //-- y = нелитературный текст
- //-- z = смешанные и другие литературные формы
- //--
- //-- Код биографии
- //-- a = автобиография, в том числе письма, переписка.
- //-- b = биография отдельного лица
- //-- с = коллективная биография, например, биография семьи.
- //-- d = сборник биографической информации
- //-- Например, справочник «Кто есть кто».
- //-- y = не биография
- //--
- //--$9 Код ступени высшего профессионального образования
- //-- Двухсимвольный код ступени высшего профессионального образования
- //-- (ступени профессионального образования приведены в соответствии с
- //-- законом о высшем образовании РФ).
- //-- Подполе используется при описании специфических видов документов
- //-- (диссертации, авторефераты, дипломные работы, работы в форме научного
- //-- доклада), для указания научной квалификации, на соискание которой
- //-- выдвинута описываемая работа.
- //-- aa = высшая школа - неполное высшее образование
- //-- ab = высшая школа - бакалавр
- //-- ac = высшая школа - специалист
- //-- ad = высшая школа - магистр
- //-- au = высшая школа - неизвестно
- //-- ba = аспирантура - кандидат наук
- //-- ca = докторантура - доктор наук
- //-- zz = другое
- R = " SELECT POL FROM BJRUSMARC..RUSM "
- + " WHERE IDMAIN = " + IDM.ToString() + " AND MET = " + METU.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- POL = ds.Tables["list0"].Rows[0][0].ToString();
- //-- Модификация поля 105
- P4 = POL.Substring(0, 4);
- switch (DSORT)
- {
- case "Издание картографическое":
- P4 = OBR1_P4("b", P4);
- break; // Издание картографическое
- case "Издание музыкальное":
- P4 = OBR1_P4("g", P4);
- break; //
- case "Издание листовое":
- P4 = OBR1_P4("f", P4);
- break; // Издание листовое
- }
- P4.PadRight(4);
- if (P4 != POL.Substring(0, 4))
- { // поз. 0-3 поля POL изменились
- POL = P4 + POL.Substring(5);
- R = "UPDATE BJRUSMARC..RUSM set POL='" + POL + "' WHERE MET=0 AND IDMAIN=" + IDM.ToString();
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- //-- Модификация поля 105 поз. 4-7
- P4 = POL.Substring(4, 4);
- switch (DSORT)
- {
- case "Издание официальное":
- P4 = OBR1_P4("n", P4);
- break;
- case "Издание справочное":
- P4 = OBR1_P4("g", P4);
- break;
- case "Каталог":
- P4 = OBR1_P4("b", P4);
- break;
- case "Словарь":
- P4 = OBR1_P4("e", P4);
- break;
- case "Учебник":
- P4 = OBR1_P4("j", P4);
- break;
- case "Энциклопедия":
- P4 = OBR1_P4("f", P4);
- break;
- }
- P4.PadRight(4);
- if (P4 != POL.Substring(4, 4))
- { // поз. 4-7 поля POL изменились
- POL = POL.Substring(0, 4) + P4 + POL.Substring(8, 30);
- R = "UPDATE BJRUSMARC..RUSM set POL='" + POL + "' WHERE MET=0 AND IDMAIN=" + IDM.ToString();
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- } // IDL > 0 || IDL == -100 || IDL == -2 || IDL == -4
- else
- {
- //-- - 3 - СЕРИЯ. СВОДНЫЙ УРОВЕНЬ
- //-- -33 - ПОДСЕРИЯ. СВОДНЫЙ УРОВЕНЬ
- //-- - 5 - ПРОДОЛЖАЮЩЕЕСЯ ИЗДАНИЕ. СВОДНЫЙ УРОВЕНЬ
- METU = 110;
- R = " SELECT POL FROM BJRUSMARC..RUSM "
- + " WHERE IDMAIN= " + IDM.ToString() + "AND MET= " + METU.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- POL = ds.Tables["list0"].Rows[0][0].ToString();
- //--110 ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ПРОДОЛЖАЮЩИЕСЯ РЕСУРСЫ
- //-- Обязательное в записи высшего уровня, составляемой для описания
- //-- продолжающегося ресурса в целом.
- //-- Примечание: Указание на содержание отдельных выпусков продолжающегося
- //-- ресурса может (но не является обязательным) размещаться в позициях
- //-- 110$a/4-6 записи уровня физической единицы, описывающей отдельный выпуск.
- //-- Допускается также использование в записи уровня физической единицы
- //-- позиции 110$a/7, если отдельный/отдельные выпуски содержат материалы
- //-- конференции, однако, отражение этих материалов - не главная функция
- //-- продолжающегося ресурса в целом (позиция $a/7 записи высшего уровня
- //-- содержит 0).
- //--$a Кодированные данные продолжающегося ресурса
- //-- Все данные, записываемые в подполе $a, идентифицируются позицией символа
- //-- в подполе.
- //-- Позиции символов нумеруются от 0 до 10. Все позиции символов должны
- //-- быть представлены в подполе.
- //-- Наименование элемента данных Количество символов Позиции символов
- //-- Определитель вида продолжающегося ресурса 1 0
- //-- Периодичность издания 1 1
- //-- Регулярность 1 2
- //-- Код вида материала 1 3
- //-- Код характера содержания 3 4-6
- //-- Индикатор материалов конференции 1 7
- //-- Код наличия титульного листа 1 8
- //-- Код наличия указателя 1 9
- //-- Код наличия сводного указателя 1 10
- //--
- //-- Определитель вида продолжающегося ресурса
- //-- Односимвольный код, указывающий на вид продолжающегося ресурса.
- //-- Заполнение обязательно, если поле 110 приводится в записи.
- //-- a = периодическое издание
- //-- Сериальное издание, выходящее через определенные промежутки времени,
- //-- как правило, постоянным для каждого года числом номеров (выпусков),
- //-- не повторяющимися по содержанию, однотипно оформленными нумерованными
- //-- и (или) датированными выпусками, имеющими одинаковое название
- //-- (ГОСТ 7.60-2003).
- //-- b = монографическая серия
- //-- Совокупность томов, объединенных общностью замысла, тематики, целевым
- //-- или читательским назначением.
- //-- с = газета
- //-- е = интегрируемое издание со сменными листами
- //-- f = база данных
- //-- Коллекция логически взаимосвязанных данных, собранных вместе в виде
- //-- одного или нескольких компьютерных файлов, как правило, создаваемая и управляемая с помощью системы управления базой данных
- //-- g = обновляемый веб-сайт
- //-- z = другие
- //--
- //-- Периодичность издания
- //-- Заполнение обязательное для периодического издания.
- //-- a = ежедневно
- //-- b = дважды в неделю
- //-- с = еженедельно
- //-- d = раз в две недели
- //-- е = дважды в месяц
- //-- f = ежемесячно
- //-- g = раз в два месяца
- //-- h = ежеквартально
- //-- i = три раза в год
- //-- j = дважды в год
- //-- k = ежегодно
- //-- l = раз в два года
- //-- m = раз в три года
- //-- n = три раза в неделю
- //-- o = три раза в месяц
- //-- p = обновляется постоянно
- //-- u = неизвестно
- //-- y = периодичность не определена (т.е. нерегулярно); см. также поз. симв. 2
- //-- z = другая
- //--
- //-- Регулярность
- //-- a = регулярный
- //-- b = нормализованный нерегулярный
- //-- Продолжающийся ресурс не является полностью регулярным, но
- //-- нерегулярность его заранее определена. Например, ежемесячное издание,
- //-- за исключением июля-августа.
- //-- u = не известно
- //-- у = нерегулярный
- //--
- //-- Код вида материала
- //-- а = библиографическое издание
- //-- b = каталог
- //-- c = указатель
- //-- d = реферат или резюме, включая описательные, справочные и информационные рефераты
- //-- e = словарь
- //-- f = энциклопедия
- //-- g = справочное издание
- //-- h = ежегодный отчет / ежегодный обзор
- //-- i = статистический отчет / обзор
- //-- j = учебник
- //-- k = обзор
- //-- Продолжающийся ресурс, содержащий обзор, например, книг, кинофильмов и т.д.
- //-- (но не обзоры событий и не статистические обзоры).
- //-- l = законодательные акты
- //-- m = судебные отчеты и сборники выдержек из решений судов
- //-- n = юридические статьи
- //-- o = случаи из судебной практики и их комментарии
- //-- p = биографии. Например, справочник "Who is who".
- //-- r = текущие периодические обзоры
- //-- t = карикатуры или комиксы
- //-- z = другой тип содержания
- //--
- //-- Код характера содержания
- //-- Трехсимвольный код, показывающий, содержит ли данный продолжающийся
- //-- ресурс материалы одного или более типов из тех, что перечислены для
- //-- позиции $a/3. Необходимо отличать от характеристики самого
- //-- продолжающегося ресурса, размещаемой в позиции $a/3.
- //-- Может быть указано до трех кодов (выравниваемых влево); неиспользуемые
- //-- позиции заполняются пробелами (#). Если для описания ресурса могут быть
- //-- применены более трех кодов (т.е. присутствуют более трех типов материалов),
- //-- следует выбрать первые три кода в том порядке, в котором они приведены
- //-- в списке.
- //-- Если элемент данных не используется, позиции символов 0-3 заполняются
- //-- символами-заполнителями ' | '.
- //-- Индикатор материалов конференции
- //-- Односимвольный код, указывающий, что продолжающийся ресурс содержит
- //-- труды, отчеты или краткое описание работы конференции, совещания,
- //-- семинара, или симпозиума. Например, труды ежегодной конференции.
- //-- 0 = не является изданием, публикуемым от имени конференции
- //-- 1 = является изданием, публикуемым от имени конференции
- //--
- //-- Код доступности титульного листа
- //-- а = титульный лист в последнем выпуске тома - не прикреплен
- //-- b = титульный лист в последнем выпуске тома - прикреплен
- //-- c = титульный лист в первом выпуске следующего тома - не прикреплен
- //-- d = титульный лист в первом выпуске следующего тома - прикреплен
- //-- e = титульный лист публикуется отдельно - свободно по заказу
- //-- f = титульный лист публикуется отдельно - свободно, высылается автоматически
- //-- g = титульный лист публикуется отдельно - покупается - по заказу
- //-- u = не известно ко времени составления записи
- //-- y = титульный лист не издается
- //-- z = другое
- //--
- //-- Код доступности указателя
- //-- a = каждый выпуск содержит указатель к содержанию - не прикреплен
- //-- b = указатель к содержанию - в последнем выпуске тома - не прикреплен - с самостоятельной нумерацией страниц
- //-- c = указатель к содержанию - в последнем выпуске тома - с ненумерованными страницами
- //-- d = указатель к содержанию - в последнем выпуске тома - прикреплен
- //-- е = указатель к содержанию - в первом выпуске следующего тома - не прикреплен - с самостоятельной нумерацией страниц
- //-- f = указатель к содержанию - в первом выпуске следующего тома - не прикреплен - с ненумерованными страницами
- //-- g = указатель к содержанию - в первом выпуске следующего тома - прикреплен
- //-- h = публикуется отдельно - свободно - рассылается автоматически
- //-- i = публикуется отдельно - свободно по запросу
- //-- j = публикуется отдельно - переплет от издателя - свободно - рассылается автоматически
- //-- k = публикуется отдельно - переплет от издателя - свободно по запросу
- //-- l = публикуется отдельно - переплет от издателя - продается по запросу
- //-- m = указатель является сериальным изданием и издается в качестве приложения или подсерии основного сериального издания.
- //-- u = не известно к моменту составления записи
- //-- y = указатель отсутствует
- //-- z = другое
- //--
- //-- Код наличия сводного указателя
- //-- 0 = нет сводного указателя или оглавления
- //-- 1 = имеется сводный указатель или оглавление
- //--
- //-- Модификация поля 110
- P4 = POL.Substring(3, 4);
- switch (DSORT)
- {
- case "Энциклопедия":
- P4 = OBR1_P4("f", P4);
- break;
- //-- Код вида материала
- //-- b = каталог
- //-- e = словарь
- //-- f = энциклопедия
- //-- g = справочное издание
- //-- j = учебник
- case "Издание справочное":
- P4 = OBR1_P4("g", P4);
- break;
- case "Каталог":
- P4 = OBR1_P4("b", P4);
- break;
- case "Словарь":
- P4 = OBR1_P4("e", P4);
- break;
- case "Учебник":
- P4 = OBR1_P4("j", P4);
- break;
- } // switch
- P4.PadRight(4);
- // if (P4.Equals(POL.Substring(4, 4)) == false) { // поз. 4-7 поля POL изменились
- if (P4 != POL.Substring(4, 4))
- { // поз. 4-7 поля POL изменились
- POL = POL.Substring(0, 4) + P4 + POL.Substring(8);
- R = "UPDATE BJRUSMARC..RUSM set POL='" + POL + "' WHERE MET=0 AND IDMAIN=" + IDM.ToString();
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // IDL == -3 || IDL == -33 || IDL == -5
- }
- }// OBR1 - Вид обработки = 1 - Вид издания Поле BJ921b
- //
- //-- =============================================
- //-- Description: Обработка P4 - нет вызовов
- //-- =============================================
- private String OBR1_P4(String C, String P)
- {
- Int32 KK;
- if (P.Substring(0, 1) == "y")
- {
- P = C;
- }
- else
- {
- KK = P.IndexOf(' ');
- if (KK != -1)
- {
- P = P.Substring(0, KK + 1) + C;
- }
- }
- return P;
- }
- //
- //-- =============================================
- //-- Description: Вид обработки = 3 - Иллюстрации
- //-- =============================================
- private void OBR3(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
- String IND2, String IDENT, String DSORT)
- {
- String POL;
- Int32 KK;
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + DSORT + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- //-- Если есть поле 105, ОНО КОРРЕКТИРУЕТСЯ
- R = " SELECT POL FROM BJRUSMARC..RUSM "
- + " WHERE MET=105 AND IDBLOCK = " + DIDDATA.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK = da.Fill(ds, "list0");
- if (KK > 0)
- {
- POL = ds.Tables["list0"].Rows[0][0].ToString();
- //-- Коррекция ПОЛЯ 105a позиции 0-3
- //--$a / (позиции символов 0-3) Коды иллюстраций
- //--Для кодов иллюстраций отводится четыре позиции символов, которые заполняются слева направо. Неиспользуемые позиции заполняются пробелами (#). Если для описания документа могут быть применены более четырех кодов (т.е. присутствуют более четырех типов иллюстраций), следует выбрать первые четыре в том порядке, в котором они приведены в списке ниже.
- //--Если элемент данных не используется, позиции символов 0-3 заполняются символами-заполнителями ' | '.
- // Если элемент данных используется, но присутствует менее четырех типов иллюстраций, оставшиеся позиции заполняются символами пробела: '#'.
- //--
- //-- a = иллюстрации
- //--Используется для типов иллюстраций, которые не включены в перечень,
- //-- приведенный ниже, например диаграммы, графики или типы иллюстраций,
- //-- не кодируемые отдельно.
- //--
- if (POL.Substring(0, 1) == "y")
- {
- POL = "a";
- R = " UPDATE BJRUSMARC..RUSM SET POL='" + POL.PadRight(4)
- + "' WHERE MET=105 AND IDBLOCK=" + DIDDATA.ToString();
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- }
- //
- //-- =============================================
- //-- Description: Вид обработки = 5 - поля описания старопечатных изданий
- //-- =============================================
- //private void OBR5(Int32 IDM, Int32 MNF, String MSF, Int32 DIDDATA, Int16 MET,
- // String IND1, String IND2, String IDENT, String DSORT)
- //{
- // String PREF;
- // R = " SELECT [NAME] FROM BJRUSMARC..BJ2RUSM "
- // + " WHERE MNF= " + MNF.ToString() + "AND MSF='" + MSF + "'";
- // da.SelectCommand = new SqlCommand();
- // da.SelectCommand.CommandText = R;
- // da.SelectCommand.Connection = con;
- // da.SelectCommand.CommandTimeout = 1200;
- // ds = new DataSet();
- // da.Fill(ds, "list0");
- // PREF = ds.Tables["list0"].Rows[0][0].ToString();
- // R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- // + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- // + ",'" + IND1 + "',' " + IND2 + "','" + IDENT + "','" + PREF + "' +': '+ '" + DSORT + "') ";
- // command = new SqlCommand(R, con);
- // con.Open();
- // command.CommandTimeout = 1200;
- // command.ExecuteNonQuery();
- // con.Close();
- //}
- //
- //-- =============================================
- //-- Description: Вид обработки = 6 - Фамилии
- //-- =============================================
- private void OBR6(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1, String IND2,
- String IDENT, String DPPLAIN)
- // 2011.04.12 11:20
- {
- Int32 K, KK, KK2,K1,K2;
- String POL, T1;
- //-- 700 a - Фамилия первого автора
- // -- Формирование точки доступа
- // Anthony (Bloom, A.B.; 1914-2003)
- //Chukovskaya, L.K.
- POL = "";
- K = DPPLAIN.IndexOf(',');
- K2 = DPPLAIN.IndexOf('(');
- if (K != -1) // есть запятая
- {
- if (K2 != -1) // (
- {
- if (K2 < K) // До ( нет ,
- {
- // -- 700a - Начальный элемент ввода - до запято
- POL = DPPLAIN.Substring(K2 + 1).TrimEnd(' '); // после (
- T1 = "";
- DPPLAIN = DPPLAIN.Substring(0, K2).TrimEnd(' ');
- }
- else
- { // , до (
- T1 = DPPLAIN.Substring(K, K2-K); // от , до (
- POL = DPPLAIN.Substring(K2 + 2).TrimStart(' '); // после (
- DPPLAIN = DPPLAIN.Substring(0, K).TrimEnd(' '); // до запятой
- }
- }
- else // нет ( после запятой
- {
- T1 = DPPLAIN.Substring(K+1); // после запятой
- DPPLAIN = DPPLAIN.Substring(0, K).TrimEnd(' '); // до запятой
- POL = "";
- }
- T1 = T1.TrimStart(' ');
- T1 = T1.TrimEnd(' ');
- if (T1.Length > 0)
- {
- // -- 700b Часть имени, кроме начального элемента ввода
- R = "INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",' ','1','b','" + T1 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- } // END -- Есть запятая
- else // нет запятой
- {
- // -- 700a - Начальный элемент ввода - до запятой ИЛИ до (
- if (K2 != -1) // есть (
- {
- POL = DPPLAIN.Substring(K2 + 1).TrimStart(' '); // после (
- DPPLAIN = DPPLAIN.Substring(0, K2).TrimEnd(' ');
- } // Нет , есть (
- } // нет запятой
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",' ','1','a','" + DPPLAIN + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- while (POL.Length > 0)
- {
- T1 = "";
- K1 = POL.IndexOf(")");
- if ((K1 != -1) && ((K1+1) < POL.Length))
- {
- T1 = POL.Substring(K1 + 1).TrimStart(' '); // Остаток после )
- POL = POL.Substring(0, K1).TrimEnd(' ');
- }
- POL = POL.TrimEnd(')');
- while ((K1 = POL.IndexOf(";")) != -1)
- {
- String T2;
- T2 = POL.Substring(0, K1).TrimEnd(' ');
- POL = POL.Substring(K1 + 1).TrimStart(' ');
- if (testAFNAME(T2) == 1) // ДАТЫ
- {
- // -- 700f Даты
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','f','" + T2 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- else
- {
- // -- 700c Дополнение к именам, кроме дат
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','c','" + T2 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- POL = POL.TrimStart(' ');
- POL = POL.TrimEnd(' ');
- POL = POL.TrimEnd(')');
- if (testAFNAME(POL) == 1) // ДАТЫ
- {
- // -- 700f Даты
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','f','" + POL + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- else
- {
- // -- 700c Дополнение к именам, кроме дат
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','c','" + POL + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- POL = T1;
- } // while pol.Length > 0
- // -- 700d Римские цифры
- // -- 700g Расширение инициалов личного имени
- //-- РОЛЬ
- R = " SELECT PLAIN "
- + " FROM "+ BAZA + "..DATAEXTPLAIN P "
- + " LEFT JOIN "+ BAZA + "..DATAEXT DE ON P.IDDATAEXT=DE.ID "
- + " WHERE P.IDDATA= " + DIDDATA.ToString() + " AND MSFIELD = '$4' ";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK = da.Fill(ds, "list0");
- if (KK == 0)
- {
- if (MET == 702)
- {
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ","
- + MET + ",' ','1','4','340') "; // Редактор
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- else
- {
- T1 = ds.Tables["list0"].Rows[0][0].ToString();
- R = " SELECT KOD FROM BJRUSMARC..ROLI R "
- + " LEFT JOIN "+BAZA+"..LIST_3 L3 ON L3.NAME=R.NAME "
- + " WHERE SHORTNAME= '" + T1 + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK2 = da.Fill(ds, "list7003");
- if (KK2 == 0)
- {
- String ROL = (MET != 700) ? "340" : "070";;
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','4','"+ROL+"') "; // Редактор
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- else
- {
- String TR = ds.Tables["list7003"].Rows[0][0].ToString();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','4','" + TR + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- } // OBR6 - Фамилии
- //
- //-- =============================================
- //-- Description: Вид обработки = 9 - Сводный уровень
- //-- Заглавие
- //-- =============================================
- private void OBR9(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
- String IND2, String IDENT, String DSORT)
- {
- Int32 KCV, KK, KK2;
- String Inst, p461, ZAGL;
- KCV = Int32.Parse(DSORT);
- //-- Заглавие сводного уровня по ссылке=IDMAIN
- R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P "
- + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
- + " WHERE MNFIELD=200 AND MSFIELD='$a' AND P.IDMAIN=" + DSORT;
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- DataSet ds9 = new DataSet();
- Int32 K9 = da.Fill(ds9, "list9");
- if (K9 > 0)
- {
- ZAGL = ds9.Tables["list9"].Rows[0][0].ToString(); // PLAIN cv.urovenj
- //-- Запись Заглавия сводного уровня в 225a
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + ZAGL + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P "
- + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
- + " WHERE MNFIELD=225 AND MSFIELD='$h' AND P.IDDATA=" + DIDDATA.ToString(); // Номер ТОМА
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds9 = new DataSet();
- KK = da.Fill(ds9, "list90");
- if (KK > 0)
- {
- Inst = ds9.Tables["list90"].Rows[0][0].ToString();
- //461 #0$1001RU\NLR\bibl\98765$12001#$vт. 6
- p461 = "001"+PREFIX001 + DSORT.PadLeft(8, '0')
- + (char)31 + "12001 " + (char)31 + "a" + ZAGL + (char)31 + "v" + Inst;
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",461,' ','0'"
- + ",'1','" + p461 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P "
- + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
- + " WHERE MSFIELD='$v' AND P.IDDATA=" + DIDDATA.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds9 = new DataSet();
- KK2 = da.Fill(ds9, "list92");
- if (KK2 > 0)
- {
- Inst = ds9.Tables["list92"].Rows[0][0].ToString();
- //461 #0$1001RU\NLR\bibl\98765$12001#$vт. 6
- p461 = "001"+PREFIX001 + DSORT.PadLeft(8, '0')
- + (char)31 + "12001 " + (char)31 + "a" + ZAGL + (char)31 + "v" + Inst;
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",461,' ','0'"
- + ",'1','" + p461 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- }
- //
- //-- =============================================
- //-- Description: Вид обработки = OBR200 - Сведения об ответственности
- //-- Разделение поля на 2 - Первые и остальные
- //-- =============================================
- private void OBR200(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
- String IND2, String IDENT, String DSORT)
- {
- // 200 ЗАГЛАВИЕ И СВЕДЕНИЯ ОБ ОТВЕТСТВЕННОСТИ
- //Поле соответствует области заглавия и сведений об ответственности ГОСТ 7.1-2003.
- //Поле содержит в форме и последовательности, определяемой Правилами:
- // основное заглавие; параллельные заглавия; сведения, относящиеся к
- // заглавию; сведения об ответственности.
- //Обязательное.
- //Не повторяется.
- // $f Первые сведения об ответственности
- //Содержит: Первые сведения об ответственности для заглавия, записанного в
- // подполе $a или в подполе $i.
- //Обязательное для непараллельных сведений, если таковые присутствуют.
- //Повторяется для параллельных сведений об ответственности и для сведений
- // об ответственности, относящихся к зависимому заглавию, записанному в
- // подполе $i.
- // $g Последующие сведения об ответственности
- //Содержит: сведения об ответственности для заглавия, записанного в подполе $a,
- // или для зависимого заглавия, записанного в подполе $i, следующие после
- // первых сведений об ответственности.
- //Факультативное.
- //Повторяется
- //
- // Правила каталогизации
- // 6.4. Первым сведениям об ответственности предшествует знак косая черта;
- // последующие группы сведений отделяют друг от друга точкой с запятой.
- // Однородные сведения внутри группы отделяют запятыми
- Int32 K200;
- String Inst;
- if (DSORT.StartsWith(";")) DSORT = DSORT.Substring(1);
- K200 = DSORT.IndexOf(';');
- if (K200 == DSORT.Length) K200 = -1;
- if (K200 != -1)
- {
- Inst = DSORT.Substring(K200 + 1);
- DSORT = DSORT.Remove(K200);
- }
- else Inst = "";
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",'" + IND1 + "','" + IND2 + "','f','" + DSORT + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- if (Inst.Length != 0)
- {
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",'" + IND1 + "','" + IND2 + "','g','" + DSORT + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- } // OBR200 - Сведения об ответственности
- //
- //-- =============================================
- //-- Description: Языки
- //-- =============================================
- private void OBR101(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
- String IND2, String IDENT, String DSORT)
- {
- Int32 KK, KK2;
- String S, KOD, IDBLOCK;
- //--101 ЯЗЫК ДОКУМЕНТА
- //-- Поле содержит кодированную информацию о языке каталогизируемого
- //-- документа, его частей и заглавия, а также указывает на язык
- //-- оригинала, если документ является переводом.
- //-- Обязательное для документов, содержащих текстовую информацию.
- //-- Не повторяется.
- //-- Индикатор 1: Индикатор перевода
- //-- 0 - Документ на языке(ках) оригинала (в т. ч. параллельный
- //-- текст)
- //-- 1 - Документ является переводом оригинала или промежуточного
- //-- перевода
- //-- 2 - Документ содержит перевод (несколько переводов
- //-- Если нет возможности установить индикатор в записях,
- //-- конвертированных из исходного формата, вместо значений, описанных
- //-- выше, используется символ-заполнитель ' | '.
- //-- Значение 2 не используется, если переводами в документе являются
- //-- только резюме статей.
- //-- Индикатор 2: # (не определен)
- //-- $a Язык текста, звукозаписи и т.д.
- //-- Обязательное для документов, имеющих текстовую основу (в том
- //--числе для документов, имеющих не только текстовую основу, например,
- //-- песни, арии, фильмы и др.
- //-- Повторяется, когда текст написан более, чем на одном языке.
- //--
- //-- $b Язык промежуточного перевода
- //-- Обязательное, если каталогизируемый документ переводится не с
- //-- языка оригинала.
- //-- Повторяется, когда перевод осуществлен через несколько
- //-- промежуточных переводов.
- //--
- //--$c Язык оригинала
- //-- Обязательное, если каталогизируемый документ является переводом.
- //-- Повторяется, когда оригинал издан более, чем на одном языке.
- //--
- //-- $d Язык резюме
- //-- Язык резюме и рефератов каталогизируемого документа в целом или
- //-- его частей.
- //-- Обязательное, если хотя бы один из языков резюме и/или рефератов
- //-- отличается от языка(ов) текста (подполе 101$a).
- //-- Повторяется, если документ содержит резюме и/или рефераты на
- //-- разных языках.
- //--
- //-- $e Язык оглавления
- //-- Обязательное, если хотя бы один из языков оглавления отличается
- //-- от языка(ов) текста (подполе 101$a).
- //-- Повторяется для каждого языка оглавления.
- //--
- //-- $f Язык титульного листа
- //-- Обязательное, если хотя бы один из языков титульного листа
- //-- отличается от языка(ов) текста (подполе 101$a).
- //-- Повторяется для каждого языка титульного листа.
- //--
- //-- $g Язык основного заглавия
- //-- Обязательное, если язык основного заглавия отличается от первого
- //-- или единственного языка текста (подполе 101$a).
- //-- Не повторяется, так как по определению основное заглавие имеет
- //-- один язык. Повторения основного заглавия на других языках являются
- //-- параллельными заглавиями, и их языки указываются в подполе 200$z .
- //--
- //-- $h Язык либретто и т.п.
- //-- Язык или языки текста, если описываемый документ включает текст
- //-- – либо сопроводительный материал, либо напечатанный непосредственно
- //-- в описываемом документе. Подполе не ограничивается либретто как
- //-- таковыми.
- //-- Обязательное, если язык либретто и т.п. отличается от первого
- //-- или единственного языка текста (подполе 101$a).
- //-- Повторяется.
- //--
- //-- $i Язык сопроводительного материала (кроме либретто, краткого
- //-- содержания и аннотаций)
- //-- Содержит код языка сопроводительного материала, такого как
- //-- разъяснения к программе, вводные части, инструкции и т.д.
- //-- Обязательное, если хотя бы один из языков сопроводительного
- //-- материала отличается от языка(ов) текста (подполе 101$a).
- //-- Повторяется.
- //--
- //-- $j Язык субтитров
- //-- Язык субтитров кинофильмов, если он отличается от языка
- //-- саундтрека.
- //-- Обязательное, если язык субтитров отличается от языка,
- //-- указанного в подполе 101$a.
- //-- Повторяется.
- //--
- //-- Каждое подполе содержит трехсимвольный код языка (Приложение A).
- //-- Если подполе повторяется, порядок кодов языка должен отражать
- //-- последовательность и значение использования языка в каталогизируемом
- //-- документе. Если это невозможно, коды языков записываются в
- //-- алфавитном порядке. Код 'mul' может применяться, когда в каком-либо
- //-- подполе используется более трех языков.
- R = " SELECT SMALL_KOD FROM BJRUSMARC..KODLANG "
- + " WHERE SHORTNAME='" + DSORT + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK = da.Fill(ds);
- if (KK == 0)
- {
- R = " SELECT SMALL_KOD FROM BJRUSMARC..KODLANG "
- + " WHERE SHORTNAME = REPLACE('" + DSORT + "','.','')";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK2 = da.Fill(ds, "list1012");
- if (KK2 != 0)
- {
- KOD = ds.Tables["list1012"].Rows[0][0].ToString();
- R = " SELECT POL, IDBLOCK "
- + " FROM BJRUSMARC..RUSM "
- + " WHERE MET= 101 AND IDMAIN= " + IDM.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK2 = da.Fill(ds, "list1013");
- if (KK2 != 0)
- {
- S = ds.Tables["list1013"].Rows[0]["POL"].ToString();
- IDBLOCK = ds.Tables["list0"].Rows[0]["IDBLOCK"].ToString();
- R = " UPDATE BJRUSMARC..RUSM SET POL='" + S +(char)31+ IDENT + KOD + "'"
- + " WHERE MET=101 AND IDMAIN=" + IDM.ToString();
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- else
- {
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",'" + IND1 + "','" + IND2 + "','a','" + KOD + "') "; // Код Языка
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- }
- } // OBR101 - Языки
- //
- // **************************************************************
- //-- Create date: 2009.02.05
- //-- Description: Коды страны и места издания
- //-- =============================================
- private void OBR102(Int32 IDMQ, Int32 DIDDATAQ, Int16 METQ, String IND1Q,
- String IND2Q, String IDENTQ, String DSORTQ)
- // 2011.04.12 11:49
- {
- String S, S2, SM, KOD, IND1, IND2, IDENT, MET;
- Int32 DIDDATA, KS;
- DataSet ds210a;
- MET = METQ.ToString();
- DIDDATA = DIDDATAQ;
- //--102 СТРАНА ПУБЛИКАЦИИ ИЛИ ПРОИЗВОДСТВА
- //-- $a Страна публикации
- //-- Используются коды из таблицы 2-х символьных кодов ISO 3166-1 и
- //-- ГОСТ 7.67-2003 (см. Приложение B).
- //-- $b Место издания (не ISO)
- //-- Код, указывающий на место издания или производства документа.
- //-- В подполе указываются коды, взятые из таблицы, отличной от таблицы
- //-- ISO 3166-2. Таблица, из которой взяты коды, идентифицируется в
- //-- подполе $2.
- //-- $с Место издания (ISO)
- //-- Код, указывающий на место издания или производства документа.
- //-- Повторяется, если в поле присутствует более одного подполя $a.
- //-- В подполе указываются коды, взятые из таблицы ISO 3166-2.
- //-- $2 Код системы (источник кода, отличный от ISO)
- //-- Источник, из которого взят код в подполе $b. Список кодов см. в
- //-- Приложении G.
- //-- Код места издания должен указываться непосредственно после кода страны,
- //-- к которой он относится. В случае, если необходимо указать несколько мест
- //-- издания, относящихся к одной стране, рекомендуется повторять код страны,
- //-- так чтобы каждому подполю $b и $c предшествовало подполе $a.
- //-- Рекомендуется указывать соответствующий код для каждого места публикации
- //-- или производства, записанного в поле 210.
- //-- Место издания в принятой форме вводится в поле 620 МЕСТО КАК ТОЧКА ДОСТУПА.
- //-- Отвергнутая форма места издания, если именно она приведена на документе,
- //-- вводится в поле 210 ПУБЛИКАЦИЯ, РАСПРОСТРАНЕНИЕ и др. в том виде,
- //-- в каком она представлена на основном источнике описания.
- //--Дополнительные коды:
- //-- XX Страна неизвестна (значение кода определено пользователем для
- //-- локального использования)
- //-- ZZ Несколько стран (более трех)
- //--
- //-- 102
- Int32 K102 = blok80.IndexOf("=" + DIDDATAQ.ToString() + ";"); // Блок обработан ?
- if (K102 != -1) return; // Блок обработан
- else blok80 += "=" + DIDDATAQ.ToString() + ";"; // Запоминание обработанного блока
- R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P"
- + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
- + " WHERE P.IDDATA=" + DIDDATA.ToString()
- + " AND MNFIELD=210 AND MSFIELD='$a'"; // Место ИЗДАНИЯ
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KS = da.Fill(ds, "listMect");
- if (KS > 0) // В блоке может быть несколько полей Место ИЗДАНИЯ
- {
- if (KS == 1)
- { // Если в блоке 1 Место издания, то в этом блоке может быть Страна издания
- S = ds.Tables["listMect"].Rows[0][0].ToString(); // Место ИЗДАНИЯ
- S2 = ""; // Страна издания
- SM = ""; // Код Места издания
- KOD = ""; // Код страны издания
- R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P"
- + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
- + " WHERE DE.IDDATA=" + DIDDATAQ.ToString()
- + " AND MNFIELD=102 AND MSFIELD='$a'"; // Страна
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- Int32 KSa = da.Fill(ds, "list102");
- if (KSa > 0)
- { // В этом блоке есть Страна
- S2 = ds.Tables["list102"].Rows[0][0].ToString();
- R = " SELECT KOD FROM BJRUSMARC..KODCTPAH WHERE [NAME]='" + S2 + "'"; // Страна
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- if (da.Fill(ds, "listkodc") > 0)
- {
- KOD = ds.Tables["listkodc"].Rows[0][0].ToString(); // Код Страны издания
- }
- }
- R = " SELECT KODCTPAHA,KODMECTO from BJRUSMARC..KODMECTO "// Есть Код Места
- + " where NAIM='"+S+"' ";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- if (da.Fill(ds, "listKM") > 0)
- { // Для этого места известен Код
- S2 = ds.Tables["listKM"].Rows[0]["KODCTPAHA"].ToString(); // Код страны издания
- if (KOD.Length == 0) KOD = S2;
- SM = ds.Tables["listKM"].Rows[0]["KODMECTO"].ToString(); // Код Места
- }
- if (KOD.Length > 0)
- {
- if (P102.Length > 0) P102 = (char)31 + "a";
- P102 += KOD;
- if (SM.Length > 0) P102 = P102 + (char)31 + "b" + SM; // Код Места ISO
- else P102 = P102 + (char)31 + "с" + S; // Место издания как Код Места не ISO
- }
- // Место издания
- R = " SELECT MET1,IND1,IND2,IDEN1 FROM BJRUSMARC..BJ2RUSM "
- + " WHERE MNF=210 AND MSF='$a'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KS = da.Fill(ds, "list210");
- MET = ds.Tables["list210"].Rows[0][0].ToString();
- IND1 = ds.Tables["list210"].Rows[0][1].ToString();
- IND2 = ds.Tables["list210"].Rows[0][2].ToString();
- IDENT = ds.Tables["list210"].Rows[0][3].ToString();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDMQ.ToString() + "," + DIDDATA.ToString() + ","
- + MET + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + S + "')"; // Издательство
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // В блоке 1 Место издания
- else
- { // В блоке KS Место издания
- R = " SELECT MET1,IND1,IND2,IDEN1 FROM BJRUSMARC..BJ2RUSM "
- + " WHERE MNF=210 AND MSF='$a'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds210a = new DataSet();
- KS = da.Fill(ds210a, "list210");
- MET = ds210a.Tables["list210"].Rows[0][0].ToString();
- IND1 = ds210a.Tables["list210"].Rows[0][1].ToString();
- IND2 = ds210a.Tables["list210"].Rows[0][2].ToString();
- IDENT = ds210a.Tables["list210"].Rows[0][3].ToString();
- for (int i = 0; i < KS; i++)
- {
- S2 = ""; // Страна издания
- SM = ""; // Код Места издания
- KOD = ""; // Код страны издания
- S = ds.Tables["listMect"].Rows[i][0].ToString(); // Место ИЗДАНИЯ
- R = " SELECT KODCTRAHA,KODMECTO from BJRUSMARC..KODMECTO "// Страна
- + " where NAIM='"+S+"' ";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- if (da.Fill(ds, "listKM") > 0)
- { // Для этого места известен Код
- KOD = ds.Tables["listKM"].Rows[0]["KODCTPAHA"].ToString(); // Код страны издания
- SM = ds.Tables["listKM"].Rows[0]["KODMECTO"].ToString(); // Код Места
- }
- if (KOD.Length > 0)
- {
- if (P102.Length > 0) P102 = (char)31 + "a";
- P102 += KOD;
- if (SM.Length > 0) P102 = P102 + (char)31 + "b" + SM; // Код Места ISO
- else P102 = P102 + (char)31 + "с" + S; // Место издания как Код Места не ISO
- } // Добавление в Р102 Код страны и Код Места издания
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDMQ.ToString() + "," + DIDDATA.ToString() + ","
- + MET + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + S + "')"; // Издательство
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // Цикл по Местам издания текущего блока - для текущего Издательство
- } // В блоке KS Место издания
- } // Место ИЗДАНИЯ
- //--
- R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P"
- + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
- + " WHERE P.IDMAIN=" + IDMQ.ToString() + " AND DE.IDDATA=" + DIDDATA.ToString()
- + " AND MNFIELD=210 AND MSFIELD='$c'"; // Издательство
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KS = da.Fill(ds, "list210");
- if (KS == 0)
- {
- R = " SELECT TOP(1) PLAIN FROM " + BAZA + "..DATAEXTPLAIN P"
- + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
- + " WHERE P.IDMAIN=" + IDMQ.ToString()
- + " AND MNFIELD=210 AND MSFIELD='$c'"; // Издательство
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KS = da.Fill(ds, "list210");
- }
- if (KS > 0)
- {
- S = ds.Tables["list210"].Rows[0][0].ToString();
- R = " SELECT MET1,IND1,IND2,IDEN1 FROM BJRUSMARC..BJ2RUSM "
- + " WHERE MNF=210 AND MSF='$c'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KS = da.Fill(ds, "list210");
- MET = ds.Tables["list210"].Rows[0][0].ToString();
- IND1 = ds.Tables["list210"].Rows[0][1].ToString();
- IND2 = ds.Tables["list210"].Rows[0][2].ToString();
- IDENT = ds.Tables["list210"].Rows[0][3].ToString();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDMQ.ToString() + "," + DIDDATA.ToString() + ","
- + MET + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + S + "')"; // Издательство
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- //-- Типография
- R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P"
- + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
- + " WHERE P.IDMAIN=" + IDMQ.ToString() + " AND DE.IDDATA=" + DIDDATAQ.ToString()
- + " AND MNFIELD=2110 AND MSFIELD='$g'"; // Типография
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KS = da.Fill(ds, "list210");
- if (KS > 0)
- {
- S = ds.Tables["list210"].Rows[0][0].ToString();
- R = " SELECT MET1,IND1,IND2,IDEN1 FROM BJRUSMARC..BJ2RUSM "
- + " WHERE MNF=2110 AND MSF='$g'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KS = da.Fill(ds, "list210");
- MET = ds.Tables["list210"].Rows[0][0].ToString();
- IND1 = ds.Tables["list210"].Rows[0][1].ToString();
- IND2 = ds.Tables["list210"].Rows[0][2].ToString();
- IDENT = ds.Tables["list210"].Rows[0][3].ToString();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDMQ.ToString() + "," + DIDDATAQ.ToString() + ","
- + MET + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + S + "')"; // Типография
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- } // OBR102 - Место издания
- //
- //-- =============================================
- //-- Description: Вид обработки = 2103 - Издательство
- //-- =============================================
- private void OBR2103(Int32 IDM, Int32 MNF, String MSF, Int32 DIDDATA, Int16 MET,
- String IND1, String IND2, String IDENT, String DSORT)
- {
- // String PREF;
- // R = " SELECT [NAME] FROM BJRUSMARC..BJ2RUSM "
- // + " WHERE MNF= " + MNF.ToString() + "AND MSF='" + MSF + "'";
- // da.SelectCommand = new SqlCommand();
- // da.SelectCommand.CommandText = R;
- // da.SelectCommand.Connection = con;
- // da.SelectCommand.CommandTimeout = 1200;
- // ds = new DataSet();
- // da.Fill(ds, "list0");
- // PREF = ds.Tables["list0"].Rows[0][0].ToString();
- // R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- // + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- // + ",'" + IND1 + "',' " + IND2 + "','" + IDENT + "','" + PREF + "' +': '+ '" + DSORT + "') ";
- // command = new SqlCommand(R, con);
- // con.Open();
- // command.CommandTimeout = 1200;
- // command.ExecuteNonQuery();
- // con.Close();
- }
- //
- // *******************************************************
- //-- Description: Другое заглавие
- // *******************************************************
- private void OBR517(Int32 IDMQ, Int32 DIDDATAQ, Int16 METQ, String IND1Q,
- String IND2Q, String IDENTQ, String PLAINQ)
- {
- String S, T, LANG;
- Int32 MNF, KS, KL, KMNF, KKOD;
- //--
- R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P "
- + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
- + " WHERE IDDATA=" + DIDDATAQ.ToString() + " AND MNFIELD=517 AND MSFIELD='$b";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KS = da.Fill(ds, "listS");
- R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P "
- + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
- + " WHERE IDDATA=" + DIDDATAQ.ToString() + " AND MNFIELD=517 AND MSFIELD='$z";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- KL = da.Fill(ds, "listL");
- if (KS == 0)
- { // В этом блоке нет Тип заглавия
- S = "Другое заглавие: " + PLAINQ;
- if (KL > 0)
- {
- S = S + "; Язык данного заглавия: " + ds.Tables["listL"].Rows[0][0].ToString();
- }
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDMQ.ToString() + "," + DIDDATAQ.ToString()
- + ",300,' ',' ','a','" + S + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- else
- {
- S = ds.Tables["listS"].Rows[0][0].ToString();
- R = " SELECT MNF BJRUSMARC..TIP_ZAGL WHERE [NAME]='" + S + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- KMNF = da.Fill(ds, "listMNF");
- if (KMNF > 0)
- {
- MNF = Int32.Parse(ds.Tables["listMNF"].Rows[0][0].ToString());
- if (MNF == 300)
- {
- T = S + ": " + PLAINQ;
- if (KL > 0)
- {
- T = T + "; Язык данного заглавия: +" + ds.Tables["listL"].Rows[0][0].ToString();
- }
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDMQ.ToString() + "," + DIDDATAQ.ToString()
- + ",300,' ',' ','a','" + T + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- return;
- }
- if (MNF > 500)
- {
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDMQ.ToString() + "," + DIDDATAQ.ToString()
- + ",300,' ',' ','a','" + PLAINQ + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- if (KL > 0)
- { // Язык данного заглавия
- LANG = ds.Tables["listL"].Rows[0][0].ToString();
- R = " SELECT KOD BJRUSMARC..KODLANG WHERE SHORTNAME='" + LANG + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- KKOD = da.Fill(ds, "listKOD");
- if (KKOD == 0)
- {
- R = " SELECT KOD BJRUSMARC..KODLANG WHERE REPLACE(SHORTNAME,'.','')='" + LANG + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- KKOD = da.Fill(ds, "listKOD");
- }
- if (KKOD > 0)
- {
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDMQ.ToString() + "," + DIDDATAQ.ToString()
- + "," + MNF.ToString() + ",'0',' ','z','" + S + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- return;
- }
- }
- }
- }
- } // OBR517 - Другое заглавие
- //
- //-- =============================================
- //-- Description: Вид обработки = 606 - Предметная рубрика
- //-- =============================================
- private void OBR606(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
- String IND2, String IDENT, String DSORT)
- {
- // 606 НАИМЕНОВАНИЕ ТЕМЫ КАК ПРЕДМЕТ
- //Поле содержит слово или словосочетание, отражающее содержание документа, представленное в форме точки доступа. К наименованию темы, используемому в качестве предметной рубрики, факультативно могут быть добавлены тематические, географические, хронологические или формальные подзаголовки.
- //Факультативное.
- //Повторяется.
- //Индикатор 1: Уровень предметной единицы
- //0 - Уровень значимости не может быть установлен
- //1 - Первичный термин
- //2 - Вторичный термин
- //# - Нет доступной информации для установления уровня значимости
- //
- //Индикатор 2: # (не определен)
- // $a Наименование темы
- //Тематический заголовок предметной рубрики / дескриптор в форме, определяемой используемой системой индексирования.
- //Обязательное, если поле 606 присутствует в записи.
- //Не повторяется.
- //
- //$j Формальный подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения формы или вида документа, целевого и читательского назначения, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //
- //$x Тематический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения тематического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации .
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //
- //$y Географический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения географического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //
- //$z Хронологический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения хронологического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //
- //$2 Код системы
- //Код системы предметных рубрик или тезауруса, по правилам которой построены ПР / дескриптор. Список кодов приведен в Приложении G.
- //G.5. Локальный код
- // local Используется не стандартный список кодов
- //Обязательное, если поле 606 присутствует в записи.
- //Не повторяется.
- //
- Int32 IDCH, NTES, KTES;
- String Inst, ST1, ST2, PR;
- char C1;
- IDCH = Int32.Parse(DSORT);
- //-- Предметная рубрика
- R = " SELECT [VALUE], IDTYPE FROM " + BAZA + "..TPR_CHAIN C "
- + " LEFT JOIN " + BAZA + "..TPR_TES T ON T.ID= C.IDTES "
- + " WHERE C.IDCHAIN=" + DSORT + " ORDER BY IDORDER";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- DataSet ds606 = new DataSet();
- NTES = da.Fill(ds606, "list606");
- if (NTES > 0) // Число терминов в ПР
- {
- PR = "";
- for (int ITES = 0; ITES < NTES; ITES++)
- {
- Inst = ds606.Tables["list606"].Rows[ITES][0].ToString(); //
- KTES = Int32.Parse(ds606.Tables["list606"].Rows[ITES][1].ToString()); // IDTYPE
- switch (KTES) // IDTYPE очередного термина
- {
- case 1: //1 Тематика
- C1 = (ITES == 0) ? 'a' : 'x';
- break;
- case 2: //2 Язык
- C1 = 'x'; //$x Тематический подзаголовок
- break;
- case 3: //3 Географическая подрубрика
- C1 = 'y'; //$y Географический подзаголовок
- break;
- case 4: //4 Хронологическая подрубрика
- C1 = 'z'; //$z Хронологический подзаголовок
- break;
- case 8: //8 Форма
- C1 = 'j'; //$j Формальный подзаголовок
- break;
- case 9: //9 Жанр
- C1 = 'j'; //$j Формальный подзаголовок
- break;
- default:
- C1 = 'a';
- break;
- }
- if ((KTES < 5) || (KTES >7)) // Не Форма, не Жанр, не Персона
- {
- if (ITES == 0) PR = Inst;
- else PR = PR + (char)31 + C1 + Inst;
- }
- else
- {
- if (KTES == 5) // Персона
- {
- //5 Персона
- // 600 ИМЯ ЛИЦА КАК ПРЕДМЕТ
- //Поле содержит имя лица (как реального, так и вымышленного образа / персонажа), являющегося одним из объектов рассмотрения в документе, представленное в форме точки доступа. К имени лица, используемому в качестве предметной рубрики, могут быть добавлены тематические, географические, хронологические, формальные подзаголовки.
- //Факультативное.
- //Повторяется.
- //Индикатор 1: # (не определен)
- //Индикатор 2: Индикатор формы представления имени
- //1 - Имя лица записано под фамилией (родовым именем, отчеством и т. д.)
- // $a Начальный элемент ввода
- //Часть имени, используемая как начальный элемент ввода. Начальный элемент ввода определяет положение записи в упорядоченных списках.
- //Обязательное, если поле 600 присутствует в записи. Не повторяется.
- //$b Часть имени, кроме начального элемента ввода
- //Остаток имени от начального элемента ввода - фамилии или родового имени. Cодержит личные имена (не фамилии и не родовые имена) и другие присвоенные имена в инициальной форме. При использовании подполя индикатор формы представления имени должен быть установлен 1. Предназначенные для печати раскрытые инициалы записываются в подполе $g.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- //$c Дополнения к именам, кроме дат
- //Любые дополнения к именам (кроме дат), которые не являются неотъемлемой частью имени (титулы, звания, эпитеты, указание должности).
- //Обязательное, если имеются доступные данные.
- //Повторяются при втором или последующих появлениях дополнений.
- //$d Римские цифры
- //Римские цифры, ассоциирующиеся с именами членов царствующих семей, князей, священнослужителей, римских пап. Если имеется эпитет (второе имя, прозвище и т.п.), связанный с нумерацией, эпитет также включается в подполе $d. При использовании подполя индикатор формы представления имени должен быть 0.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- //$f Даты
- //Даты, присоединяемые к именам лиц, включая слова, указывающие на смысл дат (например, жил, родился, умер). Указанные слова вводятся в подполе в полной или сокращенной форме. Все даты для лица, названного в поле, вводятся в одно подполе $f.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- //$g Расширение инициалов личного имени
- //Полная форма личного имени, когда наряду с инициалами, записанными в подполе $b, необходимо их раскрытие.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- //$j Формальный подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения формы или вида документа, целевого и читательского назначения, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$p Наименование / адрес организации
- //Подполе содержит наименование и/или адрес организации, в которой данное лицо работало в момент создания документа.
- //Факультативное.
- //Не повторяется.
- //$x Тематический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения тематического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$y Географический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения географического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$z Хронологический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения хронологического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$2 Код системы
- //Код системы предметных рубрик или тезауруса, по правилам которой построены ПР / дескриптор. Список кодов приведен в Приложении G.
- //Обязательное, если поле 600 присутствует в записи.
- //Не повторяется
- l = Inst.IndexOf('(');
- if (l != -1)
- {
- ST2 = Inst.Substring(l + 1); // года жизни
- ST2 = ST2.Replace(")", "");
- Inst = Inst.Remove(l);
- }
- else ST2 = "";
- l = Inst.IndexOf(',');
- if (l != -1)
- {
- ST1 = Inst.Substring(l + 1); // Инициалы
- ST1 = ST1.Replace(")", "");
- Inst = Inst.Remove(l); // Фамилия
- }
- else ST1 = "";
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
- + ",'a','" + Inst + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- ST1 = ST1.TrimEnd(' ');
- ST1 = ST1.TrimStart(' ');
- if (ST1.Length > 0)
- {
- if (ST1.IndexOf('.') != -1)
- { // Инициалы
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
- + ",'b','" + ST1 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- else
- { // Расширение инициалов
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
- + ",'g','" + ST1 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- } // ST1
- if (ST2.Length > 0)
- { // Даты
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
- + ",'f','" + ST2 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // Даты
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
- + ",'2','VGBIL') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // KTES=5 Персона
- else
- {
- if (KTES == 6)
- {
- //6 Организация
- // 601 НАИМЕНОВАНИЕ ОРГАНИЗАЦИИ КАК ПРЕДМЕТ
- //Поле содержит наименование организации, являющейся одним из объектов рассмотрения в документе, представленное в форме точки доступа. К наименованию организации, используемому в качестве предметной рубрики, могут быть добавлены тематические, географические, хронологические, формальные подзаголовки.
- //Факультативное.
- //Повторяется.
- //Индикатор 1: Определяет постоянный или временный характер организации:
- //0 - Постоянная организация
- //1 - Временная организация
- //Индикатор 2: Определяет способ ввода наименования:
- //0 - Наименование в инверсированной форме
- //1 - Наименование, введенное под юрисдикцией
- //2 - Наименование в прямой форме
- // $a Начальный элемент ввода
- //Часть наименования организации, используемая как начальный элемент ввода. Начальный элемент ввода определяет положение записи в упорядоченных списках.
- //Обязательное, если поле 601 присутствует в записи.
- //Не повторяется.
- //$b Структурное подразделение организации
- //Часть наименования организации, содержащая наименование подведомственной организации, либо наименование структурного подразделения организации при иерархической структуре ее наименования. В это подполе заносится также часть наименования организации, следующая после названия территории в тех заголовках - наименованиях организации, начальным элементом ввода которых является юрисдикция (пример 7).
- //Обязательное, если имеются доступные данные.
- //Повторяется (для каждого последующего иерархического уровня).
- //$c Идентифицирующий признак
- //Дополнение к наименованию или уточнение, за исключением порядкового номера, даты и места проведения временной организации. Может включать: географические названия, даты, номера.
- //Обязательное, если имеются доступные данные.
- //Повторяется для каждого из перечисленных идентифицирующих признаков.
- //$d Порядковый номер временной организации и / или порядковый номер ее части
- //Указывается арабскими цифрами без наращения окончания.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- //$e Место проведения временной организации
- //Название города или любой другой местности, в которой проходила временная организация.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- //$f Дата проведения временной организации
- //Указывается арабскими цифрами без наращения окончания.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- //$g Инверсированный элемент
- //Часть наименования организации, записанного в инверсированной форме, перенесенная с начала наименования (имя или имя и отчество, записанные после фамилии).
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- //$h Часть наименования, отличная от начального элемента ввода и от инверсированного элемента
- //В инверсированном заголовке - часть наименования, следующая за инверсией.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- //$j Формальный подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения формы или вида издания, целевого и читательского назначения, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$x Тематический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения тематического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$y Географический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения географического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$z Хронологический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения хронологического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$2 Код системы
- //Код системы предметных рубрик или тезауруса, по правилам которой построены ПР / дескриптор. Список кодов приведен в Приложении G.
- //Обязательное, если поле 601 присутствует в записи.
- //Не повторяется.
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",601,' ','1'"
- + ",'a','" + Inst + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",601,' ','1'"
- + ",'2','VGBIL') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // KTES = 6 Организация
- else
- {
- if (KTES == 7) //7 Географическая местность
- {
- // 607 ГЕОГРАФИЧЕСКОЕ НАИМЕНОВАНИЕ КАК ПРЕДМЕТ
- //Поле содержит название географического объекта, являющегося одним из предметов рассмотрения в документе, представленное в форме точки доступа. К географическому наименованию, используемому в качестве предметной рубрики, факультативно могут быть добавлены тематические, географические, хронологические, формальные подзаголовки.
- //Факультативное.
- //Повторяется.
- //Индикатор 1: # (не определен)
- //Индикатор 2: # (не определен)
- //Подполя $a Географическое наименование
- //Географическое наименование в форме, определяемой используемой системой индексирования.
- //Обязательное, если поле 607 используется в записи.
- //Не повторяется.
- //$j Формальный подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения формы или вида документа, целевого и читательского назначения, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$x Тематический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения тематического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$y Географический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения географического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации (пример 3).
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$z Хронологический подзаголовок
- //Слово или словосочетание, добавляемое к предметной рубрике для отражения хронологического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
- //Обязательное, если имеются доступные данные.
- //Повторяется.
- //$2 Код системы
- //Код системы предметных рубрик или тезауруса, по правилам которой построены ПР / дескриптор. Список кодов приведен в Приложении G.
- //Обязательное, если поле 607 приводится в записи.
- //Не повторяется.
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",607,' ','1'"
- + ",'a','" + Inst + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",607,' ','1'"
- + ",'2','VGBIL') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // KTES = 7 Местность
- }
- }
- }
- // 675 УНИВЕРСАЛЬНАЯ ДЕСЯТИЧНАЯ КЛАССИФИКАЦИЯ (UDC/УДК)
- //Поле содержит классификационный индекс, присвоенный документу в соответствии с Универсальной десятичной классификацией, с указанием используемого издания УДК.
- //Факультативное.
- //Повторяется.
- //Индикатор 1: # (не определен)
- //Индикатор 2: # (не определен)
- //Подполя $a Индекс
- //Классификационный индекс согласно таблицам УДК.
- //Обязательное, если поле 675 присутствует в записи.
- //Не повторяется.
- if (ITES == 0)
- {
- R = " SELECT UDC FROM " + BAZA + "..TPR_UDC "
- + " WHERE IDCHAIN=" + DSORT;
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- DataSet ds675 = new DataSet();
- Int32 K675 = da.Fill(ds675, "list675");
- if (K675 > 0)
- {
- Inst = ds675.Tables["list675"].Rows[0][0].ToString();
- S675 = Inst.Replace("'", "'+char(39)+'");
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString()
- + ",675,' ',' ','a','" + S675 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- } // Цикл по терминам ПР
- if (PR.Length > 0)
- {
- PR = PR + (char)31 + "2VGBIL";
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",606"
- + ",'0',' ','a','" + PR + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- } // OBR606
- //
- //-- =============================================
- //-- Description: Вид обработки = 7003 - Персона
- //-- =============================================
- private void OBR7003(Int32 IDM, Int32 MNF, String MSF, Int32 DIDDATA, Int16 MET,
- String IND1, String IND2, String IDENT, String DSORT)
- {
- // 700 ИМЯ ЛИЦА - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ
- //Поле содержит имя лица, для которого определен статус первичной ответственности по отношению к каталогизируемому документу, в форме точки доступа. Используется в том случае, если основной точкой доступа в записи является заголовок, содержащий имя лица.
- //Обязательное, если должна быть создана основная точка доступа на имя лица, для которого определен статус первичной ответственности.
- // Поле не может присутствовать в записи, где есть поле 710 НАИМЕНОВАНИЕ ОРГАНИЗАЦИИ - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ или 720 РОДОВОЕ ИМЯ - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ, так как запись может иметь только одну точку доступа с первичной ответственностью.
- //Не повторяется.
- //Индикатор 1: # ( не определен)
- //Индикатор 2: Индикатор формы представления имени
- // Индикатор определяет, записывается ли имя под первым приведенным именем (имеется в виду
- // личное имя, а не фамилия) в прямом порядке или оно вводится под фамилией
- // , родовым именем, отчеством в инверсированной форме.
- // 0 - Имя лица вводится под личным именем или в прямом порядке
- // 1 - Имя лица записано под фамилией (родовым именем, отчеством и т. д.)
- // $a Начальный элемент ввода
- //Часть имени, используемая как начальный элемент ввода. Если поле 700 приводится в записи, то по подполю 700$a определяется положение записи в упорядоченных списках.
- //Обязательное, если поле 700 присутствует в записи.
- //Не повторяется.
- // $b Часть имени, кроме начального элемента ввода
- //Остаток имени от начального элемента ввода - фамилии или родового имени. Содержит личные имена (не фамилии) и другие присвоенные имена в инициальной форме. При использовании подполя индикатор формы представления имени должен быть 1. Предназначенные для печати раскрытые инициалы записываются в $g.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- // $c Дополнение к именам, кроме дат
- //Любые дополнения к именам (кроме дат), которые не формируют неотъемлемую часть самого имени, включая звания, эпитеты, определения или указания должности.
- //Обязательное, если имеются доступные данные.
- //Повторяется для второго или последующих дополнений.
- // $d Римские цифры
- //Римские цифры, связанные с именами римских пап, членов королевских семей и священнослужителей. Если имеется эпитет (второе имя, прозвище и т.п.), связанный с нумерацией, эпитет также включается в подполе $d (примеры 11-12). При использовании подполя индикатор формы представления имени должен быть 0.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- // $f Даты
- //Даты, присоединяемые к именам лиц, включая слова, указывающие на смысл дат (т.е. жил, родился, умер), вводятся в подполе в полной или сокращенной форме . Все даты для лица, названного в поле, вводятся в одно подполе $f.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- // $g Расширение инициалов личного имени
- //Полная форма личного имени, когда наряду с инициалами, записанными в подполе $b, необходимо их раскрытие.
- //Обязательное, если имеются доступные данные.
- //Не повторяется.
- // $p Наименование/адрес организации
- //Подполе содержит наименование и / или адрес организации, с которой данное лицо было связано в момент создания произведения.
- //Факультативное.
- //Не повторяется.
- // $3 Номер авторитетной / нормативной записи
- //Контрольный номер авторитетной / нормативной записи для заголовка. Подполе предназначается для использования в рамках Формата авторитетных записей RUSMARC. До внедрения формата подполе может использоваться для номера в локальных файлах библиографических агентств.
- //Обязательное, при условии существования авторитетной / нормативной записи.
- //Не повторяется.
- // Примечание
- //Для связи полей, содержащих принятые формы имен в альтернативной графике, по-прежнему
- // используется подполе $6.
- // Примечания о содержании поля
- // Форма
- //Имя лица и все относящиеся к нему добавления формулируются в соответствии с Российскими правилами каталогизации.
- // Выбор подполей
- //Имена одного и того же лица, зафиксированные в файлах авторитетных / нормативных записей
- // различных библиографирующих учреждений, не всегда будут одинаковым образом
- // распределены по подполям. Единственным способом определения различий между
- // начальным элементом ввода, частью имени, кроме начального элемента, и дополнениями к
- // имени, кроме дат, является анализ их использования. Первый элемент ($a – начальный
- // элемент ввода) - это слово, которое определяет положение записи в упорядоченных списках.
- // Второй элемент ($b - часть имени, кроме начального элемента ввода) может использоваться
- // как второй элемент сортировки. Третий элемент ($c - дополнения к имени, кроме дат) может
- // использоваться как третий элемент сортировки, или может игнорироваться в процессе
- // сортировки, особенно если он предшествует подполю $b.
- //Если имена, начинающиеся с неизменяемой частицы, упорядочиваются в списках под следующим
- // после частицы элементом, то такие частицы рекомендуется записывать в конце подполя
- // $b - часть имени, кроме начального элемента ввода. Кроме того, в этом случае возможно
- // использование механизма символов границ сортировки - при этом неизменяемая частица
- // располагается в начале подполя $a. Выбор одного из этих механизмов определяется
- // требованиями, которые библиографирующее агентство предъявляет к выходным формам.
- //Титулы, адреса, эпитеты или уточняющие слова имен (кроме дат), добавленные каталогизатором,
- // записываются как дополнения к именам в подполе $c.
- //Пунктуация
- //Рекомендуется включать в запись RUSMARC ту пунктуацию, которая предназначена для вывода
- // на дисплей / печать. При отсутствии стандартов на пунктуацию получатели записей в
- // формате RUSMARC должны иметь представление о практике, принятой в агентстве,
- // подготавливающем запись, а учреждения, распространяющие записи, должны быть
- // последовательными в своих решениях. В документацию, сопровождающую обменные файлы должны
- // включаться разъяснения по использованию пунктуации.
- //Индикатор 0 - имя записано в прямом порядке
- //ИМЯ
- //ИМЯ ОТЧЕСТВО
- //ИМЯ ПРОЗВИЩЕ (ЭПИТЕТ, ОПРЕДЕЛЕНИЕ)
- //ИМЯ [ФАМИЛИЯ ИМЯ ОТЧЕСТВО] ДУХОВНОЕ ЗВАНИЕ
- //ИМЯ ИМЯ ИМЯ (китайские и другие восточные имена)
- //СОКРАЩЕННОЕ ИМЯ (.) ИНИЦИАЛ
- //ИНИЦИАЛ (.) СОКРАЩЕННОЕ ИЛИ ПОЛНОЕ ИМЯ
- //
- //Индикатор 1 - имя записано под фамилией, родовым именем, отчеством
- //ФАМИЛИЯ (,) ИМЯ ОТЧЕСТВО (то же в инициальной форме)
- //ФАМИЛИЯ (,) ИМЯ (то же инициалы)
- //ФАМИЛИЯ
- //ФАМИЛИЯ (-) ФАМИЛИЯ (,) ИМЯ ОТЧЕСТВО (то же в инициальной форме)
- //ФАМИЛИЯ ФАМИЛИЯ ФАМИЛИЯ (,) ИМЯ .(то же инициалы)
- //СОКРАЩЕННАЯ ФАМИЛИЯ (,) ИМЯ (то же инициалы)
- //
- //(во всех схемах могут также присутствовать идентифицирующие признаки)
- //
- String ST1, ST2, ST2_1, AFN_DAT;
- Int32 i;
- R = " SELECT AFLINKID FROM " + BAZA + "..DATAEXT "
- + " WHERE IDDATA=" + DIDDATA + " AND MNFIELD=" + MET.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- DataSet ds731 = new DataSet();
- Int32 K73 = da.Fill(ds731, "list731");
- if (K73 > 0) // Есть ссылка на AF
- {
- Int32 IDAF = Int32.Parse(ds731.Tables["list731"].Rows[0][0].ToString()); // IDAF
- AFN_DAT = ""; // Даты жизни
- R = " SELECT TOP(1) PLAIN FROM " + BAZA + "..AFNAMESVAR "
- + " WHERE IDAF=" + IDAF + " AND [STATUS]=1";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- DataSet ds732 = new DataSet();
- Int32 K732 = da.Fill(ds732, "list732");
- if (K732 > 0) // Есть предпочтительный вариант
- {
- Inst = ds732.Tables["list732"].Rows[0][0].ToString();
- // Обинье,Теодор Агриппа д' (1552-1630)
- // Andrew,Robert (1926- ) (подлинное имя)
- while ((l = Inst.IndexOf('(')) != -1) // Годы жизни,титул или род деятельности
- {
- ST2 = Inst.Substring(l + 1); // годы жизни,титул или род деятельности
- i = ST2.IndexOf(")");
- ST2 = ST2.Substring(0, i); // Внутри ()
- Inst = Inst.Remove(l, i + 1); // Удаление внутри () вместе с ()
- while ((l = ST2.IndexOf(';')) != -1)
- {
- // Basil (Krivocheine; архиепископ)
- // Василий (Кривошеин; 1900-1985)
- ST2_1 = ST2.Substring(0, l - 1); // До ;
- ST2 = ST2.Substring(l + 1); // Остаток
- if (ST2.StartsWith(" ") == true) ST2 = ST2.Substring(1);
- i = testAFNAME(ST2_1);
- if (i == 1)
- {
- AFN_DAT = ST2_1;
- goto MAFN;
- }
- } // цикл по ;
- // Losita,Angelo Maria (подлинное имя)
- // Akihito (император Японии)
- // Эшбери, Джон (1927-)
- // Athenagoras (архиепископ; 1912- )
- // Эсхил (ок. 525-456 до н.э.)
- // Bayley,John ( -1869)
- i = testAFNAME(ST2);
- if (i == 1)
- {
- AFN_DAT = ST2;
- goto MAFN;
- }
- } // цикл по () в AFNAMESVAR - Годы жизни,титул или род деятельности
- // В () нет дат жизни
- R = " SELECT PLAIN FROM " + BAZA + "..AFNAMESDATA "
- + " WHERE IDAF=" + IDAF + " AND IDFIELD=6"; // Годы жизни
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- DataSet ds737 = new DataSet();
- Int32 K737 = da.Fill(ds737, "list737");
- if (K737 != 0) //
- {
- AFN_DAT = ds737.Tables["list737"].Rows[0][0].ToString();
- }
- MAFN: ;
- l = Inst.IndexOf(',');
- if (l != -1)
- {
- ST1 = Inst.Substring(l + 1); // Инициалы
- ST1 = ST1.Replace(")", "");
- Inst = Inst.Remove(l); // Фамилия
- }
- else ST1 = "";
- R = " SELECT ID FROM BJRUSMARC..RUSM "
- + " WHERE IDBLOCK=" + DIDDATA.ToString() + " AND MET=" + MET.ToString()
- + " AND IDENT='a' AND POL='" + Inst + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- DataSet ds733 = new DataSet();
- Int32 K733 = da.Fill(ds733);
- if (K733 == 0)
- { // Добавление фамилии
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",' ','1','a','" + Inst + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- if (ST1.Length > 0)
- {
- if (ST1.IndexOf('.') != -1)
- { // Инициалы
- R = " SELECT ID FROM BJRUSMARC..RUSM "
- + " WHERE IDBLOCK=" + DIDDATA.ToString() + " AND MET=" + MET.ToString()
- + " AND IDENT='b' AND POL='" + ST1 + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- DataSet ds734 = new DataSet();
- Int32 K734 = da.Fill(ds734);
- if (K734 == 0)
- {
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ","
- + MET.ToString() + ",' ','1','b','" + ST1 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- }
- else
- { // Расширение инициалов
- R = " SELECT ID FROM BJRUSMARC..RUSM "
- + " WHERE IDBLOCK=" + DIDDATA.ToString() + " AND MET=" + MET.ToString()
- + " AND IDENT='g' AND POL='" + ST1 + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- DataSet ds735 = new DataSet();
- Int32 K735 = da.Fill(ds735);
- if (K735 == 0)
- { // Имя лица как предмет
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
- + ",'g','" + ST1 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- } // ST1 // Есть предпочтительный вариант
- if (AFN_DAT.Length > 0)
- { // Даты
- R = " SELECT ID FROM BJRUSMARC..RUSM "
- + " WHERE IDBLOCK=" + DIDDATA.ToString() + " AND MET=" + MET.ToString()
- + " AND IDENT='f' AND POL='" + AFN_DAT + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- DataSet ds736 = new DataSet();
- Int32 K736 = da.Fill(ds736);
- if (K736 == 0)
- {
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
- + ",'f','" + AFN_DAT + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
- + ",'2','VGBIL') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- } // Даты
- }
- }
- //-- =============================================
- //-- Description: testgodi - Проверка на годы жизхни
- //-- =============================================
- private Int32 testAFNAME (String ST)
- {
- String R;
- // Athenagoras (1912- )
- // Эсхил (ок. 525-456 до н.э.)
- // Bayley,John ( -1869)
- // Евсеева,Л.М. (ред.-сост.)
- // Reisner,Gavriel (Ben-Ephraim)
- // Платон (428 или 427 до н.э. -348 или 347 до н.э.)
- // Порфирий (232/233-ок.305)
- // Алипий (Кастальский-Бороздин; архимандрит)
- // Фрэг Самир (Ибн Аш-Шааты)
- if (ST.IndexOf("до н.э.") != -1) return 1;
- if (ST.StartsWith("ок.") == true) return 1;
- R = ST.Replace("ок.","");
- if (R.IndexOfAny("0123456789IVX".ToCharArray()) != -1) return 1;
- //K = null;
- R = " SELECT PLAIN "
- + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
- + " WHERE P.IDDATA= " + DIDDATA.ToString() + " AND MNFIELD=710 AND MSFIELD='$9' ";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- Int32 KK = da.Fill(ds, "list0"); // Характеристика организации - врем. или пост.
- if (KK > 0) return 2;
- return 0;
- }
- //
- // -- =============================================
- //-- Description: Вид обработки = 710 - Организация
- //-- =============================================
- private void OBR710(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
- String IND2, String IDENT, String DSORT)
- {
- String NAME, C, POL, T1, VID, S;
- Int32 IDAF, KK, KK1, KK2, KK3;
- //--710 НАИМЕНОВАНИЕ ОРГАНИЗАЦИИ - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ
- //--Поле содержит наименование организации, для которой определен
- //-- статус первичной ответственности по отношению к каталогизируемому
- //-- документу, в форме точки доступа. Поле используется в случае,
- //-- если основной точкой доступа в записи является заголовок,
- //-- содержащий наименование организации.
- //-- Обязательное, если должна быть создана основная точка доступа
- //-- на наименование организации, для которой определен статус
- //-- первичной ответственности.
- //-- Поле не может присутствовать в записи, где есть поле 700 ИМЯ
- //-- ЛИЦА - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ или поле 720 - РОДОВОЕ ИМЯ
- //-- - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ, так как запись может иметь только
- //-- одну точку доступа с первичной ответственностью.
- //-- Не повторяется.
- //--
- //-- Индикатор 1: Определяет постоянный или временный характер
- //-- организации
- //-- 0 - Постоянная организация
- //-- 1 - Временная организация
- //-- Если исходный формат не делает различия между постоянными
- //-- и временными организациями, то в позиции индикатора проставляется
- //-- символ-заполнитель.
- //-- Если наименование организации вводится как подразделение
- //-- вышестоящей организации, значение первого индикатора
- //-- определяется типом вышестоящей организации.
- //--
- //-- Индикатор 2: Определяет способ ввода наименования организации
- //-- 0 - Наименование в инверсированной форме
- //-- Инверсированная форма может использоваться, когда наименование
- //-- организации (постоянной или временной) начинается с инициала
- //-- или личного имени, относящихся к имени лица.
- //-- 1 - Наименование, введенное под юрисдикцией
- //-- Используется для наименований организаций, относящихся к правительству или юрисдикции, записываемых под наименованием их местонахождения.
- //-- 2 - Наименование в прямой форме
- //-- Используется для всех других видов наименований организаций.
- //-- $a Начальный элемент ввода
- //-- Часть наименования, используемая как начальный элемент ввода.
- //-- Если поле 710 приводится в записи, то по подполю $a
- //-- определяется положение записи в упорядоченных списках.
- //-- Обязательное, если поле 710 присутствует в записи.
- //-- Не повторяется.
- //-- $b Структурное подразделение
- //-- Часть наименования организации, содержащая наименование
- //-- подведомственной организации или структурного подразделения
- //-- при иерархической структуре наименования организации. А
- //-- также часть наименования организации, следующая после
- //-- названия юрисдикции, в заголовках под юрисдикцией.
- //-- Обязательное, если имеются доступные данные.
- //-- Повторяется для каждого последующего иерархического уровня.
- //-- $c Идентифицирующий признак
- //-- Дополнение к наименованию или уточнение, за исключением
- //-- порядкового номера, даты и места проведения временной
- //-- организации. Может включать: географические названия, даты,
- //-- номера.
- //-- Обязательное, если имеются доступные данные.
- //-- Повторяется.
- //-- $d Порядковый номер временной организации и / или порядковый
- //-- номер ее части
- //-- Указывается арабскими цифрами без наращения окончания.
- //-- Обязательное, если имеются доступные данные.
- //-- Не повторяется.
- //-- $e Место проведения временной организации
- //-- Может представлять собой название города или любой др.
- //-- местности, где проходила временная организация, а также
- //-- название страны.
- //-- Обязательное, если имеются доступные данные.
- //-- Не повторяется.
- //-- $f Дата проведения временной организации
- //-- Указывается арабскими цифрами без наращения окончания.
- //-- Обязательное, если имеются доступные данные.
- //-- Не повторяется.
- //-- $g Инверсированный элемент
- //-- Часть наименования организации, записанного в инверсированной
- //-- форме, перенесенная с начала наименования (инициалы или имя
- //-- и отчество, записанные после фамилии).
- //-- Обязательное, если имеются доступные данные.
- //-- Не повторяется.
- //-- $h Часть наименования, отличная от начального элемента ввода
- //-- и инверсированного элемента
- //-- В инверсированном заголовке - часть наименования, следующая
- //-- за инверсией.
- //-- Обязательное, если имеются доступные данные.
- //-- Не повторяется.
- //-- $p Местонахождение
- //-- Местонахождение или адрес организации.
- //-- Факультативное.
- //-- Не повторяется.
- //-- $3 Номер авторитетной / нормативной записи
- //-- Контрольный номер авторитетной / нормативной записи для
- //-- заголовка. Подполе предназначается для использования в рамках
- //-- Российского коммуникативного формата представления авторитетных
- //-- / нормативных записей.
- //-- Обязательное, при условии существования авторитетной / нормативной
- //-- записи.
- //-- Не повторяется.
- //-- $4 Код отношения
- //-- Код, используемый для указания взаимосвязи между организацией,
- //-- указанной в поле, и каталогизируемым документом.
- //-- Обязательное, если организация, указанная в поле, не является
- //-- автором документа (т.е. отсутствие подполя $4 определяет, что
- //-- организация, указанная в поле, является автором).
- //-- Повторяется (аналогично 70- полям).
- VID = " ";
- R = " SELECT PLAIN "
- + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
- + " WHERE P.IDDATA= " + DIDDATA.ToString() + " AND MNFIELD=710 AND MSFIELD='$9' ";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK = da.Fill(ds, "list0");
- VID = ds.Tables["list0"].Rows[0][0].ToString();
- if (VID.Substring(0, 7) == "Постоян")
- { VID = "0"; }
- else
- {
- if (VID.Substring(0, 6) == "Времен")
- { VID = "1"; }
- }
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ","
- + MET.ToString() + ",'" + VID + "','1','a','" + DSORT + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- R = " SELECT IDAF FROM " + BAZA + "..AFORGSVAR WHERE PLAIN='" + DSORT + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK = da.Fill(ds, "list0");
- if (KK > 0) // Есть авторитетная запись
- {
- IDAF = Int32.Parse(ds.Tables["list0"].Rows[0][0].ToString());
- R = " SELECT IDFIELD,PLAIN FROM " + BAZA + "..AFORGSDATA "
- + " WHERE IDAF= " + IDAF.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK2 = da.Fill(ds, "list0");
- if (KK2 > 0)
- {
- for (int count = 0; count < KK2; count++)
- {
- S = ds.Tables["list0"].Rows[count][0].ToString();
- POL = ds.Tables["list0"].Rows[count][1].ToString();
- R = " SELECT [NAME] FROM " + BAZA + "..AFORGSFIELDS "
- + " WHERE ID= " + S + " AND LEFT([NAME],5) <> 'Дата ' ";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK3 = da.Fill(ds, "list0");
- if (KK3 > 0)
- {
- NAME = ds.Tables["list0"].Rows[0][0].ToString();
- C = ((NAME == "Адрес") ? "p" : "c");
- }
- else C = "c";
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",'" + VID + "','1','" + C + "','" + POL + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- } // END -- WHILE
- // -- 7003 Номер авторитетной / нормативной записи
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ", '" + VID + "','1','3','" + IDAF.ToString() + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // // Есть авторитетная запись
- // Проверка наличия в BJ ссылки на код роли
- R = " SELECT PLAIN "
- + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
- + " WHERE P.IDDATA= " + DIDDATA.ToString() + " AND MSFIELD= '$4' ";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK2 = da.Fill(ds, "list0");
- if (KK2 == 0)
- {
- if (MET != 710)
- {
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",' ','1','4','340')"; // Редактор
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- } // MET != 710 и роль не указана. Подразумевается Автор
- }
- else // есть $4 - роль
- {
- T1 = ds.Tables["list0"].Rows[0][0].ToString();
- R = " SELECT KOD FROM BJRUSMARC..ROLI R "
- + " LEFT JOIN "+BAZA+"..LIST_3 L3 ON L3.NAME=R.NAME "
- + " WHERE SHORTNAME= '" + T1 + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK1 = da.Fill(ds, "list0");
- if (KK1 == 0)
- {
- if (MET != 710)
- {
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",' ','1','4','340')"; // Редактор
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- else // есть код роли
- {
- POL = ds.Tables["list0"].Rows[0][0].ToString();
- R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
- + ",' ','1','4','" + POL + "')";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- } // OBR710 - Организация
- //
- // =================================================================
- //-- Description: Слияние подполей РУСМАРКа - RUSM -> RUSM2
- //-- =============================================
- private void MERGERUSM()
- {
- //-- Слияние подполей в поле
- String Inst, IND1, IND2, IDENT, POL;
- Int16 MET;
- Int32 IDB, IDM, KK, KK2, KK3;
- da = new SqlDataAdapter();
- String R = "USE BJRUSMARC; "
- + " IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[RUSM2]') AND type in (N'U')) "
- + " DROP TABLE [dbo].[RUSM2] ;"
- + " SET ANSI_PADDING ON; "
- + " CREATE TABLE [RUSM2]([ID] [int] IDENTITY(1,1) NOT NULL, "
- + " [IDMAIN] [int] NULL, "
- + " [IDBLOCK] [int] NULL, "
- + " [MET] [smallint] NULL, "
- + " [IND1] [char](1) NULL, "
- + " [IND2] [char](1) NULL, "
- + " [IDENT] [char](1) NULL, "
- + " [POL] [nvarchar](3500) NULL "
- + " ) ON [PRIMARY];"
- + " SET ANSI_PADDING OFF"
- + " CREATE NONCLUSTERED INDEX [IX_RUSM2_ALL] ON [dbo].[RUSM2] "
- + " ( [IDMAIN] ASC, [IDBLOCK] ASC ,[MET] ASC ,[IND1] ASC ,[IND2] ASC"
- + " )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,"
- + " SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,"
- + " ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON"
- + " ) ON [PRIMARY] ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- cnt = command.ExecuteNonQuery();
- con.Close();
- R = " SELECT IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL "
- + " FROM BJRUSMARC..RUSM "
- + " ORDER BY IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT ";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds = new DataSet();
- KK = da.Fill(ds, "listMER");
- if (KK > 0)
- {
- for (int count = 0; count < KK; count++)
- {
- IDM = Int32.Parse(ds.Tables["listMER"].Rows[count][0].ToString());
- IDB = Int32.Parse(ds.Tables["listMER"].Rows[count][1].ToString());
- MET = Int16.Parse(ds.Tables["listMER"].Rows[count][2].ToString());
- IND1 = ds.Tables["listMER"].Rows[count][3].ToString();
- IND2 = ds.Tables["listMER"].Rows[count][4].ToString();
- IDENT = ds.Tables["listMER"].Rows[count][5].ToString();
- POL = ds.Tables["listMER"].Rows[count][6].ToString();
- //if (MET == 200 && IDENT == "b" && POL == "Бумага")
- // continue;
- if ((MET == 300) || (MET == 606) || (MET == 675))
- {
- //-- Подполя выводятся отдельными полями
- Inst = IND1 + IND2 + (char)31+ IDENT + POL;
- S675 = Inst.Replace("'", "'+char(39)+'");
- R = " INSERT INTO BJRUSMARC..RUSM2 (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM + "," + IDB + " ," + MET + ",'"
- + IND1 + "','" + IND2 + "','" + IDENT + "','" + S675 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- else
- {
- if (MET == 210 || MET == 200 || MET == 102)
- {
- R = " SELECT TOP(1) POL,ID FROM BJRUSMARC..RUSM2 "
- + " WHERE IDMAIN = " + IDM.ToString() + "AND MET= " + MET.ToString();
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds2 = new DataSet();
- KK2 = da.Fill(ds2, "list");
- if (KK2 == 0)
- { // Добавление поля
- Inst = IND1 + IND2 + (char)31 + IDENT + POL;
- S675 = Inst.Replace("'", "'+char(39)+'");
- R = " INSERT INTO BJRUSMARC..RUSM2 "
- + "(IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + IDB.ToString()
- + "," + MET.ToString() + ",'" + IND1 + "','" + IND2
- + "','" + IDENT + "','" + S675 + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- else // ЕСТЬ УЖЕ
- { // Добавление подполя
- IDB = Int32.Parse(ds2.Tables["list"].Rows[0][1].ToString());
- Inst = ds2.Tables["list"].Rows[0][0].ToString(); // POL
- Inst += (char)31 + IDENT + POL;
- R = " UPDATE BJRUSMARC..RUSM2 "
- + " SET POL = '" + Inst + "' "
- + " WHERE ID= " + IDB.ToString();
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- } //MET==210 || MET==200 || MET==102
- else
- {
- R = " SELECT POL "
- + " FROM BJRUSMARC..RUSM2 "
- + " WHERE IDMAIN=" + IDM.ToString() + " AND IDBLOCK=" + IDB.ToString()
- + " AND MET=" + MET.ToString() + " AND IND1='" + IND1 + "' AND IND2='" + IND2 + "'";
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = R;
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- ds3 = new DataSet();
- KK3 = da.Fill(ds3, "list3");
- if (KK3 == 0)
- { // Добавление поля
- Inst = (MET<10) ? POL : IND1 + IND2 + (char)31 + IDENT + POL;
- R = " INSERT INTO BJRUSMARC..RUSM2 (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
- + " VALUES (" + IDM.ToString() + "," + IDB.ToString() + ","
- + MET.ToString() + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + Inst + "') ";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- else
- { // Добавление подполя
- Inst = ds3.Tables["list3"].Rows[0][0].ToString();
- Inst += (char)31 + IDENT + POL;
- R = " UPDATE BJRUSMARC..RUSM2 SET POL = '" + Inst + "'"
- + " WHERE IDMAIN= " + IDM.ToString() + "AND IDBLOCK=" + IDB.ToString()
- + " AND MET=" + MET.ToString() + " AND IND1='" + IND1 + "' AND IND2='" + IND2
- + "'";
- command = new SqlCommand(R, con);
- con.Open();
- command.CommandTimeout = 1200;
- command.ExecuteNonQuery();
- con.Close();
- }
- }
- } // не 300
- } // for
- } // RUSM не пуста
- } // MERGE
- // ------------------------------------------------------
- private Byte[] SaveZap(Int32 IDM, String Fout)
- {
- String sprav, rsp, ind1, ind2, ident;
- Int32 KSZ, met, AllbyteCount, byteCount;
- Byte[] br = new Byte[1]{0x00};
- //CREATE TABLE [dbo].[RUSM2](
- // [ID] [int] IDENTITY(1,1) NOT NULL,
- // [IDMAIN] [int] NULL,
- // [IDBLOCK] [int] NULL,
- // [MET] [smallint] NULL,
- // [IND1] [char](1) NULL,
- // [IND2] [char](1) NULL,
- // [IDENT] [char](1) NULL,
- // [POL] [nvarchar](3500) NULL
- da.SelectCommand = new SqlCommand();
- da.SelectCommand.CommandText = " SELECT ID,IDBLOCK,MET,IND1,IND2,IDENT,POL "
- + " FROM BJRUSMARC..RUSM2 "
- + " WHERE IDMAIN="+IDM.ToString()
- + " ORDER BY IDBLOCK,MET,IND1,IND2,IDENT";
- da.SelectCommand.Connection = con;
- da.SelectCommand.CommandTimeout = 1200;
- DataSet dsZ = new DataSet();
- KSZ = da.Fill(dsZ, "listKSZ");
- if (KSZ>0) {
- rsp = ""; // Сумма длин всех полей
- for (Int32 count = 0; count < KSZ; count++)
- {
- rsp = rsp+dsZ.Tables["listKSZ"].Rows[count]["POL"].ToString() + (char)30;
- }
- UTF8Encoding utf8 = new UTF8Encoding();
- AllbyteCount = utf8.GetByteCount(rsp); // Сумма длин всех полей UTF-8
- sprav = "";
- posbrr = 0;
- mrc = new Byte[AllbyteCount];
- tr = "";
- for (Int32 count = 0; count < KSZ; count++)
- {
- Int32 IDR2 = Int32.Parse(dsZ.Tables["listKSZ"].Rows[count][0].ToString());
- // GetTranslitStr(p980,0);
- Int32 IDB = Int32.Parse(dsZ.Tables["listKSZ"].Rows[count]["IDBLOCK"].ToString());
- met = Int32.Parse(dsZ.Tables["listKSZ"].Rows[count]["MET"].ToString());
- ind1 = dsZ.Tables["listKSZ"].Rows[count]["IND1"].ToString();
- ind2 = dsZ.Tables["listKSZ"].Rows[count]["IND2"].ToString();
- ident = dsZ.Tables["listKSZ"].Rows[count]["IDENT"].ToString();
- tr = dsZ.Tables["listKSZ"].Rows[count]["POL"].ToString() + (char)30;
- //UTF8Encoding utf8 = new UTF8Encoding();
- byteCount = utf8.GetBytes(tr, 0, tr.Length, mrc, posbrr);
- sprav += met.ToString().PadLeft(3, '0') + byteCount.ToString().PadLeft(4, '0');
- sprav += posbrr.ToString().PadLeft(5,'0');
- posbrr += byteCount;
- }
- sprav += (char)30; // Конец поля
- Int32 ls = sprav.Length + 24; // Длина справочника и маркера = базовый адрес
- Int32 lz = ls + AllbyteCount + 1; // Длина записи
- rs = lz.ToString().PadLeft(5,'0') + "nam 22" + ls.ToString().PadLeft(5,'0');
- rs += "3 450 " + sprav;
- br = new Byte[lz]; // Результирующий массив
- // Encode the entire string.
- Int32 L = utf8.GetBytes(rs,0,ls,br,0); // Запись Маркера и Справочника
- utf8.GetBytes(rsp, 0, rsp.Length, br, ls); // Добавление полей
- br[lz-1] = Convert.ToByte((char)29);
- //using (BinaryWriter binWriter =
- //new BinaryWriter(File.Open(FN, FileMode.Append, FileAccess.Write)))
- //{
- // binWriter.Write(br);
- //}
- }
- return br;
- } // End of SaveZap().
- } // End of Cgi class.
- } // End of CgiInCsharp namespace.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement