Fork join_none module and program block

Program fkjn;
Initial
Begin

Fork
#10 $display(“x”);
#5 $display(“y”);
#15 $display(“z”);
Join_none
End
Endprogram

Output is nothing displayed

Module fkjn;
Initial
Begin

Fork
#10 $display(“x”);
#5 $display(“y”);
#15 $display(“z”);
Join_none
End
Endmodule

Output :
Y
X
Z

Why and how? Please explain it

In reply to suresh_dve:

From section 24.3 of the LRM:

When all initial procedures within a program have reached their end, that program shall immediately terminate all descendent threads of initial procedures within that program.

In reply to cgales:
Which is one of the many reason I don’t recomend using program blocks. http://go.mentor.com/programblocks