Hi Juuso

Are you running the ##class(Ens.Director).StopProduction() in the same namespace where your production is running?

If you are logging into terminal and your default namespace is not the same as the namespace where the production is running then you will get this error especially if your default namespace is "USER" which is not an Ensemble enabled namespace.


zn "{namespace_name}" to move to the correct namespace

if you are uncertain of the namespace name then you can call the utility

d ^%CD

It will prompt you for a namespace. Type in ? <enter> and you will be displayed a list of namespaces. Select the namespace you need to be in and then run your code.


OMG, I had completely forgotten about those pocket guides. I had 3 or 4 of them and as far as I know, I still have them in a crate of paperwork in the loft in my house in Johannesburg. And you are right, $next() was a valid ANSII function until replaced by $order(). I stand corrected and the video clip was a magnificent 'extra' to emphasise your "solon Archives". Made me grin from ear to ear.

Hi Joel, you are correct however the ansii standard used $order however a couple of vendors supported $next. I was sitting on the ansii committee at the time when we were deciding whether we would ratify both and the final conclusion that there was need for only one function and that function name would be $order. On the surface $next would seem to be the more logical choice and unfortunately it was so long ago I cant remember the final reasoning that decided on $order.

Hi Michael, what aspects of ObjectScript do you find frustrating. I'd be interested to get the views of developers new to ObjectScript for two reasons.

1) Ip have worked with  Fortran, Pascal, Basic, APL, Cobol, DOS, C#, JS and now Python and R and, with the exception of APL, I generally found that most languages consist of a set of commands, functions, datatypes, operators, and though the actual name of a command may vary between languages I fundamentally understand that there will be an if/ifelse/else, for, try/catch, foreach,  construct equivalent in every language. Once you've absorbed the language elements then its just a case of expressing the logic of your function using the elements of that language. There are some things in ObjectScript such as $query, execute, indirection, the ability to treat a string as a numeric (write ! Write "15 Apples" + "25 Pears" w " Fruit") are peculiar to ObjectScript and I have found nothing similar in other languages. I make heavy use of things like $classmethod(), $classnsme(), $property(), as I write a lot of abstract classes which, when inherited into a host of other classes, I don't always know which class I am in but I know that it has a class method "MyMethod" so I will write code such as 

Set tSC=$clasdmethod($classname(), "MyMethod", {param1}, ...) 

So, over the years I have managed to get ObjectScript to express all the logic I have ever needed (short of Mathematical modelling and Data Science which historically has not been an issue as I have written transactional applications or Ensemble interfaces.  Now that we have applications out there with 30+ years of structured and unstructured data stored in them I can't wait for the opportunity to build iFind indices. IKnow entity relationships and using IRIS analytucs, especially python, R and their large libraries of analytical functions and turn my attention to say a LabTrak database and start looking for correlations between histology or cytology observations, the patient demographics and some external datasources of lead levels  asbestos, socio-economic backgrounds and see what correlations there may be between those dimensions and the likelihood of a patient with certain key dimensions developing a type of cancer, or diabetes and so on. 

2) Ii have been learning a lot if new stuff recently, Ubuntu, Docker, Node.js. Python, since I became the father of 4 baby Pi 4B's and in learning all of these new technologies I came across a host of Cheat Sheets and I was struck by how useful they have been and how, in a sense, they are almost works of art. So I have set my heart on developing a set of ObjectScript, Ensemble Adapter, Cache Studio, System Management Cheat Sheets for IRIS and given the sheer volume of stuff that I could include I am keen to understand what I include and what I leave out and understanding where you have been frustrated may help me focus on what would be included and what is best left for the full documentation.


Yes. You're right, it should be Who, not How. I'll see if I can edit the article.

When data in the global buffer pool is written back to the database ach block is encrypted and stored. When data is retrieved it is decrypted as it is pulled into the Global Buffer Pool. When data is pulled from the Global buffer pool into your process it remains unencrypted. So there is an implicit cost in encrypting and decrypting the data blocks but this only happens in that single place of retrieval and storing. I can't remember what the cost is relative to not using encryption but it is documented. The same applies to data moving between IRIS and a web page and any tcp based communications

Fortran would be my guise. Fortran is getting a bit of a makeover and there is renewed interest in it. I was reading somewhere the other day and they mentioned that fortran and some of the earliest languages are making a comeback because of their lowlevel interaction with devices and hardware. An art we have long forgotton but there is renewed desire for people to get to the low bits and bytes and fortran is one way

I have been reading a pdf called the Zen of Python which I am going to upload in a seperate article post. The particle lists all of the language constructs in Python and as I was working my way through the document it occurred to me to write a corresponding Zen of ObjectScript which would give the ObjectScript equivalent of each Python example. And by and large much of Python is earily similar to ObjectScript but then I came across some things in Python where two python statements does some really wierd thing and to mimic the.behaviour in ObjectScript would take several lines of code and in all likelihood would be slower than the python code. I'm tempted to whet your appetite here but you'll have to wait until I've done the entire article. I have to confess that some of the python functionality is very clever from an ideological point of view but  I struggled to think of a scenario where I would need such functionality in real life code but there again one of the examples of how objectScript treats strings that I have 10000 times over the years is the statement 

Write "15Apples" + "25Pears"


To explain how objectScript treatsthe expression as a numeric 'plus' on the two strings and I giggle quietly as the classroom of developers who know basic or JS expect the result to be either a concatenation or a data type mismatch but I often use the expression 

If '+variable where the variable is either a non 0 numeric or "" especially if variable is passed as a parameter that in the method parameter list defaults the Parana to "" to avoid have to use $get()

Oh ok, I give in, write the following statements in a python program 

Import print 

message = 'It was a bright cold day in April, and the clocks were striking 


count = {} 

For character in message: 

count.setdefault(character, 0) 

count[character] = count[character] + 1 


Note that thirteen.' is on a new line 

It is a nice piece of functionality and I suspect I could write it in two lines of ObjectScript and though I have to tested the execution time I suspect that ObjectScript would be fractionally faster, which if the message was a far longer string