func setStackScreen (screens) // get/set lista de screens da pilha local ret static _screens if _screens == nil // initializa a pilha das telas _screens = {} end ret = _screens if screens <> nil _screens = screens end return ret func pushStackScreen (elemento) // insere um elemento na pilha local list := setStackScreen () aadd (list, elemento) setStackScreen (@list) return list func popStackScreen () // remove um elemento da pilha e retorna seu valor local elemento, pos, list := setStackScreen () pos := len (list) if !empty (list) elemento = list [pos] adel (list, pos - 1) asize (list, pos - 1) setStackScreen (list) end return elemento // se retorna nil a pilha esta vazia func openScreen () // armazena a tela atual para abrir uma nova janela pushStackScreen (saveScreen()) return nil func closeScreen () // restaura a tela da pinha return restScreen (,,,,popStackScreen ())