#Caché

30 Followers · 4.6K Posts

  

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

Documentation.

Question Manish Valecha · Feb 26, 2018

Hi,

Getting below error on newly installed cache version 2017.2. This is running fine on another instance.

Q00QUASAR:TEST1>D $system.OBJ.CompileAll()

Detected 1229 errors during compilation in 145.4s.

Instance name:TEST2>D $system.OBJ.CompileAll()

Detected 202 errors during compilation in 211.7s.

Instance name:TEST3>D $system.OBJ.CompileAll()

Detected 784 errors during compilation in 186.6s.

TEST2>do $System.OBJ.CompilePackage("Calendar")

Compilation started on 02/25/18 17:21:33 with qualifiers ''

Compiling 6 classes, using 4 worker jobs

Compiling class Calendar.Country

Compiling class Calendar.

1
0 1250
Question Laura Cavanaugh · Feb 22, 2018

I was running the %File:FileSet class query, with my development user, but I am unable to run this query for an application user.  Does anyone know what resource or service is needed to run this query?  Assume the user has access to a certain directory on the file system needed for the query.

On second though, having tried almost all the available resources and services, perhaps the user doesn't have access to the directory.  How to tell when the error is this: 

set ok=st.%PrepareClassQuery("%File","FileSet")

d $system.Status.DisplayError(ok)
 
ERROR #5540: SQLCODE: -99 Message: User Laura_Test_DEV is not privileged for the operation
13
0 874
Question Oliver Thompson · Feb 14, 2018

I have a 2GB CSP.log file that I need to investigate.

I'm using a %Stream.FileCharacter() object to open the file and then using the .FindAt() to search for a particular string.

I'm seeing the FindAt() stop after processing 49m characters?

Here is my code:

k
s stream=##class(%Stream.FileCharacter).%New()
d stream.LinkToFile("d:\csp.log")
s x=""
s i=0
s j=0
w stream.Rewind()
w stream.AtEnd
w stream.SizeGet()
while(stream.AtEnd=0){set i=stream.FindAt(-1,"Invalid password",x)+i  set j=j+1}
w stream.AtEnd
w i
w j

Which gives the following output:

USER>k
USER>s stream=##class(%Stream.FileCharacter).%New()
USER>d stream.LinkToFile("d:\csp.log")
USER>s x=""
USER>s i=0
USER>w stream.Rewind()
1
USER>w stream.AtEnd
0
USER>w stream.SizeGet()
2491024949
USER>while(stream.AtEnd=0){set i=stream.FindAt(-1,"Invalid password",x)+i}
USER>w stream.AtEnd
1
USER>w i
49134354
USER>w j
124520
7
0 939
Question Jacques Schiphorst · Feb 21, 2018

Developers,

I am working with a CSP page with among other fields a checkbox.

Based on the checkbox I want to populate a drop-down box with specific options with a server side method using &html<....>.

I have the status of the checkbox in a javascript var.

Can I access this var or maybe the checkbox setting in the server side method?

Basically how do I know the status of the checkbox to populate the drop-down box correctly?

Any suggestions are appreciated!

Jacques

5
0 1640
Question Mike Kadow · Feb 21, 2018

I am working my way through some SQL documentation.

The documentation follows and my question comes after.

A query supplied to %Prepare() can contain input host variables, as shown in the following example:

  SET minage = 80

  SET myquery = 3

  SET myquery(1) = "SELECT %ID AS id, Name, DOB, Home_State"

  SET myquery(2) = "FROM Person WHERE Age > :minage"

  SET myquery(3) = "ORDER BY 2"

  SET qStatus = tStatement.%Prepare(.myquery)

This talks about input host variables

I thought that input host variables only work with Embedded SQL, not Dynamic SQL

Thank you

5
0 769
Question Sarvan Ibishov · Jan 29, 2018

Hi. I am newby in Cache. My source code at below. I have problem in Relationship property. Could you please help?

 /// Class %Persistent
 Test.Chapter %Persistent

then in terminal I am running these commands:

USER>set c1 = ##class(Test.Chapter).%New()
USER>set c1.Name = "Introduction"
USER>set c1.Page = 10
USER>set c2 = ##class(Test.Chapter).%New()
USER>set c2.Name = "Development of DB"
USER>set c2.Page = 13
USER>set b = ##class(Test.Book).%OpenId(1)

