separate (Compilation_Unit)
procedure Get_Block_Name (Out_Name : out Program_Unit_Name) is
    --===============================================================
    -- Get_Block_Name gets the next label for unnamed block. This  ==
    -- label will contain a UNIQUE number; the label format is     ==
    -- "UNNAMED_BLOCK_xxx" where xxx is a UNIQUE positive number.  ==
    --===============================================================

    Next_Block_Name : constant String :=
       "UNNAMED_BLOCK_" & Positive'Image (Current_Block_Id);

begin
    -- Get_Block_Name

    Out_Name := (Length => Next_Block_Name'Length, Value => Next_Block_Name);

    -- Current_Block_ID is a state variable in package
    -- COMPILATION_UNIT body.
    Current_Block_Id := Current_Block_Id + 1;

end Get_Block_Name;