A method is described that allows the translation of a traditionally written (unstructured) program into a set of top-down structured, semantically founded, GOTO-free modules. The method reveals not only the logic of a given program in a most natural way, but it also reduces code duplication to a minimum. It is further shown how the obtained structured program can be mapped back into a GOTO program in such a way that all GOTOs are backwards branches and their number is minimal. The connection between recursively and iteratively structured programs is demonstrated using the WHILE, DO FOREVER, and multilevel EXIT statements. Extensions of the method show the structuring of source programs containing block structures and subroutines.