go to post Vitaliy Serdtsev · 15 hr ago However, when I access the data through the Cache Management Portal, Cache Terminal, VSC, or IntelliJ, the Korean text appears broken, as I mentioned earlier. Give an example of what you see in globals in the InterSystems Management Portal: System Explorer > Globals Since you have an 8-bit version and not Unicode, you probably won't see the hieroglyphs (최봉남), but rather something similar to (ÃÖºÀ³²). This is not corrupted data, just a string stored in KSC5601/EUC-KR encoding. From Caché terminal (Unicode version, locale = korw (Korean, Korea, Unicode)): USER>w $zcvt("최봉남","O","KSC5601") ÃÖºÀ³² USER>w $zcvt("ÃÖºÀ³²","I","KSC5601") 최봉남The same on Java: System.out.println(new String("최봉남".getBytes(Charset.forName("EUC-KR")), Charset.forName("ISO-8859-1"))); // ÃÖºÀ³² System.out.println(new String("ÃÖºÀ³²".getBytes(StandardCharsets.ISO_8859_1), Charset.forName("EUC-KR"))); // 최봉남
go to post Vitaliy Serdtsev · May 15 When I run below code in the Cache terminal, it returns 0, so it seems to be the 8-bit version. That's what I thought. I have the Unicode version installed, the rusw locale, and there are no problems at all. Example Class dc.a Extends %Persistent { Index is On s; Property s As %String; /// d ##class(dc.a).Test() ClassMethod Test() { s t=..%New() s t.s="최봉남" d t.%Save() } } From any JDBC client: select * from dc.a Result: ID s 1 최봉남 (When I check from the Management Portal, it shows as Latin1. If there's a more accurate way to verify this, please let me know.) In SMP: System Administration > Configuration > National Language Settings > Locale DefinitionsYou should have something like kor8, enu8, eng8, etc.
go to post Vitaliy Serdtsev · May 15 Which version of Caché are you using: 8-bit or Unicode? What locale is set by default?
go to post Vitaliy Serdtsev · Apr 24 It seems that adding to favorites via the management portal itself has also stopped working. Interestingly, there is no error in this case. Add to favorites in Management Portal
go to post Vitaliy Serdtsev · Apr 18 IRIS 2025.1.CE: the error is the same. Why the %Library.EntityProjectionUtil class is missing in the system is a good question for developers.
go to post Vitaliy Serdtsev · Apr 18 ##class(%DynamicObject).%FromOref() Is this what you were looking for?
go to post Vitaliy Serdtsev · Apr 18 Script Command Arguments: Note: Any ASCII (extended) character except NUL (000) can be produced via <ddd> where ddd is the decimal value of the character. USER>w $a("<") 60 USER>w $a(">") 62So, something similar is needed: echo: off send: s V=4 I (V<60>48!(V<62>57))&&(V<60>65!(V<62>90))&&(V<60>97!(V<62>122)) W A,?10,G,?30,B,! wait for:USER>
go to post Vitaliy Serdtsev · Apr 15 I join the question @Ashok Kumar T. I did not find DP-422635 and DP-424156 among the published ones: InterSystems IRIS® Change Notes (2024.1.3) InterSystems IRIS® Upgrade Checklist (2024.2) InterSystems IRIS® Upgrade Checklist (2024.3) InterSystems IRIS® Upgrade Checklist (2025.1) In addition, there are no warnings in the documentation that these methods are deprecated and no longer work: Calling Functions and Procedures from Python
go to post Vitaliy Serdtsev · Apr 14 See Run an ObjectScript Routine from Embedded Python2024.1 Example: USER>d $system.Python.Shell() >>> iris.routine("fnString^IRISPython",14) 'Hello 14' >>>
go to post Vitaliy Serdtsev · Mar 31 Initially, the question was asked in relation to Caché or/and Ensemble 2018.1, but not to IRIS.
go to post Vitaliy Serdtsev · Mar 14 $SYSTEM.Process.UserName(##class(%SYS.ProcessQuery).NextProcess(""))
go to post Vitaliy Serdtsev · Mar 13 Another solution via $LISTFROMSTRING: set s="item1" for i=2:1:5 { set s=s_",item"_i } set mylist=$listfromstring(s) zwrite mylist ; mylist = $lb("item1","item2","item3","item4","item5")
go to post Vitaliy Serdtsev · Mar 10 IRIS for Windows (x86-64) 2024.3 (Build 217U) Thu Nov 14 2024 17:59:58 EST Or "Include EnsUtil" Now you can do it like this: ##class(%BigData.ShardedSQL).ClassNameToTableName(pClassName)
go to post Vitaliy Serdtsev · Mar 10 USER>w $zv IRIS for Windows (x86-64) 2024.3 (Build 217U) Thu Nov 14 2024 17:59:58 EST USER>w $$GetEnvironment^%apiOBJ("collation","%Library.String",.collval),! zw collval 1 USER>w $$GetEnvironment^%apiOBJ("collation","dc.Username",.collval),! zw collval 1 USER>zn "%SYS" %SYS>w $$GetEnvironment^%apiOBJ("collation","%Library.String",.collval),! zw collval 1 %SYS>w $$GetEnvironment^%apiOBJ("collation","%Library.Username",.collval),! zw collval 1
go to post Vitaliy Serdtsev · Mar 10 Strangely, I had no issues with the %Library.Username type. I didn't explicitly specify the collation anywhere: neither in the data type class nor for the Namespace-wide. Namespace '%SYS': Class %Library.Username Extends %String { Parameter MAXLEN As INTEGER = 160; }Namespace 'USER': Class dc.Username Extends %String { Parameter MAXLEN As INTEGER = 160; } Class dc.a Extends %Persistent { Index is1 On s1; Index is2 On s2; Index is3 On s3; Property s1 As %String; Property s2 As %Username; Property s3 As dc.Username; ClassMethod Test() { d ..%KillExtent() f s="joefu","JoeFu" { s t=..%New() s t.s1=s s t.s2=s s t.s3=s d t.%Save() } zw ^dc.aD,^dc.aI } }select FIELD_NAME,DATATYPE,COLLATION_FUNCTION,MAXLEN from %Library.SQLCatalog_SQLFields('dc.a') FIELD_NAME DATATYPE COLLATION_FUNCTION MAXLEN ID %Library.BigInt (null) (null) s1 %Library.String SQLUPPER 50 s2 %Library.Username SQLUPPER 160 s3 dc.Username SQLUPPER 160 x__classname %Library.RawString (null) (null) select INDEX_NAME,FIELDS from %Library.SQLCatalog_SQLIndices('dc.a') INDEX_NAME FIELDS is1 $$SQLUPPER({dc.a.s1}) is2 $$SQLUPPER({dc.a.s2}) is3 $$SQLUPPER({dc.a.s3}) USER>d ##class(dc.a).Test() ^dc.aD=2 ^dc.aD(1)=$lb("","joefu","joefu","joefu") ^dc.aD(2)=$lb("","JoeFu","JoeFu","JoeFu") ^dc.aI("is1"," JOEFU",1)="" ^dc.aI("is1"," JOEFU",2)="" ^dc.aI("is2"," JOEFU",1)="" ^dc.aI("is2"," JOEFU",2)="" ^dc.aI("is3"," JOEFU",1)="" ^dc.aI("is3"," JOEFU",2)=""
go to post Vitaliy Serdtsev · Feb 28 See Class Reference: Class %Stream.FileBinaryGzip Extends FileBinary Class %Stream.FileBinary Extends %Stream.Object Hence %Stream.FileBinaryGzip is already the heir of %Stream.Object.