I disagree with your assertion that you can't call at a tag in a way that you can call from the top:

USER>zp
YJM      w !,"Runs in ",$namespace,! q
         ;
SUB      ; A subroutine tag
         w !,"SUB^YJM runs in ",$namespace,!
         q
 
 
USER>zn "samples"
 
SAMPLES>d SUB^|"USER"|YJM
 
SUB^YJM runs in SAMPLES
 
SAMPLES>

I find it confusing that you talk about calling a routine in a namespace. As I see it you're fetching it from another namespace (i.e. the one the routine lives it), but you're running it in your current namespace.

You also need to be aware of what happens if the code you fetch from the other namespace makes its own calls to other code. Here's an illustration:

USER>zp
YJM      w !,"Runs in ",$namespace,! q
         ;
SUB      ; A subroutine tag
         w !,"SUB^YJM runs in ",$namespace,!
         q
         ;
Test1    ;
         w !,"About to call local line label YJM",!
         d YJM
         q
         ;
Test2    ;
         w !,"About to call a line label in a specific routine",!
         d SUB^YJM
         q
 
USER>d Test1^YJM
 
About to call local line label YJM
 
Runs in USER
 
USER>d Test2^YJM
 
About to call a line label in a specific routine
 
SUB^YJM runs in USER
 
USER>zn "SAMPLES"
 
SAMPLES>d Test1^|"USER"|YJM
 
About to call local line label YJM
 
Runs in SAMPLES
 
SAMPLES>d Test2^|"USER"|YJM
 
About to call a line label in a specific routine
 
 d SUB^YJM
 ^
<NOROUTINE>Test2+2^YJM *YJM
SAMPLES 2d0>
 
SAMPLES 2d0>q
 
SAMPLES>

Kenneth, I don't think you are correct here. Apart from invalid syntax you gave, even with the correct syntax the routine is fetched from the specified namespace and executed in the current namespace. See the following example using a simple test routine (YJM) that I created in my USER namespace and then executed from my SAMPLES namespace:

USER>zl YJM zp
YJM      w !,"Runs in ",$namespace,! q
 

USER>d ^YJM

Runs in USER

USER>zn "SAMPLES"

SAMPLES>d ^YJM

D ^YJM
^
<NOROUTINE>^YJM *YJM
SAMPLES>d ^|"USER"|YJM

Runs in SAMPLES

SAMPLES>w $zv
Cache for Windows (x86-64) 2017.2.1 (Build 801U) Wed Dec 6 2017 09:07:51 EST
SAMPLES>d ["USER"]YJM^YJM

D ["USER"]YJM^YJM
^
<SYNTAX>^YJM
SAMPLES>

Bob, your question doesn't belong in the "Developer Community Feedback" group, since that's for -- well -- feedback about Developer Community. Nor is the "Developer Community" tag appropriate for it, since that also is intended for posts about DC. Please edit your post, moving it to another group, perhaps "Ensemble", and removing the "Developer Community" tag.

UPDATE - it looks like someone (one of my fellow mods?) has moved it to the Ensemble group already. You can still remove the tag, and maybe remember not to post to "Developer Community Feedback" in future unless that's the nature of your post. Thanks!

Sounds like you already have server-side source control (CCR) similar to the Deltanji product from my employer George James Software. In that case, your simplest option is to get your Atelier users to connect to the server instances in the same way as they currently do with Studio.  There's no need to change your code management paradigm (and thus your source control system) as well as your editor.

I recommend you go through that Global Summit session Ben Spead referenced in his earlier comment.

If you're not already committed(smiley) to using Git, you might consider the Deltanji source code management tool from my employer, George James Software. One of its features is the ability to manage deletion of code components (e.g. classes, routines, files, lookup tables, HL7 schemas etc) and propagate those deletion downstream in whatever workflow  you have configured (e.g. DEV, QA, STAGING, LIVE).

The documentation is misleading about this.  It says:

When you upgrade Caché to a new version, existing Query Plans are automatically frozen.

And later:

The earliest upgrade that performs this operation is an upgrade to 2017.1.0.

What it needs to say is:

The earliest upgrade that performs this operation is an upgrade from 2016.2.0.

The docs do use 2016.2 as the "from" version in their example, but not in a way that communicates how this nice feature won't help with upgrades from pre-2016.2 versions.

@Brendan Bannon - please draw this to the attention the InterSystems documentation team.

Above I've deliberately linked explicitly to the 2017.2 doc rather than to "latest" because I hope that in due course the latter will get corrected.

A bit more info on the answer from @Jeffrey Drumm

Here's how the relevant part of the 'Environment, Documentation and Proxy' section of Studio's Tools\Options dialog starts out:

In this state I can use the standard 'SOAP Wizard' add-in but it is served by the private web server of my Cache server installation. I'm testing from the Windows desktop this runs on.

I also have an instance of IIS on that Windows host, and the IIS is correctly configured to serve Portal and documentation pages from both http://localhost/ and https://localhost, plus from http://localhost/cache111 and https://localhost/cache111

Back in the Studio Options dialog I set the checkbox and start trying some value-pairs in the now-active Address and Port fields. Here are my results:

AddressPortResult of launching add-in
localhost80Success
localhost443White page, presumably because HTTP is requested from 443
localhost/cache11180CSP Error page, which reveals that the CGI variable CACHE_URL has the malformed value http://localhost:80/cache111:80/isc/studio/templates/SOAPClientWizard.csp
https://localhost443Works from Studio 2017.2.1 but fails from Studio 2014.1.1 and displays a page headed "Navigation to the webpage was canceled".
https://localhost/cache111443Fails from Studio 2014.1.1 as above. Gives CSP Error page from Studio 2017.2.1, which reveals that the CGI variable CACHE_URL has the malformed value http://localhost:443/cache111:443/isc/studio/templates/SOAPClientWizard.csp

Note too that if we enter a value for Address but leave Port blank the dialog files a value of 80 in the Port field. This can be seen when the dialog is reopened.

Conclusions from above:

  1. Templates and add-ins can be served from a server other than the Private Web Server as long as they are served from the root.
  2. Studio 2017.2.1 can fetch templates and add-ins using HTTPS when correctly configured. This is not true of some earlier versions of Studio.

No, a variable name cannot contain the underscore character, because that character is the concatenation operator. If it was allowed in a variable name, how would we interpret this, for example?

WRITE TICK_TOCK

Is it concatenating variables TICK and TOCK, then writing out the result? Or writing the value of a single variable named TICK_TOCK.

If the utility you refer to is expecting you to supply data values in variables whose names match the SQL column names, then the developer of the utility hasn't accounted for the fact that SQL column names can contain underscores but Caché variables can't. So the utility needs fixing.

For Windows the link http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCI_windows#GCI_windows_upgrade gets you to a short section titled "Caché Upgrade Installation".

For other platforms the principle is the same. Stop the Caché instance you're going to upgrade (or at least be prepared to allow the upgrade procedure to stop it). Then run the installer script in the same way as if doing a new installation. Pick the existing instance you want to upgrade.