|  | with Ada.Command_Line; | 
|  | with Ada.Text_IO; | 
|  |  | 
|  | function Example return Integer is | 
|  |  | 
|  | function Square(num : Integer) return Integer is | 
|  | begin | 
|  | return num**2; | 
|  | end Square; | 
|  |  | 
|  | function ReadCmdArgumentOrDefault(default: Integer) return Integer is | 
|  | begin | 
|  | if Ada.Command_Line.Argument_Count > 0 then | 
|  | return Integer'Value(Ada.Command_Line.Argument(1)); | 
|  | else | 
|  | return Default; | 
|  | end if; | 
|  | end ReadCmdArgumentOrDefault; | 
|  |  | 
|  | NumberToSquare: Integer; | 
|  | Answer: Integer; | 
|  | begin | 
|  | NumberToSquare := ReadCmdArgumentOrDefault(4); | 
|  | Ada.Text_IO.Put_Line("Number to square: " & NumberToSquare'Image); | 
|  |  | 
|  | Answer := Square(NumberToSquare); | 
|  | Ada.Text_IO.Put_Line("Square answer: " & Answer'Image); | 
|  |  | 
|  | return Answer; | 
|  | end Example; |