A Complete Axiomatic Characterization of Algorithmic Properties of Block-Structured Programs with Procedures