Robert Cemper · Jun 19, 2020 go to post

for the fixed part you still can use classic mapping.
for the variable section you may set   CONTENT = "MIXED"  for the containing property
and get the raw XML structure in hands .
You can then analyze this "inner" XML using class %XML.TestReader

Robert Cemper · Jun 18, 2020 go to post

The example  and the class are simply wrong 
%Library.DynamicObject that is composed here just has neither a method  %Clone nor a method %Compose

You may report the bug to WRC

Robert Cemper · Jun 16, 2020 go to post

Ah, getting closer:
The problem seems to reduce to an alternative way (a wrapper around) to %Open and %Delete. 

Robert Cemper · Jun 16, 2020 go to post

it isn't the save yet. especially if some UNIQUE conflict prevents the save and requires a Rollback
delete isn't affected at all

Robert Cemper · Jun 16, 2020 go to post

As all you need is in %Persitent you could have your own personal.persitent extending %persitent
wrapping %Open and %Delete in your own extended code.
3 points to consider:

  • how to force your personal.persitent to all existent and future classes ?
  • how to force classes generated  by DDL ?
  • how to maintain your extension over release changes ?

Sorry, I doubt if this is the right approach

Robert Cemper · Jun 16, 2020 go to post

take a look at %Library.Persistent. Methods

  • %Open, %OpenId have a 3rd call parameter status  that returns a %Status value indicating success or failure.
  • %Delete, %DeleteId do it as direct result  by a %Status value indicating success or failure.

No further need of an %On.... to know success or failure 

Robert Cemper · Jun 13, 2020 go to post

Allmost!  3rd Update

since if the left side is a Unix Timestamp, then you get this result:

write $zdt($zdth(1591891200000\1000,-2),3) ==> 2020-06-11 18:00:00

docs: https://docs.intersystems.com/iris20201/csp/docbook/Doc.View.cls?KEY=RCOS_fzdatetime 

timezone conversion from UTC may compensate  the 6 hours difference ! 
 in Middle Europ we have we have 2 hrs+  to UTC so

write $zdt($zdt($zdth(1591891200000\1000,-2),-3),3)
2020-06-11 16:00:00
Robert Cemper · Jun 13, 2020 go to post

to complete this.
Docker has its storage here.

C:\Users\<youruser>\AppData\Local\Docker\wsl\data\ext4.vhdx
C:\Users\<youruser>\AppData\Local\Docker\wsl\distro\ext4.vhdx
Robert Cemper · Jun 12, 2020 go to post

 method OpenSFTP(ByRef sftp As %Net.SSH.SFTP) as %Status

Open up an SFTP session for SFTP activity.

 ByRef this means that the variable you pass has to be initialized first.

#dim sftp As %Net.SSH.SFTP 

 just binds the object type to variable  sftp but doesn't initialize it.
So it is <UNDEFINED>

Use your  original line instead or in addition to initalize it

Set sftp ##class(%Net.SSH.Session).%New()
Robert Cemper · Jun 10, 2020 go to post

I had to transfer more than a few files. so I shared a docker  volume:

docker run  ...... --name=iris1 -d -v volume1:/external   ........
docker run ....... --name=iris2 -d -v volume1:/external   ........

so both containers  have permanent access and can pass files as we use to pass Globals using IRISTEMP  or CACHETEMP

The volume gets generated at first access automatically

Robert Cemper · Jun 10, 2020 go to post

Another issue I had is the requirement of Hyper-V.

The latest VMware Player 15.5.6  has no problem, with Hyper-V enabled anymore.
So they can be installed  in parallel (if your disk space allows  devil)

Robert Cemper · Jun 10, 2020 go to post

@Luca Ravazzolo , @Jose-Tomas Salvador 
I succeeded to force an upgrade of my Win 10 to  2004 and to activate WSL2   (installation blocked until VMware was de-installed !)
and Docker Desktop For WSL2.
Quite interesting to have a Windows-Installer for a Linux program. Take care to use version >2.3.0 2  for WSL2
And it was running as expected with no troubles. No issues with Images, Containers, Volumes, Networks.

