#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 Minsu Kim · Feb 5, 2018

Hi global developers!

I am using terminal but I have some problem with it.

I use $C(1) (ascii code 1) to separate data but I can't see it in the terminal and This is really hard to see in the table.

So I want to get you guys good brain and skill :)

how can I see it in the terminal ?

Terminal(intersystems) :

I can't see anything

another program :

It replaced ascii code 1 (=SOH) to  ┌ (Special Character)

I want to see like another program in Intersystems's terminal.

Thank you smart developers!

3
0 515
Question Robert Harris · Jan 27, 2018

Hi,

I have an Atelier question.

I have a routine developed in Studio to upload a tab-delimited text file to process using Objectscript into Cache.

In Windows, to upload the file “test.txt”, I used the Objectscript commands,

      Set uploadfilename = “c/testdata/RNAseq/GDC download 11-19-17/GDC download 11-19-17 counts/GDC download 11-19-17 unzipped/test.txt”
      set file = ##class(%Stream.FileCharacter).%New()
      set file.Filename = uploadfilename  ; pass in the file name of the file you want to open.

How should this be done on a mac?

7
0 409
Question Scott Roth · Jan 24, 2018

Is it possible to have a, b, c, d, e, and f as a counter instead of the counter being numeric? See below...Epic would like us to set OBX.4 using a alpha numeric combination.

OBX|4|ST|69548-6^Genetic Variant Assessment|1.a|Mutation IDH1:Not Detected||||||F

OBX|5|ST|69548-6^Genetic Variant Assessment|1.b|Mutation IDH2:Not Detected||||||F

OBX|6|ST|69548-6^Genetic Variant Assessment|1.c|Mutation NPM1:Not Detected||||||F

OBX|7|ST|69548-6^Genetic Variant Assessment|1.d|Mutation RUNX1:Detected||||||F

OBX|8|ST|69548-6^Genetic Variant
3
0 418
Question Scott Roth · Nov 18, 2016

I am trying to come up with a way to decode the Base64 we receive in an HL7 message into a PDF file and save it in a directory on our AIX machine. I thought I had the following working at one time but I am having issues. Has anyone done this before?

ClassMethod DecodeBase64HL7ToFile(base64 As %Stream, Ancillary As %String) As %Boolean
{
set Oref = ##class(%FileBinaryStream).%New()
set Oref.Filename = Ancillary
Do base64.Rewind()
While 'base64.AtEnd {
    set ln=base64.ReadLine()
    set lnDecoded=$system.Encryption.Base64Decode(ln)
do Oref.Write(lnDecoded)
}
Do Oref.%Save()
quit 1
}

Thanks

Scott

5
2 4643
Question Andrei Luiz Nenevê · Feb 24, 2017

Hi,

My doubt is about the SQL Query in Caché:

I don't want to take all results from the table and orgainze them manually, for example: I have a table with 50 records, but I only want to select 10 records, being from tenth until the twentieth and this without knowing their IDs.

So, how can I do this, without losing performance, there is any way?

NOTE: In other SQL languages I can do, for example, SELECT * FROM extbl Limit 10 OFFSET 10

Thanks,

Andrei L. Nenevê

8
1 3599
Question Scott Roth · Jan 12, 2018

What happens if you don't declare a Persistent value when you call ExecuteQuery()? What does Ensemble set as the key value for your query? I have a query that I've executed on SQL Server, and I get 15 rows, but because this is my second time querying the data Ensemble thinks it exists. 

The Method in question is SelectProviderClarityAudit. If I call this query multiple times it is not returning the same number of results each time in Ensemble.

