You are totally right.
With Parent-Child your data are not only logical but also physically tied to each other.
One-to-many allows you more flexible handling of Relations.
Just one out of many examples M:N Relationship
- Log in to post comments
You are totally right.
With Parent-Child your data are not only logical but also physically tied to each other.
One-to-many allows you more flexible handling of Relations.
Just one out of many examples M:N Relationship
Exactly 4 weeks before UK is leaving the European Union on Friday, March 29th this sounds like kind of British humor to me.
Thanks @Jeffrey Drumm !
I always distrusted HL7 separators and ESC chars. when I first met them ages back as they carry the same limit as $PIECE() with them:
"There is always somewhere some odd case where your separator turns up as content. "
Praise $LB()
!
if \E is just a synonym for <ESC> than use instead
set remove=$c(27)
set remove="\E"set hl7="OBX|1|RP|ECG||CARDIO ECG^APPLICATION^PDF^^\E\\E\sitehopital.org\E\files\E\cardio\E\022018\E\GE274583.PDF|"set clean=$replace(hl7,remove,"") write cleanOBX|1|RP|ECG||CARDIO ECG^APPLICATION^PDF^^\\sitehopital.org\files\cardio\022018\GE274583.PDF|Nice, you finally shared your real intentions.
for that case passing the variables by reference should be sufficient.
I see 5 options :
So you have a choice what fits best to your needs.
interesting observation with CHPC 65001:
a loop USER>for i=1:1:255 write i," ",$c(i),! stops the session with any character > $c(127).
I'd suggest forget that M$ crap.
Use Putty or any thing else.
Cache for Windows (x86-64) 2018.1.1 (Build 312U) Thu Jan 3 2019 14:34:00 EST
BTW.
zwrite @reader.GlobalName
USER>zwrite @reader.GlobalName
^||CacheTemp=5
^||CacheTemp(5,1)=$lb("element","","Oceano","Oceano",0,1)
^||CacheTemp(5,2)=$lb("element","","Header","Header",0,2)
^||CacheTemp(5,3)=$lb("element","","DataSource","DataSource",0,3)
^||CacheTemp(5,4)=$lb("chars","Oceano","")
^||CacheTemp(5,5)=$lb("endelement","","DataSource","DataSource")
^||CacheTemp(5,6)=$lb("element","","DataType","DataType",0,3)
^||CacheTemp(5,7)=$lb("chars","EDAttendance","")
^||CacheTemp(5,8)=$lb("endelement","","DataType","DataType")
^||CacheTemp(5,9)=$lb("endelement","","Header","Header")
^||CacheTemp(5,10)=$lb("element","","Body","Body",0,2)
^||CacheTemp(5,11)=$lb("element","","MIU","MIU",0,3)
^||CacheTemp(5,12)=$lb("element","","Department","Department",0,4)
^||CacheTemp(5,13)=$lb("chars","BCH","")
^||CacheTemp(5,14)=$lb("endelement","","Department","Department")
^||CacheTemp(5,15)=$lb("element","","TotalNumber","TotalNumber",0,4)
^||CacheTemp(5,16)=$lb("chars","6","")
^||CacheTemp(5,17)=$lb("endelement","","TotalNumber","TotalNumber")
^||CacheTemp(5,18)=$lb("element","","NumberWaitingToBeSeen","NumberWaitingToBeSeen",0,4)
^||CacheTemp(5,19)=$lb("endelement","","NumberWaitingToBeSeen","NumberWaitingToBeSeen")
^||CacheTemp(5,20)=$lb("element","","LongestWaitMin","LongestWaitMin",0,4)
^||CacheTemp(5,21)=$lb("endelement","","LongestWaitMin","LongestWaitMin")
^||CacheTemp(5,22)=$lb("endelement","","MIU","MIU")
^||CacheTemp(5,23)=$lb("element","","MIU","MIU",0,3)
^||CacheTemp(5,24)=$lb("element","","Department","Department",0,4)
^||CacheTemp(5,25)=$lb("chars","BOS","")
^||CacheTemp(5,26)=$lb("endelement","","Department","Department")
^||CacheTemp(5,27)=$lb("element","","TotalNumber","TotalNumber",0,4)
^||CacheTemp(5,28)=$lb("chars","1","")
^||CacheTemp(5,29)=$lb("endelement","","TotalNumber","TotalNumber")
^||CacheTemp(5,30)=$lb("element","","NumberWaitingToBeSeen","NumberWaitingToBeSeen",0,4)
^||CacheTemp(5,31)=$lb("chars","1","")
^||CacheTemp(5,32)=$lb("endelement","","NumberWaitingToBeSeen","NumberWaitingToBeSeen")
^||CacheTemp(5,33)=$lb("element","","LongestWaitMin","LongestWaitMin",0,4)
^||CacheTemp(5,34)=$lb("chars","109293","")
^||CacheTemp(5,35)=$lb("endelement","","LongestWaitMin","LongestWaitMin")
^||CacheTemp(5,36)=$lb("endelement","","MIU","MIU")
^||CacheTemp(5,37)=$lb("endelement","","Body","Body")
^||CacheTemp(5,38)=$lb("endelement","","Oceano","Oceano")
structure is OK, and it worked for me.
Removing all CR,LF,TAB,BLANK still looks good here.
Could you have some control characters in your string ?
USER>ZZDUMP myfile may show it
USER>write $TR(myfile,$c(13,10,9,32))
<Oceano><Header><DataSource>Oceano</DataSource><DataType>EDAttendance</DataType></Header><Body><MIU><Department>BCH</Department><TotalNumber>6</TotalNumber><NumberWaitingToBeSeen/><LongestWaitMin/></MIU><MIU><Department>BOS</Department><TotalNumber>1</TotalNumber><NumberWaitingToBeSeen>1</NumberWaitingToBeSeen><LongestWaitMin>109293</LongestWaitMin></MIU></Body></Oceano>
this happens if your variable myfile doesn't have a clean XML structure
check the content it. eg: https://www.w3schools.com/xml/xml_validator.asp
%Net.HttpRequest tells you all you need to know
By XML bit I understand you have some myfile="<mynode>anytext</mynode>" or similar in hands
so this should cover your needs:
or is the content of myfile something else ??
First, CACHETEMP doesn't maintain a Journal. (could be a minor advantage) .
Second, CACHETEMP follows a different storage strategy as it is kept in memory (global buffers) as long as affordable.
While for the other DBs data (global buffer blocks) get written to disk as soon as possible it is the opposite for CACHETEMP.
Third, CACHETEMP is common to all namespaces.
Forth, CACHETEMP is cleared at every restart and total empty after.
I doubt that this could be useful in an ECP setup.
to my understanding, there is no technical limit.
Though I believe to remember that it used to be ~16.000 some time in past.
Class SYS.Database maps to ^SYS("CONFIG","IRIS","Databases",<DBNAME>) and has NO limit there
similar Namespaces are stored in SYS("CONFIG","IRIS","Namespaces",<NSPCE>) an are covered by %SYS.Namespace
If there is any limit it must be related to internal memory structures. (gmheap ??)
Use either $ZF(-1,...) or $ZF(-100, ... )or CPIPE to talk to your OS on command level.
detals here:
see my 2 alternative solutions to use external adapters
and thanks again for the inspiration.
It was just in time for a business project.
In addition to the reply from @Evgeny Shvarov :
INT is highly important to identify error locations.
eg. <DIVIDE>label+5^routinename refers to the location in routinename.INT
Out of curiosity, I have built a more exotic solution that is easier to understand. (At least for me)
I don't like so much this protocol upgrade stuff and encrypting and simulation of a browser.
My personal workaround:
It works fine and is rather "classic CSP" style.
Great you confirmed my investigations !
OK.
I tried it and found: sock.Open( does not accept "/ws/v2/?&token=<token>" only the server name
Now you have the connection BUT no server to take care of it as you see:
Investigating the browser it became clear what's going on:
- you begin with HTTP to start your WebSocketServer
- an then initiate the WS connection.
This is the output from TcpTrace:
>>>>> GET /csp/samples/websocketdemo.csp HTTP/1.1 >> .......
>>>>> GET /csp/samples/Web.SocketTest.cls HTTP/1.1 >> ... >> Upgrade: websocket
That's my point:
With the actual approach starting the requres WS Server is missing.
To me, this looks like your port doesn't like WS as initial connection protocol but expect the switch from HTTPS -> WSS or the port is just wrong.
several suggestions for the investigation to get it moving:
#1) verify your server from a normal web page (e.g. based websocketdem.csp in Samples) especially the port !!!!
#2) If you have control over your server then skip SSL and get running over HTTP -> WS first. You can add this once it works.
#3) If you have no server just use Caché / SAMPLES / Web.SocketTest.cls
I found it very useful to have control over both ends and now I own several variants for testing.
Staying tuned ![]()
YES! you can!
Just extend the method (just some example)
#1) if it is a Caché Backup you need an Installation of Caché to restore it.
#2) if it is a CACHE.DAT file you also need an installation of Caché and mount this as an additional DataBase.
Without the installation of Caché it's a thrilling exercise to high-level experts. Not really advisable.
try to have the same processor type { big / little endian :== (Intel/AMD) or not } as the original Caché instances. This saves some headache.
Forget about SQL Server. Caché is far more efficient and advanced technology!
#1)
You need to get %Net.HttpRequest in hands to set your property Content Type.
#2)
instead of PutURL(...) you have to use method SendFormDataURL(....) of EnsLib.HTTP.OutboundAdapter
more details in docs here:
$ZDATETIME($NOW(),3) should fit. You then have the Seconds too.
at first sight, I miss in this piece of code
ClassMethod GetPage() As %String) [ ZenMethod ]
{ quit %session.Data("currPage") }
and
var pageNo = zenPage.GetPage() ;
I'd personally prefer that $LB(var) also follows the elementary rules of COS.
Though I have no hope on any ProdLog on this subject
as pointed out by Alexander Koblov already:
you can create a $LB() od $LB(undefined) and it's all the same
set a=$LB() zzdump a
0000: 01or
write $d(undefined)
0
set a=$lb(undefined) zzdump a
0000: 01
Your coincidence of NULL, null, Null, nuLL, .... is just an optical eye-catcher without syntactical relevance in COS