Files
MBS/PROYECTO/vedir/GERENCIALES/TEST.4gl
T

91 lines
1.8 KiB
Plaintext

SCHEMA smarmotech
DEFINE id int
DEFINE datos DYNAMIC ARRAY OF RECORD
ano SMALLINT,
nombre_Vend CHAR (10),
parentId STRING,
id STRING,
hasChildren BOOLEAN
END RECORD
MAIN
OPEN FORM f FROM "test"
DISPLAY form f
CALL nodo1(id)
DISPLAY ARRAY datos TO sdatos.* ATTRIBUTE(UNBUFFERED)
ON EXPAND(ID)
CALL nodo1(id)
END DISPLAY
END MAIN
FUNCTION nodo1(p)
DEFINE p INT
DEFINE NAME, parentId STRING
DEFINE i INT
CONNECT TO "smarmotech" USER "jsoto" USING "12345"
IF p == 0 THEN
LET parentId = 0
DECLARE busca1 CURSOR FOR
SELECT UNIQUE a.ano FROM prdtable a
WHERE a.ano in (2008,2009)
LET p = 1
FOREACH busca1 INTO datos[p].ano
LET p = p + 1
CALL datos.insertElement(p)
LET id = parentId || "." || i
LET datos[p].id = id
LET datos[p].parentId = parentId
LET i = 2
DECLARE busca_m CURSOR FOR
SELECT UNIQUE a.mes FROM prdtable a
WHERE a.ano = datos[p].ano
FOREACH busca_m INTO datos[i].nombre_vend
IF i MOD 2 THEN
LET datos[p].hasChildren = TRUE
ELSE
LET datos[p].hasChildren = FALSE
END IF
LET i = i + 1
END FOREACH
END FOREACH
ELSE
LET parentId = datos[p].id
LET NAME = "mESES"
END IF
END FUNCTION
FUNCTION contraer()
DEFINE p INT
LET p = 1
WHILE p < datos.getLength()
CALL collapse(p)
LET p = p + 1
END WHILE
END FUNCTION
FUNCTION collapse(p)
DEFINE p INT
DEFINE id STRING
LET id = datos[p].id
WHILE p < datos.getLength()
IF datos[p + 1].parentId <> id THEN EXIT WHILE END IF
CALL collapse(p + 1)
CALL datos.deleteElement(p + 1)
END WHILE
END FUNCTION