Article Timur Safin · Jul 18, 2016 15m read

This article created as side effect of preparations to the longer set of articles about simple, but still handy MapReduce implementation in Caché. I was looking for relatively easy way to pass arguments to (potentially) multiple targets via remote calling facilities. And after several attempts I have realized that we do have very powerful mechanism in the Caché ObjectScript which might be of particular help here – dynamic dispatch for methods and properties.

Since Caché 5.

7
0 1340
Question Juliana Schallert · Jul 20, 2016

Hi,

I am new to Cache and I am trying to convert a JSON string (msgdata) that contains a JSON payload to an object to be saved into a Driver. Entity table.  I am running into 2 issues and would appreciate any help:

1) It seems that when the 1st element of a list within the payload (Choices) is an empty string, after I call %ConvertJSONToObject, the obj.%data("payload").Choices contains just 1 empty element, removing the next 3 valid values (10,20,30). The same does not happen if I change the input to [10,20,"",30], in this case it works correctly.

3
0 1144
Question Rustam Ibragimov · Jul 20, 2016

Hello, guys. 

I want to add a class to my project. This class is in UDL format. 

I know that there is a method:  ##class(%Compiler.UDL.TextServices).SetTextFromStream. The problem is that to use this method I need to know the name of the class (including all packages) in advance. But,  a class can have any name(I mean C:/source/AAA/BBB/CCC.cls, but the real name is Sample.Human.cls).

For now I found only one way to get to know the name of a class - just parse the class code and search for a word which is followed by "Class" word. Is there any better way to do that? 

P.S.

6
0 487
Article Leo Makowski · Jul 15, 2016 5m read

              While Studio and Atelier are useful development interfaces, there are occasionally situations where a quick edit needs to be made to code and only terminal access is available.  A useful set of tools to do this are the zload, zprint, zinsert, zremove, and zsave commands.  These are abbreviated to zl, zp, zi, zr, and zs respectively.  While each of these commands has its own page in documentation, this article will synthesize that information with examples to provide instruction for their combined use.

2
1 837
Question Raghu Kodumuri · Jul 14, 2016

Hello,

How to get XML subtree from XPATH.DOMResult object as Stream or CacheString.

Here is my classmethod. My system receives XML message which has nested structures. The requirement is to send one message at a time to the destination. I have created the XPATH document and used EvaluateExpression method and which returns XML.XPATH.Result of type DOM. I am able to read the dom and get value of the element and its text. But I am looking to send back the subtree.

8
0 1300
Question Marc Mundt · Jul 15, 2016

I was asked about using date-based criteria in the file spec for an inbound file adapter.
It looks like the file spec field only accepts simple wildcards (*, ?), so I'm wondering if someone knows of a clever way of doing this preferably without creating a custom adapter/service class.
An example of the use case:
An upstream system continually writes records to a file named with the current day's date. At midnight it opens a new file with the new day's date:

2016-07-14.dat
2016-07-15.dat
Shortly after midnight on July 15 we want Ensemble to pick up 2016-07-14.

4
0 639
Question Fabio Goncalves · Jul 19, 2016

I have a Zen Mojo application, developed using Bootstrap plugin and using "Explicit Dispatch" with multiple templates.

I have every template representing an specific area of my application (customer, order, logon, application settings, etc.). 

Each template has specific code,  client side validation and so on related to its areas by using javascript.

So, I would like to know if it is possible, for example, through my order template call a javascript function from another template (e.g.: customer), where I there is functions for document id validation, date of birth validation, etc.?

Thank you.

2
0 367
Question Alexandre Marques · Jul 18, 2016

I have two pages and I am using the push and pop to go and back navigation. When I click the button forward and back in the browser, I can't navigate more between pages.

 

The following code:

Page 1 - onSelect Method:
var obj = {idExame: VALID, objUsu: ObjUsu};
zenPage.gotoArea ('itemexames', key, key, false);
view.pushDocument (key, obj, key, obj);


Page 2 - onSelectMethod, back:

var documentKey = "PacienteExamesinitial";
var layoutKey = "PacienteExamesinitial";
var area = "pacienteexames";

view.popDocument ();
zenPage.gotoArea (area, layoutKey, documentKey, false);

 

I am using ZenMojo with Bootstrap.

4
0 467
Question Greg Billington · Jul 14, 2016

