go to post Robert Cemper · Dec 28, 2017 Pls. move this request away from "Community Feedback " to Group "Caché" to make it public visible.I just found it by accident. it is in you Caché installation %CACHEROOT%\dev\java\lib\JDK17\...%CACHEROOT%\dev\java\lib\JDK18\...whatever you may need
go to post Robert Cemper · Dec 28, 2017 I like macros but I'm always careful concerning their public availability.This has changed to often over recent releases.
go to post Robert Cemper · Dec 28, 2017 You are totally right. I tried to stick with the original questions. And I wouldn't formulate it that "traditional" way.As you noticed there are more efficient and meaningful constructs possible.
go to post Robert Cemper · Dec 27, 2017 Try "" instead of null which would be a variable named null do $$$AssertEquals(myObj, "", "myObj is null")or set null="" do $$$AssertEquals(myObj, null, "myObj is null")or to cover undefined as well do $$$AssertEquals($GET(myObj), "", "myObj is null")
go to post Robert Cemper · Dec 27, 2017 My sample took somewhat longer to prepare then Edward's and Gerd's#1) to evaluate SQL statements use MgmtPortal/ Explorer/SQL and check the generated query plan.#2) if you don't use special attributes to SELECT clause or sub-queries all SQL statements are strictly worked from left to right. your first statement is ok for SQL your 2nd is just a fragment that I interpreted as to be a sub-querySummary: they are not identical.Now the example transformed for namespace SAMPLES to have 3 tables as A, B, and C:select A.id,B.id,c.Id from sample.person A left join sample.employee B on A.id = B.spouse inner join sample.company C on B.company = C.id Row count: 100Query Plan:Relative cost = 4200Read extent bitmap Sample.Employee.$Employee, looping on ID.For each row: Read master map Sample.Employee.IDKEY, using the given idkey value. Read extent bitmap Sample.Person.$Person, using the given ID. For each row: Read master map Sample.Company.IDKEY, using the given idkey value. Output the row. transformed to sub-queries:select aid,bid,cid from(select A.id aid, b.id bid, b.company cid from sample.person A left join sample.employee B on A.id = B.spouse) inner join sample.company C on cid = C.id it is obviously identic ! just more expressive.Row count: 100Query Plan:Relative cost = 4200Read extent bitmap Sample.Employee.$Employee, looping on ID.For each row: Read master map Sample.Employee.IDKEY, using the given idkey value. Read extent bitmap Sample.Person.$Person, using the given ID. For each row: Read master map Sample.Company.IDKEY, using the given idkey value. Output the row.the next LEFT_JOIN(A,INNER_JOIN(B.C)) requires immediate transformationselect A.id,bid,cid fromsample.person A left join(select b.id as bid,c.id cid, b.spouse bsp from sample.employee B inner join sample.company C on B.company = C.id) on A.id = bspRow count: 237 (!!!!)Query Plan:Relative cost = 32408Read extent bitmap Sample.Person.$Person, looping on ID.For each row: Call module E. Read temp-file A, using the given VIEW column #3, and looping on VIEW counter. For each row: Generate a row padded with NULL for the view if no row qualified. Output the row.module ERead extent bitmap Sample.Employee.$Employee, looping on ID.For each row: Read master map Sample.Employee.IDKEY, using the given idkey value. Read master map Sample.Company.IDKEY, using the given idkey value. Increment view row counter. Add a row to temp-file A, subscripted by VIEW column #3 and VIEW counter, with node data of VIEW column #1 and VIEW column #2.So both variants are possible though the result is differentHTH,
go to post Robert Cemper · Dec 27, 2017 As alternative to copy you can also map ^EnsPortal.SavedSearch* in your secondary namespace to use it in parallel.
go to post Robert Cemper · Dec 27, 2017 Telnet port 23 is typically blocked on Unix/Linux Servers.I'd suggest to use some other terminal program with support of SSH to log in (eg. Putty www.putty.org)But be aware on UNIX/LINUX you log in to a shell and have to start csession for "Terminal like" access
go to post Robert Cemper · Dec 26, 2017 the key difference is that you can pass the classname by a variable.So you are prepared to get the classname passed by some other method.In your example with a constant string"circle"you miss the key advantage and It's of o added value.BTW. Correct is $classmethod("circle.radius","%New")http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Robert Cemper · Dec 22, 2017 For testing with Terminal I typically use PuTTY. http://www.putty.org/There I can have multiple terminals with separated Sessions/$JOB in parallel without problem.(pls. don't ask how )Terminal driver changes to a free set of ports ( 51133|10088) as you see by $IOso it's no problem to have multiple terminal sessions connected USER>w $io|TNT|127.0.0.1:51133|10088I have no idea if Atelier allows multiple Terminals . And if how to launch them.In Atelier just click again to the Terminal Open Icon:
go to post Robert Cemper · Dec 21, 2017 is Enable %Service_Telnet set ?in the Management Portal (http:///csp/sys/sec/%25CSP.UI.Portal.Services.zen) My Caché runs on Win .(I'm not sure if this works also for Caché on Unix )It does NOT work for Unix:%Service_TelnetYesYesUnauthenticatedUnrestrictedControls Telnet sessions on a Windows server So on UNIX you go to bash and have to start via csession....
go to post Robert Cemper · Dec 21, 2017 so what you are looking for is something similar to XML IGNORENULL = 1short time ago I ended up with export to XML and then convert XML to JSON.Not so impressive but better than chasing unwanted "".
go to post Robert Cemper · Dec 21, 2017 Right: if you don't establish TELNET connection it's just bash or MS-DOS depending on your local OS.Also for local localhost access !so from Help:Using the Terminal Plug-in Telnet ConnectionIf your Caché instance is on a remote Windows server, you will need to connect using Telnet.Enable %Service_Telnet from the Management Portal (http:///csp/sys/sec/%25CSP.UI.Portal.Services.zen)In the main menu, select Show View > Other > Terminal > Terminal, or click this link to open the Terminal View.Select the Open a Terminal button on the Terminal view toolbar. Select Telnet Terminal from the Choose terminal drop down menu.Complete the Telnet session configuration and click "OK"If csession isn't in your PATH, navigate to your instance's bin directory. For example, cd C:\InterSystems\Cache\bin.Launch a Caché terminal session. For example, csession Cache.Setup ConnectionAnd you get your Caché Terminal HTH
go to post Robert Cemper · Dec 21, 2017 Funny to meet amCharts again as I presented it first to customers as alternative to ZEN graphicsaround 2011/12 with Caché 2011.1
go to post Robert Cemper · Dec 20, 2017 and keep quiet when it installs. this is not Caché and it takes it's time (I just spent 25 min for an Update/Upgrade)
go to post Robert Cemper · Dec 20, 2017 It is. I have used it some time ago.You need a suitable plug in and connect to port 23 of your server (provided it is not blocked by Win* firewall.plugin from the following update repository: http://download.eclipse.org/tm/terminal/marketplace/.From your Eclipse/Atelier workspace, navigate to Help > Install New Software from the main menu.Enter the URL for the Terminal plugin update site in the Work with field. Ensure that the Group items by category check box is selected.Once the groups are displayed, select the check box by the newest version.Click Next to open the Install Details page. Review your installation choices.Click Next to open the Review Licenses page. Accept the license terms and click Finish.To open the Terminal view, select Window > Show View > Other on the main menu and type "terminal" in the filter box. Select Terminal and OK.
go to post Robert Cemper · Dec 20, 2017 Because it's so easy I've added a solution for those readers that don't refuse to work with Caché Objects & Classes .Class Definition Class DC.productListing Extends (%RegisteredObject, %XML.Adaptor) { Property product As %String(CONTENT = "MIXED", XMLPROJECTION = "CONTENT");} Simple display method ClassMethod Show(xml As %String(MAXLEN="")){ set rd=##class(%XML.Reader).%New() ,sc=rd.OpenString(xml) do rd.Correlate("product","DC.productListing") while rd.Next(.obj) { write !,"######"_$i(cnt)_"#########",$replace(obj.product,$c(10),$C(13,10)) }}Extended test dataUSER>write xml<productListing title="ABC Products"> <product> <name>Product One</name> <description>Product One is an exciting new widget that will simplify your life.</description> <cost>$19.95</cost> <shipping>$2.95</shipping> </product> <product> <name>Product 2</name> <description>Product 2 is an exciti</description> <cost>$19.95</cost> <shipping>$2.95</shipping> </product> <product> <name>Product 3</name> <description>Product 3 is simplify your life.</description> <cost>$19.95</cost> <shipping>$2.95</shipping> </product></productListing>USER>ResultUSER>do ##class(DC.productListing).Show(xml) ######1######### <name>Product One</name> <description>Product One is an exciting new widget that will simplify your life.</description> <cost>$19.95</cost> <shipping>$2.95</shipping> ######2######### <name>Product 2</name> <description>Product 2 is an exciti</description> <cost>$19.95</cost> <shipping>$2.95</shipping> ######3######### <name>Product 3</name> <description>Product 3 is simplify your life.</description> <cost>$19.95</cost> <shipping>$2.95</shipping> USER>
go to post Robert Cemper · Dec 20, 2017 what's wrong with Caché Objects and Classes ?I remember, you had a similar fear some time ago