Hi!

Don't know if it's your case, but if you are able to generate the global data, you could use the $INCREMENT() function, which automatically stores the array length into global's head:

Set ^test($INCREMENT(^test)) = "aa"

Set ^test($INCREMENT(^test)) = "aa"

Set ^test($INCREMENT(^test)) = "aa"

Set ^test($INCREMENT(^test)) = "aa"

ZWrite ^test
^test=4
^test(1)="aa"
^test(2)="aa"
^test(3)="aa"
^test(4)="aa"

Write ^test
4

HTH,

José

For those who are looking for unziping features, Embedded Python (for IRIS 2021.2+) allows you to use zipfile Python lib. For instance:

ClassMethod UnZip(pZipFileName As %String, pExtractToDir As %String) [ Language = python ]
{
    #; solution based on this one: https://stackoverflow.com/a/3451150/345422
    import zipfile
    with zipfile.ZipFile(pZipFileName, 'r') as zip_ref:
        zip_ref.extractall(pExtractToDir)
}

Or

ClassMethod UnZip2(pZipFileName As %String, pExtractToDir As %String)
{
    Set zipfile = $SYSTEM.Python.Import("zipfile")
    Do zipfile.ZipFile(pZipFileName, "r").extractall(pExtractToDir)
}

Tested on iris-ml-community:2021.2.0.617.0-zpm