How are statements with uninitialized signals executed on very first EVENT?
What you have is the same as

architecture dec_dataflgw of DECODER2x4 is
begin
   Z(3) &lt;= not (A and B and ENABLE); --  statement 1
   Z(0) &lt;= not (not A and not B and ENABLE); --  statement 2
   Z(2) &lt;= not (A and not B and ENABLE); --  statement 4
   Z(1) &lt;= not (not A and B and ENABLE); --  statement 6
end dec_dataflgw;


either way, you end up with:



  we don't have value for ABAR


You do have a value for ABAR. It is a signal which represents not A. And notice that the order of the lines in your code doesn't matter, since they are all concurrent. So not A can be substituted wherever you use ABAR.

I think you are confusing your concurrent assignments with synchronous clocked assignments. When you make assignments on a clock edge, their values are not utilized until the subsequent clock edge. Here you have no clock.


  will execution will go with initial(default) value of ABAR


Synthesized signals might not have default or initial values. You can make initializations for simulations (eg. signal ABAR : BIT := '0'), but the initialization may be ignored by the synthesis tool, depending on the technology. In general, you need to check your documentation to determine startup values, and whether initialization without resets are supported.