#ObjectScript

14 Followers · 1.6K Posts

InterSystems ObjectScript is a scripting language to operate with data using any data model of InterSystems Data Platform (Objects, Relational, Key-Value, Document, Globals) and to develop business logic for serverside applications on InterSystems Data Platform.

Documentation.

Question Đặng Phú Lộc · Nov 15, 2019

Hi everyone,

I've encountered this annoying issue so many times before, if any one also encounter this issue, please share here if you have any solution.

So, I've been working on a web service project using HealthShare 2015. Sometimes I have to set a debug target to a csp file to debug it. If I pause the debug process about 3 minutes above or so (to examine an object, variable, etc..) the studio will hang.

After that, If I still try to click to the studio, the pop-up will appear to ask if I want to restart the

4
0 611
Discussion Evgeny Shvarov · Aug 31, 2019

Hi Developers!

Often we need to use relatively small arrays with constants, static arrays in algorithms, etc where we need to do something with each element of an array. There are several ways to deal with it in ObjectSctipt. 

Previously I used to use globals, locals, PPG for this but not so long time ago figured out that %List is a way too handy.

Indeed, suppose we have an array of months and need to set up and use it in our code.

15
1 731
Announcement Jamie Kantor · Dec 2, 2019

Hello, Community!

After beta testing the new exam InterSystems IRIS Core Solutions Developer Specialist at Global Summit 2019, the Certification Team of InterSystems Learning Services has performed the necessary calibration and adjustments to release it to our community. It is now ready for purchase and scheduling in InterSystems exam catalog

This is InterSystems first certification exam to feature mainly code samples as question topics. To give potential candidates a sample of the exam's content, practice questions have been published to help orient to exam question approaches and content.

13
2 1647
Question Ben Spead · Dec 21, 2019

Does anyone know of an API that will do a hostname look-up based on IP?  We could of course use call-out but the format of the results vary based on OS and if there is already an ObjectScript tool which will parse this then we'd rather use what is already available.

Thanks!
Ben

4
0 381
Question Vikram Annadurai · Dec 21, 2019

Hi All,

I trying to get the DisplayList data of the ValueLIst from Java using Springboot. when I try to get the DislayList data via java code but I'm getting the VALUELIST data. I don't get any idea to get that DisplayList data. Below is the example

Property PetName As %Integer(DISPLAYLIST = ",Cat,Dog,Dove,Parrot", VALUELIST = ",1,2,3,4");

Java Code:

public String PetName;

public List<Pet> getPet() {
        return ser.findAll();
    }

