go to post John Murray · Aug 10, 2017 It's a very long time since I used GBLOCKCOPY on a Cache 5.0 system, but I think you may be able to simplify your steps.1. Create a new temporary database via Configuration Manager. You probably don't need a new namespace as well.2. Use GBLOCKCOPY to copy your old database contents into your new database.3. Dismount your old database and your new one. Or just shut down Cache completely.4. Rename your old database (the big one), e.g. to CACHE.oldDAT5. Move the temporary database's CACHE.DAT file to where the old one was.6. Mount your database (or start Cache).7. Use Configuration Manager to delete the temporary database you defined in step 1.8 Check everything is working.9. Delete the renamed big database file you preserved in step 4.10. Come back to DC, tell us how it went, and set the checkmark against one of the answers to show you have accepted it.
go to post John Murray · Aug 10, 2017 Expanding on the earlier answers by Eduard and Robert:A process will not be able to switch to a namespace (e.g. with Do $ZU(5,ns) or ZNAMESPACE ns or Set $NAMESPACE=ns or via Do ^%CD) unless the user holds the Read privilege on the database resource of the default globals database associated with that namespace.To read about this, see the "Namespaces" subsection of this doc section.
go to post John Murray · Aug 8, 2017 Good to hear. Now please set the checkmark alongside Jamie's original answer, so your question shows in DC as having been answered.
go to post John Murray · Aug 8, 2017 Doc for 5.0 is available at http://docs.intersystems.com/documentation/cache/cache5docs/At the bottom of that page I found this:Using the Caché GBLOCKCOPY Routine — This article describes the basics of running GBLOCKCOPY to copy globals.The link is to a PDF. One of the use cases in the PDF is as follows:Reclaim unused space in a databaseIf a large global is created then killed in a database, there may be a large excess of unused space in the database. This space can be removed by copying all the globals in the database to a new one, and then replacing the old database with the new database.That's what I think you need to do. It sounds like you used GBLOCKCOPY to copy to a namespace in an existing database rather than to a fresh empty database.Of course, you will need enough disk space to have the smaller new database alongside the big database until you have completed the copying.
go to post John Murray · Aug 7, 2017 Luca, any reason for recommending %Exists and having to use $LISTBUILD when you could go direct to %ExistsId ?
go to post John Murray · Aug 7, 2017 Are you able to use the beta of Atelier 1.1? See https://community.intersystems.com/post/atelier-11-beta-updates-%E2%80%9...
go to post John Murray · Aug 3, 2017 I don't know of a way to alter the trace output of ZBREAK. But have you considered using Serenji to help with this debugging task? Its ability to break when an expression's value changes may be helpful.
go to post John Murray · Aug 3, 2017 So I've used my moderator superpowers to correct the first line of the post.
go to post John Murray · Jul 31, 2017 Please show us the code that is writing the output. Also, tell us what your $zversion variable reports, and what platform you are running Cache on.
go to post John Murray · Jul 24, 2017 I'm not having much success finding docs for $system.CLShttp://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=... says:but no mention of CLS. Nor does the %SYSTEM package contain a CLS class in the same way as it contains the ones listed above.
go to post John Murray · Jul 20, 2017 CHARWIN might be useful. But if you're extending an existing terminal-based application you may want to work the way the existing code does. And if you're starting a new application, is a terminal-based UI still the right way to be going?
go to post John Murray · Jul 18, 2017 Rubens, your rule #2 says " Argument index starts from 0" but in your example the index starts at 1.
go to post John Murray · Jul 17, 2017 Take care that you don't unintentionally kill globals that may be visible in this namespace because of global mappings.
go to post John Murray · Jul 3, 2017 Mike, I have re-tagged your post so it appears on the main DC feed. The Developer Community tag and the Developer Community FAQ group are primarily intended for discussion of this DC forum itself.
go to post John Murray · Jul 3, 2017 If you are working directly with globals (as your example seems to imply) you will have to iterate appropriately through your global, test the relevant value, and kill any node that matches.Be sure that you also understand that a KILL will delete any subtree of the node you kill.To efficiently maintain the sort of uniqueness you seem to be describing (i.e. for any Y there must be no more than one X for which $list(^myglobal(X))=Y) you will probably need to maintain a cross-reference (a.k.a. index) such as ^myglobalX("index1",Y)=X and check for the existence of a record here before saving a new record.
go to post John Murray · Jul 3, 2017 Here's a way of discovering if your license includes the iKnow feature:USER>w $system.License.GetFeature(11)1USER>A return value of 1 indicates that you are licensed for iKnow. If the result is 0 then your license does not include iKnow.See here for documentation about this method, which tells you that 11 is the feature number for iKnow.Regarding namespaces, these are created in Portal, not in Studio. See this documentation.
go to post John Murray · Jun 27, 2017 Gigi, you tagged your question "Developer Community", but I think that's primarily intended for posts about DC itself. Using one or more of the Ensemble-related subtags, e.g "HL7", might help your post.
go to post John Murray · Jun 26, 2017 Jeffrey, is your answer still accessible to you from your "My Account" page?When I look at your page's "Answers" tab the first (i.e. most recent one) points here:https://community.intersystems.com/post/overwrite-file#node-433196Since I'm a DC moderator it may be the case that I can see it but you (or other ordinary members) can't.