PROC create_benchmark_environment, crebe (
  family_name, fn       : name = $required
  nos_family_name, nfn  : name = nve
  user_name, un         : name = eval
  password, pw          : name = evalx
  maintenance_limit, ml : integer 0 .. 999 = 25
  set_limits, sl        : boolean = true
  status)


  crev ignore k=status

  display_value '-- BEGIN create_benchmark_environment.'

  display_value '--   Adding performance and benchmark command libraries to command list.'
  set_command_list d=$system.performance_tools.ptf$benchmark_command_library status=ignore
  set_command_list a=$system.performance_tools.ptf$benchmark_command_library
  set_command_list d=$system.performance_tools.ptf$command_library status=ignore
  set_command_list a=$system.performance_tools.ptf$command_library

  display_value '--   Attaching SMF$LIBRARY.'
  detach_file $system.sort.smf$library status=ignore
  detach_file smf$library status=ignore
  attach_file $system.sort.smf$library

  display_value '--   Creating performance variables.'
  IF $variable(ptv$family_name, declared) = 'UNKNOWN' THEN
    crev ptv$family_name k=string s=job
  ELSE
    crev ptv$family_name k=string s=xref
  IFEND
  ptv$family_name = $string($value(family_name))
  IF $variable(ptv$user_name, declared) = 'UNKNOWN' THEN
    crev ptv$user_name k=string s=job
  ELSE
    crev ptv$user_name k=string s=xref
  IFEND
  ptv$user_name = $string($value(user_name))
  IF $variable(ptv$password, declared) = 'UNKNOWN' THEN
    crev ptv$password k=string s=job
  ELSE
    crev ptv$password k=string s=xref
  IFEND
  ptv$password = $string($value(password))
  IF $variable(ptv$batch_and_ia_limits_at_0, declared) = 'UNKNOWN' THEN
    crev ptv$batch_and_ia_limits_at_0 k=boolean s=job value=false
  ELSE
    crev ptv$batch_and_ia_limits_at_0 k=boolean s=xref
  IFEND
  IF $variable(ptv$nos_family_name, declared) = 'UNKNOWN' THEN
    crev ptv$nos_family_name k=string s=job
  ELSE
    crev ptv$nos_family_name k=string s=xref
  IFEND
  ptv$nos_family_name = $string($value(nos_family_name))
  IF $variable(ptv$benchmark_type, declared) = 'UNKNOWN' THEN
    crev ptv$benchmark_type k=string s=job
  ELSE
    crev ptv$benchmark_type k=string s=xref
  IFEND
  ptv$benchmark_type = 'NONE'
  IF $variable(ptv$benchmark, declared) = 'UNKNOWN' THEN
    crev ptv$benchmark k=string s=job
  ELSE
    crev ptv$benchmark k=string s=xref
  IFEND
  ptv$benchmark = 'NONE'
  IF $variable(ptv$byops_run, declared) = 'UNKNOWN' THEN
    crev ptv$byops_run k=boolean s=job
  ELSE
    crev ptv$byops_run k=boolean s=xref
  IFEND
  ptv$byops_run = FALSE

  "********************************************************************"
  "*  If we are going to run IVX benchmarks on a                      *"
  "*  separate UNIX system, there is no need to set the limits and    *"
  "*  link attributes.                                                *"
  "********************************************************************"
  IF set_limits THEN
    display_value '--   Setting link attributes to ('//ptv$user_name//', '//ptv$nos_family_name//') '//ptv$password//'.'
    setla ($name(ptv$user_name), $name(ptv$nos_family_name)) $name(ptv$password)

    if  $job(operator) then
      display_value '--   Setting default family to '//ptv$family_name//'.'
      change_job_attribute_defaults login_family=$name(ptv$family_name)

      display_value '--   Setting INTERACTIVE and BATCH limits to 0.'
      set_job_class_limits job_class=batch number=0
      set_job_class_limits job_class=interactive number=0
      ptv$batch_and_ia_limits_at_0 = true
      display_value '--   Setting MAINTENANCE limit to '//$strrep($value(maintenance_limit))//'.'
      set_job_class_limits job_class=maintenance number=$value(maintenance_limit)
    else
      display_value '--'
      display_value '**  CHANGE_JOB_ATTRIBUTE_DEFAULTS FN='//$string($value(family_name))//'  should be done at the console.'
      display_value '**  SET_JOB_CLASS_LIMITS BATCH        0  should be done at the console.'
      display_value '**  SET_JOB_CLASS_LIMITS INTERACTIVE  0  should be done at the console.'
      display_value '**  SET_JOB_CLASS_LIMITS MAINTENANCE 999  should be done at the console.'
      ptv$batch_and_ia_limits_at_0 = false
    ifend
  IFEND

  display_value '-- END create_benchmark_environment.'


PROCEND create_benchmark_environment
