go to post Dmitry Maslennikov · Aug 17, 2016 if you need add a string, you should concatenate it with operator _+ converts all types to number, and doing arithmetical operator add7_"" became "7"+"5apples" became 5
go to post Dmitry Maslennikov · Aug 17, 2016 Both of this are completely different products. Where: Ensemble is an Integration platform, and DeepSee is an Business IntelligenceAlso, you can look at some learning courses from InterSystems, about Ensemble and DeepSee and Caché
go to post Dmitry Maslennikov · Aug 17, 2016 because + is an operation for numbers, and yes, answer is correct, because 5 + 7 is 12if you expected to see "5apples7 orange", in this case you should use concatenate operator "_"write "5apples" _ "7 orange"
go to post Dmitry Maslennikov · Aug 17, 2016 Macro is $$$. Anyway, a little excerpt from documentation $ Dollar sign (36): Intrinsic (system) function prefix: $name(parameters).Special variable prefix: $name.$Znnn (a name beginning with $Z) can be a user-defined function or special variable defined using %ZLANG language extension library. It can also be an intrinsic (InterSystems supplied) function or special variable.Regular expression end of string anchor; for example, (USA)$.In ZBREAK debugging, a single-step breakpoint.As first character at terminal prompt, load interactive subshell.$$ Double dollar sign: Extrinsic (user-written) function prefix: $$name(parameters). $$ is returned by $STACK when context was established by an extrinsic function reference.Prefix to a routine name to directly invoke that routine.$$$ Triple dollar sign: Macro invocation prefix.
go to post Dmitry Maslennikov · Aug 16, 2016 What do you mean by dynamic sessions ?Web sessions in Caché only two types, preserve or not. Preserve just keep working in the same process, for all request in this session, and keeps every locks. By default sessions, instead, only keeps data in %session.Data, and release locks after end of request.
go to post Dmitry Maslennikov · Aug 10, 2016 You can do it as in any CSP page/class. With %request, which is object of class %CSP.Request And headers available in property CgiEnvs, where every http header appear with a prefix HTTP_ So, you may try this code. set ipCountry=%request.GetCgiEnv("HTTP_CF-IPCOUNTRY")
go to post Dmitry Maslennikov · Aug 9, 2016 Unfortunately in times when web-applications prevail other types of applications this approach is cannot be widely used. This way can't be used directly in CSP, because of by default any session could be joined to any process, but Procces-private globals is not session-provite globals. And If you need to have such functionality with CSP, you should use Preserve sessions or use something like Sessions-private global, something like this ^CacheTemp.SomeTableD($select($isobject($get(%session)):%session.SessionId,1:$job))
go to post Dmitry Maslennikov · Aug 7, 2016 Good article, but unfortunately I don't see the answer for last part for the question "How can I minimize the phenomena?"So, in my practise, such behavior, in most cases related with some application's buffer globals, or logging globals. And mostly we don't need in this journal, because it is not important part of our data, and we should not spend important resources for doing this. And we can cut off journalling for such globals. There are some ways to do it: Remap such globals to another database with disabled journaling. But this way has some exceptions, any changes in transactions, should be journaled in any way.Use ENABLE^%NOJRN to disable journaling non-transact changes, and return back with DISABLE^%NORJN.Remap to database CACHETEMP, which disabled for all changes, even in transaction.
go to post Dmitry Maslennikov · Aug 5, 2016 As you have not showed full example of your code, I suggest that you use wrong class for fileStream.For any text's you should use Character's stream, such as %Stream.FileCharacter, %Stream.GlobalCharacter
go to post Dmitry Maslennikov · Aug 5, 2016 In this case you can use windows tool SC, to get information about services. and to work with SC, you can use $zf(-1), and it will looks something like this set result=$zf(-1,"sc query messenger | FIND ""STATE"" | FIND ""RUNNING""") if result'=0 write "Service messenger is not running"
go to post Dmitry Maslennikov · Aug 5, 2016 GlobalsDB, no more developing, thats why this site has some issues.You may find you answer in this exactly the same question, asked few days ago
go to post Dmitry Maslennikov · Aug 2, 2016 All replacements for different $zu you can find hereso, in case with $zu(49), you can get such information with class SYS.Database, and it's not delimited now, and has properties
go to post Dmitry Maslennikov · Aug 2, 2016 In this case, for $match you should define regex which match full given string, so it could looks like write $Match("Find String ABC",".*(abc|ABC).*") 1 or you can use $locate, which returns position for first matched string write $locate("Find String ABC","abc|ABC")>0 1
go to post Dmitry Maslennikov · Jul 26, 2016 You should know, that namespace it is a just definition in which databases stored some types of data, and how it mapped. So, you can only check in which database package stored write ##class(%SYS.Namespace).GetPackageDest("SAMPLES","%Activate.Enum") ^/opt/cache/mgr/cachelib/ delimited output, first part is a system like in ECP-configuration, and second part is a database path you can compare this path with default path for packages in this namespace. w ##class(%SYS.Namespace).GetPackageDest("SAMPLES","") ^/opt/cache/mgr/samples/
go to post Dmitry Maslennikov · Jul 26, 2016 Sure, thats needs because this variable should be available in any place for this process, just because this code executes in context where works any output commands like write
go to post Dmitry Maslennikov · Jul 26, 2016 I would recommend regexr.com and regex101.com as a tools for testing regular expressions, this tools a bit simpler, but works online and cost nothing.
go to post Dmitry Maslennikov · Jul 22, 2016 You have two cases, you change storage definition or you can use calculated value. But in case with calculated value, you have two options. It's an object's access and sql access, and such getter it is just only for object's access. For SQL you should define SqlComputeCode. Something like this.Property Invalid As %Library.Boolean [Calculated, SqlComputed, SqlComputeCode = { s {*}={+$G(^GLOBAL({Code},"INVALID"))} }];more details in documentation
go to post Dmitry Maslennikov · Jul 22, 2016 $zhexhex to dec write $zhex("99") 153 and back, dec to hex write $zhex(153) 99 be careful, hexadecimal should be a string and decimal should be a number