sample:
      procedure options(main); 
      declare
         c character(10) varying,
         i fixed binary(15);

      do;  
        put skip list('Input: ');
        get list(c);
        c = upper(c); /* function reference */
        put skip list('Output: ',c);
      end;
  
      begin;  
      declare
         c float binary(24);

         put skip list('Input: ');
         get list(c);
         call output(c); /* subroutine invocation */
      end;
  
      upper:  
           procedure(c) returns(character(10) varying);
           declare
              c character(10) varying;

           return(translate(c,'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                             'abcdefghijklmnopqrstuvwxyz'));
      end upper;
  
      output:  
            procedure(c);
            declare
               c float binary(24);

            put skip edit(c) (column(20),e(10,2));
      end output;
  
end sample;
