I was unsure if I counted all separators right.
but if you got it from Message Viewer it should be correct.
did you verify you really got the message in hands? eg, by a TRACE or similar ?
- Log in to post comments
I was unsure if I counted all separators right.
but if you got it from Message Viewer it should be correct.
did you verify you really got the message in hands? eg, by a TRACE or similar ?
Assuming your separators are |~^&
and if I counted correctly than FT1:16.... is empty but FT1:17.4.2 is 06CL
very comfortable as I always use FFX for searching
congratulations! ![]()
You are right! This may work only in special situations.
I reproduced your case simplified.
SQL inbound adapter keeps a list of processed ids:
if your id is in there it is skipped. Could be there is some other trick but not as in docs.
the list looks like this
ENSDEMO>zw ^Ens.AppData("SQLservice")
^Ens.AppData("SQLservice","adapter.sqlparam","%LastKey")=198
^Ens.AppData("SQLservice","adapter.sqlrow",196)=1
^Ens.AppData("SQLservice","adapter.sqlrow",197)=1
^Ens.AppData("SQLservice","adapter.sqlrow",198)=1
^Ens.AppData("SQLservice","adapter.sqlrow",199)=1
^Ens.AppData("SQLservice","adapter.sqlrow",200)=1
^Ens.AppData("SQLservice","adapter.sqlrow",201)=1
^Ens.AppData("SQLservice","adapter.sqlrow",202)=1
^Ens.AppData("SQLservice","adapter.sqlrow",203)=1
Manually removing it fixed my demo.
may the patience be with you

according to your description I'd rather assume that you look for this functionality, especially concerning %LastKey
classmethod ClearStaticAppData(pConfigName As %String)
Clear static data for a config item. This is normally used to store already-processed status for input files, and other persistent values related to adapters, such as the %LastId for the SQL Inbound Adapter.
or
classmethod InitializeLastKeyValue(pConfigName As %String, pNewLastKey As %String = 0) as %String
Excellent idea to narrow it down and limit the environment
or you make use of a $HALT routine
A Compile has also an errlog parameter ist is clear that it does an inner error trapping.
.
therfore at termination it doesn't end in your catch{ }
I think it may even react specially on RESJOB by just doing a HALT.
in a development environment, you may try to investigate this using a %ZSTOP routine
first option:
get the schema behind *.XSLX and import it using XML Schema wizard.
It's incredible huge covering all XLS features you know and also that you don't want to know.
several hundred classes. XML Schema Wizard
I gave up by lack of understanding where to start. I'm not strong with XLS features.
second option:
use ActiveX_64 to access *.XLS
in Windows, your Studio has an Activate wizard that creates access to your local installed DLL.
so you need to have EXCEL installed on your server.

The wizard generates still a remarkable number of classes but it is more comprehensive
using them you can do Scripting in EXCEL. Activate Wizard
be careful to really get the 64bit version of the DLL
Sorry, IIS is also not my world.
I remember a similar situation some years back with a rather sophisticated multilevel directory structure on UNIX.
The final solution, especially for al kind of searching in unique file names, was a class
with the filename as ID and directory, summary, creation date, last modification as properties.
The search (in SQL) out performed anything used before.
The only extra work was kind of a register at file creation/modification which happened at a moderate rate.
+ a nightly batch job to verify and do the reality check.
no details. what OS pls.?
It is not directly what you look for but GlobalReferences are to some extent proportional by some factor to instantiations.
especially if you deduct GlobalReads.
##CLASS(%SYS.ProcessQuery) could be a source for those figures
if you compare it to "normal" code it could be an indicator.
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);