#Caché

30 Followers · 4.5K Posts

  

InterSystems Caché is a multi-model DBMS and application server. See more details here.

Documentation.

Article Mark Hanson · May 11, 2016 1m read

Often when debugging COS code you get an error message such as '<UNDEFINED>test^routine *test' so the first thing you want to do is to take a look at this code and see what it is doing. From the command line you can:

ZLOAD routine ZPRINT test

Which means splitting the $zerror information into the routine name and the line and adding the zload/zprint commands. Also you often want to view the lines above the one where the error happened as this gives you some context of how you got to this line, using ZPRINT you could 'ZPRINT +1:test' but that may display hundreds of lines.

Since 2013.

6
0 1040
Question Derek Day · May 10, 2016

I have some logging code that outputs task status information to a log file. I would like to make the log available for reading while it is open for writing. The file is opened using the "L" option (Lock):

Open tLogFile:"WASL" Set tLogOpen=1


My intent was to prevent multiple processes from accidentally writing to the file and having messy output. Unfortunately, if the process is taking longer than expected, one can not simply open the log file to figure out what is going on because the "L" lock prevents the file from being opened for reading as well as writing.

2
0 448
Question Joshua Goldman · Mar 16, 2016

This question came on the Ensemble in Healthcare email list. It's a great question. I'm working on an answer, but am posting it here to get any other input. I'll also address the option of using %CSP.REST.

Hello everyone,

 

Using Intersystems Healthshare/Ensemble, I am trying to make a RESTful Interface between Android/iOS app and Cache database. I have some queries and I am unable to find where exactly I can get any resources on them.

 

1. By extending the EnsLib.REST.

12
0 9855
Article Nikita Savchenko · May 6, 2016 8m read

Greetings! This article describes yet another simple way of creating installers for the solutions based on InterSystems Caché. The topic covers applications, which can be installed or completely removed from Caché with one action only. If you are still documenting installation instructions that have more than one step to do to install your application — it’s high time you automated this process. 

14
0 1875
Question Mike Kadow · May 7, 2016

I am trying to execute a system query. - %SYS.Journal.File_Search()

The Query is looking for a Journal File Name and a String.

However, the Query line accepts no parameters. - Query Search() As %Query(ROWSPEC = "Offset:%Integer")

But in the SearchExecute method if checks for File and String.

