Thanks Stephen,
Its the same link but works from course page + in different browser
- Log in to post comments
Thanks Stephen,
Its the same link but works from course page + in different browser
??? and how do you include this in ENSEMBLE ???
Example WebService:
Example Schema1
<?xml version="1.0" encoding="UTF-8"?>
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<s:complexType name="Schema1">
<s:sequence>
<s:element name="Max_Results">
<s:simpleType>
<s:restriction base="s:long">
<s:minInclusive value="1"/>
</s:restriction>
</s:simpleType>
</s:element>
<s:element name="Home-State">
<s:simpleType>
<s:restriction base="s:string">
<s:maxLength value="2"/>
<s:minLength value="2"/>
</s:restriction>
</s:simpleType>
</s:element>
<s:element minOccurs="0" name="Office-State" type="s:string"/>
<s:element minOccurs="0" name="Name-Startswith" type="s:string"/>
</s:sequence>
</s:complexType>
</s:schema>
Example Schema2
<?xml version="1.0" encoding="UTF-8"?>
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<s:complexType name="Schema2">
<s:sequence>
<s:element minOccurs="0" name="Results" type="ArrayOfSchema2Result"/>
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfSchema2Result">
<s:sequence>
<s:element maxOccurs="unbounded" minOccurs="0" name="Schema2Result" nillable="true" type="Schema2Result"/>
</s:sequence>
</s:complexType>
<s:complexType name="Schema2Result">
<s:sequence>
<s:element minOccurs="0" name="Home-Address" type="Address"/>
<s:element minOccurs="0" name="Office-Address" type="Address"/>
<s:element minOccurs="0" name="Person-Name" type="s:string"/>
<s:element minOccurs="0" name="Person-ID" type="s:long"/>
</s:sequence>
</s:complexType>
<s:complexType name="Address">
<s:sequence>
<s:element minOccurs="0" name="Street">
<s:simpleType>
<s:restriction base="s:string">
<s:maxLength value="80"/>
</s:restriction>
</s:simpleType>
</s:element>
<s:element minOccurs="0" name="City">
<s:simpleType>
<s:restriction base="s:string">
<s:maxLength value="80"/>
</s:restriction>
</s:simpleType>
</s:element>
<s:element minOccurs="0" name="State">
<s:simpleType>
<s:restriction base="s:string">
<s:maxLength value="2"/>
</s:restriction>
</s:simpleType>
</s:element>
<s:element minOccurs="0" name="Zip">
<s:simpleType>
<s:restriction base="s:string">
<s:maxLength value="5"/>
</s:restriction>
</s:simpleType>
</s:element>
</s:sequence>
</s:complexType>
</s:schema>
You may take this approach:
create an object based on Schema1: My.Schema1
create an object based on Schema2: My.Schema2
HowTo: => XML Schema Wizzard
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY…
Then you may use this method.
My.Schema1 is checked as input parameter according tothe generated class
inside your Method you transform it to My.Schema2
and return it.
The most tricky thing might be how to reply to a request that doesn't match Schema1.
Rebuild takes time - ONCE
and gives you the unique chance to fill the created index in contiguous global content blocks.
That pays back at ever access by less global pointer blocks whatever storage technology you use.
Nope
https://learning.intersystems.com/pluginfile.php/15097/mod_resource/con…

