'MacroName:Latin2Cyrillic 'MacroDescription:Automatically untransliterate a field with Latin characters into Cyrillic characters 'Macro created by: Joel Hahn, Niles Public Library District 'Macro last modified: 15 Oct 2016 Option Explicit Option Compare Binary Declare Function DlgControl(WhichControl$, action%, suppvalue& ) As Integer Declare Function TransRussian(sField As String) As String Declare Function TransBelarusian(sField As String) As String Declare Function TransBulgarian(sField As String) As String Declare Function TransMacedonian(sField As String) As String Declare Function TransRusyn(sField As String) As String Declare Function TransSlavic(sField As String) As String Declare Function TransSerbian(sField As String) As String Declare Function TransUkranian(sField As String) As String Declare Function TransNonSlavic(sField As String, LangCode As Integer) As String Declare Function TransNonSlavic_A(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_C(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_D(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_E(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_F(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_G(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_H(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_I(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_J(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_K(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_L(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_N(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_O(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_P(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_Q(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_R(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_S(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_T(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_U(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_W(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_X(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_Y(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Declare Function TransNonSlavic_Z(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim PositionShift As Long Sub Main Dim CharacterSet As Integer Dim NonSlavLang As Integer Dim response As Integer Dim sField As String Dim bool As Integer Dim sTranslit As String dim sLang As String Dim i As Integer 'Set the default transliteration table selection ' 0 = Russian ' 1 = Belarusian ' 2 = Bulgarian ' 3 = Church Slavic ' 4 = Serbian & Macedonian ' 5 = Ukranian ' 6 = Non-Slavic Cyrillic languages ' 7 = Rusyn ' 8 = Macedonian CharacterSet = 0 'Russian 'Set the default non-Slavic language subtable selection (see below for number-to-transliteration subtable associations) NonSlavLang = 0 'Slavic language or basic table only for non-Slavic language Dim CS As Object On Error Resume Next Set CS = GetObject(,"Connex.Client") On Error GoTo 0 If CS Is Nothing Then Set CS = CreateObject("Connex.Client") End If Select Case CS.ItemType Case 3, 4, 14, 18, 20 'Authority record; MARC8 characters only Case -1, 5 To 13, 15 To 16, 21 To 25 MsgBox "Not viewing a MARC record. Exiting..." Exit Sub End Select Dim CharSets(8) As String CharSets(0) = "Russian" CharSets(1) = "Belarusian" CharSets(2) = "Bulgarian" CharSets(3) = "Church Slavic" CharSets(4) = "Serbian" CharSets(5) = "Ukranian" CharSets(6) = "Non-Slavic Cyrillic" CharSets(7) = "Rusyn" CharSets(8) = "Macedonian" Dim NonSlavChars(109) As String NonSlavChars(0) = "(Basic table)" NonSlavChars(1) = "Abazin" NonSlavChars(2) = "Abkhaz" NonSlavChars(3) = "Adyegi" NonSlavChars(4) = "Syriac (Modern)" NonSlavChars(5) = "Altai (1845/1922)" NonSlavChars(6) = "Altai (1938)" NonSlavChars(7) = "Altai (1944)" NonSlavChars(8) = "Avaric" NonSlavChars(9) = "Azerbaijani" NonSlavChars(10) = "Balkar" NonSlavChars(11) = "Bashkir" NonSlavChars(12) = "Buriat" NonSlavChars(13) = "Chechen (1862)" NonSlavChars(14) = "Chechen (1908)" NonSlavChars(15) = "Chechen (1938)" NonSlavChars(16) = "Chukchi" NonSlavChars(17) = "Chuvash (Missionary)" NonSlavChars(18) = "Chuvash (1872-1933)" NonSlavChars(19) = "Chuvash (1938)" NonSlavChars(20) = "Dargwa (Uslar)" NonSlavChars(21) = "Dargwa (1938)" NonSlavChars(22) = "Dungan" NonSlavChars(23) = "Yuit" NonSlavChars(24) = "Even (1937)" NonSlavChars(25) = "Even (1959)" NonSlavChars(26) = "Evenki (1937)" NonSlavChars(27) = "Evenki (1958)" NonSlavChars(28) = "Gagauz (U.S.S.R.)" NonSlavChars(29) = "Ingush" NonSlavChars(30) = "Kabardian (1936)" NonSlavChars(31) = "Kabardian (1938)" NonSlavChars(32) = "Kalmyk (1927)" NonSlavChars(33) = "Kalmyk (1938)" NonSlavChars(34) = "Kalmyk (1957)" NonSlavChars(35) = "Karachay" NonSlavChars(36) = "Kara-Kalpak (1940)" NonSlavChars(37) = "Kara-Kalpak (1947)" NonSlavChars(38) = "Kara-Kalpak (1957)" NonSlavChars(39) = "Karelian" NonSlavChars(40) = "Kazakh" NonSlavChars(41) = "Khakass (Missionary)" NonSlavChars(42) = "Khakass (1924-1927)" NonSlavChars(43) = "Khakass (1939)" NonSlavChars(44) = "Khanty (1937)" NonSlavChars(45) = "Khanty (Kazym)" NonSlavChars(46) = "Khanty (Shuryshkary)" NonSlavChars(47) = "Khanty (Surgut)" NonSlavChars(48) = "Khanty (Vakh)" NonSlavChars(49) = "Kyrgyz" NonSlavChars(50) = "Komi (1938)" NonSlavChars(51) = "Komi (1919/Molodtsov)" NonSlavChars(52) = "Komi-Permyak (Missionary)" NonSlavChars(53) = "Komi-Permyak (1938)" NonSlavChars(54) = "Koryak" NonSlavChars(55) = "Kumyk" NonSlavChars(56) = "Kurdish" NonSlavChars(57) = "Lak (1864)" NonSlavChars(58) = "Lak (1938)" NonSlavChars(59) = "Sami (Missionary)" NonSlavChars(60) = "Sami (1937)" NonSlavChars(61) = "Lezghian (1938)" NonSlavChars(62) = "Lezghian (Uslar)" NonSlavChars(63) = "Lithuanian" NonSlavChars(64) = "Mansi (1937)" NonSlavChars(65) = "Mansi (1958)" NonSlavChars(66) = "Mari (Meadow - Missionary)" NonSlavChars(67) = "Mari (Meadow - 1870s)" NonSlavChars(68) = "Mari (Meadow - 1938)" NonSlavChars(69) = "Mari (Mountain - Missionary)" NonSlavChars(70) = "Mari (Mountain - 1870s)" NonSlavChars(71) = "Mari (Mountain - 1938)" NonSlavChars(72) = "Moldavian (1924)" NonSlavChars(73) = "Moldavian (1937)" NonSlavChars(74) = "Mongolian" NonSlavChars(75) = "Mordvin (Erzya - Early missionary)" NonSlavChars(76) = "Mordvin (Erzya - Late missionary)" NonSlavChars(77) = "Mordvin (Erzya - 1938)" NonSlavChars(78) = "Mordvin (Moshka - Missionary)" NonSlavChars(79) = "Mordvin (Moshka - 1923)" NonSlavChars(80) = "Mordvin (Moshka - 1938)" NonSlavChars(81) = "Nanai" NonSlavChars(82) = "Nenets (1937)" NonSlavChars(83) = "Nenets (1958)" NonSlavChars(84) = "Gilyak" NonSlavChars(85) = "Nogai" NonSlavChars(86) = "Ossetic (Digor)" NonSlavChars(87) = "Ossetic (Iron)" NonSlavChars(88) = "Romany (Bulgaria)" NonSlavChars(89) = "Romany (U.S.S.R.)" NonSlavChars(90) = "Selkup" NonSlavChars(91) = "Shor (Missionary)" NonSlavChars(92) = "Shor (1927)" NonSlavChars(93) = "Shor (1938)" NonSlavChars(94) = "Tabarasan" NonSlavChars(95) = "Tajik" NonSlavChars(96) = "Tat" NonSlavChars(97) = "Tatar (1938)" NonSlavChars(98) = "Tatar (Crimea)" NonSlavChars(99) = "Tatar (Kryashen)" NonSlavChars(100) = "Turkmen" NonSlavChars(101) = "Tuvinian" NonSlavChars(102) = "Udekhe" NonSlavChars(103) = "Udmurt (Missionary)" NonSlavChars(104) = "Udmurt (1937)" NonSlavChars(105) = "Uighur" NonSlavChars(106) = "Uzbek" NonSlavChars(107) = "Yakut (1819)" NonSlavChars(108) = "Yakut (1851)" NonSlavChars(109) = "Yakut (1939)" bool = CS.GetFixedField("Lang", sLang) Select Case sLang Case "rus" 'Russian CharacterSet = 0 Case "bel" 'Belarusian CharacterSet = 1 Case "bul" 'Bulgarian CharacterSet = 2 Case "chu" 'Church Slavic CharacterSet = 3 Case "srp" 'Serbian CharacterSet = 4 Case "ukr" 'Ukranian CharacterSet = 5 Case "sla" 'Other Slavic; default to Rusyn, as it is important enough to have its own transliteration page CharacterSet = 7 Case "mac" 'Macedonian CharacterSet = 8 Case "abk" 'Abkhaz CharacterSet = 6 NonSlavLang = 2 Case "ady" 'Adyegi CharacterSet = 6 NonSlavLang = 3 Case "alt" 'Altai; default to latest table CharacterSet = 6 NonSlavLang = 7 Case "ava" 'Avaric CharacterSet = 6 NonSlavLang = 8 Case "aze" 'Azerbaijani CharacterSet = 6 NonSlavLang = 9 Case "bak" 'Bashkir CharacterSet = 6 NonSlavLang = 11 Case "bua" 'Buriat CharacterSet = 6 NonSlavLang = 12 Case "cau" 'Caucasian (Other); default to Abazin as alphabetically first CharacterSet = 6 NonSlavLang = 1 Case "che" 'Chechen; default to latest table CharacterSet = 6 NonSlavLang = 15 Case "chm" 'Mari; default to latest table for Meadow CharacterSet = 6 NonSlavLang = 68 Case "chv" 'Chuvash; default to latest table CharacterSet = 6 NonSlavLang = 19 Case "crh" 'Tatar (Crimean) CharacterSet = 6 NonSlavLang = 98 Case "dar" 'Dargwa; default to latest table CharacterSet = 6 NonSlavLang = 21 Case "fiu" 'Finno-Ungric (Other); default to Khanty as alphabetically first CharacterSet = 6 NonSlavLang = 44 Case "inh" 'Ingush CharacterSet = 6 NonSlavLang = 29 Case "ira" 'Iranian (Other); used only for Tat on the non-Slavic tables CharacterSet = 6 NonSlavLang = 96 Case "kaa" 'Kara-Kalpak; default to latest table CharacterSet = 6 NonSlavLang = 38 Case "kaz" 'Kazakh CharacterSet = 6 NonSlavLang = 40 Case "kbd" 'Kabardian; default to latest table CharacterSet = 6 NonSlavLang = 31 Case "kir" 'Kyrgyz CharacterSet = 6 NonSlavLang = 49 Case "kom" 'Komi & Komi-Permyak; default to latest table for Komi CharacterSet = 6 NonSlavLang = 50 Case "krc" 'Karachay & Balkar; default to Karachay CharacterSet = 6 NonSlavLang = 35 Case "krl" 'Karelian CharacterSet = 6 NonSlavLang = 39 Case "kum" 'Kumyk CharacterSet = 6 NonSlavLang = 55 Case "kur" 'Kurdish CharacterSet = 6 NonSlavLang = 56 Case "lez" 'Lezghian; default to latest table CharacterSet = 6 NonSlavLang = 61 Case "lit" 'Lithuanian CharacterSet = 6 NonSlavLang = 63 Case "mis" 'Misc languages; default to Chukchi as alphabetically first CharacterSet = 6 NonSlavLang = 16 Case "mon" 'Mongolian CharacterSet = 6 NonSlavLang = 74 Case "nog" 'Nogai CharacterSet = 6 NonSlavLang = 85 Case "oss" 'Ossetic; default to alphabetically first CharacterSet = 6 NonSlavLang = 86 Case "rom" 'Romani; default to alphabetically first CharacterSet = 6 NonSlavLang = 88 Case "rum" 'Romanian, used only for Moldavian on the non-Slavic tables; default to latest table CharacterSet = 6 NonSlavLang = 73 Case "sah" 'Yakut; default to latest table CharacterSet = 6 NonSlavLang = 109 Case "sel" 'Selkup CharacterSet = 6 NonSlavLang = 90 Case "sit" 'Sino-Tibetan (Other), used only for Dungan on the non-Slavic tables CharacterSet = 6 NonSlavLang = 22 Case "smi" 'Sami; default to latest table CharacterSet = 6 NonSlavLang = 60 Case "syr" 'Syriac (Modern) CharacterSet = 6 NonSlavLang = 4 Case "tat" 'Tatar; default to latest table CharacterSet = 6 NonSlavLang = 97 Case "tgk" 'Tajik CharacterSet = 6 NonSlavLang = 95 Case "tuk" 'Turkmen CharacterSet = 6 NonSlavLang = 100 Case "tut" 'Altaic (Other); default to most recent Even table as alphabetically first CharacterSet = 6 NonSlavLang = 25 Case "tyv" 'Tuvinian CharacterSet = 6 NonSlavLang = 101 Case "udm" 'Udmurt; default to latest table CharacterSet = 6 NonSlavLang = 104 Case "uig" 'Uighur CharacterSet = 6 NonSlavLang = 105 Case "uzb" 'Uzbek CharacterSet = 6 NonSlavLang = 106 Case "xal" 'Oriat, used only for Kalmyk on the non-Slavic tables; default to latest table CharacterSet = 6 NonSlavLang = 34 Case "ypk" 'Yupik, used only for Yuit on the non-Slavic tables CharacterSet = 6 NonSlavLang = 23 Case Else CharacterSet = 0 NonSlavLang = 0 End Select Begin Dialog newdlg 183, 60, "Transliteration Options", .DlgControl OkButton 35, 42, 50, 14 CancelButton 95, 42, 50, 14 Text 3, 3, 177, 10, "Please select the LC Cyrillic transliteration table to use:" DropListBox 52, 11, 78, 98, CharSets(), .Langs DropListBox 32, 26, 118, 98, NonSlavChars, .NonSlav End Dialog Dim CharSelect As newdlg CharSelect.Langs = CharacterSet CharSelect.NonSlav = NonSlavLang response = Dialog(CharSelect) If response = 0 Then Exit Sub End If CharacterSet = CharSelect.Langs NonSlavLang = CharSelect.NonSlav Select Case NonSlavLang Case 7 NonSlavLang = 5 'same as Altai (1845/1922) Case 8, 21, 58, 61, 94, 96 NonSlavLang = 1 'same as Abazin [i.e. lower case palochka only] Case 10, 17, 24, 26, 32, 36, 55, 72, 77, 80, 81, 82, 84, 85, 90, 98, 102, 107 NonSlavLang = 6 'same as Altai (1938) [i.e. no additional characters] Case 29, 31 NonSlavLang = 3 'same as Adyegi [i.e. upper & lower case palochka only] Case 39 NonSlavLang = 28 'same as Gagauz (U.S.S.R.) Case 53 NonSlavLang = 50 'same as Komi (1938) Case 59, 65, 83 NonSlavLang = 46 'same as Khanty (Shuryshkary) [i.e. lower case n with descending j-like hook] Case 69, 75 NonSlavLang = 66 'same as Mari (Meadow - Missionary) End Select If CharacterSet <> 6 Then NonSlavLang = 0 'Ignore specific Non-Slavic languages except when Non-Slavic character set is active bool = CS.GetFieldLine(CS.CursorRow, sField) If InStr(sField, "Data contains non-latin script") Then MsgBox "The selected field already contains vernacular data. Exiting..." Exit Sub ElseIf sField = Chr(252) & Chr(252) & Chr(252) & " " Or Trim(Mid(sField, 6)) = "" Then MsgBox "The selected field contains no data. Exiting..." Exit Sub End If For i = 1 to 5 If Asc(Mid(sField, i, 1)) = 252 Then sTranslit = sTranslit & "∎" Else sTranslit = sTranslit & Mid(sField, i, 1) End If Next Select Case CharacterSet Case 0 sTranslit = sTranslit & TransRussian(sField) Case 1 sTranslit = sTranslit & TransBelarusian(sField) Case 2 sTranslit = sTranslit & TransBulgarian(sField) Case 3 sTranslit = sTranslit & TransSlavic(sField) Case 4 sTranslit = sTranslit & TransSerbian(sField) Case 5 sTranslit = sTranslit & TransUkranian(sField) Case 6 sTranslit = sTranslit & TransNonSlavic(sField, NonSlavLang) Case 7 sTranslit = sTranslit & TransRusyn(sField) Case 8 sTranslit = sTranslit & TransMacedonian(sField) Case Else Exit Sub End Select bool = CS.AddFieldLine(CS.CursorRow, sTranslit) CS.SendKeys "%ekl", -1 End Sub '################################################################################ Function DlgControl( WhichControl$, action%, suppvalue& ) As Integer Select Case action% Case 1 ' set up initial values displayed in dialog box If DlgValue("Langs") = 6 Then DlgEnable "NonSlav", 1 DlgVisible "NonSlav", 1 Else DlgEnable "NonSlav", 0 DlgVisible "NonSlav", 0 End If Case 2 ' what to do if button or control value was changed (by clicking it) Select Case WhichControl$ Case "Langs" If DlgValue("Langs") = 6 Then DlgEnable "NonSlav", 1 DlgVisible "NonSlav", 1 Else DlgEnable "NonSlav", 0 DlgVisible "NonSlav", 0 End If End Select Case 3 ' what to do if text box [or list/combo box?] was changed (by clicking it or by typing in it) Case 4 ' what to do if control focus was changed (by leaving it and clicking elsewhere) Case 5 ' what to do while idle (repeated many times/sec) End Select End Function '################################################################################ Function TransRussian(sField As String) As String Dim i As Long Dim sNewField As String sNewField = "" i = 6 Do If Mid(sField, i, 1) = Chr(223) Then sNewField = sNewField & "ǂ" & Mid(sField, i+1, 1) i = i + 2 Else If InStr(" 1234567890!@#$%^&*()[]{}';:.,/?\=+-" & Chr(34), Mid(sField, i, 1)) Then sNewField = sNewField & Mid(sField, i, 1) ElseIf Mid(sField, i, 1) = Chr(183) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ъ" Else sNewField = sNewField & "ъ" End If ElseIf Mid(sField, i, 1) = Chr(167) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ь" Else sNewField = sNewField & "ь" End If ElseIf Mid(sField, i, 1) = "A" Then sNewField = sNewField & "А" ElseIf Mid(sField, i, 1) = "B" Then sNewField = sNewField & "Б" ElseIf Mid(sField, i, 1) = "V" Then sNewField = sNewField & "В" ElseIf Mid(sField, i, 1) = "G" Then sNewField = sNewField & "Г" ElseIf Mid(sField, i, 1) = "D" Then sNewField = sNewField & "Д" ElseIf Mid(sField, i, 1) = "E" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "Э" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(232) Then sNewField = sNewField & "Ё" i = i + 1 'ElseIf Mid(sField, i+1, 1) = Chr(241) Then ' sNewField = sNewField & "Ѧ" ' i = i + 1 Else sNewField = sNewField & "Е" End If ElseIf Mid(sField, i, 1) = "Z" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Ж" i = i + 1 Else sNewField = sNewField & "З" End If ElseIf Mid(sField, i, 1) = "I" Then If Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "І" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "Й" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "A" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "Я" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "E" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "e" & Chr(236) Then sNewField = sNewField & "Ѣ" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "U" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then sNewField = sNewField & "Ю" i = i + 3 Else sNewField = sNewField & "И" End If ElseIf Mid(sField, i, 1) = "K" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Х" i = i + 1 Else sNewField = sNewField & "К" End If ElseIf Mid(sField, i, 1) = "L" Then sNewField = sNewField & "Л" ElseIf Mid(sField, i, 1) = "M" Then sNewField = sNewField & "М" ElseIf Mid(sField, i, 1) = "N" Then sNewField = sNewField & "Н" ElseIf Mid(sField, i, 1) = "O" Then sNewField = sNewField & "О" ElseIf Mid(sField, i, 1) = "P" Then sNewField = sNewField & "П" ElseIf Mid(sField, i, 1) = "R" Then sNewField = sNewField & "Р" ElseIf Mid(sField, i, 1) = "S" Then If Mid(sField, i+1, 3) = "hch" Then sNewField = sNewField & "Щ" i = i + 3 ElseIf Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "Ш" i = i + 1 Else sNewField = sNewField & "С" End If ElseIf Mid(sField, i, 1) = "T" Then If Mid(sField, i+1, 3) = Chr(235) & "S" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "Ц" i = i + 3 Else sNewField = sNewField & "Т" End If ElseIf Mid(sField, i, 1) = "U" Then sNewField = sNewField & "У" ElseIf Mid(sField, i, 1) = "F" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "Ѳ" i = i + 1 Else sNewField = sNewField & "Ф" End If ElseIf Mid(sField, i, 1) = "C" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Ч" i = i + 1 Else sNewField = sNewField & "∎" End If ElseIf Mid(sField, i, 1) = "Y" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "Ѵ" i = i + 1 Else sNewField = sNewField & "Ы" End If ElseIf Mid(sField, i, 1) = "X" Then sNewField = sNewField & "Х" ElseIf Mid(sField, i, 1) = "a" Then sNewField = sNewField & "а" ElseIf Mid(sField, i, 1) = "b" Then sNewField = sNewField & "б" ElseIf Mid(sField, i, 1) = "v" Then sNewField = sNewField & "в" ElseIf Mid(sField, i, 1) = "g" Then sNewField = sNewField & "г" ElseIf Mid(sField, i, 1) = "d" Then sNewField = sNewField & "д" ElseIf Mid(sField, i, 1) = "e" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "э" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(232) Then sNewField = sNewField & "ё" i = i + 1 'ElseIf Mid(sField, i+1, 1) = Chr(241) Then ' sNewField = sNewField & "ѧ" ' i = i + 1 Else sNewField = sNewField & "е" End If ElseIf Mid(sField, i, 1) = "z" Then If Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "ж" i = i + 1 Else sNewField = sNewField & "з" End If ElseIf Mid(sField, i, 1) = "i" Then If Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "і" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "й" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "я" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "e" & Chr(236) Then sNewField = sNewField & "ѣ" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then sNewField = sNewField & "ю" i = i + 3 Else sNewField = sNewField & "и" End If ElseIf Mid(sField, i, 1) = "k" Then If Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "х" i = i + 1 Else sNewField = sNewField & "к" End If ElseIf Mid(sField, i, 1) = "l" Then sNewField = sNewField & "л" ElseIf Mid(sField, i, 1) = "m" Then sNewField = sNewField & "м" ElseIf Mid(sField, i, 1) = "n" Then sNewField = sNewField & "н" ElseIf Mid(sField, i, 1) = "o" Then sNewField = sNewField & "о" ElseIf Mid(sField, i, 1) = "p" Then sNewField = sNewField & "п" ElseIf Mid(sField, i, 1) = "r" Then sNewField = sNewField & "р" ElseIf Mid(sField, i, 1) = "s" Then If Mid(sField, i+1, 3) = "hch" Then sNewField = sNewField & "щ" i = i + 3 ElseIf Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "ш" i = i + 1 Else sNewField = sNewField & "с" End If ElseIf Mid(sField, i, 1) = "t" Then If Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "ц" i = i + 3 Else sNewField = sNewField & "т" End If ElseIf Mid(sField, i, 1) = "u" Then sNewField = sNewField & "у" ElseIf Mid(sField, i, 1) = "f" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "ѳ" i = i + 1 Else sNewField = sNewField & "ф" End If ElseIf LCase(Mid(sField, i, 2)) = "ch" Then sNewField = sNewField & "ч" i = i + 1 ElseIf Mid(sField, i, 1) = "y" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "ѵ" i = i + 1 Else sNewField = sNewField & "ы" End If Else sNewField = sNewField & "∎" End If i = i + 1 End If Loop While i <= Len(sField) TransRussian = sNewField End Function '################################################################################ Function TransBelarusian(sField As String) As String Dim i As Long Dim sNewField As String sNewField = "" i = 6 Do If Mid(sField, i, 1) = Chr(223) Then sNewField = sNewField & "ǂ" & Mid(sField, i+1, 1) i = i + 2 Else If InStr(" 1234567890!@#$%^&*()[]{}';:.,/?\=+-" & Chr(34), Mid(sField, i, 1)) Then sNewField = sNewField & Mid(sField, i, 1) ElseIf Mid(sField, i, 1) = Chr(167) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ь" Else sNewField = sNewField & "ь" End If ElseIf Mid(sField, i, 1) = Chr(183) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ъ" Else sNewField = sNewField & "ъ" End If ElseIf Mid(sField, i, 1) = "A" Then sNewField = sNewField & "А" ElseIf Mid(sField, i, 1) = "B" Then sNewField = sNewField & "Б" ElseIf Mid(sField, i, 1) = "V" Then sNewField = sNewField & "В" ElseIf Mid(sField, i, 1) = "H" Then sNewField = sNewField & "Г" ElseIf Mid(sField, i, 1) = "G" Then sNewField = sNewField & "Ѓ" ElseIf Mid(sField, i, 1) = "D" Then sNewField = sNewField & "Д" ElseIf Mid(sField, i, 1) = "E" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "Э" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "Ҍ" i = i + 1 Else sNewField = sNewField & "Е" End If ElseIf Mid(sField, i, 1) = "Z" Then If Mid(sField, i+1, 3) = Chr(235) & "H" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) Then sNewField = sNewField & "Ж" i = i + 3 Else sNewField = sNewField & "З" End If ElseIf Mid(sField, i, 1) = "I" Then If Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "Й" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "И" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(232) Then sNewField = sNewField & "Ї" 'Or Ї i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "A" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "Я" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "O" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "o" & Chr(236) Then sNewField = sNewField & "Ё" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "U" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "H" & Chr(236) Then sNewField = sNewField & "Ю" i = i + 3 Else sNewField = sNewField & "І" End If ElseIf Mid(sField, i, 1) = "K" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Х" i = i + 1 Else sNewField = sNewField & "К" End If ElseIf Mid(sField, i, 1) = "L" Then sNewField = sNewField & "Л" ElseIf Mid(sField, i, 1) = "M" Then sNewField = sNewField & "М" ElseIf Mid(sField, i, 1) = "N" Then sNewField = sNewField & "Н" ElseIf Mid(sField, i, 1) = "O" Then sNewField = sNewField & "О" ElseIf Mid(sField, i, 1) = "P" Then sNewField = sNewField & "П" ElseIf Mid(sField, i, 1) = "R" Then sNewField = sNewField & "Р" ElseIf Mid(sField, i, 1) = "S" Then If Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "Ш" i = i + 1 Else sNewField = sNewField & "С" End If ElseIf Mid(sField, i, 1) = "T" Then If LCase(Mid(sField, i+1, 1)) = "s" Then sNewField = sNewField & "Ц" i = i + 1 Else sNewField = sNewField & "Т" End If ElseIf Mid(sField, i, 1) = "U" Then If Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "Ў" i = i + 1 Else sNewField = sNewField & "У" End If ElseIf Mid(sField, i, 1) = "F" Then sNewField = sNewField & "Ф" ElseIf Mid(sField, i, 1) = "C" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Ч" i = i + 1 Else sNewField = sNewField & "∎" End If ElseIf Mid(sField, i, 1) = "Y" Then sNewField = sNewField & "Ы" ElseIf Mid(sField, i, 1) = "X" Then sNewField = sNewField & "Х" ElseIf Mid(sField, i, 1) = "a" Then sNewField = sNewField & "а" ElseIf Mid(sField, i, 1) = "b" Then sNewField = sNewField & "б" ElseIf Mid(sField, i, 1) = "v" Then sNewField = sNewField & "в" ElseIf Mid(sField, i, 1) = "h" Then sNewField = sNewField & "г" ElseIf Mid(sField, i, 1) = "g" Then sNewField = sNewField & "ѓ" ElseIf Mid(sField, i, 1) = "d" Then sNewField = sNewField & "д" ElseIf Mid(sField, i, 1) = "e" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "э" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "ҍ" i = i + 1 Else sNewField = sNewField & "е" End If ElseIf Mid(sField, i, 1) = "z" Then If Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) Then sNewField = sNewField & "ж" i = i + 3 Else sNewField = sNewField & "з" End If ElseIf Mid(sField, i, 1) = "i" Then If Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "й" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "и" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(232) Then sNewField = sNewField & "ї" 'Or Ї i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "я" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "o" & Chr(236) Then sNewField = sNewField & "ё" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then sNewField = sNewField & "ю" i = i + 3 Else sNewField = sNewField & "і" End If ElseIf Mid(sField, i, 1) = "k" Then If Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "х" i = i + 1 Else sNewField = sNewField & "к" End If ElseIf Mid(sField, i, 1) = "l" Then sNewField = sNewField & "л" ElseIf Mid(sField, i, 1) = "m" Then sNewField = sNewField & "м" ElseIf Mid(sField, i, 1) = "n" Then sNewField = sNewField & "н" ElseIf Mid(sField, i, 1) = "o" Then sNewField = sNewField & "о" ElseIf Mid(sField, i, 1) = "p" Then sNewField = sNewField & "п" ElseIf Mid(sField, i, 1) = "r" Then sNewField = sNewField & "р" ElseIf Mid(sField, i, 1) = "s" Then If Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "ш" i = i + 1 Else sNewField = sNewField & "с" End If ElseIf Mid(sField, i, 1) = "t" Then If Mid(sField, i+1, 1) = "s" Then sNewField = sNewField & "ц" i = i + 1 Else sNewField = sNewField & "т" End If ElseIf Mid(sField, i, 1) = "u" Then If Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "ў" i = i + 1 Else sNewField = sNewField & "у" End If ElseIf Mid(sField, i, 1) = "f" Then sNewField = sNewField & "ф" ElseIf LCase(Mid(sField, i, 2)) = "ch" Then sNewField = sNewField & "ч" i = i + 1 ElseIf Mid(sField, i, 1) = "y" Then sNewField = sNewField & "ы" Else sNewField = sNewField & "∎" End If i = i + 1 End If Loop While i <= Len(sField) TransBelarusian = sNewField End Function '################################################################################ Function TransBulgarian(sField As String) As String Dim i As Long Dim sNewField As String sNewField = "" i = 6 Do If Mid(sField, i, 1) = Chr(223) Then sNewField = sNewField & "ǂ" & Mid(sField, i+1, 1) i = i + 2 Else 'ReDim Preserve bStrArray(UBound(bStrArray) + 1) If InStr(" !@#$%^&*()[]{}';:.,/?\=+-" & Chr(34), Mid(sField, i, 1)) Then sNewField = sNewField & Mid(sField, i, 1) ElseIf InStr("1234567890", Mid(sField, i, 1)) Then sNewField = sNewField & Mid(sField, i, 1) ElseIf Mid(sField, i, 1) = Chr(167) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ь" Else sNewField = sNewField & "ь" End If ElseIf Mid(sField, i, 1) = Chr(183) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ъ" Else sNewField = sNewField & "ъ" End If ElseIf Mid(sField, i, 1) = "A" Then sNewField = sNewField & "А" ElseIf Mid(sField, i, 1) = "B" Then sNewField = sNewField & "Б" ElseIf Mid(sField, i, 1) = "V" Then sNewField = sNewField & "В" ElseIf Mid(sField, i, 1) = "G" Then sNewField = sNewField & "Г" ElseIf Mid(sField, i, 1) = "D" Then sNewField = sNewField & "Д" ElseIf Mid(sField, i, 1) = "E" Then sNewField = sNewField & "Е" ElseIf Mid(sField, i, 1) = "Z" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Ж" i = i + 1 Else sNewField = sNewField & "З" End If ElseIf Mid(sField, i, 1) = "I" Then If Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "Й" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "A" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "Я" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "E" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "e" & Chr(236) Then sNewField = sNewField & "Ѣ" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "U" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then sNewField = sNewField & "Ю" i = i + 3 Else sNewField = sNewField & "И" End If ElseIf Mid(sField, i, 1) = "K" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Х" i = i + 1 Else sNewField = sNewField & "К" End If ElseIf Mid(sField, i, 1) = "L" Then sNewField = sNewField & "Л" ElseIf Mid(sField, i, 1) = "M" Then sNewField = sNewField & "М" ElseIf Mid(sField, i, 1) = "N" Then sNewField = sNewField & "Н" ElseIf Mid(sField, i, 1) = "O" Then sNewField = sNewField & "О" ElseIf Mid(sField, i, 1) = "P" Then sNewField = sNewField & "П" ElseIf Mid(sField, i, 1) = "R" Then sNewField = sNewField & "Р" ElseIf Mid(sField, i, 1) = "S" Then If Mid(sField, i+1, 2) = "ht" Then sNewField = sNewField & "Щ" i = i + 2 ElseIf Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "Ш" i = i + 1 Else sNewField = sNewField & "С" End If ElseIf Mid(sField, i, 1) = "T" Then If Mid(sField, i+1, 3) = Chr(235) & "S" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "Ц" i = i + 3 Else sNewField = sNewField & "Т" End If ElseIf Mid(sField, i, 1) = "U" Then If Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "Ъ" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(239) Then sNewField = sNewField & "Ѫ" i = i + 1 Else sNewField = sNewField & "У" End If ElseIf Mid(sField, i, 1) = "F" Then sNewField = sNewField & "Ф" ElseIf Mid(sField, i, 1) = "C" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Ч" i = i + 1 Else sNewField = sNewField & "∎" End If ElseIf Mid(sField, i, 1) = "X" Then sNewField = sNewField & "Х" ElseIf Mid(sField, i, 1) = "a" Then sNewField = sNewField & "а" ElseIf Mid(sField, i, 1) = "b" Then sNewField = sNewField & "б" ElseIf Mid(sField, i, 1) = "v" Then sNewField = sNewField & "в" ElseIf Mid(sField, i, 1) = "g" Then sNewField = sNewField & "г" ElseIf Mid(sField, i, 1) = "d" Then sNewField = sNewField & "д" ElseIf Mid(sField, i, 1) = "e" Then sNewField = sNewField & "е" ElseIf Mid(sField, i, 1) = "z" Then If Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "ж" i = i + 1 Else sNewField = sNewField & "з" End If ElseIf Mid(sField, i, 1) = "i" Then If Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "й" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "я" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "e" & Chr(236) Then sNewField = sNewField & "ѣ" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then sNewField = sNewField & "ю" i = i + 3 Else sNewField = sNewField & "и" End If ElseIf Mid(sField, i, 1) = "k" Then If Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "х" i = i + 1 Else sNewField = sNewField & "к" End If ElseIf Mid(sField, i, 1) = "l" Then sNewField = sNewField & "л" ElseIf Mid(sField, i, 1) = "m" Then sNewField = sNewField & "м" ElseIf Mid(sField, i, 1) = "n" Then sNewField = sNewField & "н" ElseIf Mid(sField, i, 1) = "o" Then sNewField = sNewField & "о" ElseIf Mid(sField, i, 1) = "p" Then sNewField = sNewField & "п" ElseIf Mid(sField, i, 1) = "r" Then sNewField = sNewField & "р" ElseIf Mid(sField, i, 1) = "s" Then If Mid(sField, i+1, 2) = "ht" Then sNewField = sNewField & "щ" i = i + 2 ElseIf Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "ш" i = i + 1 Else sNewField = sNewField & "с" End If ElseIf Mid(sField, i, 1) = "t" Then If Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "ц" i = i + 3 Else sNewField = sNewField & "т" End If ElseIf Mid(sField, i, 1) = "u" Then If Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "ъ" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(239) Then sNewField = sNewField & "ѫ" i = i + 1 Else sNewField = sNewField & "у" End If ElseIf Mid(sField, i, 1) = "f" Then sNewField = sNewField & "ф" ElseIf LCase(Mid(sField, i, 2)) = "ch" Then sNewField = sNewField & "ч" i = i + 1 Else sNewField = sNewField & "∎" End If i = i + 1 End If Loop While i <= Len(sField) TransBulgarian = sNewField End Function '################################################################################ Function TransMacedonian(sField As String) As String Dim i As Long Dim sNewField As String sNewField = "" i = 6 Do If Mid(sField, i, 1) = Chr(223) Then sNewField = sNewField & "ǂ" & Mid(sField, i+1, 1) i = i + 2 Else If InStr(" 1234567890!@#$%^&*()[]{}';:.,/?\=+-" & Chr(34), Mid(sField, i, 1)) Then sNewField = sNewField & Mid(sField, i, 1) ElseIf Mid(sField, i, 1) = "A" Then sNewField = sNewField & "А" ElseIf Mid(sField, i, 1) = "B" Then sNewField = sNewField & "Б" ElseIf Mid(sField, i, 1) = "V" Then sNewField = sNewField & "В" ElseIf Mid(sField, i, 1) = "G" Then If Mid(sField, i+1, 1) = Chr(226) Then sNewField = sNewField & "Ѓ" i = i + 1 Else sNewField = sNewField & "Г" End If ElseIf Mid(sField, i, 1) = "D" Then If LCase(Mid(sField, i+1, 1)) & Mid(sField, i+2, 1) = "z" & Chr(233) Then sNewField = sNewField & "Џ" i = i + 2 ElseIf LCase(Mid(sField, i+1, 1)) = "z" Then sNewField = sNewField & "Ѕ" i = i + 1 Else sNewField = sNewField & "Д" End If 'ElseIf Mid(sField, i, 1) = Chr(163) Then ' sNewField = sNewField & "Ђ" ElseIf Mid(sField, i, 1) = "E" Then sNewField = sNewField & "Е" ElseIf Mid(sField, i, 1) = "Z" Then If Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "Ж" i = i + 1 Else sNewField = sNewField & "З" End If ElseIf Mid(sField, i, 1) = "I" Then sNewField = sNewField & "И" ElseIf Mid(sField, i, 1) = "J" Then sNewField = sNewField & "Ј" ElseIf Mid(sField, i, 1) = "K" Then If Mid(sField, i+1, 1) = Chr(226) Then sNewField = sNewField & "Ќ" i = i + 1 Else sNewField = sNewField & "К" End If ElseIf Mid(sField, i, 1) = "L" Then If LCase(Mid(sField, i+1, 1)) = "j" Then sNewField = sNewField & "Љ" i = i + 1 Else sNewField = sNewField & "Л" End If ElseIf Mid(sField, i, 1) = "M" Then sNewField = sNewField & "М" ElseIf Mid(sField, i, 1) = "N" Then If LCase(Mid(sField, i+1, 1)) = "j" Then sNewField = sNewField & "Њ" i = i + 1 Else sNewField = sNewField & "Н" End If ElseIf Mid(sField, i, 1) = "O" Then sNewField = sNewField & "О" ElseIf Mid(sField, i, 1) = "P" Then sNewField = sNewField & "П" ElseIf Mid(sField, i, 1) = "R" Then sNewField = sNewField & "Р" ElseIf Mid(sField, i, 1) = "S" Then If Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "Ш" i = i + 1 Else sNewField = sNewField & "С" End If ElseIf Mid(sField, i, 1) = "T" Then sNewField = sNewField & "Т" ElseIf Mid(sField, i, 1) = "U" Then sNewField = sNewField & "У" ElseIf Mid(sField, i, 1) = "F" Then sNewField = sNewField & "Ф" ElseIf Mid(sField, i, 1) = "H" Then sNewField = sNewField & "Х" ElseIf Mid(sField, i, 1) = "C" Then 'If Mid(sField, i+1, 1) = Chr(226) Then ' sNewField = sNewField & "Ћ" ' i = i + 1 If Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "Ч" i = i + 1 Else sNewField = sNewField & "Ц" End If ElseIf Mid(sField, i, 1) = "a" Then sNewField = sNewField & "а" ElseIf Mid(sField, i, 1) = "b" Then sNewField = sNewField & "б" ElseIf Mid(sField, i, 1) = "v" Then sNewField = sNewField & "в" ElseIf Mid(sField, i, 1) = "g" Then If Mid(sField, i+1, 1) = Chr(226) Then sNewField = sNewField & "ѓ" i = i + 1 Else sNewField = sNewField & "г" End If ElseIf Mid(sField, i, 1) = "d" Then If Mid(sField, i+1, 2) = "z" & Chr(233) Then sNewField = sNewField & "џ" i = i + 2 ElseIf Mid(sField, i+1, 1) = "z" Then sNewField = sNewField & "ѕ" i = i + 1 Else sNewField = sNewField & "д" End If 'ElseIf Mid(sField, i, 1) = Chr(179) Then ' sNewField = sNewField & "ђ" ElseIf Mid(sField, i, 1) = "e" Then sNewField = sNewField & "е" ElseIf Mid(sField, i, 1) = "z" Then If Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "ж" i = i + 1 Else sNewField = sNewField & "з" End If ElseIf Mid(sField, i, 1) = "i" Then sNewField = sNewField & "и" ElseIf Mid(sField, i, 1) = "j" Then sNewField = sNewField & "ј" ElseIf Mid(sField, i, 1) = "k" Then If Mid(sField, i+1, 1) = Chr(226) Then sNewField = sNewField & "ќ" i = i + 1 Else sNewField = sNewField & "к" End If ElseIf Mid(sField, i, 1) = "l" Then If Mid(sField, i+1, 1) = "j" Then sNewField = sNewField & "љ" i = i + 1 Else sNewField = sNewField & "л" End If ElseIf Mid(sField, i, 1) = "m" Then sNewField = sNewField & "м" ElseIf Mid(sField, i, 1) = "n" Then If Mid(sField, i+1, 1) = "j" Then sNewField = sNewField & "њ" i = i + 1 Else sNewField = sNewField & "н" End If ElseIf Mid(sField, i, 1) = "o" Then sNewField = sNewField & "о" ElseIf Mid(sField, i, 1) = "p" Then sNewField = sNewField & "п" ElseIf Mid(sField, i, 1) = "r" Then sNewField = sNewField & "р" ElseIf Mid(sField, i, 1) = "s" Then If Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "ш" i = i + 1 Else sNewField = sNewField & "с" End If ElseIf Mid(sField, i, 1) = "t" Then sNewField = sNewField & "т" ElseIf Mid(sField, i, 1) = "u" Then sNewField = sNewField & "у" ElseIf Mid(sField, i, 1) = "f" Then sNewField = sNewField & "ф" ElseIf Mid(sField, i, 1) = "h" Then sNewField = sNewField & "х" ElseIf Mid(sField, i, 1) = "c" Then 'If Mid(sField, i+1, 1) = Chr(226) Then ' sNewField = sNewField & "ћ" ' i = i + 1 If Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "ч" i = i + 1 Else sNewField = sNewField & "ц" End If Else sNewField = sNewField & "∎" End If i = i + 1 End If Loop While i <= Len(sField) TransMacedonian = sNewField End Function '################################################################################ Function TransRusyn(sField As String) As String Dim i As Long Dim sNewField As String sNewField = "" i = 6 Do If Mid(sField, i, 1) = Chr(223) Then sNewField = sNewField & "ǂ" & Mid(sField, i+1, 1) i = i + 2 Else If InStr(" 1234567890!@#$%^&*()[]{}';:.,/?\=+-" & Chr(34), Mid(sField, i, 1)) Then sNewField = sNewField & Mid(sField, i, 1) ElseIf Mid(sField, i, 1) = Chr(183) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ъ" Else sNewField = sNewField & "ъ" End If ElseIf Mid(sField, i, 1) = Chr(167) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ь" Else sNewField = sNewField & "ь" End If ElseIf Mid(sField, i, 1) = "A" Then sNewField = sNewField & "А" ElseIf Mid(sField, i, 1) = "B" Then sNewField = sNewField & "Б" ElseIf Mid(sField, i, 1) = "V" Then sNewField = sNewField & "В" ElseIf Mid(sField, i, 1) = "H" Then sNewField = sNewField & "Г" ElseIf Mid(sField, i, 1) = "G" Then sNewField = sNewField & "Ґ" ElseIf Mid(sField, i, 1) = "D" Then sNewField = sNewField & "Д" ElseIf Mid(sField, i, 1) = "E" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "Э" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(232) Then sNewField = sNewField & "Ё" 'alternatively, Ё i = i + 1 Else sNewField = sNewField & "Е" End If ElseIf Mid(sField, i, 1) = "Z" Then If Mid(sField, i+1, 3) = Chr(235) & "H" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) Then sNewField = sNewField & "Ж" i = i + 3 Else sNewField = sNewField & "З" End If ElseIf Mid(sField, i, 1) = "Y" Then If Mid(sField, i+1, 1) = Chr(227) Then sNewField = sNewField & "Ы" i = i + 1 Else sNewField = sNewField & "И" End If ElseIf Mid(sField, i, 1) = "I" Then If Mid(sField, i+1, 1) = Chr(232) Then sNewField = sNewField & "Ї" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "Й" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(227) Then sNewField = sNewField & "Ҍ" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "A" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "Я" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "E" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "e" & Chr(236) Then sNewField = sNewField & "Є" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "U" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then sNewField = sNewField & "Ю" i = i + 3 Else sNewField = sNewField & "І" End If ElseIf Mid(sField, i, 1) = "K" Then If Mid(sField, i+1, 3) = Chr(235) & "H" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) Then sNewField = sNewField & "Х" i = i + 3 Else sNewField = sNewField & "К" End If ElseIf Mid(sField, i, 1) = "L" Then sNewField = sNewField & "Л" ElseIf Mid(sField, i, 1) = "M" Then sNewField = sNewField & "М" ElseIf Mid(sField, i, 1) = "N" Then sNewField = sNewField & "Н" ElseIf Mid(sField, i, 1) = "O" Then If Mid(sField, i+1, 1) = Chr(227) Then sNewField = sNewField & "О̂" i = i + 1 Else sNewField = sNewField & "О" End If ElseIf Mid(sField, i, 1) = "P" Then sNewField = sNewField & "П" ElseIf Mid(sField, i, 1) = "R" Then sNewField = sNewField & "Р" ElseIf Mid(sField, i, 1) = "S" Then If LCase(Mid(sField, i+1, 3)) = "hch" Then sNewField = sNewField & "Щ" i = i + 3 ElseIf LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Ш" i = i + 1 Else sNewField = sNewField & "С" End If ElseIf Mid(sField, i, 1) = "T" Then If Mid(sField, i+1, 3) = Chr(235) & "S" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "Ц" i = i + 3 Else sNewField = sNewField & "Т" End If ElseIf Mid(sField, i, 1) = "U" Then sNewField = sNewField & "У" ElseIf Mid(sField, i, 1) = "F" Then sNewField = sNewField & "Ф" ElseIf Mid(sField, i, 1) = "C" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Ч" i = i + 1 Else sNewField = sNewField & "∎" End If ElseIf Mid(sField, i, 1) = "X" Then sNewField = sNewField & "Х" ElseIf Mid(sField, i, 1) = "a" Then sNewField = sNewField & "а" ElseIf Mid(sField, i, 1) = "b" Then sNewField = sNewField & "б" ElseIf Mid(sField, i, 1) = "v" Then sNewField = sNewField & "в" ElseIf Mid(sField, i, 1) = "h" Then sNewField = sNewField & "г" ElseIf Mid(sField, i, 1) = "g" Then sNewField = sNewField & "ґ" ElseIf Mid(sField, i, 1) = "d" Then sNewField = sNewField & "д" ElseIf Mid(sField, i, 1) = "e" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "э" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(232) Then sNewField = sNewField & "ё" 'alternatively, ё i = i + 1 Else sNewField = sNewField & "е" End If ElseIf Mid(sField, i, 1) = "z" Then If Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) Then sNewField = sNewField & "ж" i = i + 3 Else sNewField = sNewField & "з" End If ElseIf Mid(sField, i, 1) = "y" Then If Mid(sField, i+1, 1) = Chr(227) Then sNewField = sNewField & "ы" i = i + 1 Else sNewField = sNewField & "и" End If ElseIf Mid(sField, i, 1) = "i" Then If Mid(sField, i+1, 1) = Chr(232) Then sNewField = sNewField & "ї" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "й" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(227) Then sNewField = sNewField & "ҍ" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "я" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "e" & Chr(236) Then sNewField = sNewField & "є" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then sNewField = sNewField & "ю" i = i + 3 Else sNewField = sNewField & "і" End If ElseIf Mid(sField, i, 1) = "k" Then If Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) Then sNewField = sNewField & "х" i = i + 3 Else sNewField = sNewField & "к" End If ElseIf Mid(sField, i, 1) = "l" Then sNewField = sNewField & "л" ElseIf Mid(sField, i, 1) = "m" Then sNewField = sNewField & "м" ElseIf Mid(sField, i, 1) = "n" Then sNewField = sNewField & "н" ElseIf Mid(sField, i, 1) = "o" Then If Mid(sField, i+1, 1) = Chr(227) Then sNewField = sNewField & "о̂" i = i + 1 Else sNewField = sNewField & "о" End If ElseIf Mid(sField, i, 1) = "p" Then sNewField = sNewField & "п" ElseIf Mid(sField, i, 1) = "r" Then sNewField = sNewField & "р" ElseIf Mid(sField, i, 1) = "s" Then If Mid(sField, i+1, 3) = "hch" Then sNewField = sNewField & "щ" i = i + 3 ElseIf Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "ш" i = i + 1 Else sNewField = sNewField & "с" End If ElseIf Mid(sField, i, 1) = "t" Then If Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "ц" i = i + 3 Else sNewField = sNewField & "т" End If ElseIf Mid(sField, i, 1) = "u" Then sNewField = sNewField & "у" ElseIf Mid(sField, i, 1) = "f" Then sNewField = sNewField & "ф" ElseIf LCase(Mid(sField, i, 2)) = "ch" Then sNewField = sNewField & "ч" i = i + 1 Else sNewField = sNewField & "∎" End If i = i + 1 End If Loop While i <= Len(sField) TransRusyn = sNewField End Function '################################################################################ Function TransSlavic(sField As String) As String Dim i As Long Dim sNewField As String sNewField = "" i = 6 Do If Mid(sField, i, 1) = Chr(223) Then sNewField = sNewField & "ǂ" & Mid(sField, i+1, 1) i = i + 2 Else If InStr(" !@#$%^&*()[]{}';:.,/?\=+-" & Chr(34), Mid(sField, i, 1)) Then sNewField = sNewField & Mid(sField, i, 1) ElseIf InStr("1234567890", Mid(sField, i, 1)) Then sNewField = sNewField & Mid(sField, i, 1) '### Note: Add in logic to use letters as numerals, with the number signs ElseIf Mid(sField, i, 1) = Chr(183) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ъ" Else sNewField = sNewField & "ъ" End If ElseIf Mid(sField, i, 1) = Chr(167) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ь" Else sNewField = sNewField & "ь" End If ElseIf Mid(sField, i, 1) = "A" Then sNewField = sNewField & "А" ElseIf Mid(sField, i, 1) = "B" Then sNewField = sNewField & "Б" ElseIf Mid(sField, i, 1) = "V" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "Ѵ" i = i + 1 Else sNewField = sNewField & "В" End If ElseIf Mid(sField, i, 1) = "G" Then If Mid(sField, i+1, 1) = Chr(226) Then sNewField = sNewField & "Ћ" i = i + 1 Else sNewField = sNewField & "Г" End If ElseIf Mid(sField, i, 1) = "D" Then sNewField = sNewField & "Д" ElseIf Mid(sField, i, 1) = "E" Then If Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "Е" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "Ѣ" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(241) Then sNewField = sNewField & "Ѧ" i = i + 1 Else sNewField = sNewField & "Є" End If ElseIf Mid(sField, i, 1) = "Z" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Ж" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "Ѕ" i = i + 1 Else sNewField = sNewField & "З" End If ElseIf Mid(sField, i, 1) = "I" Then If Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "Й" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "І" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "A" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "Ꙗ" 'Character not provided for in MARC-8 (∎); in Unicode is Ꙗ i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "E" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "e" & Chr(236) Then sNewField = sNewField & "Ѥ" i = i + 3 ElseIf Mid(sField, i+1, 4) = Chr(235) & "E" & Chr(241) & Chr(236) Or Mid(sField, i+1, 4) = Chr(235) & "e" & Chr(241) & Chr(236) Then sNewField = sNewField & "Ѩ" i = i + 4 ElseIf Mid(sField, i+1, 4) = Chr(235) & "O" & Chr(241) & Chr(236) Or Mid(sField, i+1, 4) = Chr(235) & "o" & Chr(236) Then sNewField = sNewField & "Ѭ" i = i + 4 ElseIf Mid(sField, i+1, 3) = Chr(235) & "U" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then sNewField = sNewField & "Ю" i = i + 3 Else sNewField = sNewField & "И" End If ElseIf Mid(sField, i, 1) = "K" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Х" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "S" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "Ѯ" i = i + 3 Else sNewField = sNewField & "К" End If ElseIf Mid(sField, i, 1) = "L" Then sNewField = sNewField & "Л" ElseIf Mid(sField, i, 1) = "M" Then sNewField = sNewField & "М" ElseIf Mid(sField, i, 1) = "N" Then sNewField = sNewField & "Н" ElseIf Mid(sField, i, 1) = "O" Then If Mid(sField, i+1, 1) = Chr(241) Then sNewField = sNewField & "Ѫ" i = i + 1 ElseIf Mid(sField, i+1, 4) = Chr(229) & Chr(235) & "T" & Chr(236) Or Mid(sField, i+1, 4) = Chr(229) & Chr(235) & "t" & Chr(236) Then sNewField = sNewField & "Ѿ" 'Character not provided for in MARC-8; in Unicode is "Ѿ" i = i + 4 ElseIf Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "Ѡ" 'Character not provided for in MARC-8; in Unicode is "Ѡ" i = i + 1 Else sNewField = sNewField & "О" End If ElseIf Mid(sField, i, 1) = "P" Then If Mid(sField, i+1, 3) = Chr(235) & "S" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "Ѱ" i = i + 3 Else sNewField = sNewField & "П" End If ElseIf Mid(sField, i, 1) = "R" Then sNewField = sNewField & "Р" ElseIf Mid(sField, i, 1) = "S" Then If Mid(sField, i+1, 2) = "ht" Then sNewField = sNewField & "Щ" i = i + 2 ElseIf Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "Ш" i = i + 1 Else sNewField = sNewField & "С" End If ElseIf Mid(sField, i, 1) = "T" Then If Mid(sField, i+1, 3) = Chr(235) & "S" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "S" & Chr(236) Then sNewField = sNewField & "Ц" i = i + 3 Else sNewField = sNewField & "Т" End If ElseIf Mid(sField, i, 1) = "U" Then If Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "Ꙋ" 'Character not provided for in MARC-8 (∎); in Unicode is Ꙋ i = i + 1 Else sNewField = sNewField & "Ѹ" 'Character not provided for in MARC-8 (∎); in Unicode is Ѹ End If ElseIf Mid(sField, i, 1) = "F" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "Ѳ" i = i + 1 Else sNewField = sNewField & "Ф" End If ElseIf Mid(sField, i, 1) = "C" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Ч" i = i + 1 Else sNewField = sNewField & "∎" End If ElseIf Mid(sField, i, 1) = "Y" Then If Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "Ы" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "Ѷ" 'Character not provided for in MARC-8; in Unicode is Ѷ or Ѷ but could be approximated with Ѵ̋ i = i + 1 Else sNewField = sNewField & "Ꙑ" 'Character not provided for in MARC-8 (∎); in Unicode is Ꙑ End If ElseIf Mid(sField, i, 1) = "X" Then sNewField = sNewField & "Х" ElseIf Mid(sField, i, 1) = "a" Then sNewField = sNewField & "а" ElseIf Mid(sField, i, 1) = "b" Then sNewField = sNewField & "б" ElseIf Mid(sField, i, 1) = "v" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "ѵ" i = i + 1 Else sNewField = sNewField & "в" End If ElseIf Mid(sField, i, 1) = "g" Then If Mid(sField, i+1, 1) = Chr(226) Then sNewField = sNewField & "ћ" i = i + 1 Else sNewField = sNewField & "г" End If ElseIf Mid(sField, i, 1) = "d" Then sNewField = sNewField & "д" ElseIf Mid(sField, i, 1) = "e" Then If Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "е" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "ѣ" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(241) Then sNewField = sNewField & "ѧ" i = i + 1 Else sNewField = sNewField & "є" End If ElseIf Mid(sField, i, 1) = "z" Then If Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "ж" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "ѕ" i = i + 1 Else sNewField = sNewField & "з" End If ElseIf Mid(sField, i, 1) = "i" Then If Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "й" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "і" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "ꙗ" 'Character not provided for in MARC-8 (∎); in Unicode is ꙗ i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "e" & Chr(236) Then sNewField = sNewField & "ѥ" i = i + 3 ElseIf Mid(sField, i+1, 4) = Chr(235) & "e" & Chr(241) & Chr(236) Then sNewField = sNewField & "ѩ" i = i + 4 ElseIf Mid(sField, i+1, 4) = Chr(235) & "o" & Chr(241) & Chr(236) Then sNewField = sNewField & "ѭ" i = i + 4 ElseIf Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then sNewField = sNewField & "ю" i = i + 3 Else sNewField = sNewField & "и" End If ElseIf Mid(sField, i, 1) = "k" Then If Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "х" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "ѯ" i = i + 3 Else sNewField = sNewField & "к" End If ElseIf Mid(sField, i, 1) = "l" Then sNewField = sNewField & "л" ElseIf Mid(sField, i, 1) = "m" Then sNewField = sNewField & "м" ElseIf Mid(sField, i, 1) = "n" Then sNewField = sNewField & "н" ElseIf Mid(sField, i, 1) = "o" Then If Mid(sField, i+1, 1) = Chr(241) Then sNewField = sNewField & "ѫ" i = i + 1 ElseIf Mid(sField, i+1, 4) = Chr(229) & Chr(235) & "t" & Chr(236) Then sNewField = sNewField & "ѿ" 'Character not provided for in MARC-8; in Unicode is "ѿ" i = i + 4 ElseIf Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "ѡ" 'Character not provided for in MARC-8; in Unicode is "ѡ" i = i + 1 Else sNewField = sNewField & "о" End If ElseIf Mid(sField, i, 1) = "p" Then If Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "ѱ" i = i + 3 Else sNewField = sNewField & "п" End If ElseIf Mid(sField, i, 1) = "r" Then sNewField = sNewField & "р" ElseIf Mid(sField, i, 1) = "s" Then If Mid(sField, i+1, 2) = "ht" Then sNewField = sNewField & "щ" i = i + 2 ElseIf Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "ш" i = i + 1 Else sNewField = sNewField & "с" End If ElseIf Mid(sField, i, 1) = "t" Then If Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "ц" i = i + 3 Else sNewField = sNewField & "т" End If ElseIf Mid(sField, i, 1) = "u" Then If Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "ꙋ" 'Character not provided for in MARC-8 (∎); in Unicode is ꙋ i = i + 1 Else sNewField = sNewField & "ѹ" 'Character not provided for in MARC-8 (∎); in Unicode is ѹ End If ElseIf Mid(sField, i, 1) = "f" Then If Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "ѳ" i = i + 1 Else sNewField = sNewField & "ф" End If ElseIf LCase(Mid(sField, i, 2)) = "ch" Then sNewField = sNewField & "ч" i = i + 1 ElseIf Mid(sField, i, 1) = "y" Then If Mid(sField, i+1, 1) = Chr(229) Then sNewField = sNewField & "ы" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(231) Then sNewField = sNewField & "ѷ" 'Character not provided for in MARC-8; in Unicode is ѷ or ѷ but could be approximated with ѵ̋ i = i + 1 Else sNewField = sNewField & "ꙑ" 'Character not provided for in MARC-8 (∎); in Unicode is ꙑ End If Else sNewField = sNewField & "∎" End If i = i + 1 End If Loop While i <= Len(sField) TransSlavic = sNewField End Function '################################################################################ Function TransSerbian(sField As String) As String Dim i As Long Dim sNewField As String sNewField = "" i = 6 Do If Mid(sField, i, 1) = Chr(223) Then sNewField = sNewField & "ǂ" & Mid(sField, i+1, 1) i = i + 2 Else If InStr(" 1234567890!@#$%^&*()[]{}';:.,/?\=+-" & Chr(34), Mid(sField, i, 1)) Then sNewField = sNewField & Mid(sField, i, 1) ElseIf Mid(sField, i, 1) = "A" Then sNewField = sNewField & "А" ElseIf Mid(sField, i, 1) = "B" Then sNewField = sNewField & "Б" ElseIf Mid(sField, i, 1) = "V" Then sNewField = sNewField & "В" ElseIf Mid(sField, i, 1) = "G" Then If Mid(sField, i+1, 1) = Chr(226) Then sNewField = sNewField & "Ѓ" i = i + 1 Else sNewField = sNewField & "Г" End If ElseIf Mid(sField, i, 1) = "D" Then If LCase(Mid(sField, i+1, 1)) & Mid(sField, i+2, 1) = "z" & Chr(233) Then sNewField = sNewField & "Џ" i = i + 2 'ElseIf LCase(Mid(sField, i+1, 1)) = "z" Then ' sNewField = sNewField & "Ѕ" ' i = i + 1 Else sNewField = sNewField & "Д" End If ElseIf Mid(sField, i, 1) = Chr(163) Then sNewField = sNewField & "Ђ" ElseIf Mid(sField, i, 1) = "E" Then sNewField = sNewField & "Е" ElseIf Mid(sField, i, 1) = "Z" Then If Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "Ж" i = i + 1 Else sNewField = sNewField & "З" End If ElseIf Mid(sField, i, 1) = "I" Then sNewField = sNewField & "И" ElseIf Mid(sField, i, 1) = "J" Then sNewField = sNewField & "Ј" ElseIf Mid(sField, i, 1) = "K" Then 'If Mid(sField, i+1, 1) = Chr(226) Then ' sNewField = sNewField & "Ќ" ' i = i + 1 'Else sNewField = sNewField & "К" 'End If ElseIf Mid(sField, i, 1) = "L" Then If LCase(Mid(sField, i+1, 1)) = "j" Then sNewField = sNewField & "Љ" i = i + 1 Else sNewField = sNewField & "Л" End If ElseIf Mid(sField, i, 1) = "M" Then sNewField = sNewField & "М" ElseIf Mid(sField, i, 1) = "N" Then If LCase(Mid(sField, i+1, 1)) = "j" Then sNewField = sNewField & "Њ" i = i + 1 Else sNewField = sNewField & "Н" End If ElseIf Mid(sField, i, 1) = "O" Then sNewField = sNewField & "О" ElseIf Mid(sField, i, 1) = "P" Then sNewField = sNewField & "П" ElseIf Mid(sField, i, 1) = "R" Then sNewField = sNewField & "Р" ElseIf Mid(sField, i, 1) = "S" Then If Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "Ш" i = i + 1 Else sNewField = sNewField & "С" End If ElseIf Mid(sField, i, 1) = "T" Then sNewField = sNewField & "Т" ElseIf Mid(sField, i, 1) = "U" Then sNewField = sNewField & "У" ElseIf Mid(sField, i, 1) = "F" Then sNewField = sNewField & "Ф" ElseIf Mid(sField, i, 1) = "H" Then sNewField = sNewField & "Х" ElseIf Mid(sField, i, 1) = "C" Then If Mid(sField, i+1, 1) = Chr(226) Then sNewField = sNewField & "Ћ" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "Ч" i = i + 1 Else sNewField = sNewField & "Ц" End If ElseIf Mid(sField, i, 1) = "a" Then sNewField = sNewField & "а" ElseIf Mid(sField, i, 1) = "b" Then sNewField = sNewField & "б" ElseIf Mid(sField, i, 1) = "v" Then sNewField = sNewField & "в" ElseIf Mid(sField, i, 1) = "g" Then If Mid(sField, i+1, 1) = Chr(226) Then sNewField = sNewField & "ѓ" i = i + 1 Else sNewField = sNewField & "г" End If ElseIf Mid(sField, i, 1) = "d" Then If Mid(sField, i+1, 2) = "z" & Chr(233) Then sNewField = sNewField & "џ" i = i + 2 'ElseIf Mid(sField, i+1, 1) = "z" Then ' sNewField = sNewField & "ѕ" ' i = i + 1 Else sNewField = sNewField & "д" End If ElseIf Mid(sField, i, 1) = Chr(179) Then sNewField = sNewField & "ђ" ElseIf Mid(sField, i, 1) = "e" Then sNewField = sNewField & "е" ElseIf Mid(sField, i, 1) = "z" Then If Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "ж" i = i + 1 Else sNewField = sNewField & "з" End If ElseIf Mid(sField, i, 1) = "i" Then sNewField = sNewField & "и" ElseIf Mid(sField, i, 1) = "j" Then sNewField = sNewField & "ј" ElseIf Mid(sField, i, 1) = "k" Then 'If Mid(sField, i+1, 1) = Chr(226) Then ' sNewField = sNewField & "ќ" ' i = i + 1 'Else sNewField = sNewField & "к" 'End If ElseIf Mid(sField, i, 1) = "l" Then If Mid(sField, i+1, 1) = "j" Then sNewField = sNewField & "љ" i = i + 1 Else sNewField = sNewField & "л" End If ElseIf Mid(sField, i, 1) = "m" Then sNewField = sNewField & "м" ElseIf Mid(sField, i, 1) = "n" Then If Mid(sField, i+1, 1) = "j" Then sNewField = sNewField & "њ" i = i + 1 Else sNewField = sNewField & "н" End If ElseIf Mid(sField, i, 1) = "o" Then sNewField = sNewField & "о" ElseIf Mid(sField, i, 1) = "p" Then sNewField = sNewField & "п" ElseIf Mid(sField, i, 1) = "r" Then sNewField = sNewField & "р" ElseIf Mid(sField, i, 1) = "s" Then If Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "ш" i = i + 1 Else sNewField = sNewField & "с" End If ElseIf Mid(sField, i, 1) = "t" Then sNewField = sNewField & "т" ElseIf Mid(sField, i, 1) = "u" Then sNewField = sNewField & "у" ElseIf Mid(sField, i, 1) = "f" Then sNewField = sNewField & "ф" ElseIf Mid(sField, i, 1) = "h" Then sNewField = sNewField & "х" ElseIf Mid(sField, i, 1) = "c" Then If Mid(sField, i+1, 1) = Chr(226) Then sNewField = sNewField & "ћ" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(233) Then sNewField = sNewField & "ч" i = i + 1 Else sNewField = sNewField & "ц" End If Else sNewField = sNewField & "∎" End If i = i + 1 End If Loop While i <= Len(sField) TransSerbian = sNewField End Function '################################################################################ Function TransUkranian(sField As String) As String Dim i As Long Dim sNewField As String sNewField = "" i = 6 Do If Mid(sField, i, 1) = Chr(223) Then sNewField = sNewField & "ǂ" & Mid(sField, i+1, 1) i = i + 2 Else If InStr(" 1234567890!@#$%^&*()[]{}';:.,/?\=+-" & Chr(34), Mid(sField, i, 1)) Then sNewField = sNewField & Mid(sField, i, 1) ElseIf Mid(sField, i, 1) = Chr(183) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ъ" Else sNewField = sNewField & "ъ" End If ElseIf Mid(sField, i, 1) = Chr(167) Then If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ь" Else sNewField = sNewField & "ь" End If ElseIf Mid(sField, i, 1) = "A" Then sNewField = sNewField & "А" ElseIf Mid(sField, i, 1) = "B" Then sNewField = sNewField & "Б" ElseIf Mid(sField, i, 1) = "V" Then sNewField = sNewField & "В" ElseIf Mid(sField, i, 1) = "H" Then sNewField = sNewField & "Г" ElseIf Mid(sField, i, 1) = "G" Then sNewField = sNewField & "Ґ" ElseIf Mid(sField, i, 1) = "D" Then sNewField = sNewField & "Д" ElseIf Mid(sField, i, 1) = "E" Then sNewField = sNewField & "Е" ElseIf Mid(sField, i, 1) = "Z" Then If Mid(sField, i+1, 3) = Chr(235) & "H" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) Then sNewField = sNewField & "Ж" i = i + 3 Else sNewField = sNewField & "З" End If ElseIf Mid(sField, i, 1) = "Y" Then sNewField = sNewField & "И" ElseIf Mid(sField, i, 1) = "I" Then If Mid(sField, i+1, 1) = Chr(232) Then sNewField = sNewField & "Ї" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "Й" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "A" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "Я" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "E" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "e" & Chr(236) Then sNewField = sNewField & "Є" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "U" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then sNewField = sNewField & "Ю" i = i + 3 Else sNewField = sNewField & "І" End If ElseIf Mid(sField, i, 1) = "K" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Х" i = i + 1 Else sNewField = sNewField & "К" End If ElseIf Mid(sField, i, 1) = "L" Then sNewField = sNewField & "Л" ElseIf Mid(sField, i, 1) = "M" Then sNewField = sNewField & "М" ElseIf Mid(sField, i, 1) = "N" Then sNewField = sNewField & "Н" ElseIf Mid(sField, i, 1) = "O" Then sNewField = sNewField & "О" ElseIf Mid(sField, i, 1) = "P" Then sNewField = sNewField & "П" ElseIf Mid(sField, i, 1) = "R" Then sNewField = sNewField & "Р" ElseIf Mid(sField, i, 1) = "S" Then If LCase(Mid(sField, i+1, 3)) = "hch" Then sNewField = sNewField & "Щ" i = i + 3 ElseIf LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Ш" i = i + 1 Else sNewField = sNewField & "С" End If ElseIf Mid(sField, i, 1) = "T" Then If Mid(sField, i+1, 3) = Chr(235) & "S" & Chr(236) Or Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "Ц" i = i + 3 Else sNewField = sNewField & "Т" End If ElseIf Mid(sField, i, 1) = "U" Then sNewField = sNewField & "У" ElseIf Mid(sField, i, 1) = "F" Then sNewField = sNewField & "Ф" ElseIf Mid(sField, i, 1) = "C" Then If LCase(Mid(sField, i+1, 1)) = "h" Then sNewField = sNewField & "Ч" i = i + 1 Else sNewField = sNewField & "∎" End If ElseIf Mid(sField, i, 1) = "X" Then sNewField = sNewField & "Х" ElseIf Mid(sField, i, 1) = "a" Then sNewField = sNewField & "а" ElseIf Mid(sField, i, 1) = "b" Then sNewField = sNewField & "б" ElseIf Mid(sField, i, 1) = "v" Then sNewField = sNewField & "в" ElseIf Mid(sField, i, 1) = "h" Then sNewField = sNewField & "г" ElseIf Mid(sField, i, 1) = "g" Then sNewField = sNewField & "ґ" ElseIf Mid(sField, i, 1) = "d" Then sNewField = sNewField & "д" ElseIf Mid(sField, i, 1) = "e" Then sNewField = sNewField & "е" ElseIf Mid(sField, i, 1) = "z" Then If Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) Then sNewField = sNewField & "ж" i = i + 3 Else sNewField = sNewField & "з" End If ElseIf Mid(sField, i, 1) = "y" Then sNewField = sNewField & "и" ElseIf Mid(sField, i, 1) = "i" Then If Mid(sField, i+1, 1) = Chr(232) Then sNewField = sNewField & "ї" i = i + 1 ElseIf Mid(sField, i+1, 1) = Chr(230) Then sNewField = sNewField & "й" i = i + 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then sNewField = sNewField & "я" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "e" & Chr(236) Then sNewField = sNewField & "є" i = i + 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then sNewField = sNewField & "ю" i = i + 3 Else sNewField = sNewField & "і" End If ElseIf Mid(sField, i, 1) = "k" Then If Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "х" i = i + 1 Else sNewField = sNewField & "к" End If ElseIf Mid(sField, i, 1) = "l" Then sNewField = sNewField & "л" ElseIf Mid(sField, i, 1) = "m" Then sNewField = sNewField & "м" ElseIf Mid(sField, i, 1) = "n" Then sNewField = sNewField & "н" ElseIf Mid(sField, i, 1) = "o" Then sNewField = sNewField & "о" ElseIf Mid(sField, i, 1) = "p" Then sNewField = sNewField & "п" ElseIf Mid(sField, i, 1) = "r" Then sNewField = sNewField & "р" ElseIf Mid(sField, i, 1) = "s" Then If Mid(sField, i+1, 3) = "hch" Then sNewField = sNewField & "щ" i = i + 3 ElseIf Mid(sField, i+1, 1) = "h" Then sNewField = sNewField & "ш" i = i + 1 Else sNewField = sNewField & "с" End If ElseIf Mid(sField, i, 1) = "t" Then If Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then sNewField = sNewField & "ц" i = i + 3 Else sNewField = sNewField & "т" End If ElseIf Mid(sField, i, 1) = "u" Then sNewField = sNewField & "у" ElseIf Mid(sField, i, 1) = "f" Then sNewField = sNewField & "ф" ElseIf LCase(Mid(sField, i, 2)) = "ch" Then sNewField = sNewField & "ч" i = i + 1 Else sNewField = sNewField & "∎" End If i = i + 1 End If Loop While i <= Len(sField) TransUkranian = sNewField End Function '################################################################################ Function TransNonSlavic(sField As String, LangCode As Integer) As String Dim i As Long Dim sFindLangCode As String Dim sNewField As String sNewField = "" sFindLangCode = "," & CStr(LangCode) & "," PositionShift = 0 i = 6 Do If Mid(sField, i, 1) = Chr(223) Then sNewField = sNewField & "ǂ" & Mid(sField, i+1, 1) i = i + 2 Else 'Dim t : t = Mid(sField, i, 1) If Mid(sField, i, 2) = "'E" And InStr(",56,", sFindLangCode) Then sNewField = sNewField & "Ә" 'Character not provided for in MARC-8 (∎); in Unicode is Ә or Әʻ i = i + 1 ElseIf Mid(sField, i, 2) = "'e" And InStr(",56,", sFindLangCode) Then sNewField = sNewField & "ә" 'Character not provided for in MARC-8; (∎) in Unicode is ә or әʻ i = i + 1 ElseIf InStr(" 1234567890!@#$%^&*()[]{}';:.,/?\=+-" & Chr(34), Mid(sField, i, 1)) Then sNewField = sNewField & Mid(sField, i, 1) ElseIf Mid(sField, i, 1) = Chr(183) Then 'Tverdyi znak (hard sign/double prime) If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ъ" Else sNewField = sNewField & "ъ" End If ElseIf Mid(sField, i, 1) = Chr(167) Then 'Miyagkii znak (soft sign/prime) If (Mid(sField, i-1, 1) Like "[A-Z]" Or (Mid(sField, i-1, 1) Like "[!A-Za-z]" And Mid(sField, i-2, 1) Like "[A-Z]")) And Not (Len(sField) > i And Mid(sField, i+1, 1) Like "[a-z]") Then sNewField = sNewField & "Ь" Else sNewField = sNewField & "ь" End If ElseIf Mid(sField, i, 1) = Chr(165) Then 'AE-ligature, uppercase If InStr(",20,62,86,87,", sFindLangCode) Then sNewField = sNewField & "Ӕ" 'Character not provided for in MARC-8; in Unicode is Ӕ Else sNewField = sNewField & "∎" End If ElseIf Mid(sField, i, 1) = Chr(181) Then 'ae-ligature, lowercase If InStr(",20,62,86,87,", sFindLangCode) Then sNewField = sNewField & "ӕ" 'Character not provided for in MARC-8; in Unicode is ӕ Else sNewField = sNewField & "∎" End If ElseIf Mid(sField, i, 1) = Chr(161) Then 'L with slash, uppercase If InStr(",56,", sFindLangCode) Then sNewField = sNewField & "Л̂" Else sNewField = sNewField & "∎" End If ElseIf Mid(sField, i, 1) = Chr(177) Then 'L with slash, lowercase If InStr(",56,", sFindLangCode) Then sNewField = sNewField & "л̂" Else sNewField = sNewField & "∎" End If ElseIf Mid(sField, i, 1) = Chr(176) Then 'Ayn If InStr(",86,", sFindLangCode) Then sNewField = sNewField & "ʻ" Else sNewField = sNewField & "∎" End If ElseIf Mid(sField, i, 1) = "A" Then sNewField = sNewField & TransNonSlavic_A(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "B" Then sNewField = sNewField & "Б" ElseIf Mid(sField, i, 1) = "V" Then sNewField = sNewField & "В" ElseIf Mid(sField, i, 1) = "G" Then sNewField = sNewField & TransNonSlavic_G(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "D" Then sNewField = sNewField & TransNonSlavic_D(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "E" Then sNewField = sNewField & TransNonSlavic_E(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "Z" Then sNewField = sNewField & TransNonSlavic_Z(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "I" Then sNewField = sNewField & TransNonSlavic_I(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "K" Then sNewField = sNewField & TransNonSlavic_K(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "L" Then sNewField = sNewField & TransNonSlavic_L(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "M" Then sNewField = sNewField & "М" ElseIf Mid(sField, i, 1) = "N" Then sNewField = sNewField & TransNonSlavic_N(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "O" Then sNewField = sNewField & TransNonSlavic_O(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "P" Then sNewField = sNewField & TransNonSlavic_P(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "R" Then sNewField = sNewField & TransNonSlavic_R(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "S" Then sNewField = sNewField & TransNonSlavic_S(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "T" Then sNewField = sNewField & TransNonSlavic_T(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "U" Then sNewField = sNewField & TransNonSlavic_U(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "F" Then sNewField = sNewField & TransNonSlavic_F(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "C" Then sNewField = sNewField & TransNonSlavic_C(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "Y" Then sNewField = sNewField & TransNonSlavic_Y(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "X" Then sNewField = sNewField & TransNonSlavic_X(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "H" Then sNewField = sNewField & TransNonSlavic_H(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "J" Then sNewField = sNewField & TransNonSlavic_J(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "Q" Then sNewField = sNewField & TransNonSlavic_Q(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "W" Then sNewField = sNewField & TransNonSlavic_W(sField, i, sFindLangCode, "U") i = i + PositionShift ElseIf Mid(sField, i, 1) = "a" Then sNewField = sNewField & TransNonSlavic_A(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "b" Then sNewField = sNewField & "б" ElseIf Mid(sField, i, 1) = "v" Then sNewField = sNewField & "в" ElseIf Mid(sField, i, 1) = "g" Then sNewField = sNewField & TransNonSlavic_G(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "d" Then sNewField = sNewField & TransNonSlavic_D(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "e" Then sNewField = sNewField & TransNonSlavic_E(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "z" Then sNewField = sNewField & TransNonSlavic_Z(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "i" Then sNewField = sNewField & TransNonSlavic_I(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "k" Then sNewField = sNewField & TransNonSlavic_K(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "l" Then sNewField = sNewField & TransNonSlavic_L(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "m" Then sNewField = sNewField & "м" ElseIf Mid(sField, i, 1) = "n" Then sNewField = sNewField & TransNonSlavic_N(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "o" Then sNewField = sNewField & TransNonSlavic_O(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "p" Then sNewField = sNewField & TransNonSlavic_P(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "r" Then sNewField = sNewField & TransNonSlavic_R(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "s" Then sNewField = sNewField & TransNonSlavic_S(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "t" Then sNewField = sNewField & TransNonSlavic_T(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "u" Then sNewField = sNewField & TransNonSlavic_U(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "f" Then sNewField = sNewField & TransNonSlavic_F(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "c" Then sNewField = sNewField & TransNonSlavic_C(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "y" Then sNewField = sNewField & TransNonSlavic_Y(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "x" Then sNewField = sNewField & TransNonSlavic_X(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "h" Then sNewField = sNewField & TransNonSlavic_H(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "j" Then sNewField = sNewField & TransNonSlavic_J(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "q" Then sNewField = sNewField & TransNonSlavic_Q(sField, i, sFindLangCode, "L") i = i + PositionShift ElseIf Mid(sField, i, 1) = "w" Then sNewField = sNewField & TransNonSlavic_W(sField, i, sFindLangCode, "L") i = i + PositionShift Else sNewField = sNewField & "∎" End If i = i + 1 End If Loop While i <= Len(sField) TransNonSlavic = sNewField End Function '#################### Function TransNonSlavic_A(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 1) = Chr(230) Then If InStr(",4,9,11,22,34,38,40,45,47,48,97,100,105,", sFindLangCode) Then TransNonSlavic_A = "Ә" 'Character not provided for in MARC-8; in Unicode is Ә ElseIf InStr(",18,19,", sFindLangCode) Then TransNonSlavic_A = "Ӑ" ElseIf InStr(",28,67,70,71,99,", sFindLangCode) Then TransNonSlavic_A = "Ӓ" ElseIf InStr(",79,", sFindLangCode) Then TransNonSlavic_A = "Ӭ" Else TransNonSlavic_A = "А∎" End If PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(232) And InStr(",45,47,48,", sFindLangCode) Then TransNonSlavic_A = "Ӓ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",33,", sFindLangCode) Then TransNonSlavic_A = "Ӓ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",45,48,", sFindLangCode) Then TransNonSlavic_A = "Ӛ" 'Character not provided for in MARC-8; in Unicode is Ӛ or Ӛ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",78,", sFindLangCode) Then TransNonSlavic_A = "[Yae]" 'Character not provided for in MARC-8; in Unicode is Ԙ PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "a" And InStr(",108,", sFindLangCode) Then TransNonSlavic_A = "А̄" PositionShift = 1 Else TransNonSlavic_A = "А" End If Else '# lower case If Mid(sField, i+1, 1) = Chr(230) Then If InStr(",4,9,11,22,34,38,40,45,47,48,97,100,105,", sFindLangCode) Then TransNonSlavic_A = "ә" 'Character not provided for in MARC-8; in Unicode is ә ElseIf InStr(",18,19,", sFindLangCode) Then TransNonSlavic_A = "ӑ" ElseIf InStr(",28,67,70,71,99,", sFindLangCode) Then TransNonSlavic_A = "ӓ" ElseIf InStr(",79,", sFindLangCode) Then TransNonSlavic_A = "ӭ" Else TransNonSlavic_A = "а∎" End If PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(232) And InStr(",45,47,48,", sFindLangCode) Then TransNonSlavic_A = "ӓ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",33,", sFindLangCode) Then TransNonSlavic_A = "ӓ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",45,48,", sFindLangCode) Then TransNonSlavic_A = "ӛ" 'Character not provided for in MARC-8; in Unicode is ӛ or ӛ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",78,", sFindLangCode) Then TransNonSlavic_A = "[yae]" 'Character not provided for in MARC-8; in Unicode is ԙ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "a" And InStr(",108,", sFindLangCode) Then TransNonSlavic_A = "а̄" PositionShift = 1 Else TransNonSlavic_A = "а" End If End If End Function '#################### Function TransNonSlavic_C(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If LCase(Mid(sField, i+1, 1)) = "h" And InStr(",18,", sFindLangCode) Then TransNonSlavic_C = "Ђ" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "h" Then TransNonSlavic_C = "Ч" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(226) & "h" & Chr(226) And InStr(",2,", sFindLangCode) Then TransNonSlavic_C = "Ҽ" 'Character not provided for in MARC-8; in Unicode is Ҽ PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(226) & "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_C = "Ҿ" 'Character not provided for in MARC-8; in Unicode is Ҿ PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(229) & "h" And InStr(",57,", sFindLangCode) Then TransNonSlavic_C = "Ч̍" 'Character not provided for in MARC-8 (∎); in Unicode is Ч̍ PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(229) & "h" And InStr(",62,", sFindLangCode) Then TransNonSlavic_C = "Ч́" PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(231) & "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_C = "Ҷ" 'Preferred modern form not provided for in MARC-8; in Unicode is Ҷ or Ч̳ (old orthography: Ч̧) PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(231) & "h" And InStr(",13,57,", sFindLangCode) Then TransNonSlavic_C = "Ч̓" 'Alternate form: წ̳ PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(231) & "h" And InStr(",14,", sFindLangCode) Then TransNonSlavic_C = "Ч̆" PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(231) & "h" And InStr(",20,62,", sFindLangCode) Then TransNonSlavic_C = "[Char]" 'Character not provided for in MARC-8; in Unicode is ჭ PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(231) & "h" And InStr(",104,", sFindLangCode) Then TransNonSlavic_C = "Ӵ" PositionShift = 2 ElseIf Mid(sField, i+1, 1) = Chr(233) And InStr(",63,", sFindLangCode) Then TransNonSlavic_C = "Ч" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(240) And InStr(",56,", sFindLangCode) Then TransNonSlavic_C = "Ч" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_C = "Щ" ElseIf InStr(",63,", sFindLangCode) Then TransNonSlavic_C = "Ц" Else TransNonSlavic_C = "∎" End If Else '# lower case If Mid(sField, i+1, 1) = "h" And InStr(",18,", sFindLangCode) Then TransNonSlavic_C = "ђ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" Then TransNonSlavic_C = "ч" PositionShift = 1 ElseIf Mid(sField, i+1, 3) = Chr(226) & "h" & Chr(226) And InStr(",2,", sFindLangCode) Then TransNonSlavic_C = "ҽ" 'Character not provided for in MARC-8; in Unicode is ҽ PositionShift = 3 ElseIf Mid(sField, i+1, 2) = Chr(226) & "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_C = "ҿ" 'Character not provided for in MARC-8; in Unicode is ҿ PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(229) & "h" And InStr(",57,", sFindLangCode) Then TransNonSlavic_C = "ч̍" 'Character not provided for in MARC-8 (∎); in Unicode is ч̍ PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(229) & "h" And InStr(",62,", sFindLangCode) Then TransNonSlavic_C = "ч́" PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(231) & "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_C = "ҷ" 'Preferred modern form not provided for in MARC-8; in Unicode is ҷ or ч̳ (old orthography: Ч̧) PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(231) & "h" And InStr(",13,57,", sFindLangCode) Then TransNonSlavic_C = "ч̓" 'Alternate form: წ̳ PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(231) & "h" And InStr(",14,", sFindLangCode) Then TransNonSlavic_C = "ч̆" PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(231) & "h" And InStr(",20,62,", sFindLangCode) Then TransNonSlavic_C = "[char]" 'Character not provided for in MARC-8; in Unicode is ჭ PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(231) & "h" And InStr(",104,", sFindLangCode) Then TransNonSlavic_C = "ӵ" PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(231) & "h" And InStr(",91,", sFindLangCode) Then TransNonSlavic_C = "ј" PositionShift = 2 ElseIf Mid(sField, i+1, 1) = Chr(233) And InStr(",63,", sFindLangCode) Then TransNonSlavic_C = "ч" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(240) And InStr(",56,", sFindLangCode) Then TransNonSlavic_C = "ч" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_C = "щ" ElseIf InStr(",63,", sFindLangCode) Then TransNonSlavic_C = "ц" Else TransNonSlavic_C = "∎" End If End If End Function '#################### Function TransNonSlavic_D(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If LCase(Mid(sField, i+1, 3)) = Chr(235) & "z" & Chr(236) And InStr(",2,20,62,", sFindLangCode) Then TransNonSlavic_D = "Ӡ" 'Character not provided for in MARC-8; in Unicode is Ӡ PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "z" & Chr(236) And InStr(",51,", sFindLangCode) Then TransNonSlavic_D = "Ԇ" 'Character not provided for in MARC-8 (∎); in Unicode is Ԇ PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "z" & Chr(236) And InStr(",104,", sFindLangCode) Then TransNonSlavic_D = "Ӟ" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",5,", sFindLangCode) Then TransNonSlavic_D = "Ј" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",51,", sFindLangCode) Then TransNonSlavic_D = "Ԃ" 'Character not provided for in MARC-8 (∎); in Unicode is Ԃ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",108,", sFindLangCode) Then TransNonSlavic_D = "Џ" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 5)) = Chr(246) & "z" & Chr(246) & "h" & Chr(246) And InStr(",51,", sFindLangCode) Then TransNonSlavic_D = "Җ" 'Character not provided for in MARC-8; in Unicode is Җ PositionShift = 5 ElseIf InStr(",4,51,", sFindLangCode) Then TransNonSlavic_D = "Ԁ" 'Character not provided for in MARC-8 (∎); in Unicode is Ԁ Else TransNonSlavic_D = "Д" End If Else '# lower case If Mid(sField, i+1, 3) = Chr(235) & "z" & Chr(236) And InStr(",2,20,62,", sFindLangCode) Then TransNonSlavic_D = "ӡ" 'Character not provided for in MARC-8; in Unicode is ӡ PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "z" & Chr(236) And InStr(",51,", sFindLangCode) Then TransNonSlavic_D = "ԇ" 'Character not provided for in MARC-8 (∎); in Unicode is ԇ PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "z" & Chr(236) And InStr(",104,", sFindLangCode) Then TransNonSlavic_D = "ӟ" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",5,", sFindLangCode) Then TransNonSlavic_D = "ј" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",51,", sFindLangCode) Then TransNonSlavic_D = "ԃ" 'Character not provided for in MARC-8 (∎); in Unicode is ԃ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",108,", sFindLangCode) Then TransNonSlavic_D = "џ" PositionShift = 1 ElseIf Mid(sField, i+1, 5) = Chr(246) & "z" & Chr(246) & "h" & Chr(246) And InStr(",51,", sFindLangCode) Then TransNonSlavic_D = "җ" 'Character not provided for in MARC-8; in Unicode is җ PositionShift = 5 ElseIf InStr(",4,51,", sFindLangCode) Then TransNonSlavic_D = "ԁ" 'Character not provided for in MARC-8 (∎); in Unicode is ԁ Else TransNonSlavic_D = "д" End If End If End Function '#################### Function TransNonSlavic_E(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 1) = Chr(231) And InStr(",63,", sFindLangCode) Then TransNonSlavic_E = "Ѣ" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(231) & "e" & Chr(231) And InStr(",108,", sFindLangCode) Then TransNonSlavic_E = "Ӓ̄" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(231) And InStr(",108,", sFindLangCode) Then TransNonSlavic_E = "Ё" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(231) Then TransNonSlavic_E = "Э" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(232) & "e" & Chr(232) And InStr(",108,", sFindLangCode) Then TransNonSlavic_E = "Ё̄" 'alternatively, Ё̄ PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(232) And InStr(",66,69,75,", sFindLangCode) Then TransNonSlavic_E = "І︠О︡" 'should be І͡О alternatively, Ю PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(232) Then TransNonSlavic_E = "Ё"'alternatively, Ё PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(230) And InStr(",18,19,79,", sFindLangCode) Then TransNonSlavic_E = "Ӗ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(227) And InStr(",56,", sFindLangCode) Then TransNonSlavic_E = "Е" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "'" And InStr(",56,", sFindLangCode) Then TransNonSlavic_E = "Ә'" 'Character not provided for in MARC-8; in Unicode is Ә' or Әʻ PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "e" And InStr(",108,", sFindLangCode) Then TransNonSlavic_E = "Е̄" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_E = "Ә" 'Character not provided for in MARC-8; in Unicode is Ә Else TransNonSlavic_E = "Е" End If Else '# lower case If Mid(sField, i+1, 1) = Chr(231) And InStr(",63,", sFindLangCode) Then TransNonSlavic_E = "ѣ" PositionShift = 1 ElseIf Mid(sField, i+1, 3) = Chr(231) & "e" & Chr(231) And InStr(",108,", sFindLangCode) Then TransNonSlavic_E = "ӓ̄" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(231) And InStr(",108,", sFindLangCode) Then TransNonSlavic_E = "ё" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(231) Then TransNonSlavic_E = "э" PositionShift = 1 ElseIf Mid(sField, i+1, 3) = Chr(232) & "e" & Chr(232) And InStr(",108,", sFindLangCode) Then TransNonSlavic_E = "ё̄" 'alternatively, ё̄ PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(232) And InStr(",66,", sFindLangCode) Then TransNonSlavic_E = "і︠о︡" 'should be і͡о alternatively, ю PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(232) Then TransNonSlavic_E = "ё"'alternatively, ё PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(230) And InStr(",18,19,79,", sFindLangCode) Then TransNonSlavic_E = "ӗ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(227) And InStr(",56,", sFindLangCode) Then TransNonSlavic_E = "е" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "'" And InStr(",56,", sFindLangCode) Then TransNonSlavic_E = "ә'" 'Character not provided for in MARC-8; in Unicode is ә' or әʻ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "e" And InStr(",108,", sFindLangCode) Then TransNonSlavic_E = "е̄" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_E = "ә" 'Character not provided for in MARC-8; in Unicode is ә Else TransNonSlavic_E = "е" End If End If End Function '#################### Function TransNonSlavic_F(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 1) = Chr(231) Then TransNonSlavic_F = "Ѳ" PositionShift = 1 Else TransNonSlavic_F = "Ф" End If Else '# lower case If Mid(sField, i+1, 1) = Chr(231) Then TransNonSlavic_F = "ѳ" PositionShift = 1 Else TransNonSlavic_F = "ф" End If End If End Function '#################### Function TransNonSlavic_G(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If LCase(Mid(sField, i+1, 1)) = "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_G = "Ӷ" 'Character not provided for in MARC-8; in Unicode is Ӷ (old orthography: Ҕ) or Г̳ PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "h" And InStr(",108,109,", sFindLangCode) Then TransNonSlavic_G = "Ҕ" 'Character not provided for in MARC-8; in Unicode is Ҕ PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "h" And InStr(",9,11,37,38,40,95,105,106,", sFindLangCode) Then TransNonSlavic_G = "Ғ" 'Character not provided for in MARC-8; in Unicode is Ғ or Г̵ PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "h" And InStr(",13,20,57,62,", sFindLangCode) Then TransNonSlavic_G = "Ꙅ̨" 'Character not provided for in MARC-8 (∎); in Unicode is Ꙅ̨ PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "h" And InStr(",14,", sFindLangCode) Then TransNonSlavic_G = "[Gya]" 'Character not provided for in MARC-8 or Unicode; may be Г̨ PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "h" And InStr(",23,", sFindLangCode) Then TransNonSlavic_G = "Г̕" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "h" And InStr(",89,", sFindLangCode) Then TransNonSlavic_G = "Ґ" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(226) & "h" And InStr(",20,62,", sFindLangCode) Then TransNonSlavic_G = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(231) & "h" And InStr(",13,20,62,", sFindLangCode) Then TransNonSlavic_G = "Ҕ" 'Character not provided for in MARC-8; in Unicode is Ҕ PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(231) & "h" And InStr(",14,", sFindLangCode) Then TransNonSlavic_G = "Ҕ" 'Character not provided for in MARC-8 or Unicode; alternate: І̳ seems to be a variant of Ҕ PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 1)) = Chr(231) And InStr(",9,", sFindLangCode) Then TransNonSlavic_G = "Ҝ" 'Character not provided for in MARC-8; in Unicode is Ҝ PositionShift = 1 Else TransNonSlavic_G = "Г" End If Else '# lower case If LCase(Mid(sField, i+1, 1)) = "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_G = "ӷ" 'Character not provided for in MARC-8; in Unicode is ӷ (old orthography: ҕ) or г̳ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",108,109,", sFindLangCode) Then TransNonSlavic_G = "ҕ" 'Character not provided for in Marc-8; in Unicode is ҕ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",9,11,37,38,40,43,95,105,106,", sFindLangCode) Then TransNonSlavic_G = "ғ" 'Character not provided for in MARC-8; in Unicode is ғ or г̳ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",13,20,57,62,", sFindLangCode) Then TransNonSlavic_G = "Ꙅ̨" 'Character not provided for in MARC-8 (∎) or Unicode; in Unicode is Ꙅ̨ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",14,", sFindLangCode) Then TransNonSlavic_G = "[gya]" 'Character not provided for in MARC-8 or Unicode; may be Г̨ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",23,", sFindLangCode) Then TransNonSlavic_G = "г̕" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",89,", sFindLangCode) Then TransNonSlavic_G = "ґ" PositionShift = 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) And InStr(",42,", sFindLangCode) Then TransNonSlavic_G = "һ" 'Character not provided for in MARC-8; in Unicode is һ PositionShift = 3 ElseIf Mid(sField, i+1, 2) = Chr(226) & "h" And InStr(",20,62,", sFindLangCode) Then TransNonSlavic_G = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(231) & "h" And InStr(",13,20,62,", sFindLangCode) Then TransNonSlavic_G = "ҕ" 'Character not provided for in MARC-8; in Unicode is ҕ PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(231) & "h" And InStr(",14,", sFindLangCode) Then TransNonSlavic_G = "ҕ" 'Character not provided for in MARC-8 or Unicode; seems to be a variant of ҕ PositionShift = 2 ElseIf Mid(sField, i+1, 1) = Chr(231) And InStr(",9,", sFindLangCode) Then TransNonSlavic_G = "ҝ" 'Character not provided for in MARC-8; in Unicode is ҝ PositionShift = 1 Else TransNonSlavic_G = "г" End If End If End Function '#################### Function TransNonSlavic_H(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If LCase(Mid(sField, i+1, 3)) = Chr(231) & "w" & Chr(231) And InStr(",57,", sFindLangCode) Then TransNonSlavic_H = "Ꚕ" 'Character not provided for in MARC-8 (∎); in Unicode is Ꚕ PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(231) Then If InStr(",2,", sFindLangCode) Then TransNonSlavic_H = "Ҳ" 'Character not provided for in MARC-8; in Unicode is Ҳ or Х̳ (alternate form: Ӽ or Х̡) ElseIf InStr(",3,15,29,31,", sFindLangCode) Then TransNonSlavic_H = "Ӏ" 'Character not provided for in MARC-8 unless І can be used instead (as is often done on the web); in Unicode is Ӏ ElseIf InStr(",4,9,11,12,13,20,34,40,57,62,97,105,109,", sFindLangCode) Then TransNonSlavic_H = "Һ" 'Character not provided for in MARC-8; in Unicode is Һ ElseIf InStr(",23,", sFindLangCode) Then TransNonSlavic_H = "Х̕" ElseIf InStr(",37,38,95,106,", sFindLangCode) Then TransNonSlavic_H = "Ҳ" 'Character not provided for in MARC-8; in Unicode is Ҳ 'ElseIf InStr(",106,", sFindLangCode) Then ' TransNonSlavic_H = "Х̨" Else TransNonSlavic_H = "∎" End If PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",20,57,62,", sFindLangCode) Then TransNonSlavic_H = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 1 ElseIf (Mid(sField, i+1, 1) = Chr(232) Or Mid(sField, i+1, 1) = "'") And InStr(",56,", sFindLangCode) Then TransNonSlavic_H = "Һ'" 'Character not provided for in MARC-8; in Unicode is Һ' PositionShift = 1 ElseIf InStr(",14,56,", sFindLangCode) Then TransNonSlavic_H = "Һ" 'Character not provided for in MARC-8; in Unicode is Һ Else TransNonSlavic_H = "∎" End If Else '# lower case If Mid(sField, i+1, 3) = Chr(231) & "w" & Chr(231) And InStr(",57,", sFindLangCode) Then TransNonSlavic_H = "ꚕ" 'Character not provided for in MARC-8 (∎); in Unicode is ꚕ PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(231) Then If InStr(",1,3,15,29,31,", sFindLangCode) Then TransNonSlavic_H = "Ӏ" 'Character not provided for in MARC-8 unless І can be used instead; in Unicode is Ӏ or ӏ ElseIf InStr(",2,", sFindLangCode) Then TransNonSlavic_H = "ҳ" 'Character not provided for in MARC-8 (∎); in Unicode is ҳ or х̳ (alternate form: ӽ or х̡) ElseIf InStr(",4,9,11,12,13,14,20,34,40,57,62,97,105,108,109,", sFindLangCode) Then TransNonSlavic_H = "һ" 'Character not provided for in MARC-8; in Unicode is һ ElseIf InStr(",23,", sFindLangCode) Then TransNonSlavic_H = "х̕" ElseIf InStr(",37,38,95,106,", sFindLangCode) Then TransNonSlavic_H = "ҳ" 'Character not provided for in MARC-8; in Unicode is ҳ 'ElseIf InStr(",106,", sFindLangCode) Then ' TransNonSlavic_H = "х̨" Else TransNonSlavic_H = "∎" End If PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",30,", sFindLangCode) Then TransNonSlavic_H = "'" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",20,57,62,", sFindLangCode) Then TransNonSlavic_H = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 1 ElseIf (Mid(sField, i+1, 1) = Chr(232) Or Mid(sField, i+1, 1) = "'") And InStr(",56,", sFindLangCode) Then TransNonSlavic_H = "һ'" 'Character not provided for in MARC-8; in Unicode is һ' PositionShift = 1 ElseIf InStr(",14,56,", sFindLangCode) Then TransNonSlavic_H = "һ" 'Character not provided for in MARC-8; in Unicode is һ Else TransNonSlavic_H = "∎" End If End If End Function '#################### Function TransNonSlavic_I(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 1) = Chr(230) Then If InStr(",13,14,20,57,62,", sFindLangCode) Then TransNonSlavic_I = "Ј" Else TransNonSlavic_I = "Й" End If PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",40,", sFindLangCode) Then TransNonSlavic_I = "І" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",43,", sFindLangCode) Then TransNonSlavic_I = "І̇" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",4,9,51,108,", sFindLangCode) Then TransNonSlavic_I = "Ј" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "n" & Chr(236) And InStr(",108,", sFindLangCode) Then TransNonSlavic_I = "Ј̵" 'Character not provided for in MARC-8 (∎); in Unicode is Ј̵ PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "a" & Chr(236) Then TransNonSlavic_I = "Я" PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "e" & Chr(236) Then TransNonSlavic_I = "Ѣ" PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "u" & Chr(236) Then TransNonSlavic_I = "Ю" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(227) And InStr(",56,", sFindLangCode) Then TransNonSlavic_I = "И" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "i" And InStr(",108,", sFindLangCode) Then TransNonSlavic_I = "Ӣ" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_I = "Ь" Else TransNonSlavic_I = "И" End If Else '# lower case If Mid(sField, i+1, 1) = Chr(230) Then If InStr(",13,14,20,57,62,", sFindLangCode) Then TransNonSlavic_I = "ј" Else TransNonSlavic_I = "й" End If PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",40,43,50,", sFindLangCode) Then TransNonSlavic_I = "і" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",95,", sFindLangCode) Then TransNonSlavic_I = "ӣ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",4,9,51,108,", sFindLangCode) Then TransNonSlavic_I = "ј" PositionShift = 1 ElseIf Mid(sField, i+1, 3) = Chr(235) & "n" & Chr(236) And InStr(",108,", sFindLangCode) Then TransNonSlavic_I = "ј̵" 'Character not provided for in MARC-8 (∎); in Unicode is ј̵ PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "a" & Chr(236) Then TransNonSlavic_I = "я" PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "e" & Chr(236) Then TransNonSlavic_I = "ѣ" PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "u" & Chr(236) Then TransNonSlavic_I = "ю" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(227) And InStr(",56,", sFindLangCode) Then TransNonSlavic_I = "и" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(232) And InStr(",104,", sFindLangCode) Then TransNonSlavic_I = "ӥ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "i" And InStr(",108,", sFindLangCode) Then TransNonSlavic_I = "ӣ" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_I = "ь" Else TransNonSlavic_I = "и" End If End If End Function '#################### Function TransNonSlavic_J(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 1) = Chr(229) And InStr(",41,42,", sFindLangCode) Then TransNonSlavic_J = "Ј" PositionShift = 1 ElseIf InStr(",2,13,", sFindLangCode) Then TransNonSlavic_J = "Џ" ElseIf InStr(",20,62,", sFindLangCode) Then TransNonSlavic_J = "Ђ" ElseIf InStr(",9,", sFindLangCode) Then TransNonSlavic_J = "Ҹ" 'Character not provided for in MARC-8; in Unicode is Ҹ ElseIf InStr(",22,34,97,100,105,", sFindLangCode) Then TransNonSlavic_J = "Җ" 'Character not provided for in MARC-8; in Unicode is Җ ElseIf InStr(",95,", sFindLangCode) Then TransNonSlavic_J = "Ҷ" 'Character not provided for in MARC-8; in Unicode is Ҷ ElseIf InStr(",43,", sFindLangCode) Then TransNonSlavic_J = "Ӌ" 'Character not provided for in MARC-8; in Unicode is Ӌ (or Ҷ) ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_J = "Ж" ElseIf InStr(",63,", sFindLangCode) Then TransNonSlavic_J = "Й" ElseIf InStr(",73,", sFindLangCode) Then TransNonSlavic_J = "Ӂ" ElseIf InStr(",104,", sFindLangCode) Then TransNonSlavic_J = "Ӝ" Else TransNonSlavic_J = "∎" End If Else '# lower case If Mid(sField, i+1, 1) = Chr(229) And InStr(",41,42,", sFindLangCode) Then TransNonSlavic_J = "ј" PositionShift = 1 ElseIf InStr(",2,13,", sFindLangCode) Then TransNonSlavic_J = "џ" ElseIf InStr(",20,62,", sFindLangCode) Then TransNonSlavic_J = "ђ" ElseIf InStr(",9,", sFindLangCode) Then TransNonSlavic_J = "ҹ" 'Character not provided for in MARC-8; in Unicode is ҹ ElseIf InStr(",22,34,97,100,105,", sFindLangCode) Then TransNonSlavic_J = "җ" 'Character not provided for in MARC-8; in Unicode is җ ElseIf InStr(",95,", sFindLangCode) Then TransNonSlavic_J = "ҷ" 'Character not provided for in MARC-8; in Unicode is ҷ ElseIf InStr(",43,", sFindLangCode) Then TransNonSlavic_J = "ӌ" 'Character not provided for in MARC-8; in Unicode is ӌ (or ҷ) ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_J = "ж" ElseIf InStr(",63,", sFindLangCode) Then TransNonSlavic_J = "й" ElseIf InStr(",73,", sFindLangCode) Then TransNonSlavic_J = "ӂ" ElseIf InStr(",104,", sFindLangCode) Then TransNonSlavic_J = "ӝ" Else TransNonSlavic_J = "∎" End If End If End Function '#################### Function TransNonSlavic_K(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 1) = Chr(226) And InStr(",20,57,", sFindLangCode) Then TransNonSlavic_K = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",62,", sFindLangCode) Then 'Lower case uses an acute instead of a macron TransNonSlavic_K = "Ќ" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(231) & "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_K = "Қ" 'Character not provided for in MARC-8; in Unicode is Қ or К̳ (alternate form: Ӄ or К̡) PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(231) & "h" And InStr(",13,14,20,57,62,", sFindLangCode) Then TransNonSlavic_K = "К̨" PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(234) & "h" And InStr(",20,57,62,", sFindLangCode) Then TransNonSlavic_K = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "h" & Chr(236) And InStr(",13,57,", sFindLangCode) Then TransNonSlavic_K = "Х̍" 'Character not provided for in MARC-8 (∎); in Unicode is Х̍ PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "h" & Chr(236) And InStr(",14,", sFindLangCode) Then TransNonSlavic_K = "Х̆" PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 1)) = "h" Then TransNonSlavic_K = "Х" PositionShift = 1 Else TransNonSlavic_K = "К" End If Else '# lower case If Mid(sField, i+1, 1) = Chr(226) And InStr(",20,57,", sFindLangCode) Then TransNonSlavic_K = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",62,", sFindLangCode) Then 'Upper case uses a macron instead of an acute TransNonSlavic_K = "ќ" PositionShift = 1 ElseIf Mid(sField, i+1, 2) = Chr(231) & "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_K = "қ" 'Character not provided for in MARC-8; in Unicode is қ or к̳ (alternate form: ӄ or к̡) PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(231) & "h" And InStr(",13,14,20,57,62,", sFindLangCode) Then TransNonSlavic_K = "к̨" PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(234) & "h" And InStr(",20,57,62,", sFindLangCode) Then TransNonSlavic_K = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 2 ElseIf Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) And InStr(",13,57,", sFindLangCode) Then TransNonSlavic_K = "х̍" 'Character not provided for in MARC-8 (∎); in Unicode is х̍ PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) And InStr(",14,", sFindLangCode) Then TransNonSlavic_K = "х̆" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = "h" Then TransNonSlavic_K = "х" PositionShift = 1 Else TransNonSlavic_K = "к" End If End If End Function '#################### Function TransNonSlavic_L(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If LCase(Mid(sField, i+1, 3)) = "kh" & Chr(231) And InStr(",79,", sFindLangCode) Then TransNonSlavic_L = "[Lha]" 'Character not provided for in MARC-8; in Unicode is Ԕ PositionShift = 3 ElseIf Mid(sField, i+1, 2) = "'" & Chr(167) And InStr(",44,", sFindLangCode) Then TransNonSlavic_L = "Љ'ь" PositionShift = 2 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",18,", sFindLangCode) Then TransNonSlavic_L = "Љ" 'alternate form: Ԡ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",23,", sFindLangCode) Then TransNonSlavic_L = "Л̕" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",51,", sFindLangCode) Then TransNonSlavic_L = "Љ" 'Primary character not provided for in MARC-8; in Unicode is Ԉ PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "l" And InStr(",108,", sFindLangCode) Then TransNonSlavic_L = "Л∎" 'Second character not provided for in MARC-8 or Unicode PositionShift = 1 ElseIf InStr(",4,", sFindLangCode) Then 'Also used if LangCode=108, which also transliterates the standard 41B as "L" TransNonSlavic_L = "∎" 'Character not provided for in MARC-8 or Unicode Else TransNonSlavic_L = "Л" End If Else '# lower case If Mid(sField, i+1, 3) = "kh" & Chr(231) And InStr(",79,", sFindLangCode) Then TransNonSlavic_L = "[lha]" 'Character not provided for in MARC-8; in Unicode is ԕ PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",18,", sFindLangCode) Then TransNonSlavic_L = "љ" 'alternate form: ԡ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",23,", sFindLangCode) Then TransNonSlavic_L = "л̕" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",51,", sFindLangCode) Then TransNonSlavic_L = "љ" 'Primary character not provided for in MARC-8; in Unicode is ԉ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "l" And InStr(",108,", sFindLangCode) Then TransNonSlavic_L = "л∎" 'Second character not provided for in MARC-8 or Unicode PositionShift = 1 ElseIf InStr(",4,", sFindLangCode) Then 'Also used if LangCode=108, which also transliterates the standard 41B as "L" TransNonSlavic_L = "∎" 'Character not provided for in MARC-8 or Unicode Else TransNonSlavic_L = "л" End If End If End Function '#################### Function TransNonSlavic_N(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If LCase(Mid(sField, i+1, 3)) = Chr(235) & "g" & Chr(236) And InStr(",5,67,70,76,79,109,", sFindLangCode) Then TransNonSlavic_N = "Ҥ" 'Character not provided for in MARC-8; in Unicode is Ҥ PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "g" & Chr(236) And InStr(",11,22,40,49,97,100,105,", sFindLangCode) Then TransNonSlavic_N = "Ң" 'Character not provided for in MARC-8; in Unicode is Ң PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "g" & Chr(236) And InStr(",16,25,27,54,", sFindLangCode) Then TransNonSlavic_N = "Ӈ" 'Character not provided for in MARC-8; in Unicode is Ӈ or Н̡ PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "g" & Chr(236) And InStr(",23,", sFindLangCode) Then TransNonSlavic_N = "Н̕" PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "g" & Chr(236) And InStr(",108,", sFindLangCode) Then TransNonSlavic_N = "Н̨" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(231) And InStr(",13,", sFindLangCode) Then TransNonSlavic_N = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",18,", sFindLangCode) Then TransNonSlavic_N = "Њ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",51,", sFindLangCode) Then TransNonSlavic_N = "Њ" 'Primary character not provided for in MARC-8; in Unicode is Ԋ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",108,", sFindLangCode) Then TransNonSlavic_N = "Н̓" PositionShift = 1 ElseIf InStr(",14,", sFindLangCode) Then TransNonSlavic_N = "∎" 'Character not provided for in MARC-8 or Unicode, might be Н̨ Else TransNonSlavic_N = "Н" End If Else '# lower case If (Mid(sField, i+1, 4) = Chr(235) & "g" & Chr(236) & Chr(231) Or Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(231) & Chr(236)) And InStr(",64,", sFindLangCode) Then TransNonSlavic_N = "н'" PositionShift = 4 ElseIf Mid(sField, i+1, 3) = Chr(235) & "g" & Chr(236) And InStr(",5,41,42,67,68,70,76,79,91,92,99,109,", sFindLangCode) Then TransNonSlavic_N = "ҥ" 'Character not provided for in MARC-8; in Unicode is ҥ PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "g" & Chr(236) And InStr(",11,22,34,38,40,43,49,97,100,101,105,", sFindLangCode) Then TransNonSlavic_N = "ң" 'Character not provided for in MARC-8; in Unicode is ң PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "g" & Chr(236) And InStr(",16,25,27,45,46,47,48,54,83,", sFindLangCode) Then TransNonSlavic_N = "C8;" 'Character not provided for in MARC-8; in Unicode is ӈ or н̡ PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "g" & Chr(236) And InStr(",23,", sFindLangCode) Then TransNonSlavic_N = "н̕" PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "g" & Chr(236) And InStr(",60,", sFindLangCode) Then TransNonSlavic_N = "н'" PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "g" & Chr(236) And InStr(",108,", sFindLangCode) Then TransNonSlavic_N = "н̨" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(231) And InStr(",13,", sFindLangCode) Then TransNonSlavic_N = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",18,", sFindLangCode) Then TransNonSlavic_N = "њ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",51,", sFindLangCode) Then TransNonSlavic_N = "њ" 'Primary character not provided for in MARC-8; in Unicode is ԋ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",108,", sFindLangCode) Then TransNonSlavic_N = "н̓" PositionShift = 1 ElseIf InStr(",14,", sFindLangCode) Then TransNonSlavic_N = "∎" 'Character not provided for in MARC-8 or Unicode, might be н̨ Else TransNonSlavic_N = "н" End If End If End Function '#################### Function TransNonSlavic_O(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If LCase(Mid(sField, i+1, 3)) = Chr(231) & "o" & Chr(231) And InStr(",108,", sFindLangCode) Then TransNonSlavic_O = "Ӧ̄" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(231) Then If InStr(",5,7,28,41,42,43,48,50,51,52,53,67,68,70,71,99,103,104,108,", sFindLangCode) Then TransNonSlavic_O = "Ӧ" ElseIf InStr(",9,11,12,25,34,38,40,45,49,74,97,100,101,105,109,", sFindLangCode) Then TransNonSlavic_O = "Ө" 'Character not provided for in MARC-8; in Unicode is Ө or О&;#x0335; Else TransNonSlavic_O = "О∎" End If PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",25,", sFindLangCode) Then TransNonSlavic_O = "Ӫ" 'Character not provided for in MARC-8; in Unicode is Ӫ or Ӫ or Ӧ̵ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",47,48,", sFindLangCode) Then TransNonSlavic_O = "Ө" 'Character not provided for in MARC-8; in Unicode is Ө or О&;#x0335; PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(230) And InStr(",79,", sFindLangCode) Then TransNonSlavic_O = "О̆" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",33,", sFindLangCode) Then TransNonSlavic_O = "Ӧ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",45,48,", sFindLangCode) Then TransNonSlavic_O = "Ӫ" 'Character not provided for in MARC-8; in Unicode is Ӫ or Ӫ or Ӧ̵ PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "o" And InStr(",108,", sFindLangCode) Then TransNonSlavic_O = "О̄" PositionShift = 1 Else TransNonSlavic_O = "О" End If Else '# lower case If Mid(sField, i+1, 3) = Chr(231) & "o" & Chr(231) And InStr(",108,", sFindLangCode) Then TransNonSlavic_O = "ӧ̄" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(231) Then If InStr(",5,7,28,41,42,43,48,50,51,52,53,67,68,70,71,91,92,93,99,103,104,108,", sFindLangCode) Then TransNonSlavic_O = "ӧ" ElseIf InStr(",9,11,12,25,34,38,40,45,49,74,97,100,101,105,109,", sFindLangCode) Then TransNonSlavic_O = "ө" 'Character not provided for in MARC-8; in Unicode is ө or о̵ ElseIf InStr(",47,", sFindLangCode) Then TransNonSlavic_O = "ө&x0308;" 'Character not provided for in MARC-8; in Unicode is ӫ or ӫ or ӧ̵ Else TransNonSlavic_O = "О∎" End If PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",25,", sFindLangCode) Then TransNonSlavic_O = "ӫ" 'Character not provided for in MARC-8; in Unicode is ӫ or ӫ or ӧ̵ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",47,48,", sFindLangCode) Then TransNonSlavic_O = "ө" 'Character not provided for in MARC-8; in Unicode is ө or О&;#x0335; PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(230) And InStr(",79,", sFindLangCode) Then TransNonSlavic_O = "о̆" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",33,", sFindLangCode) Then TransNonSlavic_O = "ӧ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",45,48,", sFindLangCode) Then TransNonSlavic_O = "ӫ" 'Character not provided for in MARC-8; in Unicode is ӫ or ӫ or ӧ̵ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "o" And InStr(",108,", sFindLangCode) Then TransNonSlavic_O = "о̄" PositionShift = 1 Else TransNonSlavic_O = "о" End If End If End Function '#################### Function TransNonSlavic_P(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 1) = "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_P = "Ҧ" 'Character not provided for in MARC-8; in Unicode is Ԥ or П̳ (alternate form: Ҧ) PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",13,14,62,", sFindLangCode) Then TransNonSlavic_P = "П̧" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",20,", sFindLangCode) Then TransNonSlavic_P = "П̨" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",62,", sFindLangCode) Then TransNonSlavic_P = "П̄" PositionShift = 1 Else TransNonSlavic_P = "П" End If Else '# lower case If Mid(sField, i+1, 1) = "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_P = "ҧ" 'Character not provided for in MARC-8; in Unicode is ԥ or П̳ (alternate form:ҧ) PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",13,14,62,", sFindLangCode) Then TransNonSlavic_P = "п̧" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",20,", sFindLangCode) Then TransNonSlavic_P = "п̨" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",62,", sFindLangCode) Then TransNonSlavic_P = "п̄" PositionShift = 1 Else TransNonSlavic_P = "п" End If End If End Function '#################### Function TransNonSlavic_Q(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 1) = Chr(231) And InStr(",13,14,20,57,62,", sFindLangCode) Then TransNonSlavic_Q = "К̊" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",62,", sFindLangCode) Then TransNonSlavic_Q = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 1 ElseIf InStr(",2,", sFindLangCode) Then TransNonSlavic_Q = "Ҟ" 'Character not provided for in MARC-8; in Unicode is Ҟ ElseIf InStr(",4,13,14,20,56,57,62,", sFindLangCode) Then TransNonSlavic_Q = "Ԛ" 'Character not provided for in MARC-8 (∎); in Unicode is Ԛ (for sFindLangCode = 56, Unicode A2; is the primary form) ElseIf InStr(",11,", sFindLangCode) Then TransNonSlavic_Q = "Ҡ" 'Character not provided for in MARC-8; in Unicode is Ҡ ElseIf InStr(",16,47,48,54,", sFindLangCode) Then TransNonSlavic_Q = "Ӄ" 'Character not provided for in MARC-8; in Unicode is Ӄ or &x041A;̡ ElseIf InStr(",23,", sFindLangCode) Then TransNonSlavic_Q = "К̕" ElseIf InStr(",37,38,40,95,105,106,", sFindLangCode) Then TransNonSlavic_Q = "Қ" 'Character not provided for in MARC-8; in Unicode is Қ 'ElseIf InStr(",106,", sFindLangCode) Then ' TransNonSlavic_Q = "К̨" Else TransNonSlavic_Q = "∎" End If Else '# lower case If Mid(sField, i+1, 1) = Chr(231) And InStr(",13,14,20,57,62,", sFindLangCode) Then TransNonSlavic_Q = "к̊" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",62,", sFindLangCode) Then TransNonSlavic_Q = "∎" 'Character not provided for in MARC-8 or Unicode PositionShift = 1 ElseIf InStr(",2,", sFindLangCode) Then TransNonSlavic_Q = "ҟ" 'Character not provided for in MARC-8; in Unicode is ҟ ElseIf InStr(",4,13,14,20,56,57,62,", sFindLangCode) Then TransNonSlavic_Q = "ԛ" 'Character not provided for in MARC-8 (∎); in Unicode is ԛ ElseIf InStr(",11,", sFindLangCode) Then TransNonSlavic_Q = "ҡ" 'Character not provided for in MARC-8; in Unicode is ҡ ElseIf InStr(",16,47,48,54,", sFindLangCode) Then TransNonSlavic_Q = "ӄ" 'Character not provided for in MARC-8; in Unicode is ӄ or &x043A;̡ ElseIf InStr(",23,", sFindLangCode) Then TransNonSlavic_Q = "к̕" ElseIf InStr(",37,38,40,95,105,106,", sFindLangCode) Then TransNonSlavic_Q = "қ" 'Character not provided for in MARC-8; in Unicode is қ 'ElseIf InStr(",106,", sFindLangCode) Then ' TransNonSlavic_Q = "к̨" Else TransNonSlavic_Q = "∎" End If End If End Function '#################### Function TransNonSlavic_R(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If LCase(Mid(sField, i+1, 3)) = "kh" & Chr(231) And InStr(",79,", sFindLangCode) Then TransNonSlavic_R = "[Rha]" 'Character not provided for in MARC-8; in Unicode is Ԗ PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",56,", sFindLangCode) Then TransNonSlavic_R = "Р'" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(240) And InStr(",88,", sFindLangCode) Then TransNonSlavic_R = "Р̆" PositionShift = 1 Else TransNonSlavic_R = "Р" End If Else '# lower case If Mid(sField, i+1, 3) = "kh" & Chr(231) And InStr(",79,", sFindLangCode) Then TransNonSlavic_R = "[rha]" 'Character not provided for in MARC-8; in Unicode is ԗ PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",56,", sFindLangCode) Then TransNonSlavic_R = "р'" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(240) And InStr(",88,", sFindLangCode) Then TransNonSlavic_R = "р̆" PositionShift = 1 Else TransNonSlavic_R = "р" End If End If End Function '#################### Function TransNonSlavic_S(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 3) = "hch" And InStr(",106,", sFindLangCode) = 0 Then TransNonSlavic_S = "Щ" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = "h" Then TransNonSlavic_S = "Ш" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 2)) = Chr(226) & "h" And InStr(",57,", sFindLangCode) Then TransNonSlavic_S = "Ш̆" PositionShift = 2 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",18,19,57,", sFindLangCode) Then TransNonSlavic_S = "С̨" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",51,", sFindLangCode) Then TransNonSlavic_S = "Ԍ" 'Character not provided for in MARC-8 (∎); in Unicode is Ԍ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(233) And InStr(",63,", sFindLangCode) Then TransNonSlavic_S = "Ш" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(240) And InStr(",56,", sFindLangCode) Then TransNonSlavic_S = "Ш" PositionShift = 1 ElseIf InStr(",4,", sFindLangCode) Then TransNonSlavic_S = "Ѕ" 'Character not provided for in MARC-8 (∎); in Unicode is Ѕ Else TransNonSlavic_S = "С" End If Else '# lower case If Mid(sField, i+1, 3) = "hch" And InStr(",106,", sFindLangCode) = 0 Then TransNonSlavic_S = "щ" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = "h" Then TransNonSlavic_S = "ш" PositionShift = 1 ElseIf Mid(sField, i+1, 2) = Chr(226) & "h" And InStr(",57,", sFindLangCode) Then TransNonSlavic_S = "ш̆" PositionShift = 2 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",18,19,57,", sFindLangCode) Then TransNonSlavic_S = "с̨" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",51,", sFindLangCode) Then TransNonSlavic_S = "ԍ" 'Character not provided for in MARC-8 (∎); in Unicode is ԍ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(233) And InStr(",63,", sFindLangCode) Then TransNonSlavic_S = "ш" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(240) And InStr(",56,", sFindLangCode) Then TransNonSlavic_S = "ш" PositionShift = 1 ElseIf InStr(",4,", sFindLangCode) Then TransNonSlavic_S = "ѕ" 'Character not provided for in MARC-8 (∎); in Unicode is ѕ Else TransNonSlavic_S = "с" End If End If End Function '#################### Function TransNonSlavic_T(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If (LCase(Mid(sField, i+1, 4)) = Chr(235) & "s" & Chr(236) & Chr(231) Or LCase(Mid(sField, i+1, 3)) = Chr(235) & "s" & Chr(231) & Chr(236)) And InStr(",2,", sFindLangCode) Then TransNonSlavic_T = "Ҵ" 'Character not provided for in MARC-8; in Unicode is Ҵ PositionShift = 4 ElseIf LCase(Mid(sField, i+1, 4)) = Chr(235) & "s" & Chr(236) & "h" And InStr(",20,62,", sFindLangCode) Then TransNonSlavic_T = "[Cil]" 'Character not provided for in MARC-8; in Unicode is წ PositionShift = 4 ElseIf Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) And InStr(",2,", sFindLangCode) Then TransNonSlavic_T = "Ҵ" 'Character not provided for in MARC-8 (∎); in Unicode is Ҵ PositionShift = 3 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "s" & Chr(236) Then TransNonSlavic_T = "Ц" PositionShift = 3 ElseIf Mid(sField, i+1, 2) = Chr(231) & "s" And InStr(",13,57,", sFindLangCode) Then TransNonSlavic_T = "Ц̓" 'Alternate form: in MARC-8: "[Cil]", in Unicode: წ PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(231) & "s" And InStr(",14,", sFindLangCode) Then TransNonSlavic_T = "Ц̆" PositionShift = 2 ElseIf LCase(Mid(sField, i+1, 3)) = Chr(235) & "h" & Chr(236) And InStr(",11,", sFindLangCode) Then TransNonSlavic_T = "З̧" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_T = "Ҭ" 'Preferred modern form not provided for in MARC-8; in Unicode is Ҭ (old orthography: Ђ) PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",11,", sFindLangCode) Then TransNonSlavic_T = "С̨" 'Alternate form: Ҫ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",20,", sFindLangCode) Then TransNonSlavic_T = "Т̨" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",13,14,57,62,", sFindLangCode) Then TransNonSlavic_T = "Т̧" PositionShift = 1 ElseIf Mid(sField, i+1, 2) = "s" & Chr(229) And InStr(",57,62,", sFindLangCode) Then TransNonSlavic_T = "წ̵" 'Character not provided for in MARC-8 (∎); in Unicode is წ̳ (წ̵) PositionShift = 2 ElseIf Mid(sField, i+1, 1) = Chr(231) And InStr(",4,", sFindLangCode) Then TransNonSlavic_T = "Т" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",18,", sFindLangCode) Then TransNonSlavic_T = "Т̌" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",51,", sFindLangCode) Then TransNonSlavic_T = "Ԏ" 'Character not provided for in MARC-8 (∎); in Unicode is Ԏ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",57,62,", sFindLangCode) Then TransNonSlavic_T = "Т̨" 'Character not provided for in MARC-8; in Unicode is Ꚍ PositionShift = 1 Else TransNonSlavic_T = "Т" End If Else '# lower case If (Mid(sField, i+1, 4) = Chr(235) & "s" & Chr(236) & Chr(231) Or Mid(sField, i+1, 4) = Chr(235) & "s" & Chr(231) & Chr(236)) And InStr(",2,", sFindLangCode) Then TransNonSlavic_T = "ҵ" 'Character not provided for in MARC-8; in Unicode is ҵ PositionShift = 4 ElseIf Mid(sField, i+1, 4) = Chr(235) & "s" & Chr(236) & "h" And InStr(",20,62,", sFindLangCode) Then TransNonSlavic_T = "[cil]" 'Character not provided for in MARC-8; in Unicode is წ PositionShift = 4 ElseIf Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) And InStr(",2,", sFindLangCode) Then TransNonSlavic_T = "ҵ" 'Character not provided for in MARC-8 (∎); in Unicode is ҵ PositionShift = 3 ElseIf Mid(sField, i+1, 3) = Chr(235) & "s" & Chr(236) Then TransNonSlavic_T = "ц" PositionShift = 3 ElseIf Mid(sField, i+1, 2) = Chr(231) & "s" And InStr(",13,57,", sFindLangCode) Then TransNonSlavic_T = "ц̓" 'Alternate form: წ PositionShift = 2 ElseIf Mid(sField, i+1, 2) = Chr(231) & "s" And InStr(",14,", sFindLangCode) Then TransNonSlavic_T = "ц̆" PositionShift = 2 ElseIf Mid(sField, i+1, 3) = Chr(235) & "h" & Chr(236) And InStr(",11,", sFindLangCode) Then TransNonSlavic_T = "з̧" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",2,", sFindLangCode) Then TransNonSlavic_T = "ҭ" 'Preferred modern form not provided for in MARC-8; in Unicode is ҭ (old orthography: ђ) PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",11,", sFindLangCode) Then TransNonSlavic_T = "с̨" 'Alternate form: ҫ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",20,", sFindLangCode) Then TransNonSlavic_T = "т̨" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "h" And InStr(",13,14,57,62,", sFindLangCode) Then TransNonSlavic_T = "т̧" PositionShift = 1 ElseIf Mid(sField, i+1, 2) = "s" & Chr(229) And InStr(",57,62,", sFindLangCode) Then TransNonSlavic_T = "წ̵" 'Character not provided for in MARC-8 (∎); in Unicode is წ̳ (წ̵) PositionShift = 2 ElseIf Mid(sField, i+1, 1) = Chr(231) And InStr(",4,", sFindLangCode) Then TransNonSlavic_T = "т" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",18,", sFindLangCode) Then TransNonSlavic_T = "т̌" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(226) And InStr(",51,", sFindLangCode) Then TransNonSlavic_T = "ԏ" 'Character not provided for in MARC-8 (∎); in Unicode is ԏ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",57,62,", sFindLangCode) Then TransNonSlavic_T = "т̨" 'Character not provided for in MARC-8; in Unicode is ꚍ PositionShift = 1 Else TransNonSlavic_T = "т" End If End If End Function '#################### Function TransNonSlavic_U(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If LCase(Mid(sField, i+1, 3)) = Chr(231) & "u" & Chr(231) And InStr(",108,", sFindLangCode) Then TransNonSlavic_U = "Ӱ̄" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(231) Then If InStr(",5,28,41,42,43,47,48,67,68,70,71,99,108,", sFindLangCode) Then TransNonSlavic_U = "Ӱ" ElseIf InStr(",9,11,12,22,34,38,40,49,74,97,100,101,105,109,", sFindLangCode) Then TransNonSlavic_U = "Ү" 'Character not provided for in MARC-8; in Unicode is Ү ElseIf InStr(",18,19,", sFindLangCode) Then TransNonSlavic_U = "Ӳ" ElseIf InStr(",62,", sFindLangCode) Then TransNonSlavic_U = "У̇" Else TransNonSlavic_U = "У∎" End If PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",40,", sFindLangCode) Then TransNonSlavic_U = "Ұ" 'Character not provided for in MARC-8; in Unicode is B0 or Ү̵ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",95,", sFindLangCode) Then TransNonSlavic_U = "Ӯ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(230) And InStr(",22,106,", sFindLangCode) Then TransNonSlavic_U = "Ў" 'Alternate MARC-8 coding is Ў PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",33,", sFindLangCode) Then TransNonSlavic_U = "Ӱ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(227) And InStr(",56,", sFindLangCode) Then TransNonSlavic_U = "У" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "u" And InStr(",108,", sFindLangCode) Then TransNonSlavic_U = "Ӯ" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_U = "Ӧ" Else TransNonSlavic_U = "У" End If Else '# lower case If Mid(sField, i+1, 3) = Chr(231) & "u" & Chr(231) And InStr(",108,", sFindLangCode) Then TransNonSlavic_U = "Ӱ̄" PositionShift = 3 ElseIf Mid(sField, i+1, 1) = Chr(231) Then If InStr(",5,28,41,42,43,47,48,67,68,70,71,91,92,93,99,108,", sFindLangCode) Then TransNonSlavic_U = "ӱ" ElseIf InStr(",9,11,12,22,34,38,40,49,74,97,100,101,105,109,", sFindLangCode) Then TransNonSlavic_U = "ү" 'Character not provided for in MARC-8; in Unicode is ү ElseIf InStr(",18,19,", sFindLangCode) Then TransNonSlavic_U = "ӳ" ElseIf InStr(",62,", sFindLangCode) Then TransNonSlavic_U = "у̇" Else TransNonSlavic_U = "у∎" End If PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",40,", sFindLangCode) Then TransNonSlavic_U = "ұ" 'Character not provided for in MARC-8; in Unicode is B1 or ү̵ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(229) And InStr(",95,", sFindLangCode) Then TransNonSlavic_U = "ӯ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(230) And InStr(",22,106,", sFindLangCode) Then TransNonSlavic_U = "ў" 'Alternate MARC-8 coding is ў PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(239) And InStr(",33,", sFindLangCode) Then TransNonSlavic_U = "ӱ" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(227) And InStr(",56,", sFindLangCode) Then TransNonSlavic_U = "у" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "u" And InStr(",108,", sFindLangCode) Then TransNonSlavic_U = "ӯ" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_U = "ӧ" Else TransNonSlavic_U = "у" End If End If End Function '#################### Function TransNonSlavic_W(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 1) = Chr(231) And InStr(",2,", sFindLangCode) Then TransNonSlavic_W = "Ә" 'Character not provided for in MARC-8; in Unicode is Ә PositionShift = 1 ElseIf InStr(",2,", sFindLangCode) Then TransNonSlavic_W = "Ҩ" 'Character not provided for in MARC-8; in Unicode is Ҩ ElseIf InStr(",20,56,62,", sFindLangCode) Then TransNonSlavic_W = "Ԝ" 'Character not provided for in MARC-8 (∎); in Unicode is Ԝ ElseIf Instr(",23,38,", sFindLangCode) Then TransNonSlavic_W = "Ў" 'Alternate MARC-8 coding is Ў ElseIf Instr(",35,", sFindLangCode) Then TransNonSlavic_W = "У̓" Else TransNonSlavic_W = "∎" End If Else '# lower case If Mid(sField, i+1, 1) = Chr(231) And InStr(",2,", sFindLangCode) Then TransNonSlavic_W = "ә" 'Character not provided for in MARC-8; in Unicode is ә PositionShift = 1 ElseIf InStr(",2,", sFindLangCode) Then TransNonSlavic_W = "ҩ" 'Character not provided for in MARC-8; in Unicode is ҩ ElseIf InStr(",20,56,62,", sFindLangCode) Then TransNonSlavic_W = "ԝ" 'Character not provided for in MARC-8 (∎); in Unicode is ԝ ElseIf Instr(",23,38,", sFindLangCode) Then TransNonSlavic_W = "ў" 'Alternate MARC-8 coding is ў ElseIf Instr(",35,", sFindLangCode) Then TransNonSlavic_W = "у̓" Else TransNonSlavic_W = "∎" End If End If End Function '#################### Function TransNonSlavic_X(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 1) = Chr(232) And InStr(",56,", sFindLangCode) Then TransNonSlavic_X = "Г'" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_X = "Х" Else TransNonSlavic_X = "Х" 'Used for Roman numerals End If Else '# lower case If Mid(sField, i+1, 1) = Chr(232) And InStr(",56,", sFindLangCode) Then TransNonSlavic_X = "г'" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_X = "х" Else TransNonSlavic_X = "∎" End If End If End Function '#################### Function TransNonSlavic_Y(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If Mid(sField, i+1, 1) = Chr(231) And InStr(",70,71,", sFindLangCode) Then TransNonSlavic_Y = "Ӹ" 'alternate Unicode value: Ӹ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(230) And InStr(",79,", sFindLangCode) Then TransNonSlavic_Y = "Ы̆" PositionShift = 1 ElseIf LCase(Mid(sField, i+1, 1)) = "y" And InStr(",108,", sFindLangCode) Then TransNonSlavic_Y = "Ы̄" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_Y = "Й" Else TransNonSlavic_Y = "Ы" End If Else '# lower case If Mid(sField, i+1, 1) = Chr(231) And InStr(",70,71,", sFindLangCode) Then TransNonSlavic_Y = "ӹ" 'alternate Unicode value: ӹ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(230) And InStr(",79,", sFindLangCode) Then TransNonSlavic_Y = "ы̆" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = "y" And InStr(",108,", sFindLangCode) Then TransNonSlavic_Y = "ы̄" PositionShift = 1 ElseIf InStr(",56,", sFindLangCode) Then TransNonSlavic_Y = "й" Else TransNonSlavic_Y = "ы" End If End If End Function '#################### Function TransNonSlavic_Z(sField As String, Position As Long, sFindLangCode As String, CharCase As String) As String Dim i As Long i = Position PositionShift = 0 If CharCase = "U" Then '# upper case If LCase(Mid(sField, i+1, 1)) = "h" Then TransNonSlavic_Z = "Ж" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(232) And InStr(",51,", sFindLangCode) Then TransNonSlavic_Z = "Ԅ" 'Character not provided for in MARC-8 (∎); in Unicode is Ԅ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(233) And InStr(",63,", sFindLangCode) Then TransNonSlavic_Z = "Ж" 'Character not provided for in MARC-8; in Unicode is Ԅ PositionShift = 1 Else TransNonSlavic_Z = "З" End If Else '# lower case If Mid(sField, i+1, 1) = "h" Then TransNonSlavic_Z = "ж" PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(232) And InStr(",51,", sFindLangCode) Then TransNonSlavic_Z = "ԅ" 'Character not provided for in MARC-8 (∎); in Unicode is ԅ PositionShift = 1 ElseIf Mid(sField, i+1, 1) = Chr(233) And InStr(",63,", sFindLangCode) Then TransNonSlavic_Z = "ж" 'Character not provided for in MARC-8; in Unicode is Ԅ PositionShift = 1 Else TransNonSlavic_Z = "з" End If End If End Function '################################################################################