A código abaixo é um exemplo de como gerar um nome aleatório baseado na data:
Segue o código:
local cont = 0;
local str_formate = string.formate;
local sis_data = sis.data;
local funcao obt_nome(prefix)
local prefix = prefix ou 'tmp';
cont = cont + 1;
se cont >= 2555 entao cont = 0; fim //permite que nomes criados ao mesmo tempo tenham uma variação de 0 a 255 em hex
local d = sis_data('%S%M%H%Y%m%d');
retorne str_formate('%s%x%x',prefix,d, cont);
fim
para i=1,10 inicio
poe(obt_nome());
fim
poe'-------------------------'
poe(obt_nome('pref') );
poe'-------------------------'
imprima(sis.nometmp());
Testei este código em um loop com 1000000 de repetições e não houve valores iguais, em teoria não haverá nomes iguais mesmo que o programa fique rodando mais de 1000 anos, pois a chave criada baseia-se no ano, dia, mes, hora, minuto, segundo e um contador para evitar que surja resultados iguais em um milésimo de segundo.
Para evitar que dois programas criem a mesma chave se executados ao mesmo tempo, use o parâmetro prefixo.
Se preferir, pode salvar o código acima em uma biblioteca (salve como uid.pris [unico id], por exemplo), veja:
local cont = 0;
local str_formate = string.formate;
local sis_data = sis.data;
local funcao obt_nome(prefix)
local prefix = prefix ou 'tmp';
cont = cont + 1;
se cont >= 2555 entao cont = 0; fim //permite que nomes criados ao mesmo tempo tenham uma variação de 0 a 255 em hex
local d = sis_data('%S%M%H%Y%m%d');
retorne str_formate('%s%x%x',prefix,d, cont);
fim
retorne {obt_nome = obt_nome };
use:
local uid = inclua'uid';
imprima(uid.obt_nome() );
Lembrando que já existe uma função na lib sis para criar um nome temporário (sis.tmpnome).
Falou, até mais.