I am looking for a database management tool I would have expected to find something like on the SMP website

 

Aim

show current database usage (ie size allocation) by database then table etc and allow continued drill down,

show information as a table, so can then sort by size to find the biggest item easily

also show it graphically

 

And then have ability to track and trend growth in size over time

identify a normal growth pattern

alert if variation (higher or lower) from normal based on recent trend

 

is there a tool that can do this, or a 3rd party tool, even it can only operate via standard SQL

2
0 1233
Question Rustam Ibragimov · Jul 15, 2016

Hello, guys.

I have an external file that contains data in UDL format(as in Studio, not XML) and I need to somehow overwrite my source file with that file. 

I tried to use this snippet for .mac file

 set rtn = ##class(%RoutineMgr).%OpenId("les.mac")
 rtn.Code.WriteLine("some text")

It says that status is 1, but I don't see any difference in my source file.

Is there any way to overwrite source files, not only .mac but .cls, .int, .dfi?

4
0 672
Question Nick VanDuyne · Jul 14, 2016

I'm new to Cache and trying to follow the Using Cache Studio PDF. In section 2.4.3(Adding a Zen form) it tells you insert the following code;

Unfortunately that code fails compilation. If you try and use the tools there is no o select option nor a select or onselect option. I was wondering if anyone has used this PDF before and knows what the correct attribute should be?

3
0 222
Question Daniel Kutac · Jun 21, 2016

Customer is experimenting with %vid variable for selecting row numbering for sql queries. Basically he's trying to implement paging functionality.

He is confused that select %vid from (select ...) returns dummy number whilst select *,%vid from (select...) returns correct data.

I believe, according to the documentation...

