User bio
404 bio not found
Slovakia
Member since Feb 14, 2020
Replies:

I dont know what Im missing here but its not work at all with $QUERY and @ indirection. Still is undefined even I converted local varaible into process private global.

Method setLayout(layout) As %Status
{
	MERGE ^||layout = layout

	SET node = ""
	FOR
	{
		SET node = $QUERY(@^||layout)
		QUIT:node=""
		W node,"",@node,!

	}


	QUIT $$$OK
}

Obviously I was still trying to apply pattern from $ORDER . This one works.

SET node = $QUERY(^||layout(""))

	WHILE (node '= "")
	{
		W !, node
		SET node = $QUERY(@node)
	}

How this one can be turned into recursive?

I have no idea how to create programatically to check level deeper and deeper and so on.

ClassMethod array2xml(array) As %String
    {
        SET subscript = ""
        FOR
        {
            SET subscript = $ORDER(array(subscript))
            QUIT:subscript=""
            SET dataStatus = $DATA(array(subscript)),
                currentRef = array(subscript)

            write !, "Subscript=", subscript_", Value=", currentRef_" DataStatus: "_dataStatus

            IF (dataStatus > 9)
            {
                SET a = ""
                MERGE arr = array(subscript)
				// More subscripts, go deeperK 
				DO ..array2xml(.arr)
            }
            ELSEIF (dataStatus = 1)
            {
                // No more subscripts, just a value
            }
        }


    }

Problem is that my output start repeating. Here is example array

SET array(1) = "1",
				array(1,1) = "1,1",
				array(1,1,1) = "1,1,1",
				array(1,1,2) = "1,1,2",
				array(1,1,3) = "1,1,3",
				array(1,1,1,1) = "1,1,1,1",
				array(2) = "2",
				array(2,1) = "2,1",
				array(2,1,1) = "2,1,1"

 And here are the output

Subscript=1 Value=1 DataStatus: 11
Subscript=1 Value=1,1 DataStatus: 11
Subscript=1 Value=1,1,1 DataStatus: 11
Subscript=1 Value=1,1,1,1 DataStatus: 1
Subscript=2 Value=1,1,2 DataStatus: 1
Subscript=3 Value=1,1,3 DataStatus: 1
Subscript=2 Value=2 DataStatus: 11
Subscript=1 Value=2,1 DataStatus: 11
Subscript=1 Value=2,1,1 DataStatus: 11
Subscript=1 Value=1,1,1,1 DataStatus: 1
Subscript=2 Value=1,1,2 DataStatus: 1
Subscript=3 Value=1,1,3 DataStatus: 1

I think I figgured out by adding KILL array(subscript) right after MERGE arr

Subscript=1 Value=1 DataStatus: 11
Subscript=1 Value=1,1 DataStatus: 11
Subscript=1 Value=1,1,1 DataStatus: 11
Subscript=1 Value=1,1,1,1 DataStatus: 1
Subscript=2 Value=1,1,2 DataStatus: 1
Subscript=3 Value=1,1,3 DataStatus: 1
Subscript=2 Value=2 DataStatus: 11
Subscript=1 Value=2,1 DataStatus: 11
Subscript=1 Value=2,1,1 DataStatus: 1

Certifications & Credly badges:
Patrik has no Certifications & Credly badges yet.
Global Masters badges:
Patrik has no Global Masters badges yet.
Followers:
Patrik has no followers yet.
Following:
Patrik has not followed anybody yet.