go to post Alexander Koblov · Jul 30, 2019 To get environment variable you can use $System.Util.GetEnviron(). And to get current folder -- $system.Process.CurrentDirectory().
go to post Alexander Koblov · Jul 19, 2019 Indeed, documentation [1] says that this is "Number of private global data blocks used by this process.". So this is due to process-private globals You can inspect these global using ^GETPPGINFO utility [2] [1] https://irisdocs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page... [2] https://irisdocs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page...
go to post Alexander Koblov · Jul 5, 2019 Hi Colin. You can get .Net bindings package from Components section of WRC download page (https://wrc.intersystems.com/wrc/coDistGen.csp)
go to post Alexander Koblov · Jul 2, 2019 Thank you Alexey. Yes, you are correct, second statement is correct. I've asked to modify first statement.
go to post Alexander Koblov · Jul 1, 2019 Hi Fab! Changes to globals mapped to non-journaled databases are still journaled inside transactions. Unless globals are mapped to IRISTEMP or journaling is completely stopped at the system. Quoting the docs: "While updates to non-journaled databases that are part of transactions are journaled, these journal records are used only to roll back transactions during normal operation. These journal records do not provide a means to roll back transactions at startup, nor can they be used to recover data at startup or following a backup restore." https://irisdocs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page...
go to post Alexander Koblov · Jun 27, 2019 Hi Nael Not possible, as far as I know. You can play with $stack. Something like this: set Result=$$MyFunc(1,.Out) quit MyFunc(Param1,Param2) write $stack($stack-1,"MCODE"),! set Param2="it's all good" quit 1 USER>d ^test set Result=$$MyFunc(1,.Out) But here you are looking at parsing plain strings, and this is error-prone.
go to post Alexander Koblov · Jun 17, 2019 You should use Locate: Set tRegEx = "<[^>]*>" Set htmlSnippet = "<h1>Hello1</h1><h1>Hello2</h1>" Set regex=##class(%Regex.Matcher).%New(tRegEx) set regex.Text = htmlSnippet while regex.Locate() { write "Found ",regex.Group," at position ",regex.Start,! } Also it's not possible to parse generic HTML with regular expressions (https://stackoverflow.com/a/1732454/82675). Limited subset of HTML -- maybe.
go to post Alexander Koblov · Jun 13, 2019 Reason for "0.001005933" being string is not that it is less than 1, but that it's not in a canonical form. That is -- it has integer zero before decimal point. Put '+' before expression: USER>Set MsgDT = "20180405000000001005933" USER>Set MsgDTH = + $ZTH(($E(MsgDT,9,10)_":"_$E(MsgDT,11,12)_":"_$E(MsgDT,13,14)_"."_$E(MsgDT,15,23)),1) USER>write MsgDT=20180405000000001005933 MsgDTH=.001005933
go to post Alexander Koblov · May 23, 2019 Both Caché and InterSystems IRIS support ODBC. So you can connect to them from PHP via ODBC.
go to post Alexander Koblov · May 13, 2019 There is a qualifier /incremental that allows incremental compilation. Check if it's enabled and try to disable it: See "Flags and Qualifiers" section: https://docs.intersystems.com/ens20101/csp/docbook/DocBook.UI.Page.cls?K...
go to post Alexander Koblov · Apr 12, 2019 Jimmy, what version do you use? Try to upgrade to latest available version -- 2018.1.2 for Caché, perhaps this error is fixed there.
go to post Alexander Koblov · Apr 4, 2019 David, can you please provide provide SQL generated by the Entity Framework that is not valid and error that is generated.
go to post Alexander Koblov · Apr 4, 2019 Lucas, Log that you provided spans from March 19th 09:35 to March 20th 14:43. Depending on moments when application was unavailable you need to look in different records of csp.log For example, 1) Exception caught in f:csp: c0000005:4600 c0000005 is the code for an access violation. I would advise to you to try installing latest release version of CSP Gateway, or if this error still appears there, contact InterSystems Worldwide Response Center to fix this error. 2) CSP application closed the connection before sending a complete response This is most likely something with the code of the page "/csp/erp/system/lib/filtro.csp". It started to write some answer back and then closed the connection, for example process terminated itself with halt 3) Configuration Error: Insufficient space in the configuration buffer Configuration block Size: 126397; Size of configuration block to insert: 55114; Space available: 68611 (Consider setting CONFIG_BUFFER_SIZE=112K (or higher) in the [SYSTEM] section of CSP.ini) This message is self-explanatory 4) Failed to connect to 'csp' - Reason: -8 (Server busy: Gateway's configured limits exceeded) (No Retry) CSP Gateway can limit number of total connections to server and connections per session that it makes to Caché. See parameters "Maximum Server Connections" and "Maximum Connections per Session" here. Generally for IIS-specifics read section "Microsoft IIS All Versions" of CSP Gateway configuration guide. And for general configuration of CSP Gateway -- chapter "CSP Gateway Operation and Configuration".
go to post Alexander Koblov · Apr 4, 2019 Caché ODBC drivers are located here: ftp://ftp.intersystems.com/pub/cache/odbc/ InterSystems IRIS ODBC drivers -- here: ftp://ftp.intersystems.com/pub/iris/odbc/
go to post Alexander Koblov · Mar 28, 2019 Check that after &SQL(SELECT ...) value of SQLCODE is checked.
go to post Alexander Koblov · Mar 12, 2019 Please see this question: https://community.intersystems.com/post/difference-between-method-and-cl...
go to post Alexander Koblov · Mar 4, 2019 For drawbacks of Parent/Child relationships see this comment by @Brendan Bannon
go to post Alexander Koblov · Mar 1, 2019 No, indirection does not introduce additional stack, as far as I know. It works with variables that are visible in public (global) scope, not in private scope of procedure.
go to post Alexander Koblov · Feb 28, 2019 Quoting doc: "Name indirection, argument indirection, and XECUTE commands that appear within a procedure are not executed within the scope of the procedure." https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY... Consider method: Class Test.test [ Abstract ] { ClassMethod ind() { kill info set active = 1 set i="active" set @i = "global scope" break } } Output: USER>do ##class(Test.test).ind() break } ^ <BREAK>zind+5^Test.test.1 USER 2d1>w active="global scope" <Private variables> active=1 i="active" Notice private variables and public variables.