go to post Robert Cemper · Nov 27, 2020 Correct.After 20 years working with CSP since day 2.5 I just don't feel like discussing and explaining CSP internals anymore and argue against obviously wrong statements. There is enough public detailed documentation around .
go to post Robert Cemper · Nov 26, 2020 Set Property Parameter %JSONNULL = 1 Property Code As %String(%JSONNULL = 1); Code = "" >>> "Code":null Code =$c(0) >>> "Code":""
go to post Robert Cemper · Nov 26, 2020 @Rob Tweed , @Dmitry Maslennikov Congratulations to you both! That's real ENGINEERING !
go to post Robert Cemper · Nov 24, 2020 If you can grab a Caché distribution you will find in %cachedir%\dev\cpp\ several samples and required sources
go to post Robert Cemper · Nov 24, 2020 did you check $zf(-3,... $zf(-4,...., ........ https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=BGCL_dynamicandhttps://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_fzf-4alsohttps://cedocs.intersystems.com/latest/csp/docbook/Doc.View.cls?KEY=BGCL_library
go to post Robert Cemper · Nov 24, 2020 the generated file: ------------------------------------------------------------------------------------------ <br><p> <nobr>Klasse <b>zrcc.EX.ISOS</b> </nobr><p>Execute InterSystems ObjectScript over ODBC</p><a name="Anchor_Inventory"></a> <table class="Label" cellpadding="0" cellspacing="0" cols="1"> <tr valign="center"> <td align="left" width="100%" > <a href="#" onclick="expandIt(1); return false;" class="PackageChoice" title="Expand/Collapse Inventory" onmouseover="this.style.color = 'red';" onmouseout="this.style.color = 'black';"> <image id=Im1 src=/csp/sys/images/ExpandedMarker.jpg height=15 width=16 border=0 align=bottom> <nobr><b>Inventory</b></nobr></a> </td> </tr> </table> <br> <div id="Id1" class="DivShow" style=""> <table class="Summary" cellpadding="0" cellspacing="0" cols="1"> <tr valign="center"> <th align="center"> Parameters </th> <th align="center"> Properties </th> <th align="center"> <a href="#Anchor_Methods">Methods</a> </th> <th align="center"> Queries </th> <th align="center"> Indices </th> <th align="center"> ForeignKeys </th> <th align="center"> Triggers </th> </tr> <tr> <td align="center" class="private"> </td> <td align="center" class="private"> </td> <td align="center"> <a href="#Anchor_Methods">3</a> </td> <td align="center" class="private"> </td> <td align="center" class="private"> </td> <td align="center" class="private"> </td> <td align="center" class="private"> </td> </tr> </table> <br/> <br/></div> <a name="Anchor_Summary"></a> <table class="Label" cellpadding="0" cellspacing="0" cols="1"> <tr valign="center"> <td align="left" width="100%" > <a href="#" onclick="expandIt(2); return false;" class="PackageChoice" title="Expand/Collapse Summary" onmouseover="this.style.color = 'red';" onmouseout="this.style.color = 'black';"> <image id=Im2 src=/csp/sys/images/ExpandedMarker.jpg height=15 width=16 border=0 align=bottom> <nobr><b>Summary</b></nobr></a> </td> </tr> </table> <br> <div id="Id2" class="DivShow" style=""> <table class="Summary" border="0" cellspacing="0" cellpadding="1"> <tr><th colspan="3" title="Bold for local member; italics for inherited; shaded for private; blue for client methods; strikethrough for deprecated.">Methoden</th></tr> <tr> <td nowrap><a class="" href="#METHOD_Gset" title="zrcc.EX.ISOS">Gset</a></td> <td nowrap><a class="" href="#METHOD_Ping" title="zrcc.EX.ISOS">Ping</a></td> <td nowrap><a class="" href="#METHOD_Xcmd" title="zrcc.EX.ISOS">Xcmd</a></td> </tr> </table><br/> <br/></div> <a name="Anchor_Methods"></a> <table class="Label" cellpadding="0" cellspacing="0" cols="1"> <tr valign="center"> <td align="left" width="100%" > <a href="#" onclick="expandIt(3); return false;" class="PackageChoice" title="Expand/Collapse Methods" onmouseover="this.style.color = 'red';" onmouseout="this.style.color = 'black';"> <image id=Im3 src=/csp/sys/images/ExpandedMarker.jpg height=15 width=16 border=0 align=bottom> <nobr><b>Methods</b></nobr></a> </td> </tr> </table> <br> <div id="Id3" class="DivShow" style=""> <a name="Gset"></a> <a name="METHOD_Gset"></a> <span class="external"><nobr>• classMethode <b>Gset(glob As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr>, subs As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr>, val As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr> = "", dd As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25Integer">%Integer</a></nobr> = 1)</b> as <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr></nobr> [ SQLProc = Gset ]</span><blockquote> set / kill global over ODBC subs = subscript in ( ) dd = $data of source during global copy</blockquote> <a name="Ping"></a> <a name="METHOD_Ping"></a> <span class="external"><nobr>• classMethode <b>Ping()</b> as <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr></nobr> [ SQLProc = Ping ]</span><blockquote> check connectivity</blockquote> <a name="Xcmd"></a> <a name="METHOD_Xcmd"></a> <span class="external"><nobr>• classMethode <b>Xcmd(cmd As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr>, ret As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr> = "")</b> as <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr></nobr> [ SQLProc = Xcmd ]</span><blockquote> eXecute Command over ODBC name of local variable for return value</blockquote> -------------------------------------------------------------------------------------------
go to post Robert Cemper · Nov 24, 2020 Hi @Yuri Marx!I did a quick and dirty try during lunch in terminal: set %library=$namespace set set %request=##class(%CSP.Request).%New() set cdef=##class(%ClassDefinition).%OpenId("zrcc.EX.ISOS") ; my classname set file="my.html" o file:("WNS"):0 write $t ; 1 if OK use file d ##class(%CSP.Documatic).RenderClassPage(cdef,1) close file The result still holds references to /csp/...images and data types <image id=Im1 src=/csp/sys/images/ExpandedMarker.jpg height=. . . <a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a>that you might want to resolve as they are quite generic or you just ignore it .My browser is very friendly :-)And that's the result:Some polishing might be required
go to post Robert Cemper · Nov 24, 2020 hi @Yuri Marx ;In IRIS you (typically) have documatic included http://<server>:52773/csp/documatic/%25CSP.Documatic.clsfrom Windows-Cube you have ClassReference in Studio you see I have no idea in VSCode. And you get: or in a new window: which is straight HTML
go to post Robert Cemper · Nov 22, 2020 For i=2:1:$LENGTH(line) { set $PROPERTY(SourceTable, "Field"_i) = $PIECE(line, "|", i)using $PROPERTY() } Use $PROPERTY()
go to post Robert Cemper · Nov 21, 2020 @Anna Golitsyna If you have access over ODBC this article may help you. https://community.intersystems.com/post/objectscript-over-odbc
go to post Robert Cemper · Nov 20, 2020 It all sounds like a software provider in maintenance for its customers.But then, I would connect with Studio (or similar), place my code and run it from the embedded terminal.
go to post Robert Cemper · Nov 19, 2020 It might be a hard exercise to manage write access from a local and a remote instance to a common DB at the same time.
go to post Robert Cemper · Nov 18, 2020 There is no direct way.BUT:If SSH is installed on your server you may connect to a CMD session (e.g by using PuTTY) over SSH[ Windows DOS prompt ]From there you can run %cachedir%\bin\Csession.exe by local access without using Telnet.
go to post Robert Cemper · Nov 18, 2020 Congratulations ! I'm personally moved!Since when I asked for something similar in 2005 I got a massive push-back by a person that is no longer with ISC mgmt.
go to post Robert Cemper · Nov 17, 2020 PuTTY works for me without problems for 10 years now (at least)
go to post Robert Cemper · Nov 16, 2020 Hello @Anna Golitsyna!the 3rd example is 1 class that contains 2 basic functionalities: A Server and a Client.The system you want to control runs the ClassMethod Server.- opens an IP port and listens for orders, execute it, and continue looping.- it is typically started in the background during system start (from %ZSTART.mac)This is the "hidden Login"The (Classmethod) Client connects to the listening port and sends a request and gets answers.The structure of Requests and Answer is up to you and makes sure you have always controlover what should happen on the remote system. As your "Listener" is active already thereis no need for any further login. But you are of course free to implement it on top of this basic mechanic.
go to post Robert Cemper · Nov 13, 2020 I confirm it is easy and works !Take the screenshot BEFORE submitting.
go to post Robert Cemper · Nov 13, 2020 The basic logic is hierarchically organized as an extended B+ tree. wiki