Class osuwmc.CPD.ClarityDBPoll Extends Ens.BusinessOperation [ ClassType = "", ProcedureBlock ]
{
Parameter ADAPTER = "EnsLib.SQL.

3
0 524
Question Brian Downing · Jan 8, 2018

This is probably a very naive question but :
Is it possible to create a Windows executable file from a Cache MUMPS (COS) routine, such that the routine can be run directly from Windows ?
If so, could some kind soul direct me to a source of information that describes the process.
I am using the free Intersystems Cache installation (CachePCkit V2017.1) on Windows 10 for my own use & personal development.

Thanks

13
0 1537
Question Manikandasubramani S · Jan 4, 2018

Hi All,

I am new to webservice and UPS. I have tried the sample URL's that UPS have given for testing in PHP codes and it works just perfect for me.

But when i try to hit the same URL's in Ensemble. it gives some errors from UPS.

If anyone of you guys here has any knowledge about UPS integration or the webservice please help me. it will be much appreciated and helpful.

The ensemble code that i am trying with is,

  set AuthToken=##class(%Net.HttpRequest).%New()
  set AuthToken.SSLConfiguration="UPS"
  set AuthToken.Https=1
  set AuthToken.Server="wwwcie.ups.com"
  Set AuthToken.
5
0 1433
Question Joe Schra · Jan 4, 2018

Hi Everyone,

I am trying to reference a field, however, in our production environment, it can be found in the first second or third iteration. My code was only qualifying on the first iteration. I have been attempting to include all iterations, but I have come up short...below is a snippet of what I am attempting to use.  My original code simply had GetValueAt("PID:13.4") but this only referenced the first iteration. Thanks for any thoughts!

Set PID13 = pInput.GetValueAt("PID:13")
For iIndex=1:1:4 {
  Set Eaddr = pInput.GetValueAt("PID:13.4[iIndex]")
  If (..Contains(Eaddr, "@")) {
1
0 318
Announcement Evgeny Shvarov · Dec 26, 2017

Hey guys!

Thanks for participating in our small but productive COS marathon on behalf Adventofcode 2017!

The leaderboard is here:

And we are ready to announce the winner but need your public repositories with COS solutions inside. Please share it below in comments.

We have results!

1st place: Bert Sarens!  Repository.

2nd place: Peter SteiwerRepository.

3rd place: Dmitry MaslennikovRepository.

Congratulations Bert! 

You get 10,000 Global Masters points and the title of the AdventOfCode champion in Caché ObjectScript at least until December 2018! 

Peter and Dmitry!

10
0 682
Question Kishan Ravindran · Dec 26, 2017

What is difference between using a command $classmethod rather than just invoking them straight away?

For example if i need to call a class and its method i can just use like

do ##class(circle).radius()

rather than using

do $classmethod("circle",radius)

(I suppose both of them doing the same function i am not aware of it)

Please help me understand what is different and is there any specific usage.

Correct me if i have made mistake.

7
0 512
Question Jenna Makin · Jun 1, 2016

I would like to write some code to parse a set of HTML pages from the internet in order to gather information from each web page.

All of the web pages are generated using a template, so the format of each of the web-pages is consistent with one-another and the information that I want to gather is always located in the same logical place within the page.

What is the best way to parse an html page in order to gather information at a specific place?

Can XML XPATH be used here?  Does anyone have any examples of parsing HTML content?

6
0 1758
Question Scott Roth · Dec 15, 2017

We are seeing something funky when using $ZSTRIP.

w $ZSTRIP("ZZZZTESTSLOCKTEST","<","ZZZZTEST")
LOCKTES
T

Shouldn't this be returning....SLOCKTEST and not LOCKTEST, the goal is to remove ZZZZTEST from the beginning of the string.

THanks

Scott Roth

The Ohio State University Wexner Medical Center

1
0 608
Question Sean Connelly · Dec 9, 2017

Has anyone tried adding syntax highlighting to GitHub for Caché CLS files?

Looking at the list of supported languages and extensions...

https://github.com/github/linguist/blob/master/lib/linguist/languages.yml

It looks like Mumps is supported, and there is also an existing language with a .cls extension, which would account for why I see some very odd highlighting going on with some of my code.

There is a page on contributing a new language here...

https://github.com/github/linguist/blob/master/CONTRIBUTING.md

Looks like its possible to use extensions more than once for different

6
0 501
Article Vitaliy Serdtsev · Dec 8, 2017 6m read

First-class functionwiki

In computer science, a programming language is said to have first-class functions if it treats functions as first-class citizens. This means the language supports passing functions as arguments to other functions, returning them as the values from other functions, and assigning them to variables or storing them in data structures. Some programming language theorists require support for anonymous functions (function literals) as well. In languages with first-class functions, the names of functions do not have any special status; they are treated like ordinary variables with a function type.

This post continues the article “Declarative development in Caché”.

[2357111317].forEach(function(i) {
  console.log(i);
});

How to do something like this in Caché using COS?

Below are some exercises on this topic.

0
0 538
Question Scott Roth · Nov 30, 2017

I have a process that I am trying to duplicate from SQL Integration Services (SSIS) into Ensemble so that the rest of my team can help support any issues that may happen.

This particular job creates multiple dictionary files, but for each one of the dictionary files it creates, it also creates a control file that tells the vendor what to process.

So example....I have a result set that is written to a.txt but I also need to create a a.ctrl, then I will have a b.txt and need a b.ctrl.

Using only one EnsLib.RecordMap.

1
0 544
Question Arun Kumar · Dec 1, 2017

Hi Guys,
Can you please guide me to get rid of this issue. Please find the image files with this post.

Please let me know, before we are developing an API what are all the setup/Configuration(Apache/web server) need to do in my machine. 

If any lead would be appreciated. 

I don't know, in XMLNamespace parameter which URL need to use.  

.

Thanks,

Arun Kumar Durairaj.

3
0 594
Question Evgeny Shvarov · Nov 6, 2017

Hi, folks!

Suppose you have a Caché class with %String property which contains relatively large text (from 10 to 2000 symbols).

The class:

Class Test.Duplicates Extends %Persistent 

{

Property Text As %String (MAXLEN = 2000);

}

And you have thousands of entries.

What are the best options to find entries which are duplicates on this property?

26
1 1527
Question CJ H · Nov 27, 2017

aa=$zwc(411,1,1,3)/*$bit(1,3,5)*/
bb=$zwc(403,1,0,2)/*$bit(1,3)*/

Is there a handy function to test wether one bit string is covered by another one bitstring? For example, "bb" is covered by "aa".

I currently implement this by one AND operation and then do a bitcount, I just want to know any default function is already out there.

Thanks.

3
0 443
Question Nikita Savchenko · Nov 26, 2017

Hello!

Suppose I have a package with classes which I want to rename. All these classes are persistent and they already have a lot of data stored.

The best I can think of to do is the following:

  1. Duplicate class definitions of old classes, rename each of them and save
  2. Write a routine to copy (duplicate) all the data from old classes to new ones. (which is not trivial at some point)
  3. Refactor all the application's code to use new classes. (which may not be trivial at some point too)
  4. Test the things above
  5. Load new code to live environment and launch the script
  6. Hope that 5. finishes successfully.
10
0 1560
Article Danny Wijnschenk · Nov 25, 2017 4m read

This is (the end) of a series of programming challenges for beginners and experienced Caché programmers.

For an introduction : go to article https://community.intersystems.com/post/advent-code-2016-day1-no-time-t…

This is the 25th and last challenge of the 2016 series of Advent of Code.

In this challenge,  you have to send a signal out,  using the assembunny code interpreter that  we had to make in earlier challenges.

There is one extra instruction added to the assembunny language, which outputs a value (out x).

Using the instructions as input (see http://adventofcode.

1
0 584
Article Danny Wijnschenk · Nov 24, 2017 11m read

This is a series of programming challenges for beginners and experienced Caché programmers.

For an introduction : go to article https://community.intersystems.com/post/advent-code-2016-day1-no-time-t…


Today, you need to find your way through a maze (again). There are 8 points of interest in the maze, and you have to visit them all, starting with point 0.
You may visit some points more than once, in random order. The challenge is to find the shortest path through the maze while visiting all points.

0
0 313
Article Danny Wijnschenk · Nov 23, 2017 4m read

This is a series of programming challenges for beginners and experienced Caché programmers.

For an introduction : go to article https://community.intersystems.com/post/advent-code-2016-day1-no-time-t…
 

Remember the assembunny language we had to code on day 12 (https://community.intersystems.com/post/advent-code-2016-day12-leonardo…)?

There is a new instruction we have to implement which toggles an instruction x lines away (further or back).

  • For one-argument instructions, inc becomes dec, and all other one-argument instructions become inc.
0
0 402
Question Maks Atygaev · Nov 23, 2017

Dear community!

What do you think about webinar "Declarative programming on COS"? I want to do such one.

I am going to tell about main points of declarative programming and how you can implement it in your real projects.

Please feel free to write your opinion here.

Please if you wish to become a member of such webinar write me a message to atygaev.mi@gmail.com with subject "webinar".

1
0 296
Article Danny Wijnschenk · Nov 22, 2017 5m read

This is a series of programming challenges for beginners and experienced Caché programmers.

For an introduction : go to article https://community.intersystems.com/post/advent-code-2016-day1-no-time-t…


The goal of today's challenge is to copy data from one disk to another, problem is that the disks are not directly connected. Luckily they are in a huge grid, and you have to find a way to copy the data through adjacents disks, while honoring the disk usage (you cannot copy to a disk where data is already stored).


The input is a df-like disk usage listing.

0
0 678
Article Danny Wijnschenk · Nov 21, 2017 5m read

This is a series of programming challenges for beginners and experienced Caché programmers.

For an introduction : go to article https://community.intersystems.com/post/advent-code-2016-day1-no-time-t…
 

The challenge of day 21 is about scrambling passwords.

There are a few functions you need to implement that will do operations on a string :

- swap position X with position Y : means that the letters at indexes X and Y (counting from 0) should be swapped.
- swap letter X with letter Y  : means that the letters X and Y should be swapped (regardless of where they appear in the string).
0
0 491
Article Danny Wijnschenk · Nov 20, 2017 3m read

This is a series of programming challenges for beginners and experienced Caché programmers.

For an introduction : go to article https://community.intersystems.com/post/advent-code-2016-day1-no-time-t…

We are almost there : after this challenge, only 5 days left till the end of this advent of code (I cannot wait to get my life back !) .

 

The challenge of day 20 is about a list of integer ranges. Some ranges overlap,  but there are also values that are outside any range.

You have to find out what is the lowest integer that is outside any range.

0
0 438