go to post Julius Kavay · Sep 19, 2022 The spirit of the time... we have to save water, energy, etc. Maybe we should save bytes too... // instead of this line if (($zabs($a($e(s1,cnt)) - $a($e(s2,cnt))) '= 32)) { return 0 } // try this one return:$zabs($a(s1,cnt)-$a(s2,cnt))-32 0
go to post Julius Kavay · Sep 19, 2022 That's is easy for the ASCII character set... (you didn't give any restrictions) ClassMethod CheckOpposite(s1,s2) As %Boolean { q $zb(s1," ",6)=s2 }
go to post Julius Kavay · Sep 15, 2022 what you need is a SIMPLE compare of two strings Set Ret=RSet.Execute() set currentTS = $zdt($h,3) // get onece the current timestamp While RSet.Next() { Set routeGuid="" Set nextScheduled=RSet.GetData(9) //I $ZDATETIME($h,3,1)>nextScheduled S ^badis("datetime",Id)=$ZDATETIME($h,3,1)_"|"_nextScheduled if currentTS ] nextScheduled S ^badis("datetime",Id)=currentTS_"|"_nextScheduled } In words: if currentTS follows (i.e. greater) nextScheduled - that's all.
go to post Julius Kavay · Sep 14, 2022 If you can't find the methods Vitaliy mentioned because (for example) your Cache version is too old, you can always reinvent the wheel and write your own encoder/decoder method. Where is the problem? This snippet could be a starting point Parameter Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; ClassMethod Base64Enc(x) { s f=-$l(x)#3, x=x_$e($c(0,0),1,f), y=..#Base64, z="" zt:$ziswide(x) "WIDE" f i=1:3:$l(x) s a=$a(x,i)*256+$a(x,i+1)*256+$a(x,i+2), c=262144 f j=1:1:4 s z=z_$e(y,a\c+1), a=a#c, c=c\64 s:f z=$e(z,1,$l(z)-f)_$e("==",1,f) q z }
go to post Julius Kavay · Sep 14, 2022 I assume, you want to change ALL ..#WhiteSpace chars to the delimiter, used by $piece() s $P(replace,",",$L(..#WhiteSpace) + 1)=""
go to post Julius Kavay · Sep 13, 2022 Some comments... (1) you can generate a string with the necessary commas, (2) also, the variable "l" is unnecessary and (3) after assigning to "m" the length of the first word, start the for-loop with the next (second) word... According to problem description, the string will never be empty, so an early "q 0" is also not necessary and for the case, this happens, the first piece of the string will have a length of 0. Parameter WhiteSpace = {$C(9,10,13,32,160)}; ClassMethod Short(t) As %Integer { s t=$zstrip($TR(t,..#WhiteSpace,$tr($j("",$l(..#WhiteSpace))," ",",")),"<=>",",") s m=$L($P(t,",")) f i=2:1:$L(t,",") {s n=$L($P(t,",",i)) s:n<m m=n} q m }
go to post Julius Kavay · Sep 13, 2022 In case, it's not a typo, tell me the secret of how to "shave symbols"
go to post Julius Kavay · Sep 13, 2022 You count the alpha-only words, "Let's, 21inc, ..." would't pass the check. So I changed your code to ClassMethod findShort(s) As %Integer { s s=" "_s_" " f i=1:1 { ret:s?@(".e1"" """_i_"anp1"" "".e") i } } I hope, it's OK...
go to post Julius Kavay · Sep 13, 2022 In case, the shortest word is longer then 200 chars, than the result will be wrong. Instead of using a constant (200) s l=$L(t,","),m=200 f i=1:1:l {s n=$L($P(t,",",i)) s:((n>0)&&(n<m)) m=n} use a more generic approach s l=$L(t,","),m=$L($P(t,",")) f i=2:1:l {s n=$L($P(t,",",i)) s:((n>0)&&(n<m)) m=n} Also, removing the unnecessary delimiters (commas) simplifies the code too ClassMethod Short(t) As %Integer { s t=$zstrip($TR(t,$C(9,10,13,32,160),",,,,,"),"<=>",",") s m=$L($P(t,",")) f i=2:1:$l(t,",") {s n=$L($P(t,",",i)) s:n<m m=n} q m }
go to post Julius Kavay · Sep 13, 2022 A small change (two bytes longer) to your solution makes it perfect, I think, for all cases ClassMethod findShort(s) As %Integer { f i=1:1 ret:$locate(" "_s_" "," [^ ]{"_i_"} ") i } BUT, and that's, what I want to say: this function is an awesome demonstration of economic nature of ObjectScript in comparison to Java. Your one-liner vs. a whole page of code... I love ObjectScript! Sorry, that had to be said...
go to post Julius Kavay · Sep 2, 2022 Take a look on the documentation of an (old) Cache instance (download the latest Cache 2018.x from WRC, if neccessary). There is a ZEN tutorial. You can follow the samples on IRIS, the ZEN classes are part of IRIS installation. Do not ask me for details, I have never used ZEN.
go to post Julius Kavay · Aug 17, 2022 I'm sure, someone has a more elegant solution, anyway, I do it the quick-and-dirty way: ClassMethod Lines(nsp = {$namespace}) { s (cls,sum)="" s glo=$na(^|"^"_##class(%SYS.Namespace).GetGlobalDest(nsp,"oddDEF")|oddDEF) f {s cls=$o(@glo@(cls)),mth="" q:cls="" f s mth=$o(@glo@(cls,"m",mth)) q:mth="" s sum=sum+$g(^(mth,30)) } q sum }
go to post Julius Kavay · Aug 15, 2022 The only tricky thing is the (web)management portal. Put the following few lines into a "test.html" file and the open it with your favorite browser. <html> <head></head> <body> A simple text with some spaces<br> <pre>A simple text with some spaces</pre> </body> </html> You see the difference?
go to post Julius Kavay · Aug 15, 2022 Did you check this or are you just saying that? What does this query show? select MyColumn, length(MyColumn) from TableA
go to post Julius Kavay · Jul 27, 2022 You can take the line from your own code, but with a suitable parameter Set BASE64=BASE64_file.Read(someCount) // someCount = aNumber * 3 For example 30000 instead of 32000. By the way, you read (8 bit) bytes, so there is no need to do the output-UTF8 conversion.
go to post Julius Kavay · Jul 27, 2022 First of all, it's meaningless to post several KB of raw data. Either provide it somewhere for download or make an attachment (if possible). Second, Base64 encodings converts 3 (incoming) bytes into 4 (outgoing) bytes, this means you always (except the last one) have to read multiple of 3 bytes at once, convert it, and put into the output stream. Your file.Read() reads 32000 bytes, which is NOT a multiple of 3!
go to post Julius Kavay · Jul 9, 2022 After spending about 30 seconds on Google, I found following links https://www.astm.org/e1394-97.html // ?? https://toolkits.horiba-abx.com/documentation/download.php?id=71068 // downloads a pdf https://meganorms.com/st-astm-e1394-97.html https://www.iso.org/obp/ui/#iso:std:iso:18812:ed-1:v1:en ... and many other links Don't ask me,how accurate they are...
go to post Julius Kavay · Jul 4, 2022 I have an (some ten years old) one which I use in the %ZSTART routine. Sometimes (for maintenance or whatever other reasons) you have to (re)start Cache and nowdays IRIS, but you want to start just some of the automatic processes listed in %ZSTART. If you forgot to disable those other before shutdown a init-file comes handy to disable things before start. A sample section looks like this: [Start] # 0 = do not start # 1 = start LoginServer = 1 UserLogin = 0 SystemTasks = 1 UserTasks = 0 I added some more comments to the class, you can download the InitFile.xml (class export) from my FTP server (which will be open for the next few days). Addr: ftp.kavay.at User: dcmember Pass: member-of-DC
go to post Julius Kavay · Jul 1, 2022 sorry, in front of me is a linux... but what about iris terminal <instanceName> Does this work for you?