USER>do b.Chapters.Insert(c1)
8
0 410
Question Eduard Lebedyuk · Feb 20, 2018

Several $System.OBJ methods have ByRef errorlog argument:

Compile(ByRef classes As %String = "", qspec As %String = "", ByRef errorlog As %String, recurse As %Boolean = 0)

ImportDir(dir As %String = "", wildcards As %String, qspec As %String = "", ByRef errorlog As %String, recurse As %Boolean = 0, ByRef imported As %String, listonly As %Boolean, ByRef selectedlist As %String)

What's the best approach of working with errorlog?

Do you convert it to status? If so - how? Manual iteration over local?

Is there some system method to convert it into %Status?

1
0 419
Article Kurro Lopez · Feb 21, 2018 1m read

Hi all,

I've created a method to calculate the age of a person, or the age of a process, contract or other stuff as you want.

/// Calculate the age from date of birth and other date (by default shoud be today).
/// <b>dateOfBird</b> Date of birth in cache format. ie. $ZDH("1972-01-01",3)
/// <b>day</b> Date to calculate to. ie: $H
ClassMethod AgeAt(dateOfBirth, day) As %Integer{
    quit:dateOfBirth=""
    quit:day=""
    
    set yeardob=$SYSTEM.SQL.DATEPART("year",dateOfBirth)
    set yearday=$SYSTEM.SQL.DATEPART("year",day)
    
    set years=yearday-yeardob
    kill yeardob, yearday
    
    set monthdob=$SYSTEM.SQL.DATEPART("month",dateOfBirth)
    set monthday=$SYSTEM.SQL.DATEPART("month",day)
    if (monthday-monthdob)<0 set years=years-1
    if (monthdob-monthday)=0
    {
        if ($SYSTEM.SQL.DATEPART("day",day) - $SYSTEM.SQL.DATEPART("day",dateOfBirth)) < 0
        {
            set years=years-1
        }
    }
    
    kill monthdob, monthday
    quit years
}
2
0 1940
Question Arun Kumar · Feb 20, 2018

Hi Guys,

I would like to develop a login page in Zen mojo application with Desktop and mobile application.  It should be adopt with desktop, android and iOS application.

If any lead would be appreciated. 

Thanks,

Arun Kumar D. 

4
0 496
Question Young Bae · Feb 20, 2018

Howdy Developers of InterSystems Ensemble,

 

Has anyone experienced an alert generated from a business operation (BO), which uses EnsLib.SQL.OutboundAdapter? That comes with an error message as below:

ERROR #6022: Gateway failed: Execute. + ERROR <Ens>ErrGeneral: SQLState: (HY000) NativeError: [10054] Message: [Cache ODBC][State : HY000][Native Code 10054] [d:\cachesys\bin\cache.exe] [write_all: send() returned SOCKET_ERROR. Reason: (10054, 0x2746) An existing connection was forcibly closed by the remote host. ] (alert request ID=710761).

1
0 1595
Article Amir Samary · Oct 12, 2017 4m read

Hi!

It is often necessary to run some external command such as a python program or a shell script from inside Caché/Ensemble. There are three ways of doing this:

  • $ZF(-1) - Runs the command and waits for it to finish.  
  • $ZF(-2) - Runs the command and don't wait for it to finish.
  • Using CPIPE device - Runs the command and opens a device for you to read its output or (exclusive or here!) write to its input.

$ZF(-1) is normally more interesting because it allows you to recover the return code of the program you are calling. If that is important to you, that is the way to go.

8
1 2806
Question David Crawford · Feb 20, 2018

I'm experimenting with sending large amounts of data in a POST payload to be stored as a stream. However I've noticed that no matter how many characters are in the message, Cache only gets about 32k of them, cutting off the rest. Conversely as expected it can only send about 32k worth of characters in a payload.

Before I get creative, is there a REST message size limit that can be changed? Or is there something else going on here?

Thank you!

9
0 1602
Question George Hodder · Feb 16, 2018

I am trying to use the automated unittest class for a %CSP.Rest service.

So my Unittest code set's %request and %response from %CSP.Req/resp respectively

I build a tProxy with the fields I need for the post and set it %ToJson... I have tried seting %request.Content = tProxy (and not)

