you may take this example from OpenExchange:
https://openexchange.intersystems.com/package/Light-weight-EXCEL-download
Al you have to do is to out-comment in
this line :
and the table goes to your browser.
- Log in to post comments
you may take this example from OpenExchange:
https://openexchange.intersystems.com/package/Light-weight-EXCEL-download
Al you have to do is to out-comment in
this line :
and the table goes to your browser.
you have to mimic %Next() as %session.Data is a Multidimensional Array)
COS is the acronym for Caché Object Script.
It is the oldest programming language in Caché , Ensemble, ... .
BTW. Your new approach looks promising and safe.
A native COS example is available in Open Exchange now.
WebSocket Client Demo in IRIS 2020.1
If I understand you correct you expect something like
INSERT INTO new.MESSAGE (SELECT * from EnsLib.HL7.Message where id = ? )
this may work for rather modest designed relational tables but I doubt it will work for some complex structure as EnsLib.HL7.Message .
Subclassing is not the way to solve your problem for 2 reasons:
There are ways to do something like this if you fiddle around in the storage structures.
BUT: for reasons of transparency, documentation, and maintainability
I'd strongly recommend to use DTL.
Fiddling around with COS in Ensemble is a rather tricky exercise.
Based on practical experience I can confirm that your successors will never forget you.
IRIS 2020.1 !!!
Ok It works in IRIS 2020.1 (e.g against
The attempt of a backport failed for IRIS 2019.1 and Cache2018.1.3
There seem to be more serious changes than just the client code itself.
you are fully right.
I just checked in Class Reference:
stream class %CSP.CharacterStream extends %GlobalCharacterStream, %CSP.Stream
I started with %Stream.GlobalBinary, ... wondering what the problem might be.
Thinking over ENSEMBLE I moved to %GlobalBinaryStream
@Tomas Vaverka
Ahoi, can you watch my local terminal from remote?
You describe pretty much my investigation! ![]()
Hi Jenna,
I took some time to verify my suspicion. (Caché 18.1)
You depend on the type of stream that is used in your object
#A) %Library.GlobalBinaryStream or %Library.GlobalCharacterStream
Which seems to be your case ![]()
![]()
it's not a big surprise as ENSEMBLE may still use the old style.
#B) using %Stream.GlobalBinary, ...
Not as string.
Parameters are stored as sub-object with the class object in %Dictionary.* classes.
And serve as Information for the code to be compiled.
Great !
Did you try a backport to Caché (18. or so) ?
PARAMETER and DISPLAYLIST are both compiler directives and you can't mix them.
But you may workaround it by writing your own pair of DisplayToLogical / LogicalToDisplay ClassMethods for this property´.
Hi Nigel,
About a year ago a faced a similar problem and found 2 possible workarounds.
Instead of writing a WS client a delegated it out to JavaScript.
#1) Using CSP
#2) my preferred one with node.js
Both examples are available on OpenExchange
as Websockets ar so natural to JavaScript the result is no rocket science.
Stay healthy
@Julius Kavay is fully correct.
The compiler was first written ~10 years before the idea of LLVM started @ University of Illinois.
Various interfaces allow your development very close to the data store.
I'd suggest you contact your Sales Engineer @ InterSystems (Darmstadt ?) for disclosure of internals.
Guess this comes from Cut/Paste
And keep the cooking description for your future updates
The official way is to log an ENHANCEMENT REQUEST at WRC portal.
And wait.
it is an IRIS export
while for Cache it ooks like this:
<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25">
it might be sufficient to change 26 to 25 to make your Caché happy
You don't have a great chance, but you may dig it down like this
And I assume once seen you get your display faster than this cycles where I had no idea on the subscript structure before
.png)
.png)
.png)
.png)
to estimate the age of ^%G take a look to copyright
.png)
.png)
I don't know of reverse order
BUT if you have some idea of the last subscript you may enter the starting subscript.
instead of seeing the whole Global ^CONFIG
.png)
just one specific subscript ^CONFIG("Telnet"
.png)
os starting from a specific subscript ^CONFIG("Telnet":
.png)
or from:to subscript ^CONFIG("ECP":"Journal"
.png)
or just the select subscript level with a closing bracket ^CONFIG("ECP":"Journal").png)
Basically it is the same behavior of the ancient (not to say antique) routine ^%G
When it was written traversing a Global in reverse order was not implemented in Caché nor ist'S predecessors.
So no reverse display
It has a help function that tells you it's capabilities DO HELP^%G
just use a single liner from terminal for the last 10 lines or any number you need
Hi Jenna,
my personal experience with binary over HTTP is painful.
I'd suggest using Base64-Encoding (which means ASCII readable Characters only)
The downside is you have to decode it at the receiver side.
But that way it should be foolproof over across all proxy-, web- and other servers in between.
HTTP was invented when there was EBCDIC for 8 bit and ASCII for 7 bit. And some transport software hasn't improved since.
why not use a free local mail server for testing?
I personally use the german speaking Hamster. But there are lots of them. Google is your friend
make your formula f = x + 20(y*y) > z
a calculated, SQLcomputed property in your TABLE
and provide it with a bitmap index and it will run distributed and be incredible fast
docs:
https://docs.intersystems.com/iris20192/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_proplit#GOBJ_proplit_computed
https://docs.intersystems.com/iris20192/csp/docbook/Doc.View.cls?KEY=RSQL_C145362
error -400 means there is an internal error
It might be caused by using object properties as :context.anyname inside embedded SQL
give it a try and use "simple variables" as :%myanyname , :%myShipmentTrackingNo
and fill the context object outside the embedded SQL
as you do with SQLCODE
I'm surprised you don't see the obvious performance difference of looking for something of distinct length at the beginning of a string
vs. scanning an eventual rather long string for some bytes somewhere eventually including also composed strings as %AB%CD%.
keep in mind: Caché is built for speed, not for the comfort of the average programmer
%STARTSWITH relates better to Caché internal structures and is faster in larger scale