It will either be combinatorial logic (if a is only used within the process and only assigned before it is used), both logic and a register (if a is only used in the process, but is used before assignment and after assignment), or a register (a is only used before assignement). VHDL allows local variables to have blocking assignments, but these are explictly restricted to a single process.
However, the specific tool may not allow a to be used outside of the process unless very specific requirements are met. For example, if "a" is used to infer a multi-clock true dual-port ram in an FPGA.
This style is not generally reccomended because Verilog does not enforce an ordering between always block evaluation. This means that "a" cannot be used by any other logic that drives a register clocked by "clk" or any related clocks unless the signal is driving the clock port of said register only. In the former case, there is a chance that the signal will be inconsistently set by the driving process before being used by the other consuming processes.