
  FUNCTION [INLINE] qfp$job_selection_priority
    (    current_time: jmt$clock_time;
         kjl_index: jmt$kjl_index): jmt$job_priority;

?? PUSH (LISTEXT := ON) ??

    VAR
      age_interval: integer,
      job_class: jmt$job_class,
      job_priority: integer;

    IF kjl_index = jmc$kjl_undefined_index THEN
      job_priority := 0;
    ELSE
      job_class := jmv$kjl_p^ [kjl_index].job_class;

      IF jmv$job_class_table_p^ [job_class].initiation_age_interval <>
            jmc$unlimited_prio_age_interval THEN
        age_interval := ((current_time - jmv$kjl_p^ [kjl_index].
              job_submission_time) DIV jmv$job_class_table_p^ [job_class].
              initiation_age_interval);
      ELSE
        age_interval := 0; { no aging
      IFEND;
      job_priority := age_interval * jmv$job_class_table_p^ [job_class].
            selection_priority.increment + jmv$job_class_table_p^ [job_class].
            selection_priority.initial + jmv$kjl_p^ [kjl_index].priority_bias;
      IF job_priority > UPPERVALUE (jmt$job_priority) THEN
        job_priority := UPPERVALUE (jmt$job_priority);
      ELSEIF job_priority < LOWERVALUE (jmt$job_priority) THEN
        job_priority := LOWERVALUE (jmt$job_priority);
      IFEND;
    IFEND;
    qfp$job_selection_priority := job_priority;
  FUNCEND qfp$job_selection_priority;

*copy qfh$job_selection_priority

*copyc jmt$job_class
*copyc jmt$job_priority
*copyc jmt$kjl_index
*copyc jmv$job_class_table_p
*copyc jmv$job_scheduler_table
*copyc jmv$kjl_p
?? POP ??
