#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.

Announcement Francis Galiegue · Apr 18, 2016

Hello,

I hereby announce the creation of an IRC channel dedicated to Caché development:

* network: FreeNode (connect to server: irc.freenode.net)

* channel: ##cos (yes, two hashes).

Topic is anything related to Caché development in spite of the name (and the fact that of Caché development I only really know about COS anyway), so sorry in advance for the restrictive channel name :)

Waiting for you here! (my nick is idletask on freenode)

Side note: that would be a good opportunity to launch a project of an IRC bot in COS.

0
0 386
Question Francis Galiegue · Apr 13, 2016

Hello everyone,

I have discussed extensively with Andrew Cheshire, the author of the Atelier parser (which I'll be able to hack on and reuse for CachéQuality -- yay!), and while we were at it, we also discussed code coverage.

We ended up talking about the ZBREAK command and its /TRACE option.

It appears that combining this command and the unit test runner, we can indeed do code coverage (Andrew also told me about a way to map "back" routine lines to original lines in the source code).

4
0 442
Announcement Francis Galiegue · Apr 6, 2016

Hello community!

Two new rules have been implemented:

OS0061: unsafe namespace switch

This rule detects when the body of a method contains two or more of the following statements:

  • set $namespace = something, or
  • znspace something.

If this is the case, it then checks whether there is a new $namespace prior to those two declarations; if not, it raises a warning.

List of issues currently found here:

https://demo.cachequality.

8
0 583
Article Francis Galiegue · Apr 10, 2016 1m read

Hello!

Link: https://demo.cachequality.com

In this presentation, developer oriented, we will cover this tool, how it works, how you can use it/administer it, etc. Duration 30 minutes.

The topics will include:

  • a short presentation of Caché Quality and SonarQube (which this plugin uses),
  • a demonstration of the rules and how to tailor them to your need.

Questions will be more than welcome! Hope to see you there!

And a big thanks to Evgeny Shvarov who made this possible!

0
0 690
Article John Murray · Mar 7, 2016 1m read

When developing or maintaining Caché Objects applications, or even ones written in plain COS code, it's sometimes useful to investigate dependencies. Yuzinji is a tool that analyzes the Caché class dictionary plus the COS code within methods and routines, then feeds its results into Structure101g Studio.

By doing this it becomes easy to ask questions such as "Who uses this piece of code?", getting the information in a format that is easy to explore further. For example, I recently analyzed all the packages in the SAMPLES namespace of the 2016.

1
0 928
Question Joel Solon · Feb 18, 2016

This morning on the old Caché Google Group, someone posed the following question, which I've decided to answer here, because it's interesting!

Is there a way to iterate ClassMethod's params, and get param's names and values?

The first answer I can come up with is: it's not easy! In any method, you could try to write code like this (where methodName is the name of your method):

    set method = ##class(%Dictionary.MethodDefinition).IDKEYOpen($classname(), methodName)
    set args = method.
1
1 1971
Question Timothy Leavitt · Feb 9, 2016

Looking at a property defined as follows:

Property SystemTime As %Library.TimeStamp [ SqlComputeCode = {Set {*}=$ZDATETIME($NOW(),3,1,0)}, SqlComputed ];

The documentation talks about using SqlComputed and SqlComputeCode with SqlComputeOnChange (specifying which events will trigger computation), and about using them with the Calculated keyword (so it's always computed). I don't see any specific explanation of the case above, though, when neither SqlComputeOnChange nor Calculated is specified.

4
0 859
Question Scott Beeson · Feb 8, 2016

I've searched the ObjectScript reference for any instances of Upper, Lower or Case and the only thing is a case/switch statement.  In all the documentation I can only find SQL and Cache Basic references for things like UCASE.

So how do I do this in ObjectScript?

For instance,  if (ucase(dtype)="G") { }

2
0 456