go to post Robert Cemper · 11 hr ago My personal approach would be: separate instance code from Class Methods This covers all properties and especially Calculated Properties Or simplified, all code tied to data storage Class Methods work on referenced objects but have no dedicated data store (i%...) Simplified, they are code-only components. Class Methods could be bundled in several Classes.
go to post Robert Cemper · Feb 10 In Caché you had CacheParameterFile cache.cpf with the SuperServerPort 1972now it's named iris.cpf with DefaultPort=1972
go to post Robert Cemper · Feb 10 YES, directly from MGMT Portal just as you do in Cachèlocalhost:52773/csp/sys/mgr/%25CSP.UI.Portal.MemoryStartup.zen
go to post Robert Cemper · Feb 7 You may take a look here:The Callin Interfaceor the related example in OEX https://openexchange.intersystems.com/package/iris-c-language
go to post Robert Cemper · Feb 6 @Julius Kavay hits the point: true of false as system constants is breaking the rules andthe long-practiced idea and principles behind ISOS and before( @Joel Solon : isn't it ?) You may ask for $TRUE or $FALSE system constant / variable Until this, you are free to define your own $ZTRUE or $ZFALSE using%ZLANGV00.mac to extend the language.It's all ready for use to extend the language according to your needs and taste Details on %ZLANG*
go to post Robert Cemper · Feb 6 I fail to see the problem: true:==> $$$OK false:==> $$$NOTOK do I miss siómething ? Or is the intention to mix ISOS with JavaScript ???
go to post Robert Cemper · Feb 3 Did you use this kit from evaluation.intersystems.com/Eval/community-download ?=> IRISHealth_Community-2025.3.0.226.0-macos.tar.gz
go to post Robert Cemper · Jan 27 Primary / Secondary ?? Is this a shadowing configuration ? Shadowing applies to the databases IRIS.DAT, and Journal Files It doesn't shadow external "foreign" files like .../Temp/QWhoZAwFF3f9jQ.iostream
go to post Robert Cemper · Jan 20 If you use a custom class query %Library.Query type you may write your parameters to some^mtemp.Evgeny($i(^mtermp.Egeny)) = ..... direct from the Execute methodor ^mtemp.Evgeny($h) = .... For basic class query %SQL.Query () you may take the usual SQL approach Create a SQL method that always returns 1 (TRUE) You pass all your parameters into that method which does the ^mtemp trick and a QUIT 1 add to the WHERE clause . . . AND MYTRACE(par1,par2,---)=1 I refer to this a STATIC clause since it is only executed once by querybecause of no reference to any column values It was my approach to SQL debugging
go to post Robert Cemper · Jan 18 If your payload is received as a string set jsn={}.%FromJSON(payload) write jsn.%Get("boolprop") works without a persistent object
go to post Robert Cemper · Jan 18 Class MyPackage.MyClass Extends (%Persistent, %JSON.Adaptor) { Property JSONid As %Integer(%JSONFIELDNAME = "id"); Property strprop As %String; Property boolprop As %Boolean; } next this worked set jsn={ "id": 1, "strprop": "string", "boolprop": true } set sc=obj.%JSONImport(jsn) zw obj +----------------- general information --------------- | oref value: 2 | class name: MyPackage.MyClass | reference count: 1 +----------------- attribute values ------------------ | %Concurrency = 1 <Set> | JSONid = 1 | boolprop = 1 | strprop = "string" +-----------------------------------------------------
go to post Robert Cemper · Jan 15 Probably because extending ObjectScript Functions in %LANGF00.mac is so simple for ages ZLPAD(%txt,%len,%pad) quit $$lpad^%qarfunc(%txt,%len,%pad) ZRPAD(%txt,%len,%pad) quit $$rpad^%qarfunc(%txt,%len,%pad) and then USER>s txt="robert" USER>w $zrpad(txt,20,"*") robert************** USER>w $zlpad(txt,20,"*") **************robert
go to post Robert Cemper · Jan 6 $system.SQL.SetIdentityInsert(1) is deprecated and replaced by $system..SQL.Util.SetOption(IdentityInsert ,1) from class docs:>>>https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25SYSTEM.SQL.Util#METHOD_SetOption IdentityInsert - Set the IDENTITY_INSERT option for this process. IDENTITY_INSERTcontrols the ability of the user to specify a value for the IDENTITY property whensaving a new object, a value for the IDENTITY column, or an explicit ROWID value in an SQL INSERT. Notes Changing this configuration setting takes effect immediately and lasts for the duration of the process or until $SYSTEM.SQL.Util.SetOption("IsolationMode",pValue) is called again. This is a per-process setting. Sounds good to me
go to post Robert Cemper · Jan 6 Big THANKS!A great improvement!Especially useful for continuous repeating quality checks in OEX !
go to post Robert Cemper · Jan 5 to be clear: USEEXTENTSET is great for very large tables where the top (with the ID) is many storage levels away from data blocks.It's up to the dimension of your project if the eventual gain in speed pays off at all.for small tables as we know from our samples, I doubt.
go to post Robert Cemper · Jan 5 As I expected, it's one of the new storage features that cause the irritation /// Use hashed global names Parameter USEEXTENTSET = 1 from docu https://docs.intersystems.com/iris20253/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_storageglobals#GOBJ_storageglobals_hashedWhen you set USEEXTENTSET to 1, each index is also assigned to a separate global, instead of using a single index global with different first subscripts. Again, this is done for increased performance. Not explicitly mentioned - this also affects IDKEY ! And the example presented shows in detail that IdLocation and DataLocation are NOT identical anymore, as it used to be for decades
go to post Robert Cemper · Jan 5 You can get the required Global reference like this programmatically: ; get compiled class with your classname USER>set classname="oex.Dir" USER>set dic=##class(%Dictionary.CompiledClass).%OpenId(classname) ; get relationship to CompiledStorage USER>set stor=dic.Storages.GetAt(1) ; get name of the ID-Global USER>Write stor.IdLocation ^oex.DirD USER>