PROCEDURE (osm$crepp) create_program_profile, crepp (
  target_text, tt: file = $required
  file, files, f: list of file = $optional
  parameter, p: string = $optional
  library, libraries, l: list of file = $optional
  module, modules, m: list of program_name = $optional
  starting_procedure, sp: program_name = $optional
  profile_order, po: key
      (module_program_unit, mpu)
      (program_unit, pu)
      (time, t)
    keyend = $optional
  program_unit_class, puc: key
      all, local, remote
    keyend = $optional
  number, n: any of
      key
        all
      keyend
      integer 0..4294967295
    anyend = $optional
  output, o: file = output
  stack_size, ss: integer 1..2147483648 = 2000000
  status)

  MEASURE_PROGRAM_EXECUTION

    sp_parameter=' '
    IF $specified(starting_procedure) THEN
      sp_parameter=' starting_procedure=$string(starting_procedure)'
    IFEND
    m_parameter=' '
    IF $specified(modules) THEN
      m_parameter=' modules=$apply(modules $string(x))'
    IFEND

    include_command '    set_program_description target_text=target_text file=file library=library'//..
' stack_size=stack_size '//m_parameter//sp_parameter

    execute_instrumented_task parameter=parameter

    display_program_profile profile_order=profile_order program_unit_class=program_unit_class number=number ..
          output=output

  QUIT

PROCEND create_program_profile
