go to post Alexey Maslov · Dec 21, 2017 I mentioned DAQ just because it was mentioned earlier and it was really buggy till 2017.x. I was apparently wrong as you seem to have all mnemonics embedded.As to JOBEXAM.INT, isn't it better to ask somebody inside ISC? IMHO, too many "innocent" utilities are shipped w/o sources.
go to post Alexey Maslov · Dec 20, 2017 Hi, Nikita,I'm a new WebTerminal user, just installed v.4.7.3. JOBEXAM has problems with it, and it seems that it's %X364 support again. Here is an excerpt from my session: CWTv4.7.3 ... ... USER > zn "%SYS" %SYS > d ^JOBEXAM <NOLINE>^%X364 ╠%X364 ; BINDING FOR ANSI X3.64 NAMESPACE, NOV/92 ; LRS952 06/07/05 %SYS > w $zv Cache for Windows (x86-64) 2017.2 (Build 744U) Fri Sep 29 2017 10:58:27 EDT I've checked %X364 source, it has got correct DAQ() code with this Caché version. Waiting for your help and advice.
go to post Alexey Maslov · Dec 7, 2017 This option: $ZD($h,12,,,,,,,,localeopt) seems to be more safe as switching the default representation for $ZD($h,12) may ruin already existing functionality that is expecting English days' names. To be honest, I'd prefer application level localization, just because not all possible languages are supported by Caché.
go to post Alexey Maslov · Dec 6, 2017 Just 2c to add. If a "national" locale is effective, e.g. %SYS>zw ^%SYS("LOCALE","CURRENT") ^%SYS("LOCALE","CURRENT")="yruw" and the setting was done before Caché restart: %SYS>set ^SYS("NLS","Config","LocaleFormat")=1 you will get your national day name if don't forget to set localeopt=0, e.g. USER>f localeopt=0,1 w localeopt," ",$ZD($h,12,,,,,,,,localeopt),! 0 Среда 1 Wednesday It's also possible to achieve the same overriding format defaults for the current process (see $ZDATE description for details). I emphasized the need in Caché restart just because didn't find it in docs.
go to post Alexey Maslov · Nov 30, 2017 Yes, I did.It did not seem working, STOP / START of the System Monitor didn't help.I lost my interest to Callback functionality because of its absence in newer Caché version, so I would not investigate it anymore.
go to post Alexey Maslov · Nov 30, 2017 My first guess was that it concerned Application Monitor alerts only, while I was mostly interested in Health monitor sensors reading.
go to post Alexey Maslov · Nov 29, 2017 Thank you, Eduard.Is it possible to do something with an "old" Cache 2015.1?I have no objection to upgrade, but according to our previous experience the movement of customers' sites will not be quick. So I'd like to find a solution which will be useable from 2015.1 to 2018.2.
go to post Alexey Maslov · Nov 24, 2017 Hi John and Roman,Although the answer is accepted, it seems that JOBEXAM can only help recognize that DBREST is still running, so the initial question about the completion time expectations would hardly be answered this way.Roman, only your previous experience can help answering your question. BTW, "weakness" of your host as you described it can't be a reason of slow DB restoration as DBREST is single-threaded utility and mostly i/o bound one. The reasons for slowing DBREST down are usually: slow disk subsystem and/or slow LAN connection to network resource where .cbk files are stored.Entry level SAS RAID and 1000BaseT LAN usually provide 40-50MB/s speed on DB restoration.
go to post Alexey Maslov · Nov 23, 2017 The result set of Config.MapGlobals:List query can be restricted to the global of interest (pGlb) records if change the Names search criteria in Execute call to: set sc = rset.Execute(pNsp,pGlb_","_pGlb_"(*")Snippet's code was amended.
go to post Alexey Maslov · Nov 13, 2017 ...and spread over documentation...Or undocumented, as it is in cases #3 and #4. It seems that it's possible to form a simple rule whether you can use a private variable: if you can consider its name to be evaluated at compile time, you can, otherwise - no:1) Indirection: variable names (or expression that contains them) are evaluated at runtime.2) Xecute: similar to #1. In contrast, $xecute() arguments names can be evaluated at compile time.3) Child process's symbol table filled with switch#2=1: runtime. In contrast, job's entry arguments names can be evaluated at compile time.4) %SYS.ProcessQuery is dynamically querying other process's symbol table, so, run time only.
go to post Alexey Maslov · Nov 13, 2017 Hi Robert,There are at least two additional exceptions:3. JOB command with passing the symbol table to the spawned jobSee http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...When switch#2=1, only public variables of parent process are passed to its child.4. Class %SYS.ProcessQuery, query VariableByPid() (or $zutil(88,2,Pid,Variable) for old schoolers)Only public variables of another process can be queried.
go to post Alexey Maslov · Nov 7, 2017 $ ccontrol qlist CACHE1^/opt/cache1^2015.1.4.803.0.16768^running, since Fri Sep 15 18:44:33 2017^cache.cpf^1972^57772^62972^ok^ CACHE2^/opt/cache2^2015.1.4.803.0.16768^running, since Mon Jul 24 08:43:47 2017^cache.cpf^56773^57773^62973^ok^ CACHE3^/opt/cache3^2015.1.4.803.0.16768^down, last used Thu Jul 27 18:02:03 2017^cache.cpf^56774^57774^62974^^ Windows analogue exists as well.
go to post Alexey Maslov · Nov 7, 2017 It depends.If you don't care about uniqueness of this hash, you can use any algorithm (the quicker the better, MD5Hash or even CRC32) and store your index like normal non-unique one. On calculated hash match to already stored (indexed) hash value you just compare the correspondent strings to separate real matches from the collisions. Maybe it's worth to use whole string as an index for reasonably short strings.
go to post Alexey Maslov · Nov 6, 2017 You can calculate a hash for each string and index this hash value. If use pure COS for index building, you can find duplicates earlier, just during index building, without quiering the index afterwards.
go to post Alexey Maslov · Nov 3, 2017 Hi Mikhail, you've done a really nice job!I'm just curious, why:We don’t care about output to a file.Wasn't it easier to parse mgstat's output file?
go to post Alexey Maslov · Oct 31, 2017 Just a quick note: the last sample with $tr removes _all_ listed chars, so all blanks (rather than leading, trailing and repeationg) would be removed as well.
go to post Alexey Maslov · Oct 31, 2017 Stuart,Your solution is really beatiful. As to speed, it's just a bit slower than the solution #1 (based on $replace) and ~ twice quicker than my solution #2 (pure Mumps). That's a real pearl to add to my snippets collection, thank you!
go to post Alexey Maslov · Oct 25, 2017 You may need to make the CACHELIB database R/W to save the edit to %ZSTART No, because %Z* routines are stored in CACHESYS database. The only exception is `%ZEN.*`. You may want to check `do SHOW^%NSP` output: Routine name/Range Type Dirset Target directory ------------------------------------------------------------------------------- ... [%SYS/:%Z) INT c:\intersystems\cache\mgr\cachelib\ [%Z:%ZEN.) INT c:\intersystems\cache\mgr\ [%ZEN.:%ZEN/) INT c:\intersystems\cache\mgr\cachelib\ ... =============================================================================== ... a square bracket [] means that left or right margin is inclusive, while a parenthesis means that the margin is exclusive...
go to post Alexey Maslov · Oct 20, 2017 Yet another variant of quotes duplicator (pure Mumps): dupP(str) quit:str'[$c(34) str new strdup,j set strdup="" for j=1:1:$length(str,$char(34))-1 set strdup=strdup_$piece(str,$char(34),j)_$char(34,34) quit strdup_$piece(str,$char(34),j+1) Quick testing showed that the quickest variant is my initial $$dupquote(), $$dupocc() is very close (5-15% slower), $$dupP() took 3d place (2 times slower), $$QT() is the slowest (not surprise as it uses recursion). It was interesting to find that the good quality of $replace() implementation allowed it to beat $zutil(144,) "system" function. While I'll keep using it, analyzing Vitaliy's code I've found the error in my own $$dupP().