ClassMethod SearchExecute(ByRef qHandle As %Binary, String As %String, FileName As %String . . .

5
0 936
Job Dan Leroy · May 10, 2016

Our company is looking for someone with expert object script skills and experience developing with REST using Caché. We have an existing application that currently supports a mobile application and a web application. The API is up and running but we need another developer to add new features and keep up with demand.

Experience with Amazon AWS is highly desired as the api is running on Windows in EC2. Familiarity with GitHub is also required.

Pay can be negotiated on a per hour basis after you provide an estimate for the time required to complete a given feature.

0
0 441
Article Evgeny Shvarov · Apr 16, 2016 1m read

Hi!

Want to share with you code snippet of try catch block I usually use in methods which should return %Status. 


{ 
 try {
  	$$$TOE(sc,StatusMethod())
 }
 catch e {
 	set sc=e.AsStatus()
 	do e.Log()
 }

Quit sc 
}

Here $$$TOE is a short form of $$$TROWONERROR macro.

Inside macro StatusMethod is any method you call which will return %Status value. This value will be placed into sc variable.

In case of sc contains error execution will be routed to try catch block. You can wrap any Status methods calls in your code if you need to catch the errors coming from them.

21
2 3591
Article Paul Gomez · Apr 20, 2016 1m read

We are in the process of putting a new UI on the existing product documentation, including a mobile-optimized view. We also plan on releasing additional "solution based" documentation that is targeted at common usage scenarios or important configuration tasks.

We are interested in your feedback on our current product documentation - what you like and dislike and especially what changes you would expect to see to make it as useful as possible.

15
0 982
Article Tony Beukes · May 6, 2016 2m read

You may experience errors executing Java programs that rely on the JAVA_HOME environment.

For example when Create PDF from this pivot in DeepSee or in this case, outputting a Zen Report as PDF.

You can verify the PDF generation configuration by clicking on the Verify Now button on the Management Portal System > Configuration > Zen Report Settings page:

  

 

Outputting a Zen Report as PDF causes an error, for example ZENApp.MyReport.

0
0 966
Question Peter Kopp · May 4, 2016

Good afternoon, I have working prototypes of each of these approaches. I do not have an expansive cache background.

I have a couple of projects where I am ingesting files from disk.

The name of the file contains a lot of the information I will need to reference the file in the future.

What are the advantages and dis-advantages of these two approaches:

Store the whole filename and use SqlComputeCode to populate properties in a class?

Parse the data out of the filename on ingestion into properties in a class?

For each approach what are the implications to indexing?

Thank you.

 

2
0 952
Question Steve Pisani · May 4, 2016

Hi,

I sometimes get asked if Weblink will still be available (as a downloadable ad-on these days) for some versions to come. 

I realize that this is old technology now, and that there are better and faster ways to do the same things today.

Thanks

S

3
0 1084
Question Steve Pisani · May 4, 2016

Hi,  The ZEN Mojo Widget reference at ../csp/sys/%ZEN.Mojo.WidgetReference.bootstrap33xHomepage.cls is a great reference for viewing the different components available with each helper plugin - and it also supplies snippets of JSON code to use in your layout definitions.

 

I'm having problems with the Bootstrap $navbar component however.

1
0 420
Question Jeff Semmens · May 3, 2016

I was trying to modify the REST.DocServer sample in the SAMPLE namespaces to use the new %Object and %Array system objects (Ensemble 2016.2 build 636) with the following changes:

/// This method returns a list of namespaces for this server

ClassMethod GetNamespaces() As %Status

{

    #dim tSC As %Status = $$$OK

    #dim tList,tNS,tFilteredList,tValue As %String

    

    #; Get the list of namespaces

    Do List^%SYS.NAMESPACE(.

4
0 709
Question Renee Cannon · May 2, 2016

I get NOROUTINE when I try to call a label in a routine in another namespace:

 

d someLabel^|”OTHERNAMESPACE”|someRoutine(inputVar,.resultByReference)

 

Two questions:

1.  What is wrong with my syntax for calling a label in the other routine, versus just the root of the .int/mac?

2.  Can I pass a parameter by reference when using extended routine reference?

3
0 767
Question Francis Galiegue · Apr 20, 2016

Hello,

It is time for me to eat my own dog's food and start implementing unit test running with coverage :) I will be inundating IRC with questions at this point, but I have a more general question first.

In this tutorial, it is supposed that your unit tests are exported as XML first... But that's not very practical. Is there a way, instead, to run all tests from a given project without having this export?

My first thought on how to do this would be to:

  • grab the project (by name, I
3
0 717
Question Steve Pisani · Apr 27, 2016

Hi,

Is it possible to have a ZEN Mojo application that uses Bootstrap and controls from jQMobile ?

In a fresh installation running Zen Mojo version 1.1.1, my ZEN Mojo page declares:

Parameter CSSINCLUDES As STRING = "bootstrap-3-3-5/dist/css/bootstrap.min.css,jquery.mobile-1.4.5.min.css";
Parameter JSINCLUDES As STRING = "jquery-1.10.2.min.js, jquery.mobile-1.4.5.min.js,jquery-1.11.3.min.js,bootstrap-3-3-5/dist/js/bootstrap.min.js";
..

and a pageContents of:

XData pageContents [ XMLNamespace = "http://www.intersystems.com/zen]
{
<pane xmlns="http://www.intersystems.com/zen" xmlns:mojo="http://www

6
0 644
Question Francis Galiegue · Apr 30, 2016

Hello,

Still related to the unit test with coverage support project, one goal is to make that package available to everyone.

One possible way I already know of is that all fully qualified class names (ie, the package + the class name) start with %, which mean that on installation all classes will end up in the %SYS namespace, but this requires that the install be done as a user with the necessary privileges to write to %SYS.

This is rather convenient in my situation, sure; but is there another way which does not require such privileges?

6
0 544
Question Mike Kadow · Apr 27, 2016

Has anyone noticed that the Feature Map and Master Index was dropped from the 2016 version?

Anyone know why?

Please see the attached file of a screen shot.

Well, I have a screen shot file, but when I try to up load .docx, or .pdf, or html I am prevented, don't know why?

Yes, frustration!

7
0 530
Question Scott Beeson · Apr 27, 2016

I have two servers in our TEST environment.  One with HSBUS and one with HSREGISTRY.  Let's call them "HSBUS01" and "HSDB01" respectively.

 

Now, I can access HSBUS with my SQL client by using the JDBC driver pointed to hsbus01.full.name.com and port 1972 and specifying a namespace of "HSBUS".  I am, however, unable to access the HSREGISTRY instance via SQL with a similar combination of information.

I have access to the web interface on both servers (/csp/sys/#CSP.Portal.Home.zen).  What screen can I use to compare the relevant settings?  I think it might be a port issue.

2
0 479
Question Andy Caranicas · Apr 27, 2016

We have a query that looks something like:

 

select a, b, c, d, e, f

from tbla inner join tblb on tbla.....

This query runs in the expected 200-400 ms range.

If we run the same query but reduce the select to just:

select a

from tbla inner join tblb on tbla.....

then the query runs for 30 minutes or more. 

The rest of the query is identical.  Is there a logical explanation for how this can happen?

Thanks.

5
0 556
Question Steve Cross · Apr 28, 2016

I have to disect thousands upon thousands of strings like this:

96842-2-AEV.00001-63561-001958-100728760I-42

I've been able to pull out the first, second and final segments as separated by hyphens, but now I have a predicament where I need to use the second segment, the 2 shown in the example above, in a join to another table.  Problem is Cache apparently doesn't like doing that.  Just the same, I have to find a way.

Here's the code I'm using to pull that segment out into as separate field in the query results:

substring(prov_record_id, charindex('-', prov_record_id) +1, charindex('-AEV.

2
0 1135
Question Fabio Goncalves · Mar 21, 2016

Hi Community,

How can I create a JSON with the object ID by using the %Object:$toJSON API?

I have the following piece of code bellow where I create an object reference, create a %Object instance from %fromObject and them I am creating the JSON from $toJSON, but it does not expose the %ID (object id). How is the best approach to create a JSON with the respectives object IDs?

 

Try
  {
  Set tPersonObj = ##class(Data.Person).%OpenId(pId)
  If $Get(%objlasterror) $$$ThrowStatus(%objlasterror) 
 
  Set tObj = ##class(%Object).$fromObject(tPersonObj)
  Write tObj.
7
0 1631
Announcement Stefan Wittmann · Apr 27, 2016

Starting with 2016.2 the Java XEP binding will no longer support the in-memory connection mode. The in-memory mode was deprecated in earlier versions and applications should switch to the TCP/IP connection mode instead.

The TCP/IP connection mode has bridged the gap in performance to a large extent over the past couple of years and enables the Java client to run on a remote machine.

Let me know if you have any questions or concerns.

This is a cross-post from our compatibility blog: http://blog.intersystems.com/compatibility/2016/04/22/removal-of-in-mem…

0
0 374
Question Steve Pisani · Apr 19, 2016

Starting off with a working REST interface, I can access the CSP Application definition screen for the application  (System > Security Management > Web Applications > Edit Web Application), and "turn off" the application by clearing the Enabled: [ x ] Application checkbox. From then on my REST calls return an HTTP 404 error. (That's expected).

However - one expects that re-enabling the Application in the CSP Application screen, would return my REST services to a working state, however, this is not happening.  All REST requests continue to return an HTTP 404 error.

5
0 873
Article Timothy Leavitt · Jan 5, 2016 1m read

(Possibly?) little-known fact: It's possible to use $ListBuild on the left hand side of the equals sign in a set command to extract multiple list values at once:

set $ListBuild(several,individual,variables) = list

 

For example:

USER>kill
 
USER>set colors = $ListBuild("red","orange","yellow")
 
USER>set $ListBuild(r,o,y) = colors
 
USER>write r,!,o,!,y,!
red
orange
yellow

 

See for reference: http://docs.intersystems.com/cache20152/csp/docbook/DocBook.UI.Page.cls…

This feature was news to me - I use $ListBuild lists a lot but hadn't come across it until today.

4
0 505
Question Francis Galiegue · Apr 25, 2016

Hello,

Here's the code:


Method isTestClass(className As %String) As %Boolean
{
	if (className = .#UTCLASS) {
		return 1
	}
	
	#dim c as %Dictionary.ClassDefinition
	#dim status as %Status
		
	set c = ##class(%Dictionary.ClassDefinition).%OpenId(className,,.status)
	
	if ($$$ISERR(status)) {
		throw ##class(%Exception.StatusException).CreateFromStatus(status)
	}
	
	if ('c.SuperIsDefined()) {
		return 0
	}
	
	#dim children
	#dim len as %Integer
	#dim i as %Integer
	
	set children = $listFromString(c.
6
0 603