#Caché

30 Followers · 4.6K Posts

  

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

Documentation.

Article Megumi Kakechi · Oct 19, 2023 2m read

InterSystems FAQ rubric

A tool (^GLOBUFF utility) is available to check the database cache usage for each global variable.

You can run the utility directly or programmatically in the %SYS namespace.

Here's how to run the utility directly:

USER>zn "%SYS"
 
%SYS>do ^GLOBUFF
 
Find which globals are using the most buffers.
 
Display the top <25>:     → Press Enter  // Default is to display top 25 globals
 
Total buffers: 102400     Buffers in use: 6926     PPG buffers: 77 (1.
5
1 956
Question Wesley West · Nov 15, 2023

I am trying to execute a program from within cache using a $zf call

S X=$ZF(-1,"C:\""Program Files (x86)""\Car-Part\Messaging\iCPM.exe")

For the sake of this post I changed it to open notepad

S X=$ZF(-1,"C:\Windows\notepad.exe")

If I call it directly from terminal notepad opens and all is happy.  

If I add it to a program we use to run certain tasks once an hour or even every 10 minutes it will fire off notepad but it will be in the background.

The messaging application we use will not work at all in the background and needs to be in the foreground.

2
1 357
Article Mihoko Iijima · Nov 9, 2023 1m read

InterSystems FAQ rubric

To create a user-defined error you need to prepare the XML that describes the error code and corresponding message that you want to use as a user-defined error.

Please set the error code as a negative integer.

<?"1.0""UTF-8" 
<<

Once the XML file is created, load it into the namespace you want to use.

##class

Once loaded, you can retrieve and display user-defined errors with a command like the following:

USER>
2
2 737
Question Stuart Strickland · Nov 8, 2023

I want to convert a string to uppercase that may or may not be a $LIST so that I can do a case insensitve search. However, when looking at what constitutes a $LIST I can see something that looks like it follows these rules:

Example: S X=$LISTBUILD("hello","world!")  gives X=$C(7,1)_"hello"_$C(8,1)_"world!

11
1 777
Question Shashvati Dash · Nov 6, 2023

There is test folder inside my sftp server. I executed the below lines of code

s ssh = ##class(%Net.SSH.Session).%New()

d ssh.Connect("host")

d ssh.AuthenticateWithUsername(username,password)

d ssh.OpenSFTP(.sftp)

s remote="\test\sample1.txt"

s local="c:\orders\sample1.txt"

s status=sftp.Put(local,remote)

I get the below error 

"MSSH Error [8010102B]: Unable to send FXP_OPEN* [8010102b] at SFTP.cpp:539,0Put,IM%e^zPut+2^%Net.SSH.SFTP.1^1e^^^0"

4
0 502
Article Stefan Cronje · Nov 6, 2023 2m read

Hi folks,

I have published a new package on OEX.

In short, it is a string datatype that support various configuration options and flexibility.

Business Case

  1. You have some library classes and other reusable structures that you use across systems.
  2. You have a "multi-tenant" environment where one code base is shared amongst tenants, which each have their own namespaces configured.
    1. Specific rules and business processes are stored in that tenant's namespace.
    2. The core class structures are the same.
0
0 421
Article Mihoko Iijima · Nov 2, 2023 3m read

InterSystems FAQ rubric

For routines (*.mac)

You can hide the source by exporting/importing only the *.obj that is generated after compiling the source program.

The command execution example specifies EX1Sample.obj and EX2Sample.obj, which are generated by compiling EX1Sample.mac and EX2Sample.mac, as export targets and exports them to the second argument file.

After moving to another namespace, I am using the exported XML file to perform the import.

USER>do$system

For classes (*.cls)

1
0 680
Question Avi Luzon · Nov 1, 2023

hi

we have a rest API that that on of the JSON object contain Property name "verify.facePosition"

we try to translate the JSON file to object with the function ##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject()

how can we define the Property to "verify.facePosition" As %Boolean in the class ? 

i know that with underscore i can define the property with quotation marks like this - Property "verify_facePosition" As %Boolean

thanks for the help 

4
0 391
Question João Carlos Azevedo · Oct 23, 2023

I need to develop a tool to help to get what data is being consumed by a certain process, in order to get all data used to build an automated test scenario.

For example, some user process will pull data from ^GLOBAL(1)="dataString", ^GLOBAL(2)="dataString2", ^GLOBAL1(1)="data1String", ^GLOBAL2(4)="data2String4". Amidst all other data on these Globals, I will ignore everything that was not used in the user process, and get the specific keys used on it.

12
0 513
Question Token Ibragimov · Oct 31, 2023

Hello,

I'm making rest API service with Authentication.

How I can return HTTP Status 403 if user enter invalid login or password?

Now returning Http status 200.

Class RestAPI Extends %CSP.REST
{

XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap]
{
<Routes>

<Map Prefix="/restforms" Forward="Form.REST.Main"/>
<Route Url="/auth/:login/:pass" Method="GET" Call="CheckUser" Cors="true"/>
</Routes>
}

ClassMethod CheckUser(userAw, pwdAw) As %String
{

set %response.ContentType = "application/json"

// my code to check auth

Set object = {}
Set object.status = -1
Set object.message = "HTTP/1.

3
0 348
Question Ruiyan Yu · Oct 26, 2023

Hi,

An exception occurs randomly. I expect the value of ^TEST to be 20, but it's not. Did i miss something like closing, flush the stream or locking the global?

Exception

%SaveData+15^%Stream.GlobalCharacter.1×PRAX1Í+^%SaveData+15^%Stream.GlobalCharacter.1^1)e^%SerializeObject+6^%Stream.Object.1^2e^%Save+9^%Stream.Object.1^93e^zCopyFromAndSave+58^%Stream.GlobalCharacter.1^1e^test+11^ry^1e^test+3^ry^4d^^^0

Testcode

test
    n glob s glob=$na(^TEST) k @glob
    n file s file="C:/temp/file.xslt"
    n i f i=1:1:20 w !,$$save(file,glob)
    q

save(file,glob) {
    s fs=##class(%Stream.FileBinary).%New()
    s sc=fs.LinkToFile(file)
    q:$System.Status.IsError(sc) sc
    s gs=##class(%Stream.GlobalBinary).%New(glob)
    s sc=gs.CopyFromAndSave(fs)
    q:$System.Status.IsError(sc) sc
    q gs.%Id()
}
13
0 561
Question Robert Steed · Oct 23, 2023

This applies to embedded and dynamic SQL queries in Caché ObjectScript. If I attempt to terminate the process via Management Portal, nothing happens. Neither does Ctrl C nor closing the terminal window in which my program is running, nor setting a stop flag in a global which is read by the program on each loop iteration. The only way to stop the query appears to be restarting the Caché server (which is running locally on my PC).

6
0 815
Question Lucas Galdino · Oct 26, 2023

I'm dealing with a situation that leaves in doubt what I understand about CACHE.WIJ (C:\Roche\CobasInfinity\HealthShare\mgr).. 
Journal files store records already written to the base.. and CACHE.WIJ records not yet written to the base..
theoretically, the data contained in CACHE.WIJ is temporary... until the record is written to the base (consequently generating journal).
The question arose because I have a .WIJ file from 03/10/2023 (modification date) with approx. 4GB.

4
0 444
Article Mihoko Iijima · Oct 26, 2023 2m read

InterSystems FAQ rubric

Information on properties defined in a class can be obtained using the following system classes:

%Dictionary.ClassDefinetion

%Dictionary.PropertyDefinition

The code description example is as follows.

ClassClassMethodAs

An example of execution is as follows.

USER>

Related article: How to get all fields of a specified table with SQL

0
2 659
Job Jaceita Chilton- Walker · Oct 24, 2023

If interested email to me at jwalkerbdrsolutionsllc.com

Ensemble/IRIS Developer to join our growing team! This position will be performed virtually from the individual's home office working on EST time schedule. This position requires US Citizenship with a Public Trust or the ability to obtain one.
(Military Veterans are highly encouraged to apply)
Role Overview
BDR is in search of a proficient InterSystems Ensemble/IRIS developer to contribute to our Department of Veterans Affairs (VA) contract.

0
0 439
Question Nael Nasereldeen · Nov 12, 2019

Hi,

I am trying to use the %Net.HttpRequest Class, and the request has to pass through a proxy server that requires authentication.

I am usually able to do that by using the following code:

S httprequest.ProxyServer=proxyServer
S httprequest.ProxyPort=proxyPort
S httprequest.ProxyAuthorization="Basic xyzxyzxyz"
 

I have a problem accessing a site that is accessible only using SSL-

The combination of the proxy authentication code and the SSL code-

S httprequest.Https=1
S httprequest.SSLConfiguration = "XYZ"
S httprequest.ProxyHTTPS=1
 

Does not work- I get the following error:

"<WRITE>zSend+180^%Net.

5
0 1170
Question Colin Brough · Oct 17, 2023

Pointers please for debugging a SOAP web-client.

We have several clients in different productions all accessing a web-service. We are trying to add another client in a new production, and its not working. The messages between the relevant Process and the SOAP web-client Operation are the same in the working and the non-working productions. But the web-service is reporting an XML parsing error to the non-working production. Here's the error as reported in the SOAP web-client Operation...

Is there any way to see the output of the web-client Operation

3
0 472
Article Mihoko Iijima · Oct 12, 2023 1m read

InterSystems FAQ rubric

ObjectScript allows you to pass any number of arguments using arrays. Do it by adding ... after the argument name.

An example is as follows. In the example statement, the argument information is set in a global variable (a variable stored in the database) so that it can be easily checked after the method is executed.

ClassExtends%RegisteredObject

The result of running it in the terminal is as follows.

USER>
1
0 548
Question JASON PARKER · Oct 14, 2023

Hi,

Any examples please of connection a Delphi 11 Front end to a Cache database?

I can get it to connect but then when I try and view data it fails

4 fields in front end

SERVER = 127.0.0.1

PORT = 1972

NAMESPACE = DROP DOWN LIST (I SELECT "DEVELOP" FROM THE LIST

EDIT_CLASSNAME = Default value is Test (with maybe 3 fields just of random stuff)

procedure TFMAIN.BtnConnectClick(Sender: TObject);
 var
 ConnectString: string;
 Success: Boolean;
 Col,Row:Integer;
 FieldName:array[0..10] of string;
begin

0
0 634
Question Chris Paraskiv · Mar 20, 2017

This question is about calling AWS REST APIs. Based on:

http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html

AWS requires REST clients to call their APIs using Signature Version 4 which in case you don't know what I am talking about is a pain in the neck.  Here comes the question:

Has anybody, by any chance implemented the v4 signing alg. in COS? If yes, would she or he have the kind heart to share?

Thanks,

Chris

13
1 1727
Article Megumi Kakechi · Sep 28, 2023 2m read

InterSystems FAQ rubric

In the sample below, an image file is encoded into a Base64 string in a class property, saved, decoded again with Base64, and restored to another file.

【Usage class】

Class User.test Extends %Persistent
{
Property pics As %GlobalBinaryStream;
}


【When importing】

  set x=##class(User.test).%New() // create a new object

  // prepare an image
  set file=##class(%File).%New("c:\temp\Mii.png")
  do file.Open("RUK\BIN\")
  for {
       if file.AtEnd=1 quit
       // Convert image to Base64 format in chunks of 1024 bytes
       set cnt=file.Read(1024)
       set b64=$system.Encryption.Base64Encode(cnt) // b64: 1402byte
       do x.pics.Write(b64)
  }
  do x.%Save()
  do file.Close()
2
2 761