It's an interesting experience, especially as I'm not forced to use PowerShell.
Communication with Win File System goes Docker ==> WSL2 ==> Windows.
Next positive surprise: my local C:\..  was mounted byWSL2 to /mnt/c/....  (I just tried read access)
Bad surprises:
- the guide to install / activate was  just of limited help, partially confusing / contradictionary   
Google helped with useful and just commercial advice.
- Reboots: after #5 I stopped counting 

Still a challenge: I couldn't find out where WSL2 file system was homed on my C:\ drive.
 

Robert Cemper · Jun 8, 2020 go to post

I think not that this is possible.
The reason was to make it as flexible as any other Dynamic query.
I'm convinced this was necessary to support Sharding.

But you have the option to write your own custom class query 

Robert Cemper · Jun 8, 2020 go to post

I'd like to say a big Thank You !  to all participants that gave me their vote.


And I forgive the unknow experts that voted for me in the beginning and changed their mind shortly before closing as by the rules.

Robert Cemper · Jun 7, 2020 go to post

You did a very interesting presentation of the essential concept of Globals that was developed once by Neal Pappalardo in 1966/67. yes
Long before objects were even thought of.
So back to the roots !
( Neil Pappalardo is the founder and CEO of MEDITECH )

Robert Cemper · Jun 2, 2020 go to post

You need to start with require("cache")  to have the basic access module.

you find it a cache.node   for various rather old versino0n of Node.

it is in %instaldir%\bin\ 

more details in   %instaldir%\ \dev\node.js\samples\installed_software.js


 and more ......

Robert Cemper · May 29, 2020 go to post

To use a DSN it has to be a SYSTEM-DSN and have the same bit as Cache /  IRIS.  Depends on your EXCEl instalation
Therefore 64bit.
Activate as you might know from Cache is not available in IRIS

Robert Cemper · May 28, 2020 go to post

if you install Excel you have automatically also a DSN for ODBC access to EXCEL
check your DSN data sources in your Windows installation.
Use ODBC-Gateway in Cache / IRIS to access it. 

Robert Cemper · May 26, 2020 go to post

Typically all strings are UTF encoded.
The average text often consist of  single-byte characters  (a subset of UTF-8)   
As soon as a multibyte character joins the string the whole string just uses WIDE characters

example:

USER>set txt="cher ami j'ai besoin de 100 eur"
USER>zw txt
txt="cher ami j'ai besoin de 100 eur"
 
USER>zzdump txt
0000: 63 68 65 72 20 61 6D 69 20 6A 27 61 69 20 62 65         cher ami j'ai be
0010: 73 6F 69 6E 20 64 65 20 31 30 30 20 65 75 72            soin de 100 eur
USER>set txt="cher ami j'ai besoin de 100 €"
USER>zw txt
txt="cher ami j'ai besoin de 100 €"
 
USER>zzdump txt
0000: 0063 0068 0065 0072 0020 0061 006D 0069                 cher ami
0008: 0020 006A 0027 0061 0069 0020 0062 0065                  j'ai be
0010: 0073 006F 0069 006E 0020 0064 0065 0020                 soin de
0018: 0031 0030 0030 0020 20AC                                100 €

 

The conversion happens totally internal.
depending on your needs you can select the national language table.
different languages sort differently.   e.g German äöü vs. aou 
 

Robert Cemper · May 26, 2020 go to post

with set gStatus=$DATA(pGlobalName)  you check the existence of your call parameter

but set gStatus=$DATA(@pGlobalName) check the existence of your Global
to go for the Global you require indirection  therefore set gmin=$ORDER(@pGlobalName@(""))
will meet your expectations

Robert Cemper · May 25, 2020 go to post

using  "œ" makes you internal string wide character.
you might fix it with  DO $ZF(-1,$ZCVT("echo œ","O","UTF8"))  if the encoding of your AIX is UTF-8.

The first example just shows that AIX understands its own console/terminal. 

Bonne chance !