PROC delete_system_file, delete_system_files, delsf (
  files, file, f: list of file = $required
  status)

  create_variable (delete_status internal_status) kind=status
  ring_attributes_list = ':$LOCAL.' // $unique

  FOR i = 1 TO $set_count(files) DO
    file_path = $path($value(files, i), catalog) // '.' // $path($value(files, i), last)
    IF $path($fname(file_path), catalog) = ':$LOCAL' THEN
      cycle = ''
    ELSE
      cycle = '.' // $strrep($file($fname(file_path//'.$low'), cycle_number))
      detach_file $fname(file_path//'.$low') status=internal_status
    IFEND
    display_ring_attributes $fname(file_path//cycle) output=$fname(ring_attributes_list)
    rewind_file $fname(ring_attributes_list)
    include_file $fname(ring_attributes_list)
    detach_file $fname(ring_attributes_list)
    IF ring1 < $ring THEN
      IF ring1 > $ring THEN "write from current ring"
        ring1 = $ring
      IFEND
      IF ring2 < $ring THEN "read/execute from current ring"
        ring2 = $ring
      IFEND
      IF ring3 < $ring THEN "call from current ring"
        ring3 = $ring
      IFEND
COLLECT_TEXT output=delete_file_task.$boi until='**' status=delete_status
      TASK ring=ring1 status=delete_status
        IF delete_status.normal = true THEN
          delete_file $fname(file_path//cycle) status=delete_status
        IFEND
      TASKEND
**
      change_file_attributes delete_file_task ring_attributes=(ring1, ring2, ring3) status=internal_status
      include_file delete_file_task.$boi status=internal_status
      detach_file delete_file_task
    ELSE
      delete_file $fname(file_path//cycle) status=delete_status
    IFEND
    IF delete_status.normal = true THEN
      put_line ' Deleted file '//file_path//cycle output=$response
    ELSEIF $condition(delete_status.condition) = 'PFE$USAGE_NOT_PERMITTED' THEN
      put_line ' You are not permitted to delete file '//file_path//cycle output=$response
    ELSEIF $condition(delete_status.condition) = 'CLE$TASK_TASKEND_RING_BELOW_MIN' THEN
      put_line ' You cannot run at ring '//$strrep(ring1)//' to delete file '//file_path//cycle ..
            output=$response
    ELSE
      display_value delete_status output=$response
    IFEND
  FOREND

PROCEND delete_system_file
