process_files (byte -w bytes[], int max_length, p_string names[], int length)
{
  open (hfile -w files[], int length)        
  {
    for (i = 0; i < length; i++)
    {
      if (names[i]->stdio:file_exists ()) 
      {
        files[i] = stdio:open (names[i]);
      }
      else
      {
        files[i] = .;
      }
    }
  }

  all_opened -a (hfile files[], int length)
  {
    for (i = 0; i < length; i++)
    {
      if (!files[i]) return 0;
    }
    else
    {
      return 1;
    }
  }

  files[STREAM_PRC/MAX_FILES] = open (_, length);

  if (files->all_opened (length)) 
  {
    ...
  }
  else
  {
    ...
  }
} 
/
{
  close (hfile -&w files[], int length)
  {
    for (i = 0; i < length; i++)
    {
      if (files[i]) stdio:close (&files[i]);
    }
  }

  close (files, length);
}