List<Pet> arrayList = getPet();
        for (Patient list : arrayList) {

                 String pet= list.getPet();

                 System.out.

4
0 739
Discussion Nikita Savchenko · Dec 12, 2019

Hello, InterSystems community!

Lately, you have probably heard of the new InterSystems Package Manager  - ZPM. If you're familiar with it or with such package managers as NPM, Dep, pip/PyPI, etc. or just know what is it all about -- this question is for you! The question I want to arise is actually a system design question, or, in other words, "how should ZPM implement it".

In short, ZPM (the new package manager) allows you to install packages/software to your InterSystems product in a very convenient, manageable way.

14
0 505
Article Timothy Leavitt · Dec 16, 2019 4m read

I've been having a blast with the Advent of Code puzzles this year - though I'll be heading into a busy span of time with family soon and will probably drop off toward the end. (At least, that's what always seems to happen - it's a good thing, though!)

I had a whole plane ride to play around with Day 13 and wanted to share some fun terminal tricks.

2
0 589
Question Rizmaan Marikar · Oct 13, 2019

Hi All,

I have a ZEN report, which gives a PDF output, i want to generate this report programmatically, save to a location in the disk. Here is my method so far

 ClassMethod GenerateReport(ReportID, ReportClass, P1, P2, P3, P4, P5, P6, P7, P8, P9, PUser, PUserID, PUserProfileID, mode = 2, ByRef outputfile = "") As %Status
{
set filename=""
set ZenClassName=$piece(ReportClass,".cls")
set oRpt=$classmethod(ZenClassName,"%New") 
set oRpt.RUID=##class(websys.Report).GetRUID(P1,P2,P3,P4,P5,P6,P7,P8,P9,PUser,PUserID,"",PUserProfileID)
set FileExt=.
3
0 947
Article Pravin Barton · Mar 28, 2019 2m read

ObjectScript has at least three ways of handling errors (status codes, exceptions, SQLCODE, etc.). Most of the system code uses statuses but exceptions are easier to handle for a number of reasons. Working with legacy code you spend some time translating between the different techniques. I use these snippets a lot for reference. Hopefully they're useful to others as well.

 

///Status from SQLCODE:
set st = $$$ERROR($$$SQLError, SQLCODE, $g(%msg))  //embedded SQL
set st = $$$ERROR($$$SQLError, rs.%SQLCODE, $g(rs.%Message)) //dynamic SQL
///Exception from SQLCODE:
throw ##class(%Exception.
5
23 3968
Announcement Evgeny Shvarov · Dec 2, 2019

Hi Developers!

For those who want to participate in the Advent of Code 2019 and code with ObjectScript in IRIS, I created a very simple but handy Github Template.

Use the green button

to copy template in your own repo, clone the repo and run in the repo folder:

docker-compose up -d

you will get InterSystems IRIS 2019.4 Community Edition running with the template classes to load input data from files and Day1 solution.

This is also set up to start crafting solutions of Advent of Code 2019 and edit, compile and debug ObjectScript with VSCode addon.

Happy coding with Advent of Code 2019!

0
0 316
Question Michel Bruyère · Nov 28, 2019

Hello,

I make some changes in our ObjectScript code between our prod environment  and dev environment in the process 'Hl7AdtFileIsoslBp'.

The operation is a class with "EnsLib.TCP.TextLineOutboundAdapter".

In prod:

In dev:

 

Like you can see, I don't have the contents of the text file.

I checked a lot of parameters but it seems identical.

The content of file is correctly received through TCP. So the only glitch is I don't see it in the 'View Full Contents'.

Best Regards.

10
0 675
Question Ikara Ikliki · Nov 15, 2019

When using $SYSTEM.Status.DecomposeStatus(tSC, .tErrorList) in ObjectScript to get the lsit of errors (I need to do this so that I can generate a custom JSON with the error messages) what is the type of tErrorList returned and how to intialize?

I need to know the type to iterate through it, I have tried dynamic array methods sich as %Size() also $LISTLENGTH to get the size, but both fails, so obviously not that, and being new to InterSystems I find the documentation assumes a new person knows what is behind the classes and how it was implemented from the start.

2
0 424
Question Ikara Ikliki · Nov 13, 2019

I have SQLCompute with SQLComputeCode on a couple of Properties in my class.

These work fin when I insert/update via ObjectScript or SQL from the ManagementPortal.

However, if I insert (create new record) via my C# app using the Caché ODBC DLL the SQLCompute is ignored, it does not run.

Is this expected InterSystems Caché behaviour? We are on latest IRIS platform.

7
0 531
Announcement Dmitry Maslennikov · Feb 17, 2019

I'm pleased to announce the latest version of extensions for ObjectScript. Just a month has gone since my latest update, and I already have something new to show.

Important. In this version connection to the server will be disabled by default. You have to activate connection through the settings:"objectscript.conn.active" = true.

12
1 1172
Question Flávio Lúcio Naves Júnior · Oct 21, 2019

Hello Everyone,

I'm want to know, what is more common for your company to use, the abbreviation syntax or the complety name of commands, and why?

Ex. 

S VAR=10 / D FUNC^ROUTINE F 1:1:1000

Set VAR=10 / Do Func^Routine / For 1:1:1000

set var=10 / do func^routine / for 1:1:1000

Here in my company, we are familiar with the abbreviation syntax, because to spell is more faster.

35
0 1187
Article Evgeny Shvarov · Sep 14, 2019 1m read

Hi Developers!

Often I find questions on how to install IRIS, connect to IRIS from IDE, setup the environment, compile, debug, maintain the repository.

Here below possibly the shortest way to set up all the environment and start development with ObjectScript on InterSystems IRIS.

Prerequisites

Make sure you have Git, Docker, and VSCode installed

Install Docker and ObjectScript extensions into VSCode

Sign in or Create an account on Github

Here we go!

9
6 1591
Article Fabio Goncalves · Apr 19, 2017 5m read

In the previous article, I have demonstrated a simple way to record data changes. At this time I have changed the "Audit Abstract Class" which is responsible for recording audit data and the data structure where the audit log will be recorded.

I have changed the data structure to a parent and child structure where there will be two tables to record the "transaction" and the "fields its values" changed on that transaction.

Take a look at the new data model:

Take a look at the code changed from "Audit Class":

Class Sample.
4
1 1196
Question Alex Kogan · Nov 5, 2019

I have a custom written date, setup as myDate in my application, which always behaved fine for years, and now it's acting a little weird. 

When I run SQL in Display mode the date shows as 1/10/1841 for some but not ALL rows.

When I run the same exact query in logical Mode the date shows normal format, in my case, for example 10/1/2019.  When the application is running is shows the incorrect date.  When I run the terminal session and open a ref point and ask to write a date is shows 10/1/2019, but I am expecting internal format here - 65287.   

I was wondering what is causing this issue.

4
0 404
Question David Sterngast · Nov 1, 2019

Hello!  I have basic web services application that java clients connect to the cache web services.  Using the browser, the user enters in the following url.

http://localhost:57772/csp/foia/%25SOAP.WebServiceInvoke.cls?CLS=SOAPFoia.SOAPServiceFoiaWeb&OP=FoiaApp30
'

which runs a soap method called FoiaApp30.   I am not sure how to add https  security to the web service calls.  I have reviewed documentation pertaining configuring SST/TTL configuration and other information.   Can somebody please help me out on what I need to do?

4
0 8267
Question Scott Roth · Oct 30, 2019

I must be missing something. We have done encoded PDF's in the past with the Encoded PDF in OBX.5.5. When I have used this code in the past I was only working with 1 OBX, but I have a case where I am having multiple OBX's and having to loop through them and I am renumbering the outbound OBX.

<code>
<![CDATA[ // OBX]]></code>
<assign value='1' property='varOBXindex' action='set' />
<assign value='1' property='varOBX1' action='set' />
<foreach property='source.{ORCgrp(1).OBRgrp(1).OBXgrp()}' key='k1' >
<if condition='source.{ORCgrp(1).OBRgrp(1).OBXgrp(k1).

1
0 657
Announcement Anastasia Dyubaylo · Oct 24, 2019

Hi Community,

As you may know, we successfully held InterSystems Developers Meetup in Boston at Global Summit 2019. And now it's time to find out which solutions development on InterSystems IRIS have been discussed! 

Please welcome the Meetup video recording on InterSystems Developers YouTube Channel:

⏯ InterSystems Developers Meetup - Global Summit 2019

 

0
0 257
Question Yone Moreno · Oct 13, 2019

I  am reading the following code in ObjectScript:

GitHub repository
 

And there is a sentence which I am facing difficulties to understand:

    kill ^OPNLib.Game.CWLF(..World)

I know that kill removes variables, OPNLib.Game are the package and subpackage, and ..World is a property. However what does CWLF mean?

You could think that it is the class' name, but it is:

Class OPNLib.Game.ConwayLifeGame Extends %Persistent

The class name is ConwayLifeGame

Is CWLF an alias for the class name?

If yes where is it

2
0 276
Question Ting Wang · Oct 8, 2019

Hi All,

 

I am encountered <INVALID OREF> error in one of the components in the namespace as we are processing and generating huge files and sending them to downstream systems. One possible way we tried was to allocate more memory for the namespace in ensemble, but this kind of intermittent error still occurred only if processing the huge files. Also we tried to resend the failed message and the error would be gone. Another possible solution is to kill unused local variables to release memory space.

2
0 3782