use Do $System.OBJ.ShowObjects() to list your refernced objects.
The output goes to $IO or eventually a TmpCharStream.
The start of the last line is your count of orefs .
- Log in to post comments
use Do $System.OBJ.ShowObjects() to list your refernced objects.
The output goes to $IO or eventually a TmpCharStream.
The start of the last line is your count of orefs .
the dotted syntax works in the same routine as curly braces.
There was a different question recently with such code.
The confusion comes up when you use curly braces INSIDE a dotted section.
as the nesting is calculated by the dots at the start of the line this causes confusion.
So cascading and intermixing is a NoNo.
on the other hand
is an equivalent to
-
As dots are always in sequence a move to { } shouldn't be that hard.
Though I admit: It's additional effort
It starts with the basic definition:
What is LEGACY for you? any MUMPS dialect (DTM. DSM, ISM, ...) ?
From the language elements, there is all included and possible. what was available in MUMPS.
Except that System variables may have some differences that need to be checked.
In general, you have enhancements at all levels: Commands, Functions, Variables
One of the significant differences is variable scoping.
In legacy MUMPS you had your partition and all variables were visible everywhere.
In COS this visibility is managed at various levels and you have to take control over the variable scope.
see this articles:
Variable scope in .mac routine?
Summary on Local Variable Scoping
Of course, interaction with external devices and peripheral is different.
But this doesn't affect programming style.
I assume you have some special techniques in mind.
For questionable cases, this forum is the place to get help at almost any level.
And often it's more than a single unique solution but a choice of variants the members offer.
I personally have seen code written on DSM-11 in 1978, copied to Caché and running without change.
This was core logic. Communication with peripherals needed adaption. No surprise.
An interesting combination!
But (from Sample.Person):
there isn't that much to win.
If it then ends with %Save() it is kind of a prefetch of the global buffer.
I saw it mostly used instead of %Open() loading / swizzling the whole object in memory
if just 1 specific property was required.
(A kind of direct global access in disguise) ![]()
do you have any indication if this is just isModified()
or if new content is checked against old content
Reason: in past isModified () just checked write access, not the content.
So a change from TRUE to FALSE and back to TRUE between %OpenId() and %Save() was marked as change (false positive)
so this was finally dropped in favor of GetStored()
where is m%PropName documented?
all I found is:
Internally, Caché also uses additional instance variables with names such as r%PropName and m%PropName,
but these are not supported for direct use.
And no hint how they could be used.
If you look for a dedicated Property You may use <propertyname>GetStored(id) to compare against the object in memory
e.g.
so you bypass also the case when a value is written back finally unchanged (false modified)
![]()
but I doubt that XML Schema Wizard will do anything useful with a .dtd definition.
To use httpS:// in xml schema wizard you need to definde an SSL configuration in SMP System > Security Management > SSL/TLS Configuration.

the file comes with the standard Caché /Ensenble distribution kit and should be installed
At least in a UNICODE installation. I verified it for 2016.2 and later. But it should be here even earlier.
I should add that I have no idea if iths is the right one. It is just the only one for Chinese I know of.
If you miss it you should contact WRC.
and your class should have class parameter DDL Allowed
Ok. this was clear to understand.
You require 2 ALTER TABLE
1) add column N_REGIONKEY2 to 'host' your foreign key
ALTER TABLE PCD.NATION
ADD COLUMN N_REGIONKEY2 INTEGER
2) add foreign key
ALTER TABLE PCD.NATION
ADD CONSTRAINT NATION_FK
FOREIGN KEY (N_REGIONKEY2) REFERENCES TPCD.REGION(R_REGIONKEY);
1) install gbk character set table to your instance (if available)
??? ....\InterSystems\Cache\mgr\Locale\allmessages_zh-cn.xml ???
2) use $zconvert() to translate it.
if 1) fails you may trigger an external converter using $ZF(-2 ,....)
or use command pipe to run an external conversion.
What error is "some" ?
Detailed description on ADD FOREIGN KEY
Look especially on
Go to the Management Portal, select [Home] > [Configuration] > [General SQL Settings]. View the current setting of
Allow DDL ADD Foreign Key Constraint When Foreign Key Exists.
my assumption; you have installed CSP Gateway on your public website
If you remove port 57772, then HTTP uses default port 80
At that server your "page" is unknown and you get back 404
I suggest checking the firewalls on your way starting with the server of your public website. to let 57772 in
my 2ct.
Hint:
backup of %SYS is good for recovery but not recommended for a copy
there a lot of instance related settings (e.g. config) included that may cause serious problems in the copy.
Online backup can run for exactly selected DBs.
It gives an exact image taking also care for all changes during the backup process.
requirement:
-Journal for the DB must be active at least during the backup process.
- enough disk space to hold the backup
to verify your mailing is working correctly it is useful to get the mail server in your hands
hMailServer is one of several others.
Here is a lot of information on Intersystems IRIS to reduce confusion.
Your InterSystems sales rep will have more.
contact your sales rep.
Laura,
there is something like .....
Ens.Util.XML.Reader
especially ##class(Ens.Util.XML.Reader).ObjectFromString(. . . )
But you have to fix ther error pointed out by @Eduard Lebedyuk anyhow
Jordi,
TSTART, TROLLBACK TCOMMIT is totally unrelated to LOCKing
it neither requests a LOCK nor does it release.
So to have no LOCK at all nothing prevents you from
The short time internal LOCK during %Save() is handled inside Save
In your example:
you just miss
to unlock your transaction
As there is no further reaction at all I assume this is the summary of the solution:
dynamicObject -> Message to be sent
Property Test as %String (MAXLEN="") ;
Set classObj.Test = DynamicObject.%ToJSON()
Message received -> dynamic Object
Just to be complete
Of course at the receiving end
This will fail now with <INVALID OREF>
Since request.Test is now of type %String and not a dynamic object.
You now need to recover your dynamicObject from %String
OK. now we see that the dynamicObject is broken somehow
Pls. forget "store it as it is" all you store is the oref (a pointer to a local structure) with no persistent storage behind.
so you don't get an error if you just apply %ToJSON() ???
If your version is before 2016.2 than .$toJSON() would be the right method
You didn't indicate the line you get the error.
anyhow the message is clear:
Either classObj or dynamicObject is not what you expect it to be.
If you test from Terminal you can use
ZWRITE classObj
ZWRITE dynamicObject
to see what they are.
otherwise, you may comment out one line and see if it still breaks e.g.
So you see what happens. I expect: my dynamicObject = 0
So you see where you have to investigate further
is it defined that way?
Property Test as %String (MAXLEN="") ;
ATTENTION - default MAXLEN = 50 !!!!!
This might look odd but try
so you see if the issue is your property
or your dynamic Object. as there are 2 objects in the command.
the only thing %String is checked against is Length.
otherwise. if %ToJSON() fails your dynamic object is broken somehow