The phrase “SELECT * ...” does not include %vid; it must be selected explicitly: “SELECT *, %vid ...”. Also, while this feature is very convenient, especially for porting Oracle queries (this maps
4
2 2034
Question Eduard Lebedyuk · Jul 14, 2016

I have the following problem:

  • There are several classes with method generators, which needs to be compiled during every compilation
  • I have "ckub" qualifiers enabled in studio
  • I don't want to remove "u" qualifier because I need it very much in another namespaces

So how do I force classes with method generators to recompile when "u" qualifier is present?

2
0 1402
Question James Bourette · Jul 14, 2016

I'm wondering if there is a setting to show generated classes in Atelier, if there is, I haven't been able to locate it.  I have code which is generating other classes, but am unable to locate those classes on the Server tab, but can see them when I open studio.  Is there a setting I'm missing?

3
0 375
Question Stephen Canzano · Jul 14, 2016

I  have a DeepSee KPI defined based on %DeepSee.KPI following the documentation http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY….  I've then enabled the KPI on a dashboard by adding a Widget where the data source is the KPI.  Currently the ability to show a Detail Listing is implemented by the call back  %OnGetListingSQL.  This method documents the parameter

pListingName is the name of the listing to display. This is reserved for future use.

2
0 433
Article Mike Kadow · Jul 14, 2016 2m read

NewBie's Corner Session 13 .MAC and .INT Routines and Comment Lines

Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.

.MAC and .INT versions of Routine

Save Routines with a .MAC Extension

When saving your routines, be sure to specify a .MAC file extension (the default) and not a .INT extension.  The .INT version of a routine is an intermediate version of the routine. It is in the .INT version of a routine that the SQL Code (and other code) from the .MAC version is expanded upon.

0
0 664
Article Mike Kadow · May 17, 2016 3m read

NewBie's Corner Session 3 More Read and Write commands & Multiple commands

Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.

Click on the Caché Cube in your system tray and select Terminal to try out the commands.

Write command with carriage return and line feed

When the exclamation point "!" is inserted after a Write command, a carriage return and line feed combination is produced. Note in this example, that a comma separates the exclamation point from the variable "X".

Set X=12
Write !
1
0 617
Question Scott Beeson · Jul 11, 2016

We had a major problem recently where a participant was sending unexpected data. It was not enough to throw an error or warning in the actual trace, but when examining the message in the viewer it did show the following:

Build Map Status = 'ERROR <EnsEDI>ErrMapSegUnrecog: Unrecognized Segment 4:'CON' found after segment 3 (CON)'

How can I query for these or be notified of them?  This caused major ramifications but we did not notice it.  I have Managed Services investigating but I want to cover all my bases.

4
0 518
Question Rustam Ibragimov · Jul 12, 2016

Hello, everyone!

I opened one project and there I found such lines as 

$$Export^%occXMLExport(filename,"-d /diffexport",InternalName)

Do DecomposeStatus^%apiOBJ(sc,,"d")

The problem is I can't go to their definition and find them in documentation. It says that they don't exist on the server. However, the project works and these routines execute. 

How can I import them into my project? 

3
0 847
Question Alexandre Mosselar · Jul 11, 2016

 

I'm trying to calculate the percentage of the top level with the SUM function.
But I don't understand the PARENT behavior.
It does not work in any way!

SUM({FilialD.H1.Categoria.CURRENTMEMBER.PARENT.ALLMEMBERS},MEASURES.[Valor])

SUM({FilialD.H1.Categoria.CURRENTMEMBER.PARENT.%ALL},MEASURES.[Valor])

Someone could explain me the difference between %ALL and ALLMEMBERS?

2
0 579
InterSystems Official Steve Brunner · Jul 13, 2016

InterSystems is pleased to announce that Caché and Ensemble 2015.2.4 are now available as maintenance releases.

For a complete list of the corrections in 2015.2.4, please review the release notes

Caché and Ensemble 2015.2.4 are available for the same platforms as 2015.2.3, with this exception:

  • Red Hat Enterprise Linux 7 for Power System-64 has been dropped.

The complete set of supported platforms, including specific point releases and patches, is detailed in the Supported Platforms document.

The build corresponding to this release is 2015.2.4.903.0

0
0 359
Question Ricardo Paiva · Jul 13, 2016

We can override soap body by using WriteSOAPBodyMethod. Something like:

Method Online(ByRef Obj1 As myClass1, Obj2 As myClass2, Output ObjOutput1 As myClass1Output(XMLNAME="Obj")) [ ..., WebMethod ]

{

              …

              s ..WriteSOAPBodyMethod="override"

              d (..WebMethod("Online","ProcessRequest")).Invoke($this,"Online",.Obj1,.Obj2,. ObjOutput1)

              s ..WriteSOAPBodyMethod=""

              …

}

Method override(proxy As %SOAP.ProxyDescriptor, tag As %String)

{

              …

}

In order to generate soap body, how can one  access  Obj1 and Obj2 from within the override method?

1
0 481
Question Megumi Kakechi · Jul 11, 2016

Hello,

One of our AP would like us to provide the file upload/download sample code by using ZEN Mojo.

I already provided them the attached "upload-sample".

I tried to create the "download-sample" in a similar way, but I couldn't do it yet.

Does anyone have a good idea/sample about this?

I'd like to download the server side file(e.g. c:\temp\nene.jpg) into client machine with a OpenFileDialog(image.png).

 

Thank you in advance.

6
0 960
Question Rustam Ibragimov · Jul 13, 2016

Hello, guys!

I want to get access to the folder where all files of the namespace are stored using COS. I found a way to get access to class files and found a folder where all csp, html, css etc files are stored.

However, is there any folder which contains all files(even .mac and .int)?  

Or, probably, there is a method which gives all files content?

2
0 472
Question Evgeny Shvarov · Jul 8, 2016

Hi!
There is interesting question in Stackoverflow.
This query works for MS SQL:

SELECT * 
FROM 
(
    SELECT *, ROW_NUMBER() OVER (PARTITION BY client_id ORDER BY date_updated DESC) AS rn
    FROM client_address
) a
WHERE a.rn = 1

There is one answer there,  which solves the task:

SELECT *
FROM 
   client_address a
   LEFT JOIN client_address b
   on a.client_id  = b.client_id 
     and a.date_updated < b.date_updated 
WHERE
   b.client_id is null

But it goes with comment, that there are no Window functions in Caché SQL.

I wonder, are there any other options to make this query in Caché?

5
0 2454
Article Cheng Cheng · Jul 11, 2016 3m read

Today my customer ask me a question about how to write the MDX with a summary row however this row with different aggregate functions for each column.

We know in DeepSee analyzer has pivot table option "Summary",  user can select sum, avg ... aggregate functions to get the summary row/column. However we can not specify different aggregate function for each measure column.

Here show the example to use All level and IIF function achieve that. see the example (Holefood cube in Sample namespace) below

 

WITH MEMBER measures.[with avg summary info] AS

                              'IIF(Produc

6
0 1210