code: def process_msg3(fname):
      
      with open(fname, 'r') as infile:
          info = []
          for lineno, line in enumerate(infile):
              parts = line.split('  ')
              try:
                  var_name, desc, typ, units = parts[:4]
                  size_hw = parts[-1]
                  if '-' in size_hw:
                      start, end = map(int, size_hw.split('-'))
                      size = (end - start + 1) * 2
                  else:
                      size = 2
  
                  assert size >= 2
                  fmt = fix_type(typ, size)
  
                  var_name = fix_var_name(var_name)
                  full_desc = fix_desc(desc, units)
  
                  info.append({'name': var_name, 'desc': full_desc, 'fmt': fmt})
  
                  if ignored_item(info[-1]) and var_name != 'Spare':
                      warnings.warn('{} has type {}. Setting as Spare'.format(var_name, typ))
  
              except (ValueError, AssertionError):
                  warnings.warn('{} > {}'.format(lineno + 1, ':'.join(parts)))
                  raise
          return info
docs: Handle information for message type 3.