go to post Alexander Koblov · May 20, 2020 Hi Mark. I don't know where "undefined" word comes from on the trace, but when %XML.Reader reads empty element it reads it as character with code 0 -- $char(0), that corresponds to empty string in SQL: Class Community.Test Extends (%RegisteredObject, %XML.Adaptor) { Property StatusLastChecked As %String(XMLPROJECTION = "element"); ClassMethod test() { set xml = "<root><Test><StatusLastChecked></StatusLastChecked></Test></root>" set reader = ##class(%XML.Reader).%New() do reader.OpenString(xml) do reader.Correlate("Test","Community.Test") do reader.Next(.obj) zw obj } } USER>do ##class(Community.Test).test() obj=3@Community.Test ; <OREF> +----------------- general information --------------- | oref value: 3 | class name: Community.Test | reference count: 2 +----------------- attribute values ------------------ | StatusLastChecked = $c(0) +----------------------------------------------------- So in your code you can compare with $C(0). Also for details on handling empty strings, see following section in documentation: Handling Empty Strings and Null Values
go to post Alexander Koblov · May 20, 2020 Hi David. Source code for EnsLib.FTP.InboundAdapter is available in the installation. EnsLib.FTP.InboundAdapter calls method %Net.FtpSession:List to get files. And that method uses "LIST" command. EnsLib.FTP.InboundAdapter:OnTask executes following resultSet to get files: Set tSC=..%CurrResultSet.Execute($this,..FilePath,..FileSpec,..SubdirectoryLevels,$S(..%isSFTP:"FileListSSH",1:"FileList"),..SemaphoreSpec) Quit:$$$ISERR(tSC) And in OnInit, ..%CurrResultSet is initialized as follows: Set ..%CurrResultSet=##class(%ResultSet).%New($$$CurrentClass_":DeepList") Query DeepList is defined in EnsLib.File.Common, and it's just a proxy for the query that is passed as 5th parameter to the Execute -- FileList in this case. And EnsLib.FTP.Common:FileList calls %Net.FtpSession:List.
go to post Alexander Koblov · May 20, 2020 What Caché version do you have? On my 2018.1.3 instance code is following: // Look for pattern : version "1.8.0.1 // where the double quote may optionally be replaced with a single quote or ommitted Set regex = "version\s['""]?(\d+(\.\d+)+)" Set pos = $Locate(pOutput,regex,1,,versionWithPrefix) // Get just the number from the previous pattern : 1.8.0.1 Set regex = "(\d+(\.\d+)+)" Set pos = $Locate($Get(versionWithPrefix),regex,1,,version) Notice -- $Get around versionWithPrefix. Most likely Caché cannot find java home dir. Specify Java Home Directory in JDBC Gateway Server settings.
go to post Alexander Koblov · Apr 13, 2020 Hi Asif. We recommend that you don't import whole library in Java Gateway Wizard. Create simple wrapper class with methods that you are going to call from Ensemble. And import only that class. Specify library only as a classpath. With that approach Ensemble will create only basic proxy class.
go to post Alexander Koblov · Feb 20, 2020 To get status of ECP servers you should use class SYS.ECP in %SYS namespace [1] It has methods GetClientConnState and GetServerConnState [1] https://docs.intersystems.com/iris20194/csp/documatic/%25CSP.Documatic.c...
go to post Alexander Koblov · Feb 19, 2020 Hi Anzelem. If that is the question on how you can disable telnet -- then you should disable service %Service_Telnet in System Administration > Security > Services. https://cedocs.intersystems.com/ens201813/csp/docbook/DocBook.UI.Page.cl...
go to post Alexander Koblov · Feb 19, 2020 Hi Laura. First question -- what algorithm does openssl_public_encrypt use? PHP reference [1] and source code [2] says that this is RSA. So in Ensemble you can use $system.Encryption.RSAEncrypt() [3] Important thing to note about RSA encryption, is that length of the plaintext can not be greater than the length of the modulus of the RSA public key contained in the certificate minus 42 bytes. [1] https://www.php.net/manual/en/function.openssl-public-encrypt.php [2] https://github.com/php/php-src/blob/master/ext/openssl/openssl.c#L5549 [3] https://cedocs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cl...
go to post Alexander Koblov · Feb 17, 2020 Thanks for sharing Paul. Though reference article for $username has this documented: $USERNAME contains the username for the current process. This can be in one of two forms: The name of the current user; for example: Mary. This value is returned if multiple security domains are not allowed. The name and system address of the current user; for example: Mary@jupiter. This value is returned if multiple security domains are allowed. To allow multiple security domains, go to the Management Portal, select System Administration, Security, System Security, System-wide Security Parameters. Select the Allow multiple security domains check box. Changes to this setting apply to new invoked processes; changing it does not affect the value returned by the current process. https://cedocs.intersystems.com/ens201813/csp/docbook/DocBook.UI.Page.cl...
go to post Alexander Koblov · Feb 12, 2020 Following command lists all collations. Even not loaded: %SYS>do ^COLLATE E.g. %SYS>w $zv IRIS for Windows (x86-64) 2019.1.1 (Build 612U) Mon Oct 28 2019 11:29:24 EDT %SYS>do ^COLLATE Status Number Abbrev Name ---------- ------ ------ ---------------------- Built-in 0 OANS ISM Pre-6.2 Built-in 1 ANSI ISM 6.2->6.4 Built-in 2 COBR Ipsum/Cobra Built-in 3 DTMC DTM-compatible Built-in 4 CBR2 Ipsum/Cobra-2 Built-in 5 UNIC IRIS standard Not loaded 10 GER1 German1 Not loaded 11 POR1 Portuguese1 Not loaded 12 POL1 Polish1 Not loaded 13 GER2 German2 Not loaded 14 SPA1 Spanish1 Not loaded 15 DAN1 Danish1 Available 16 CYR1 Cyrillic1 Not loaded 17 GRE1 Greek1 Not loaded 18 CZE1 Czech1 Not loaded 19 CZE2 Czech2 Not loaded 20 POR2 Portuguese2 Not loaded 21 FIN1 Finnish1 Not loaded 22 JAP1 Japanese1 Not loaded 24 POL2 Polish2 Not loaded 27 FRE1 French1 Not loaded 28 FIN2 Finnish2 Not loaded 29 HUN1 Hungarian1 Not loaded 30 GER3 German3 Not loaded 31 POL3 Polish3 Not loaded 32 SPA2 Spanish2 Not loaded 33 DAN2 Danish2 Not loaded 34 GRE2 Greek2 Not loaded 35 FIN3 Finnish3 Not loaded 36 LIT1 Lithuanian1 Available 37 CYR3 Cyrillic3 Not loaded 38 SLO1 Slovenian1 Not loaded 39 SLO2 Slovenian2 Not loaded 40 TUR1 Turkish1 Not loaded 41 DAN3 Danish3 Available 42 UKR1 Ukrainian1 Available 43 CYR4 Cyrillic4 Not loaded 44 CZE3 Czech3 Not loaded 46 MAL1 Maltese1 Not loaded 48 MAL2 Maltese2 Not loaded 49 SPA4 Spanish4 Not loaded 50 SLO1 Slovak1 Not loaded 51 SPA5 Spanish5 Not loaded 52 FIN4 Finnish4 Not loaded 53 CZE4 Czech4 Not loaded 54 GER4 German4 Not loaded 56 FRE2 French2 Not loaded 57 GER5 German5 Not loaded 58 NOR1 Norwegian1 Built-in 128 OSTR ISM Pre-6.2 string Built-in 129 NSTR ISM 6.2->6.4 string Built-in 133 USTR IRIS standard string Available 144 CYR1S Cyrillic1 string Available 165 CYR3S Cyrillic3 string Available 170 UKR1S Ukrainian1 string Available 171 CYR4S Cyrillic4 string
go to post Alexander Koblov · Feb 5, 2020 Hi Brian. I never used Crystal Reports, however code 30 might correspond to "Table or view not found". See https://cedocs.intersystems.com/ens201813/csp/docbook/DocBook.UI.Page.cl...
go to post Alexander Koblov · Jan 16, 2020 Web Gateway user (CSPSystem) should have permissions to read database where custom login page is located. Enable events logging in Audit, reproduce the NOT FOUND error and you'll see events logged.
go to post Alexander Koblov · Dec 18, 2019 Hi Vikram. Looks like you trying to use InterSystems IRIS Power BI Adaptor to connect to Caché. This adaptor does not support Caché. Use ODBC connection to connect to Caché from Power BI. Hope this helps, Alexander.
go to post Alexander Koblov · Dec 2, 2019 Hi Laura. There should be only one copy of zenutils.js. It should be only in csp\broker. CSP Gateway first looks for any static file (including zenutils.js) in appropritate folder (.e.g. csp\samples). If file is not present there, CSP Gateway then looks for that file in csp\bpoker. Hope this helps, Alexander.
go to post Alexander Koblov · Dec 2, 2019 The best way to handle such problems is: a) Enable Audit (System Administration -> Security -> Auditing) b) Enable logging of audit events LoginFailure and Protect (Configure System Events) c) Reproduce the error d) Check Audit database if it has any reported LoginFailure or Protect events. If yes -- check details of these events.
go to post Alexander Koblov · Nov 28, 2019 Hi Thembelani. See InterSystems IRIS Adoption Guide (available in WRC -> Online Distributions -> Docs) %Library.CachePopulate was renamed to %Compiler.Type.Populate
go to post Alexander Koblov · Nov 27, 2019 The best I know is $TR/$J combination: USER>w $TR($J("",10)," ","x") ; repeat x 10 times xxxxxxxxxx USER>w $TR($J("",5)," ","y") ; repeat y 5 times yyyyy
go to post Alexander Koblov · Oct 7, 2019 Relative cost is only used to compare different plans for the same query. Relative cost is not useful for comparing two different queries. Can you post screenshot of both queries with corresponding plans?