'MacroName:Playaway 'MacroDescription:Playaway 'written by John Lavalie, Aug. 23, 2006 option explicit option compare text global CS As Object '-------------------- function replace(strString as string, strOld as string, strNew as string) as string dim pos as integer pos = instr(strString, strOld) do while pos > 0 strString = left(strString, pos - 1) & strNew & mid(strString, pos + len(strOld)) pos = instr(strString, strOld) loop replace = strString end function '------------------- sub deleteTags(tag as string) dim found, temp$ found = CS.GetField (tag, 1, temp$) do while found CS.DeleteField tag, 1 found = CS.GetField (tag, 1, temp$) loop end sub '------------------- Sub Main Set CS = CreateObject("Connex.Client") dim tag$, Audn$, tag538$, tag300$ dim bool, delim$, note$, dur$ dim x%, LParen%, RParen%, gmd%, tag500% delim$ = chr(223) bool = CS.SetFixedField("Form", "s") bool = CS.GetFixedField ("Audn", Audn$) if Audn$ = "" then Audn$ = " " 'delete existing 006s and 007s deleteTags("006") deleteTags("007") tag$ = "006 m " & Audn$ & " h " CS.AddField 1, tag$ tag$ = "007 s " & delim$ & "b z " & delim$ & "d u " & delim$ & "e u " & delim$ & "f n " tag$ = tag$ & delim$ & "g n " & delim$ & "h n " & delim$ & "i n " & delim$ & "m u " & delim$ & "n d" CS.AddField 1, tag$ tag$ = "007 c " & delim$ & "b z " & delim$ & "d n " & delim$ & "e z " & delim$ & "f a " CS.AddField 1, tag$ 'add CCS GMD bool = CS.GetField ("245", 1, tag$) tag$ = replace(tag$, "[sound recording]", "[sound recording (Digital player)]") tag$ = replace(tag$, "[electronic resource]", "[sound recording (Digital player)]") CS.DeleteField "245", 1 CS.AddField 1, tag$ 'add local genre heading tag$ = "655 7Digital audio players. " & delim$ & "2 local" CS.AddField 1, tag$ 'move 500 (Un)abridged to 250 x% = 0 do x% = x% + 1 bool = CS.GetField ("500", x%, tag$) if instr(tag$, "abridged") then CS.DeleteField "500", x% tag$ = "250" & mid(tag$, 4) CS.SetField 1, tag$ bool = FALSE end if loop until not bool 'fix 300 bool = CS.GetField ("300", 1, tag$) tag$ = replace(tag$, "hrs.", "hr.") LParen% = instr(tag$, "(") RParen% = instr(tag$, ")") gmd% = instr(tag$, delim$ & "b") tag300$ = "digital ; " & delim$ & "c 3 1/2 x 2 1/4 in. + " & delim$ tag300$ = tag300$ & "e 1 set of earphones + 1 AAA battery." if LParen% > 0 then dur$ = mid(tag$, LParen%, RParen% - LParen% + 1) tag$ = "300 1 sound media player " & dur$ & " : " & delim$ & "b " & tag300$ else tag$ = "300 1 sound media player " & ": " & delim$ & "b " & tag300$ end if CS.DeleteField "300", 1 CS.AddField 1, tag$ '538 tag538$ = "Playaway Digital Audio." bool = CS.GetField ("538", 1, tag$) if bool then 'prepend to 538 if instr(tag$, "Playaway") = 0 then CS.SetField 1, "538 " & tag538$ & " " & mid(tag$, 6) else 'add 538 CS.AddField 1, "538 " & tag538$ end if 'add 500 note$ = "500 Issued on Playaway, a dedicated audio media player." x% = 0 : tag500% = 0 do x% = x% + 1 bool = CS.GetField ("500", x%, tag$) if instr(tag$, "Issued on Playaway") then tag500% = x% loop until not bool if tag500% > 0 then CS.SetField tag500%, note$ else CS.AddField 1, note$ end if 'add 500 note$ = "500 Accompanying material may vary." x% = 0 : tag500% = 0 do x% = x% + 1 bool = CS.GetField ("500", x%, tag$) if instr(tag$, "Accompanying material") then tag500% = x% loop until not bool or tag500% <> 0 if tag500% = 0 then CS.AddField 2, note$ CS.Reformat End Sub