go to post Robert Cemper · Sep 11, 2017 see docs:http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Robert Cemper · Sep 11, 2017 YES, I will.Take a look to Athanassios Hatzis' contributions. It sounds like another New Language project.
go to post Robert Cemper · Sep 10, 2017 You hit the point:Transparency is important.Not be forced to use it but as an offer to developers to make the underlying mechanics visible
go to post Robert Cemper · Sep 10, 2017 Thank you Athanassios! I see these cycles everywhere. Almost every relational DB today has its B-tree index. Well known here since DSM-11.Similar when I did an evaluation of HBase and scratched a little bit under the surface : I found a tiny Global structurewith limited subscripts.You are right there is a lot of power left for new development on this base.
go to post Robert Cemper · Sep 10, 2017 Hi Rich,I remember we met several times @internal meetings and @Devcon / Summit.The common branch of M and MV might be The Ubiquitous B-Tree - 1979 by Dougles Comer.On the other hand mid 60ties it was time to have something new to support creative and faster development.So they might quite well taken ideas from each other.So as you find many lingual constructs that are pretty similar to Java.Don Nelson didn't pass my way. But I have a personal gap from '85 to '99 where I was on a complete different road.
go to post Robert Cemper · Sep 9, 2017 You are right. We were happy writing a whole operating system in Assembly language (VAX/MACRO32) and we found it partially overdone compared to PDP-11/MACRO16. But we knew exactly what every bit in our box did. Not even C could give us that level of control.I personally think a programming language reaches its limits when only a low percentage of developers still oversee it.Therefore I think your idea to have a new layer on top of COS is much better as it doesn't impose any limitations that are required for backward compatibility.So you are free to take with you what seems useful and leave behind old junk.COS contains a real bad example that causes troubles over and over for beginners:IF / ELSE old style manipulating $T vs. IF { } ELSE { } new style not touching $T and some othersThat must no happen again. With a new layer you leave this behind and have all freedom.
go to post Robert Cemper · Sep 9, 2017 I think this should be the way to go: "New language translated to COS"And I'm sure it would be better than the ugly attempt to map COS into HTML as done in CSP
go to post Robert Cemper · Sep 8, 2017 it is a way to access a Cache method from .NET search online doc on .NET binding
go to post Robert Cemper · Sep 8, 2017 Maks I fully support your position.There are very few languages where you can run code written 40 yrs. ago with no modification !That's what counts for customers.You have other languages in parallel like MV or BASIC besides all the embedded things like &SQL(), &HTML(), &JS()..But with same reasoning you may ask why is Java, JavaScript or C, C# not changed?Because you got GO, Angular, ..... to have attractive extensions.COS has it's ZZ*, $ZZ* as extensions. ( ZZ* ! )Isn't this enough for thousands of developers that haven't asked for it nor have a need for it?
go to post Robert Cemper · Sep 7, 2017 $system.SQL.Shell() is bypassing ODBC Driver and talks directly to Caché Storagean external query tool expects to get a MAXLEN by definition of ODBC (ages back).So this is a matter of backward compatibility. Pls. check the grey hook left of ANSWER to confirm questions as doneThx.
go to post Robert Cemper · Sep 7, 2017 if you open BPL in Studio click here to switch to Class viewby program the code is found in class %Dictionary.XDataDefinitionProperty Data holds your XData as Streamhttp://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?P...to find the id you can useselect ID from %Dictionary.XDataDefinition where parent %startswith '<my class name>'
go to post Robert Cemper · Sep 7, 2017 pls. place this in a separate question to make it public to others
go to post Robert Cemper · Sep 7, 2017 see docshttp://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Robert Cemper · Sep 6, 2017 Pls. click Accepted answer to confirm solution BTW: We appreciate feedback too ! Thanks !
go to post Robert Cemper · Sep 6, 2017 Hi Ben,Thanks for keeping this. I lost my collection.I remember so well how much fun we had making the icon for Hermes- DeepSee2 (does anyone remember there was a DeepSee1 ?)- HealthShare (getting the Aesculap snake in place)
go to post Robert Cemper · Sep 6, 2017 for this cases a possible solution could be %Stream.Global has a FindAt method that could give you a position of "\u00"[Find the first occurrence of target in the stream starting the search at position. ]http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?P...But: if you are on the decoded stream all non printables are just single characters. No issue to cut it in piecesread your source stream in reasonable sized junksclean out what ever you needappend it to a temporary streamloop on source until you hit AtEnd conditionfinally replace your source either by "copyFromSteam" method [temp -> source]or replace source stream reference by temp stream referenceI guess the whole code is shorter than this description.I'd suggest not to touch the global under the source steam.
go to post Robert Cemper · Sep 6, 2017 The default for %String is MAXLEN=50 if you write in your definition %String(MAXLEN="") also in Method calls this should be enough. Query Methode(data1 As %Library.String(MAXLEN=""), data2 As %Library.String(MAXLEN=""), data3 As %Library.String(MAXLEN="")) As %Library.Query(CONTAINID = 1, ROWSPEC = "Result,Par2:%String") [ SqlProc ] and so on. Or you make you own data type inheriting %String overwriting Parameter MAXLEN="" Or just use %Library.VarString which makes just this MAXLEN=""http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?P... Query Methode(data1 As %LibraryVar.String, data2 As %Library.VarString, data3 As %Library.VarString) As %Library.Query(CONTAINID = 1, ROWSPEC = "Result,Par2:%VarString") [ SqlProc ] and so on.
go to post Robert Cemper · Sep 6, 2017 of course it makes sense!but then you know which application is using it and can use the application's cleaning method / routine that takes care of all kind of dependencies:I remember well times when routines used to start with KILL ^CacheTemp*($JOB)I expected over time most applications are using PPG (^||myGlobal...) to avoid this. Or have a Clean-Up.
go to post Robert Cemper · Sep 6, 2017 It's the task of the application that uses ^CacheTempUser.* to take care of the housekeeping.I found no traces that it belongs to Caché System Management and Operation.