╨╧рб▒с>■  ■                                                                                                                                                                                                                                                                                                                                                                                                                                                   ¤     ■    ■   ■    ■   ■               !"#$%&'()                                                                                                                                                                                                                                                                                                                                                        Root Entry        аЧсb╬ку`М╠%оЁМ┤{ E╬ DERIVEVOLUME.BIN"             `            ■   33xVolume.DESCodes.DES     /                                        ■    ■   ■                                                           ■                                                                                                                                                                                                                                                                                                                                                   ISRMfXX Connex.Clientpagesp.a getfieldB020041043  derivenewrecord@ addfieldAsetfixedfieldAELvlIDesci040 e rda deletefieldAgetfieldunicodeB264 1260 cursorrowc getfieldlineAData contains non-latin script cursorcolumn264 4c ╩c findtextA300 replacetextBill.b illustrationscol.color 336 text b txt 2 rdacontent337 unmediated b n 2 rdamedia338 volume b nc 2 rdacarrier504 deletekeyAdds 33x fields for monographs with no $b codes336 text ▀b te'MacroName:Monograph33xNoCodes 'MacroDescription:Adds 33x fields for monographs with no $b codes 'Written by Jane Sandberg, Slavic Cataloging Graduate Assistant, University of Illinois at Urbana-Champaign 'Revised Nov. 6, 2012 Sub Main Dim CS As Object Set CS = CreateObject("Connex.Client") CS.A33xVolume.SRCCodes.SRC         ╤33xVolume.BINCODES.BIN            f            ■   zDeriveVolume.DES"    +4ddField 1, "336 text ▀2 rdacontent" CS.AddField 1, "337 unmediated ▀2 rdamedia" CS.AddField 1, "338 volume ▀2 rdacarrier" End Sub newField = "338 volume ▀2 rdacarrier" CS.ISRMЖxx Connex.Client addfieldA336 text ▀2 rdacontent337 unmediated ▀2 rdamedia338 volume ▀2 rdacarrierД MainB[╛Та╫ ╟_CS__ object0 Б CreateObject║жаyT$7)Й~╡/H┼ ╦/H┼<╦/H┼\╦ z,H┼P ДLFMainAddAbbreviationFindInSubfieldDeleteCharactersMoveCursorToTag~[╛Т В║ ╫ ╟(8H`pАРа░└╨рЁ 0@XФ_CS__________field020field041field043sDataoriginal260new264line264fulllinecopyrightdatestartcopyrightdateSubfieldCLength__Xшм^ЭОУ&indextagsubfieldabbreviationfullх═cХZЧ╩М ╫ ╟(8HXhxИ/fieldLineNumbersubfieldquerystartingColumn5_CSsField____firstSubfieldFindInSubfieldA_ln║mДЛДА╫ ╟Derive an RDA record, with 33x fields for monographs0@numberOfCharacters _CSi__Z]╠═╪ф╫ ╟taginstance _CSsData<#А LА _Truefalse DeriveVolume.SRC"             ╚            ■   ╔DERIVERDA.BIN            ■               ■   Є nd If End Sub Sub DeleteCharacters(numberOfCharacters%) Dim CS As Object Set CS = CreateObject("Connex.Client") For i = 1 to numberOfCharacters CS.DeleteKey Next i End Sub Sub AddAbbreviation(index, tag, subfield, abbreviation, full) ' abbreviations(index,0) = tag ' abbreviations(index,1) = subfield ' abbreviations(index,2) = abbreviation ' abbreviations(index,2) = full End Sub Function FindInSubfield(fieldLineNumber, subfield, query, startingCo'MacroName:DeriveRDA 'MacroDescription:Changes LDR/17 to I, LDR/18 to i; adds $e rda to 040, replaces common abbreviations in 300 and 504, adds 33x fields for volumes without $b codes (as well as $a terms and $2 source) 'Written by Jane Sandberg, Slavic Cataloging Graduate Assistant, University of Illinois at Urbana-Champaign 'Revised Apr. 29, 2013 Declare Sub DeleteCharacters(numberOfCharacters%) Declare Sub AddAbbreviation(index, tag, subfield, abbreviation, full) Declare Function FindInSubfield(fieldLineNumber, subfield, query, startingColumn) Declare Function MoveCursorToTag(tag, instance) Sub Main Dim CS As Object Set CS = CreateObject("Connex.Client") Dim abbreviations(10,3) Call AddAbbreviation(0, 300, "a", "p.", "pages") 'Get 020s from old record 'This should be a loop CS.GetField "020", 1, field020 'Get 041s from old record 'This should be a loop CS.GetField "041", 1, field041 'Get 043s from old record 'This should be a loop CS.GetField "043", 1, field043 CS.DeriveNewRecord(True) 'Add 020 CS.AddField 20, field020 'Add 041 CS.AddField 41, field041 'Add 043 CS.AddField 43, field043 'Set LDR/17 to I CS.SetFixedField "ELvl", "I" 'Set LDR/18 to i CS.SetFixedField "Desc", "i" 'Append $e rda to 040 If CS.GetField("040", 1, sData) = True Then CS.AddField 99, sData & " " & Chr(223) & "e rda" CS.DeleteField "040", 1 End             ■               ■   ;DERIVERDA.BIN            ■               If 'Create 264 Do While CS.GetFieldUnicode(260, 1, original260) new264 = Mid$(original260, 6, Len(original260)) new264 = "264 1" + new264 If CS.DeleteField ("260", 1) = True Then CS.AddField 99, new264 line264 = CS.CursorRow If FindInSubfield(line264, "c", "c", 6) Then CS.GetFieldLine CS.CursorRow, fullline If ("Data contains non-latin script" = fullline) = false Then 'Skip non-Latin lines copyrightdatestart = CS.CursorColumn copyrightdate = Mid$(fullline, (copyrightdatestart+1), (copyrightdatestart+4)) CS.AddField 99, "264 4" & Chr(223) & "c ╩" + copyrightdate 'OML does not yet support copyright symbol CS.GetFieldUnicode 264, 1, sData CS.CursorRow = CS.CursorRow - 1 'Return to previous 264 CS.CursorColumn = 6 CS.FindText Chr(223) & "c ", true 'Go to subfield c SubfieldCLength = Len(sData) - CS.CursorColumn If SubfieldCLength < 10 then 'If copyright date was the only date CS.CursorColumn = CS.CursorColumn - 2 DeleteCharacters(10) Else CS.FindText "c", true CS.CursorColumn = CS.CursorColumn - 2 DeleteCharacters(7) End If End If End If End If Loop 'Replace common 300 abbreviations If MoveCursorToTag("300", 1) = true Then CS.CursorColumn = 6 Do While FindInSubfield (CS.CursorRow, "a", "p.", CS.CursorColumn) CS.ReplaceText "p.", "pages", true Loop If FindInSubfield(CS.CursorRow, "b", "ill.", 6) Then CS.ReplaceText "ill.", "illustrations", true End If If FindInSubfield(CS.CursorRow, "b", "ill.", 6) Then CS.ReplaceText "col.", "color", true End If End If 'Add 33x CS.AddField 1,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 "336 text " & Chr(223) & "b txt " & Chr(223) & "2 rdacontent" CS.AddField 1, "337 unmediated " & Chr(223) & "b n " & Chr(223) & "2 rdamedia" CS.AddField 1, "338 volume " & "b nc " & Chr(223) & Chr(223) & "2 rdacarrier" 'Replace common 504 abbreviations If CS.GetField("504", 1, sData) = true Then CS.AddField 99, sData CS.DeleteField "504", 1 End If If FindInSubfield(CS.CursorRow, "a", "p.", 6) Then CS.ReplaceText "p.", "pages", true Elumn) 'Goes to a particular subfield in a particular line, and searches for a query 'Returns true if found, and at the end of the function, the cursor will be at the end of the found string 'Returns false if not found Dim CS As Object Set CS = CreateObject("Connex.Client") 'Make sure we are starting at a valid column CS.CursorRow = fieldLineNumber If startingColumn < 6 Then startingColumn = 6 'Skip tag and indicators End If 'Find the position of the first subfield CS.GetFieldLine fieldLineNumber, sField If InStr(sField, Chr(223)) Then firstSubfield = InStr(sField, Chr(223)) End If CS.CursorColumn = startingColumn If (startingColumn < firstSubfield) and ("a" = subfield) Then 'If first subfield a (not displayed in Connexion) CS.CursorColumn = 6 'Go back to start of data If CS.FindText (query, true) then If CS.CursorRow = fieldLineNumber And CS.CursorColumn < firstSubfield Then 'If found before first delimiter FindInSubfield = true 'Found it! Else FindInSubfield = false 'Did not find the string anywhere in the remainder of the record End If Else FindInSubfieldA = false 'Did not find the correct subfield in this row End If 'To Do: this still doesn't check the second subfield a Else 'If we are looking for a subfield other than the first subfield a If InStr(sField, Chr(223) & subfield) Then CS.CursorColumn = InStr(sField, Chr(223) & subfield) CS.CursorColumn = CS.CursorColumn+2 'skip the delimiter 'To Do: this needs to check for the end of the subfield as well! If CS.FindText (query, true) And CS.CursorRow = fieldLineNumber then 'search for the string and verify that we are in the correct field FindInSubfield = true 'Found it! Else FindInSubfield = false 'Did not find the string anywhere in the remainder of the record End If Else FindInSubfield = false 'Did not find the correct subfield in this row End If End If End Function Function moveCursorToTag(tag, instance) Dim CS As Object Set CS = CreateObject("Connex.Client") If CS.GetField(tag, instance, sData) = true Then CS.AddField 99, sData CS.DeleteField tag, instance moveCursorToTag = true Else moveCursorToTag = false End If End Function o└ q/@■o└ q╨hщ ╦(o╚ qшюkv╩M┼/@■/lД─ P   ┼√kvp/Ї√o╠ qш/@√╨hщюkv  ┼Д╝ ╙tG┼Д╝ ╙tG┼x╙ #tL$HTG(T▀N╓o╚ qц8╧X╨╧ИNe╓kvЇ%HTG(T▀N╓o╚ qц8╧X╨╧ИNe╓/@■&/@√I┼▐(/@■)/lД─ P   ┼√/Ї√o╠ qшюkv*  ┼Д╝ ╙+t,G┼Д╝ ╙-/t0G┼Д╝ ╙123zъфyd47)Й~╡/$Д╠ P Д╚ P P √  ┼шkv^/hc┼P /╕Д╠ P Д╚ P   ┼Д─ ╙t G┼Д─ ╙  zЁц(Ё╙0/╕ь╦H┼√  ┼шkv1/hc┼ЁP 2/Ї√╙4TM┼╧(Й╦8╧HЙ╦`╧pw╓kvО5//Ї2╧P P ╨:6╦╨шG┼шkv,7/@√ ╙8|╨ K┼▐(╛╨ H┼▐╛╨─NБ╦80╙9/Xhc┼T╦(T▀N╓ц8\╦H╨0ц`цp:/╠┼H┼╨P ;/Ї√H┼▀/Ї■<M┼/@■=/lT▀N╓d╦(ц8  ┼>T╨Nw╓/@√▀@╙?╨@Q┼щkv@@/@√I┼▀/@■AQЖwBt\C/l╦  ┼D/@√I┼▀/@■ENЖwFGHIJt0№MTH┼╧(|Й╦8╧Hw╓  ┼шkvшNM┼/@■PT/@2╧(Й╦8╧HX Й╦`╧p/PЇ2╧Аw╨(:╨А:╓kv6Q/Д╦X╦(  ┼RtT UTM┼╧(ШЙ╦8╧HаЙ╦`╧p/XЇ2╧Аw╨А:╓kv.V/ДШ╦Xд╦(  ┼WYTM┼╧(ШЙISRMfXX Connex.Clientpagesp.a getfieldB020041043  derivenewrecord@ addfieldAsetfixedfieldAELvlIDesci040 e rda deletefieldAgetfieldunicodeB264 1260 cursorrowc getfieldlineAData contains non-latin script cursorcolumn264 4c ╩c findtextA300 replacetextBill.b illustrationscol.color 336 text b txt 2 rdacontent337 unmediated b n 2 rdamedia338 volume b nc 2 rdacarrier504 deletekeyДLFMainAddAbbreviationFindInSubfieldDeleteCharactersMoveCursorToTag~[╛Т В║ ╫ ╟(8H`pАРа░└╨рЁ 0@XФ_CS__________field020field041field043sDataoriginal260new264line264fulllinecopyrightdatestartcopyrightdateSubfieldCLength__Xшм^ЭОУ&indextagsubfieldabbreviationfullх═cХZЧ╩М ╫ ╟(8HXhxИ/fieldLineNumbersubfieldquerystartingColumn5_CSsField____firstSubfieldFindInSubfieldA_ln║mДЛДА╫ ╟0@numberOfCharacters _CSi__Z]╠═╪ф╫ ╟taginstance _CSsData<#А LА _Truefalse object0 Б CreateObjectd*║╪p└ ║ y,д7)Й~╡Й╦╧(Й╦8╧HX Й╦`╧p,┼╧АG┼╧Рw /$4╦H┼аP /$<╦H┼░P /$D╦H┼└P /P  ┼/h[┼аP /h)┼░P /h+┼└P  /xМ╦XФ╦(#/xШ╦Xа╦(&/$д╦H┼╨P √  ┼шkvr'/Xhc┼╨╨м╦ц(8T▀N╓цH░╦`цp(/╕д╦H┼)-/╠┼H┼рP √kvд.|TрNw╓╛M╨р─NБ╦(Ё╙/ф╦╨Ёц(Ё╙0/╕ь╦H┼√  ┼шkv1/hc┼ЁP 2/Ї√╙4TM┼╧(Й╦8╧HЙ╦`╧pw╓kvО5//Ї2╧P P ╨:6╦╨шG┼шkv,7/@√ ╙8|╨ K┼▐(╛╨ H┼▐╛╨─NБ╦80╙9/Xhc┼T╦(T▀N╓ц8\╦H╨0ц`цp:/╠┼H┼╨P ;/Ї√H┼▀/Ї■<M┼/@■=/lT▀N╓d╦(ц8  ┼>T╨Nw╓/@√▀@╙?╨@Q┼щkv@@/@√I┼▀/@■AQЖwBt\C/l╦  ┼D/@√I┼▀/@■ENЖwFGHIJt0№MTH┼╧(|Й╦8╧Hw╓  ┼шkvшNM┼/@■PT/@2╧(Й╦8╧HX Й╦`╧p/PЇ2╧Аw╨(:╨А:╓kv6Q/Д╦X╦(  ┼RtT UTM┼╧(ШЙ╦8╧HаЙ╦`╧p/XЇ2╧Аw╨А:╓kv.V/ДШ╦Xд╦(  ┼WYTM┼╧(ШЙ╦8╧HаЙ╦`╧p/XЇ2╧Аw╨А:╓kv.Z/Д┤╦X╝╦(  ┼[]b/PhH┼─╦(T▀N╓ц8╘╦Hц`pT▀N╓цАXр╦РцXc/PhH┼Ё╦(T▀N╓ц8╦Hц`pT▀N╓цАX ╦РцXd/XhH┼╦(T▀N╓ц8HT▀N╓ц`0╦pцАi/$@╦H┼╨P √  ┼шkvDj/hc┼╨P k/╕@╦H┼lnTM┼╧(Й╦8╧H Й╦`╧p/XЇ2╧Аw╨А:╓kv.o/Д╦X╦(  ┼puzКДyМ47)Й~╡()H┼╠ ┼H┼"0@$/H((0@▄ zyzТМyt7)Й~╡o╠ q/Ї■ o└ qM┼щkv M┼Д└ o╙q /Д╠ P P 8TG(T▀N╓╧H╨╧XNe╓kv88TG(T▀N╓╧H╨╧XNe╓h╙