240 likes | 253 Views
Macro-Enhancing Connexion. Learn how to improve your cataloging productivity using macros in the Connexion client February 8, 2005. Harvey Hahn Arlington Heights Memorial Library, Arlington Heights, IL. Joel Hahn Niles Public Library District, Niles, IL. Who we are. Special thanks to….
E N D
Macro-Enhancing Connexion Learn how to improve your cataloging productivity using macros in the Connexion client February 8, 2005
Harvey Hahn Arlington Heights Memorial Library, Arlington Heights, IL Joel Hahn Niles Public Library District, Niles, IL Who we are
Special thanks to… • OML “pioneers” • Eric Celeste (MIT) • Jim Ferguson (TPOT-UCSD) • Walt Nickeson (Univ. Rochester) • Tim Shearer (UNC-Chapel Hill) • Will Caine (SOLINET) • Carl Ratz (Phoenix Pub. Lib.) • Kyle Banerjee (Oregon State Lib.) • Jon Higgins (formerly WILS) • Rhoda Bilansky (Boston Univ.) • and many other macro writers over the years
And special thanks to… • OCLC • for providing a full-blown programming language as anintegrated part of their software products. • “If I have seen further than other men, it is because I stood on the shoulders of giants.” –Isaac Newton
Similarities between CatME and Connexion macros • OML Standard BASIC commands are identical. • Variables operate exactly the same. • Adding a field as line 99 (or better yet, 999) makes it the last line in the record. • Many OCLC-specific commands are identical (though Connexion has more).
Some commands are identical • CS.CursorRow • CS.CursorColumn • CS.DeleteHoldings • CS.DeleteRecord • CS.Export • CS.FindText • CS.Print • CS.QueryRecordStatus • CS.Reformat • CS.RunMacro • CS.SetMyStatus • CS.UpdateHoldings
CatME CS.Insert CS.GetFixedField CS.SetFixedField CS.GetFirstRecord CS.GetNextRecord CS.Replace Connexion CS.InsertMode CS.GetFixedField CS.SetFixedField CS.GetFirstItem CS.GetNextItem CS.ReplaceRecord Commands that are similar* * Similar does not mean identical!
CatME Dim CS As Object Set CS = CreateObject (“CatME.Application”) CS.ResaveOnlineFile CS.SaveLocal CS.Validate Connexion Dim CS As Object Set CS = CreateObject (“Connex.Client”) CS.SaveOnline CS.SaveToLocalFile (FALSE,FALSE) nNumErrs = CS.Validate(sErrList) Commands that are different* * Different can mean better!
CatME CS.ItemType CS.Scan CS.Search(search string) CS.SearchLocalFile (search string, file type) Connexion CS.ItemType (Uses different values) CS.Browse CS.Search(database, search string) More differing commands }
CatME CS.GetFieldData CS.SetFieldData CS.AddField Connexion CS.GetFieldLine CS.GetField CS.SetFieldLine CS.SetField CS.AddFieldLine CS.AddField Some are similar and different { { {
CatME Retrieved field data has spaces surrounding the indicators. 245_14_Some title Connexion Retrieved field data does not have spaces surrounding the indicators. 24514Some title One major programming difference between CatME and Connexion This difference affects how you write macros!
CS.GetActiveRecord CS.GetActiveTruncatedList Obsolete CatME commands
Difficult CatME tasks that are simple commands in Connexion • CS.GetField(“650”, 1, SubjectData) • Grab the contents of the first 650 field • CS.EndCell : CS.PrevSubfield • Jump the cursor to the start of the last subfield in the current field • CS.DeleteToEndOfCell • Delete from the cursor to the end of the field
Things to watch out for • Connexion always handles the character internally. • If you see ö in a record, what's really there and what macros will report is o¨ (not ¨o) • Note that the order of letter and diacritic may differ from what local systems expect (and from what is in exported records). Connexion’s editor and macros follow the Unicode standard.
More things to watch out for • Connexion has no spaces between a MARC tag & indicators and none between indicators & field contents. • However, CS.CursorPosition acts as if there were spaces there and also as if there were a space between the indicators. • OCLC recommends using CS.CursorColumn instead 24514The adventures of Tom Sawyer 245 1 4 The adventures of Tom Sawyer
Impossible in CatME but simple in Connexion • Recording macros • Can be a good way to learn OML. • Recorded macros may still need to be edited. • They tend to be inefficient and use many more commands than are necessary. • They may not work with all records. • Some tasks cannot be recorded.
Converting CatME macros to Connexion • When to simply translate? • Does the old macro use only commands that are similar in Connexion? • When to record a new version? • Does the macro never depend upon the content or status of the record? • Does the macro only navigate to fields that are always present, then insert new data? • Do you want a template on which to build the macro from scratch?
Converting CatME macros to Connexion • When to start from scratch? • Does the macro react to the content or status of the record? • Is the macro complex? • When not to convert at all? • Is the macro still necessary, or could this task be done instead… • By an existing command? • With constant data? • With text strings?
Connexion macro tips & tricks • Option Explicit • CS.IsOnline • CS.ItemType • When deleting several fields, work backwards
Connexion macro tips & tricks • Iterate through all 6XX fields in a record: • bool = TRUE • nTagNum = 0 • Do Until bool = FALSE • nTagNum = nTagNum + 1 • bool = CS.GetFieldLine( nTagNum, sField ) • If Mid(sField, 2, 3) Like "6##" Then • 'Put code that alters the record here. • 'Use nTagNum for the field number in CS.* commands • ElseIf Mid(sField, 2, 3)) > 699 Then • Exit Do • End If • Loop
Connexion macro tips & tricks • Iterate through all records in a list: • bool = CS.GetFirstItem • bNextRec = TRUE • Do While bNextRec <> FALSE • 'Put code that looks at or alters each item here • bool = CS.SaveOnline • 'OR: bool = CS.SaveToLocalFile(FALSE,FALSE) • bNextRec = CS.GetNextItem • If bNextRec = FALSE Then Exit Do • Loop • bool = CS.CloseRecord(TRUE)
Connexion macro tips & tricks • Copy data directly into MS Office programs: • Dim CS As Object • Set CS = CreateObject("Connex.Client") • bool = CS.GetField("092", 1, sCall) • bool = CS.GetField("245", 1, sTitle) • Dim XL as Object • Set XL = CreateObject("Excel.Application") • XL.Sheets("Sheet1").Select • XL.Range("A1").Value = "Call #" • XL.Range("A2").Value = sCall • XL.Range("B1").Value = "Title" • XL.Range("B2").Value = sTitle (Check the VBA help file in your version of Excel for the proper commands to use.)
Further resources • OCLC-CAT mailing list • Archives are now available • OCLC’s Connexion macros web page • http://www.oclc.org/connexion/support/macros.htm • OML for the Complete Beginner • http://users.rcn.com/aardy/oml/lessons/index.html • Joel’s OML web page • http://users.rcn.com/aardy/oml/index.html • Harvey’s OML web page • http://www.ahml.info/oml/
Questions, comments, etc. To contact us after the live presentation: Harvey Hahn <hhahn@ahml.info> Joel Hahn <jhahn@nileslibrary.org>