go to post Robert Cemper · Dec 17, 2024 Suggestion:you crate your own stored procedure to decide during SELECTexample: /// Return NEW for first occurance of item /// otherwise return OLD Class User.ItemStat Extends %RegisteredObject { ClassMethod NewOld(item As %String = "") As %String [ SqlProc ] { if item="" quit "?" if $d(^||list(item)) quit "OLD" if $i(^||list(item)) quit "NEW" } } How to use it: SELECT *, ItemStat_NewOld(item) as Status FROM items order by 2 Result: ID date item Status 1 09/13/1932 A NEW 2 04/06/1933 D NEW 10 06/15/1940 A OLD 4 11/26/1940 A OLD 6 02/19/1956 B NEW 8 04/22/1957 D OLD 7 05/01/1959 D OLD 9 06/29/1961 ? 3 07/04/1992 B OLD 5 12/08/2020 D OLD
go to post Robert Cemper · Dec 16, 2024 %ZSTOP routine may log the last user. But it has no information on an external stopped process. E.g from MGMT portal
go to post Robert Cemper · Dec 12, 2024 Looking forward to hear your story!That's often of much more value than the pure code..
go to post Robert Cemper · Dec 10, 2024 Somewhere in your data structure you have a property / Column of type DATEthe content seems to be a null_string (string of length zero) instead of a real SQL NULL (empty, no value)My guess: it's one of the 8 Dob ( Date of Birth ?) named fieldscheck the related contents
go to post Robert Cemper · Dec 4, 2024 Similar to previous years I will provide the results of our private leaderboard It will sort by published ranking but separate DC members from "guests" The matching of DC members is a manual task if I missed you pls. let me know your identity in AoC by DC mail to add your DC flag due to private issue my updates might show delays sometimes 2 test sets with results are available on OEX: AoC2024-test or GitHub: AoC2024_test I just added a column to show completion of parts in the exercises - no part 1 only part 1 (silver star) 2 only part 2 (another silver star) 3 1+2 both parts completed (gold star) DCrank AOCrank Scores Stars ok% ----- Code Parts OK ----- Name 0 --- ---- ---- --- ----*----*----*----*----* --- DC Members --- 1 7 7361 50 100 3333333333333333333333333 abdul-manaan 2 8 7296 50 100 3333333333333333333333333 Yuval Golan 3 9 5310 36 72 3333333333333331331------ JFerreB 4 11 2598 18 36 333333333---------------- Peter Zubiago 5 13 2537 17 34 333333331---------------- Oskari Kosonen 6 14 2052 14 28 3333313---1-------------- Keith Avery 7 15 1928 13 26 3333331------------------ Jani Hurskainen 8 17 1639 11 22 333311--1---------------- Ivo ver eecke 9 18 1278 9 18 33331-------------------- TylerFeldhege 10 21 875 6 12 333---------------------- rhodery 11 23 695 5 10 331---------------------- Chris Marais 12 24 565 4 8 33----------------------- Oliver Wilms 13 --- ---- ---- --- ------------------------- --- ISC internals --- 14 2 7592 50 100 3333333333333333333333333 TestSet 1 15 3 7545 50 100 3333333333333333333333333 TestSet 2 16 22 811 6 12 333---------------------- Junhee Lee 17 --- ---- ---- --- ------------------------- --- unknow in DC --- 18 1 7683 50 100 3333333333333333333333333 Dominik Znidar 19 4 7540 50 100 3333333333333333333333333 Joaquin Derrac Rus 20 5 7539 50 100 3333333333333333333333333 Jarjar 314 21 6 7527 50 100 3333333333333333333333333 (anonymous user #1128565) 22 10 3295 23 46 3333313-1331311---------- (anonymous user #4293990) 23 12 2569 18 36 33333-331-1-3------------ Sloan Kanaski 24 16 1902 13 26 33331111--1-------------- Chhayank Warad 25 19 1083 8 16 3333--------------------- Noah Dohrmann 26 20 1064 8 16 3333--------------------- (anonymous user #214666) 27 25 427 3 6 31----------------------- Gary Nguyen 28 Rows(s) Affected UTC 2024-12-30 08:28:42 EST 2024-12-30 03:28:42
go to post Robert Cemper · Nov 21, 2024 Hi @Jeffrey Drumm ;different approach: use your own datatype that always returns fixed MAXLEN string: /// Make fixlength String according to MAXLEN parameter Class rcc.GetFix Extends %Library.String { /// Fill value <var>%val</var> to <a href="#MAXLEN">MAXLEN</a> characters. Method Get() As %String [ CodeMode = generator, ServerOnly = 1 ] { set code="$e(%val_"""_$j("",+%parameter("MAXLEN")) set code=code_""",1,"_+%parameter("MAXLEN")_")" $$$GENERATE( " Quit "_code) QUIT $$$OK } } and a test class: Class rcc.FixTest Extends %RegisteredObject { Property test As rcc.GetFix(MAXLEN = 12); } and now some check from terminal: SAMPLES>set z=##class(rcc.FixTest).%New() set z.test="rob" SAMPLES>write z.test,$L(z.test) rob 12 SAMPLES>;some oversized string SAMPLES>set z.test=";some oversized string" SAMPLES>write z.test,$L(z.test) ;some oversi12 SAMPLES> Hope this helps you along
go to post Robert Cemper · Nov 20, 2024 My guess: It was the WINNER of the video contest: https://www.youtube.com/watch?v=ZW5_Un0sYUw Also with no refence to video or article on OEX https://openexchange.intersystems.com/package/DNA-sequence-Gene-finder
go to post Robert Cemper · Nov 11, 2024 #2)Every LOCK persists until the process is ended or the LOCK is removed explicitely (LOCK -....)it is not related to any error handling. #1)depends on your design.If there is no conflict of subscripts between ADD and REMOVE possible there is no need of a Lock
go to post Robert Cemper · Nov 7, 2024 no need for this COPYif your docker-compose.yml contains volumes: - ./:/home/irisowner/dev
go to post Robert Cemper · Oct 27, 2024 .MAC and much more .INT are an almost 1:1 image of the runtime .OBJ code they get implicitely compiled by ZSAVE command while any .CLS gets first stored with a lot of internal parameters where XML is faster than UDL then it's translated to .INT(at least) including all extra params, and inherited pieces and other features for comfort and then compiled as any other .INT for the final .OBJ So comparing .CLS to .MAC/.INT is like comparing a goat to the final cheese you buy.
go to post Robert Cemper · Oct 22, 2024 So you have a local instance of Caché as well. Check with WRC if Cachè 13 is supported on Windows 11. local access needs no firewall in Win
go to post Robert Cemper · Oct 21, 2024 A few questions: my local IPv4 address in the ODBC connection in ODBC you have to specify the IP address of the Caché server there you create the connection FROM YOUR local server by default there's no connection outgoing from Caché No need for your local IP - eventually for some firewalls enabling remote access if you have username + PW from Caché you should have access only some firewalls on server or client may block you more important: what OS do you run on server and client ? and what type of connection do you try to establish ? Web, SuperServer, Terminal, ... ?
go to post Robert Cemper · Oct 21, 2024 To get the property position dynamically by program you may use this ClassMethod ClassMethod PropSeq(classname As %String = "", propname As %String = "") As %String [ SqlProc ] { if classname="" set classname=..%ClassName(1) set pos=0 &sql( SELECT SequenceNumber INTO :pos FROM %Dictionary.CompiledProperty WHERE transient=0 AND parent=:classname AND name=:propname ) if SQLCODE set pos="-1;"_SQLCODE quit pos }
go to post Robert Cemper · Oct 20, 2024 a somewhat 'dirty' approach select ID, Name_GivenName from Demo.DemoPatient where FOR SOME %ELEMENT(Demo.DemoPatient.Aliases) ($LISTFIND(%value,'Twain')>0) advantage - no need to know the structure of your serial classrisk - false positives for unexpected coincidences. eg. Washington, John, ...
go to post Robert Cemper · Oct 20, 2024 the example builds on the fact that the storage structure of the serial object is known Storage Default { <Data name="serItemState"> <Value name="1"> <Value>Subject</Value> </Value> <Value name="2"> <Value>Change</Value> </Value> <Value name="3"> <Value>Color</Value> </Value> </Data> <State>serItemState</State> <StreamLocation>^rcc.IC.serItemS</StreamLocation> in this case color is #3 in serial storage ==>> $list(%Value,3) So you need to know the position of FamilyName in HS.SDA3.Name (e.g.7 ?)then you can use $list(%value,7) = 'Twain' as condition 7 is just a guess as I don't have any HS* classes at hands
go to post Robert Cemper · Oct 20, 2024 This article is focused on indexing, though it shows the principle of the SQL queryEffective use of Collection Indexing and Querying Collections through SQL