Набор функций, позволяющий изменять по падежам ФИО

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

DOWNLOAD

 

Преобразование ФИО v2.0

  1. Введение

    Программный продукт (в дальнейшем – программа) является новой версией программы “Склонение фамилий, имен и отчеств по падежам”. Изменение названия программы обусловлено тем, что, как нам кажется, оно более точно отражает её функциональные возможности. Несмотря на изменение названия, имена файлов и экспортируемых функций оставлены прежними для обеспечения совместимости с предыдущей версией программы.

  2. Назначение

    Программа предназначена для преобразования фамилии, имени и отчества (ФИО), заданных в именительном падеже, в форму любого другого падежа по правилам склонения фамилий, имен и отчеств, принятых в русском языке (см. ниже), а также для восстановления именительного падежа для ФИО, записанного в произвольном падеже. Исходное ФИО может быть задано одной или тремя строками при склонении ФИО и одной строкой – при восстановлении именительного падежа.

  3. Новое в версии

    При реализации настоящей версии программы мы постарались учесть, по возможности, все замечания и предложения, сделанные при тестировании предыдущей версии. Ниже приведен перечень изменений и дополнений в предлагаемой версии программы.

    1. Исправлены ошибки преобразования, выявленные при эксплуатации предыдущей версии.
    2. В состав программы введен словарь исключений для учета некоторых особенностей склонения.
    3. Функции склонения ФИО расширены для обработки восточных имен (Дэн Сяо Пин).
    4. Добавлены функции для склонения пар "Имя Фамилия" (Марк Твен).
    5. Добавлена функция восстановления именительного падежа для ФИО, записанного в произвольном падеже.

       

  4. Ядро программы

    Ядром программы является библиотека динамической компоновки Padeg.dll с секцией экспорта:

    exports
      GetFIOPadeg               Name 'GetFIOPadeg',
      GetFIOPadegAutoSex        Name 'GetFIOPadegAS'
      GetFIOPadegFromStr        Name 'GetFIOPadegFS'
      GetFIOPadegFromStrAutoSex Name 'GetFIOPadegFSAS',
      GetIFPadeg                Name 'GetIFPadeg',
      GetIFPadegFromStr         Name 'GetIFPadegFS',
      Get_FIO                   Name 'GetFIO',
      Get_FIO_FromStr           Name 'GetFIOFromStr',
      Get_IF                    Name 'GetIF',
      Get_IF_FromStr            Name 'GetIFFromStr',
      GetNominativePadeg        Name 'GetNominativePadeg',
      Get_Nominative            Name 'GetNominative',
      Update_Exceptions         Name 'UpdateExceptions';
    end.
    

    Экспортируемые библиотечные функции, за исключением последней, осуществляют преобразование ФИО, записанное в соответствующем формате, в заданный падеж и отличаются количеством и типом параметров, а также своими значениями. Под форматом здесь понимается порядок следования компонент ФИО в списке параметров или параметре, если ФИО передается одной строкой. Функции, в именах которых присутствует AutoSex (AS), выполняют преобразование, определяя род по отчеству. ФИО, заданные одной строкой, преобразуются функциями с FromStr (FS) в имени. Отметим, что имена функций прямо связаны с форматом записи ФИО. Функции, содержащие FIO в имени, предназначены для преобразования входных данных, записанных в формате "Фамилия Имя Отчество", а IF – "Имя [Имена] Фамилия”.

    Описание функций, их параметров и рекомендации по использованию приводятся в соответствующем разделе.

  5. Установка программы

    Для нормального функционирования библиотека Padeg.dll должна находится в доступном для ОС месте. Обычно это – "\Windows\System\" ("\WinNT\SYSTEM32\" – для Windows NT). Ограничений на местоположение словаря исключений нет. Однако желательно поместить его в каталог: C:\Program Files\Microsoft Office\Office. Если путь к каталогу Office отличается от приведенного или принято решение поместить файл словаря в другом месте, то в этом случае перед установкой программы потребуется редактирование параметра "ExceptionDicDir" в файле Padeg.reg. Для уже установленной программы или при изменении в процессе ее эксплуатации местоположения файла исключений полнофункциональная работа обеспечивается путем редактирования ключа реестра:
    HKEY_LOCAL_MACHINE\Software\Padeg\ExceptionDicDir.

    Еще один параметр в секции реестра HKEY_LOCAL_MACHINE\Software\Padeg – "ErrorInfo". Его назначение - разрешать (при ненулевом значении) вывод предупреждающего сообщения об ошибке при использовании функций, возвращающих строковые значения своим результатом.

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

    1. скопировать файлы Padeg.dll и Except.dic;
    2. при необходимости отредактировать значение параметра "ExceptionDicDir" в файле Padeg.reg для обеспечения возможности работы модуля со словарем исключений;
    3. выполнить файл Padeg.reg для внесения служебной информации в системный реестр Windows.

  6. Описание функций и рекомендации по их использованию

    В настоящем разделе используются экспортируемые имена функций.

    В программе реализованы функции преобразования ФИО двух типов: Integer и ShortString. Работу со словарем исключений обеспечивает функция с типом Boolean.

    6.1. Общие положения

    В общем случае символ “точка” в ФИО является признаком инициала имени или отчества. Однако если точка расположена непосредственно за отчеством, не являющимся инициалом или сокращением (завершающая предложение точка), преобразование выполняется правильно. При этом символ точки сохраняется в результате. Сказанное относится и к случаю восстановления именительного падежа.

    Двойные фамилии (и даже тройные, если такие есть) склоняются по установленным правилам. В общем случае, будут верно склоняться "N-спальные" с любым N. Единственное требование к такой фамилии - она должна разделяться дефисами: Лебедев-Кумач, Уткин-Задунайский-Краматорский.

    Несколько слов по поводу параметра nPadeg, задающего номер падежа (1 – именительный; 2 – родительный и т.д.) в который требуется преобразовать входные данные. При значении этого параметра [2..6] выполняется преобразование ФИО в соответствующий падеж. Если же задать значение, равное 1, то преобразования, естественно, не произойдет, т.к. бессмысленно преобразовывать в именительный падеж то, что уже записано в этом падеже, но выполнится форматирование ФИО: первые символы составляющих ФИО преобразуются к прописным, если они были строчными, а сами составляющие разделятся одним пробелом.

    Приведенные функции и макросы могут использоваться как сами по себе, так и при разработке собственных программ. А библиотечные функции могут вызываться не только из приложений MS Office. При этом следует иметь в виду, что встречаются “нестандартные” ФИО, для которых функции дадут неверный результат, и предусмотреть возможность ручной корректировки. В частности, это касается творительного падежа, где окончание некоторых фамилий зависит от положения ударения, определить которое алгоритмически не представляется возможным.

    6.2. Функции, возвращающие результат типа Integer

    Функции, имеющие тип возвращаемого значения Integer, своим значением передают результат выполнения операции преобразования:

     0 – успешное завершение;
    -1 – недопустимое значение падежа;
    -2 – недопустимое значение рода;
    -3 – размер буфера недостаточен для размещения результата преобразования ФИО.
    

    Необходимо отметить, что поскольку параметр рода для этих функций – логический, то значение –2 никогда не будет возвращено в виде результата выполнения. Однако для функций другого типа это значение используется при обработке ошибки.

    Небольшое замечание о параметре nLen. В настоящей версии программы выполняется проверка этого параметра и на нулевое значение. Это, пожалуй, единственное обстоятельство, которое может повлиять на совместимость с предыдущей версией программы, т.к. в примерах прошлой версии параметр nLen инициализировался по умолчанию нулем и с этим значением передавался в библиотечные функции. Значение этого параметра после выполнения преобразования ФИО равно длине результата преобразования при успешном завершении операции. Если размер преобразованного ФИО превышает размер отведенного буфера, значение параметра равно размеру буфера (при этом результат преобразования усекается до размера буфера), и нулю - если задано ошибочное значение падежа.

    6.2.1. GetFIOPadeg
    function GetFIOPadeg(pLastName, pFirstName, pMiddleName: PChar; bSex: Boolean;
                         nPadeg: LongInt; pResult: PChar; var nLen: LongInt): Integer; stdcall;

    Помещает в буфер (pResult) размера (nLen) результат склонения фамилии (pLastName), имени (pFirstName) и отчества (pMiddleName) рода (bSex) в заданный падеж (nPadeg). Значение функции – результат выполнения операции преобразования.

    Данная функция является основной в библиотеке и наиболее универсальной. В качестве параметров ей необходимо передать ФИО в виде трех строк (каждая из которых может быть пустой), явно указанный род, требуемое значение падежа, указатель на буфер результата и размер этого буфера (после преобразования этим параметром возвращается реальный размер результата). При таких условиях этой функцией можно склонять ФИО и его составляющие в любых комбинациях. Корректно обрабатываются фамилии с инициалами (Сидоров И.П.) – склоняться будет только фамилия (у Сидорова И.П.). Допускается использование инициалов, состоящих более чем из одного символа (Иванов Вс.Никод.). Кроме ФИО славянского типа эта функция может выполнять склонение корейских, китайских и им подобным имен. При этом первое слово в таком имени соответствует фамилии, второе – имени и третье – отчеству в наших терминах. Другими словами, при склонении Иванов Иван Иванович и Ли Си Цын не требуется перестановка составляющих ФИО. Поскольку имена подобного вида иногда записывают двумя словами (Ли Сицын), то при вызове функции склонения для такой формы записи необходимо первым параметром передать пустую строку. В подавляющем большинстве случаев эта функция пригодна и для склонения ФИО, записанного в формате "Фамилия Имя Имя" (Кеннеди Джон Фиджеральд).

    6.2.2. GetFIOPadegAS
    function GetFIOPadegAS(pLastName, pFirstName, pMiddleName: PChar; nPadeg: LongInt;
                           pResult: PChar; var nLen: LongInt): Integer; stdcall;

    Помещает в буфер (pResult) размера (nLen) результат склонения фамилии (pLastName), имени (pFirstName) и отчества (pMiddleName) в заданный падеж (nPadeg) с автоматическим определением рода. Значение функции – результат выполнения операции преобразования.

    Функция предназначена для склонения ФИО, род которых неизвестен. Определение рода осуществляется по окончанию отчества. Корректно обрабатываются отчества, имеющие признак рода: Оглы (сын) или Кызы (дочь). Признак рода может записываться через дефис (Аскер-Оглы) или пробел (Аскер Оглы).

    6.2.3 GetFIOPadegFS
    function GetFIOPadegFS(pFIO: PChar; bSex: Boolean; nPadeg: LongInt; pResult: PChar;
                           var nLen: LongInt):Integer; stdcall;

    Помещает в буфер (pResult) размера (nLen) результат склонения фамилии имени и отчества, записанных одной строкой (pFIO), рода (bSex) в заданный падеж (nPadeg). Значение функции – результат выполнения операции преобразования.

    Функция выполняет преобразование ФИО, заданного одной строкой и требует явного указания рода. Порядок следования составляющих ФИО в строке параметра – фамилия, имя, отчество. Эта функция, как и GetFIOPadeg, тоже допускает использование инициалов и может выполнять преобразование имен типа китайских. Для корректной работы функции необходимо наличие трех компонент ФИО (китайские имена разрешено задавать двумя словами). В ряде случаев правильно обрабатываются ФИО, записанные в формате "Фамилия Имя [Имя]".

    6.2.4. GetFIOPadegFSAS
    function GetFIOPadegFSAS(pFIO: PChar; nPadeg: LongInt; pResult: PChar;
                             var nLen: LongInt):Integer; stdcall;

    Помещает в буфер (pResult) размера (nLen) результат склонения фамилии имени и отчества, записанных одной строкой (pFIO), в заданный падеж (nPadeg) с автоматическим определением рода. Значение функции – результат выполнения операции преобразования.

    Функция предназначена для склонения ФИО, заданных одной строкой, род которых неизвестен. Определение рода осуществляется по окончанию отчества. Функция корректно обрабатывает отчества, имеющие признак рода: Оглы (сын) или Кызы (дочь). Признак рода может записываться через дефис (Аскер-Оглы) или пробел (Аскер Оглы).

    6.2.5. GetIFPadeg
    function GetIFPadeg(pFirstName, pLastName: PChar; bSex: Boolean; nPadeg: LongInt;
                        pResult: PChar; var nLen: LongInt): Integer; stdcall;

    Помещает в буфер (pResult) размера (nLen) результат склонения имени (pFirstName) и фамилии (pLastName) рода (bSex) в заданный падеж (nPadeg). Значение функции – результат выполнения операции преобразования.

    Функция предназначена для склонения пар "Имя Фамилия" (Марк Твен) и требует явного указания рода. Эта функция также пригодна для склонения имен собственных типа Джон Фиджеральд Кеннеди. В этом случае Джон Фиджеральд следует передавать одним параметром, как имя. Разделитель слов в параметре – пробел.

    6.2.6. GetIFPadegFS
    function GetIFPadegFromStr(pIF: PChar; bSex: Boolean; nPadeg: LongInt; pResult: PChar;
                               var nLen: LongInt): Integer; stdcall;

    Помещает в буфер (pResult) размера (nLen) результат склонения имени и фамилии (pIF), записанных одной строкой, рода (bSex) в указанный падеж (nPadeg). Значение функции – результат выполнения операции преобразования.

    Функция предназначена для склонения пар "Имя Фамилия" (Марк Твен), записанных одной строкой, и требует явного указания рода. Эта функция также пригодна для склонения имен собственных типа Джон Фиджеральд Кеннеди. При использовании данной функции следует иметь в виду, что фамилией считается последнее слово параметра, а все предыдущие – именами и склоняются соответствующим образом.

    6.2.7. GetNominativePadeg

    function GetNominativePadeg(pFIO, pResult: PChar; var nLen: LongInt): Integer; stdcall;

    Помещает в буфер (pResult) размера (nLen) восстановленный именительный падеж для ФИО, записанного одной строкой (pFIO) в произвольном падеже. Значение функции – результат выполнения операции преобразования.

    Функция выполняет восстановление именительного падежа для ФИО, заданного в произвольном падеже в формате "Фамилия Имя Отчество". Значение, возвращаемое функцией, может быть равно 0 или -3, причем 0 не означает, что восстановление именительного падежа выполнено грамматически правильно, а лишь индицирует, что функция отработала без ошибок. Более подробно о восстановлении именительного падежа сказано в разделе "Восстановление именительного падежа".

    6.3. Функции, возвращающие результат типа ShortString

    В библиотеку включены 5 функций с типом результата ShortString, четыре из которых служат для преобразования ФИО в некоторый падеж, а пятая – для восстановления именительного падежа. Некорректное задание падежа или рода при вызове функций склонения приводит к выводу предупреждающего сообщения при соответствующем значении параметра реестра ErrorInfo с указанием ошибочного значения. Отметим, что тип этих функций и параметров ограничивает применение их в программах на VB (VBA), вследствие различия в механизме передачи строковых данных. Для автоматического определения рода в этих функциях в качестве параметра cSex следует задавать #0. Последнее утверждение не относится к функциям склонения пар "Имя Фамилия" GetIF и GetIFFromStr, которые требуют только явного указания рода.

    6.3.1. GetFIO
    function GetFIO(pLastName, pFirstName, pMiddleName: ShortString; cSex: Char;
                    nPadeg: LongInt): ShortString; stdcall;

    Возвращает строкой результат склонения фамилии (pLastName), имени (pFirstName) и отчества (pMiddleName) рода (cSex) в заданный падеж (nPadeg).

    По своим характеристикам аналогична функции GetFIOPadeg (GetFIPPadegAS при cSex = #0).

    6.3.2. GetFIOFromStr
    function GetFIOFromStr(pFIO: ShortString; cSex: Char;
                           nPadeg: LongInt): ShortString; stdcall;

    Возвращает строкой результат склонения фамилии, имени и отчества, записанных одной строкой (pFIO), заданного рода (cSex) в указанный падеж (nPadeg).

    По своим характеристикам аналогична функции GetFIOPadegFS (GetFIPPadegAS при cSex = #0).

    6.3.3. GetIF
    function GetIF(pFirstName, pLastName: ShortString; cSex: Char;
                   nPadeg: LongInt): ShortString; stdcall;

    Возвращает строкой результат склонения имени (pFirstName) и фамилии (pLastName) заданного рода (cSex) в указанный падеж (nPadeg).

    По своим характеристикам аналогична функции GetIFPadeg.

    6.3.4. GetIFFromStr
    function GetIFFromStr(pIF: ShortString; cSex: Char;
                          nPadeg: LongInt): ShortString; stdcall;

    Возвращает строкой результат склонения имени и фамилии, записанных одной строкой (pIF), заданного рода (cSex) в указанный падеж (nPadeg).

    По своим характеристикам аналогична функции GetIFPadegFS.

    6.3.5. GetNominative

    function GetNominative(pFIO: ShortString): ShortString;

    Возвращает строкой результат восстановления именительного падежа для ФИО, записанного одной строкой (pFIO), в произвольном падеже в формате "Фамилия Имя Отчество".

    По своим характеристикам аналогична функции GetNominativePadeg.

    6.4. Функции типа Boolean

    В библиотеке присутствует одна функция такого типа.

    6.4.1. UpdateExceptions

    function UpdateExceptions: Boolean; stdcall;

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

    Значение, возвращаемое этой функцией, содержит информацию о том, что словарь исключений найден и программа с ним работает (True). В противном случае функция возвратит значение False.

  7. Использование в продуктах Microsoft Office

    Предлагаемая версия программы совместима с продуктами Microsoft Office 97/2000/XP.

    Примеры объявления библиотечных функций GetFIOPadegFSAS и GetNominativePadeg, а также глобальной функции MakePadeg приведены в файле Declen.bas. Реализация функции MakePadeg предусматривает вывод предупреждения с указанием неправильного значения падежа при некорректном его задании. Обращение к остальным функциям DLL производится аналогично.

    7.1. Использование в Microsoft Word

    Макросы, основой которых является функция MakePadeg, для использования программы в Microsoft Word находятся в файле MacroWrd.bas. Кроме того, в поставку входит шаблон Declen.dot. Поместите его в каталог "\Program Files\Microsoft Office\Шаблоны" или другой, содержащий шаблоны для MS Office. Создайте документ на основе этого шаблона ("Пуск->Создать документ Microsoft Office"). Напечатайте в именительном падеже ФИО полностью, выделите его и нажмите в панели инструментов "Склонение ФИО" любой падеж (для ФИО записанного в произвольном падеже необходимо выбрать "Именительный"). Если выделено менее трех слов, преобразования не произойдет.

    7.2. Использование в Microsoft Excel

    Макросы, основой которых является функция MakePadeg, для использования программы в Microsoft Excel находятся в файле MacroExl.bas. Для преобразования сделайте активной ячейку, содержащую фамилию, имя и отчество и выполните макрос необходимого падежа (для ФИО, записанного в произвольном падеже необходимо выполнить макрос "Именительный"). Если ячейка содержит менее трех слов, преобразования не произойдет.

  8. Восстановление именительного падежа

    Как отмечалось выше, настоящая версия программы дополнена функцией для восстановления именительного падежа для ФИО, заданного в произвольном падеже в формате "Фамилия Имя Отчество". К сожалению, нам не удалось получить точности восстановления именительного падежа, сравнимой с точностью преобразования в некоторый падеж. Это связано, в частности, с тем, что запись, допустим, родительного падежа для разных фамилий (Перцева и Перцевая) могут совпадать (Перцевой). Подобную коллизию не в состоянии разрешить даже человек. Кроме того, окончаниями некоторых фамилий в склонении могут быть гласные: "ы", "и", "у", "ю", "е". Как известно, фамилии, имеющие такие окончания, относятся к несклоняемым и поэтому при восстановлении невозможно определить является ли такая фамилия несклоняемой или получила такое окончание в результате склонения. Однако если фамилия с таким окончанием присутствует в словаре исключений, то восстановление происходит без проблем. Значительно повысить точность восстановления именительного падежа можно с помощью некоторой базы ФИО. В файле Declen.bas приведен текст функции NominativeByBase, использующей для восстановления именительного падежа локальную базу данных. Суть алгоритма сводится к следующему: получив ФИО для восстановления, выполняется запрос к базе данных на выборку ФИО, подобных заданному. Затем каждое из полученных ФИО последовательно преобразуется во все допустимые падежи и результат преобразования сравнивается с исходным ФИО. При полном совпадении считаем, что именительным падежом ФИО будет очередная выборка из базы. Если совпадения не удалось достичь, то именительный падеж восстанавливается экспортируемой функцией DLL. Такой подход, кроме повышения точности, может расширить спектр ФИО для которых возможно восстановление именительного падежа за счет включения в обработку ФИО с инициалами и ФИО, записанных в формате "Имя Фамилия" (естественно, при наличии в базе поля, определяющего род, и после соответствующей коррекции кода функции). При этом, использование некоторого признака (в примере - Exact) позволяет определить восстановлено ли ФИО с использованием базы данных или нет. Во втором случае можно выводить диалоговое окно с предложением проверить и откорректировать, при необходимости, результат восстановления и запросом на запись именительного падежа ФИО в базу данных.

    В большинстве случаев функция правильно восстанавливает именительный падеж для ФИО китайского типа, заданного двумя или тремя словами.

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

  9. Словарь исключений

    Словарь исключений предназначен для коррекции алгоритма преобразования составляющих ФИО, учета региональных и семейных особенностей склонения, а также для исключения неоднозначности некоторых правил. Он представляет собой текстовый файл со структурой, подобной структуре INI – файлов и содержит восемь секций в которые помещаются соответствующие компоненты ФИО, преобразование которых при склонении не должно происходить или происходить несколько иначе. Секции словаря имеют следующие имена и назначения:

    1. [LastName] – помещенные в эту секцию фамилии не преобразуются для любого рода, в том числе и при использовании в качестве первых частей составных фамилий.
    2. [LastNameW] – помещенные в эту секцию фамилии не преобразуются для женского рода, в том числе и при использовании в качестве первых частей составных женских фамилий.
    3. [FirstNameM] – несклоняемые мужские имена
    4. [FirstNameW] – несклоняемые женские имена
    5. [FirstPartLastName] – несклоняемые первые части составных фамилий обоих родов. При использовании в качестве отдельной фамилии, фамилии из этой секции могут изменяться, если это разрешено правилами, и они не входят в состав других секций.
    6. [BaseNonRussian] - фамилии, имеющие не славянские (или не русские) корни на -ов, -ин, -их (Бюлов, Рабин, Либих и т.д.), которые должны преобразовываться при склонении и при этом не присутствуют в других секциях.
    7. [NonLeaveVocalic] – фамилии на -ок, -ец при склонении которых не происходит выпадения гласной (Корешок – Корешока, ср. Корешка).
    8. [FirstNameParallelForms] – список параллельных форм мужских имен на –о(а). (Михайло – Михайла)

    Первые пять секций допускают использование масок, общая часть компонент ФИО в которых обозначается символом звездочка. Например, для исключения из преобразования японских фамилий на –ава (Куросава) для обоих родов достаточно в секцию [LastName] поместить строку: *ава. Отметим, что пользоваться масками следует с известной осторожностью. Так, запись строки *ь в секцию женских имен [LastNameW], исключит из преобразования все женские имена на –ь, в том числе и Любовь.

    Поставляемый файл словаря исключений содержит тот минимум информации, который позволяет исправить замечания, выявленные при тестировании предыдущей версии программы. Его использование и дальнейшее пополнение целиком зависит от желания пользователей, поскольку сколнение/несклонение некоторых фамилий и имен зависит от региональных и семейных традиций, что невозможно учесть в алгоритме.

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

  10. Область применения

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

  11. Правила склонения ФИО, реализованные в программе

    Приведенные ниже правила склонения имен собственных сформулированы по материалам следующих источников:

    1. Розенталь Д.Э., Теленкова М.А., "Словарь трудностей русского языка", 3-е изд., доп. М., Русский язык, 1984;
    2. "Русская грамматика" т.I, изд. АН СССР, 1982;
    3. Пехливанова К.И., Лебедева М.Н., "Грамматика русского языка в иллюстрациях (для иностранцев, изучающих русский язык)", М.,Русский язык, 1989.

    Не склоняются:
    1. Женские фамилии, оканчивающиеся на согласный звук и мягкий знак (у Анны Жук, семья Марии Мицкевич, назначить Людмилу Коваль).
    2. Женские имена, оканчивающиеся на согласный звук (Кармен, Гюльчетай, Долорес, Элен, Суок, Эдит, Элизабет).
    3. Иноязычные фамилии, оканчивающиеся на гласный звук, исключая безударные -а, -я (Гюго, Бизе, Россини, Шоу, Неру, Гете, Бруно, Дюма, Золя).
    4. Мужские и женские имена, оканчивающиеся на гласный звук исключая -а, -я (Серго, Нелли).
    5. Фамилии на -а, -я с предшествующим гласным -и (сонеты Эредия, стихи Гарсия, рассказы Гулиа)
    6. Русские фамилии, представляющие собой застывшие формы родительного падежа единственного числа с окончаниями: -ово, -аго, -яго (Дурново, Сухово, Живаго, Шамбинаго, Дебяго, Хитрово) и множественного числа с окончаниями: -их, -ых (Крученых, Островских, Польских, Долгих, Седых). В разговорной речи фамилии на -их, -ых могут склоняться.
    7. Украинские по происхождению фамилии на ударное и безударное -ко (Головко, Ляшко, Франко, Янко, юбилей Шевченко, деятельность Макаренко, произведения Короленко).
    8. Первая часть двойной фамилии, если она сама по себе не употребляется как фамилия (в роли Сквозняк-Дмухановского, исследования Грун-Грижимайло, скульптура Демут-Малиновского).

    Склоняются:
    1. Мужские фамилии и имена, оканчивающиеся на согласный звук и мягкий знак. (институт им. С.Я.Жука, стихи Адама Мицкевича, встретить Игоря Коваля).
    2. Женские имена, оканчивающиеся на мягкий знак. (Любовь, Юдифь).
    3. Склоняются, как правило, фамилии на неударные -а, -я (в основном славянские, романские и некоторые другие) (статья В.М. Птицы, творчество Яна Неруды, песни в исполнении Роситы Кинтаны, беседа с А.Вайдой, стихи Окуджавы). Колебания наблюдаются в употреблении грузинских и японских фамилий, где встречаются случаи склоняемости и несклоняемости:
      • игра нар. артиста СССР Харавы; 100 лет со дня рождения Сен-Катаямы, фильмы Куросавы;
      • работы А.С. Чикобава (и Чикобавы); творчество Пшавела; министр в кабинете Икэда; выступление Хатояма; фильмы Витторио де Сика (не де Сики).
    4. Славянские фамилии на ударные -а, -я (у писателя Майбороды, с философом Сковородой, к режиссеру Головне).
    5. Первая часть русских двойных фамилий, если она сама по себе употребляется как фамилия (стихи Лебедева-Кумача, постановка Немировича-Данченко, выставка Соколова-Скаля)
    6. Стоящее перед фамилией иностранное имя, оканчивающееся на согласный звук, склоняется (романы Жюля Верна, рассказы Марка Твена). Но, по традиции: романы Вальтер (и Вальтера) Скотта, песни о Робин Гуде.
    7. При склонении иностранных фамилий и имен используются формы русских склонений и не сохраняются особенности склонения слов в языке подлинника. (Карел Чапек - Карела Чапека [не Карла Чапека]). Также польские имена (у Владека, у Эдека, у Янека [не: у Владка, у Эдка, у Янка]).
    8. Польские женские фамилии на -а склоняются по образцу русских фамилий на -ая (Бандровска-Турска - гастроли Бандровской-Турской, Черни-Стефаньска - концерты Черни-Стефаньской). При этом возможно оформление таких фамилий по образцу русских и в именительном падеже (Опульская-Данецкая, Модзелевская). То же целесообразно для чешских фамилий на -а (Бабицка - Бабицкая, Бабицкой).
    9. Славянские мужские фамилии на -и, -ы целесообразно склонять по образцу русских фамилий на -ий, -ый (Бобровски - Бобровского, Покорны - Покорного). При этом возможно оформление таких фамилий по образцу русских и в именительном падеже (Бобровский, Покорный, Лер-Сплавинский).

    Особенности склонения на –а:
    1. Если перед –а стоит согласная, то окончаниями падежей будут: -а, -ы, -е, -у, -ой, -е.
    2. Если перед –а стоит одна из букв (г, к, х) или мягкая шипящая (ч, щ) или ж, то окончанием род.п. будет –и.
    3. Если перед –а стоит шипящая (ч, щ, ц, ш) или ж, то окончанием тв.п. при ударении на конец слова будет –ой, и –ей при ударении на начало или середину слова.

    В программе реализован славянский вариант преобразования ФИО и, поскольку алгоритмически невозможно определить корни фамилии (славянская, русская, украинская), употребляется ли она сама по себе в качестве фамилии и т.д., при кодировании допущены некоторые отступления от приведенных правил. Например, склоняются все фамилии на –а и –я, причем в фамилиях на –а с предшествующей шипящей предполагается, что ударение никогда не падает на конец слова. Поэтому для правильного преобразования (вернее не преобразования) фамилии иностранного происхождения на ударные –а или –я (Дюма, Золя) следует помещать в соответствующую секцию словаря исключений, а в случаях зависимости окончания от положения ударения – применять ручную корректировку.

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

  12. Комплект поставки
    1. Библиотека динамической компоновки - Padeg.dll (104448 17-09-2001 12:00)
    2. Файл словаря исключений - Except.dic (1583 17-09-2001 12:00)
    3. Файл Padeg.reg (148 17-09-2001 12:00)
    4. Шаблон MS Word - Declen.dot (31744 17-09-2001 12:00)
    5. Макросы для MS Word - MacroWrd.bas (2534 17-09-2001 12:00)
    6. Макросы для MS Excel - MacroExl.bas (2835 17-09-2001 12:00)
    7. Файл с примерами - Declen.bas (4216 17-09-2001 12:00)
    8. Документация ReadMe.doc (98816 17-09-2001 12:00)
    9. Этот файл - ReadMe.htm (39246 17-09-2001 12:00)

    Последние два файла имеют одинаковое содержание и отличаются только форматом.

     

  13. Авторы:

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

Со всем к Вам уважением.

Плахов С.В. S.Plahov@vaz.ru

Покаташкин Г.Л. pgl@gsu.unibel.by

  Загрузить файл можно здесь:

   DOWNLOAD

 

 

Bride.Ru

Hosted by uCoz