Next:
Download PDF
downloads a html page but with .PDF termination.
I'm not an expert on callout but deep back in history I believe to remember that what ever you
transfer is in wider sense a single item. If string structured by $p() or $lb().
You my take a closer look to %XML.SAX.* classes.
The highest structure is $LB(). Which is a string under cover.
And take care of the 32k limit
so $lb($$$FIXSTR,text) since $L(text) is included there anyhow
and $$$FIXSTR tells you that it's < 32
why not $lb(166,"Fringe") ?
I'd suggest to use $LB() if you are not hit by the LongString limit.
why: all packaging, selection,.... is already done and "hard wired" in C++
with $C() you may re-invent $LB() or $Piece() or similar. And you have to do it in COS.
Same applies to local array where you may iterate over the structure in COS again.
Nothing against COS but C++ (in COS Functions) IS faster
Thank you, Dan!
I was pretty sure to miss some cases.
SOID is probably the one nobody else would be aware of that it exists.
similar in practice if you run bookkeeping as a service.
master has full access and has the responsibility for the content. Using Work class
clients have just read access to most fields. Using Client class.
I didn't say tax control doesn't see everything.
Using Government class
A few recommendations:
#2) save you original Global as you do otherwise. [Just to be Save]
#1) In Studio Copy class has a checkbox to copy Storage Definition (=Globals) . Set it.
In the new class add ClassParameter MANAGEDEXTENT=0 ;
So the old and the new class use the same Globals.
Now go on with #3 to #6
If you miss something in refactoring the damage should be limited as you just change names not the Storage in Globals.
Assuming the change of ClassName is all you do.
I see. It's hard generated
IndexNext distracted me
But you may call it individually. With your sequence then.
For %BuildIndices you may provide a list or use default. it doesn't affect sequence
example from Sample.Person.1.Int
%Save does it straight by ASSCII sorting of index names (lower after Upper case)
See %SaveData(id) in the generated .int
ok.
You followed the direction: that you mark the "unavailable" value by a UNIQUE value.
So for SQL it's NOT NULL.
I agree with you that NullString (COS) => String of length 0 and NULL(SQL) is confusing
[since invention of SQL in the late 60ties]
Take a closer look to %Library.Date, %Library.TimeStamp, %Library.Integer
and you will see the various methods for LogicalTo.....
The switch you select applies to the final presentation only. Not to internal calculations.
I think there is a basic misunderstanding of what NULL means in SQL.
NULL in SQL means unknown / undefined value / any value
Which is to my understanding a clear contradiction to uniqueness.
If you assign yourself something indicating NO VALUE ( e.g '') then it works but it isn't NULL anymore in the sense of SQL.
as documented in
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY…
DATEPART delivers a %Integer value.
Differently to %Date which has different display, logical and ODBC presentation %Integer does not follow any specific presentation but is just Integer and nothing else.
And your input to DATEPART function is in any example the same: the logical value of TimeCreated.
To cover your expectations you would need to adapt your input yourself. eg by %ODBCOUT() function.
or the related LogicalToDisplay function.
Your expectation that a data type %Integer does a revers research how it was calculated is just un-realistic.
A Total different idea.
if Transaction.Account is defined as Account object (could also be calculated)
[ Property Account as Account ; ]
then you may use implicit join for your query.
it looks like this:
OK, that looks better ![]()
now go to Mgmt Portal /SQL and verify for both tables that you see values in column Selectivity (marked)
IF THERE IS NO SELECTIVITY ANY QUERY PLAN IS JUST GUESSWORK.

if this is empty Query Generator just can guess and do a lot of unnecessary extra work.
so got Tune Table click it

and this you get there information that the Query Generator allows to make useful optimizations (marked)

Next enter your specific query and click to "Show Plan"
that marked information tells you what is happening and Relative Cost qualifies the expected performance.
This query plan tells you what is really happening.
At first sight I'd say the Query Generator is right as your Sub Select Just adds some more WHERE conditions.
Your range on Transction.Date with related index might be much more limiting than your range on Account.Id.
A index on Account.Type might also speed up your query.
?? Is Account.Name the same as Account.Id ???
IN ( ) expects EXACT VALUES !
Suggestion if no done yet: Run tune Table for both tables
Next: publish the generated Query plan.
much faster and straight forward string conversion then $ZD* stuff doing unnecessary conversions .![]()
![]()
24 hrs is fine. but which time zone? UTC,EST, ...?
Rollig it along the globe will extend it to be 48 hrs.
I assume you know where you get your email address from.
The rest is straight COS and your code my look like this
Exact !
That's the way it was done since .... {ever}
A dirty hack:
- make a new class extending %SerialObject with VALIDIFNULL set.
- export your serial classes (to XML)
- replace %SerialObject by your MySerialObject
- reload the changed classes.
Not so nice but I had the same issue with some 100 Serial Objects.
The more sophisticated way would be do it programatically over %Dictionary.DefinedProperty .....
Very interesting and very time consuming
You have to set $ZTRAP again at the begin:
Or start with do infile^myroutine ....
at the 1. run it is set i line 3
you my also pass the filename as parameter