First of all, you can forget about program blocks. They are an unnecessary feature of the language and I wish they could just be removed to make it simpler to learn SystemVerilog.
See Are Program Blocks Necessary?
An example of using clocking blocks can be found in my DVCon paper: The Missing Link: The Testbench to DUT Connection.