
  PROCEDURE [INLINE] dfp$get_task_queue_entry
    (    p_queue_interface_table: dft$p_queue_interface_table;
         queue_index: dft$queue_index;
     VAR queue_entry_index: dft$queue_entry_index;
     VAR p_driver_queue_entry: ^dft$driver_queue_entry;
     VAR p_cpu_queue_entry: ^dft$cpu_queue_entry;
     VAR status: ost$status);

    VAR
      assign_status: dft$assign_queue_entry_status;

    REPEAT
      dfp$assign_queue_entry (p_queue_interface_table, queue_index,
            dfc$task_services, queue_entry_index, assign_status);
      IF assign_status = dfc$aqes_server_terminated THEN
        osp$set_status_abnormal (dfc$file_server_id, dfe$server_not_active,
             '', status);
        RETURN;
      IFEND;
      IF assign_status = dfc$aqes_no_available_entries THEN
        syp$wait (1000);
      IFEND;
    UNTIL assign_status <> dfc$aqes_no_available_entries;

    IF assign_status <> dfc$aqes_entry_assigned THEN
      IF assign_status = dfc$aqes_server_terminated THEN
        osp$set_status_abnormal (dfc$file_server_id, dfe$server_not_active,
             '', status);
      ELSE
        osp$set_status_abnormal (dfc$file_server_id,
              dfe$unable_to_assign_q_entry, ' ',  status);
        osp$append_status_integer (osc$status_parameter_delimiter, $integer(assign_status),
              10, FALSE, status);
      IFEND;
      RETURN;
    IFEND;
    dfp$fetch_queue_entry (p_queue_interface_table, queue_index,
          queue_entry_index, p_driver_queue_entry, p_cpu_queue_entry);
    status.normal := TRUE;
  PROCEND dfp$get_task_queue_entry;
?? PUSH (LISTEXT := ON) ??
*copyc dfd$driver_queue_types
*copyc dfe$error_condition_codes
*copyc dfp$assign_queue_entry
*copyc dfp$fetch_queue_entry
*copyc osp$set_status_abnormal
*copyc osp$append_status_integer
*copyc ost$status
*copyc syp$wait
?? POP ??

