You can see that a procedure only needs to be written once, and can then be invoked as many times as necessary. The resultant shortening of the program is one of the benefits of procedures.
-------------------------------------------------------- -- Write "ADA" in large letters -- Skansholm, section 2.4.4, page 44 -------------------------------------------------------- with TEXT_io; use TEXT_IO; procedure GIANT_ADA is begin -- draw a giant "A" new_line; put_line (" * "); put_line (" * * "); put_line (" * * "); put_line (" ******* "); put_line (" * * "); put_line ("* *"); new_line; -- draw a giant "D" new_line; put_line (" ******* "); put_line (" * * "); put_line (" * * "); put_line (" * * "); put_line (" * * "); put_line (" * * "); put_line (" ******* "); new_line; -- draw a giant "A" new_line; put_line (" * "); put_line (" * * "); put_line (" * * "); put_line (" ******* "); put_line (" * * "); put_line ("* *"); new_line; end GIANT_ADA;
-------------------------------------------------------- -- Write "ADA" in large letters -- Skansholm, section 2.4.4, page 46 -------------------------------------------------------- with TEXT_io; use TEXT_IO; procedure GIANT_ADA is procedure DRAW_GIANT_A is begin -- draw a giant "A" new_line; put_line (" * "); put_line (" * * "); put_line (" * * "); put_line (" ******* "); put_line (" * * "); put_line ("* *"); new_line; end DRAW_GIANT_A; procedure DRAW_GIANT_D is begin -- draw a giant "D" new_line; put_line (" ******* "); put_line (" * * "); put_line (" * * "); put_line (" * * "); put_line (" * * "); put_line (" * * "); put_line (" ******* "); new_line; end DRAW_GIANT_D; begin -- DRAW_GIANT_ADA DRAW_GIANT_A; DRAW_GIANT_D; DRAW_GIANT_A; end GIANT_ADA;