Advertisement
Infra_HDC

Infra_HDC CGI source

Apr 27th, 2011
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 283.74 KB | None | 0 0
  1. using System;
  2.  
  3. using System.Web;
  4.  
  5. using System.Collections.Specialized;
  6.  
  7. using System.Collections.Generic;
  8.  
  9. using System.Linq;
  10.  
  11. using System.Text;
  12.  
  13. using System.ComponentModel;
  14.  
  15. using System.Data;
  16.  
  17. using System.Drawing;
  18.  
  19. using System.IO;
  20.  
  21. using System.Data.Sql;
  22.  
  23. using System.Data.SqlClient;
  24.  
  25. using System.Data.SqlTypes;
  26.  
  27. using System.Windows.Forms;
  28.  
  29. using Microsoft.Win32;
  30.  
  31.  
  32.  
  33. namespace OPAC2Rusm
  34.  
  35. {
  36.  
  37.     public class BJ2RUSMarc
  38.  
  39.     {
  40.  
  41.         String  BAZA, rs, tr, str, R, Inst, P001;
  42.  
  43.         SqlConnection con;
  44.  
  45.         DataSet ds, ds2, ds3, dsS;
  46.  
  47.         SqlDataAdapter da;
  48.  
  49.         Int32  l;
  50.  
  51.         Byte[] mrc;
  52.  
  53.         int  posbrr;
  54.  
  55.         Int32 DIDDATA;
  56.  
  57.         SqlCommand command;
  58.  
  59.         Int32 L, cnt, KMAIN;
  60.  
  61.         String P102, blok80, S675;
  62.  
  63.         String PREFIX001 = "OPAC_VGBIL";
  64.  
  65.  
  66.  
  67.         public Byte[] start_convert(String IDSession, String FN)
  68.  
  69.         {
  70.  
  71.             try
  72.  
  73.             {
  74.  
  75.                 //str = XmlConnections.GetConnection(@"/Connections/t");//t-VVV,t3-YAA
  76.  
  77.  
  78.  
  79.             }
  80.  
  81.             catch (Exception ex)
  82.  
  83.             {
  84.  
  85.                 Console.Write(ex.Message + "исключение возникло при попытке прочитать строку подключения");
  86.  
  87.  
  88.  
  89.                 //MessageBox.Show(ex.Message + "Программа аварийно завершает работу.");
  90.  
  91.                 throw;
  92.  
  93.             }
  94.  
  95.             try
  96.  
  97.             {
  98.  
  99.                 SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
  100.  
  101.                 builder.DataSource = @"xxx.xxx.x.xx,xxxx";
  102.  
  103.                 builder.UserID = @"xxxxxx";
  104.  
  105.                 builder.Password = @"xxxxxxx";
  106.  
  107.                 builder.PersistSecurityInfo = true;
  108.  
  109.                 builder.InitialCatalog = @"xxxxxxxxxxx";
  110.  
  111.                 Console.Write(builder.ConnectionString);
  112.  
  113.                 //con = new SqlConnection(@builder.ConnectionString);
  114.  
  115.                 con = new SqlConnection();
  116.  
  117.                 con.ConnectionString = "Data Source=xxx.xxx.x.xx,xxxx;Initial Catalog=xxxxx;Persist Security Info=True;User ID=xxxxx;Password=xxxxx;";
  118.  
  119.                 str = con.ConnectionString;
  120.  
  121.                     //builder.ConnectionString;
  122.  
  123.                 //Console.Read();
  124.  
  125.             }
  126.  
  127.             catch (System.ArgumentException ex)
  128.  
  129.             {
  130.  
  131.  
  132.  
  133.                 Console.WriteLine(ex.Message + "исключение возникло при попытке создать подключение. ");
  134.  
  135.                 //Console.WriteLine(ex.InnerException.Message);
  136.  
  137.                 //Console.WriteLine(ex.StackTrace);
  138.  
  139.                 //Console.WriteLine(ex.TargetSite);
  140.  
  141.                 //Console.WriteLine(ex.TypeName);
  142.  
  143.                 //Console.WriteLine(ex.Message);
  144.  
  145.                 ;
  146.  
  147.                 throw;
  148.  
  149.  
  150.  
  151.             }
  152.  
  153.             Int32 K = str.IndexOf(" Catalog=");
  154.  
  155.             String rs = str.Substring(K + 9);
  156.  
  157.             K = rs.IndexOf(";");
  158.  
  159.             BAZA = rs.Remove(K);
  160.  
  161.             da = new SqlDataAdapter();
  162.  
  163.             R = "USE BJRUSMARC; "
  164.  
  165.                 + " DELETE BJRUSMARC..RUSM; DELETE  BJRUSMARC..REZULT";
  166.  
  167.             //  + " IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[RUSM]') AND type in (N'U')) "
  168.  
  169.             //  + " DROP TABLE [dbo].[RUSM] ;"
  170.  
  171.             //  + " SET ANSI_PADDING ON; "
  172.  
  173.             //  + " CREATE TABLE [RUSM2]([ID] [int] IDENTITY(1,1) NOT NULL, "
  174.  
  175.             //  + "   [IDMAIN] [int] NULL, "
  176.  
  177.             //  + "  [IDBLOCK] [int] NULL, "
  178.  
  179.             //  + "  [MET] [smallint] NULL, "
  180.  
  181.             //  + "  [IND1] [char](1) NULL, "
  182.  
  183.             //  + "   [IND2] [char](1) NULL, "
  184.  
  185.             //  + "   [IDENT] [char](1) NULL, "
  186.  
  187.             //  + "   [POL] [nvarchar](3500) NULL "
  188.  
  189.             //  + " ) ON [PRIMARY];"
  190.  
  191.             //  + " SET ANSI_PADDING OFF"
  192.  
  193.             //  + " CREATE NONCLUSTERED INDEX [IX_RUSM2_ALL] ON [dbo].[RUSM2] "
  194.  
  195.             //  + " ( [IDMAIN] ASC, [IDBLOCK] ASC ,[MET] ASC ,[IND1] ASC ,[IND2] ASC"
  196.  
  197.             //  + " )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF,"
  198.  
  199.             //  + "   SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,"
  200.  
  201.             //  + "   ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON"
  202.  
  203.             //  + "       ) ON [PRIMARY] ";
  204.  
  205.  
  206.  
  207.             command = new SqlCommand(R, con);
  208.  
  209.             con.Open();
  210.  
  211.             command.CommandTimeout = 1200;
  212.  
  213.             cnt = command.ExecuteNonQuery();
  214.  
  215.             con.Close();
  216.  
  217. // 581972+
  218.  
  219. //Cedillo Vázquez,Luciano
  220.  
  221. //  ¡Vaaamonos! : Luchas, anécdotas y problemas de los ferrocarrileros / Luciano Cedillo. - Mexico : Ediciones de Cultura Popular, 1979. - 146 p. : 4 f. il., portr.
  222.  
  223. //1. История Мексики • 1911-2006 гг. • Государство 2. История Мексики • Политические партии и движения
  224.  
  225.  
  226.  
  227. // 1063094+
  228.  
  229. //Антоний (Блум, А.Б.; 1914-2003)
  230.  
  231. //    Проповеди и беседы. - Париж, 1976. - 120 с. - Экз. инв. N 2328741 с экслибрисом.
  232.  
  233. //1. Православие • Россия
  234.  
  235.  
  236.  
  237. // 1218017+
  238.  
  239. //           RASC supplement/University of Southern Denmark
  240.  
  241. //           Odense: Syddansk universitetsforlag, - ISSN 1395-7236
  242.  
  243. //    (University of Southern Denmark Studies in Linguistics)    
  244.  
  245. //1. Сторм,Йохан Фредрик Бреда (1836-1920) 2. Языкознание • Биографии языковедов • Дания
  246.  
  247.  
  248.  
  249. // 178252+
  250.  
  251. //Anthony (Bloom, A.B.; 1914-2003)
  252.  
  253. //    "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 с экслибрисом.
  254.  
  255. //1. Православие • Россия
  256.  
  257.  
  258.  
  259. // 581942+
  260.  
  261. //Canela Garayoa,Mercé
  262.  
  263. //    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.
  264.  
  265. //1. Каталанская детская литература
  266.  
  267.  
  268.  
  269. //127230+
  270.  
  271. //Nemoshkalenko,V.V.
  272.  
  273. //    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.
  274.  
  275. //1. Научные учреждения • Россия • История
  276.  
  277.  
  278.  
  279. //1251000+ Том многотомника
  280.  
  281. //Chukovskaya, L.K.
  282.  
  283. //    The Akhmatova journals
  284.  
  285. //    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).  
  286.  
  287. //- Экз. инв. № 2516144 с автограф. - Указ. с.297-310. - ISBN 0-00-216391-8.
  288.  
  289. //1. Ахматова, А.А. (1889-1966) 2. Русское литературоведение • История литературы • 20 в. • Персоналии писателей 3.
  290.  
  291.             Int32[] Iidm = new Int32[] { 1251000, 127230, 581942 };
  292.  
  293.             //da.SelectCommand = new SqlCommand();
  294.  
  295.             //da.SelectCommand.CommandText = " SELECT idbook FROM TECHNOLOG_VVV..USERLIST "
  296.  
  297.             //+ " WHERE session='" + IDSession + "'"; // параметр start_convert
  298.  
  299.             //da.SelectCommand.Connection = con;
  300.  
  301.             //da.SelectCommand.CommandTimeout = 1200;
  302.  
  303.             //ds0 = new DataSet();
  304.  
  305.             //KMAIN = da.Fill(ds0, "listM0");
  306.  
  307.             KMAIN = Iidm.Count();
  308.  
  309.             Byte[] str_out = new Byte[0];
  310.  
  311.             if (KMAIN > 0) // есть IDN для конвертирования и вывода
  312.  
  313.             {
  314.  
  315.                 foreach (Int32 IDM in Iidm)
  316.  
  317.                 {
  318.  
  319.                     //IDM = Int32.Parse(ds0.Tables["listM0"].Rows[countM][0].ToString());
  320.  
  321.                     PBJ2RUSM(IDM); // Создание таблицы RUSM
  322.  
  323.                     if (P102.Length > 0)
  324.  
  325.                     {
  326.  
  327.                         P102 += (char)31 + "2VGBILGEO";
  328.  
  329.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  330.  
  331.                         + " VALUES (" + IDM.ToString() + ",1,"
  332.  
  333.                         + "102,' ',' ','a','" + P102 + "')";
  334.  
  335.                         command = new SqlCommand(R, con);
  336.  
  337.                         con.Open();
  338.  
  339.                         command.CommandTimeout = 1200;
  340.  
  341.                         command.ExecuteNonQuery();
  342.  
  343.                         con.Close();
  344.  
  345.                     }
  346.  
  347.                     MERGERUSM(); // Создание таблицы RUSM2
  348.  
  349.  
  350.  
  351.              Byte[] b_rez = SaveZap(IDM, FN); // Формирование РУСМАРК-записи в виде массива байтов (UTF-8)
  352.  
  353.                     Int32 lrez = b_rez.Count();
  354.  
  355.                     Int32 lstr = str_out.Count();
  356.  
  357.                     Byte[] b_tmp = new Byte[lstr];
  358.  
  359.                     if (lstr > 1)
  360.  
  361.                     {
  362.  
  363.                         for (int i = 0; i < lstr; i++)
  364.  
  365.                         {
  366.  
  367.                             b_tmp[i] = str_out[i];
  368.  
  369.                         }
  370.  
  371.                     }
  372.  
  373.                     str_out = new Byte[lstr + lrez];
  374.  
  375.                     // Формирование строки РУСМАРК и сохранение в таблице REZULT
  376.  
  377.                     if (lstr > 1)
  378.  
  379.                     {
  380.  
  381.                         for (int i = 0; i < lstr; i++)
  382.  
  383.                         {
  384.  
  385.                             str_out[i] = b_tmp[i]; // Копирование
  386.  
  387.                         }
  388.  
  389.                     }
  390.  
  391.                     for (int i = 0; i < lrez; i++)
  392.  
  393.                     {
  394.  
  395.                       str_out[i+lstr] = b_rez[i]; // Добавление полей
  396.  
  397.                     }
  398.  
  399.                 } // цикл по IDM
  400.  
  401.             } // KMAIN > 0
  402.  
  403.             //foreach (Byte b in str_out)
  404.  
  405.             //{
  406.  
  407.             //    MessageBox.Show(b.ToString());
  408.  
  409.             //}
  410.  
  411.             return str_out;
  412.  
  413.         } // start_convert
  414.  
  415.         //-- Description:   Конвертирование BJVVV в RUSMARC
  416.  
  417.         //-- =============================================
  418.  
  419.         public void PBJ2RUSM(Int32 IDM)
  420.  
  421.         {
  422.  
  423.             Int32 DMNF, KK, KK2;
  424.  
  425.             String DMSF, DPPLAIN, IND1, IND2, IDENT;
  426.  
  427.             Int16 VID_OBR, MET;
  428.  
  429.             P102 = "";
  430.  
  431.             //-- Формирование обязательных полей
  432.  
  433.             INITRUSM(IDM);
  434.  
  435.  
  436.  
  437.             R = " SELECT P.IDDATA,MNFIELD,MSFIELD,PLAIN "
  438.  
  439.             + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
  440.  
  441.             + " WHERE P.IDMAIN=" + IDM.ToString() + " ORDER BY IDDATA,MNFIELD,MSFIELD ";
  442.  
  443.             da.SelectCommand = new SqlCommand();
  444.  
  445.             da.SelectCommand.CommandText = R;
  446.  
  447.             da.SelectCommand.Connection = con;
  448.  
  449.             da.SelectCommand.CommandTimeout = 1200;
  450.  
  451.             dsS = new DataSet();
  452.  
  453.             KK = da.Fill(dsS, "listS");
  454.  
  455.             if (KK > 0)
  456.  
  457.             {
  458.  
  459.                 for (int countS = 0; countS < KK; countS++)
  460.  
  461.                 {
  462.  
  463.                     DIDDATA = Int32.Parse(dsS.Tables["listS"].Rows[countS][0].ToString());
  464.  
  465.                     DMNF = Int32.Parse(dsS.Tables["listS"].Rows[countS][1].ToString());
  466.  
  467.                     DMSF = dsS.Tables["listS"].Rows[countS][2].ToString();
  468.  
  469.                     DPPLAIN = dsS.Tables["listS"].Rows[countS][3].ToString();
  470.  
  471.                     DPPLAIN = DPPLAIN.Replace("'","~");
  472.  
  473.                     VID_OBR = -1;
  474.  
  475.                     R = " SELECT  VID_OBR, MET1, IND1, IND2, IDEN1 "
  476.  
  477.                        + " FROM [BJRUSMARC]..BJ2RUSMVVV "
  478.  
  479.                        + " WHERE MNF= " + DMNF + " AND MSF= '" + DMSF + "'";
  480.  
  481.                     da.SelectCommand = new SqlCommand();
  482.  
  483.                     da.SelectCommand.CommandText = R;
  484.  
  485.                     da.SelectCommand.Connection = con;
  486.  
  487.                     da.SelectCommand.CommandTimeout = 1200;
  488.  
  489.                     ds = new DataSet();
  490.  
  491.                     KK2 = da.Fill(ds, "list0");
  492.  
  493.                     if (KK2 == 0) // Неопознанное поле
  494.  
  495.                     {
  496.  
  497.                         MessageBox.Show("!! " + IDM.ToString() + " Неопознанное поле " + DMNF.ToString() + " " + DMSF);
  498.  
  499.                         R = " SELECT  [NAME] FROM " + BAZA + "..FIELDS "
  500.  
  501.                             + " WHERE MNFIELD= " + DMNF.ToString() + " AND MSFIELD= '" + DMSF + "'";
  502.  
  503.                         da.SelectCommand = new SqlCommand();
  504.  
  505.                         da.SelectCommand.CommandText = R;
  506.  
  507.                         da.SelectCommand.Connection = con;
  508.  
  509.                         da.SelectCommand.CommandTimeout = 1200;
  510.  
  511.                         da.SelectCommand.Connection.Open();
  512.  
  513.                         ds = new DataSet();
  514.  
  515.                         KK2 = da.Fill(ds, "list1");
  516.  
  517.                         Inst = ds.Tables["list1"].Rows[0][0].ToString();
  518.  
  519.                         // 830a -- Общее примечание, составленное каталогизатором
  520.  
  521.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  522.  
  523.                            + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",830,' ',' ','a','"
  524.  
  525.                            + Inst + "'+': '+ '" + DPPLAIN + "')";
  526.  
  527.                         command = new SqlCommand(R, con);
  528.  
  529.                         con.Open();
  530.  
  531.                         command.CommandTimeout = 1200;
  532.  
  533.                         command.ExecuteNonQuery();
  534.  
  535.                         con.Close();
  536.  
  537.                         goto M5;
  538.  
  539.                     } // Неопознанное поле
  540.  
  541.  
  542.  
  543.                     VID_OBR = Int16.Parse(ds.Tables["list0"].Rows[0][0].ToString());
  544.  
  545.                     MET = Int16.Parse(ds.Tables["list0"].Rows[0][1].ToString());
  546.  
  547.                     IND1 = ds.Tables["list0"].Rows[0][2].ToString();
  548.  
  549.                     IND2 = ds.Tables["list0"].Rows[0][3].ToString();
  550.  
  551.                     IDENT = ds.Tables["list0"].Rows[0][4].ToString();
  552.  
  553.  
  554.  
  555.                     if (VID_OBR == 0) // Копирование в выходную запись
  556.  
  557.                     {
  558.  
  559. //10    $a  Номер ISBN 0   010 a
  560.  
  561. //10    $b  Уточнения  0   010 b
  562.  
  563. //10    $z  Ошибочный  0   010 z
  564.  
  565. //11    $9  Тираж  0   010 9
  566.  
  567. //11    $a  Номер ISSN 0   011 a
  568.  
  569. //11    $y  Отмененный    1   011 y
  570.  
  571. //11    $z  Ошибочный  0   011 z
  572.  
  573. //200   $a  Основное заглавие документа    0   200 a
  574.  
  575. //200   $b  Основное заглавие произведения того же автора   1   200 a
  576.  
  577. //200   $d  Параллельное основное заглавие  1   200 d
  578.  
  579. //200   $e  Сведения, относящиеся к заглавию    1   200 e
  580.  
  581. //200   $f  Сведения об ответственности    0   200 f
  582.  
  583. //200   $h  Номер части   1   200 h
  584.  
  585. //200   $i  Наименование части 1   200 i
  586.  
  587. //200   $z  Язык параллельного заглавия    1   200 z
  588.  
  589. //205   $a  Сведения об издании    0   205 a
  590.  
  591. //205   $b  Дополнительные сведения об издании   1   205 b
  592.  
  593. //205   $f  Первые сведения об ответственности, относящиеся к изданию 1   205 f
  594.  
  595. //205   $g  Последующие сведения об ответственности, относящиеся к изданию   1   205 g
  596.  
  597. //215   $a  Объём  1   215 a
  598.  
  599. //215   $c  Размер    1   215 d
  600.  
  601. //215   $d  Сопроводительный материал   1   215 e
  602.  
  603. //300   $a  Общие примечания 0   300 a
  604.  
  605. //320   $a  Примечание о библиографии и указателе  0   320 a
  606.  
  607. //326   $a  Примечание о периодичности  0   326 a
  608.  
  609. //327   $a  Примечание о содержании    1   327 a
  610.  
  611. //330   $a  Текст аннотации   0   330 a
  612.  
  613. //500   $3  АФ    0   0   NULL
  614.  
  615. //500   $a  Унифицированное заглавие 0   500 a
  616.  
  617. //501   $3  АФ    0   0   NULL
  618.  
  619. //501   $a  Унифицированное общее заглавие  0   501 a
  620.  
  621. //503   $3  АФ    0   0   NULL
  622.  
  623. //503   $a  Унифицированный заголовок   0   503 a
  624.  
  625. //830   $a  Примечание каталогизатора   0   830 a
  626.  
  627. //921   $a  Носитель    1   200 b
  628.  
  629. //922   $b  Трофей    0   300 a
  630.  
  631. //1000  $a  Оригинал    1   454 1
  632.  
  633. //1000  $b  Перевод  1   453 1
  634.  
  635. //1000  $c  Последующее заглавие произведения    1   442 1
  636.  
  637. //1000  $e  Приложение    1   421 1
  638.  
  639. //2100  $d  Дата издания 0   210 d
  640.  
  641. //2111  $e  Географическое название   1   620 d
  642.  
  643.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  644.  
  645.                          + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  646.  
  647.                          + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + DPPLAIN + "')";
  648.  
  649.                         command = new SqlCommand(R, con);
  650.  
  651.                         con.Open();
  652.  
  653.                         command.CommandTimeout = 1200;
  654.  
  655.                         command.ExecuteNonQuery();
  656.  
  657.                         con.Close();
  658.  
  659.                         goto M5;
  660.  
  661.                     } // VID_OBR = 0 Копирование в выходную запись
  662.  
  663.  
  664.  
  665.                     if (VID_OBR == 1) // Вид издания
  666.  
  667.                     {
  668.  
  669.                         OBR1(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
  670.  
  671.                         goto M5;
  672.  
  673.                     }   // VID_OBR == 1) // Вид издания
  674.  
  675.  
  676.  
  677.                     if (VID_OBR == 3) // Иллюстрации
  678.  
  679.                     {
  680.  
  681.                         OBR3(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
  682.  
  683.                         goto M5;
  684.  
  685.                     }  // Иллюстрации
  686.  
  687.  
  688.  
  689.                     if (VID_OBR == 6) // 700,701,702
  690.  
  691.                     {
  692.  
  693.                         OBR6(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
  694.  
  695.                         goto M5;
  696.  
  697.                     } // VID_OBR == 6  -- 700,701,702
  698.  
  699.  
  700.  
  701.                     if (VID_OBR == 9) // Сводный уровень - Заглавие, номер в серии
  702.  
  703.                     {
  704.  
  705.                         OBR9(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
  706.  
  707.                         goto M5;
  708.  
  709.                     }  // Сводный уровень - Заглавие, номер в серии
  710.  
  711.  
  712.  
  713.                     if (VID_OBR == 101) // Язык публикации
  714.  
  715.                     {
  716.  
  717.                         OBR101(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
  718.  
  719.                         goto M5;
  720.  
  721.                     }  // VID_OBR == 101 --- Язык публикации
  722.  
  723.  
  724.  
  725.                     if (VID_OBR == 102) // Место издания
  726.  
  727.                     {
  728.  
  729.                         OBR102(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
  730.  
  731.                         goto M5;
  732.  
  733.                     }  // VID_OBR == 102  ----- Место издания
  734.  
  735.  
  736.  
  737.                     if (VID_OBR == 200) // Сведения об ответственности
  738.  
  739.                     {
  740.  
  741.                         OBR200(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
  742.  
  743.                         goto M5;
  744.  
  745.                     }  // VID_OBR == 200  ----- Сведения об ответственности
  746.  
  747.  
  748.  
  749.                     if (VID_OBR == 606) // ПР
  750.  
  751.                     {
  752.  
  753.                         OBR606(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
  754.  
  755.                         goto M5;
  756.  
  757.                     }  // VID_OBR == 606 ----- ПР
  758.  
  759.  
  760.  
  761.                     if (VID_OBR == 517) // Другое заглавие
  762.  
  763.                     {
  764.  
  765.                         OBR517(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
  766.  
  767.                         goto M5;
  768.  
  769.                     } // VID_OBR == 517 --- Другое заглавие
  770.  
  771.                     if (VID_OBR == 710) // Наименование организации  - 710,711,712
  772.  
  773.                     {
  774.  
  775.                         OBR710(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
  776.  
  777.                         goto M5;
  778.  
  779.                     }  // VID_OBR == 710   --- Наименование организации  - 710,711,712
  780.  
  781.  
  782.  
  783.  
  784.  
  785.                     //if (VID_OBR == 852) // Наименование фонда
  786.  
  787.                     //{
  788.  
  789.                     //    OBR852(IDM, DIDDATA, MET, IND1, IND2, IDENT, DPPLAIN);
  790.  
  791.                     //    goto M5;
  792.  
  793.                     //} // VID_OBR == 852 --- Наименование фонда
  794.  
  795.  
  796.  
  797.                 M5: ;
  798.  
  799.                 } // FOR
  800.  
  801.             } // KK>0 - Есть поля
  802.  
  803.         }
  804.  
  805.         //
  806.  
  807. //-- =============================================
  808.  
  809. //-- Description:   Инициализация РУСМАРК - записи
  810.  
  811. //-- =============================================
  812.  
  813.         private void INITRUSM(Int32 IDM2)
  814.  
  815. // 2011.04.11
  816.  
  817.         {
  818.  
  819.             Int32 IDM;
  820.  
  821.             String  P005;
  822.  
  823.             Int16  IDLEVEL;
  824.  
  825.             IDM = IDM2;
  826.  
  827.             INITMARKER(IDM, out IDLEVEL);
  828.  
  829.             //-- Идентификатор записи
  830.  
  831.             P001 = PREFIX001 + IDM.ToString().PadLeft(8, '0');
  832.  
  833.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  834.  
  835.              + " VALUES (" + IDM.ToString() + ",0,001,0,0,0,'" + P001 + "')";
  836.  
  837.             command = new SqlCommand(R, con);
  838.  
  839.             con.Open();
  840.  
  841.             command.CommandTimeout = 1200;
  842.  
  843.             command.ExecuteNonQuery();
  844.  
  845.             con.Close();
  846.  
  847.             //-- Идентификатор версии/
  848.  
  849.             //            Console.WriteLine(date1.ToString("s"));
  850.  
  851.             //            Displays 2008-04-10T06:30:00                      
  852.  
  853.             P005 = DateTime.Now.ToString("s");
  854.  
  855.             P005 = P005.Replace("-", "");
  856.  
  857.             P005 = P005.Replace("T", "");
  858.  
  859.             P005 = P005.Replace(":", "");
  860.  
  861.             P005 = P005 += ".0";
  862.  
  863.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  864.  
  865.              + " VALUES (" + IDM.ToString() + ",0,005,0,0,0,'" + P005 + "')";
  866.  
  867.             command = new SqlCommand(R, con);
  868.  
  869.             con.Open();
  870.  
  871.             command.CommandTimeout = 1200;
  872.  
  873.             command.ExecuteNonQuery();
  874.  
  875.             con.Close();
  876.  
  877.             //-- Инициализация поля 100
  878.  
  879.             //-- 100  ДАННЫЕ ОБЩЕЙ ОБРАБОТКИ
  880.  
  881.             //--   Поле содержит кодированные данные фиксированной длины, применимые к записям о документах, представленных на любых носителях.
  882.  
  883.             //--   Обязательное.  Не повторяется.
  884.  
  885.             //--   Индикатор 1: # (не определен)
  886.  
  887.             //--   Индикатор 2: # (не определен)
  888.  
  889.             INITP100(IDM, IDLEVEL);
  890.  
  891.             //-- IF @IDLEVEL = 1 OR @IDLEVEL = -100 OR @IDLEVEL = -2 OR @IDLEVEL = 2
  892.  
  893.             //--       OR @IDLEVEL = 3 OR @IDLEVEL = -4 OR @IDLEVEL = 4
  894.  
  895.             //--        OR @IDLEVEL = 5   begin
  896.  
  897.             if (IDLEVEL == 1 || IDLEVEL == -100 || IDLEVEL == 1 || IDLEVEL == 1 || IDLEVEL == 1 || IDLEVEL == 1)
  898.  
  899.             {
  900.  
  901.                 //---- Инициализация поля 105
  902.  
  903.                 //---- 105  ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ТЕКСТОВЫЕ МАТЕРИАЛЫ, МОНОГРАФИЧЕСКИЕ
  904.  
  905.                 //----      Поле содержит кодированные данные, относящиеся к монографическим текстовым изданиям.
  906.  
  907.                 //----      Примечание: для описания монографических серий используется поле 110.
  908.  
  909.                 //----  Обязательное для печатных монографических текстовых документов (например, для книг).
  910.  
  911.                 //----  Не повторяется.
  912.  
  913.                 //----  Индикатор 1: # (не определен)
  914.  
  915.                 //----  Индикатор 2: # (не определен)
  916.  
  917.                 INITP105(IDM);
  918.  
  919.                 //-- end -- IDLEVEL  - Монография
  920.  
  921.             }
  922.  
  923.             else //-- Сводный уровень Серия, Подсерия,Продолжающиеся издания
  924.  
  925.             {
  926.  
  927.                 //---- Инициализация поля 110
  928.  
  929.                 //--  --EXECUTE INITP110 @IDM, @IDLEVEL - Удалено по требованию Селицкой 20091030
  930.  
  931.                 INITP110(IDM, IDLEVEL);
  932.  
  933.                 //---- 110 ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ПРОДОЛЖАЮЩИЕСЯ РЕСУРСЫ
  934.  
  935.                 //----      Поле содержит кодированные данные, относящиеся к продолжающимся ресурсам, включая монографические серии, каталогизируемые как сериальные документы, а не как самостоятельные монографии.
  936.  
  937.                 //----      Обязательное в записи высшего уровня, составляемой для описания продолжающегося ресурса в целом.
  938.  
  939.                 //----      Не повторяется.
  940.  
  941.                 //----      Примечание: Указание на содержание отдельных выпусков продолжающегося ресурса может (но не является обязательным) размещаться в позициях 110$a/4-6 записи уровня физической единицы, описывающей отдельный выпуск. Допускается также использование в записи уровня физической единицы позиции 110$a/7, если отдельный/отдельные выпуски содержат материалы конференции, однако, отражение этих материалов - не главная функция продолжающегося ресурса в целом (позиция $a/7 записи высшего уровня содержит 0).
  942.  
  943.                 //----  Индикатор 1: # (не определен)
  944.  
  945.                 //----  Индикатор 2: # (не определен)
  946.  
  947.                 //-- END -- IDLEVEL <0  -Сериальное издание или сериальное издание
  948.  
  949.             }
  950.  
  951.             //-- Формирование обязательных 801-ых полей
  952.  
  953.             //-- 801  ИСТОЧНИК ЗАПИСИ    
  954.  
  955.             //--        Поле содержит указание на источники записи, к котор  ым от   носятся:
  956.  
  957.             //--            организация, создающая данные; организация, преобразующая данные в
  958.  
  959.             //--            машиночитаемую форму; организация, модифицирующая первоначальные записи /
  960.  
  961.             //--            данные; организация, распространяющая записи.       
  962.  
  963.             //--        Обязательное.      
  964.  
  965.             //--        Повторяется для каждой из перечисленных функций, вы полня  емых той или иной
  966.  
  967.             //--            организацией.      
  968.  
  969.             //--        Индикатор 1: # (не определен)      
  970.  
  971.             //--        Индикатор 2: Индикатор функции    
  972.  
  973.             //--            Этот индикатор определяет функцию, выполняемую ор    ганиз  ацией, название
  974.  
  975.             //--            которой помещено в подполе $b.      
  976.  
  977.             //--            0 - Агентство, производящее первоначальную катало  гизац  ию
  978.  
  979.             //--                Организация, подготовившая данные для записи.       
  980.  
  981.             //--            1 - Агентство, преобразующее данные    
  982.  
  983.             //--                Организация, конвертировавшая данные в машиночита   емую    форму
  984.  
  985.             //--            2 - Агентство, вносящее изменения в запись    
  986.  
  987.             //--                Организация, модифицировавшая содержание записи, либо    ее структуру.
  988.  
  989.             //--            3 - Агентство, распространяющее запись      
  990.  
  991.             //--                Организация, распространявшая запись      
  992.  
  993.             //--
  994.  
  995.             //--        В машиночитаемой записи должно быть не менее двух вхождений поля 801, т.к.
  996.  
  997.             //--            для того чтобы данные привести в машиночитаемую форму, их надо
  998.  
  999.             //--            подготовить. Т.о. у первого вхождения поля 801 индикатор = 0, а у второго = 1.     
  1000.  
  1001.             OBR98(IDM); // ФОРМИРОВАНИЕ ПОЛЯ 801 - Источник записи
  1002.  
  1003.             P102 = "";  // Коды страны и места издания
  1004.  
  1005.             blok80 = "";
  1006.  
  1007.             return;
  1008.  
  1009.         }
  1010.  
  1011.         //
  1012.  
  1013.         //-- =============================================
  1014.  
  1015.         //-- Description:   Инициализвция МАРКЕРа
  1016.  
  1017.         //-- =============================================
  1018.  
  1019.         public void INITMARKER(Int32 IDM, out Int16 IDLEVEL)
  1020.  
  1021.         {
  1022.  
  1023.             Int32 KK, KK2;
  1024.  
  1025.             String C, MARKER;
  1026.  
  1027.             //-- МАРКЕР записи
  1028.  
  1029.             //--0-4 Длина записи
  1030.  
  1031.             //-- Пять десятичных цифр, при необходимости выравниваемых вправо начальными
  1032.  
  1033.             //--  нулями, указывают количество символов в записи, включая маркер записи,
  1034.  
  1035.             //--  справочник и переменные поля. Вычисляется автоматически, когда запись
  1036.  
  1037.             //--  окончательно сформирована для обмена.
  1038.  
  1039.             //--5 Статус записи
  1040.  
  1041.             //--  n = новая запись
  1042.  
  1043.             //--6 Тип записи
  1044.  
  1045.             //--  а = текстовые материалы, кроме рукописных. В том числе печатные
  1046.  
  1047.             //--    текстовые материалы, микроформы печатных текстовых материалов, а
  1048.  
  1049.             //--    также электронные текстовые материалы.
  1050.  
  1051.             //--  b = текстовые материалы, рукописные. В том числе микроформы рукописных
  1052.  
  1053.             //--    текстовых материалов и электронные рукописные текстовые материалы.
  1054.  
  1055.             //--  с = музыкальные партитуры, кроме рукописных
  1056.  
  1057.             //--  d = музыкальные партитуры, рукописные
  1058.  
  1059.             //--  е = картографические материалы, кроме рукописных
  1060.  
  1061.             //--  f = картографические материалы, рукописные
  1062.  
  1063.             //--  g = проекционные и видеоматериалы (кинофильмы, диафильмы, слайды,
  1064.  
  1065.             //--    пленочные материалы, видеозаписи). Включает цифровые видеоматериалы
  1066.  
  1067.             //--   (не используется для не-проекционной двухмерной графики: см. ниже
  1068.  
  1069.             //--    код "k").
  1070.  
  1071.             //--  i = звукозаписи, немузыкальные
  1072.  
  1073.             //--  j = звукозаписи, музыкальные
  1074.  
  1075.             //--  k = двухмерная графика (иллюстрации, чертежи и т. п.)
  1076.  
  1077.             //--  l = электронный ресурс
  1078.  
  1079.             //--  m = информация на нескольких носителях (например, книга с приложением
  1080.  
  1081.             //--    программ на дискете, CD и т. п.)
  1082.  
  1083.             //--  r = трехмерные искусственные и естественные объекты
  1084.  
  1085.             //--7 Библиографический уровень (позиция символа 7)
  1086.  
  1087.             //--  а = аналитический - документ, является частью физической единицы
  1088.  
  1089.             //--    (составная часть)
  1090.  
  1091.             //--  i = интегрируемый ресурс – ресурс, изменяющийся посредством обновлений (изъятия, вставки или замещения отдельных его частей), которые не публикуются отдельно, а интегрируются в новое единое целое
  1092.  
  1093.             //--  m = монографический - документ, представляет собой физически единое
  1094.  
  1095.             //--    целое или издается в заранее определенном количестве частей
  1096.  
  1097.             //--    Например: отдельная книга, многотомное издание в целом, том
  1098.  
  1099.             //--     многотомного издания, выпуск сериального издания.
  1100.  
  1101.             //--  s = сериальный - продолжающийся ресурс, выпускаемый последовательными
  1102.  
  1103.             //--     частями (как правило, нумерованными и (или) датированными выпусками)
  1104.  
  1105.             //--     и рассчитанный на издание в течение времени, продолжительность
  1106.  
  1107.             //--     которого заранее не установлена
  1108.  
  1109.             //--  с = подборка - библиографическая единица, скомплектованная из отдельных
  1110.  
  1111.             //--    физических единиц
  1112.  
  1113.             //--8 Код иерархического уровня (позиция символа 8)
  1114.  
  1115.             //--   Код определяет иерархическую связь записи с другими записями в том же
  1116.  
  1117.             //--    файле и показывает ее относительное положение в иерархии.
  1118.  
  1119.             //--  # = иерархическая связь не определена
  1120.  
  1121.             //--  0 = иерархическая связь отсутствует
  1122.  
  1123.             //--  1 = запись высшего уровня
  1124.  
  1125.             //--  2 = запись ниже высшего уровня (любая запись ниже высшего уровня)
  1126.  
  1127.             //--9 Не определено. Содержит символ пробела: #.
  1128.  
  1129.             //--10 Длина индикатора. Содержит цифру "2".
  1130.  
  1131.             //--11 Длина идентификатора подполя. Содержит цифру "2".
  1132.  
  1133.             //--12-16 Базовый адрес данных (позиции символов 12-16)
  1134.  
  1135.             //--  Пять десятичных цифр, выровненных вправо начальными нулями, указывающие
  1136.  
  1137.             //--   на начальную символьную позицию первого поля данных относительно
  1138.  
  1139.             //--   начала записи. Это число будет равно общему количеству символов в
  1140.  
  1141.             //--   маркере и справочнике, включая разделитель подполя в конце справочника.
  1142.  
  1143.             //--   В справочнике начальная позиция символов для каждого поля задается
  1144.  
  1145.             //--   относительно первого символа первого поля данных, которое является
  1146.  
  1147.             //--   полем 001, а не от начала записи. Базовый адрес, таким образом,
  1148.  
  1149.             //--   является основой, с помощью которой рассчитывается позиция каждого поля.
  1150.  
  1151.             //--17 Уровень кодирования
  1152.  
  1153.             //--  # = полный уровень. Корректно составленная запись о полностью
  1154.  
  1155.             //--    каталогизированном документе, подготовленная для использования в
  1156.  
  1157.             //--    Электронном каталоге или для обмена.
  1158.  
  1159.             //--  1 = подуровень 1. Запись, составленная на основе каталожной карточки
  1160.  
  1161.             //--   (ретроконверсия) или импортированная из другого формата, не
  1162.  
  1163.             //--   предоставляющего достаточно данных для корректного заполнения всех
  1164.  
  1165.             //--   обязательных (в т. ч. условно обязательных) элементов формата, и
  1166.  
  1167.             //--   неоткорректированная по документу.
  1168.  
  1169.             //--18 Форма каталогизационного описания
  1170.  
  1171.             //--  # = запись составлена по правилам ISBD.
  1172.  
  1173.             //--  i = запись составлена не полностью по правилам ISBD (отдельные поля
  1174.  
  1175.             //--    соответствуют положениям ISBD).
  1176.  
  1177.             //--19 Не определено. Содержит символ пробела: #.
  1178.  
  1179.             //--20 Длина элемента "длина поля данных". Содержит символ: 4
  1180.  
  1181.             //--21 Длина элемента "позиция начального символа". Содержит символ: 5
  1182.  
  1183.             //--22 Длина элемента "часть, определяемая при применении". Содержит символ: 0
  1184.  
  1185.             //--23 Не определено. Содержит символ пробела: #.
  1186.  
  1187.             //-- Элементы данных, входящие в МАРКЕР ЗАПИСИ, больше нигде в формате не
  1188.  
  1189.             //--  используются. Хотя некоторые из значений кодов применения (например,
  1190.  
  1191.             //--  "тип записи" и "библиографический уровень") могут частично совпадать
  1192.  
  1193.             //--  с другими кодированными данными, в действительности, коды в МАРКЕРЕ
  1194.  
  1195.             //--  ЗАПИСИ относятся к характеристикам записей, а не к характеристикам
  1196.  
  1197.             //--  самой библиографической единицы.
  1198.  
  1199.             R = " SELECT IDLEVEL FROM " + BAZA + "..MAIN WHERE ID= " + IDM.ToString();
  1200.  
  1201.             da.SelectCommand = new SqlCommand();
  1202.  
  1203.             da.SelectCommand.CommandText = R;
  1204.  
  1205.             da.SelectCommand.Connection = con;
  1206.  
  1207.             da.SelectCommand.CommandTimeout = 1200;
  1208.  
  1209.             ds = new DataSet();
  1210.  
  1211.             KK = da.Fill(ds, "list0");
  1212.  
  1213.             IDLEVEL = Int16.Parse(ds.Tables["list0"].Rows[0][0].ToString());
  1214.  
  1215.             switch (IDLEVEL)
  1216.  
  1217.             {
  1218.  
  1219.                 case -3: //   Серия. Сводный уровень
  1220.  
  1221.                     C = "s";
  1222.  
  1223.                     break;
  1224.  
  1225.                 case -33: //  Подсерия. Сводный уровень
  1226.  
  1227.                     C = "s";
  1228.  
  1229.                     break;
  1230.  
  1231.                 case -5: //  Продолжающееся издание. Сводный уровень
  1232.  
  1233.                     C = "s";
  1234.  
  1235.                     break;
  1236.  
  1237.                 case -100: //  Подборка. Сводный уровень
  1238.  
  1239.                     C = "c";
  1240.  
  1241.                     break;
  1242.  
  1243.                 case -4:  //  Сборник. Часть - аналитика
  1244.  
  1245.                     C = "a";
  1246.  
  1247.                     break;
  1248.  
  1249.                 default:
  1250.  
  1251.                     C = "m";
  1252.  
  1253.                     break;
  1254.  
  1255.             }
  1256.  
  1257.             MARKER = "     na" + C + "  2200000 i 450 ";
  1258.  
  1259.             R = " SELECT P.ID  "
  1260.  
  1261.         + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
  1262.  
  1263.               + " WHERE MNFIELD=899 AND MSFIELD='$b' AND P.IDMAIN=" + IDM.ToString()
  1264.  
  1265.               + " AND CHARINDEX('ретро-конверсии карт',PLAIN)>0 ";
  1266.  
  1267.             da.SelectCommand = new SqlCommand();
  1268.  
  1269.             da.SelectCommand.CommandText = R;
  1270.  
  1271.             da.SelectCommand.Connection = con;
  1272.  
  1273.             da.SelectCommand.CommandTimeout = 1200;
  1274.  
  1275.             ds = new DataSet();
  1276.  
  1277.             KK2 = da.Fill(ds, "list0");
  1278.  
  1279.             if (KK2 > 0)
  1280.  
  1281.             {
  1282.  
  1283.                 MARKER = MARKER.ToString().PadLeft(17) + '1' + MARKER.Substring(19, 30);
  1284.  
  1285.                 //-- Запись МАРКЕРА
  1286.  
  1287.                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  1288.  
  1289.                   + " VALUES (" + IDM.ToString() + ",0,0,0,0,0,'" + MARKER + "')";
  1290.  
  1291.                 command = new SqlCommand(R, con);
  1292.  
  1293.                 con.Open();
  1294.  
  1295.                 command.CommandTimeout = 1200;
  1296.  
  1297.                 command.ExecuteNonQuery();
  1298.  
  1299.                 con.Close();
  1300.  
  1301.             }
  1302.  
  1303.         }
  1304.  
  1305.         //
  1306.  
  1307.         //-- =============================================
  1308.  
  1309.         //-- Description:   Инициализвция Поля 100
  1310.  
  1311.         //-- =============================================
  1312.  
  1313.         private void INITP100(Int32 IDM, Int16 IDLEVEL)
  1314.  
  1315.         {
  1316.  
  1317.             Int32 KK;
  1318.  
  1319.             String P100, C1, T;
  1320.  
  1321.             //-- Поле 100
  1322.  
  1323.             //-- Данные общейй обработки
  1324.  
  1325.             //--Дата ввода записи в файл * 8 0-7
  1326.  
  1327.             //-- Восемь цифровых символов в стандартной форме по ISO 8601-2004 для даты:
  1328.  
  1329.             //-- ГГГГMMДД, где ГГГГ соответствует году, ММ - месяцу, при необходимости с
  1330.  
  1331.             //-- начальным нулем, ДД - дню месяца, также с начальным нулем, если необходимо.
  1332.  
  1333.             //--Тип даты публикации * 1 8
  1334.  
  1335.             //--  а = текущий продолжающийся ресурс
  1336.  
  1337.             //--    Дата публикации 1 содержит год начала публикации. Если дата начала
  1338.  
  1339.             //--     публикации точно не известна, вместо любой неизвестной цифры
  1340.  
  1341.             //--     проставляется символ пробела: '#'.
  1342.  
  1343.             //--    Дата публикации 2 всегда содержит 9999.
  1344.  
  1345.             //--  b = продолжающийся ресурс, публикация которого прекращена
  1346.  
  1347.             //--    Дата публикации 1 содержит год начала публикации продолжающегося
  1348.  
  1349.             //--     ресурса. Если дата начала публикации точно не известна, вместо
  1350.  
  1351.             //--     любой неизвестной цифры проставляется символ пробела: '#'.
  1352.  
  1353.             //--    Дата публикации 2 содержит год прекращения издания. Для ресурсов,
  1354.  
  1355.             //--     о которых известно, что они больше не издаются, но последняя дата не
  1356.  
  1357.             //--     определена, вместо любой неизвестной цифры проставляется символ пробела: '#'.
  1358.  
  1359.             //--  с = продолжающийся ресурс с неизвестным статусом
  1360.  
  1361.             //--   Продолжающийся ресурс, о котором точно не известно, издается ли он
  1362.  
  1363.             //--   сейчас, или его издание прекращено. Дата публикации 1 содержит год
  1364.  
  1365.             //--   начала публикации продолжающегося ресурса. Если дата начала публикации
  1366.  
  1367.             //--   точно не известна, вместо любой неизвестной цифры проставляется знак '#'.
  1368.  
  1369.             //--   Дата публикации 2 содержит четыре символа пробела: ####.
  1370.  
  1371.             //--  d = монография, изданная в одном томе или изданная в течение одного
  1372.  
  1373.             //--     календарного года
  1374.  
  1375.             //--    Монография, изданная в одном томе, либо в нескольких томах, изданных
  1376.  
  1377.             //--     в одно время или с одинаковой датой издания, т.е. изданная в течение
  1378.  
  1379.             //--     одного календарного года. Если дата точно не известна, используется
  1380.  
  1381.             //--     код 'f'. Однако, если дата точно не известна, но указана в области
  1382.  
  1383.             //--     выходных данных как единичный год, например, [1769?], или [около 1769],
  1384.  
  1385.             //--     то используется код 'd'.
  1386.  
  1387.             //--    Описание выпуска продолжающегося ресурса или тома многотомника
  1388.  
  1389.             //--     содержит в позиции 100$a/8 код d.
  1390.  
  1391.             //--    Код 'd' используется также, если известна дата copyright'a, но
  1392.  
  1393.             //--     неизвестна дата издания, иначе говоря, в этом случае дата
  1394.  
  1395.             //--     copyright'a используется вместо даты издания.
  1396.  
  1397.             //--    Если монография издавалась с интервалом по времени, используется код 'g'.
  1398.  
  1399.             //--   Дата публикации 1 содержит год издания.
  1400.  
  1401.             //--   Дата публикации 2 содержит четыре символа пробела: ####.
  1402.  
  1403.             //--  e = репродуцированный документ
  1404.  
  1405.             //--   Каталогизируемый документ является репринтом, перепечаткой,
  1406.  
  1407.             //--    факсимильной копией, и т.д., но не новым изданием. Для новых
  1408.  
  1409.             //--    изданий используются коды: 'd', 'f', 'g', или 'h', в соответствии
  1410.  
  1411.             //--    с правилами их применения.
  1412.  
  1413.             //--   Если это продолжающийся ресурс, то указывается начальный год
  1414.  
  1415.             //--    переиздания и начальный год издания.
  1416.  
  1417.             //--   Дата публикации 1 содержит год издания репродукции.
  1418.  
  1419.             //--   Дата публикации 2 содержит год издания оригинала.
  1420.  
  1421.             //--   Если одна из дат точно не известна, вместо любой неизвестной цифры
  1422.  
  1423.             //--    указывается символ пробела: '#'.
  1424.  
  1425.             //--  f = монография, дата публикации которой точно не известна
  1426.  
  1427.             //--    Дата публикации 1 содержит наиболее раннюю из предполагаемых дат издания.
  1428.  
  1429.             //--    Дата публикации 2 содержит наиболее позднюю из возможных дат издания.
  1430.  
  1431.             //--  g = монография, публикация которой продолжается более года
  1432.  
  1433.             //--   Дата публикации 1 содержит год начала издания. Если начальная дата издания точно не известна, вместо любой неизвестной цифры проставляется пробел: '#'.
  1434.  
  1435.             //--   Дата публикации 2 содержит дату окончания издания или 9999, если издание все еще продолжается. Если дата окончания точно не известна, вместо любой неизвестной цифры проставляется пробел: '#'.
  1436.  
  1437.             //--   В редких случаях на однотомном документе (или выпуске сериального документа)
  1438.  
  1439.             //--    указаны два года издания. В этих случаях используется код 'g'
  1440.  
  1441.             //--    с соответствующими датами.
  1442.  
  1443.             //--  h = монография с фактической датой публикации и датой присвоения
  1444.  
  1445.             //--     авторского права / привилегии
  1446.  
  1447.             //--    Дата публикации отличается от даты присвоения авторского
  1448.  
  1449.             //--     права / привилегии, указанного в документе. Если дата публикации
  1450.  
  1451.             //--     неизвестна, используется код 'd'. Привилегия определяется как
  1452.  
  1453.             //--     монопольное право, предоставляемое государственным органом автору
  1454.  
  1455.             //--     или книготорговой организации на издание в течение установленного
  1456.  
  1457.             //--     периода времени.
  1458.  
  1459.             //--   Дата публикации 1 содержит дату публикации.
  1460.  
  1461.             //--   Дата публикации 2 содержит дату присвоения авторского права / привилегии.
  1462.  
  1463.             //--  i = монографии, имеющие как дату производства, так и дату реализации
  1464.  
  1465.             //--   Используется для фильмов, аудиовизуальных материалов и т.д., когда
  1466.  
  1467.             //--    есть различия между датой производства документа и датой его реализации.
  1468.  
  1469.             //--   Дата публикации 1 содержит дату реализации.
  1470.  
  1471.             //--   Дата публикации 2 содержит дату производства.
  1472.  
  1473.             //--  j = документ с точной датой публикации
  1474.  
  1475.             //--    используется в случае, когда важно записать месяц (и, возможно,
  1476.  
  1477.             //--    день) публикации.
  1478.  
  1479.             //--   Дата публикации 1 содержит год публикации.
  1480.  
  1481.             //--   Дата публикации 2 содержит дату (месяц и день) в формате ММДД,
  1482.  
  1483.             //--    где ММ - обозначение месяца, ДД - дня, при необходимости с
  1484.  
  1485.             //--    дополнительными нулями. Если день не известен, или не имеет
  1486.  
  1487.             //--    существенного значения, позиции 15 и 16 заполняются символами
  1488.  
  1489.             //--    пробела: '#'.
  1490.  
  1491.             //--  u = дата(ы) публикации неизвестна(ы)
  1492.  
  1493.             //--     Используется, если дату издания определить невозможно, и никакая
  1494.  
  1495.             //--      дата не может быть присвоена документу.
  1496.  
  1497.             //--   Дата публикации 1 содержит четыре символа пробела: ####.
  1498.  
  1499.             //--   Дата публикации 2 содержит четыре символа пробела: ####.
  1500.  
  1501.             //--
  1502.  
  1503.             //--Дата публикации 1 * 4 9-12
  1504.  
  1505.             //--Дата публикации 2 * 4 13-16
  1506.  
  1507.             //--
  1508.  
  1509.             //--Код целевого назначения *** 3 17-19
  1510.  
  1511.             //-- а = для юношества, общего характера (используется вместо кодов b, c, d или е, когда эти коды не используются или не могут быть использованы).
  1512.  
  1513.             //-- b = для детей дошкольного возраста, 0-5 лет
  1514.  
  1515.             //-- с = для детей младшего возраста, 5-10 лет
  1516.  
  1517.             //-- d = для детей среднего возраста, 9-14 лет
  1518.  
  1519.             //-- е = для юношества, возраст 14-20 лет
  1520.  
  1521.             //-- k = для взрослых, научная
  1522.  
  1523.             //-- m = для взрослых, общего характера
  1524.  
  1525.             //-- u = неизвестно
  1526.  
  1527.  
  1528.  
  1529.             //--Код правительственной публикации ** 1 20
  1530.  
  1531.             //--  а = федеральный/национальный
  1532.  
  1533.             //--  b = республика, штат/провинция
  1534.  
  1535.             //--  с = край, область, округ, графство/департамент
  1536.  
  1537.             //--  d = местный (муниципальный, городской и т.д.)
  1538.  
  1539.             //--  е = межтерриториальный (включающий разные департаменты и правительства ниже национального уровня)
  1540.  
  1541.             //--  f = межправительственный
  1542.  
  1543.             //--  g = нелегальное правительство или правительство в изгнании
  1544.  
  1545.             //--  h = уровень не определен
  1546.  
  1547.             //--  u = не известно
  1548.  
  1549.             //--  y = неправительственная публикация
  1550.  
  1551.             //--  z = другой административный уровень
  1552.  
  1553.  
  1554.  
  1555.             //--Код модифицированной записи ** 1 21
  1556.  
  1557.             //--  Заполнение обязательно, если производится модификация записи.
  1558.  
  1559.             //--  Этот односимвольный код показывает, достаточно ли оказалось имеющегося
  1560.  
  1561.             //--   набора символов для передачи данных в той форме, как они представлены в
  1562.  
  1563.             //--   документе. Если нет, а это может получиться, например, из-за
  1564.  
  1565.             //--   использования в документе специфических шрифтов или математических
  1566.  
  1567.             //--   формул, то для представления этих данных может использоваться
  1568.  
  1569.             //--   транслитерация, греческие буквы или какая-либо другая нотация.
  1570.  
  1571.             //--   Если при этом данных, введенных в запись, достаточно для воспроизведения
  1572.  
  1573.             //--   оригинального написания, то запись считается модифицированной,
  1574.  
  1575.             //--   и в позиции 100$a/21 проставляется 1. Если имеющихся наборов символов
  1576.  
  1577.             //--   оказывается достаточно для полноценного их представления в записи,
  1578.  
  1579.             //--   что как правило и происходит, или данные в записи не полностью отражают
  1580.  
  1581.             //--   исходные данные, - такая запись считается немодифицированной, и в
  1582.  
  1583.             //--   позиции 100$a/21 проставляется 0.
  1584.  
  1585.             //--
  1586.  
  1587.             //--Язык каталогизации * 3 22-24
  1588.  
  1589.             //--  Всегда RUS
  1590.  
  1591.             //--
  1592.  
  1593.             //--Код транслитерации ** 1 25
  1594.  
  1595.             //--  a = правила транслитерации ISO
  1596.  
  1597.             //--  b = другие правила
  1598.  
  1599.             //--  c = несколько схем транслитерации – ISO или другие правила
  1600.  
  1601.             //--  y = транслитерация не используется
  1602.  
  1603.             //--
  1604.  
  1605.             //--Наборы символов * 4 26-29
  1606.  
  1607.             //--Дополнительные наборы символов ** 4 30-33
  1608.  
  1609.             //--Два двухсимвольных кода, определяющие основные наборы графических символов, используемых при обмене записями. Позиции 26-27 определяют набор G0, позиции 28-29 - набор G1. Если набор G1 не нужен, позиции 28-29 содержат символы пробела: '##'.
  1610.  
  1611.             //--Используются следующие двухсимвольные коды (при необходимости перечень их может быть расширен):
  1612.  
  1613.             //--01 = ISO 646, версия IRV (основной латинский набор)
  1614.  
  1615.             //--02 = ISO регистрация #37 (основной кириллический набор)
  1616.  
  1617.             //--03 = ISO 5426 (расширенный латинский набор)
  1618.  
  1619.             //--04 = ISO DIS 5427 (расширенный кириллический набор)
  1620.  
  1621.             //--05 = ISO 5428 (греческий набор)
  1622.  
  1623.             //--06 = ISO 6438 (набор кодированных африканских символов)
  1624.  
  1625.             //--07 = ISO 10586 (набор символов грузинского алфавита)
  1626.  
  1627.             //--08 = ISO 8957 (набор символов иврита) таблица 1
  1628.  
  1629.             //--09 = ISO 8957 (набор символов иврита) таблица 2
  1630.  
  1631.             //--10 [Зарезервировано]
  1632.  
  1633.             //--11 = ISO 5426-2 (латинские символы, используемые в редких европейских языках и устаревших типографиях)
  1634.  
  1635.             //--50 = ISO 10646 (Unicode, UTF-8)
  1636.  
  1637.             //--79 = Code Page 866
  1638.  
  1639.             //--89 = WIN 1251
  1640.  
  1641.             //--99 = KOI-8
  1642.  
  1643.             //--Следует заметить, что ISO 10646, будучи 16-битным набором символов,
  1644.  
  1645.             //-- содержит все необходимые символы. Если позиции 26-27 содержат код "50",
  1646.  
  1647.             //-- то он используется для наборов C0, C1 и G0-G3. Позиции 28-33 содержат
  1648.  
  1649.             //-- символы пробелов.
  1650.  
  1651.             //--
  1652.  
  1653.             //--Графика заглавия ** 2 34-35
  1654.  
  1655.             //-- Заполнение обязательно, если графика заглавия отличается от обычной для
  1656.  
  1657.             //--   языка, указанного в подполе 101$g (или 101$a, если нет $g).
  1658.  
  1659.             //-- Двухсимвольный код, определяющий графику заглавия, используемого как
  1660.  
  1661.             //--   основное заглавие (в случае сериальных документов – ключевое заглавие).
  1662.  
  1663.             //---Относится к алфавиту, в котором заглавие приводится на источнике описания,
  1664.  
  1665.             //--   а не к набору символов записи (см. пример 28).
  1666.  
  1667.             //-- При отсутствии международных стандартов наборов кодов, рекомендуются
  1668.  
  1669.             //--   следующие коды:
  1670.  
  1671.             //--ba = латинская
  1672.  
  1673.             //--са = кириллическая
  1674.  
  1675.             //--da = японская - неопределенная графика
  1676.  
  1677.             //--db = японская - канджи
  1678.  
  1679.             //--dc = японская - кана
  1680.  
  1681.             //--еа = китайская
  1682.  
  1683.             //--fa = арабская
  1684.  
  1685.             //--ga = греческая
  1686.  
  1687.             //--ha = иврит
  1688.  
  1689.             //--ia = тайская
  1690.  
  1691.             //--ja = деванагари
  1692.  
  1693.             //--ка = корейская
  1694.  
  1695.             //--la = тамильская
  1696.  
  1697.             //--ma = грузинская
  1698.  
  1699.             //--mb = армянская
  1700.  
  1701.             //--zz = другая
  1702.  
  1703.             //--
  1704.  
  1705.             if (IDLEVEL > 0) C1 = "a        ";
  1706.  
  1707.             else
  1708.  
  1709.             {
  1710.  
  1711.                 if (IDLEVEL == -3 || IDLEVEL == -33 || IDLEVEL == -5) C1 = "a    9999";
  1712.  
  1713.                 else C1 = "b        ";
  1714.  
  1715.             }
  1716.  
  1717.             // ДАТА ИЗДАНИЯ
  1718.  
  1719.             R = " SELECT  PLAIN  "
  1720.  
  1721.             + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
  1722.  
  1723.               + " WHERE P.IDMAIN= " + IDM.ToString() + " AND MNFIELD=2100 ";
  1724.  
  1725.             da.SelectCommand = new SqlCommand();
  1726.  
  1727.             da.SelectCommand.CommandText = R;
  1728.  
  1729.             da.SelectCommand.Connection = con;
  1730.  
  1731.             da.SelectCommand.CommandTimeout = 1200;
  1732.  
  1733.             ds = new DataSet();
  1734.  
  1735.             KK = da.Fill(ds, "list0");
  1736.  
  1737.             if (KK > 0)
  1738.  
  1739.             {
  1740.  
  1741.                 T = ds.Tables["list0"].Rows[0][0].ToString();
  1742.  
  1743.                 T.Replace("(", "[").TrimStart();
  1744.  
  1745.                 T.Replace(")", "]");
  1746.  
  1747.                 if (T.Length > 3)
  1748.  
  1749.                 {
  1750.  
  1751.                     if ((T.Length == 8) && (Int32.TryParse(T, out L) == true)) //ISNUMERIC(T)
  1752.  
  1753.                     {
  1754.  
  1755.                         C1 = "b" + T;
  1756.  
  1757.                     }
  1758.  
  1759.                     else
  1760.  
  1761.                     {
  1762.  
  1763.                         if (T == "Б.г." || T == "б.г." || T == "Б. г." || T == "б. г.") goto M1;
  1764.  
  1765.                         if (T == "S.a." || T == "s.a." || T == "S. a." || T == "s. a.") goto M1;
  1766.  
  1767.                         if (T == "O.j." || T == "o.j." || T == "O. j." || T == "o. j.") goto M1;
  1768.  
  1769.                         if (T.Substring(0, 4) == "S.a.") goto M1;
  1770.  
  1771.                         if ((T.Substring(0, 1)) == "[" && (T.Substring(T.Length - 1, 1) == "]"))
  1772.  
  1773.                         {
  1774.  
  1775.                             T = T.Substring(1, T.Length - 2);
  1776.  
  1777.                         }
  1778.  
  1779.                         if (T.StartsWith("ca "))
  1780.  
  1781.                         {
  1782.  
  1783.                             T = T.Substring(3).TrimStart();
  1784.  
  1785.                         }
  1786.  
  1787.                         if (T.StartsWith("cop.") || T.StartsWith( "ante ") || T.StartsWith("post "))
  1788.  
  1789.                         {
  1790.  
  1791.                             T = T.Substring(4).TrimStart();
  1792.  
  1793.                         }
  1794.  
  1795.                         if (T.StartsWith("pref."))
  1796.  
  1797.                         {
  1798.  
  1799.                             T = T.Substring(5).TrimStart();
  1800.  
  1801.                         }
  1802.  
  1803.                         if (T.StartsWith("An "))
  1804.  
  1805.                         {
  1806.  
  1807.                             if (T.Substring(T.Length - 1, 1) != "]")
  1808.  
  1809.                             {
  1810.  
  1811.                                 T.Substring(T.Length - 4, 4);
  1812.  
  1813.                             }
  1814.  
  1815.                             if (Int32.TryParse(T, out L) == true)
  1816.  
  1817.                             {
  1818.  
  1819.                                 C1 = "d" + T + "    ";
  1820.  
  1821.                                 goto M1;
  1822.  
  1823.                             }
  1824.  
  1825.                         }
  1826.  
  1827.                     }
  1828.  
  1829.                 } // Длина Т > 3
  1830.  
  1831.                 else
  1832.  
  1833.                 {
  1834.  
  1835.                     KK = T.IndexOf('[');
  1836.  
  1837.                     T = T.Substring(KK + 1, T.Length - KK);
  1838.  
  1839.                     T = T.Remove(T.Length - 1); // Удаление]
  1840.  
  1841.                     if (T.Length == 4)
  1842.  
  1843.                     {
  1844.  
  1845.                         C1 = 'd' + T + "    ";
  1846.  
  1847.                     }
  1848.  
  1849.                     else
  1850.  
  1851.                     {
  1852.  
  1853.                         T = T.Replace("/", "");
  1854.  
  1855.                     }
  1856.  
  1857.                     if (Int32.TryParse(T, out L) == true)
  1858.  
  1859.                     {
  1860.  
  1861.                         C1 = 'f' + T;
  1862.  
  1863.                     }
  1864.  
  1865.                     goto M1;
  1866.  
  1867.                 }
  1868.  
  1869.                 if (T.IndexOf("Vor") != -1) ////   ??????????????????  == "Vor"
  1870.  
  1871.                 {
  1872.  
  1873.                     T = T.Substring(T.Length - 4, 4); // Последние 4 цифры
  1874.  
  1875.                     if (Int32.TryParse(T, out L) == true)
  1876.  
  1877.                     {
  1878.  
  1879.                         C1 = 'f' + T + "    ";
  1880.  
  1881.                     }
  1882.  
  1883.                     goto M1;
  1884.  
  1885.                 }
  1886.  
  1887.                 T.Replace("XII", "12");
  1888.  
  1889.                 T.Replace("XI", "11");
  1890.  
  1891.                 T.Replace("IX", "09");
  1892.  
  1893.                 T.Replace("X", "10");
  1894.  
  1895.                 T.Replace("VIII", "08");
  1896.  
  1897.                 T.Replace("VII", "07");
  1898.  
  1899.                 T.Replace("VI", "06");
  1900.  
  1901.                 T.Replace("IV", "04");
  1902.  
  1903.                 T.Replace("V", "05");
  1904.  
  1905.                 T.Replace("III", "03");
  1906.  
  1907.                 T.Replace("II", "02");
  1908.  
  1909.                 T.Replace("I", "01");
  1910.  
  1911.                 T.Replace(".", "");
  1912.  
  1913.                 if (T.IndexOf('=') != -1)
  1914.  
  1915.                 {
  1916.  
  1917.                     KK = T.IndexOf('=');
  1918.  
  1919.                     T = T.Substring(KK + 1).TrimStart();
  1920.  
  1921.                 }
  1922.  
  1923.             M2: ;
  1924.  
  1925.                 if (T.Length == 4 && Int32.TryParse(T, out L) == true)
  1926.  
  1927.                 {
  1928.  
  1929.                     C1 = "d" + T + "    ";
  1930.  
  1931.                     goto M1;
  1932.  
  1933.                 }
  1934.  
  1935.                 if (T.Substring(0, 1) == "[")
  1936.  
  1937.                 {
  1938.  
  1939.                     T = T.Remove(0, 1);
  1940.  
  1941.                     L = T.IndexOf(']');
  1942.  
  1943.                     if (L != -1)
  1944.  
  1945.                     {
  1946.  
  1947.                         T = T.Remove(L);
  1948.  
  1949.                     }
  1950.  
  1951.                     goto M2;
  1952.  
  1953.                 }
  1954.  
  1955.                 if (T.Length == 9)
  1956.  
  1957.                 {
  1958.  
  1959.                     T = T.Replace("/", "");
  1960.  
  1961.                     if (Int32.TryParse(T, out L) == true)
  1962.  
  1963.                     {
  1964.  
  1965.                         C1 = "f" + T;
  1966.  
  1967.                         goto M1;
  1968.  
  1969.                     }
  1970.  
  1971.                 }
  1972.  
  1973.                 if (Int32.TryParse(T, out L) == true)
  1974.  
  1975.                 {
  1976.  
  1977.                     if (T.Length > 4)
  1978.  
  1979.                     {
  1980.  
  1981.                         if (T.Length == 7) T = "0" + T;
  1982.  
  1983.                         if (T.Length == 6) T = "  " + T;
  1984.  
  1985.                         C1 = "j" + T.Substring(T.Length - 4, 4) + T.Substring(0, 4);
  1986.  
  1987.                         goto M1;
  1988.  
  1989.                     }
  1990.  
  1991.                 }
  1992.  
  1993.                 T = T.Substring(T.Length - 4, 4);
  1994.  
  1995.                 if (Int32.TryParse(T, out L) == true)
  1996.  
  1997.                 {
  1998.  
  1999.                     C1 = "d" + T + "    ";
  2000.  
  2001.                 }
  2002.  
  2003.             }
  2004.  
  2005.         M1: ;
  2006.  
  2007.             // 2010-11-30T12:12:48f00012000u  y0rusy50      ca
  2008.  
  2009.             P100 = DateTime.Now.ToString("s").Replace("-", "").Substring(0, 8) + C1 + "u  y0rusy50      ca";
  2010.  
  2011.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2012.  
  2013.              + " VALUES (" + IDM.ToString() + ",0,100,' ',' ','a','" + P100 + "')";
  2014.  
  2015.             command = new SqlCommand(R, con);
  2016.  
  2017.             con.Open();
  2018.  
  2019.             command.CommandTimeout = 1200;
  2020.  
  2021.             command.ExecuteNonQuery();
  2022.  
  2023.             con.Close();
  2024.  
  2025.         } // INITP100
  2026.  
  2027.         //
  2028.  
  2029.         //*********************************************************
  2030.  
  2031.         private void INITP105(Int32 IDM)
  2032.  
  2033.         {
  2034.  
  2035.             //-- Description:   Инициализвция Поля 105
  2036.  
  2037.             //-- Description: ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ТЕКСТОВЫЕ МАТЕРИАЛЫ, МОНОГРАФИЧЕСКИЕ
  2038.  
  2039.             String P105, R;
  2040.  
  2041.             P105 = "y   z   000|y";
  2042.  
  2043.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2044.  
  2045. + " VALUES (" + IDM + ",0,105,' ',' ','a','" + P105 + "') ";
  2046.  
  2047.             command = new SqlCommand(R, con);
  2048.  
  2049.             con.Open();
  2050.  
  2051.             command.CommandTimeout = 1200;
  2052.  
  2053.             command.ExecuteNonQuery();
  2054.  
  2055.             con.Close();
  2056.  
  2057.         } // INITP105
  2058.  
  2059.  
  2060.  
  2061.         //-- =============================================
  2062.  
  2063.         private void INITP110(Int32 IDM, Int16 IDLEVEL)
  2064.  
  2065.             // 2011.04.12 13:00
  2066.  
  2067.         {
  2068.  
  2069.             //-- Description:   Инициализвция Поля 110
  2070.  
  2071.             //--110 ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ПРОДОЛЖАЮЩИЕСЯ РЕСУРСЫ
  2072.  
  2073.             String C, P110;
  2074.  
  2075.             switch (IDLEVEL)
  2076.  
  2077.             {
  2078.  
  2079.                 case -2: // Многотомное издание
  2080.  
  2081.                     C = "b";
  2082.  
  2083.                     break;
  2084.  
  2085.                 default:
  2086.  
  2087.                     C = "a"; // Серии, подсерии и продолжающиеся издания
  2088.  
  2089.                     break;
  2090.  
  2091.             }
  2092.  
  2093.             P110 = C + "uuz||||0zz";
  2094.  
  2095.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2096.  
  2097.            + " VALUES (" + IDM + ",0,110,' ',' ','a','" + P110 + "') ";
  2098.  
  2099.             command = new SqlCommand(R, con);
  2100.  
  2101.             con.Open();
  2102.  
  2103.             command.CommandTimeout = 1200;
  2104.  
  2105.             command.ExecuteNonQuery();
  2106.  
  2107.             con.Close();
  2108.  
  2109.             return;
  2110.  
  2111.         } // INITP110
  2112.  
  2113. //*********************************************************
  2114.  
  2115. //-- Description:   ФОРМИРОВАНИЕ ПОЛЯ 801 - Источник записи
  2116.  
  2117. //-- =============================================
  2118.  
  2119.         private void OBR98(Int32 IDM)
  2120.  
  2121.         {
  2122.  
  2123.             String D, S;
  2124.  
  2125.             //--801  ИСТОЧНИК ЗАПИСИ
  2126.  
  2127.             //--Поле содержит указание на источники записи, к которым относятся:
  2128.  
  2129.             //-- организация, создающая данные; организация, преобразующая данные
  2130.  
  2131.             //-- в машиночитаемую форму; организация, модифицирующая первоначальные
  2132.  
  2133.             //-- записи / данные; организация, распространяющая записи.
  2134.  
  2135.             //--Обязательное. Повторяется для каждой из перечисленных функций,
  2136.  
  2137.             //-- выполняемых той или иной организацией.
  2138.  
  2139.             //--Индикатор 1: # (не определен)
  2140.  
  2141.             //--Индикатор 2: Индикатор функции
  2142.  
  2143.             //-- 0 - Агентство, производящее первоначальную каталогизацию
  2144.  
  2145.             //-- 1 - Агентство, преобразующее данные
  2146.  
  2147.             //-- 2 - Агентство, вносящее изменения в запись
  2148.  
  2149.             //-- 3 - Агентство, распространяющее запись
  2150.  
  2151.             //--  $a Страна
  2152.  
  2153.             //--    Двухсимвольный код страны, в которой находится организация,
  2154.  
  2155.             //-- указанная в подполе $b. См. Приложение B.
  2156.  
  2157.             //--   Обязательное. Не повторяется.
  2158.  
  2159.             //--  $b Наименование (в кодированной или полной форме) организации.
  2160.  
  2161.             //--    В связи с отсутствием общепринятых международных кодов,
  2162.  
  2163.             //--     рекомендуется использовать коды из MARC Code list for Organizations
  2164.  
  2165.             //--     – cписка кодов для организаций, который содержит коды для многих
  2166.  
  2167.             //--     библиографирующих организаций как внутри, так и вне США. Также
  2168.  
  2169.             //--     может быть использовано полное наименование организации или
  2170.  
  2171.             //--     национальный код.
  2172.  
  2173.             //--   Обязательное. Не повторяется.
  2174.  
  2175.             //--  $с Дата выполнения той операции с записью, на которую указывает
  2176.  
  2177.             //--      индикатор 2. Дату следует записывать в соответствии с международным
  2178.  
  2179.             //--      стандартом ISO 8601-2004, указывая цифры года, месяца и дня без
  2180.  
  2181.             //--      разделителей между ними, т.е. ГГГГММДД.
  2182.  
  2183.             //--    Обязательное при наличии данных. Не повторяется.
  2184.  
  2185.             //--  $g Правила каталогизации
  2186.  
  2187.             //--    Подполе содержит сокращенное наименование правил каталогизации,
  2188.  
  2189.             //--     которые использовались для подготовки библиографической записи.
  2190.  
  2191.             //--     Коды некоторых Правил приведены в Приложении Н. Подполе следует
  2192.  
  2193.             //--     использовать в том случае, если второй индикатор имеет значение 0
  2194.  
  2195.             //--     (для организации, выполняющей первоначальную каталогизацию)
  2196.  
  2197.             //--     или 2 (для организации, модифицирующей запись).
  2198.  
  2199.             //--    Факультативное. Повторяется (при использовании в одной записи
  2200.  
  2201.             //--     различных правил).
  2202.  
  2203.             //--    RCR - код Российских правил каталогизации (Москва, 2005)
  2204.  
  2205.             //--  $2 Код формата
  2206.  
  2207.             //--    Подполе содержит наименование формата машиночитаемой записи.
  2208.  
  2209.             //--     Коды машиночитаемых форматов приведены в Приложении H.
  2210.  
  2211.             //--   Факультативное. Не повторяется.
  2212.  
  2213.             //--   rusmarc - код РУСМАРКа
  2214.  
  2215.             //--   unimarc - UNIMARC Manual (London : IFLA UBCIM Programme)
  2216.  
  2217.             //--   unimrur - Руководство по UNIMARC = UNIMARC Manual. (Москва :
  2218.  
  2219.             //--               Государственная публичная научно-техническая библиотека
  2220.  
  2221.             //--               России)
  2222.  
  2223.             //--   marc21  - MARC 21 format for bibliographic data (Washington : Library
  2224.  
  2225.             //--              of Congress)
  2226.  
  2227.             //--   usmarc  - USMARC Bibliographic Format. (Washington : Libray of Congress)
  2228.  
  2229.             //--
  2230.  
  2231.             //-- Во многих случаях одна и та же организация выполняет все или отдельные
  2232.  
  2233.             //--  выше перечисленные функции. Поле следует повторять для каждой функции
  2234.  
  2235.             //--  т. к. даты обработки могут быть различными.
  2236.  
  2237.             //-- В машиночитаемой записи должно быть не менее двух вхождений поля 801,
  2238.  
  2239.             //--  т.к. для того чтобы данные привести в машиночитаемую форму, их надо
  2240.  
  2241.             //--  подготовить. Т.о. у первого вхождения поля 801 индикатор = 0, а у
  2242.  
  2243.             //--  второго = 1.
  2244.  
  2245.             //-- Если организация сразу каталогизирует документ в машиночитаемой форме,
  2246.  
  2247.             //--  то должно быть приведены два вхождения поля 801 с одинаковыми подполями
  2248.  
  2249.             //--  $c - дата составления.
  2250.  
  2251.             //--
  2252.  
  2253.             //-- Взаимосвязанные поля
  2254.  
  2255.             //--  МАРКЕР ЗАПИСИ, позиция символа 18 и позиция символа 5.
  2256.  
  2257.             //--  035  ДРУГИЕ СИСТЕМНЫЕ НОМЕРА
  2258.  
  2259.             //--   Идентификатор и наименование организации, создавшей или
  2260.  
  2261.             //--    модифицировавшей запись, полученную из другой системы, могут также
  2262.  
  2263.             //--    быть введены в поле 035.
  2264.  
  2265.             //--  100  ДАННЫЕ ОБЩЕЙ ОБРАБОТКИ, Дата ввода записи в файл ($a, позиции
  2266.  
  2267.             //--   символов 0-7). Дата в поле 100 может иметь такое же значение, как
  2268.  
  2269.             //--   и дата преобразования записи в машиночитаемую форму, однако ее
  2270.  
  2271.             //--   необходимо повторить в поле 801.
  2272.  
  2273.             //-- 801 0 -- КАТАЛОГИЗАЦИЯ
  2274.  
  2275.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2276.  
  2277.              + " VALUES (" + IDM.ToString() + ",-3,801,' ','0','a','RU')";
  2278.  
  2279.             command = new SqlCommand(R, con);
  2280.  
  2281.             con.Open();
  2282.  
  2283.             command.CommandTimeout = 1200;
  2284.  
  2285.             command.ExecuteNonQuery();
  2286.  
  2287.             con.Close();
  2288.  
  2289.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2290.  
  2291.              + " VALUES (" + IDM.ToString() + ",-3,801,' ','0','b',"
  2292.  
  2293.             + "'Федеральное государственное учреждение культуры ' + CHAR(34) + '"
  2294.  
  2295.             + "Всероссийская государственная библиотека иностранной литературы имени  М.И.Рудомино' + CHAR(34))";
  2296.  
  2297.             command = new SqlCommand(R, con);
  2298.  
  2299.             con.Open();
  2300.  
  2301.             command.CommandTimeout = 1200;
  2302.  
  2303.             command.ExecuteNonQuery();
  2304.  
  2305.             con.Close();
  2306.  
  2307.             //  -- Дата каталогизации  - поле DateCreate из таблицы MAIN
  2308.  
  2309.             R = " SELECT REPLACE(CONVERT(VARCHAR(100),DateCreate,102),'.','')"
  2310.  
  2311.             + " FROM [BJVVV]..MAIN WHERE ID = " + IDM.ToString();
  2312.  
  2313.             da.SelectCommand = new SqlCommand();
  2314.  
  2315.             da.SelectCommand.CommandText = R;
  2316.  
  2317.             da.SelectCommand.Connection = con;
  2318.  
  2319.             da.SelectCommand.CommandTimeout = 1200;
  2320.  
  2321.             ds = new DataSet();
  2322.  
  2323.             da.Fill(ds, "list0");
  2324.  
  2325.             D = ds.Tables["list0"].Rows[0][0].ToString();
  2326.  
  2327.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2328.  
  2329.             + " VALUES (" + IDM + ",-3,801,' ','0','c','" + D + "')";
  2330.  
  2331.             command = new SqlCommand(R, con);
  2332.  
  2333.             con.Open();
  2334.  
  2335.             command.CommandTimeout = 1200;
  2336.  
  2337.             command.ExecuteNonQuery();
  2338.  
  2339.             con.Close();
  2340.  
  2341.             // -- Код правил каталогизации
  2342.  
  2343.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2344.  
  2345.              + " VALUES (" + IDM.ToString() + ",-3,801,' ','0','g','RCR')";
  2346.  
  2347.             command = new SqlCommand(R, con);
  2348.  
  2349.             con.Open();
  2350.  
  2351.             command.CommandTimeout = 1200;
  2352.  
  2353.             command.ExecuteNonQuery();
  2354.  
  2355.             con.Close();
  2356.  
  2357.  
  2358.  
  2359.             //-- 801 1 -- КОНВЕРТИРОВАНИЕ
  2360.  
  2361.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2362.  
  2363.              + " VALUES (" + IDM.ToString() + ",-2,801,' ','1','a','RU')";
  2364.  
  2365.             command = new SqlCommand(R, con);
  2366.  
  2367.             con.Open();
  2368.  
  2369.             command.CommandTimeout = 1200;
  2370.  
  2371.             command.ExecuteNonQuery();
  2372.  
  2373.             con.Close();
  2374.  
  2375.  
  2376.  
  2377.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2378.  
  2379.             + " VALUES (" + IDM.ToString() + ",-2,801,' ','1','b',"
  2380.  
  2381.             + "'Федеральное государственное учреждение культуры ' + CHAR(34) + '"
  2382.  
  2383.             + "Всероссийская государственная библиотека иностранной литературы имени  М.И.Рудомино' + CHAR(34))";
  2384.  
  2385.             command = new SqlCommand(R, con);
  2386.  
  2387.             con.Open();
  2388.  
  2389.             command.CommandTimeout = 1200;
  2390.  
  2391.             command.ExecuteNonQuery();
  2392.  
  2393.             con.Close();
  2394.  
  2395.  
  2396.  
  2397.             //-- 801 3 - РАСПРОСТРАНЕНИЕ
  2398.  
  2399.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2400.  
  2401.              + " VALUES (" + IDM.ToString() + ",-1,801,' ','3','a','RU') ";
  2402.  
  2403.             command = new SqlCommand(R, con);
  2404.  
  2405.             con.Open();
  2406.  
  2407.             command.CommandTimeout = 1200;
  2408.  
  2409.             command.ExecuteNonQuery();
  2410.  
  2411.             con.Close();
  2412.  
  2413.  
  2414.  
  2415.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2416.  
  2417.              + " VALUES (" + IDM.ToString() + ",-1,801,' ','3','b',"
  2418.  
  2419.             + "'Федеральное государственное учреждение культуры ' + CHAR(34) + '"
  2420.  
  2421.             + "Всероссийская государственная библиотека иностранной литературы имени  М.И.Рудомино' + CHAR(34))";
  2422.  
  2423.             command = new SqlCommand(R, con);
  2424.  
  2425.             con.Open();
  2426.  
  2427.             command.CommandTimeout = 1200;
  2428.  
  2429.             command.ExecuteNonQuery();
  2430.  
  2431.             con.Close();
  2432.  
  2433.             //  -- Дата создания записи - первые 8 символов из поля 100
  2434.  
  2435.             R = "SELECT LEFT(POL,8) FROM [BJRUSMARC]..RUSM WHERE MET=100 and IDMAIN=" + IDM.ToString();
  2436.  
  2437.             da.SelectCommand = new SqlCommand();
  2438.  
  2439.             da.SelectCommand.CommandText = R;
  2440.  
  2441.             da.SelectCommand.Connection = con;
  2442.  
  2443.             da.SelectCommand.CommandTimeout = 1200;
  2444.  
  2445.             ds = new DataSet();
  2446.  
  2447.             da.Fill(ds, "list0");
  2448.  
  2449.             S = ds.Tables["list0"].Rows[0][0].ToString();
  2450.  
  2451.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2452.  
  2453.             + " VALUES (" + IDM.ToString() + ",-1,801,' ','3','c'," + S + ")";
  2454.  
  2455.             command = new SqlCommand(R, con);
  2456.  
  2457.             con.Open();
  2458.  
  2459.             command.CommandTimeout = 1200;
  2460.  
  2461.             command.ExecuteNonQuery();
  2462.  
  2463.             con.Close();
  2464.  
  2465.             //  -- Формат записи
  2466.  
  2467.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  2468.  
  2469.             + " VALUES (" + IDM.ToString() + ",-1,801,' ','3','2','rusmarc') ";
  2470.  
  2471.             command = new SqlCommand(R, con);
  2472.  
  2473.             con.Open();
  2474.  
  2475.             command.CommandTimeout = 1200;
  2476.  
  2477.             command.ExecuteNonQuery();
  2478.  
  2479.             con.Close();
  2480.  
  2481.         } // OBR98 - ФОРМИРОВАНИЕ ПОЛЯ 801 - Источник записи
  2482.  
  2483.         //
  2484.  
  2485. //-- =============================================
  2486.  
  2487. //-- Description:   Вид обработки = 1 - Вид издания Поле BJ921b
  2488.  
  2489. //-- =============================================
  2490.  
  2491.         private void OBR1(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1, String IND2
  2492.  
  2493.             , String IDENT, String DSORT)
  2494.  
  2495.         {
  2496.  
  2497.             String MARKER, POL, P4;
  2498.  
  2499.             Int16 METU;
  2500.  
  2501.             Int32 IDL, KK2;
  2502.  
  2503.             //-- Значения поля
  2504.  
  2505.             //--        Альбом
  2506.  
  2507.             //--        Атлас
  2508.  
  2509.             //--        Брошюра
  2510.  
  2511.             //--        Издание картографическое
  2512.  
  2513.             //--        Издание листовое
  2514.  
  2515.             //--        Издание музыкальное
  2516.  
  2517.             //--        Издание научное
  2518.  
  2519.             //--        Издание официальное
  2520.  
  2521.             //--        Издание справочное
  2522.  
  2523.             //--        Издание учебное
  2524.  
  2525.             //--        Каталог
  2526.  
  2527.             //--        Книжка памятная
  2528.  
  2529.             //--        Пособие учебно-методическое
  2530.  
  2531.             //--        Проспект
  2532.  
  2533.             //--        Путеводитель
  2534.  
  2535.             //--        Словарь
  2536.  
  2537.             //--    Трофей 2008
  2538.  
  2539.             //--        Учебник
  2540.  
  2541.             //--        Энциклопедия
  2542.  
  2543.             //--
  2544.  
  2545.             if (DSORT == "Издание картографическое")
  2546.  
  2547.             {
  2548.  
  2549.                 //-- Модификация МАРКЕРА - поз. 6
  2550.  
  2551.                 R = " SELECT POL FROM BJRUSMARC..RUSM  WHERE MET=0 AND IDMAIN=" + IDM.ToString();
  2552.  
  2553.                 da.SelectCommand = new SqlCommand();
  2554.  
  2555.                 da.SelectCommand.CommandText = R;
  2556.  
  2557.                 da.SelectCommand.Connection = con;
  2558.  
  2559.                 da.SelectCommand.CommandTimeout = 1200;
  2560.  
  2561.                 ds = new DataSet();
  2562.  
  2563.                 da.Fill(ds, "list0");
  2564.  
  2565.                 MARKER = ds.Tables["list0"].Rows[0][0].ToString().Insert(6, "e");
  2566.  
  2567.                 R = "UPDATE BJRUSMARC..RUSM set POL='" + MARKER + "' WHERE MET=0 AND IDMAIN=" + IDM.ToString();
  2568.  
  2569.                 command = new SqlCommand(R, con);
  2570.  
  2571.                 con.Open();
  2572.  
  2573.                 command.CommandTimeout = 1200;
  2574.  
  2575.                 command.ExecuteNonQuery();
  2576.  
  2577.                 con.Close();
  2578.  
  2579.             } // Издание картографическое
  2580.  
  2581.             else
  2582.  
  2583.             {
  2584.  
  2585.                 if (DSORT == "Издание музыкальное")
  2586.  
  2587.                 {
  2588.  
  2589.                     //-- Модификация МАРКЕРА
  2590.  
  2591.                     R = " SELECT POL FROM BJRUSMARC..RUSM  WHERE MET=0 AND IDMAIN=" + IDM.ToString();
  2592.  
  2593.                     da.SelectCommand = new SqlCommand();
  2594.  
  2595.                     da.SelectCommand.CommandText = R;
  2596.  
  2597.                     da.SelectCommand.Connection = con;
  2598.  
  2599.                     da.SelectCommand.CommandTimeout = 1200;
  2600.  
  2601.                     ds = new DataSet();
  2602.  
  2603.                     da.Fill(ds, "list0");
  2604.  
  2605.                     MARKER = ds.Tables["list0"].Rows[0][0].ToString().Insert(6, "c");
  2606.  
  2607.                     R = "UPDATE BJRUSMARC..RUSM set POL='" + MARKER + "' WHERE MET=0 AND IDMAIN=" + IDM.ToString();
  2608.  
  2609.                     command = new SqlCommand(R, con);
  2610.  
  2611.                     con.Open();
  2612.  
  2613.                     command.CommandTimeout = 1200;
  2614.  
  2615.                     command.ExecuteNonQuery();
  2616.  
  2617.                     con.Close();
  2618.  
  2619.                 } // Издание музыкальное
  2620.  
  2621.             } // Модификация по. 6 МАРКЕРА
  2622.  
  2623.             //M0: ;
  2624.  
  2625.             R = " SELECT IDLEVEL FROM " + BAZA + "..MAIN WHERE ID = " + IDM.ToString();
  2626.  
  2627.             da.SelectCommand = new SqlCommand();
  2628.  
  2629.             da.SelectCommand.CommandText = R;
  2630.  
  2631.             da.SelectCommand.Connection = con;
  2632.  
  2633.             da.SelectCommand.CommandTimeout = 1200;
  2634.  
  2635.             ds = new DataSet();
  2636.  
  2637.             KK2 = da.Fill(ds, "list0");
  2638.  
  2639.             IDL = Int32.Parse(ds.Tables["list0"].Rows[0][0].ToString());
  2640.  
  2641.             //-- MAIN.IDLEVEL =
  2642.  
  2643.             //--   1  - МОНОГРАФИЯ
  2644.  
  2645.             //-- 100  - ПОДБОРКА. СВОДНЫЙ УРОВЕНЬ
  2646.  
  2647.             //-- - 2  - МНОГОТОМНОЕ ИЗДАНИЕ. СВОДНЫЙ УРОВЕНЬ
  2648.  
  2649.             //--   2  - ТОМ МНОГОТОМНОГО ИЗДАНИЯ
  2650.  
  2651.             //-- - 3  - СЕРИЯ. СВОДНЫЙ УРОВЕНЬ
  2652.  
  2653.             //-- -33  - ПОДСЕРИЯ. СВОДНЫЙ УРОВЕНЬ
  2654.  
  2655.             //--   3  - ВЫПУСК СЕРИИ
  2656.  
  2657.             //-- - 4  - СБОРНИК. СВОДНЫЙ УРОВЕНЬ
  2658.  
  2659.             //--   4  - ЧАСТЬ СБОРНИКА
  2660.  
  2661.             //-- - 5  - ПРОДОЛЖАЮЩЕЕСЯ ИЗДАНИЕ. СВОДНЫЙ УРОВЕНЬ
  2662.  
  2663.             //--   5  - ВЫПУСК (НОМЕР) ПРОДОЛЖАЮЩЕГОСЯ ИЗДАНИЯ
  2664.  
  2665.             if (IDL > 0 || IDL == -100 || IDL == -2 || IDL == -4)
  2666.  
  2667.             {
  2668.  
  2669.                 METU = 105;
  2670.  
  2671.                 //-- Модификация поля 105
  2672.  
  2673.                 //--105  ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ТЕКСТОВЫЕ МАТЕРИАЛЫ, МОНОГРАФИЧЕСКИЕ
  2674.  
  2675.                 //-- Поле содержит кодированные данные, относящиеся к монографическим текстовым изданиям.
  2676.  
  2677.                 //-- Примечание: для описания монографических серий используется поле 110.
  2678.  
  2679.                 //--
  2680.  
  2681.                 //--$a Кодированные данные о монографическом текстовом документе
  2682.  
  2683.                 //--    Все данные, записываемые в подполе $a, идентифицируются позицией символа
  2684.  
  2685.                 //-- в подполе.
  2686.  
  2687.                 //--    Позиции символов нумеруются от 0 до 12. Все позиции символов должны
  2688.  
  2689.                 //-- быть представлены в подполе. Если элемент данных не кодируется,
  2690.  
  2691.                 //-- соответствующие позиции заполняются символами-заполнителями: ‘ | ’.
  2692.  
  2693.                 //-- Если используется лишь часть возможных позиций, отведенных для данного
  2694.  
  2695.                 //-- элемента, то неиспользуемые позиции содержат символ пробела: '#'.
  2696.  
  2697.                 //--    Элементы фиксированной длины подполя $a:
  2698.  
  2699.                 //--Наименование элемента данных Количество символов Позиции символов
  2700.  
  2701.                 //-- Коды иллюстраций               4                   0-3
  2702.  
  2703.                 //-- Коды формы содержания          4                   4-7
  2704.  
  2705.                 //-- Код конференции или совещания  1                    8
  2706.  
  2707.                 //-- Индикатор юбилейного издания   1                    9
  2708.  
  2709.                 //-- Индикатор указателя            1                   10
  2710.  
  2711.                 //-- Код литературного жанра        1                   11
  2712.  
  2713.                 //-- Код биографии                  1                   12  
  2714.  
  2715.                 //--
  2716.  
  2717.                 //--   Коды иллюстраций
  2718.  
  2719.                 //--    Для кодов иллюстраций отводится четыре позиции символов, которые
  2720.  
  2721.                 //--     заполняются слева направо. Неиспользуемые позиции заполняются
  2722.  
  2723.                 //--     пробелами (#). Если для описания документа могут быть применены
  2724.  
  2725.                 //--     более четырех кодов (т.е. присутствуют более четырех типов
  2726.  
  2727.                 //--     иллюстраций), следует выбрать первые четыре в том порядке, в
  2728.  
  2729.                 //--     котором они приведены в списке ниже.
  2730.  
  2731.                 //--    Если элемент данных не используется, позиции символов 0-3 заполняются
  2732.  
  2733.                 //--     символами-заполнителями ' | '. Если элемент данных используется, но
  2734.  
  2735.                 //--     присутствует менее четырех типов иллюстраций, оставшиеся позиции
  2736.  
  2737.                 //--     заполняются символами пробела: '#'.
  2738.  
  2739.                 //--  a = иллюстрации
  2740.  
  2741.                 //--        Используется для типов иллюстраций, которые не включены в перечень,
  2742.  
  2743.                 //--         приведенный ниже, например диаграммы, графики или типы иллюстраций,
  2744.  
  2745.                 //--         не кодируемые отдельно.
  2746.  
  2747.                 //--  b = карты
  2748.  
  2749.                 //--  с = портреты. Индивидуальные и групповые.
  2750.  
  2751.                 //--  d = морские карты, предназначенные для использования в навигации.
  2752.  
  2753.                 //--  е = планы, например, планы территорий со зданиями.
  2754.  
  2755.                 //--  f = вкладные листы, содержащие иллюстративные материалы с текстовыми
  2756.  
  2757.                 //--       пояснениями или без них и не являющиеся частью страниц или листов
  2758.  
  2759.                 //--       основного текста.
  2760.  
  2761.                 //--  g = музыкальные произведения
  2762.  
  2763.                 //--     Только в текстовой форме. Для звукозаписей, являющихся
  2764.  
  2765.                 //--       сопроводительным материалом, используется код 'm'.
  2766.  
  2767.                 //--  h = факсимиле
  2768.  
  2769.                 //--     Воспроизведение части или целого документа средствами репродуцирования
  2770.  
  2771.                 //--      или печати.
  2772.  
  2773.                 //--  i = гербы
  2774.  
  2775.                 //--  j = генеалогические таблицы, схемы
  2776.  
  2777.                 //--  k = формы (бланки, анкеты и т.д. )
  2778.  
  2779.                 //--  l = образцы (шаблоны и т. п. )
  2780.  
  2781.                 //--  m = звукозаписи. Например, пластинка или диск с звукозаписью, вложенные
  2782.  
  2783.                 //--       в кармашек книги
  2784.  
  2785.                 //--  n = прозрачные пленочные материалы (transparencies)
  2786.  
  2787.                 //--     Например, набор transparencies, в кармашке, прикрепленном к книге.
  2788.  
  2789.                 //--  o = украшения и орнаменты, раскрашенные буквы в рукописи
  2790.  
  2791.                 //--  y = без иллюстраций
  2792.  
  2793.                 //--     Допускается единственная форма использования: y###.
  2794.  
  2795.                 //--
  2796.  
  2797.                 //-- Коды формы содержания
  2798.  
  2799.                 //--  а = библиографическое издание
  2800.  
  2801.                 //--  b = каталог
  2802.  
  2803.                 //--  c = указатель
  2804.  
  2805.                 //--    Алфавитный перечень имен или предметов с информацией о них в этой же
  2806.  
  2807.                 //--     работе или где-либо еще.
  2808.  
  2809.                 //--    Если документ содержит указатель к собственному тексту, позиция
  2810.  
  2811.                 //--     105$a/10 (Индикатор указателя) должна содержать 1.
  2812.  
  2813.                 //--  d = реферат или резюме, включая описательные, справочные и информационные
  2814.  
  2815.                 //--     рефераты
  2816.  
  2817.                 //--  e = словарь
  2818.  
  2819.                 //--  f = энциклопедия
  2820.  
  2821.                 //--  g = справочное издание
  2822.  
  2823.                 //--  h = описание проекта
  2824.  
  2825.                 //--  i = статистические данные
  2826.  
  2827.                 //--  j = учебник
  2828.  
  2829.                 //--  k = патентный документ
  2830.  
  2831.                 //--  l = стандарт
  2832.  
  2833.                 //--  m = диссертация (оригинал)
  2834.  
  2835.                 //--  n = законы и законодательные акты
  2836.  
  2837.                 //--  o = цифровые таблицы
  2838.  
  2839.                 //--  p = технический отчет
  2840.  
  2841.                 //--  q = экзаменационный лист
  2842.  
  2843.                 //--  r = литературный обзор/рецензия
  2844.  
  2845.                 //--  s = договоры
  2846.  
  2847.                 //--  t = карикатуры или комиксы
  2848.  
  2849.                 //--  v = диссертация (переработанная)
  2850.  
  2851.                 //--  w = религиозные тексты
  2852.  
  2853.                 //--  z = другой тип содержания
  2854.  
  2855.                 //--
  2856.  
  2857.                 //-- Код конференции
  2858.  
  2859.                 //--  0 = не является изданием, публикуемым от имени конференции
  2860.  
  2861.                 //--  1 = является изданием, публикуемым от имени конференции
  2862.  
  2863.                 //--
  2864.  
  2865.                 //-- Индикатор юбилейного издания
  2866.  
  2867.                 //--  0 = не является юбилейным изданием
  2868.  
  2869.                 //--  1 = является юбилейным изданием
  2870.  
  2871.                 //--
  2872.  
  2873.                 //-- Индикатор указателя
  2874.  
  2875.                 //--  0 = указатель отсутствует
  2876.  
  2877.                 //--  1 = указатель имеется
  2878.  
  2879.                 //-- Код литературного жанра
  2880.  
  2881.                 //--  a = художественная литература
  2882.  
  2883.                 //--  b = драма. Включая телевизионные пьесы, сценарии и т.д.
  2884.  
  2885.                 //--  с = очерки, эссе
  2886.  
  2887.                 //--  d = юмор, сатира Но не карикатура и т.д.
  2888.  
  2889.                 //--  е = письма как литературная форма
  2890.  
  2891.                 //--  f = короткие рассказы
  2892.  
  2893.                 //--  g = поэтические произведения, включая нелитературные работы в стихах
  2894.  
  2895.                 //--  h = речи и другие риторические формы
  2896.  
  2897.                 //--  i = либретто
  2898.  
  2899.                 //--  y = нелитературный текст
  2900.  
  2901.                 //--  z = смешанные и другие литературные формы
  2902.  
  2903.                 //--
  2904.  
  2905.                 //-- Код биографии
  2906.  
  2907.                 //--  a = автобиография, в том числе письма, переписка.
  2908.  
  2909.                 //--  b = биография отдельного лица
  2910.  
  2911.                 //--  с = коллективная биография, например, биография семьи.
  2912.  
  2913.                 //--  d = сборник биографической информации
  2914.  
  2915.                 //--     Например, справочник «Кто есть кто».
  2916.  
  2917.                 //--  y = не биография
  2918.  
  2919.                 //--
  2920.  
  2921.                 //--$9 Код ступени высшего профессионального образования
  2922.  
  2923.                 //--  Двухсимвольный код ступени высшего профессионального образования
  2924.  
  2925.                 //--   (ступени профессионального образования приведены в соответствии с
  2926.  
  2927.                 //--   законом о высшем образовании РФ).
  2928.  
  2929.                 //--  Подполе используется при описании специфических видов документов
  2930.  
  2931.                 //--   (диссертации, авторефераты, дипломные работы, работы в форме научного
  2932.  
  2933.                 //--   доклада), для указания научной квалификации, на соискание которой
  2934.  
  2935.                 //--   выдвинута описываемая работа.
  2936.  
  2937.                 //--   aa = высшая школа - неполное высшее образование
  2938.  
  2939.                 //--   ab = высшая школа - бакалавр
  2940.  
  2941.                 //--   ac = высшая школа - специалист
  2942.  
  2943.                 //--   ad = высшая школа - магистр
  2944.  
  2945.                 //--   au = высшая школа - неизвестно
  2946.  
  2947.                 //--   ba = аспирантура - кандидат наук
  2948.  
  2949.                 //--   ca = докторантура - доктор наук
  2950.  
  2951.                 //--   zz = другое
  2952.  
  2953.                 R = " SELECT  POL FROM BJRUSMARC..RUSM "
  2954.  
  2955.                    + " WHERE IDMAIN = " + IDM.ToString() + " AND MET = " + METU.ToString();
  2956.  
  2957.                 da.SelectCommand = new SqlCommand();
  2958.  
  2959.                 da.SelectCommand.CommandText = R;
  2960.  
  2961.                 da.SelectCommand.Connection = con;
  2962.  
  2963.                 da.SelectCommand.CommandTimeout = 1200;
  2964.  
  2965.                 ds = new DataSet();
  2966.  
  2967.                 POL = ds.Tables["list0"].Rows[0][0].ToString();
  2968.  
  2969.                 //-- Модификация поля 105
  2970.  
  2971.                 P4 = POL.Substring(0, 4);
  2972.  
  2973.                 switch (DSORT)
  2974.  
  2975.                 {
  2976.  
  2977.                     case "Издание картографическое":
  2978.  
  2979.                         P4 = OBR1_P4("b", P4);
  2980.  
  2981.                         break; // Издание картографическое
  2982.  
  2983.                     case "Издание музыкальное":
  2984.  
  2985.                         P4 = OBR1_P4("g", P4);
  2986.  
  2987.                         break; //
  2988.  
  2989.                     case "Издание листовое":
  2990.  
  2991.                         P4 = OBR1_P4("f", P4);
  2992.  
  2993.                         break; // Издание листовое
  2994.  
  2995.                 }
  2996.  
  2997.                 P4.PadRight(4);
  2998.  
  2999.                 if (P4 != POL.Substring(0, 4))
  3000.  
  3001.                 { // поз. 0-3 поля POL изменились
  3002.  
  3003.                     POL = P4 + POL.Substring(5);
  3004.  
  3005.                     R = "UPDATE BJRUSMARC..RUSM set POL='" + POL + "' WHERE MET=0 AND IDMAIN=" + IDM.ToString();
  3006.  
  3007.                     command = new SqlCommand(R, con);
  3008.  
  3009.                     con.Open();
  3010.  
  3011.                     command.CommandTimeout = 1200;
  3012.  
  3013.                     command.ExecuteNonQuery();
  3014.  
  3015.                     con.Close();
  3016.  
  3017.                 }
  3018.  
  3019.                 //-- Модификация поля 105 поз. 4-7
  3020.  
  3021.                 P4 = POL.Substring(4, 4);
  3022.  
  3023.                 switch (DSORT)
  3024.  
  3025.                 {
  3026.  
  3027.                     case "Издание официальное":
  3028.  
  3029.                         P4 = OBR1_P4("n", P4);
  3030.  
  3031.                         break;
  3032.  
  3033.                     case "Издание справочное":
  3034.  
  3035.                         P4 = OBR1_P4("g", P4);
  3036.  
  3037.                         break;
  3038.  
  3039.                     case "Каталог":
  3040.  
  3041.                         P4 = OBR1_P4("b", P4);
  3042.  
  3043.                         break;
  3044.  
  3045.                     case "Словарь":
  3046.  
  3047.                         P4 = OBR1_P4("e", P4);
  3048.  
  3049.                         break;
  3050.  
  3051.                     case "Учебник":
  3052.  
  3053.                         P4 = OBR1_P4("j", P4);
  3054.  
  3055.                         break;
  3056.  
  3057.                     case "Энциклопедия":
  3058.  
  3059.                         P4 = OBR1_P4("f", P4);
  3060.  
  3061.                         break;
  3062.  
  3063.                 }
  3064.  
  3065.                 P4.PadRight(4);
  3066.  
  3067.                 if (P4 != POL.Substring(4, 4))
  3068.  
  3069.                 { // поз. 4-7 поля POL изменились
  3070.  
  3071.                     POL = POL.Substring(0, 4) + P4 + POL.Substring(8, 30);
  3072.  
  3073.                     R = "UPDATE BJRUSMARC..RUSM set POL='" + POL + "' WHERE MET=0 AND IDMAIN=" + IDM.ToString();
  3074.  
  3075.                     command = new SqlCommand(R, con);
  3076.  
  3077.                     con.Open();
  3078.  
  3079.                     command.CommandTimeout = 1200;
  3080.  
  3081.                     command.ExecuteNonQuery();
  3082.  
  3083.                     con.Close();
  3084.  
  3085.                 }
  3086.  
  3087.             } // IDL > 0 || IDL == -100 || IDL == -2 || IDL == -4
  3088.  
  3089.             else
  3090.  
  3091.             {
  3092.  
  3093.                 //-- - 3  - СЕРИЯ. СВОДНЫЙ УРОВЕНЬ
  3094.  
  3095.                 //-- -33  - ПОДСЕРИЯ. СВОДНЫЙ УРОВЕНЬ
  3096.  
  3097.                 //-- - 5  - ПРОДОЛЖАЮЩЕЕСЯ ИЗДАНИЕ. СВОДНЫЙ УРОВЕНЬ
  3098.  
  3099.                 METU = 110;
  3100.  
  3101.                 R = " SELECT  POL FROM BJRUSMARC..RUSM "
  3102.  
  3103.                  + " WHERE IDMAIN= " + IDM.ToString() + "AND MET= " + METU.ToString();
  3104.  
  3105.                 da.SelectCommand = new SqlCommand();
  3106.  
  3107.                 da.SelectCommand.CommandText = R;
  3108.  
  3109.                 da.SelectCommand.Connection = con;
  3110.  
  3111.                 da.SelectCommand.CommandTimeout = 1200;
  3112.  
  3113.                 ds = new DataSet();
  3114.  
  3115.                 POL = ds.Tables["list0"].Rows[0][0].ToString();
  3116.  
  3117.                 //--110 ПОЛЕ КОДИРОВАННЫХ ДАННЫХ: ПРОДОЛЖАЮЩИЕСЯ РЕСУРСЫ
  3118.  
  3119.                 //-- Обязательное в записи высшего уровня, составляемой для описания
  3120.  
  3121.                 //--   продолжающегося ресурса в целом.
  3122.  
  3123.                 //-- Примечание: Указание на содержание отдельных выпусков продолжающегося
  3124.  
  3125.                 //--  ресурса может (но не является обязательным) размещаться в позициях
  3126.  
  3127.                 //--  110$a/4-6 записи уровня физической единицы, описывающей отдельный выпуск.
  3128.  
  3129.                 //-- Допускается также использование в записи уровня физической единицы
  3130.  
  3131.                 //--  позиции 110$a/7, если отдельный/отдельные выпуски содержат материалы
  3132.  
  3133.                 //--  конференции, однако, отражение этих материалов - не главная функция
  3134.  
  3135.                 //--  продолжающегося ресурса в целом (позиция $a/7 записи высшего уровня
  3136.  
  3137.                 //--  содержит 0).
  3138.  
  3139.                 //--$a Кодированные данные продолжающегося ресурса
  3140.  
  3141.                 //-- Все данные, записываемые в подполе $a, идентифицируются позицией символа
  3142.  
  3143.                 //--  в подполе.
  3144.  
  3145.                 //-- Позиции символов нумеруются от 0 до 10. Все позиции символов должны
  3146.  
  3147.                 //--  быть представлены в подполе.
  3148.  
  3149.                 //-- Наименование элемента данных               Количество символов Позиции символов
  3150.  
  3151.                 //-- Определитель вида продолжающегося ресурса  1                     0
  3152.  
  3153.                 //-- Периодичность издания                      1                     1
  3154.  
  3155.                 //-- Регулярность                               1                     2
  3156.  
  3157.                 //-- Код вида материала                         1                     3
  3158.  
  3159.                 //-- Код характера содержания                   3                    4-6
  3160.  
  3161.                 //-- Индикатор материалов конференции           1                     7
  3162.  
  3163.                 //-- Код наличия титульного листа               1                     8
  3164.  
  3165.                 //-- Код наличия указателя                      1                     9
  3166.  
  3167.                 //-- Код наличия сводного указателя             1                     10
  3168.  
  3169.                 //--
  3170.  
  3171.                 //--  Определитель вида продолжающегося ресурса
  3172.  
  3173.                 //--   Односимвольный код, указывающий на вид продолжающегося ресурса.
  3174.  
  3175.                 //--    Заполнение обязательно, если поле 110 приводится в записи.
  3176.  
  3177.                 //--  a = периодическое издание
  3178.  
  3179.                 //--    Сериальное издание, выходящее через определенные промежутки времени,
  3180.  
  3181.                 //--     как правило, постоянным для каждого года числом номеров (выпусков),
  3182.  
  3183.                 //--     не повторяющимися по содержанию, однотипно оформленными нумерованными
  3184.  
  3185.                 //--     и (или) датированными выпусками, имеющими одинаковое название
  3186.  
  3187.                 //--    (ГОСТ 7.60-2003).
  3188.  
  3189.                 //--  b = монографическая серия
  3190.  
  3191.                 //--    Совокупность томов, объединенных общностью замысла, тематики, целевым
  3192.  
  3193.                 //--     или читательским назначением.
  3194.  
  3195.                 //--  с = газета
  3196.  
  3197.                 //--  е = интегрируемое издание со сменными листами
  3198.  
  3199.                 //--  f = база данных
  3200.  
  3201.                 //--    Коллекция логически взаимосвязанных данных, собранных вместе в виде
  3202.  
  3203.                 //--     одного или нескольких компьютерных файлов, как правило, создаваемая и управляемая с помощью системы управления базой данных
  3204.  
  3205.                 //--  g = обновляемый веб-сайт
  3206.  
  3207.                 //--  z = другие
  3208.  
  3209.                 //--
  3210.  
  3211.                 //-- Периодичность издания
  3212.  
  3213.                 //--  Заполнение обязательное для периодического издания.
  3214.  
  3215.                 //--   a = ежедневно
  3216.  
  3217.                 //--   b = дважды в неделю
  3218.  
  3219.                 //--   с = еженедельно
  3220.  
  3221.                 //--   d = раз в две недели
  3222.  
  3223.                 //--   е = дважды в месяц
  3224.  
  3225.                 //--   f = ежемесячно
  3226.  
  3227.                 //--   g = раз в два месяца
  3228.  
  3229.                 //--   h = ежеквартально
  3230.  
  3231.                 //--   i = три раза в год
  3232.  
  3233.                 //--   j = дважды в год
  3234.  
  3235.                 //--   k = ежегодно
  3236.  
  3237.                 //--   l = раз в два года
  3238.  
  3239.                 //--   m = раз в три года
  3240.  
  3241.                 //--   n = три раза в неделю
  3242.  
  3243.                 //--   o = три раза в месяц
  3244.  
  3245.                 //--   p = обновляется постоянно
  3246.  
  3247.                 //--   u = неизвестно
  3248.  
  3249.                 //--   y = периодичность не определена (т.е. нерегулярно); см. также поз. симв. 2
  3250.  
  3251.                 //--   z = другая  
  3252.  
  3253.                 //--
  3254.  
  3255.                 //-- Регулярность
  3256.  
  3257.                 //--  a = регулярный
  3258.  
  3259.                 //--  b = нормализованный нерегулярный
  3260.  
  3261.                 //--   Продолжающийся ресурс не является полностью регулярным, но
  3262.  
  3263.                 //--    нерегулярность его заранее определена. Например, ежемесячное издание,
  3264.  
  3265.                 //--    за исключением июля-августа.
  3266.  
  3267.                 //--  u = не известно
  3268.  
  3269.                 //--  у = нерегулярный
  3270.  
  3271.                 //--
  3272.  
  3273.                 //-- Код вида материала
  3274.  
  3275.                 //--  а = библиографическое издание
  3276.  
  3277.                 //--  b = каталог
  3278.  
  3279.                 //--  c = указатель
  3280.  
  3281.                 //--  d = реферат или резюме, включая описательные, справочные и информационные рефераты
  3282.  
  3283.                 //--  e = словарь
  3284.  
  3285.                 //--  f = энциклопедия
  3286.  
  3287.                 //--  g = справочное издание
  3288.  
  3289.                 //--  h = ежегодный отчет / ежегодный обзор
  3290.  
  3291.                 //--  i = статистический отчет / обзор
  3292.  
  3293.                 //--  j = учебник
  3294.  
  3295.                 //--  k = обзор
  3296.  
  3297.                 //--    Продолжающийся ресурс, содержащий обзор, например, книг, кинофильмов и т.д.
  3298.  
  3299.                 //--     (но не обзоры событий и не статистические обзоры).
  3300.  
  3301.                 //--  l = законодательные акты
  3302.  
  3303.                 //--  m = судебные отчеты и сборники выдержек из решений судов
  3304.  
  3305.                 //--  n = юридические статьи
  3306.  
  3307.                 //--  o = случаи из судебной практики и их комментарии
  3308.  
  3309.                 //--  p = биографии. Например, справочник "Who is who".
  3310.  
  3311.                 //--  r = текущие периодические обзоры
  3312.  
  3313.                 //--  t = карикатуры или комиксы
  3314.  
  3315.                 //--  z = другой тип содержания
  3316.  
  3317.                 //--
  3318.  
  3319.                 //-- Код характера содержания
  3320.  
  3321.                 //--  Трехсимвольный код, показывающий, содержит ли данный продолжающийся
  3322.  
  3323.                 //--   ресурс материалы одного или более типов из тех, что перечислены для
  3324.  
  3325.                 //--   позиции $a/3. Необходимо отличать от характеристики самого
  3326.  
  3327.                 //--   продолжающегося ресурса, размещаемой в позиции $a/3.
  3328.  
  3329.                 //--  Может быть указано до трех кодов (выравниваемых влево); неиспользуемые
  3330.  
  3331.                 //--   позиции заполняются пробелами (#). Если для описания ресурса могут быть
  3332.  
  3333.                 //--   применены более трех кодов (т.е. присутствуют более трех типов материалов),
  3334.  
  3335.                 //--   следует выбрать первые три кода в том порядке, в котором они приведены
  3336.  
  3337.                 //--   в списке.
  3338.  
  3339.                 //--  Если элемент данных не используется, позиции символов 0-3 заполняются
  3340.  
  3341.                 //--   символами-заполнителями ' | '.
  3342.  
  3343.  
  3344.  
  3345.                 //-- Индикатор материалов конференции
  3346.  
  3347.                 //--  Односимвольный код, указывающий, что продолжающийся ресурс содержит
  3348.  
  3349.                 //--   труды, отчеты или краткое описание работы конференции, совещания,
  3350.  
  3351.                 //--   семинара, или симпозиума. Например, труды ежегодной конференции.
  3352.  
  3353.                 //-- 0 = не является изданием, публикуемым от имени конференции
  3354.  
  3355.                 //-- 1 = является изданием, публикуемым от имени конференции
  3356.  
  3357.                 //--
  3358.  
  3359.                 //-- Код доступности титульного листа
  3360.  
  3361.                 //--  а = титульный лист в последнем выпуске тома - не прикреплен
  3362.  
  3363.                 //--  b = титульный лист в последнем выпуске тома - прикреплен
  3364.  
  3365.                 //--  c = титульный лист в первом выпуске следующего тома - не прикреплен
  3366.  
  3367.                 //--  d = титульный лист в первом выпуске следующего тома - прикреплен
  3368.  
  3369.                 //--  e = титульный лист публикуется отдельно - свободно по заказу
  3370.  
  3371.                 //--  f = титульный лист публикуется отдельно - свободно, высылается автоматически
  3372.  
  3373.                 //--  g = титульный лист публикуется отдельно - покупается - по заказу
  3374.  
  3375.                 //--  u = не известно ко времени составления записи
  3376.  
  3377.                 //--  y = титульный лист не издается
  3378.  
  3379.                 //--  z = другое
  3380.  
  3381.                 //--
  3382.  
  3383.                 //-- Код доступности указателя
  3384.  
  3385.                 //--  a = каждый выпуск содержит указатель к содержанию - не прикреплен
  3386.  
  3387.                 //--  b = указатель к содержанию - в последнем выпуске тома - не прикреплен - с самостоятельной нумерацией страниц
  3388.  
  3389.                 //--  c = указатель к содержанию - в последнем выпуске тома - с ненумерованными страницами
  3390.  
  3391.                 //--  d = указатель к содержанию - в последнем выпуске тома - прикреплен
  3392.  
  3393.                 //--  е = указатель к содержанию - в первом выпуске следующего тома - не прикреплен - с самостоятельной нумерацией страниц
  3394.  
  3395.                 //--  f = указатель к содержанию - в первом выпуске следующего тома - не прикреплен - с ненумерованными страницами
  3396.  
  3397.                 //--  g = указатель к содержанию - в первом выпуске следующего тома - прикреплен
  3398.  
  3399.                 //--  h = публикуется отдельно - свободно - рассылается автоматически
  3400.  
  3401.                 //--  i = публикуется отдельно - свободно по запросу
  3402.  
  3403.                 //--  j = публикуется отдельно - переплет от издателя - свободно - рассылается автоматически
  3404.  
  3405.                 //--  k = публикуется отдельно - переплет от издателя - свободно по запросу
  3406.  
  3407.                 //--  l = публикуется отдельно - переплет от издателя - продается по запросу
  3408.  
  3409.                 //--  m = указатель является сериальным изданием и издается в качестве приложения или подсерии основного сериального издания.
  3410.  
  3411.                 //--  u = не известно к моменту составления записи
  3412.  
  3413.                 //--  y = указатель отсутствует
  3414.  
  3415.                 //--  z = другое
  3416.  
  3417.                 //--
  3418.  
  3419.                 //-- Код наличия сводного указателя
  3420.  
  3421.                 //--  0 = нет сводного указателя или оглавления
  3422.  
  3423.                 //--  1 = имеется сводный указатель или оглавление
  3424.  
  3425.                 //--
  3426.  
  3427.                 //-- Модификация поля 110
  3428.  
  3429.                 P4 = POL.Substring(3, 4);
  3430.  
  3431.                 switch (DSORT)
  3432.  
  3433.                 {
  3434.  
  3435.                     case "Энциклопедия":
  3436.  
  3437.                         P4 = OBR1_P4("f", P4);
  3438.  
  3439.                         break;
  3440.  
  3441.                     //-- Код вида материала
  3442.  
  3443.                     //--  b = каталог
  3444.  
  3445.                     //--  e = словарь
  3446.  
  3447.                     //--  f = энциклопедия
  3448.  
  3449.                     //--  g = справочное издание
  3450.  
  3451.                     //--  j = учебник
  3452.  
  3453.                     case "Издание справочное":
  3454.  
  3455.                         P4 = OBR1_P4("g", P4);
  3456.  
  3457.                         break;
  3458.  
  3459.                     case "Каталог":
  3460.  
  3461.                         P4 = OBR1_P4("b", P4);
  3462.  
  3463.                         break;
  3464.  
  3465.                     case "Словарь":
  3466.  
  3467.                         P4 = OBR1_P4("e", P4);
  3468.  
  3469.                         break;
  3470.  
  3471.                     case "Учебник":
  3472.  
  3473.                         P4 = OBR1_P4("j", P4);
  3474.  
  3475.                         break;
  3476.  
  3477.                 } // switch
  3478.  
  3479.                 P4.PadRight(4);
  3480.  
  3481.                 //                if (P4.Equals(POL.Substring(4, 4)) == false) { // поз. 4-7 поля POL изменились
  3482.  
  3483.                 if (P4 != POL.Substring(4, 4))
  3484.  
  3485.                 {  //  поз. 4-7 поля POL изменились
  3486.  
  3487.                     POL = POL.Substring(0, 4) + P4 + POL.Substring(8);
  3488.  
  3489.                     R = "UPDATE BJRUSMARC..RUSM set POL='" + POL + "' WHERE MET=0 AND IDMAIN=" + IDM.ToString();
  3490.  
  3491.                     command = new SqlCommand(R, con);
  3492.  
  3493.                     con.Open();
  3494.  
  3495.                     command.CommandTimeout = 1200;
  3496.  
  3497.                     command.ExecuteNonQuery();
  3498.  
  3499.                     con.Close();
  3500.  
  3501.                 } // IDL == -3 || IDL == -33 || IDL == -5
  3502.  
  3503.             }
  3504.  
  3505.         }// OBR1 - Вид обработки = 1 - Вид издания Поле BJ921b
  3506.  
  3507.         //
  3508.  
  3509. //-- =============================================
  3510.  
  3511. //-- Description:   Обработка P4 - нет вызовов
  3512.  
  3513. //-- =============================================
  3514.  
  3515.         private String OBR1_P4(String C, String P)
  3516.  
  3517.         {
  3518.  
  3519.             Int32 KK;
  3520.  
  3521.             if (P.Substring(0, 1) == "y")
  3522.  
  3523.             {
  3524.  
  3525.                 P = C;
  3526.  
  3527.             }
  3528.  
  3529.             else
  3530.  
  3531.             {
  3532.  
  3533.                 KK = P.IndexOf(' ');
  3534.  
  3535.                 if (KK != -1)
  3536.  
  3537.                 {
  3538.  
  3539.                     P = P.Substring(0, KK + 1) + C;
  3540.  
  3541.                 }
  3542.  
  3543.             }
  3544.  
  3545.             return P;
  3546.  
  3547.         }
  3548.  
  3549.         //
  3550.  
  3551. //-- =============================================
  3552.  
  3553. //-- Description:   Вид обработки = 3 - Иллюстрации
  3554.  
  3555. //-- =============================================
  3556.  
  3557.         private void OBR3(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
  3558.  
  3559.                                 String IND2, String IDENT, String DSORT)
  3560.  
  3561.         {
  3562.  
  3563.             String POL;
  3564.  
  3565.             Int32 KK;
  3566.  
  3567.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  3568.  
  3569.             + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  3570.  
  3571.             + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + DSORT + "') ";
  3572.  
  3573.             command = new SqlCommand(R, con);
  3574.  
  3575.             con.Open();
  3576.  
  3577.             command.CommandTimeout = 1200;
  3578.  
  3579.             command.ExecuteNonQuery();
  3580.  
  3581.             con.Close();
  3582.  
  3583.             //-- Если есть поле 105, ОНО КОРРЕКТИРУЕТСЯ
  3584.  
  3585.             R = " SELECT  POL FROM BJRUSMARC..RUSM "
  3586.  
  3587.               + " WHERE MET=105 AND IDBLOCK = " + DIDDATA.ToString();
  3588.  
  3589.             da.SelectCommand = new SqlCommand();
  3590.  
  3591.             da.SelectCommand.CommandText = R;
  3592.  
  3593.             da.SelectCommand.Connection = con;
  3594.  
  3595.             da.SelectCommand.CommandTimeout = 1200;
  3596.  
  3597.             ds = new DataSet();
  3598.  
  3599.             KK = da.Fill(ds, "list0");
  3600.  
  3601.             if (KK > 0)
  3602.  
  3603.             {
  3604.  
  3605.                 POL = ds.Tables["list0"].Rows[0][0].ToString();
  3606.  
  3607.                 //-- Коррекция ПОЛЯ 105a позиции 0-3
  3608.  
  3609.                 //--$a / (позиции символов 0-3) Коды иллюстраций
  3610.  
  3611.                 //--Для кодов иллюстраций отводится четыре позиции символов, которые заполняются слева направо. Неиспользуемые позиции заполняются пробелами (#). Если для описания документа могут быть применены более четырех кодов (т.е. присутствуют более четырех типов иллюстраций), следует выбрать первые четыре в том порядке, в котором они приведены в списке ниже.
  3612.  
  3613.                 //--Если элемент данных не используется, позиции символов 0-3 заполняются символами-заполнителями ' | '.
  3614.  
  3615.                 //   Если элемент данных используется, но присутствует менее четырех типов иллюстраций, оставшиеся позиции заполняются символами пробела: '#'.
  3616.  
  3617.                 //--
  3618.  
  3619.                 //--  a = иллюстрации
  3620.  
  3621.                 //--Используется для типов иллюстраций, которые не включены в перечень,
  3622.  
  3623.                 //-- приведенный ниже, например диаграммы, графики или типы иллюстраций,
  3624.  
  3625.                 //-- не кодируемые отдельно.
  3626.  
  3627.                 //--
  3628.  
  3629.                 if (POL.Substring(0, 1) == "y")
  3630.  
  3631.                 {
  3632.  
  3633.                     POL = "a";
  3634.  
  3635.                     R = " UPDATE BJRUSMARC..RUSM SET POL='" + POL.PadRight(4)
  3636.  
  3637.                         + "' WHERE MET=105 AND IDBLOCK=" + DIDDATA.ToString();
  3638.  
  3639.                     command = new SqlCommand(R, con);
  3640.  
  3641.                     con.Open();
  3642.  
  3643.                     command.CommandTimeout = 1200;
  3644.  
  3645.                     command.ExecuteNonQuery();
  3646.  
  3647.                     con.Close();
  3648.  
  3649.                 }
  3650.  
  3651.             }
  3652.  
  3653.         }
  3654.  
  3655.         //
  3656.  
  3657.         //-- =============================================
  3658.  
  3659.         //-- Description:   Вид обработки = 5 - поля описания старопечатных изданий
  3660.  
  3661.         //-- =============================================
  3662.  
  3663.         //private void OBR5(Int32 IDM, Int32 MNF, String MSF, Int32 DIDDATA, Int16 MET,
  3664.  
  3665.         //    String IND1, String IND2, String IDENT, String DSORT)
  3666.  
  3667.         //{
  3668.  
  3669.         //    String PREF;
  3670.  
  3671.         //    R = " SELECT  [NAME] FROM BJRUSMARC..BJ2RUSM "
  3672.  
  3673.         //      + " WHERE MNF= " + MNF.ToString() + "AND MSF='" + MSF + "'";
  3674.  
  3675.         //    da.SelectCommand = new SqlCommand();
  3676.  
  3677.         //    da.SelectCommand.CommandText = R;
  3678.  
  3679.         //    da.SelectCommand.Connection = con;
  3680.  
  3681.         //    da.SelectCommand.CommandTimeout = 1200;
  3682.  
  3683.         //    ds = new DataSet();
  3684.  
  3685.         //    da.Fill(ds, "list0");
  3686.  
  3687.         //    PREF = ds.Tables["list0"].Rows[0][0].ToString();
  3688.  
  3689.         //    R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  3690.  
  3691.         //    + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  3692.  
  3693.         //    + ",'" + IND1 + "',' " + IND2 + "','" + IDENT + "','" + PREF + "' +': '+ '" + DSORT + "') ";
  3694.  
  3695.         //    command = new SqlCommand(R, con);
  3696.  
  3697.         //    con.Open();
  3698.  
  3699.         //    command.CommandTimeout = 1200;
  3700.  
  3701.         //    command.ExecuteNonQuery();
  3702.  
  3703.         //    con.Close();
  3704.  
  3705.         //}
  3706.  
  3707.         //
  3708.  
  3709. //-- =============================================
  3710.  
  3711. //-- Description:   Вид обработки = 6 -  Фамилии
  3712.  
  3713. //-- =============================================
  3714.  
  3715.         private void OBR6(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1, String IND2,
  3716.  
  3717.             String IDENT, String DPPLAIN)
  3718.  
  3719.             // 2011.04.12 11:20
  3720.  
  3721.         {
  3722.  
  3723.             Int32 K, KK, KK2,K1,K2;
  3724.  
  3725.             String POL, T1;
  3726.  
  3727.             //-- 700 a - Фамилия первого автора
  3728.  
  3729.             //  -- Формирование точки доступа
  3730.  
  3731. // Anthony (Bloom, A.B.; 1914-2003)
  3732.  
  3733. //Chukovskaya, L.K.
  3734.  
  3735.             POL = "";
  3736.  
  3737.             K = DPPLAIN.IndexOf(',');
  3738.  
  3739.             K2 = DPPLAIN.IndexOf('(');
  3740.  
  3741.             if (K != -1) // есть запятая
  3742.  
  3743.             {
  3744.  
  3745.                 if (K2 != -1) // (
  3746.  
  3747.                 {
  3748.  
  3749.                     if (K2 < K) // До ( нет ,
  3750.  
  3751.                     {
  3752.  
  3753.                         //    -- 700a - Начальный элемент ввода - до запято
  3754.  
  3755.                         POL = DPPLAIN.Substring(K2 + 1).TrimEnd(' '); // после (
  3756.  
  3757.                         T1 = "";
  3758.  
  3759.                         DPPLAIN = DPPLAIN.Substring(0, K2).TrimEnd(' ');
  3760.  
  3761.                     }
  3762.  
  3763.                     else
  3764.  
  3765.                     { // , до (
  3766.  
  3767.                         T1 = DPPLAIN.Substring(K, K2-K); // от , до (
  3768.  
  3769.                         POL = DPPLAIN.Substring(K2 + 2).TrimStart(' '); // после (
  3770.  
  3771.                         DPPLAIN = DPPLAIN.Substring(0, K).TrimEnd(' '); // до запятой
  3772.  
  3773.                     }
  3774.  
  3775.                 }
  3776.  
  3777.                 else  // нет ( после запятой
  3778.  
  3779.                 {
  3780.  
  3781.                     T1 = DPPLAIN.Substring(K+1); // после запятой
  3782.  
  3783.                     DPPLAIN = DPPLAIN.Substring(0, K).TrimEnd(' '); // до запятой
  3784.  
  3785.                     POL = "";
  3786.  
  3787.                 }
  3788.  
  3789.                 T1 = T1.TrimStart(' ');
  3790.  
  3791.                 T1 = T1.TrimEnd(' ');
  3792.  
  3793.                 if (T1.Length > 0)
  3794.  
  3795.                 {
  3796.  
  3797.                     //    -- 700b Часть имени, кроме начального элемента ввода
  3798.  
  3799.                     R = "INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  3800.  
  3801.                     + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  3802.  
  3803.                     + ",' ','1','b','" + T1 + "') ";
  3804.  
  3805.                     command = new SqlCommand(R, con);
  3806.  
  3807.                     con.Open();
  3808.  
  3809.                     command.CommandTimeout = 1200;
  3810.  
  3811.                     command.ExecuteNonQuery();
  3812.  
  3813.                     con.Close();
  3814.  
  3815.                 }
  3816.  
  3817.             }  // END -- Есть запятая
  3818.  
  3819.             else  // нет запятой
  3820.  
  3821.             {
  3822.  
  3823.                 //    -- 700a - Начальный элемент ввода - до запятой ИЛИ до (
  3824.  
  3825.                 if (K2 != -1) // есть (
  3826.  
  3827.                 {
  3828.  
  3829.                     POL = DPPLAIN.Substring(K2 + 1).TrimStart(' '); // после (
  3830.  
  3831.                     DPPLAIN = DPPLAIN.Substring(0, K2).TrimEnd(' ');
  3832.  
  3833.                 } // Нет , есть (
  3834.  
  3835.             } //  нет запятой
  3836.  
  3837.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  3838.  
  3839.             + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  3840.  
  3841.             + ",' ','1','a','" + DPPLAIN + "') ";
  3842.  
  3843.             command = new SqlCommand(R, con);
  3844.  
  3845.             con.Open();
  3846.  
  3847.             command.CommandTimeout = 1200;
  3848.  
  3849.             command.ExecuteNonQuery();
  3850.  
  3851.             con.Close();
  3852.  
  3853.             while (POL.Length > 0)
  3854.  
  3855.             {
  3856.  
  3857.                 T1 = "";
  3858.  
  3859.                 K1 = POL.IndexOf(")");
  3860.  
  3861.                 if ((K1 != -1) && ((K1+1) < POL.Length))
  3862.  
  3863.                 {
  3864.  
  3865.                     T1 = POL.Substring(K1 + 1).TrimStart(' '); // Остаток после )
  3866.  
  3867.                     POL = POL.Substring(0, K1).TrimEnd(' ');
  3868.  
  3869.                 }
  3870.  
  3871.                 POL = POL.TrimEnd(')');
  3872.  
  3873.                 while ((K1 = POL.IndexOf(";")) != -1)
  3874.  
  3875.                 {
  3876.  
  3877.                     String T2;
  3878.  
  3879.                     T2 = POL.Substring(0, K1).TrimEnd(' ');
  3880.  
  3881.                     POL = POL.Substring(K1 + 1).TrimStart(' ');
  3882.  
  3883.                     if (testAFNAME(T2) == 1) // ДАТЫ
  3884.  
  3885.                     {
  3886.  
  3887.                         //    -- 700f Даты
  3888.  
  3889.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  3890.  
  3891.                         + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','f','" + T2 + "') ";
  3892.  
  3893.                         command = new SqlCommand(R, con);
  3894.  
  3895.                         con.Open();
  3896.  
  3897.                         command.CommandTimeout = 1200;
  3898.  
  3899.                         command.ExecuteNonQuery();
  3900.  
  3901.                         con.Close();
  3902.  
  3903.                     }
  3904.  
  3905.                     else
  3906.  
  3907.                     {
  3908.  
  3909.                         //    -- 700c Дополнение к именам, кроме дат
  3910.  
  3911.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  3912.  
  3913.                         + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','c','" + T2 + "') ";
  3914.  
  3915.                         command = new SqlCommand(R, con);
  3916.  
  3917.                         con.Open();
  3918.  
  3919.                         command.CommandTimeout = 1200;
  3920.  
  3921.                         command.ExecuteNonQuery();
  3922.  
  3923.                         con.Close();
  3924.  
  3925.                     }
  3926.  
  3927.                 }
  3928.  
  3929.                 POL = POL.TrimStart(' ');
  3930.  
  3931.                 POL = POL.TrimEnd(' ');
  3932.  
  3933.                 POL = POL.TrimEnd(')');
  3934.  
  3935.                 if (testAFNAME(POL) == 1) // ДАТЫ
  3936.  
  3937.                 {
  3938.  
  3939.                     //    -- 700f Даты
  3940.  
  3941.                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  3942.  
  3943.                     + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','f','" + POL + "') ";
  3944.  
  3945.                     command = new SqlCommand(R, con);
  3946.  
  3947.                     con.Open();
  3948.  
  3949.                     command.CommandTimeout = 1200;
  3950.  
  3951.                     command.ExecuteNonQuery();
  3952.  
  3953.                     con.Close();
  3954.  
  3955.                 }
  3956.  
  3957.                 else
  3958.  
  3959.                 {
  3960.  
  3961.                     //    -- 700c Дополнение к именам, кроме дат
  3962.  
  3963.                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  3964.  
  3965.                     + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','c','" + POL + "') ";
  3966.  
  3967.                     command = new SqlCommand(R, con);
  3968.  
  3969.                     con.Open();
  3970.  
  3971.                     command.CommandTimeout = 1200;
  3972.  
  3973.                     command.ExecuteNonQuery();
  3974.  
  3975.                     con.Close();
  3976.  
  3977.                 }
  3978.  
  3979.                 POL = T1;
  3980.  
  3981.             } // while pol.Length > 0
  3982.  
  3983.  
  3984.  
  3985.                 //    -- 700d Римские цифры
  3986.  
  3987.                 //    -- 700g Расширение инициалов личного имени
  3988.  
  3989.                 //-- РОЛЬ
  3990.  
  3991.                 R = " SELECT  PLAIN  "
  3992.  
  3993.                   + " FROM "+ BAZA + "..DATAEXTPLAIN P "
  3994.  
  3995.                 + " LEFT JOIN "+ BAZA + "..DATAEXT DE ON P.IDDATAEXT=DE.ID "
  3996.  
  3997.                   + " WHERE P.IDDATA= " + DIDDATA.ToString() + " AND MSFIELD = '$4' ";
  3998.  
  3999.                 da.SelectCommand = new SqlCommand();
  4000.  
  4001.                 da.SelectCommand.CommandText = R;
  4002.  
  4003.                 da.SelectCommand.Connection = con;
  4004.  
  4005.                 da.SelectCommand.CommandTimeout = 1200;
  4006.  
  4007.                 ds = new DataSet();
  4008.  
  4009.                 KK = da.Fill(ds, "list0");
  4010.  
  4011.                 if (KK == 0)
  4012.  
  4013.                 {
  4014.  
  4015.                     if (MET == 702)
  4016.  
  4017.                     {
  4018.  
  4019.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  4020.  
  4021.                         + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ","
  4022.  
  4023.                         + MET + ",' ','1','4','340') "; // Редактор
  4024.  
  4025.                         command = new SqlCommand(R, con);
  4026.  
  4027.                         con.Open();
  4028.  
  4029.                         command.CommandTimeout = 1200;
  4030.  
  4031.                         command.ExecuteNonQuery();
  4032.  
  4033.                         con.Close();
  4034.  
  4035.                     }
  4036.  
  4037.                 }
  4038.  
  4039.                 else
  4040.  
  4041.                 {
  4042.  
  4043.                     T1 = ds.Tables["list0"].Rows[0][0].ToString();
  4044.  
  4045.                     R = " SELECT  KOD FROM BJRUSMARC..ROLI R "
  4046.  
  4047.                         + " LEFT JOIN "+BAZA+"..LIST_3 L3 ON L3.NAME=R.NAME "
  4048.  
  4049.                       + " WHERE SHORTNAME= '" + T1 + "'";
  4050.  
  4051.                     da.SelectCommand = new SqlCommand();
  4052.  
  4053.                     da.SelectCommand.CommandText = R;
  4054.  
  4055.                     da.SelectCommand.Connection = con;
  4056.  
  4057.                     da.SelectCommand.CommandTimeout = 1200;
  4058.  
  4059.                     ds = new DataSet();
  4060.  
  4061.                     KK2 = da.Fill(ds, "list7003");
  4062.  
  4063.                     if (KK2 == 0)
  4064.  
  4065.                     {
  4066.  
  4067.                         String ROL = (MET != 700) ? "340" : "070";;
  4068.  
  4069.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  4070.  
  4071.                         + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','4','"+ROL+"') "; // Редактор
  4072.  
  4073.                         command = new SqlCommand(R, con);
  4074.  
  4075.                         con.Open();
  4076.  
  4077.                         command.CommandTimeout = 1200;
  4078.  
  4079.                         command.ExecuteNonQuery();
  4080.  
  4081.                         con.Close();
  4082.  
  4083.                     }
  4084.  
  4085.                     else
  4086.  
  4087.                     {
  4088.  
  4089.                         String TR = ds.Tables["list7003"].Rows[0][0].ToString();
  4090.  
  4091.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  4092.  
  4093.                         + " VALUES (" + IDM + "," + DIDDATA + "," + MET + ",' ','1','4','" + TR + "') ";
  4094.  
  4095.                         command = new SqlCommand(R, con);
  4096.  
  4097.                         con.Open();
  4098.  
  4099.                         command.CommandTimeout = 1200;
  4100.  
  4101.                         command.ExecuteNonQuery();
  4102.  
  4103.                         con.Close();
  4104.  
  4105.                     }
  4106.  
  4107.                 }
  4108.  
  4109.         } // OBR6 - Фамилии
  4110.  
  4111.         //
  4112.  
  4113. //-- =============================================
  4114.  
  4115. //-- Description:   Вид обработки = 9 - Сводный уровень
  4116.  
  4117. //--               Заглавие
  4118.  
  4119. //-- =============================================
  4120.  
  4121.         private void OBR9(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
  4122.  
  4123.             String IND2, String IDENT, String DSORT)
  4124.  
  4125.         {
  4126.  
  4127.             Int32 KCV, KK, KK2;
  4128.  
  4129.             String Inst, p461, ZAGL;
  4130.  
  4131.             KCV = Int32.Parse(DSORT);
  4132.  
  4133.             //-- Заглавие сводного уровня по ссылке=IDMAIN
  4134.  
  4135.             R = " SELECT  PLAIN FROM " + BAZA + "..DATAEXTPLAIN P "
  4136.  
  4137.               + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
  4138.  
  4139.               + " WHERE MNFIELD=200 AND MSFIELD='$a' AND P.IDMAIN=" + DSORT;
  4140.  
  4141.             da.SelectCommand = new SqlCommand();
  4142.  
  4143.             da.SelectCommand.CommandText = R;
  4144.  
  4145.             da.SelectCommand.Connection = con;
  4146.  
  4147.             da.SelectCommand.CommandTimeout = 1200;
  4148.  
  4149.             DataSet ds9 = new DataSet();
  4150.  
  4151.             Int32 K9 = da.Fill(ds9, "list9");
  4152.  
  4153.             if (K9 > 0)
  4154.  
  4155.             {
  4156.  
  4157.                 ZAGL = ds9.Tables["list9"].Rows[0][0].ToString(); // PLAIN cv.urovenj
  4158.  
  4159.                 //-- Запись Заглавия сводного уровня в 225a
  4160.  
  4161.                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  4162.  
  4163.                 + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  4164.  
  4165.                 + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + ZAGL + "') ";
  4166.  
  4167.                 command = new SqlCommand(R, con);
  4168.  
  4169.                 con.Open();
  4170.  
  4171.                 command.CommandTimeout = 1200;
  4172.  
  4173.                 command.ExecuteNonQuery();
  4174.  
  4175.                 con.Close();
  4176.  
  4177.                 R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P "
  4178.  
  4179.                   + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
  4180.  
  4181.                   + " WHERE MNFIELD=225 AND MSFIELD='$h' AND P.IDDATA=" + DIDDATA.ToString(); // Номер ТОМА
  4182.  
  4183.                 da.SelectCommand = new SqlCommand();
  4184.  
  4185.                 da.SelectCommand.CommandText = R;
  4186.  
  4187.                 da.SelectCommand.Connection = con;
  4188.  
  4189.                 da.SelectCommand.CommandTimeout = 1200;
  4190.  
  4191.                 ds9 = new DataSet();
  4192.  
  4193.                 KK = da.Fill(ds9, "list90");
  4194.  
  4195.                 if (KK > 0)
  4196.  
  4197.                 {
  4198.  
  4199.                     Inst = ds9.Tables["list90"].Rows[0][0].ToString();
  4200.  
  4201.                     //461  #0$1001RU\NLR\bibl\98765$12001#$vт. 6
  4202.  
  4203.                     p461 = "001"+PREFIX001 + DSORT.PadLeft(8, '0')
  4204.  
  4205.                         + (char)31 + "12001 " + (char)31 + "a" + ZAGL + (char)31 + "v" + Inst;
  4206.  
  4207.                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  4208.  
  4209.                     + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",461,' ','0'"
  4210.  
  4211.                     + ",'1','" + p461 + "') ";
  4212.  
  4213.                     command = new SqlCommand(R, con);
  4214.  
  4215.                     con.Open();
  4216.  
  4217.                     command.CommandTimeout = 1200;
  4218.  
  4219.                     command.ExecuteNonQuery();
  4220.  
  4221.                     con.Close();
  4222.  
  4223.                 }
  4224.  
  4225.  
  4226.  
  4227.                 R = " SELECT  PLAIN FROM " + BAZA + "..DATAEXTPLAIN P "
  4228.  
  4229.                   + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
  4230.  
  4231.                   + " WHERE MSFIELD='$v' AND P.IDDATA=" + DIDDATA.ToString();
  4232.  
  4233.                 da.SelectCommand = new SqlCommand();
  4234.  
  4235.                 da.SelectCommand.CommandText = R;
  4236.  
  4237.                 da.SelectCommand.Connection = con;
  4238.  
  4239.                 da.SelectCommand.CommandTimeout = 1200;
  4240.  
  4241.                 ds9 = new DataSet();
  4242.  
  4243.                 KK2 = da.Fill(ds9, "list92");
  4244.  
  4245.                 if (KK2 > 0)
  4246.  
  4247.                 {
  4248.  
  4249.                     Inst = ds9.Tables["list92"].Rows[0][0].ToString();
  4250.  
  4251.                     //461  #0$1001RU\NLR\bibl\98765$12001#$vт. 6
  4252.  
  4253.                     p461 = "001"+PREFIX001 + DSORT.PadLeft(8, '0')
  4254.  
  4255.                         + (char)31 + "12001 " + (char)31 + "a" + ZAGL + (char)31 + "v" + Inst;
  4256.  
  4257.                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  4258.  
  4259.                     + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",461,' ','0'"
  4260.  
  4261.                     + ",'1','" + p461 + "') ";
  4262.  
  4263.                     command = new SqlCommand(R, con);
  4264.  
  4265.                     con.Open();
  4266.  
  4267.                     command.CommandTimeout = 1200;
  4268.  
  4269.                     command.ExecuteNonQuery();
  4270.  
  4271.                     con.Close();
  4272.  
  4273.                 }
  4274.  
  4275.             }
  4276.  
  4277.         }
  4278.  
  4279.         //
  4280.  
  4281. //-- =============================================
  4282.  
  4283. //-- Description:   Вид обработки = OBR200 - Сведения об ответственности
  4284.  
  4285. //--     Разделение поля на 2 - Первые и остальные          
  4286.  
  4287. //-- =============================================
  4288.  
  4289.         private void OBR200(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
  4290.  
  4291.             String IND2, String IDENT, String DSORT)
  4292.  
  4293.         {
  4294.  
  4295. //            200  ЗАГЛАВИЕ И СВЕДЕНИЯ ОБ ОТВЕТСТВЕННОСТИ
  4296.  
  4297. //Поле соответствует области заглавия и сведений об ответственности ГОСТ 7.1-2003.
  4298.  
  4299. //Поле содержит в форме и последовательности, определяемой Правилами:
  4300.  
  4301. //    основное заглавие; параллельные заглавия; сведения, относящиеся к
  4302.  
  4303. //    заглавию; сведения об ответственности.
  4304.  
  4305. //Обязательное.
  4306.  
  4307. //Не повторяется.
  4308.  
  4309.  
  4310.  
  4311. //    $f Первые сведения об ответственности
  4312.  
  4313. //Содержит: Первые сведения об ответственности для заглавия, записанного в
  4314.  
  4315. //    подполе $a или в подполе $i.
  4316.  
  4317. //Обязательное для непараллельных сведений, если таковые присутствуют.
  4318.  
  4319. //Повторяется для параллельных сведений об ответственности и для сведений
  4320.  
  4321. //    об ответственности, относящихся к зависимому заглавию, записанному в
  4322.  
  4323. //    подполе $i.
  4324.  
  4325.  
  4326.  
  4327. //    $g Последующие сведения об ответственности
  4328.  
  4329. //Содержит: сведения об ответственности для заглавия, записанного в подполе $a,
  4330.  
  4331. //      или для зависимого заглавия, записанного в подполе $i, следующие после
  4332.  
  4333. //      первых сведений об ответственности.
  4334.  
  4335. //Факультативное.
  4336.  
  4337. //Повторяется
  4338.  
  4339.             //
  4340.  
  4341. // Правила каталогизации
  4342.  
  4343. //     6.4. Первым сведениям об ответственности предшествует знак косая черта;
  4344.  
  4345. //   последующие группы сведений отделяют друг от друга точкой с запятой.
  4346.  
  4347. //   Однородные сведения внутри группы отделяют запятыми
  4348.  
  4349.             Int32 K200;
  4350.  
  4351.             String Inst;
  4352.  
  4353.             if (DSORT.StartsWith(";")) DSORT = DSORT.Substring(1);
  4354.  
  4355.             K200 = DSORT.IndexOf(';');
  4356.  
  4357.             if (K200 == DSORT.Length) K200 = -1;
  4358.  
  4359.             if (K200 != -1)
  4360.  
  4361.             {
  4362.  
  4363.                 Inst = DSORT.Substring(K200 + 1);
  4364.  
  4365.                 DSORT = DSORT.Remove(K200);
  4366.  
  4367.             }
  4368.  
  4369.             else Inst = "";
  4370.  
  4371.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  4372.  
  4373.                 + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  4374.  
  4375.                 + ",'" + IND1 + "','" + IND2 + "','f','" + DSORT + "') ";
  4376.  
  4377.             command = new SqlCommand(R, con);
  4378.  
  4379.             con.Open();
  4380.  
  4381.             command.CommandTimeout = 1200;
  4382.  
  4383.             command.ExecuteNonQuery();
  4384.  
  4385.             con.Close();
  4386.  
  4387.             if (Inst.Length != 0)
  4388.  
  4389.             {
  4390.  
  4391.                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  4392.  
  4393.                     + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  4394.  
  4395.                     + ",'" + IND1 + "','" + IND2 + "','g','" + DSORT + "') ";
  4396.  
  4397.                 command = new SqlCommand(R, con);
  4398.  
  4399.                 con.Open();
  4400.  
  4401.                 command.CommandTimeout = 1200;
  4402.  
  4403.                 command.ExecuteNonQuery();
  4404.  
  4405.                 con.Close();
  4406.  
  4407.             }
  4408.  
  4409.         } // OBR200 - Сведения об ответственности
  4410.  
  4411. //
  4412.  
  4413. //-- =============================================
  4414.  
  4415. //-- Description:   Языки
  4416.  
  4417. //-- =============================================
  4418.  
  4419.         private void OBR101(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
  4420.  
  4421.             String IND2, String IDENT, String DSORT)
  4422.  
  4423.         {
  4424.  
  4425.             Int32 KK, KK2;
  4426.  
  4427.             String S, KOD, IDBLOCK;
  4428.  
  4429.             //--101  ЯЗЫК ДОКУМЕНТА
  4430.  
  4431.             //--    Поле содержит кодированную информацию о языке каталогизируемого
  4432.  
  4433.             //-- документа, его частей и заглавия, а также указывает на язык
  4434.  
  4435.             //-- оригинала, если документ является переводом.
  4436.  
  4437.             //--    Обязательное для документов, содержащих текстовую информацию.
  4438.  
  4439.             //--    Не повторяется.
  4440.  
  4441.             //--    Индикатор 1: Индикатор перевода
  4442.  
  4443.             //--        0 - Документ на языке(ках) оригинала (в т. ч. параллельный
  4444.  
  4445.             //-- текст)
  4446.  
  4447.             //--        1 - Документ является переводом оригинала или промежуточного
  4448.  
  4449.             //-- перевода
  4450.  
  4451.             //--        2 - Документ содержит перевод (несколько переводов
  4452.  
  4453.             //--    Если нет возможности установить индикатор в записях,
  4454.  
  4455.             //-- конвертированных из исходного формата, вместо значений, описанных
  4456.  
  4457.             //-- выше, используется символ-заполнитель ' | '.
  4458.  
  4459.             //--    Значение 2 не используется, если переводами в документе являются
  4460.  
  4461.             //-- только резюме статей.
  4462.  
  4463.             //--    Индикатор 2: # (не определен)
  4464.  
  4465.             //-- $a Язык текста, звукозаписи и т.д.
  4466.  
  4467.             //--    Обязательное для документов, имеющих текстовую основу (в том
  4468.  
  4469.             //--числе для документов, имеющих не только текстовую основу, например,
  4470.  
  4471.             //-- песни, арии, фильмы и др.
  4472.  
  4473.             //--    Повторяется, когда текст написан более, чем на одном языке.
  4474.  
  4475.             //--
  4476.  
  4477.             //-- $b Язык промежуточного перевода
  4478.  
  4479.             //--    Обязательное, если каталогизируемый документ переводится не с
  4480.  
  4481.             //-- языка оригинала.
  4482.  
  4483.             //--    Повторяется, когда перевод осуществлен через несколько
  4484.  
  4485.             //-- промежуточных переводов.
  4486.  
  4487.             //--
  4488.  
  4489.             //--$c Язык оригинала
  4490.  
  4491.             //--    Обязательное, если каталогизируемый документ является переводом.
  4492.  
  4493.             //--    Повторяется, когда оригинал издан более, чем на одном языке.
  4494.  
  4495.             //--
  4496.  
  4497.             //-- $d Язык резюме
  4498.  
  4499.             //--    Язык резюме и рефератов каталогизируемого документа в целом или
  4500.  
  4501.             //-- его частей.
  4502.  
  4503.             //--    Обязательное, если хотя бы один из языков резюме и/или рефератов
  4504.  
  4505.             //-- отличается от языка(ов) текста (подполе 101$a).
  4506.  
  4507.             //--    Повторяется, если документ содержит резюме и/или рефераты на
  4508.  
  4509.             //-- разных языках.
  4510.  
  4511.             //--
  4512.  
  4513.             //-- $e Язык оглавления
  4514.  
  4515.             //--    Обязательное, если хотя бы один из языков оглавления отличается
  4516.  
  4517.             //-- от языка(ов) текста (подполе 101$a).
  4518.  
  4519.             //--    Повторяется для каждого языка оглавления.
  4520.  
  4521.             //--
  4522.  
  4523.             //-- $f Язык титульного листа
  4524.  
  4525.             //--    Обязательное, если хотя бы один из языков титульного листа
  4526.  
  4527.             //-- отличается от языка(ов) текста (подполе 101$a).
  4528.  
  4529.             //--    Повторяется для каждого языка титульного листа.
  4530.  
  4531.             //--
  4532.  
  4533.             //-- $g Язык основного заглавия
  4534.  
  4535.             //--    Обязательное, если язык основного заглавия отличается от первого
  4536.  
  4537.             //-- или единственного языка текста (подполе 101$a).
  4538.  
  4539.             //--    Не повторяется, так как по определению основное заглавие имеет
  4540.  
  4541.             //-- один язык. Повторения основного заглавия на других языках являются
  4542.  
  4543.             //-- параллельными заглавиями, и их языки указываются в подполе 200$z .
  4544.  
  4545.             //--
  4546.  
  4547.             //-- $h Язык либретто и т.п.
  4548.  
  4549.             //--    Язык или языки текста, если описываемый документ включает текст
  4550.  
  4551.             //-- – либо сопроводительный материал, либо напечатанный непосредственно
  4552.  
  4553.             //-- в описываемом документе. Подполе не ограничивается либретто как
  4554.  
  4555.             //-- таковыми.
  4556.  
  4557.             //--    Обязательное, если язык либретто и т.п. отличается от первого
  4558.  
  4559.             //-- или единственного языка текста (подполе 101$a).
  4560.  
  4561.             //--    Повторяется.
  4562.  
  4563.             //--
  4564.  
  4565.             //-- $i Язык сопроводительного материала (кроме либретто, краткого
  4566.  
  4567.             //-- содержания и аннотаций)
  4568.  
  4569.             //--    Содержит код языка сопроводительного материала, такого как
  4570.  
  4571.             //-- разъяснения к программе, вводные части, инструкции и т.д.
  4572.  
  4573.             //--    Обязательное, если хотя бы один из языков сопроводительного
  4574.  
  4575.             //-- материала отличается от языка(ов) текста (подполе 101$a).
  4576.  
  4577.             //--    Повторяется.
  4578.  
  4579.             //--
  4580.  
  4581.             //-- $j Язык субтитров
  4582.  
  4583.             //--    Язык субтитров кинофильмов, если он отличается от языка
  4584.  
  4585.             //-- саундтрека.
  4586.  
  4587.             //--    Обязательное, если язык субтитров отличается от языка,
  4588.  
  4589.             //-- указанного в подполе 101$a.
  4590.  
  4591.             //--    Повторяется.
  4592.  
  4593.             //--
  4594.  
  4595.             //--  Каждое подполе содержит трехсимвольный код языка (Приложение A).
  4596.  
  4597.             //-- Если подполе повторяется, порядок кодов языка должен отражать
  4598.  
  4599.             //-- последовательность и значение использования языка в каталогизируемом
  4600.  
  4601.             //-- документе. Если это невозможно, коды языков записываются в
  4602.  
  4603.             //-- алфавитном порядке. Код 'mul' может применяться, когда в каком-либо
  4604.  
  4605.             //-- подполе используется более трех языков.
  4606.  
  4607.             R = " SELECT SMALL_KOD FROM BJRUSMARC..KODLANG "
  4608.  
  4609.               + " WHERE SHORTNAME='" + DSORT + "'";
  4610.  
  4611.             da.SelectCommand = new SqlCommand();
  4612.  
  4613.             da.SelectCommand.CommandText = R;
  4614.  
  4615.             da.SelectCommand.Connection = con;
  4616.  
  4617.             da.SelectCommand.CommandTimeout = 1200;
  4618.  
  4619.             ds = new DataSet();
  4620.  
  4621.             KK = da.Fill(ds);
  4622.  
  4623.             if (KK == 0)
  4624.  
  4625.             {
  4626.  
  4627.                 R = " SELECT SMALL_KOD FROM BJRUSMARC..KODLANG "
  4628.  
  4629.                   + " WHERE SHORTNAME = REPLACE('" + DSORT + "','.','')";
  4630.  
  4631.                 da.SelectCommand = new SqlCommand();
  4632.  
  4633.                 da.SelectCommand.CommandText = R;
  4634.  
  4635.                 da.SelectCommand.Connection = con;
  4636.  
  4637.                 da.SelectCommand.CommandTimeout = 1200;
  4638.  
  4639.                 ds = new DataSet();
  4640.  
  4641.                 KK2 = da.Fill(ds, "list1012");
  4642.  
  4643.                 if (KK2 != 0)
  4644.  
  4645.                 {
  4646.  
  4647.                     KOD = ds.Tables["list1012"].Rows[0][0].ToString();
  4648.  
  4649.                     R = " SELECT POL, IDBLOCK  "
  4650.  
  4651.                       + " FROM BJRUSMARC..RUSM "
  4652.  
  4653.                       + " WHERE MET= 101 AND IDMAIN= " + IDM.ToString();
  4654.  
  4655.                     da.SelectCommand = new SqlCommand();
  4656.  
  4657.                     da.SelectCommand.CommandText = R;
  4658.  
  4659.                     da.SelectCommand.Connection = con;
  4660.  
  4661.                     da.SelectCommand.CommandTimeout = 1200;
  4662.  
  4663.                     ds = new DataSet();
  4664.  
  4665.                     KK2 = da.Fill(ds, "list1013");
  4666.  
  4667.                     if (KK2 != 0)
  4668.  
  4669.                     {
  4670.  
  4671.                         S = ds.Tables["list1013"].Rows[0]["POL"].ToString();
  4672.  
  4673.                         IDBLOCK = ds.Tables["list0"].Rows[0]["IDBLOCK"].ToString();
  4674.  
  4675.                         R = " UPDATE BJRUSMARC..RUSM SET POL='" + S +(char)31+ IDENT + KOD + "'"
  4676.  
  4677.                                  + " WHERE MET=101 AND IDMAIN=" + IDM.ToString();
  4678.  
  4679.                         command = new SqlCommand(R, con);
  4680.  
  4681.                         con.Open();
  4682.  
  4683.                         command.CommandTimeout = 1200;
  4684.  
  4685.                         command.ExecuteNonQuery();
  4686.  
  4687.                         con.Close();
  4688.  
  4689.                     }
  4690.  
  4691.                     else
  4692.  
  4693.                     {
  4694.  
  4695.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  4696.  
  4697.                         + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  4698.  
  4699.                         + ",'" + IND1 + "','" + IND2 + "','a','" + KOD + "') "; // Код Языка
  4700.  
  4701.                         command = new SqlCommand(R, con);
  4702.  
  4703.                         con.Open();
  4704.  
  4705.                         command.CommandTimeout = 1200;
  4706.  
  4707.                         command.ExecuteNonQuery();
  4708.  
  4709.                         con.Close();
  4710.  
  4711.                     }
  4712.  
  4713.                 }
  4714.  
  4715.             }
  4716.  
  4717.         } // OBR101 - Языки
  4718.  
  4719. //
  4720.  
  4721. //  **************************************************************
  4722.  
  4723. //-- Create date: 2009.02.05
  4724.  
  4725. //-- Description: Коды страны и места издания
  4726.  
  4727. //-- =============================================
  4728.  
  4729.         private void OBR102(Int32 IDMQ, Int32 DIDDATAQ, Int16 METQ, String IND1Q,
  4730.  
  4731.                         String IND2Q, String IDENTQ, String DSORTQ)
  4732.  
  4733.             // 2011.04.12 11:49
  4734.  
  4735.         {
  4736.  
  4737.             String S, S2, SM, KOD, IND1, IND2, IDENT, MET;
  4738.  
  4739.             Int32 DIDDATA, KS;
  4740.  
  4741.             DataSet ds210a;
  4742.  
  4743.             MET = METQ.ToString();
  4744.  
  4745.             DIDDATA = DIDDATAQ;
  4746.  
  4747.             //--102  СТРАНА ПУБЛИКАЦИИ ИЛИ ПРОИЗВОДСТВА
  4748.  
  4749.             //--  $a Страна публикации
  4750.  
  4751.             //--     Используются коды из таблицы 2-х символьных кодов ISO 3166-1 и
  4752.  
  4753.             //--      ГОСТ 7.67-2003 (см. Приложение B).
  4754.  
  4755.             //--  $b Место издания (не ISO)
  4756.  
  4757.             //--    Код, указывающий на место издания или производства документа.
  4758.  
  4759.             //--     В подполе указываются коды, взятые из таблицы, отличной от таблицы
  4760.  
  4761.             //--     ISO 3166-2. Таблица, из которой взяты коды, идентифицируется в
  4762.  
  4763.             //--      подполе $2.
  4764.  
  4765.             //--  $с Место издания (ISO)
  4766.  
  4767.             //--    Код, указывающий на место издания или производства документа.
  4768.  
  4769.             //--    Повторяется, если в поле присутствует более одного подполя $a.
  4770.  
  4771.             //--     В подполе указываются коды, взятые из таблицы ISO 3166-2.
  4772.  
  4773.             //--  $2 Код системы (источник кода, отличный от ISO)
  4774.  
  4775.             //--    Источник, из которого взят код в подполе $b. Список кодов см. в
  4776.  
  4777.             //--     Приложении G.
  4778.  
  4779.             //-- Код места издания должен указываться непосредственно после кода страны,
  4780.  
  4781.             //--  к которой он относится. В случае, если необходимо указать несколько мест
  4782.  
  4783.             //--  издания, относящихся к одной стране, рекомендуется повторять код страны,
  4784.  
  4785.             //--  так чтобы каждому подполю $b и $c предшествовало подполе $a.
  4786.  
  4787.             //--  Рекомендуется указывать соответствующий код для каждого места публикации
  4788.  
  4789.             //--  или производства, записанного в поле 210.
  4790.  
  4791.             //-- Место издания в принятой форме вводится в поле 620 МЕСТО КАК ТОЧКА ДОСТУПА.
  4792.  
  4793.             //--  Отвергнутая форма места издания, если именно она приведена на документе,
  4794.  
  4795.             //--  вводится в поле 210 ПУБЛИКАЦИЯ, РАСПРОСТРАНЕНИЕ и др. в том виде,
  4796.  
  4797.             //--  в каком она представлена на основном источнике описания.
  4798.  
  4799.             //--Дополнительные коды:
  4800.  
  4801.             //-- XX    Страна неизвестна (значение кода определено пользователем для
  4802.  
  4803.             //--        локального использования)
  4804.  
  4805.             //-- ZZ    Несколько стран (более трех)
  4806.  
  4807.             //--
  4808.  
  4809.             //-- 102
  4810.  
  4811.             Int32 K102 = blok80.IndexOf("=" + DIDDATAQ.ToString() + ";"); // Блок обработан ?
  4812.  
  4813.             if (K102 != -1) return;  // Блок обработан
  4814.  
  4815.             else blok80 += "=" + DIDDATAQ.ToString() + ";"; // Запоминание обработанного блока
  4816.  
  4817.  
  4818.  
  4819.             R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P"
  4820.  
  4821.               + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
  4822.  
  4823.               + " WHERE P.IDDATA=" + DIDDATA.ToString()
  4824.  
  4825.               + " AND MNFIELD=210 AND MSFIELD='$a'"; //  Место ИЗДАНИЯ
  4826.  
  4827.             da.SelectCommand = new SqlCommand();
  4828.  
  4829.             da.SelectCommand.CommandText = R;
  4830.  
  4831.             da.SelectCommand.Connection = con;
  4832.  
  4833.             da.SelectCommand.CommandTimeout = 1200;
  4834.  
  4835.             ds = new DataSet();
  4836.  
  4837.             KS = da.Fill(ds, "listMect");
  4838.  
  4839.             if (KS > 0) // В блоке может быть несколько полей  Место ИЗДАНИЯ
  4840.  
  4841.             {
  4842.  
  4843.                 if (KS == 1)
  4844.  
  4845.                 { // Если в блоке 1 Место издания, то в этом блоке может быть Страна издания
  4846.  
  4847.                     S = ds.Tables["listMect"].Rows[0][0].ToString();  //  Место ИЗДАНИЯ
  4848.  
  4849.                     S2 = ""; // Страна издания
  4850.  
  4851.                     SM = ""; // Код Места издания
  4852.  
  4853.                     KOD = ""; // Код страны издания
  4854.  
  4855.                     R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P"
  4856.  
  4857.                       + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
  4858.  
  4859.                       + " WHERE DE.IDDATA=" + DIDDATAQ.ToString()
  4860.  
  4861.                       + " AND MNFIELD=102 AND MSFIELD='$a'"; // Страна
  4862.  
  4863.                     da.SelectCommand = new SqlCommand();
  4864.  
  4865.                     da.SelectCommand.CommandText = R;
  4866.  
  4867.                     da.SelectCommand.Connection = con;
  4868.  
  4869.                     da.SelectCommand.CommandTimeout = 1200;
  4870.  
  4871.                     Int32 KSa = da.Fill(ds, "list102");
  4872.  
  4873.                     if (KSa > 0)
  4874.  
  4875.                     {  // В этом блоке есть Страна
  4876.  
  4877.                         S2 = ds.Tables["list102"].Rows[0][0].ToString();
  4878.  
  4879.                         R = " SELECT KOD FROM BJRUSMARC..KODCTPAH WHERE [NAME]='" + S2 + "'"; // Страна
  4880.  
  4881.                         da.SelectCommand = new SqlCommand();
  4882.  
  4883.                         da.SelectCommand.CommandText = R;
  4884.  
  4885.                         da.SelectCommand.Connection = con;
  4886.  
  4887.                         da.SelectCommand.CommandTimeout = 1200;
  4888.  
  4889.                         if (da.Fill(ds, "listkodc") > 0)
  4890.  
  4891.                         {
  4892.  
  4893.                             KOD = ds.Tables["listkodc"].Rows[0][0].ToString(); // Код Страны издания
  4894.  
  4895.                         }
  4896.  
  4897.                     }
  4898.  
  4899.                     R = " SELECT KODCTPAHA,KODMECTO from BJRUSMARC..KODMECTO "// Есть Код Места
  4900.  
  4901.                         + " where NAIM='"+S+"' ";
  4902.  
  4903.                     da.SelectCommand = new SqlCommand();
  4904.  
  4905.                     da.SelectCommand.CommandText = R;
  4906.  
  4907.                     da.SelectCommand.Connection = con;
  4908.  
  4909.                     da.SelectCommand.CommandTimeout = 1200;
  4910.  
  4911.                     ds = new DataSet();
  4912.  
  4913.                     if (da.Fill(ds, "listKM") > 0)
  4914.  
  4915.                     { // Для этого места известен Код
  4916.  
  4917.                         S2 = ds.Tables["listKM"].Rows[0]["KODCTPAHA"].ToString(); // Код страны издания
  4918.  
  4919.                         if (KOD.Length == 0) KOD = S2;
  4920.  
  4921.                         SM = ds.Tables["listKM"].Rows[0]["KODMECTO"].ToString(); // Код Места
  4922.  
  4923.                     }
  4924.  
  4925.                     if (KOD.Length > 0)
  4926.  
  4927.                     {
  4928.  
  4929.                         if (P102.Length > 0) P102 = (char)31 + "a";
  4930.  
  4931.                         P102 += KOD;
  4932.  
  4933.                         if (SM.Length > 0) P102 = P102 + (char)31 + "b" + SM; // Код Места ISO
  4934.  
  4935.                         else P102 = P102 + (char)31 + "с" + S; // Место издания  как Код Места не ISO
  4936.  
  4937.                     }
  4938.  
  4939.                     //                  Место издания
  4940.  
  4941.                     R = " SELECT MET1,IND1,IND2,IDEN1 FROM BJRUSMARC..BJ2RUSM "
  4942.  
  4943.                           + "  WHERE MNF=210 AND MSF='$a'";
  4944.  
  4945.                     da.SelectCommand = new SqlCommand();
  4946.  
  4947.                     da.SelectCommand.CommandText = R;
  4948.  
  4949.                     da.SelectCommand.Connection = con;
  4950.  
  4951.                     da.SelectCommand.CommandTimeout = 1200;
  4952.  
  4953.                     ds = new DataSet();
  4954.  
  4955.                     KS = da.Fill(ds, "list210");
  4956.  
  4957.  
  4958.  
  4959.                     MET = ds.Tables["list210"].Rows[0][0].ToString();
  4960.  
  4961.                     IND1 = ds.Tables["list210"].Rows[0][1].ToString();
  4962.  
  4963.                     IND2 = ds.Tables["list210"].Rows[0][2].ToString();
  4964.  
  4965.                     IDENT = ds.Tables["list210"].Rows[0][3].ToString();
  4966.  
  4967.  
  4968.  
  4969.                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  4970.  
  4971.                         + " VALUES (" + IDMQ.ToString() + "," + DIDDATA.ToString() + ","
  4972.  
  4973.                         + MET + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + S + "')"; // Издательство
  4974.  
  4975.                     command = new SqlCommand(R, con);
  4976.  
  4977.                     con.Open();
  4978.  
  4979.                     command.CommandTimeout = 1200;
  4980.  
  4981.                     command.ExecuteNonQuery();
  4982.  
  4983.                     con.Close();
  4984.  
  4985.                 } // В блоке 1 Место издания
  4986.  
  4987.                 else
  4988.  
  4989.                 { // В блоке KS Место издания
  4990.  
  4991.                     R = " SELECT MET1,IND1,IND2,IDEN1 FROM BJRUSMARC..BJ2RUSM "
  4992.  
  4993.                           + "  WHERE MNF=210 AND MSF='$a'";
  4994.  
  4995.                     da.SelectCommand = new SqlCommand();
  4996.  
  4997.                     da.SelectCommand.CommandText = R;
  4998.  
  4999.                     da.SelectCommand.Connection = con;
  5000.  
  5001.                     da.SelectCommand.CommandTimeout = 1200;
  5002.  
  5003.                     ds210a = new DataSet();
  5004.  
  5005.                     KS = da.Fill(ds210a, "list210");
  5006.  
  5007.  
  5008.  
  5009.                     MET = ds210a.Tables["list210"].Rows[0][0].ToString();
  5010.  
  5011.                     IND1 = ds210a.Tables["list210"].Rows[0][1].ToString();
  5012.  
  5013.                     IND2 = ds210a.Tables["list210"].Rows[0][2].ToString();
  5014.  
  5015.                     IDENT = ds210a.Tables["list210"].Rows[0][3].ToString();
  5016.  
  5017.                     for (int i = 0; i < KS; i++)
  5018.  
  5019.                     {
  5020.  
  5021.                         S2 = ""; // Страна издания
  5022.  
  5023.                         SM = ""; // Код Места издания
  5024.  
  5025.                         KOD = ""; // Код страны издания
  5026.  
  5027.                         S = ds.Tables["listMect"].Rows[i][0].ToString();  //  Место ИЗДАНИЯ
  5028.  
  5029.                         R = " SELECT KODCTRAHA,KODMECTO from BJRUSMARC..KODMECTO "// Страна
  5030.  
  5031.                             + " where NAIM='"+S+"' ";
  5032.  
  5033.                         da.SelectCommand = new SqlCommand();
  5034.  
  5035.                         da.SelectCommand.CommandText = R;
  5036.  
  5037.                         da.SelectCommand.Connection = con;
  5038.  
  5039.                         da.SelectCommand.CommandTimeout = 1200;
  5040.  
  5041.                         if (da.Fill(ds, "listKM") > 0)
  5042.  
  5043.                         { // Для этого места известен Код
  5044.  
  5045.                             KOD = ds.Tables["listKM"].Rows[0]["KODCTPAHA"].ToString(); // Код страны издания
  5046.  
  5047.                             SM = ds.Tables["listKM"].Rows[0]["KODMECTO"].ToString(); // Код Места
  5048.  
  5049.                         }
  5050.  
  5051.                         if (KOD.Length > 0)
  5052.  
  5053.                         {
  5054.  
  5055.                             if (P102.Length > 0) P102 = (char)31 + "a";
  5056.  
  5057.                             P102 += KOD;
  5058.  
  5059.                             if (SM.Length > 0) P102 = P102 + (char)31 + "b" + SM; // Код Места ISO
  5060.  
  5061.                             else P102 = P102 + (char)31 + "с" + S; // Место издания  как Код Места не ISO
  5062.  
  5063.                         } // Добавление в Р102 Код страны и Код Места издания
  5064.  
  5065.  
  5066.  
  5067.  
  5068.  
  5069.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  5070.  
  5071.                             + " VALUES (" + IDMQ.ToString() + "," + DIDDATA.ToString() + ","
  5072.  
  5073.                             + MET + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + S + "')"; // Издательство
  5074.  
  5075.                         command = new SqlCommand(R, con);
  5076.  
  5077.                         con.Open();
  5078.  
  5079.                         command.CommandTimeout = 1200;
  5080.  
  5081.                         command.ExecuteNonQuery();
  5082.  
  5083.                         con.Close();
  5084.  
  5085.  
  5086.  
  5087.                     } // Цикл по Местам издания текущего блока - для текущего Издательство
  5088.  
  5089.                 }  // В блоке KS Место издания
  5090.  
  5091.             } //  Место ИЗДАНИЯ
  5092.  
  5093.             //--
  5094.  
  5095.             R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P"
  5096.  
  5097.               + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
  5098.  
  5099.               + " WHERE P.IDMAIN=" + IDMQ.ToString() + " AND DE.IDDATA=" + DIDDATA.ToString()
  5100.  
  5101.               + " AND MNFIELD=210 AND MSFIELD='$c'"; // Издательство
  5102.  
  5103.             da.SelectCommand = new SqlCommand();
  5104.  
  5105.             da.SelectCommand.CommandText = R;
  5106.  
  5107.             da.SelectCommand.Connection = con;
  5108.  
  5109.             da.SelectCommand.CommandTimeout = 1200;
  5110.  
  5111.             ds = new DataSet();
  5112.  
  5113.             KS = da.Fill(ds, "list210");
  5114.  
  5115.             if (KS == 0)
  5116.  
  5117.             {
  5118.  
  5119.                 R = " SELECT TOP(1) PLAIN FROM " + BAZA + "..DATAEXTPLAIN P"
  5120.  
  5121.                  + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
  5122.  
  5123.                  + " WHERE P.IDMAIN=" + IDMQ.ToString()
  5124.  
  5125.                  + " AND MNFIELD=210 AND MSFIELD='$c'"; // Издательство
  5126.  
  5127.                 da.SelectCommand = new SqlCommand();
  5128.  
  5129.                 da.SelectCommand.CommandText = R;
  5130.  
  5131.                 da.SelectCommand.Connection = con;
  5132.  
  5133.                 da.SelectCommand.CommandTimeout = 1200;
  5134.  
  5135.                 ds = new DataSet();
  5136.  
  5137.                 KS = da.Fill(ds, "list210");
  5138.  
  5139.             }
  5140.  
  5141.             if (KS > 0)
  5142.  
  5143.             {
  5144.  
  5145.                 S = ds.Tables["list210"].Rows[0][0].ToString();
  5146.  
  5147.                 R = " SELECT MET1,IND1,IND2,IDEN1 FROM BJRUSMARC..BJ2RUSM "
  5148.  
  5149.                       + "  WHERE MNF=210 AND MSF='$c'";
  5150.  
  5151.                 da.SelectCommand = new SqlCommand();
  5152.  
  5153.                 da.SelectCommand.CommandText = R;
  5154.  
  5155.                 da.SelectCommand.Connection = con;
  5156.  
  5157.                 da.SelectCommand.CommandTimeout = 1200;
  5158.  
  5159.                 ds = new DataSet();
  5160.  
  5161.                 KS = da.Fill(ds, "list210");
  5162.  
  5163.  
  5164.  
  5165.                 MET = ds.Tables["list210"].Rows[0][0].ToString();
  5166.  
  5167.                 IND1 = ds.Tables["list210"].Rows[0][1].ToString();
  5168.  
  5169.                 IND2 = ds.Tables["list210"].Rows[0][2].ToString();
  5170.  
  5171.                 IDENT = ds.Tables["list210"].Rows[0][3].ToString();
  5172.  
  5173.  
  5174.  
  5175.                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  5176.  
  5177.                     + " VALUES (" + IDMQ.ToString() + "," + DIDDATA.ToString() + ","
  5178.  
  5179.                     + MET + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + S + "')"; // Издательство
  5180.  
  5181.                 command = new SqlCommand(R, con);
  5182.  
  5183.                 con.Open();
  5184.  
  5185.                 command.CommandTimeout = 1200;
  5186.  
  5187.                 command.ExecuteNonQuery();
  5188.  
  5189.                 con.Close();
  5190.  
  5191.             }
  5192.  
  5193.             //-- Типография
  5194.  
  5195.             R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P"
  5196.  
  5197.               + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
  5198.  
  5199.               + " WHERE P.IDMAIN=" + IDMQ.ToString() + " AND DE.IDDATA=" + DIDDATAQ.ToString()
  5200.  
  5201.               + " AND MNFIELD=2110 AND MSFIELD='$g'"; // Типография
  5202.  
  5203.             da.SelectCommand = new SqlCommand();
  5204.  
  5205.             da.SelectCommand.CommandText = R;
  5206.  
  5207.             da.SelectCommand.Connection = con;
  5208.  
  5209.             da.SelectCommand.CommandTimeout = 1200;
  5210.  
  5211.             ds = new DataSet();
  5212.  
  5213.             KS = da.Fill(ds, "list210");
  5214.  
  5215.             if (KS > 0)
  5216.  
  5217.             {
  5218.  
  5219.                 S = ds.Tables["list210"].Rows[0][0].ToString();
  5220.  
  5221.                 R = " SELECT MET1,IND1,IND2,IDEN1 FROM BJRUSMARC..BJ2RUSM "
  5222.  
  5223.                      + "  WHERE MNF=2110 AND MSF='$g'";
  5224.  
  5225.                 da.SelectCommand = new SqlCommand();
  5226.  
  5227.                 da.SelectCommand.CommandText = R;
  5228.  
  5229.                 da.SelectCommand.Connection = con;
  5230.  
  5231.                 da.SelectCommand.CommandTimeout = 1200;
  5232.  
  5233.                 ds = new DataSet();
  5234.  
  5235.                 KS = da.Fill(ds, "list210");
  5236.  
  5237.  
  5238.  
  5239.                 MET = ds.Tables["list210"].Rows[0][0].ToString();
  5240.  
  5241.                 IND1 = ds.Tables["list210"].Rows[0][1].ToString();
  5242.  
  5243.                 IND2 = ds.Tables["list210"].Rows[0][2].ToString();
  5244.  
  5245.                 IDENT = ds.Tables["list210"].Rows[0][3].ToString();
  5246.  
  5247.  
  5248.  
  5249.                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  5250.  
  5251.                     + " VALUES (" + IDMQ.ToString() + "," + DIDDATAQ.ToString() + ","
  5252.  
  5253.                     + MET + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + S + "')"; // Типография
  5254.  
  5255.                 command = new SqlCommand(R, con);
  5256.  
  5257.                 con.Open();
  5258.  
  5259.                 command.CommandTimeout = 1200;
  5260.  
  5261.                 command.ExecuteNonQuery();
  5262.  
  5263.                 con.Close();
  5264.  
  5265.             }
  5266.  
  5267.         } // OBR102 - Место издания
  5268.  
  5269.         //
  5270.  
  5271. //-- =============================================
  5272.  
  5273. //-- Description:   Вид обработки = 2103 - Издательство
  5274.  
  5275. //-- =============================================
  5276.  
  5277.         private void OBR2103(Int32 IDM, Int32 MNF, String MSF, Int32 DIDDATA, Int16 MET,
  5278.  
  5279.             String IND1, String IND2, String IDENT, String DSORT)
  5280.  
  5281.         {
  5282.  
  5283.         //    String PREF;
  5284.  
  5285.         //    R = " SELECT  [NAME] FROM BJRUSMARC..BJ2RUSM "
  5286.  
  5287.         //      + " WHERE MNF= " + MNF.ToString() + "AND MSF='" + MSF + "'";
  5288.  
  5289.         //    da.SelectCommand = new SqlCommand();
  5290.  
  5291.         //    da.SelectCommand.CommandText = R;
  5292.  
  5293.         //    da.SelectCommand.Connection = con;
  5294.  
  5295.         //    da.SelectCommand.CommandTimeout = 1200;
  5296.  
  5297.         //    ds = new DataSet();
  5298.  
  5299.         //    da.Fill(ds, "list0");
  5300.  
  5301.         //    PREF = ds.Tables["list0"].Rows[0][0].ToString();
  5302.  
  5303.         //    R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  5304.  
  5305.         //    + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  5306.  
  5307.         //    + ",'" + IND1 + "',' " + IND2 + "','" + IDENT + "','" + PREF + "' +': '+ '" + DSORT + "') ";
  5308.  
  5309.         //    command = new SqlCommand(R, con);
  5310.  
  5311.         //    con.Open();
  5312.  
  5313.         //    command.CommandTimeout = 1200;
  5314.  
  5315.         //    command.ExecuteNonQuery();
  5316.  
  5317.         //    con.Close();
  5318.  
  5319.         }
  5320.  
  5321. //
  5322.  
  5323. // *******************************************************
  5324.  
  5325. //-- Description:   Другое заглавие
  5326.  
  5327. // *******************************************************
  5328.  
  5329.         private void OBR517(Int32 IDMQ, Int32 DIDDATAQ, Int16 METQ, String IND1Q,
  5330.  
  5331.                                                  String IND2Q, String IDENTQ, String PLAINQ)
  5332.  
  5333.  
  5334.  
  5335.         {
  5336.  
  5337.             String S, T, LANG;
  5338.  
  5339.             Int32 MNF, KS, KL, KMNF, KKOD;
  5340.  
  5341.             //--
  5342.  
  5343.             R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P "
  5344.  
  5345.               + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
  5346.  
  5347.               + " WHERE IDDATA=" + DIDDATAQ.ToString() + " AND MNFIELD=517 AND MSFIELD='$b";
  5348.  
  5349.             da.SelectCommand = new SqlCommand();
  5350.  
  5351.             da.SelectCommand.CommandText = R;
  5352.  
  5353.             da.SelectCommand.Connection = con;
  5354.  
  5355.             da.SelectCommand.CommandTimeout = 1200;
  5356.  
  5357.             ds = new DataSet();
  5358.  
  5359.             KS = da.Fill(ds, "listS");
  5360.  
  5361.             R = " SELECT PLAIN FROM " + BAZA + "..DATAEXTPLAIN P "
  5362.  
  5363.               + " LEFT JOIN " + BAZA + "..DATAEXT DE ON DE.ID = P.IDDATAEXT "
  5364.  
  5365.               + " WHERE IDDATA=" + DIDDATAQ.ToString() + " AND MNFIELD=517 AND MSFIELD='$z";
  5366.  
  5367.             da.SelectCommand = new SqlCommand();
  5368.  
  5369.             da.SelectCommand.CommandText = R;
  5370.  
  5371.             da.SelectCommand.Connection = con;
  5372.  
  5373.             da.SelectCommand.CommandTimeout = 1200;
  5374.  
  5375.             KL = da.Fill(ds, "listL");
  5376.  
  5377.  
  5378.  
  5379.             if (KS == 0)
  5380.  
  5381.             { // В этом блоке нет Тип заглавия
  5382.  
  5383.                 S = "Другое заглавие: " + PLAINQ;
  5384.  
  5385.                 if (KL > 0)
  5386.  
  5387.                 {
  5388.  
  5389.                     S = S + "; Язык данного заглавия: " + ds.Tables["listL"].Rows[0][0].ToString();
  5390.  
  5391.                 }
  5392.  
  5393.                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  5394.  
  5395.                  + " VALUES (" + IDMQ.ToString() + "," + DIDDATAQ.ToString()
  5396.  
  5397.                  + ",300,' ',' ','a','" + S + "')";
  5398.  
  5399.                 command = new SqlCommand(R, con);
  5400.  
  5401.                 con.Open();
  5402.  
  5403.                 command.CommandTimeout = 1200;
  5404.  
  5405.                 command.ExecuteNonQuery();
  5406.  
  5407.                 con.Close();
  5408.  
  5409.             }
  5410.  
  5411.             else
  5412.  
  5413.             {
  5414.  
  5415.                 S = ds.Tables["listS"].Rows[0][0].ToString();
  5416.  
  5417.                 R = " SELECT MNF BJRUSMARC..TIP_ZAGL  WHERE [NAME]='" + S + "'";
  5418.  
  5419.                 da.SelectCommand = new SqlCommand();
  5420.  
  5421.                 da.SelectCommand.CommandText = R;
  5422.  
  5423.                 da.SelectCommand.Connection = con;
  5424.  
  5425.                 da.SelectCommand.CommandTimeout = 1200;
  5426.  
  5427.                 KMNF = da.Fill(ds, "listMNF");
  5428.  
  5429.                 if (KMNF > 0)
  5430.  
  5431.                 {
  5432.  
  5433.                     MNF = Int32.Parse(ds.Tables["listMNF"].Rows[0][0].ToString());
  5434.  
  5435.                     if (MNF == 300)
  5436.  
  5437.                     {
  5438.  
  5439.                         T = S + ": " + PLAINQ;
  5440.  
  5441.                         if (KL > 0)
  5442.  
  5443.                         {
  5444.  
  5445.                             T = T + "; Язык данного заглавия: +" + ds.Tables["listL"].Rows[0][0].ToString();
  5446.  
  5447.                         }
  5448.  
  5449.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  5450.  
  5451.                          + " VALUES (" + IDMQ.ToString() + "," + DIDDATAQ.ToString()
  5452.  
  5453.                          + ",300,' ',' ','a','" + T + "')";
  5454.  
  5455.                         command = new SqlCommand(R, con);
  5456.  
  5457.                         con.Open();
  5458.  
  5459.                         command.CommandTimeout = 1200;
  5460.  
  5461.                         command.ExecuteNonQuery();
  5462.  
  5463.                         con.Close();
  5464.  
  5465.                         return;
  5466.  
  5467.                     }
  5468.  
  5469.                     if (MNF > 500)
  5470.  
  5471.                     {
  5472.  
  5473.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  5474.  
  5475.                          + " VALUES (" + IDMQ.ToString() + "," + DIDDATAQ.ToString()
  5476.  
  5477.                          + ",300,' ',' ','a','" + PLAINQ + "')";
  5478.  
  5479.                         command = new SqlCommand(R, con);
  5480.  
  5481.                         con.Open();
  5482.  
  5483.                         command.CommandTimeout = 1200;
  5484.  
  5485.                         command.ExecuteNonQuery();
  5486.  
  5487.                         con.Close();
  5488.  
  5489.  
  5490.  
  5491.                         if (KL > 0)
  5492.  
  5493.                         { // Язык данного заглавия
  5494.  
  5495.                             LANG = ds.Tables["listL"].Rows[0][0].ToString();
  5496.  
  5497.                             R = " SELECT KOD BJRUSMARC..KODLANG WHERE SHORTNAME='" + LANG + "'";
  5498.  
  5499.                             da.SelectCommand = new SqlCommand();
  5500.  
  5501.                             da.SelectCommand.CommandText = R;
  5502.  
  5503.                             da.SelectCommand.Connection = con;
  5504.  
  5505.                             da.SelectCommand.CommandTimeout = 1200;
  5506.  
  5507.                             KKOD = da.Fill(ds, "listKOD");
  5508.  
  5509.                             if (KKOD == 0)
  5510.  
  5511.                             {
  5512.  
  5513.                                 R = " SELECT KOD BJRUSMARC..KODLANG WHERE REPLACE(SHORTNAME,'.','')='" + LANG + "'";
  5514.  
  5515.                                 da.SelectCommand = new SqlCommand();
  5516.  
  5517.                                 da.SelectCommand.CommandText = R;
  5518.  
  5519.                                 da.SelectCommand.Connection = con;
  5520.  
  5521.                                 da.SelectCommand.CommandTimeout = 1200;
  5522.  
  5523.                                 KKOD = da.Fill(ds, "listKOD");
  5524.  
  5525.                             }
  5526.  
  5527.                             if (KKOD > 0)
  5528.  
  5529.                             {
  5530.  
  5531.                                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  5532.  
  5533.                                  + " VALUES (" + IDMQ.ToString() + "," + DIDDATAQ.ToString()
  5534.  
  5535.                                  + "," + MNF.ToString() + ",'0',' ','z','" + S + "')";
  5536.  
  5537.                                 command = new SqlCommand(R, con);
  5538.  
  5539.                                 con.Open();
  5540.  
  5541.                                 command.CommandTimeout = 1200;
  5542.  
  5543.                                 command.ExecuteNonQuery();
  5544.  
  5545.                                 con.Close();
  5546.  
  5547.                             }
  5548.  
  5549.                             return;
  5550.  
  5551.                         }
  5552.  
  5553.                     }
  5554.  
  5555.                 }
  5556.  
  5557.             }
  5558.  
  5559.         } // OBR517 -   Другое заглавие
  5560.  
  5561. //
  5562.  
  5563. //-- =============================================
  5564.  
  5565. //-- Description:   Вид обработки = 606 - Предметная рубрика
  5566.  
  5567. //-- =============================================
  5568.  
  5569.         private void OBR606(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
  5570.  
  5571.             String IND2, String IDENT, String DSORT)
  5572.  
  5573.         {
  5574.  
  5575. //          606  НАИМЕНОВАНИЕ ТЕМЫ КАК ПРЕДМЕТ
  5576.  
  5577. //Поле содержит слово или словосочетание, отражающее содержание документа, представленное в форме точки доступа. К наименованию темы, используемому в качестве предметной рубрики, факультативно могут быть добавлены тематические, географические, хронологические или формальные подзаголовки.
  5578.  
  5579. //Факультативное.
  5580.  
  5581. //Повторяется.
  5582.  
  5583. //Индикатор 1: Уровень предметной единицы
  5584.  
  5585. //0 - Уровень значимости не может быть установлен
  5586.  
  5587. //1 - Первичный термин
  5588.  
  5589. //2 - Вторичный термин
  5590.  
  5591. //# - Нет доступной информации для установления уровня значимости
  5592.  
  5593. //
  5594.  
  5595. //Индикатор 2: # (не определен)
  5596.  
  5597. //   $a Наименование темы
  5598.  
  5599. //Тематический заголовок предметной рубрики / дескриптор в форме, определяемой используемой системой индексирования.
  5600.  
  5601. //Обязательное, если поле 606 присутствует в записи.
  5602.  
  5603. //Не повторяется.
  5604.  
  5605. //
  5606.  
  5607. //$j Формальный подзаголовок
  5608.  
  5609. //Слово или словосочетание, добавляемое к предметной рубрике для отражения формы или вида документа, целевого и читательского назначения, в форме, определяемой системой предметизации.
  5610.  
  5611. //Обязательное, если имеются доступные данные.
  5612.  
  5613. //Повторяется.
  5614.  
  5615. //
  5616.  
  5617. //$x Тематический подзаголовок
  5618.  
  5619. //Слово или словосочетание, добавляемое к предметной рубрике для отражения тематического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации .
  5620.  
  5621. //Обязательное, если имеются доступные данные.
  5622.  
  5623. //Повторяется.
  5624.  
  5625. //
  5626.  
  5627. //$y Географический подзаголовок
  5628.  
  5629. //Слово или словосочетание, добавляемое к предметной рубрике для отражения географического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
  5630.  
  5631. //Обязательное, если имеются доступные данные.
  5632.  
  5633. //Повторяется.
  5634.  
  5635. //
  5636.  
  5637. //$z Хронологический подзаголовок
  5638.  
  5639. //Слово или словосочетание, добавляемое к предметной рубрике для отражения хронологического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
  5640.  
  5641. //Обязательное, если имеются доступные данные.
  5642.  
  5643. //Повторяется.
  5644.  
  5645. //
  5646.  
  5647. //$2 Код системы
  5648.  
  5649. //Код системы предметных рубрик или тезауруса, по правилам которой построены ПР / дескриптор. Список кодов приведен в Приложении G.
  5650.  
  5651.             //G.5. Локальный код
  5652.  
  5653. // local Используется не стандартный список кодов  
  5654.  
  5655. //Обязательное, если поле 606 присутствует в записи.
  5656.  
  5657. //Не повторяется.
  5658.  
  5659. //
  5660.  
  5661.             Int32 IDCH, NTES, KTES;
  5662.  
  5663.             String Inst, ST1, ST2, PR;
  5664.  
  5665.             char C1;
  5666.  
  5667.             IDCH = Int32.Parse(DSORT);
  5668.  
  5669.             //-- Предметная рубрика
  5670.  
  5671.             R = " SELECT [VALUE], IDTYPE FROM " + BAZA + "..TPR_CHAIN C "
  5672.  
  5673.                 + " LEFT JOIN " + BAZA + "..TPR_TES T ON T.ID= C.IDTES "
  5674.  
  5675.               + " WHERE C.IDCHAIN=" + DSORT + " ORDER BY IDORDER";
  5676.  
  5677.             da.SelectCommand = new SqlCommand();
  5678.  
  5679.             da.SelectCommand.CommandText = R;
  5680.  
  5681.             da.SelectCommand.Connection = con;
  5682.  
  5683.             da.SelectCommand.CommandTimeout = 1200;
  5684.  
  5685.             DataSet ds606 = new DataSet();
  5686.  
  5687.             NTES = da.Fill(ds606, "list606");
  5688.  
  5689.             if (NTES > 0) // Число терминов в ПР
  5690.  
  5691.             {
  5692.  
  5693.                 PR = "";
  5694.  
  5695.                 for (int ITES = 0; ITES < NTES; ITES++)
  5696.  
  5697.                 {
  5698.  
  5699.                     Inst = ds606.Tables["list606"].Rows[ITES][0].ToString(); //
  5700.  
  5701.                     KTES = Int32.Parse(ds606.Tables["list606"].Rows[ITES][1].ToString()); // IDTYPE
  5702.  
  5703.                     switch (KTES) // IDTYPE очередного термина
  5704.  
  5705.                     {
  5706.  
  5707.                         case 1:  //1    Тематика
  5708.  
  5709.                             C1 = (ITES == 0) ? 'a' : 'x';
  5710.  
  5711.                             break;
  5712.  
  5713.                         case 2:  //2    Язык
  5714.  
  5715.                             C1 = 'x';  //$x Тематический подзаголовок
  5716.  
  5717.                             break;
  5718.  
  5719.                         case 3:  //3    Географическая подрубрика
  5720.  
  5721.                             C1 = 'y';  //$y Географический подзаголовок
  5722.  
  5723.                             break;
  5724.  
  5725.                         case 4:  //4    Хронологическая подрубрика
  5726.  
  5727.                             C1 = 'z';  //$z Хронологический подзаголовок
  5728.  
  5729.                             break;
  5730.  
  5731.                         case 8:  //8    Форма
  5732.  
  5733.                             C1 = 'j'; //$j Формальный подзаголовок
  5734.  
  5735.                             break;
  5736.  
  5737.                         case 9: //9 Жанр
  5738.  
  5739.                             C1 = 'j'; //$j Формальный подзаголовок
  5740.  
  5741.                             break;
  5742.  
  5743.                         default:
  5744.  
  5745.                             C1 = 'a';
  5746.  
  5747.                             break;
  5748.  
  5749.                     }
  5750.  
  5751.                     if ((KTES < 5) || (KTES >7)) // Не Форма, не Жанр, не Персона
  5752.  
  5753.                     {
  5754.  
  5755.                         if (ITES == 0) PR = Inst;
  5756.  
  5757.                         else PR = PR + (char)31 + C1 + Inst;
  5758.  
  5759.                     }
  5760.  
  5761.                     else
  5762.  
  5763.                     {
  5764.  
  5765.                         if (KTES == 5) //   Персона
  5766.  
  5767.                         {
  5768.  
  5769. //5 Персона
  5770.  
  5771. //                   600  ИМЯ ЛИЦА КАК ПРЕДМЕТ
  5772.  
  5773. //Поле содержит имя лица (как реального, так и вымышленного образа / персонажа), являющегося одним из объектов рассмотрения в документе, представленное в форме точки доступа. К имени лица, используемому в качестве предметной рубрики, могут быть добавлены тематические, географические, хронологические, формальные подзаголовки.
  5774.  
  5775. //Факультативное.
  5776.  
  5777. //Повторяется.
  5778.  
  5779. //Индикатор 1: # (не определен)
  5780.  
  5781. //Индикатор 2: Индикатор формы представления имени
  5782.  
  5783. //1 - Имя лица записано под фамилией (родовым именем, отчеством и т. д.)
  5784.  
  5785.  
  5786.  
  5787. // $a Начальный элемент ввода
  5788.  
  5789. //Часть имени, используемая как начальный элемент ввода. Начальный элемент ввода определяет положение записи в упорядоченных списках.
  5790.  
  5791. //Обязательное, если поле 600 присутствует в записи. Не повторяется.
  5792.  
  5793.  
  5794.  
  5795. //$b Часть имени, кроме начального элемента ввода
  5796.  
  5797. //Остаток имени от начального элемента ввода - фамилии или родового имени. Cодержит личные имена (не фамилии и не родовые имена) и другие присвоенные имена в инициальной форме. При использовании подполя индикатор формы представления имени должен быть установлен 1. Предназначенные для печати раскрытые инициалы записываются в подполе $g.
  5798.  
  5799. //Обязательное, если имеются доступные данные.
  5800.  
  5801. //Не повторяется.
  5802.  
  5803.  
  5804.  
  5805. //$c Дополнения к именам, кроме дат
  5806.  
  5807. //Любые дополнения к именам (кроме дат), которые не являются неотъемлемой частью имени (титулы, звания, эпитеты, указание должности).
  5808.  
  5809. //Обязательное, если имеются доступные данные.
  5810.  
  5811. //Повторяются при втором или последующих появлениях дополнений.
  5812.  
  5813.  
  5814.  
  5815. //$d Римские цифры
  5816.  
  5817. //Римские цифры, ассоциирующиеся с именами членов царствующих семей, князей, священнослужителей, римских пап. Если имеется эпитет (второе имя, прозвище и т.п.), связанный с нумерацией, эпитет также включается в подполе $d. При использовании подполя индикатор формы представления имени должен быть 0.
  5818.  
  5819. //Обязательное, если имеются доступные данные.
  5820.  
  5821. //Не повторяется.
  5822.  
  5823.  
  5824.  
  5825. //$f Даты
  5826.  
  5827. //Даты, присоединяемые к именам лиц, включая слова, указывающие на смысл дат (например, жил, родился, умер). Указанные слова вводятся в подполе в полной или сокращенной форме. Все даты для лица, названного в поле, вводятся в одно подполе $f.
  5828.  
  5829. //Обязательное, если имеются доступные данные.
  5830.  
  5831. //Не повторяется.
  5832.  
  5833.  
  5834.  
  5835. //$g Расширение инициалов личного имени
  5836.  
  5837. //Полная форма личного имени, когда наряду с инициалами, записанными в подполе $b, необходимо их раскрытие.
  5838.  
  5839. //Обязательное, если имеются доступные данные.
  5840.  
  5841. //Не повторяется.
  5842.  
  5843.  
  5844.  
  5845. //$j Формальный подзаголовок
  5846.  
  5847. //Слово или словосочетание, добавляемое к предметной рубрике для отражения формы или вида документа, целевого и читательского назначения, в форме, определяемой системой предметизации.
  5848.  
  5849. //Обязательное, если имеются доступные данные.
  5850.  
  5851. //Повторяется.
  5852.  
  5853.  
  5854.  
  5855. //$p Наименование / адрес организации
  5856.  
  5857. //Подполе содержит наименование и/или адрес организации, в которой данное лицо работало в момент создания документа.
  5858.  
  5859. //Факультативное.
  5860.  
  5861. //Не повторяется.
  5862.  
  5863.  
  5864.  
  5865. //$x Тематический подзаголовок
  5866.  
  5867. //Слово или словосочетание, добавляемое к предметной рубрике для отражения тематического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
  5868.  
  5869. //Обязательное, если имеются доступные данные.
  5870.  
  5871. //Повторяется.
  5872.  
  5873.  
  5874.  
  5875. //$y Географический подзаголовок
  5876.  
  5877. //Слово или словосочетание, добавляемое к предметной рубрике для отражения географического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
  5878.  
  5879. //Обязательное, если имеются доступные данные.
  5880.  
  5881. //Повторяется.
  5882.  
  5883.  
  5884.  
  5885. //$z Хронологический подзаголовок
  5886.  
  5887. //Слово или словосочетание, добавляемое к предметной рубрике для отражения хронологического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
  5888.  
  5889. //Обязательное, если имеются доступные данные.
  5890.  
  5891. //Повторяется.
  5892.  
  5893.  
  5894.  
  5895. //$2 Код системы
  5896.  
  5897. //Код системы предметных рубрик или тезауруса, по правилам которой построены ПР / дескриптор. Список кодов приведен в Приложении G.
  5898.  
  5899. //Обязательное, если поле 600 присутствует в записи.
  5900.  
  5901. //Не повторяется
  5902.  
  5903.                             l = Inst.IndexOf('(');
  5904.  
  5905.                             if (l != -1)
  5906.  
  5907.                             {
  5908.  
  5909.                                 ST2 = Inst.Substring(l + 1); // года жизни
  5910.  
  5911.                                 ST2 = ST2.Replace(")", "");
  5912.  
  5913.                                 Inst = Inst.Remove(l);
  5914.  
  5915.                             }
  5916.  
  5917.                             else ST2 = "";
  5918.  
  5919.                             l = Inst.IndexOf(',');
  5920.  
  5921.                             if (l != -1)
  5922.  
  5923.                             {
  5924.  
  5925.                                 ST1 = Inst.Substring(l + 1);  // Инициалы
  5926.  
  5927.                                 ST1 = ST1.Replace(")", "");
  5928.  
  5929.                                 Inst = Inst.Remove(l);  // Фамилия
  5930.  
  5931.                             }
  5932.  
  5933.                             else ST1 = "";
  5934.  
  5935.                             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  5936.  
  5937.                             + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
  5938.  
  5939.                             + ",'a','" + Inst + "') ";
  5940.  
  5941.                             command = new SqlCommand(R, con);
  5942.  
  5943.                             con.Open();
  5944.  
  5945.                             command.CommandTimeout = 1200;
  5946.  
  5947.                             command.ExecuteNonQuery();
  5948.  
  5949.                             con.Close();
  5950.  
  5951.                             ST1 = ST1.TrimEnd(' ');
  5952.  
  5953.                             ST1 = ST1.TrimStart(' ');
  5954.  
  5955.                             if (ST1.Length > 0)
  5956.  
  5957.                             {
  5958.  
  5959.                                 if (ST1.IndexOf('.') != -1)
  5960.  
  5961.                                 { // Инициалы
  5962.  
  5963.                                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  5964.  
  5965.                                     + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
  5966.  
  5967.                                     + ",'b','" + ST1 + "') ";
  5968.  
  5969.                                     command = new SqlCommand(R, con);
  5970.  
  5971.                                     con.Open();
  5972.  
  5973.                                     command.CommandTimeout = 1200;
  5974.  
  5975.                                     command.ExecuteNonQuery();
  5976.  
  5977.                                     con.Close();
  5978.  
  5979.                                 }
  5980.  
  5981.                                 else
  5982.  
  5983.                                 { // Расширение инициалов
  5984.  
  5985.                                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  5986.  
  5987.                                     + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
  5988.  
  5989.                                     + ",'g','" + ST1 + "') ";
  5990.  
  5991.                                     command = new SqlCommand(R, con);
  5992.  
  5993.                                     con.Open();
  5994.  
  5995.                                     command.CommandTimeout = 1200;
  5996.  
  5997.                                     command.ExecuteNonQuery();
  5998.  
  5999.                                     con.Close();
  6000.  
  6001.                                 }
  6002.  
  6003.                             } // ST1
  6004.  
  6005.                             if (ST2.Length > 0)
  6006.  
  6007.                             { // Даты
  6008.  
  6009.                                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6010.  
  6011.                                 + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
  6012.  
  6013.                                 + ",'f','" + ST2 + "') ";
  6014.  
  6015.                                 command = new SqlCommand(R, con);
  6016.  
  6017.                                 con.Open();
  6018.  
  6019.                                 command.CommandTimeout = 1200;
  6020.  
  6021.                                 command.ExecuteNonQuery();
  6022.  
  6023.                                 con.Close();
  6024.  
  6025.                             } // Даты
  6026.  
  6027.                             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6028.  
  6029.                             + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
  6030.  
  6031.                             + ",'2','VGBIL') ";
  6032.  
  6033.                             command = new SqlCommand(R, con);
  6034.  
  6035.                             con.Open();
  6036.  
  6037.                             command.CommandTimeout = 1200;
  6038.  
  6039.                             command.ExecuteNonQuery();
  6040.  
  6041.                             con.Close();
  6042.  
  6043.                         } // KTES=5 Персона
  6044.  
  6045.                         else
  6046.  
  6047.                         {
  6048.  
  6049.                             if (KTES == 6)
  6050.  
  6051.                             {
  6052.  
  6053.                                 //6 Организация
  6054.  
  6055.                                 //                   601  НАИМЕНОВАНИЕ ОРГАНИЗАЦИИ КАК ПРЕДМЕТ
  6056.  
  6057.                                 //Поле содержит наименование организации, являющейся одним из объектов рассмотрения в документе, представленное в форме точки доступа. К наименованию организации, используемому в качестве предметной рубрики, могут быть добавлены тематические, географические, хронологические, формальные подзаголовки.
  6058.  
  6059.                                 //Факультативное.
  6060.  
  6061.                                 //Повторяется.
  6062.  
  6063.                                 //Индикатор 1: Определяет постоянный или временный характер организации:
  6064.  
  6065.                                 //0 - Постоянная организация
  6066.  
  6067.                                 //1 - Временная организация
  6068.  
  6069.                                 //Индикатор 2: Определяет способ ввода наименования:
  6070.  
  6071.                                 //0 - Наименование в инверсированной форме
  6072.  
  6073.                                 //1 - Наименование, введенное под юрисдикцией
  6074.  
  6075.                                 //2 - Наименование в прямой форме
  6076.  
  6077.  
  6078.  
  6079.                                 // $a Начальный элемент ввода
  6080.  
  6081.                                 //Часть наименования организации, используемая как начальный элемент ввода. Начальный элемент ввода определяет положение записи в упорядоченных списках.
  6082.  
  6083.                                 //Обязательное, если поле 601 присутствует в записи.
  6084.  
  6085.                                 //Не повторяется.
  6086.  
  6087.  
  6088.  
  6089.                                 //$b Структурное подразделение организации
  6090.  
  6091.                                 //Часть наименования организации, содержащая наименование подведомственной организации, либо наименование структурного подразделения организации при иерархической структуре ее наименования. В это подполе заносится также часть наименования организации, следующая после названия территории в тех заголовках - наименованиях организации, начальным элементом ввода которых является юрисдикция (пример 7).
  6092.  
  6093.                                 //Обязательное, если имеются доступные данные.
  6094.  
  6095.                                 //Повторяется (для каждого последующего иерархического уровня).
  6096.  
  6097.  
  6098.  
  6099.                                 //$c Идентифицирующий признак
  6100.  
  6101.                                 //Дополнение к наименованию или уточнение, за исключением порядкового номера, даты и места проведения временной организации. Может включать: географические названия, даты, номера.
  6102.  
  6103.                                 //Обязательное, если имеются доступные данные.
  6104.  
  6105.                                 //Повторяется для каждого из перечисленных идентифицирующих признаков.
  6106.  
  6107.  
  6108.  
  6109.                                 //$d Порядковый номер временной организации и / или порядковый номер ее части
  6110.  
  6111.                                 //Указывается арабскими цифрами без наращения окончания.
  6112.  
  6113.                                 //Обязательное, если имеются доступные данные.
  6114.  
  6115.                                 //Не повторяется.
  6116.  
  6117.  
  6118.  
  6119.                                 //$e Место проведения временной организации
  6120.  
  6121.                                 //Название города или любой другой местности, в которой проходила временная организация.
  6122.  
  6123.                                 //Обязательное, если имеются доступные данные.
  6124.  
  6125.                                 //Не повторяется.
  6126.  
  6127.  
  6128.  
  6129.                                 //$f Дата проведения временной организации
  6130.  
  6131.                                 //Указывается арабскими цифрами без наращения окончания.
  6132.  
  6133.                                 //Обязательное, если имеются доступные данные.
  6134.  
  6135.                                 //Не повторяется.
  6136.  
  6137.  
  6138.  
  6139.                                 //$g Инверсированный элемент
  6140.  
  6141.                                 //Часть наименования организации, записанного в инверсированной форме, перенесенная с начала наименования (имя или имя и отчество, записанные после фамилии).
  6142.  
  6143.                                 //Обязательное, если имеются доступные данные.
  6144.  
  6145.                                 //Не повторяется.
  6146.  
  6147.  
  6148.  
  6149.                                 //$h Часть наименования, отличная от начального элемента ввода и от инверсированного элемента
  6150.  
  6151.                                 //В инверсированном заголовке - часть наименования, следующая за инверсией.
  6152.  
  6153.                                 //Обязательное, если имеются доступные данные.
  6154.  
  6155.                                 //Не повторяется.
  6156.  
  6157.  
  6158.  
  6159.                                 //$j Формальный подзаголовок
  6160.  
  6161.                                 //Слово или словосочетание, добавляемое к предметной рубрике для отражения формы или вида издания, целевого и читательского назначения, в форме, определяемой системой предметизации.
  6162.  
  6163.                                 //Обязательное, если имеются доступные данные.
  6164.  
  6165.                                 //Повторяется.
  6166.  
  6167.  
  6168.  
  6169.                                 //$x Тематический подзаголовок
  6170.  
  6171.                                 //Слово или словосочетание, добавляемое к предметной рубрике для отражения тематического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
  6172.  
  6173.                                 //Обязательное, если имеются доступные данные.
  6174.  
  6175.                                 //Повторяется.
  6176.  
  6177.  
  6178.  
  6179.                                 //$y Географический подзаголовок
  6180.  
  6181.                                 //Слово или словосочетание, добавляемое к предметной рубрике для отражения географического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
  6182.  
  6183.                                 //Обязательное, если имеются доступные данные.
  6184.  
  6185.                                 //Повторяется.
  6186.  
  6187.  
  6188.  
  6189.                                 //$z Хронологический подзаголовок
  6190.  
  6191.                                 //Слово или словосочетание, добавляемое к предметной рубрике для отражения хронологического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
  6192.  
  6193.                                 //Обязательное, если имеются доступные данные.
  6194.  
  6195.                                 //Повторяется.
  6196.  
  6197.  
  6198.  
  6199.                                 //$2 Код системы
  6200.  
  6201.                                 //Код системы предметных рубрик или тезауруса, по правилам которой построены ПР / дескриптор. Список кодов приведен в Приложении G.
  6202.  
  6203.                                 //Обязательное, если поле 601 присутствует в записи.
  6204.  
  6205.                                 //Не повторяется.
  6206.  
  6207.                                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6208.  
  6209.                                   + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",601,' ','1'"
  6210.  
  6211.                                   + ",'a','" + Inst + "') ";
  6212.  
  6213.                                 command = new SqlCommand(R, con);
  6214.  
  6215.                                 con.Open();
  6216.  
  6217.                                 command.CommandTimeout = 1200;
  6218.  
  6219.                                 command.ExecuteNonQuery();
  6220.  
  6221.                                 con.Close();
  6222.  
  6223.                                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6224.  
  6225.                                   + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",601,' ','1'"
  6226.  
  6227.                                   + ",'2','VGBIL') ";
  6228.  
  6229.                                 command = new SqlCommand(R, con);
  6230.  
  6231.                                 con.Open();
  6232.  
  6233.                                 command.CommandTimeout = 1200;
  6234.  
  6235.                                 command.ExecuteNonQuery();
  6236.  
  6237.                                 con.Close();
  6238.  
  6239.  
  6240.  
  6241.                             } // KTES = 6 Организация
  6242.  
  6243.                             else
  6244.  
  6245.                             {
  6246.  
  6247.                                 if (KTES == 7)  //7 Географическая местность
  6248.  
  6249.                                 {
  6250.  
  6251.                                     //                   607  ГЕОГРАФИЧЕСКОЕ НАИМЕНОВАНИЕ КАК ПРЕДМЕТ
  6252.  
  6253.                                     //Поле содержит название географического объекта, являющегося одним из предметов рассмотрения в документе, представленное в форме точки доступа. К географическому наименованию, используемому в качестве предметной рубрики, факультативно могут быть добавлены тематические, географические, хронологические, формальные подзаголовки.
  6254.  
  6255.                                     //Факультативное.
  6256.  
  6257.                                     //Повторяется.
  6258.  
  6259.                                     //Индикатор 1: # (не определен)
  6260.  
  6261.                                     //Индикатор 2: # (не определен)
  6262.  
  6263.  
  6264.  
  6265.                                     //Подполя $a Географическое наименование
  6266.  
  6267.                                     //Географическое наименование в форме, определяемой используемой системой индексирования.
  6268.  
  6269.                                     //Обязательное, если поле 607 используется в записи.
  6270.  
  6271.                                     //Не повторяется.
  6272.  
  6273.  
  6274.  
  6275.                                     //$j Формальный подзаголовок
  6276.  
  6277.                                     //Слово или словосочетание, добавляемое к предметной рубрике для отражения формы или вида документа, целевого и читательского назначения, в форме, определяемой системой предметизации.
  6278.  
  6279.                                     //Обязательное, если имеются доступные данные.
  6280.  
  6281.                                     //Повторяется.
  6282.  
  6283.  
  6284.  
  6285.                                     //$x Тематический подзаголовок
  6286.  
  6287.                                     //Слово или словосочетание, добавляемое к предметной рубрике для отражения тематического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
  6288.  
  6289.                                     //Обязательное, если имеются доступные данные.
  6290.  
  6291.                                     //Повторяется.
  6292.  
  6293.  
  6294.  
  6295.                                     //$y Географический подзаголовок
  6296.  
  6297.                                     //Слово или словосочетание, добавляемое к предметной рубрике для отражения географического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации (пример 3).
  6298.  
  6299.                                     //Обязательное, если имеются доступные данные.
  6300.  
  6301.                                     //Повторяется.
  6302.  
  6303.  
  6304.  
  6305.                                     //$z Хронологический подзаголовок
  6306.  
  6307.                                     //Слово или словосочетание, добавляемое к предметной рубрике для отражения хронологического аспекта рассмотрения предмета в документе, в форме, определяемой системой предметизации.
  6308.  
  6309.                                     //Обязательное, если имеются доступные данные.
  6310.  
  6311.                                     //Повторяется.
  6312.  
  6313.  
  6314.  
  6315.                                     //$2 Код системы
  6316.  
  6317.                                     //Код системы предметных рубрик или тезауруса, по правилам которой построены ПР / дескриптор. Список кодов приведен в Приложении G.
  6318.  
  6319.                                     //Обязательное, если поле 607 приводится в записи.
  6320.  
  6321.                                     //Не повторяется.
  6322.  
  6323.                                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6324.  
  6325.                                       + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",607,' ','1'"
  6326.  
  6327.                                       + ",'a','" + Inst + "') ";
  6328.  
  6329.                                     command = new SqlCommand(R, con);
  6330.  
  6331.                                     con.Open();
  6332.  
  6333.                                     command.CommandTimeout = 1200;
  6334.  
  6335.                                     command.ExecuteNonQuery();
  6336.  
  6337.                                     con.Close();
  6338.  
  6339.                                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6340.  
  6341.                                       + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",607,' ','1'"
  6342.  
  6343.                                       + ",'2','VGBIL') ";
  6344.  
  6345.                                     command = new SqlCommand(R, con);
  6346.  
  6347.                                     con.Open();
  6348.  
  6349.                                     command.CommandTimeout = 1200;
  6350.  
  6351.                                     command.ExecuteNonQuery();
  6352.  
  6353.                                     con.Close();
  6354.  
  6355.                                 } // KTES = 7 Местность
  6356.  
  6357.                             }
  6358.  
  6359.                         }
  6360.  
  6361.                     }
  6362.  
  6363. //            675  УНИВЕРСАЛЬНАЯ ДЕСЯТИЧНАЯ КЛАССИФИКАЦИЯ (UDC/УДК)
  6364.  
  6365. //Поле содержит классификационный индекс, присвоенный документу в соответствии с Универсальной десятичной классификацией, с указанием используемого издания УДК.
  6366.  
  6367. //Факультативное.
  6368.  
  6369. //Повторяется.
  6370.  
  6371. //Индикатор 1: # (не определен)
  6372.  
  6373. //Индикатор 2: # (не определен)
  6374.  
  6375.  
  6376.  
  6377. //Подполя $a Индекс
  6378.  
  6379. //Классификационный индекс согласно таблицам УДК.
  6380.  
  6381. //Обязательное, если поле 675 присутствует в записи.
  6382.  
  6383. //Не повторяется.
  6384.  
  6385.                     if (ITES == 0)
  6386.  
  6387.                     {
  6388.  
  6389.                         R = " SELECT UDC FROM " + BAZA + "..TPR_UDC "
  6390.  
  6391.                           + " WHERE IDCHAIN=" + DSORT;
  6392.  
  6393.                         da.SelectCommand = new SqlCommand();
  6394.  
  6395.                         da.SelectCommand.CommandText = R;
  6396.  
  6397.                         da.SelectCommand.Connection = con;
  6398.  
  6399.                         da.SelectCommand.CommandTimeout = 1200;
  6400.  
  6401.                         DataSet ds675 = new DataSet();
  6402.  
  6403.                         Int32 K675 = da.Fill(ds675, "list675");
  6404.  
  6405.                         if (K675 > 0)
  6406.  
  6407.                         {
  6408.  
  6409.                             Inst = ds675.Tables["list675"].Rows[0][0].ToString();
  6410.  
  6411.                             S675 = Inst.Replace("'", "'+char(39)+'");
  6412.  
  6413.                             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6414.  
  6415.                             + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString()
  6416.  
  6417.                             + ",675,' ',' ','a','" + S675 + "') ";
  6418.  
  6419.                             command = new SqlCommand(R, con);
  6420.  
  6421.                             con.Open();
  6422.  
  6423.                             command.CommandTimeout = 1200;
  6424.  
  6425.                             command.ExecuteNonQuery();
  6426.  
  6427.                             con.Close();
  6428.  
  6429.                         }
  6430.  
  6431.                     }
  6432.  
  6433.                 } // Цикл по терминам ПР
  6434.  
  6435.                 if (PR.Length > 0)
  6436.  
  6437.                 {
  6438.  
  6439.                     PR = PR + (char)31 + "2VGBIL";
  6440.  
  6441.                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6442.  
  6443.     + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",606"
  6444.  
  6445.     + ",'0',' ','a','" + PR + "') ";
  6446.  
  6447.                     command = new SqlCommand(R, con);
  6448.  
  6449.                     con.Open();
  6450.  
  6451.                     command.CommandTimeout = 1200;
  6452.  
  6453.                     command.ExecuteNonQuery();
  6454.  
  6455.                     con.Close();
  6456.  
  6457.                 }
  6458.  
  6459.             }
  6460.  
  6461.         } // OBR606
  6462.  
  6463. //
  6464.  
  6465. //-- =============================================
  6466.  
  6467. //-- Description:   Вид обработки = 7003 - Персона
  6468.  
  6469. //-- =============================================
  6470.  
  6471.         private void OBR7003(Int32 IDM, Int32 MNF, String MSF, Int32 DIDDATA, Int16 MET,
  6472.  
  6473.             String IND1, String IND2, String IDENT, String DSORT)
  6474.  
  6475.         {
  6476.  
  6477.             //          700  ИМЯ ЛИЦА - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ
  6478.  
  6479.             //Поле содержит имя лица, для которого определен статус первичной ответственности по отношению к каталогизируемому документу, в форме точки доступа. Используется в том случае, если основной точкой доступа в записи является заголовок, содержащий имя лица.
  6480.  
  6481.             //Обязательное, если должна быть создана основная точка доступа на имя лица, для которого определен статус первичной ответственности.
  6482.  
  6483.             //  Поле не может присутствовать в записи, где есть поле 710 НАИМЕНОВАНИЕ ОРГАНИЗАЦИИ - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ или 720 РОДОВОЕ ИМЯ - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ, так как запись может иметь только одну точку доступа с первичной ответственностью.
  6484.  
  6485.             //Не повторяется.
  6486.  
  6487.             //Индикатор 1: # ( не определен)
  6488.  
  6489.             //Индикатор 2: Индикатор формы представления имени
  6490.  
  6491.             //  Индикатор определяет, записывается ли имя под первым приведенным именем (имеется в виду
  6492.  
  6493.             //            личное имя, а не фамилия) в прямом порядке или оно вводится под фамилией
  6494.  
  6495.             //            , родовым именем, отчеством в инверсированной форме.
  6496.  
  6497.             //  0 - Имя лица вводится под личным именем или в прямом порядке
  6498.  
  6499.             //  1 - Имя лица записано под фамилией (родовым именем, отчеством и т. д.)
  6500.  
  6501.             // $a Начальный элемент ввода
  6502.  
  6503.             //Часть имени, используемая как начальный элемент ввода. Если поле 700 приводится в записи, то по подполю 700$a определяется положение записи в упорядоченных списках.
  6504.  
  6505.             //Обязательное, если поле 700 присутствует в записи.
  6506.  
  6507.             //Не повторяется.
  6508.  
  6509.             // $b Часть имени, кроме начального элемента ввода
  6510.  
  6511.             //Остаток имени от начального элемента ввода - фамилии или родового имени. Содержит личные имена (не фамилии) и другие присвоенные имена в инициальной форме. При использовании подполя индикатор формы представления имени должен быть 1. Предназначенные для печати раскрытые инициалы записываются в $g.
  6512.  
  6513.             //Обязательное, если имеются доступные данные.
  6514.  
  6515.             //Не повторяется.
  6516.  
  6517.             // $c Дополнение к именам, кроме дат
  6518.  
  6519.             //Любые дополнения к именам (кроме дат), которые не формируют неотъемлемую часть самого имени, включая звания, эпитеты, определения или указания должности.
  6520.  
  6521.             //Обязательное, если имеются доступные данные.
  6522.  
  6523.             //Повторяется для второго или последующих дополнений.
  6524.  
  6525.             // $d Римские цифры
  6526.  
  6527.             //Римские цифры, связанные с именами римских пап, членов королевских семей и священнослужителей. Если имеется эпитет (второе имя, прозвище и т.п.), связанный с нумерацией, эпитет также включается в подполе $d (примеры 11-12). При использовании подполя индикатор формы представления имени должен быть 0.
  6528.  
  6529.             //Обязательное, если имеются доступные данные.
  6530.  
  6531.             //Не повторяется.
  6532.  
  6533.             // $f Даты
  6534.  
  6535.             //Даты, присоединяемые к именам лиц, включая слова, указывающие на смысл дат (т.е. жил, родился, умер), вводятся в подполе в полной или сокращенной форме . Все даты для лица, названного в поле, вводятся в одно подполе $f.
  6536.  
  6537.             //Обязательное, если имеются доступные данные.
  6538.  
  6539.             //Не повторяется.
  6540.  
  6541.             // $g Расширение инициалов личного имени
  6542.  
  6543.             //Полная форма личного имени, когда наряду с инициалами, записанными в подполе $b, необходимо их раскрытие.
  6544.  
  6545.             //Обязательное, если имеются доступные данные.
  6546.  
  6547.             //Не повторяется.
  6548.  
  6549.             // $p Наименование/адрес организации
  6550.  
  6551.             //Подполе содержит наименование и / или адрес организации, с которой данное лицо было связано в момент создания произведения.
  6552.  
  6553.             //Факультативное.
  6554.  
  6555.             //Не повторяется.
  6556.  
  6557.             // $3 Номер авторитетной / нормативной записи
  6558.  
  6559.             //Контрольный номер авторитетной / нормативной записи для заголовка. Подполе предназначается для использования в рамках Формата авторитетных записей RUSMARC. До внедрения формата подполе может использоваться для номера в локальных файлах библиографических агентств.
  6560.  
  6561.             //Обязательное, при условии существования авторитетной / нормативной записи.
  6562.  
  6563.             //Не повторяется.
  6564.  
  6565.             //      Примечание
  6566.  
  6567.             //Для связи полей, содержащих принятые формы имен в альтернативной графике, по-прежнему
  6568.  
  6569.             //            используется подполе $6.
  6570.  
  6571.             //  Примечания о содержании поля
  6572.  
  6573.             // Форма
  6574.  
  6575.             //Имя лица и все относящиеся к нему добавления формулируются в соответствии с Российскими правилами каталогизации.
  6576.  
  6577.             // Выбор подполей
  6578.  
  6579.             //Имена одного и того же лица, зафиксированные в файлах авторитетных / нормативных записей
  6580.  
  6581.             //     различных библиографирующих учреждений, не всегда будут одинаковым образом
  6582.  
  6583.             //     распределены по подполям. Единственным способом определения различий между
  6584.  
  6585.             //     начальным элементом ввода, частью имени, кроме начального элемента, и дополнениями к
  6586.  
  6587.             //     имени, кроме дат, является анализ их использования. Первый элемент ($a – начальный
  6588.  
  6589.             //     элемент ввода) - это слово, которое определяет положение записи в упорядоченных списках.
  6590.  
  6591.             //     Второй элемент ($b - часть имени, кроме начального элемента ввода) может использоваться
  6592.  
  6593.             //     как второй элемент сортировки. Третий элемент ($c - дополнения к имени, кроме дат) может
  6594.  
  6595.             //     использоваться как третий элемент сортировки, или может игнорироваться в процессе
  6596.  
  6597.             //     сортировки, особенно если он предшествует подполю $b.
  6598.  
  6599.             //Если имена, начинающиеся с неизменяемой частицы, упорядочиваются в списках под следующим
  6600.  
  6601.             //    после частицы элементом, то такие частицы рекомендуется записывать в конце подполя
  6602.  
  6603.             //    $b - часть имени, кроме начального элемента ввода. Кроме того, в этом случае возможно
  6604.  
  6605.             //    использование механизма символов границ сортировки - при этом неизменяемая частица
  6606.  
  6607.             //    располагается в начале подполя $a. Выбор одного из этих механизмов определяется
  6608.  
  6609.             //    требованиями, которые библиографирующее агентство предъявляет к выходным формам.
  6610.  
  6611.             //Титулы, адреса, эпитеты или уточняющие слова имен (кроме дат), добавленные каталогизатором,
  6612.  
  6613.             //    записываются как дополнения к именам в подполе $c.
  6614.  
  6615.             //Пунктуация
  6616.  
  6617.             //Рекомендуется включать в запись RUSMARC ту пунктуацию, которая предназначена для вывода
  6618.  
  6619.             //    на дисплей / печать. При отсутствии стандартов на пунктуацию получатели записей в
  6620.  
  6621.             //    формате RUSMARC должны иметь представление о практике, принятой в агентстве,
  6622.  
  6623.             //    подготавливающем запись, а учреждения, распространяющие записи, должны быть
  6624.  
  6625.             //    последовательными в своих решениях. В документацию, сопровождающую обменные файлы должны
  6626.  
  6627.             //    включаться разъяснения по использованию пунктуации.
  6628.  
  6629.             //Индикатор 0 - имя записано в прямом порядке
  6630.  
  6631.             //ИМЯ
  6632.  
  6633.             //ИМЯ ОТЧЕСТВО
  6634.  
  6635.             //ИМЯ ПРОЗВИЩЕ (ЭПИТЕТ, ОПРЕДЕЛЕНИЕ)
  6636.  
  6637.             //ИМЯ [ФАМИЛИЯ ИМЯ ОТЧЕСТВО] ДУХОВНОЕ ЗВАНИЕ
  6638.  
  6639.             //ИМЯ ИМЯ ИМЯ (китайские и другие восточные имена)
  6640.  
  6641.             //СОКРАЩЕННОЕ ИМЯ (.) ИНИЦИАЛ
  6642.  
  6643.             //ИНИЦИАЛ (.) СОКРАЩЕННОЕ ИЛИ ПОЛНОЕ ИМЯ
  6644.  
  6645.             //
  6646.  
  6647.             //Индикатор 1 - имя записано под фамилией, родовым именем, отчеством
  6648.  
  6649.             //ФАМИЛИЯ (,) ИМЯ ОТЧЕСТВО (то же в инициальной форме)
  6650.  
  6651.             //ФАМИЛИЯ (,) ИМЯ (то же инициалы)
  6652.  
  6653.             //ФАМИЛИЯ
  6654.  
  6655.             //ФАМИЛИЯ (-) ФАМИЛИЯ (,) ИМЯ ОТЧЕСТВО (то же в инициальной форме)
  6656.  
  6657.             //ФАМИЛИЯ ФАМИЛИЯ ФАМИЛИЯ (,) ИМЯ .(то же инициалы)
  6658.  
  6659.             //СОКРАЩЕННАЯ ФАМИЛИЯ (,) ИМЯ (то же инициалы)
  6660.  
  6661.             //
  6662.  
  6663.             //(во всех схемах могут также присутствовать идентифицирующие признаки)
  6664.  
  6665.             //
  6666.  
  6667.             String ST1, ST2, ST2_1, AFN_DAT;
  6668.  
  6669.             Int32 i;
  6670.  
  6671.             R = " SELECT AFLINKID FROM " + BAZA + "..DATAEXT "
  6672.  
  6673.              + " WHERE IDDATA=" + DIDDATA + " AND MNFIELD=" + MET.ToString();
  6674.  
  6675.             da.SelectCommand = new SqlCommand();
  6676.  
  6677.             da.SelectCommand.CommandText = R;
  6678.  
  6679.             da.SelectCommand.Connection = con;
  6680.  
  6681.             da.SelectCommand.CommandTimeout = 1200;
  6682.  
  6683.             DataSet ds731 = new DataSet();
  6684.  
  6685.             Int32 K73 = da.Fill(ds731, "list731");
  6686.  
  6687.             if (K73 > 0) // Есть ссылка на AF
  6688.  
  6689.             {
  6690.  
  6691.                 Int32 IDAF = Int32.Parse(ds731.Tables["list731"].Rows[0][0].ToString()); // IDAF
  6692.  
  6693.                 AFN_DAT = ""; // Даты жизни
  6694.  
  6695.                 R = " SELECT TOP(1) PLAIN FROM " + BAZA + "..AFNAMESVAR "
  6696.  
  6697.                  + " WHERE IDAF=" + IDAF + " AND [STATUS]=1";
  6698.  
  6699.                 da.SelectCommand = new SqlCommand();
  6700.  
  6701.                 da.SelectCommand.CommandText = R;
  6702.  
  6703.                 da.SelectCommand.Connection = con;
  6704.  
  6705.                 da.SelectCommand.CommandTimeout = 1200;
  6706.  
  6707.                 DataSet ds732 = new DataSet();
  6708.  
  6709.                 Int32 K732 = da.Fill(ds732, "list732");
  6710.  
  6711.                 if (K732 > 0) // Есть предпочтительный вариант
  6712.  
  6713.                 {
  6714.  
  6715.                     Inst = ds732.Tables["list732"].Rows[0][0].ToString();
  6716.  
  6717.                     //  Обинье,Теодор Агриппа д' (1552-1630)
  6718.  
  6719.                     //  Andrew,Robert (1926-    ) (подлинное имя)
  6720.  
  6721.                     while ((l = Inst.IndexOf('(')) != -1)  //  Годы жизни,титул или род деятельности
  6722.  
  6723.                     {
  6724.  
  6725.                         ST2 = Inst.Substring(l + 1); // годы жизни,титул или род деятельности
  6726.  
  6727.                         i = ST2.IndexOf(")");
  6728.  
  6729.                         ST2 = ST2.Substring(0, i); // Внутри ()
  6730.  
  6731.                         Inst = Inst.Remove(l, i + 1); // Удаление внутри () вместе с ()
  6732.  
  6733.                         while ((l = ST2.IndexOf(';')) != -1)
  6734.  
  6735.                         {
  6736.  
  6737.                             // Basil (Krivocheine; архиепископ)
  6738.  
  6739.                             // Василий (Кривошеин; 1900-1985)
  6740.  
  6741.                             ST2_1 = ST2.Substring(0, l - 1); // До ;
  6742.  
  6743.                             ST2 = ST2.Substring(l + 1);  // Остаток
  6744.  
  6745.                             if (ST2.StartsWith(" ") == true) ST2 = ST2.Substring(1);
  6746.  
  6747.                             i = testAFNAME(ST2_1);
  6748.  
  6749.                             if (i == 1)
  6750.  
  6751.                             {
  6752.  
  6753.                                 AFN_DAT = ST2_1;
  6754.  
  6755.                                 goto MAFN;
  6756.  
  6757.                             }
  6758.  
  6759.                         } // цикл по ;
  6760.  
  6761.                         // Losita,Angelo Maria (подлинное имя)
  6762.  
  6763.                         // Akihito (император Японии)
  6764.  
  6765.                         // Эшбери, Джон (1927-)
  6766.  
  6767.                         // Athenagoras (архиепископ; 1912-    )
  6768.  
  6769.                         // Эсхил (ок. 525-456 до н.э.)
  6770.  
  6771.                         // Bayley,John (    -1869)
  6772.  
  6773.                         i = testAFNAME(ST2);
  6774.  
  6775.                         if (i == 1)
  6776.  
  6777.                         {
  6778.  
  6779.                             AFN_DAT = ST2;
  6780.  
  6781.                             goto MAFN;
  6782.  
  6783.                         }
  6784.  
  6785.                     } // цикл по () в AFNAMESVAR - Годы жизни,титул или род деятельности
  6786.  
  6787.                     // В () нет дат жизни
  6788.  
  6789.                     R = " SELECT PLAIN FROM " + BAZA + "..AFNAMESDATA "
  6790.  
  6791.                      + " WHERE IDAF=" + IDAF + " AND IDFIELD=6";     // Годы жизни
  6792.  
  6793.                     da.SelectCommand = new SqlCommand();
  6794.  
  6795.                     da.SelectCommand.CommandText = R;
  6796.  
  6797.                     da.SelectCommand.Connection = con;
  6798.  
  6799.                     da.SelectCommand.CommandTimeout = 1200;
  6800.  
  6801.                     DataSet ds737 = new DataSet();
  6802.  
  6803.                     Int32 K737 = da.Fill(ds737, "list737");
  6804.  
  6805.                     if (K737 != 0) //
  6806.  
  6807.                     {
  6808.  
  6809.                         AFN_DAT = ds737.Tables["list737"].Rows[0][0].ToString();
  6810.  
  6811.                     }
  6812.  
  6813.                 MAFN: ;
  6814.  
  6815.                     l = Inst.IndexOf(',');
  6816.  
  6817.                     if (l != -1)
  6818.  
  6819.                     {
  6820.  
  6821.                         ST1 = Inst.Substring(l + 1);  // Инициалы
  6822.  
  6823.                         ST1 = ST1.Replace(")", "");
  6824.  
  6825.                         Inst = Inst.Remove(l);  // Фамилия
  6826.  
  6827.                     }
  6828.  
  6829.                     else ST1 = "";
  6830.  
  6831.                     R = " SELECT ID FROM BJRUSMARC..RUSM "
  6832.  
  6833.                      + " WHERE IDBLOCK=" + DIDDATA.ToString() + " AND MET=" + MET.ToString()
  6834.  
  6835.                      + " AND IDENT='a' AND POL='" + Inst + "'";
  6836.  
  6837.                     da.SelectCommand = new SqlCommand();
  6838.  
  6839.                     da.SelectCommand.CommandText = R;
  6840.  
  6841.                     da.SelectCommand.Connection = con;
  6842.  
  6843.                     da.SelectCommand.CommandTimeout = 1200;
  6844.  
  6845.                     DataSet ds733 = new DataSet();
  6846.  
  6847.                     Int32 K733 = da.Fill(ds733);
  6848.  
  6849.                     if (K733 == 0)
  6850.  
  6851.                     { // Добавление фамилии
  6852.  
  6853.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6854.  
  6855.                         + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  6856.  
  6857.                            + ",' ','1','a','" + Inst + "') ";
  6858.  
  6859.                         command = new SqlCommand(R, con);
  6860.  
  6861.                         con.Open();
  6862.  
  6863.                         command.CommandTimeout = 1200;
  6864.  
  6865.                         command.ExecuteNonQuery();
  6866.  
  6867.                         con.Close();
  6868.  
  6869.                     }
  6870.  
  6871.                     if (ST1.Length > 0)
  6872.  
  6873.                     {
  6874.  
  6875.                         if (ST1.IndexOf('.') != -1)
  6876.  
  6877.                         { // Инициалы
  6878.  
  6879.                             R = " SELECT ID FROM BJRUSMARC..RUSM "
  6880.  
  6881.                              + " WHERE IDBLOCK=" + DIDDATA.ToString() + " AND MET=" + MET.ToString()
  6882.  
  6883.                              + " AND IDENT='b' AND POL='" + ST1 + "'";
  6884.  
  6885.                             da.SelectCommand = new SqlCommand();
  6886.  
  6887.                             da.SelectCommand.CommandText = R;
  6888.  
  6889.                             da.SelectCommand.Connection = con;
  6890.  
  6891.                             da.SelectCommand.CommandTimeout = 1200;
  6892.  
  6893.                             DataSet ds734 = new DataSet();
  6894.  
  6895.                             Int32 K734 = da.Fill(ds734);
  6896.  
  6897.                             if (K734 == 0)
  6898.  
  6899.                             {
  6900.  
  6901.                                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6902.  
  6903.                                  + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ","
  6904.  
  6905.                                  + MET.ToString() + ",' ','1','b','" + ST1 + "') ";
  6906.  
  6907.                                 command = new SqlCommand(R, con);
  6908.  
  6909.                                 con.Open();
  6910.  
  6911.                                 command.CommandTimeout = 1200;
  6912.  
  6913.                                 command.ExecuteNonQuery();
  6914.  
  6915.                                 con.Close();
  6916.  
  6917.                             }
  6918.  
  6919.                         }
  6920.  
  6921.                     }
  6922.  
  6923.                     else
  6924.  
  6925.                     { // Расширение инициалов
  6926.  
  6927.                         R = " SELECT ID FROM BJRUSMARC..RUSM "
  6928.  
  6929.                          + " WHERE IDBLOCK=" + DIDDATA.ToString() + " AND MET=" + MET.ToString()
  6930.  
  6931.                          + " AND IDENT='g' AND POL='" + ST1 + "'";
  6932.  
  6933.                         da.SelectCommand = new SqlCommand();
  6934.  
  6935.                         da.SelectCommand.CommandText = R;
  6936.  
  6937.                         da.SelectCommand.Connection = con;
  6938.  
  6939.                         da.SelectCommand.CommandTimeout = 1200;
  6940.  
  6941.                         DataSet ds735 = new DataSet();
  6942.  
  6943.                         Int32 K735 = da.Fill(ds735);
  6944.  
  6945.                         if (K735 == 0)
  6946.  
  6947.                         { // Имя лица как предмет
  6948.  
  6949.                             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6950.  
  6951.                             + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
  6952.  
  6953.                             + ",'g','" + ST1 + "') ";
  6954.  
  6955.                             command = new SqlCommand(R, con);
  6956.  
  6957.                             con.Open();
  6958.  
  6959.                             command.CommandTimeout = 1200;
  6960.  
  6961.                             command.ExecuteNonQuery();
  6962.  
  6963.                             con.Close();
  6964.  
  6965.                         }
  6966.  
  6967.                     }
  6968.  
  6969.                 } // ST1  // Есть предпочтительный вариант
  6970.  
  6971.                 if (AFN_DAT.Length > 0)
  6972.  
  6973.                 { // Даты
  6974.  
  6975.                     R = " SELECT ID FROM BJRUSMARC..RUSM "
  6976.  
  6977.                      + " WHERE IDBLOCK=" + DIDDATA.ToString() + " AND MET=" + MET.ToString()
  6978.  
  6979.                      + " AND IDENT='f' AND POL='" + AFN_DAT + "'";
  6980.  
  6981.                     da.SelectCommand = new SqlCommand();
  6982.  
  6983.                     da.SelectCommand.CommandText = R;
  6984.  
  6985.                     da.SelectCommand.Connection = con;
  6986.  
  6987.                     da.SelectCommand.CommandTimeout = 1200;
  6988.  
  6989.                     DataSet ds736 = new DataSet();
  6990.  
  6991.                     Int32 K736 = da.Fill(ds736);
  6992.  
  6993.                     if (K736 == 0)
  6994.  
  6995.                     {
  6996.  
  6997.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  6998.  
  6999.                         + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
  7000.  
  7001.                         + ",'f','" + AFN_DAT + "') ";
  7002.  
  7003.                         command = new SqlCommand(R, con);
  7004.  
  7005.                         con.Open();
  7006.  
  7007.                         command.CommandTimeout = 1200;
  7008.  
  7009.                         command.ExecuteNonQuery();
  7010.  
  7011.                         con.Close();
  7012.  
  7013.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  7014.  
  7015.                         + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ",600,' ','1'"
  7016.  
  7017.                         + ",'2','VGBIL') ";
  7018.  
  7019.                         command = new SqlCommand(R, con);
  7020.  
  7021.                         con.Open();
  7022.  
  7023.                         command.CommandTimeout = 1200;
  7024.  
  7025.                         command.ExecuteNonQuery();
  7026.  
  7027.                         con.Close();
  7028.  
  7029.                     }
  7030.  
  7031.                 } // Даты
  7032.  
  7033.             }
  7034.  
  7035.         }
  7036.  
  7037. //-- =============================================
  7038.  
  7039. //-- Description:   testgodi - Проверка на годы жизхни
  7040.  
  7041. //-- =============================================
  7042.  
  7043.         private Int32 testAFNAME (String ST)
  7044.  
  7045.         {
  7046.  
  7047.            String R;
  7048.  
  7049. //  Athenagoras (1912-    )
  7050.  
  7051. //  Эсхил (ок. 525-456 до н.э.)
  7052.  
  7053. //  Bayley,John (    -1869)
  7054.  
  7055. //  Евсеева,Л.М. (ред.-сост.)
  7056.  
  7057. //  Reisner,Gavriel (Ben-Ephraim)
  7058.  
  7059. //  Платон (428 или 427 до н.э. -348 или 347 до н.э.)
  7060.  
  7061. //  Порфирий (232/233-ок.305)
  7062.  
  7063. //  Алипий (Кастальский-Бороздин; архимандрит)
  7064.  
  7065. //  Фрэг Самир (Ибн Аш-Шааты)
  7066.  
  7067.             if (ST.IndexOf("до н.э.") != -1) return 1;
  7068.  
  7069.             if (ST.StartsWith("ок.") == true) return 1;
  7070.  
  7071.             R = ST.Replace("ок.","");
  7072.  
  7073.             if (R.IndexOfAny("0123456789IVX".ToCharArray()) != -1) return 1;
  7074.  
  7075.             //K = null;
  7076.  
  7077.             R = " SELECT PLAIN "
  7078.  
  7079.             + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
  7080.  
  7081.                  + " WHERE P.IDDATA= " + DIDDATA.ToString() + " AND MNFIELD=710 AND MSFIELD='$9' ";
  7082.  
  7083.             da.SelectCommand = new SqlCommand();
  7084.  
  7085.             da.SelectCommand.CommandText = R;
  7086.  
  7087.             da.SelectCommand.Connection = con;
  7088.  
  7089.             da.SelectCommand.CommandTimeout = 1200;
  7090.  
  7091.             ds = new DataSet();
  7092.  
  7093.             Int32 KK = da.Fill(ds, "list0"); // Характеристика организации - врем. или пост.
  7094.  
  7095.             if (KK > 0) return 2;
  7096.  
  7097.  
  7098.  
  7099.             return 0;
  7100.  
  7101.         }
  7102.  
  7103. //
  7104.  
  7105. //        -- =============================================
  7106.  
  7107. //-- Description:   Вид обработки = 710 - Организация
  7108.  
  7109. //-- =============================================
  7110.  
  7111.         private void OBR710(Int32 IDM, Int32 DIDDATA, Int16 MET, String IND1,
  7112.  
  7113.             String IND2, String IDENT, String DSORT)
  7114.  
  7115.         {
  7116.  
  7117.             String NAME, C, POL, T1, VID, S;
  7118.  
  7119.             Int32 IDAF, KK, KK1, KK2, KK3;
  7120.  
  7121.             //--710  НАИМЕНОВАНИЕ ОРГАНИЗАЦИИ - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ
  7122.  
  7123.             //--Поле содержит наименование организации, для которой определен
  7124.  
  7125.             //--  статус первичной ответственности по отношению к каталогизируемому
  7126.  
  7127.             //--  документу, в форме точки доступа. Поле используется в случае,
  7128.  
  7129.             //--  если основной точкой доступа в записи является заголовок,
  7130.  
  7131.             //--  содержащий наименование организации.
  7132.  
  7133.             //-- Обязательное, если должна быть создана основная точка доступа
  7134.  
  7135.             //--  на наименование организации, для которой определен статус
  7136.  
  7137.             //--  первичной ответственности.
  7138.  
  7139.             //-- Поле не может присутствовать в записи, где есть поле 700 ИМЯ
  7140.  
  7141.             //--  ЛИЦА - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ или поле 720 - РОДОВОЕ ИМЯ
  7142.  
  7143.             //--  - ПЕРВИЧНАЯ ОТВЕТСТВЕННОСТЬ, так как запись может иметь только
  7144.  
  7145.             //--  одну точку доступа с первичной ответственностью.
  7146.  
  7147.             //-- Не повторяется.
  7148.  
  7149.             //--
  7150.  
  7151.             //-- Индикатор 1: Определяет постоянный или временный характер
  7152.  
  7153.             //--  организации
  7154.  
  7155.             //-- 0 - Постоянная организация
  7156.  
  7157.             //-- 1 - Временная организация
  7158.  
  7159.             //-- Если исходный формат не делает различия между постоянными
  7160.  
  7161.             //--  и временными организациями, то в позиции индикатора проставляется
  7162.  
  7163.             //--  символ-заполнитель.
  7164.  
  7165.             //-- Если наименование организации вводится как подразделение
  7166.  
  7167.             //--  вышестоящей организации, значение первого индикатора
  7168.  
  7169.             //--  определяется типом вышестоящей организации.
  7170.  
  7171.             //--
  7172.  
  7173.             //-- Индикатор 2: Определяет способ ввода наименования организации
  7174.  
  7175.             //--  0 - Наименование в инверсированной форме
  7176.  
  7177.             //--   Инверсированная форма может использоваться, когда наименование
  7178.  
  7179.             //--    организации (постоянной или временной) начинается с инициала
  7180.  
  7181.             //--    или личного имени, относящихся к имени лица.
  7182.  
  7183.             //--  1 - Наименование, введенное под юрисдикцией
  7184.  
  7185.             //--   Используется для наименований организаций, относящихся к правительству или юрисдикции, записываемых под наименованием их местонахождения.
  7186.  
  7187.             //--  2 - Наименование в прямой форме
  7188.  
  7189.             //--   Используется для всех других видов наименований организаций.
  7190.  
  7191.             //-- $a Начальный элемент ввода
  7192.  
  7193.             //--   Часть наименования, используемая как начальный элемент ввода.
  7194.  
  7195.             //--    Если поле 710 приводится в записи, то по подполю $a
  7196.  
  7197.             //--     определяется положение записи в упорядоченных списках.
  7198.  
  7199.             //--   Обязательное, если поле 710 присутствует в записи.
  7200.  
  7201.             //--   Не повторяется.
  7202.  
  7203.             //-- $b Структурное подразделение
  7204.  
  7205.             //--   Часть наименования организации, содержащая наименование
  7206.  
  7207.             //--    подведомственной организации или структурного подразделения
  7208.  
  7209.             //--    при иерархической структуре наименования организации. А
  7210.  
  7211.             //--    также часть наименования организации, следующая после
  7212.  
  7213.             //--    названия юрисдикции, в заголовках под юрисдикцией.
  7214.  
  7215.             //--   Обязательное, если имеются доступные данные.
  7216.  
  7217.             //--   Повторяется для каждого последующего иерархического уровня.
  7218.  
  7219.             //-- $c Идентифицирующий признак
  7220.  
  7221.             //--   Дополнение к наименованию или уточнение, за исключением
  7222.  
  7223.             //--    порядкового номера, даты и места проведения временной
  7224.  
  7225.             //--    организации. Может включать: географические названия, даты,
  7226.  
  7227.             //--    номера.
  7228.  
  7229.             //--   Обязательное, если имеются доступные данные.
  7230.  
  7231.             //--   Повторяется.
  7232.  
  7233.             //-- $d Порядковый номер временной организации и / или порядковый
  7234.  
  7235.             //--     номер ее части
  7236.  
  7237.             //--   Указывается арабскими цифрами без наращения окончания.
  7238.  
  7239.             //--    Обязательное, если имеются доступные данные.
  7240.  
  7241.             //--   Не повторяется.
  7242.  
  7243.             //-- $e Место проведения временной организации
  7244.  
  7245.             //--   Может представлять собой название города или любой др.
  7246.  
  7247.             //--    местности, где проходила временная организация, а также
  7248.  
  7249.             //--    название страны.
  7250.  
  7251.             //--   Обязательное, если имеются доступные данные.
  7252.  
  7253.             //--   Не повторяется.
  7254.  
  7255.             //-- $f Дата проведения временной организации
  7256.  
  7257.             //--   Указывается арабскими цифрами без наращения окончания.
  7258.  
  7259.             //--   Обязательное, если имеются доступные данные.
  7260.  
  7261.             //--   Не повторяется.
  7262.  
  7263.             //-- $g Инверсированный элемент
  7264.  
  7265.             //--   Часть наименования организации, записанного в инверсированной
  7266.  
  7267.             //--    форме, перенесенная с начала наименования (инициалы или имя
  7268.  
  7269.             //--    и отчество, записанные после фамилии).
  7270.  
  7271.             //--   Обязательное, если имеются доступные данные.
  7272.  
  7273.             //--   Не повторяется.
  7274.  
  7275.             //-- $h Часть наименования, отличная от начального элемента ввода
  7276.  
  7277.             //--     и инверсированного элемента
  7278.  
  7279.             //--   В инверсированном заголовке - часть наименования, следующая
  7280.  
  7281.             //--    за инверсией.
  7282.  
  7283.             //--   Обязательное, если имеются доступные данные.
  7284.  
  7285.             //--   Не повторяется.
  7286.  
  7287.             //-- $p Местонахождение
  7288.  
  7289.             //--   Местонахождение или адрес организации.
  7290.  
  7291.             //--   Факультативное.
  7292.  
  7293.             //--   Не повторяется.
  7294.  
  7295.             //-- $3 Номер авторитетной / нормативной записи
  7296.  
  7297.             //--   Контрольный номер авторитетной / нормативной записи для
  7298.  
  7299.             //--    заголовка. Подполе предназначается для использования в рамках
  7300.  
  7301.             //--    Российского коммуникативного формата представления авторитетных
  7302.  
  7303.             //--    / нормативных записей.
  7304.  
  7305.             //--   Обязательное, при условии существования авторитетной / нормативной
  7306.  
  7307.             //--   записи.
  7308.  
  7309.             //--   Не повторяется.
  7310.  
  7311.             //-- $4 Код отношения
  7312.  
  7313.             //--   Код, используемый для указания взаимосвязи между организацией,
  7314.  
  7315.             //--    указанной в поле, и каталогизируемым документом.
  7316.  
  7317.             //--   Обязательное, если организация, указанная в поле, не является
  7318.  
  7319.             //--    автором документа (т.е. отсутствие подполя $4 определяет, что
  7320.  
  7321.             //--    организация, указанная в поле, является автором).
  7322.  
  7323.             //--   Повторяется (аналогично 70- полям).
  7324.  
  7325.             VID = " ";
  7326.  
  7327.             R = " SELECT PLAIN "
  7328.  
  7329.             + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
  7330.  
  7331.                  + " WHERE P.IDDATA= " + DIDDATA.ToString() + " AND MNFIELD=710 AND MSFIELD='$9' ";
  7332.  
  7333.             da.SelectCommand = new SqlCommand();
  7334.  
  7335.             da.SelectCommand.CommandText = R;
  7336.  
  7337.             da.SelectCommand.Connection = con;
  7338.  
  7339.             da.SelectCommand.CommandTimeout = 1200;
  7340.  
  7341.             ds = new DataSet();
  7342.  
  7343.             KK = da.Fill(ds, "list0");
  7344.  
  7345.             VID = ds.Tables["list0"].Rows[0][0].ToString();
  7346.  
  7347.             if (VID.Substring(0, 7) == "Постоян")
  7348.  
  7349.             { VID = "0"; }
  7350.  
  7351.             else
  7352.  
  7353.             {
  7354.  
  7355.                 if (VID.Substring(0, 6) == "Времен")
  7356.  
  7357.                 { VID = "1"; }
  7358.  
  7359.             }
  7360.  
  7361.             R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  7362.  
  7363.                        + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + ","
  7364.  
  7365.                        + MET.ToString() + ",'" + VID + "','1','a','" + DSORT + "')";
  7366.  
  7367.             command = new SqlCommand(R, con);
  7368.  
  7369.             con.Open();
  7370.  
  7371.             command.CommandTimeout = 1200;
  7372.  
  7373.             command.ExecuteNonQuery();
  7374.  
  7375.             con.Close();
  7376.  
  7377.             R = " SELECT IDAF FROM " + BAZA + "..AFORGSVAR WHERE PLAIN='" + DSORT + "'";
  7378.  
  7379.             da.SelectCommand = new SqlCommand();
  7380.  
  7381.             da.SelectCommand.CommandText = R;
  7382.  
  7383.             da.SelectCommand.Connection = con;
  7384.  
  7385.             da.SelectCommand.CommandTimeout = 1200;
  7386.  
  7387.             ds = new DataSet();
  7388.  
  7389.             KK = da.Fill(ds, "list0");
  7390.  
  7391.             if (KK > 0) // Есть авторитетная запись
  7392.  
  7393.             {
  7394.  
  7395.                 IDAF = Int32.Parse(ds.Tables["list0"].Rows[0][0].ToString());
  7396.  
  7397.                 R = " SELECT  IDFIELD,PLAIN FROM " + BAZA + "..AFORGSDATA "
  7398.  
  7399.                     + " WHERE IDAF= " + IDAF.ToString();
  7400.  
  7401.                 da.SelectCommand = new SqlCommand();
  7402.  
  7403.                 da.SelectCommand.CommandText = R;
  7404.  
  7405.                 da.SelectCommand.Connection = con;
  7406.  
  7407.                 da.SelectCommand.CommandTimeout = 1200;
  7408.  
  7409.                 ds = new DataSet();
  7410.  
  7411.                 KK2 = da.Fill(ds, "list0");
  7412.  
  7413.                 if (KK2 > 0)
  7414.  
  7415.                 {
  7416.  
  7417.                     for (int count = 0; count < KK2; count++)
  7418.  
  7419.                     {
  7420.  
  7421.                         S = ds.Tables["list0"].Rows[count][0].ToString();
  7422.  
  7423.                         POL = ds.Tables["list0"].Rows[count][1].ToString();
  7424.  
  7425.                         R = " SELECT  [NAME] FROM " + BAZA + "..AFORGSFIELDS "
  7426.  
  7427.                             + " WHERE ID= " + S + " AND LEFT([NAME],5) <> 'Дата ' ";
  7428.  
  7429.                         da.SelectCommand = new SqlCommand();
  7430.  
  7431.                         da.SelectCommand.CommandText = R;
  7432.  
  7433.                         da.SelectCommand.Connection = con;
  7434.  
  7435.                         da.SelectCommand.CommandTimeout = 1200;
  7436.  
  7437.                         ds = new DataSet();
  7438.  
  7439.                         KK3 = da.Fill(ds, "list0");
  7440.  
  7441.                         if (KK3 > 0)
  7442.  
  7443.                         {
  7444.  
  7445.                             NAME = ds.Tables["list0"].Rows[0][0].ToString();
  7446.  
  7447.                             C = ((NAME == "Адрес") ? "p" : "c");
  7448.  
  7449.                         }
  7450.  
  7451.                         else C = "c";
  7452.  
  7453.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  7454.  
  7455.                            + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  7456.  
  7457.                            + ",'" + VID + "','1','" + C + "','" + POL + "')";
  7458.  
  7459.                         command = new SqlCommand(R, con);
  7460.  
  7461.                         con.Open();
  7462.  
  7463.                         command.CommandTimeout = 1200;
  7464.  
  7465.                         command.ExecuteNonQuery();
  7466.  
  7467.                         con.Close();
  7468.  
  7469.                     }
  7470.  
  7471.                 } // END -- WHILE
  7472.  
  7473.                 //    -- 7003 Номер авторитетной / нормативной записи
  7474.  
  7475.                 R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  7476.  
  7477.                   + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  7478.  
  7479.                   + ", '" + VID + "','1','3','" + IDAF.ToString() + "')";
  7480.  
  7481.                 command = new SqlCommand(R, con);
  7482.  
  7483.                 con.Open();
  7484.  
  7485.                 command.CommandTimeout = 1200;
  7486.  
  7487.                 command.ExecuteNonQuery();
  7488.  
  7489.                 con.Close();
  7490.  
  7491.             } // // Есть авторитетная запись
  7492.  
  7493.             // Проверка наличия в BJ ссылки на код роли
  7494.  
  7495.             R = " SELECT PLAIN  "
  7496.  
  7497.             + " FROM " + BAZA + "..DATAEXT DE LEFT JOIN " + BAZA + "..DATAEXTPLAIN P ON P.IDDATAEXT=DE.ID "
  7498.  
  7499.               + " WHERE P.IDDATA= " + DIDDATA.ToString() + " AND MSFIELD= '$4' ";
  7500.  
  7501.             da.SelectCommand = new SqlCommand();
  7502.  
  7503.             da.SelectCommand.CommandText = R;
  7504.  
  7505.             da.SelectCommand.Connection = con;
  7506.  
  7507.             da.SelectCommand.CommandTimeout = 1200;
  7508.  
  7509.             ds = new DataSet();
  7510.  
  7511.             KK2 = da.Fill(ds, "list0");
  7512.  
  7513.             if (KK2 == 0)
  7514.  
  7515.             {
  7516.  
  7517.                 if (MET != 710)
  7518.  
  7519.                 {
  7520.  
  7521.                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  7522.  
  7523.                  + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  7524.  
  7525.                  + ",' ','1','4','340')"; // Редактор
  7526.  
  7527.                     command = new SqlCommand(R, con);
  7528.  
  7529.                     con.Open();
  7530.  
  7531.                     command.CommandTimeout = 1200;
  7532.  
  7533.                     command.ExecuteNonQuery();
  7534.  
  7535.                     con.Close();
  7536.  
  7537.                 } // MET != 710 и роль не указана. Подразумевается Автор
  7538.  
  7539.             }
  7540.  
  7541.             else // есть $4 - роль
  7542.  
  7543.             {
  7544.  
  7545.                 T1 = ds.Tables["list0"].Rows[0][0].ToString();
  7546.  
  7547.                 R = " SELECT KOD FROM BJRUSMARC..ROLI R "
  7548.  
  7549.                     + " LEFT JOIN "+BAZA+"..LIST_3 L3 ON L3.NAME=R.NAME "
  7550.  
  7551.                 + " WHERE SHORTNAME= '" + T1 + "'";
  7552.  
  7553.                 da.SelectCommand = new SqlCommand();
  7554.  
  7555.                 da.SelectCommand.CommandText = R;
  7556.  
  7557.                 da.SelectCommand.Connection = con;
  7558.  
  7559.                 da.SelectCommand.CommandTimeout = 1200;
  7560.  
  7561.                 ds = new DataSet();
  7562.  
  7563.                 KK1 = da.Fill(ds, "list0");
  7564.  
  7565.                 if (KK1 == 0)
  7566.  
  7567.                 {
  7568.  
  7569.                     if (MET != 710)
  7570.  
  7571.                     {
  7572.  
  7573.                         R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  7574.  
  7575.                        + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  7576.  
  7577.                        + ",' ','1','4','340')"; // Редактор
  7578.  
  7579.                         command = new SqlCommand(R, con);
  7580.  
  7581.                         con.Open();
  7582.  
  7583.                         command.CommandTimeout = 1200;
  7584.  
  7585.                         command.ExecuteNonQuery();
  7586.  
  7587.                         con.Close();
  7588.  
  7589.                     }
  7590.  
  7591.                 }
  7592.  
  7593.                 else // есть код роли
  7594.  
  7595.                 {
  7596.  
  7597.                     POL = ds.Tables["list0"].Rows[0][0].ToString();
  7598.  
  7599.                     R = " INSERT INTO BJRUSMARC..RUSM (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  7600.  
  7601.                      + " VALUES (" + IDM.ToString() + "," + DIDDATA.ToString() + "," + MET.ToString()
  7602.  
  7603.                      + ",' ','1','4','" + POL + "')";
  7604.  
  7605.                     command = new SqlCommand(R, con);
  7606.  
  7607.                     con.Open();
  7608.  
  7609.                     command.CommandTimeout = 1200;
  7610.  
  7611.                     command.ExecuteNonQuery();
  7612.  
  7613.                     con.Close();
  7614.  
  7615.                 }
  7616.  
  7617.             }
  7618.  
  7619.         }  // OBR710 - Организация
  7620.  
  7621. //
  7622.  
  7623. // =================================================================
  7624.  
  7625. //-- Description:   Слияние подполей РУСМАРКа - RUSM -> RUSM2
  7626.  
  7627. //-- =============================================
  7628.  
  7629.         private void MERGERUSM()
  7630.  
  7631.         {
  7632.  
  7633.            //-- Слияние подполей в поле
  7634.  
  7635.             String Inst,  IND1, IND2, IDENT, POL;
  7636.  
  7637.             Int16  MET;
  7638.  
  7639.             Int32  IDB, IDM, KK, KK2, KK3;
  7640.  
  7641.             da = new SqlDataAdapter();
  7642.  
  7643.             String R = "USE BJRUSMARC; "
  7644.  
  7645.               + " IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[RUSM2]') AND type in (N'U')) "
  7646.  
  7647.               + " DROP TABLE [dbo].[RUSM2] ;"
  7648.  
  7649.               + " SET ANSI_PADDING ON; "
  7650.  
  7651.               + " CREATE TABLE [RUSM2]([ID] [int] IDENTITY(1,1) NOT NULL, "
  7652.  
  7653.               + "   [IDMAIN] [int] NULL, "
  7654.  
  7655.               + "  [IDBLOCK] [int] NULL, "
  7656.  
  7657.               + "  [MET] [smallint] NULL, "
  7658.  
  7659.               + "  [IND1] [char](1) NULL, "
  7660.  
  7661.               + "   [IND2] [char](1) NULL, "
  7662.  
  7663.               + "   [IDENT] [char](1) NULL, "
  7664.  
  7665.               + "   [POL] [nvarchar](3500) NULL "
  7666.  
  7667.               + " ) ON [PRIMARY];"
  7668.  
  7669.               + " SET ANSI_PADDING OFF"
  7670.  
  7671.               + " CREATE NONCLUSTERED INDEX [IX_RUSM2_ALL] ON [dbo].[RUSM2] "
  7672.  
  7673.               + " ( [IDMAIN] ASC, [IDBLOCK] ASC ,[MET] ASC ,[IND1] ASC ,[IND2] ASC"
  7674.  
  7675.               + " )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF,"
  7676.  
  7677.               + "   SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,"
  7678.  
  7679.               + "   ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON"
  7680.  
  7681.               + "       ) ON [PRIMARY] ";
  7682.  
  7683.             command = new SqlCommand(R, con);
  7684.  
  7685.             con.Open();
  7686.  
  7687.             command.CommandTimeout = 1200;
  7688.  
  7689.             cnt = command.ExecuteNonQuery();
  7690.  
  7691.             con.Close();
  7692.  
  7693.  
  7694.  
  7695.             R = " SELECT IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL  "
  7696.  
  7697.               + "  FROM BJRUSMARC..RUSM "
  7698.  
  7699.               + " ORDER BY IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT ";
  7700.  
  7701.             da.SelectCommand = new SqlCommand();
  7702.  
  7703.             da.SelectCommand.CommandText = R;
  7704.  
  7705.             da.SelectCommand.Connection = con;
  7706.  
  7707.             da.SelectCommand.CommandTimeout = 1200;
  7708.  
  7709.             ds = new DataSet();
  7710.  
  7711.             KK = da.Fill(ds, "listMER");
  7712.  
  7713.  
  7714.  
  7715.             if (KK > 0)
  7716.  
  7717.             {
  7718.  
  7719.                 for (int count = 0; count < KK; count++)
  7720.  
  7721.                 {
  7722.  
  7723.                     IDM = Int32.Parse(ds.Tables["listMER"].Rows[count][0].ToString());
  7724.  
  7725.                     IDB = Int32.Parse(ds.Tables["listMER"].Rows[count][1].ToString());
  7726.  
  7727.                     MET = Int16.Parse(ds.Tables["listMER"].Rows[count][2].ToString());
  7728.  
  7729.                     IND1 = ds.Tables["listMER"].Rows[count][3].ToString();
  7730.  
  7731.                     IND2 = ds.Tables["listMER"].Rows[count][4].ToString();
  7732.  
  7733.                     IDENT = ds.Tables["listMER"].Rows[count][5].ToString();
  7734.  
  7735.                     POL = ds.Tables["listMER"].Rows[count][6].ToString();
  7736.  
  7737.                     //if (MET == 200 && IDENT == "b" && POL == "Бумага")
  7738.  
  7739.                     //    continue;
  7740.  
  7741.                     if ((MET == 300) || (MET == 606) || (MET == 675))
  7742.  
  7743.                     {
  7744.  
  7745.                         //-- Подполя выводятся отдельными полями
  7746.  
  7747.                         Inst = IND1 + IND2 + (char)31+ IDENT + POL;
  7748.  
  7749.                         S675 = Inst.Replace("'", "'+char(39)+'");
  7750.  
  7751.                         R = " INSERT INTO BJRUSMARC..RUSM2 (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  7752.  
  7753.                           + " VALUES (" + IDM + "," + IDB + " ," + MET + ",'"
  7754.  
  7755.                           + IND1 + "','" + IND2 + "','" + IDENT + "','" + S675 + "') ";
  7756.  
  7757.                         command = new SqlCommand(R, con);
  7758.  
  7759.                         con.Open();
  7760.  
  7761.                         command.CommandTimeout = 1200;
  7762.  
  7763.                         command.ExecuteNonQuery();
  7764.  
  7765.                         con.Close();
  7766.  
  7767.                     }
  7768.  
  7769.                     else
  7770.  
  7771.                     {
  7772.  
  7773.                         if (MET == 210 || MET == 200 || MET == 102)
  7774.  
  7775.                         {
  7776.  
  7777.                             R = " SELECT  TOP(1) POL,ID FROM BJRUSMARC..RUSM2 "
  7778.  
  7779.                               + " WHERE IDMAIN = " + IDM.ToString() + "AND MET= " + MET.ToString();
  7780.  
  7781.                             da.SelectCommand = new SqlCommand();
  7782.  
  7783.                             da.SelectCommand.CommandText = R;
  7784.  
  7785.                             da.SelectCommand.Connection = con;
  7786.  
  7787.                             da.SelectCommand.CommandTimeout = 1200;
  7788.  
  7789.                             ds2 = new DataSet();
  7790.  
  7791.                             KK2 = da.Fill(ds2, "list");
  7792.  
  7793.                             if (KK2 == 0)
  7794.  
  7795.                             { // Добавление поля
  7796.  
  7797.                                 Inst = IND1 + IND2 + (char)31 + IDENT + POL;
  7798.  
  7799.                                 S675 = Inst.Replace("'", "'+char(39)+'");
  7800.  
  7801.                                 R = " INSERT INTO BJRUSMARC..RUSM2 "
  7802.  
  7803.                                   + "(IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  7804.  
  7805.                                   + " VALUES (" + IDM.ToString() + "," + IDB.ToString()
  7806.  
  7807.                                   + "," + MET.ToString() + ",'" + IND1 + "','" + IND2
  7808.  
  7809.                                   + "','" + IDENT + "','" + S675 + "') ";
  7810.  
  7811.                                 command = new SqlCommand(R, con);
  7812.  
  7813.                                 con.Open();
  7814.  
  7815.                                 command.CommandTimeout = 1200;
  7816.  
  7817.                                 command.ExecuteNonQuery();
  7818.  
  7819.                                 con.Close();
  7820.  
  7821.                             }
  7822.  
  7823.                             else // ЕСТЬ УЖЕ
  7824.  
  7825.                             { // Добавление подполя
  7826.  
  7827.                                 IDB = Int32.Parse(ds2.Tables["list"].Rows[0][1].ToString());
  7828.  
  7829.                                 Inst = ds2.Tables["list"].Rows[0][0].ToString(); // POL
  7830.  
  7831.                                 Inst += (char)31 + IDENT + POL;
  7832.  
  7833.  
  7834.  
  7835.                                 R = " UPDATE BJRUSMARC..RUSM2 "
  7836.  
  7837.                                  + " SET POL = '" + Inst + "' "
  7838.  
  7839.                                  + " WHERE ID= " + IDB.ToString();
  7840.  
  7841.                                 command = new SqlCommand(R, con);
  7842.  
  7843.                                 con.Open();
  7844.  
  7845.                                 command.CommandTimeout = 1200;
  7846.  
  7847.                                 command.ExecuteNonQuery();
  7848.  
  7849.                                 con.Close();
  7850.  
  7851.                             }
  7852.  
  7853.                         } //MET==210 || MET==200 || MET==102
  7854.  
  7855.                         else
  7856.  
  7857.                         {
  7858.  
  7859.                             R = " SELECT  POL  "
  7860.  
  7861.                               + " FROM BJRUSMARC..RUSM2 "
  7862.  
  7863.                               + " WHERE IDMAIN=" + IDM.ToString() + " AND IDBLOCK=" + IDB.ToString()
  7864.  
  7865.                               + " AND MET=" + MET.ToString() + "  AND IND1='" + IND1 + "' AND IND2='" + IND2 + "'";
  7866.  
  7867.                             da.SelectCommand = new SqlCommand();
  7868.  
  7869.                             da.SelectCommand.CommandText = R;
  7870.  
  7871.                             da.SelectCommand.Connection = con;
  7872.  
  7873.                             da.SelectCommand.CommandTimeout = 1200;
  7874.  
  7875.                             ds3 = new DataSet();
  7876.  
  7877.                             KK3 = da.Fill(ds3, "list3");
  7878.  
  7879.                             if (KK3 == 0)
  7880.  
  7881.                             { // Добавление поля
  7882.  
  7883.                                 Inst = (MET<10) ? POL : IND1 + IND2 + (char)31 + IDENT + POL;
  7884.  
  7885.                                 R = " INSERT INTO BJRUSMARC..RUSM2 (IDMAIN,IDBLOCK,MET,IND1,IND2,IDENT,POL) "
  7886.  
  7887.                                 + " VALUES (" + IDM.ToString() + "," + IDB.ToString() + ","
  7888.  
  7889.                                 + MET.ToString() + ",'" + IND1 + "','" + IND2 + "','" + IDENT + "','" + Inst + "') ";
  7890.  
  7891.                                 command = new SqlCommand(R, con);
  7892.  
  7893.                                 con.Open();
  7894.  
  7895.                                 command.CommandTimeout = 1200;
  7896.  
  7897.                                 command.ExecuteNonQuery();
  7898.  
  7899.                                 con.Close();
  7900.  
  7901.                             }
  7902.  
  7903.                             else
  7904.  
  7905.                             { // Добавление подполя
  7906.  
  7907.                                 Inst = ds3.Tables["list3"].Rows[0][0].ToString();
  7908.  
  7909.                                 Inst += (char)31 + IDENT + POL;
  7910.  
  7911.                                 R = " UPDATE BJRUSMARC..RUSM2 SET POL = '" + Inst + "'"
  7912.  
  7913.                                 + " WHERE IDMAIN= " + IDM.ToString() + "AND IDBLOCK=" + IDB.ToString()
  7914.  
  7915.                                 + " AND MET=" + MET.ToString() + " AND IND1='" + IND1 + "' AND IND2='" + IND2
  7916.  
  7917.                                 + "'";
  7918.  
  7919.                                 command = new SqlCommand(R, con);
  7920.  
  7921.                                 con.Open();
  7922.  
  7923.                                 command.CommandTimeout = 1200;
  7924.  
  7925.                                 command.ExecuteNonQuery();
  7926.  
  7927.                                 con.Close();
  7928.  
  7929.                             }
  7930.  
  7931.                         }
  7932.  
  7933.                     } // не 300
  7934.  
  7935.                 } // for
  7936.  
  7937.             } // RUSM не пуста
  7938.  
  7939.         }  // MERGE
  7940.  
  7941.         // ------------------------------------------------------
  7942.  
  7943.         private Byte[] SaveZap(Int32 IDM, String Fout)
  7944.  
  7945.         {
  7946.  
  7947.             String sprav,  rsp, ind1, ind2, ident;
  7948.  
  7949.             Int32  KSZ,  met, AllbyteCount, byteCount;
  7950.  
  7951.             Byte[] br = new Byte[1]{0x00};
  7952.  
  7953. //CREATE TABLE [dbo].[RUSM2](
  7954.  
  7955. //    [ID] [int] IDENTITY(1,1) NOT NULL,
  7956.  
  7957. //    [IDMAIN] [int] NULL,
  7958.  
  7959. //    [IDBLOCK] [int] NULL,
  7960.  
  7961. //    [MET] [smallint] NULL,
  7962.  
  7963. //    [IND1] [char](1) NULL,
  7964.  
  7965. //    [IND2] [char](1) NULL,
  7966.  
  7967. //    [IDENT] [char](1) NULL,
  7968.  
  7969. //    [POL] [nvarchar](3500) NULL
  7970.  
  7971.             da.SelectCommand = new SqlCommand();
  7972.  
  7973.             da.SelectCommand.CommandText = " SELECT ID,IDBLOCK,MET,IND1,IND2,IDENT,POL "
  7974.  
  7975.                 + " FROM BJRUSMARC..RUSM2 "
  7976.  
  7977.                 + " WHERE IDMAIN="+IDM.ToString()
  7978.  
  7979.                 + " ORDER BY IDBLOCK,MET,IND1,IND2,IDENT";
  7980.  
  7981.             da.SelectCommand.Connection = con;
  7982.  
  7983.             da.SelectCommand.CommandTimeout = 1200;
  7984.  
  7985.             DataSet dsZ = new DataSet();
  7986.  
  7987.             KSZ = da.Fill(dsZ, "listKSZ");
  7988.  
  7989.             if (KSZ>0) {
  7990.  
  7991.              rsp = ""; // Сумма длин всех полей
  7992.  
  7993.              for (Int32 count = 0; count < KSZ; count++)
  7994.  
  7995.                 {
  7996.  
  7997.                     rsp = rsp+dsZ.Tables["listKSZ"].Rows[count]["POL"].ToString() + (char)30;
  7998.  
  7999.                 }
  8000.  
  8001.              UTF8Encoding utf8 = new UTF8Encoding();
  8002.  
  8003.              AllbyteCount = utf8.GetByteCount(rsp); // Сумма длин всех полей UTF-8
  8004.  
  8005.              sprav = "";
  8006.  
  8007.              posbrr = 0;
  8008.  
  8009.              mrc = new Byte[AllbyteCount];
  8010.  
  8011.              tr = "";
  8012.  
  8013.              for (Int32 count = 0; count < KSZ; count++)
  8014.  
  8015.              {
  8016.  
  8017.               Int32 IDR2 =  Int32.Parse(dsZ.Tables["listKSZ"].Rows[count][0].ToString());
  8018.  
  8019. //              GetTranslitStr(p980,0);
  8020.  
  8021.               Int32 IDB = Int32.Parse(dsZ.Tables["listKSZ"].Rows[count]["IDBLOCK"].ToString());
  8022.  
  8023.               met = Int32.Parse(dsZ.Tables["listKSZ"].Rows[count]["MET"].ToString());
  8024.  
  8025.               ind1 = dsZ.Tables["listKSZ"].Rows[count]["IND1"].ToString();
  8026.  
  8027.               ind2 = dsZ.Tables["listKSZ"].Rows[count]["IND2"].ToString();
  8028.  
  8029.               ident = dsZ.Tables["listKSZ"].Rows[count]["IDENT"].ToString();
  8030.  
  8031.               tr = dsZ.Tables["listKSZ"].Rows[count]["POL"].ToString() + (char)30;
  8032.  
  8033.  
  8034.  
  8035.               //UTF8Encoding utf8 = new UTF8Encoding();
  8036.  
  8037.               byteCount = utf8.GetBytes(tr, 0, tr.Length, mrc, posbrr);
  8038.  
  8039.  
  8040.  
  8041.               sprav += met.ToString().PadLeft(3, '0') + byteCount.ToString().PadLeft(4, '0');
  8042.  
  8043.               sprav += posbrr.ToString().PadLeft(5,'0');
  8044.  
  8045.               posbrr += byteCount;
  8046.  
  8047.              }
  8048.  
  8049.              sprav += (char)30; // Конец поля
  8050.  
  8051.              Int32 ls = sprav.Length + 24; // Длина справочника и маркера = базовый адрес
  8052.  
  8053.              Int32 lz = ls + AllbyteCount + 1; // Длина записи
  8054.  
  8055.  
  8056.  
  8057.              rs = lz.ToString().PadLeft(5,'0') + "nam  22" + ls.ToString().PadLeft(5,'0');
  8058.  
  8059.              rs += "3  450 " + sprav;
  8060.  
  8061.  
  8062.  
  8063.              br = new Byte[lz]; // Результирующий массив
  8064.  
  8065.              // Encode the entire string.
  8066.  
  8067.              Int32 L = utf8.GetBytes(rs,0,ls,br,0); // Запись Маркера и Справочника
  8068.  
  8069.              utf8.GetBytes(rsp, 0, rsp.Length, br, ls); // Добавление полей
  8070.  
  8071.              br[lz-1] = Convert.ToByte((char)29);
  8072.  
  8073.  
  8074.  
  8075.              //using (BinaryWriter binWriter =
  8076.  
  8077.              //new BinaryWriter(File.Open(FN, FileMode.Append, FileAccess.Write)))
  8078.  
  8079.              //{
  8080.  
  8081.              //    binWriter.Write(br);
  8082.  
  8083.              //}
  8084.  
  8085.             }
  8086.  
  8087.             return br;
  8088.  
  8089.         }  // End of SaveZap().
  8090.  
  8091.     }  // End of Cgi class.
  8092.  
  8093. } // End of CgiInCsharp namespace.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement