John Murray · Feb 12, 2019 go to post

Some initial thoughts:

-  There should be a central name registry, to avoid clashing on namespace/database names, package names etc between different package providers.

- Consider assigning a top-level reserved package name (also prefix for globals and routines), and a namespace/database prefix, to avoid clashes with names that end-users of the tools might pick.

- What's the upper limit on namespaces? Databases? Any relevant constraints for Community Edition of IRIS?

- Adding a namespace for each tool package will lengthen namespace lists in Studio, Portal etc. Maybe tools don't always need a namespace in front of their database. Ones that present a web app / REST interface probably do (at the moment) because of how the app config has to point to a namespace.

- Tools should be able to register stuff that needs to be run during environment startup and shutdown. The current need to create/edit %ZSTART / %ZSTOP routines is clunky.

John Murray · Feb 12, 2019 go to post

What platform are you running Cache on? And what Cache version? Can't you access the Windows fileshares directly from ObjectScript without needing to call out through the Java gateway?

John Murray · Jan 23, 2019 go to post

In that case I'd like to lobby for devchange JGM785 to get into Ensemble 2018.1.2. This devchange addresses a longstanding weakness in Portal, namely that its schema editor didn't respect server-side source control.

John Murray · Jan 23, 2019 go to post

Is there an ETA for 2019.1 preview versions of Caché and Ensemble, for those who haven't yet migrated to InterSystems IRIS?

John Murray · Jan 17, 2019 go to post

I shall be there from the Tuesday lunchtime until Wednesday night and will be happy to demonstrate it wherever people want to gather round my laptop. There isn't a Partner Pavilion at the event.

John Murray · Jan 16, 2019 go to post

Sorry about that David. I've edited the post to include my email address.

John Murray · Jan 16, 2019 go to post

Yes Herman, we hope to be there. But if you'd like to get your hands on it before then please contact me as indicated above.

John Murray · Jan 15, 2019 go to post

My guess is you're not testing the SQLCODE variable's result before you try and access the KeyID host variable.

Docs here.

John Murray · Jan 14, 2019 go to post

To use our extension you have to install some code on the target server. This code works on the latest platforms (e.g. the IRIS 2018.2 Field Test container) and on versions back to well before InterSystems' Minimum Supported Version. Indeed, one of my targets is still on 2008.1.

So a single VSCode instance can connect to many different server versions.

Does that answer your question Robert?

John Murray · Dec 14, 2018 go to post

Maybe cause by some kind of fault in query caching? Please post your $ZVERSION info in case it's relevant.

John Murray · Dec 7, 2018 go to post

Are you able to share the XML export of a class definition (the simpler the better) that demonstrates this problem?

John Murray · Nov 29, 2018 go to post

I don't think you need it at all. Take it out entirely and I'm betting your page will still work.

John Murray · Nov 29, 2018 go to post

What's the purpose of the  <base href="/">  in your <head> section? And if you remove it does your problem go away?

John Murray · Nov 29, 2018 go to post

Is your Z: drive a mapped one? If so, it might not be available to the Windows user that the InterSystems background processes run as. Is your Ensemble instance running as LocalSystem (see Windows Services)?

John Murray · Nov 29, 2018 go to post

If I go to http://localhost:57772/testwebapp, I get "Not found".

Yes, this is expected. The private instance of Apache which HealthShare runs on your port 57772 isn't set up to serve 'default' page(s).

As for your relative path problem, please show us what your index.html file looks like. Simplify it if you wish, but make sure you don't fix the problem as you do so!

John Murray · Nov 22, 2018 go to post

Another reference - https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KE…

The section headed SQLCODE is reproduced below:

SQLCODE
After running an embedded SQL Query, you must check the SQLCODE before processing the output host variables.
If SQLCODE=0 the query completed successfully and returned data. The output host variables contain field values.
If SQLCODE=100 the query completed successfully, but output host variable values may differ. Either:
  • The query returned one or more rows of data (SQLCODE=0), then reached the end of the data (SQLCODE=100), in which case output host variables are set to the field values of the last row returned. %ROWCOUNT>0.
  • The query returned no data, in which case the output host variables are undefined. %ROWCOUNT=0.
If a query returns only aggregate functions, the first FETCH always completes with SQLCODE=0 and %ROWCOUNT=1, even when there is no data in the table. The second FETCH completes with SQLCODE=100 and %ROWCOUNT=1. If there is no data in the table or no data matches the query conditions, the query sets output host variables to 0 or the empty string, as appropriate.
If SQLCODE is a negative number the query failed with an error condition. For a list of these error codes and additional information, refer to the SQLCODE Values and Error Messages chapter of the Caché Error Reference.
Depending on how Embedded SQL is invoked, you may have to NEW the SQLCODE variable before entering Embedded SQL. With trigger code, setting SQLCODE to a nonzero value automatically sets %ok to zero.
In Dynamic SQL, the corresponding %SQLCODE property returns SQL error code values.
John Murray · Nov 15, 2018 go to post

And a ZMIRROR routine is useful if you're using InterSystems mirroring and need things to happen only on the primary, for example.

John Murray · Nov 5, 2018 go to post

I suggest the following strategy:

  • Read line
  • If $Length(line,"""")#2=1 then you have a complete CSV line (an even number of doublequotes)
  • Otherwise read line2 and append it to line. Repeat this until $Length(line2,"""")#2=1. If you reach the end of the file before this happens, the CSV source is malformed.

In the above algorithm you may want to cater for the case where concatenation of consecutive lines would exceed the maximum local string length.