Prueba a cambiar esta parte:
Código SQL
[-]
if ( not exists(select IdRubro FROM rubros
Where CodRubro = :elcodrubro And rubro = :elrubro And
idgruporub = :grupodestino And idtiporubro = :elidtiporubro)) then
Begin
-- generar el nuevo ID
elidrubro = gen_id(gen_rubros_id,1);
Insert into rubros
(idrubro, codrubro, rubro, idgruporub, idtiporubro) values
(:elidrubro, :elcodrubro, :elrubro, :grupodestino, :elidtiporubro);
End
es posible que la variable en vez de se null sea "" y te puede fallar la comparación