I call the method for the post url directly... 

  When that method calls %fromJson to set an object with the info. I passed... 

      - when I don't set %request.content.. I get a error '5035 - premature end of data code 12'

      - when I set %request.

7
2 1332
Question Eduard Lebedyuk · Feb 19, 2018

Let's say I want to execute  this cache script (saved as test.txt) from OS terminal:

zn "USER"
write 1
zn "%SYS"
write 2
halt

Executing the following command in a terminal:

csession cache < test.txt

Would yield this output:

Is there a better way to run these scripts?

Currently I have two problems:

  1. I have several variables defined in my bash script, what's the best approach to pass them into Caché? 
  2. I can't capture script input (for example write 1)

As for 1 there are two solutions I found:

  1. Generate test.txt
1
0 1187
Question Philip McClean · Feb 16, 2018

I have a dataListBox in ZEN which has an OnDrawItem method associated with it. The DrawItem method never seems to be called and I cannot see why.  I am using IE11. Can anyone suggest a reason? The attached code runs in a namespace called CODE and can be run using view webpage on the TheLabsApp.BioAnal class. Please note that the data is in a global called ^%ANAL that resides in %SYS.

3
0 336
Article Clark Matthews · Nov 3, 2016 4m read

Problem:

Caché prints to printers in a manner somewhat different from other Windows applications.  Caché sends the data directly to the GDI Printer, without the usual interface.  This is because the GUI interface can only be shown on a system desktop session and not in web browser and terminal sessions.  Some printer drivers have problems with this method of printing.

Is this the problem you are having?

  • If you are opening the printer as a Windows printer as described in the documentation (found here).
3
3 3161
Question George Hodder · Feb 2, 2018

Hi.. I have an issue where we are using OAuth2.0 with the ZAUTHENTICATE routine.  Once our token is validated we are using a users lan id (passed on the ID token) to find a software defined username in a Cache Global.

That is all working fine in ZAUTHENTICATE.. I am setting the software defined username in the Properties("Comment") array and wanting to reference it in the Rest Service Dispatch class.

6
0 1009
Question Jenna Makin · Jan 6, 2016

What are the best steps for troubleshooting printing to a Windows printer from Cache.  The printer has been configured in the Windows Printer Manager and has been able to print a test page (from the windows print manager).

The device has been configured in Cache -> Sys Admin -> Config -> Device Settings -> Devices with properly formatted |PRN|printer device name and "W" for open parameters and 101 for Alias.

From a command prompt, O 101 U 101 write something U 0 C 101 doesnt output anything to the printer, but does create a document in the Windows print spooler.

2
0 610
Question CJ H · Feb 15, 2018

I noticed that the subscript of the index map is actually the collated field (%SQLUPPER).

Is String the only data type going through this transformation? Any other data type would also go through this transformation?

Thanks. 

1
0 381
Question David Crawford · Feb 15, 2018

I'm sending data via ajax to my REST service, and while retrieving any information sent in the url parameter is easy when they're defined in the route, I can't get anything if I store information in the data parameter. For example:

$.ajax({
               url: "ServerURL",
               data: { "some": "json" } //How do I get this information?

...

I've looked at many common solutions such as here:

https://community.intersystems.com/post/lets-write-angular-1x-app-cach%C3%A9-rest-backend-part-9

8
0 1445
Question Jenna Makin · Sep 23, 2016

I was curious if application partners were developing their own task managers for scheduling background tasks, or using the built in task schedule that is part of the Cache platform.

For those that are using the Cache task manager, what has been your method for distributing default tasks that your application needs during initial install as well as upgrades?  Are you distributing an export of the %SYS.Task object, or perhaps you are distributing an installation script that adds a task to the task scheduler when it is first run?

3
0 3258
Question Mike Minor · Feb 9, 2018

I'm trying to learn how To use SQL in CACHE, so I hope I don't bore you with "Dumb" questions.... 

I'm getting "ERROR #6022: Gateway failed" message following this line of code. 

s sc=gc.Prepare(hstmt,pQuery) 

This line of code comes from an example I found in the documentation.  pQuery is the "Select" statement setting up the variables and tables I'm trying to pull information from. 

What does that error indicate? 

Thank you. 

5
0 1531