go to post Jon Willeke · Dec 20, 2017 The main change for 10.11 (El Capitan) and 10.12 (Sierra) is that /usr/lib is not writable, due to System Integrity Protection (SIP). You'll have to put the ODBC modules into /usr/local, and tell php.ini where you put them; e.g., extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/odbc.so extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/pdo_odbc.so
go to post Jon Willeke · Sep 15, 2017 Take a look at the WebServer setting in the portal at Configuration > Additional Settings > Startup: http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=... This changes the WebServer entry in the [Startup] section of cache.cpf.
go to post Jon Willeke · Sep 11, 2017 If you're connecting to the local system, you don't need to use Telnet. Use the cn_ap option described in the link that Peter posted.
go to post Jon Willeke · Aug 23, 2017 Tim's comment demonstrates that $get leaks an OREF when $this is used as a subscript of an array that doesn't exist. That's a bug. An OREF as a number is unique within a process, so +$this is more compact, and potentially faster than ""_$this. You should never see, e.g., 1@foo and 1@bar at the same time.
go to post Jon Willeke · Aug 14, 2017 I notice two things: The C# ciphertext is 64 bytes, which is twice as long as I'd expect for a 31-byte input. In the first sixteen bytes of the C# ciphertext, alternating bytes are NUL. I thought maybe C# is using UTF-16, but I I haven't managed to replicate its output using $zconvert with "UnicodeLittle" or "UnicodeBig". Edit: the first sixteen bytes of the output appear to be the first eight bytes of the initialization vector converted to Base-64, then UTF-16.
go to post Jon Willeke · Aug 14, 2017 "Escaped hex sequence too large" means that a hexadecimal escape sequence couldn't be decoded. I suspect that you've encountered a Unicode character that can't be handled on your eight-bit instance.
go to post Jon Willeke · Aug 9, 2017 For the most part, dynamic objects use local memory that is accounted for by $zstorage and $storage. However, some of it comes from other heap-allocated memory, similar to long strings. You can round trip a large JSON object through a dynamic object with %FromJSON()/%ToJSON(), even if an individual field exceeds the string limit. However, it is not currently possible to get the value of such a field within Caché. Note that you should call %ToJSON() such that it outputs to a device or writes to a stream: USER>d o.%ToJSON(stream) USER>d o.%ToJSON() Otherwise, you may get a STRINGSTACK error: USER>w o.%ToJSON() W o.%ToJSON() ^ <STRINGSTACK>
go to post Jon Willeke · Aug 4, 2017 Can you post some examples of input and expected output? Edit: here's an example from StackOverflow that gets the same output: USER>s (key,iv)="0123456789ABCDEF" USER>zzdump $system.Encryption.AESCBCEncrypt("1234567890",key,iv) 0000: 60 2C AE 14 35 8D 0A C5 C9 6E 2D 46 D1 7E 58 E3 https://stackoverflow.com/questions/28592989/aes-pkcs7-padding
go to post Jon Willeke · Jul 17, 2017 Are you sure that this problem is due to endian? A byte stream does not in itself have a byte order; multi-byte data structures do, such as Unicode characters encoded as UTF-16. As for the signature itself, I would expect its encoding to be specified in a portable manner. Is it possible that line endings are getting changed?
go to post Jon Willeke · Jun 28, 2017 My research shows that "!" was added in 1992, inspired by MSM. "$" was added in 1993 as a VMS-friendly synonym.
go to post Jon Willeke · Jun 8, 2017 This method probably first shipped with Caché 4.0 in December 2000, but the oldest instance I have handy is Caché 4.0.4: USER>w $system.Version.GetMajor() 4
go to post Jon Willeke · Apr 20, 2017 "NWK" is not a good search term for three separate one-character parameters. You want the OPEN Mode Parameters section of the Sequential File I/O chapter of the Caché I/O Device Guide: http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Jon Willeke · Mar 9, 2017 I don't really understand the question. It sounds like you're trying to convert from one eight-bit character set to another, but French generally uses the same character set as English, as far as I know. If you're using a Unicode instance of Caché, your first resort should be I/O translation: translate the input to Unicode, then translate on output to the desired character set. Doing it in COS is slower and less convenient. That said, here are some things in your code that don't really make sense: a."i"; should probably be a.%Get(i). a-128; maybe a.%Get(c-128)? I don't understand the purpose of the first loop or the return statements. value(j); ...? If I were to hazard a guess at rewriting this, my first try might be something like this: for i=1:1:$l(str) { s c=$e(str,i) if $a(c)<128) { w c } else { w $c(a.%Get($a(c)-128)) } }
go to post Jon Willeke · Feb 13, 2017 The instance is assigned a GUID that you can retrieve using the InstanceGUID() method of the %SYS.System class: USER>w ##class(%SYS.System).InstanceGUID() C74E6F76-F21F-11E6-9BB8-A860B607521C Databases are not assigned such an identifier.
go to post Jon Willeke · Jan 31, 2017 WRC should take good care of you then. It occurs to me that when a call-out function returns an error, you should see a FUNCTION error. An ILLEGAL VALUE error suggests that $zf could not find the "GETFILE" entry. Is there any chance that you're using a kernel with a modified czf.c?
go to post Jon Willeke · Jan 31, 2017 I can't reproduce this in a 2016.2 instance I have handy: USER>s filename="DKA0:[QD.CACHEJCWG2.MGR.USER]CACHE.DAT" USER>w $zf("GETFILE",filename,"UIC") [1,1] Can you get the output of $zu(56,2) after the error? Anything unusual about your filename?
go to post Jon Willeke · Jan 17, 2017 The CHUI routine editor is part of the FDBMS, which hasn't been a standard part of the product for a very long time. You could try the line editor with xecute ^%, but it's kind of painful, and I think it only supports .INT routines. I suggest using the editor of your choice with XML export files.
go to post Jon Willeke · Jan 9, 2017 Careful, you should pad each byte with a leading zero if necessary. Otherwise your output is missing five nibbles.