só pra quem tá curioso é assim que pretendemos fazer new usando o proof para progress 9 Código: def var minhaInstancia as handle no-undo. assign minhaInstancia = newInstance("test/Empty.p"). nada oficial mas como o projeto é open-source: Código: function newInstance returns handle (input filePath as char): def var programa as handle no-undo. run createInstance(target-procedure, filePath, output programa). return programa. end function. o createInstance faz um run persistent set e adiciona o handle da procedure nova na ttHandles que diz quem eh pai de quem (criando uma arvore de dependencias) assim quando voce faz um deleteInstance o proof varre a arvore matando 1 por 1 é quase um garbage collector! se voce nao tem o proof apenas substitua a linha do createInstance por um: Código: run value(filePath) persistent set programa. ai voce pensa: "quais sao as vantagens de usar newInstance ao inves de run persistent?" ei-las: - fazer assign de varias variaveis inclusive as do tipo handle ao mesmo tempo. - passar uma procedure como parametro sem gerenciar o seu handle. - sintaxe mais limpa. desvantagens de usar a funcao sem o proof: - voce vai ter que dar um delete procedure no seu handle. - se passar um newInstance como parametro para determinado metodo/procedure-interna sera gerado um memory-leak. (com o proof ele iria limpar a propria caca)