go to post Marc Mundt · Jan 12 It's not clear to me what "early binding" means in the context of a data transformation. Do you mean something that happens at the time the DTL is compiled rather than at runtime? If you can clarify what you mean by "early binding" that will help us get you an answer.
go to post Marc Mundt · Jan 12 It would be great to have a cheat-sheet for all of these keyboard shortcuts and other tricks, especially in terms of "if you used to do X in Studio, here's how to do that in VS Code". A few months ago I happened across the incantation for the VS Code equivalent of Studio's "Find in Files" (free text search of server-side classes) but forgot the key combination and haven't had the time to try to figure out which docs to check and guess at whether it's a standard feature of VS Code or of the ObjectScript plug-in.
go to post Marc Mundt · Dec 6, 2022 Yes, you can absolutely do that. You separate statements with 2 spaces. Here's an example: for i=1:1:10 { write i,! write i*10,! } This gives the same output: for i=1:1:10 { write i,! write i*10,! } It also works without brackets, but IMHO is less readable: for i=1:1:10 write i,! write i*10,!
go to post Marc Mundt · Nov 7, 2022 Menno, In your ObjectScript code you never base64 decode the key: set key="pZR8qfrz7t47G+dboyJCH4NnJRrF+dJbvxq37y/cLUo=" ... Set encrypted=$SYSTEM.Encryption.AESCBCEncrypt($zcvt(text,"O","UTF8"),key,iv) But you did this in Python: keyBase64="pZR8qfrz7t47G+dboyJCH4NnJRrF+dJbvxq37y/cLUo=" key = base64.b64decode(keyBase64) ... cipher = AES.new(key, AES.MODE_CBC)
go to post Marc Mundt · Nov 7, 2022 Adding the additional logging helped. Looking at it now, it looks like it is working as coded: 9413847-9428572 BEGENING OF LOOP FOR: XAL465.1110.A0 9413847-9428572 START RECURSIVE 9421986-9428572 Has Value 9413847-9428572 BEGENING OF LOOP FOR: XAL465.1110.A1 The call for 9413847 is looping through all results of the query. It finds that 9421986 has a composition so it calls itself recursively. The call for 9421986 finds that it already has a value so it returns control to the 9413847 loop which continues iterating. If you want all super and sub loops to quit as soon as any sub-loop finds "has value" then you will need to check for this condition inside the loop.
go to post Marc Mundt · Nov 4, 2022 It's a bit hard to follow the output. I think things will become clearer if you add "mainArticle" and "article" to every WRITE statement, for example: W !, $G(mainArticle),"-",$G(article)," Has Value"...W !, $G(mainArticle),"-",$G(article)," BEGENING OF LOOP FOR: "_rs.articleCode...W !, $G(mainArticle),"-",$G(article)," START RECURSIVE"...W !, $G(mainArticle),"-",$G(article)," END OF LOOP"
go to post Marc Mundt · Oct 19, 2022 This has come up a few times before in other threads. https://community.intersystems.com/post/encoding-base64-stream-chunk-sizes
go to post Marc Mundt · Oct 18, 2022 The ORC group is repeating, and all of it's child segments are optional, so you can iterate through the ORC group in order to get at the OBRs that it contains. But... you can also just set the DTL create mode to "copy" and all of the segments will get copied over automatically without needing to iterate through each ORC.
go to post Marc Mundt · Oct 13, 2022 Have you looked into tuning the JVM heap settings? It's possible the JVM is running out of heap space. https://www.baeldung.com/jvm-parameters