(Apologies for the crosspost; I'm not sure if this a BatchCat specific problem or I'm doing something dumb with pywin32...) Have any of you had any luck using BatchCat from a Python script? A few years ago, I managed to get AddItemStatus working fine using win32com.client (from the pywin32 library), but trying to use UpdateHoldingRecord is behaving oddly I'm doing something like: import win32com.client import arrow bc = win32com.client.Dispatch("BatchCat.ClassBatchCat") bc.Connect(AppPath=r'C:\Voyager', UserName='myusername', Password='mypassword') mrec = thing_that_gets_a_MARC_record() result = bc.UpdateHoldingRecord(int(mrec.mfhdid), mrec.record.as_marc(), arrow.now().datetime, 459, int(mrec['004'].data), mrec.suppressed) print("result:", result) with the output result: (23, 6990816, u'00449cy a22001094 4500001000800000004000800008005001700016008003300033852008000066856016700146866002600313\x1e6990816\x1e6935429\x1e20130926071356.0\x1e1203285p 6 |001bbeng0120328\x1e8 \x1fbfalkwebp\x1fhHSL Online Journals\x1fxULS Site License\x1fxserhold updated:mk,3/28/12\x1e40\x1fzAccess via Academic Search Premier for Pitt users\x1fuhttp:// pitt.idm.oclc.org/login?url=http://search.ebscohost.com/direct.asp?db=aph&authtype=ip&jid=FM9&scope=site\x1e41\x1f80\x1fav.28-32(2000-2004)\x1e\x1d', <PyTime:9/8/2015 10:34:32 AM>, 459, 6935429, 0, False) Error 23, according to the documentation, means I've provided an invalid location ID. However, "falkwebp" is a valid location, and indeed I'm able to write this exact MARC (as far as I can tell) via a Perl script. I'm wondering if there's some kind of encoding problem; as_marc() returns a bytestring, but the return value seems to indicate that the client thinks it was called with a unicode version of the MARC (although the bytes look correct). I ran this with Python 3, as well, with the same output except for the leading u, so maybe pywin32 is doing some automatic decoding and that's breaking things? It seems suspicious that the error is about the location code, rather than BatchCat thinking the MARC is just invalid if it's getting encoded in such a way that the 852 subfield b is being misread. I wish I could get it to tell me what location it thinks I'm trying to use. Any suggestions would be appreciated. -- Geoffrey Spear Metadata Manager Health Sciences Library System University of Pittsburgh