docs: def setscale(self, data_type, scale):
          """Initialize the scale values along the dimension.
  
          Args::
  
            data_type    data type code (one of the SDC.xxx constants)
            scale        sequence holding the scale values; the number of
                         values must match the current length of the dataset
                         along that dimension
  
          C library equivalent : SDsetdimscale
  
          Setting a scale on a dimension generates what HDF calls a
          "coordinate variable". This is a rank 1 dataset similar to any
          other dataset, which is created to hold the scale values. The
          dataset name is identical to that of the dimension on which
          setscale() is called, and the data type passed in 'data_type'
          determines the type of the dataset. To distinguish between such
          a dataset and a "normal" dataset, call the iscoordvar() method
          of the dataset instance.
                                                           """
  
          try:
              n_values = len(scale)
          except:
              n_values = 1
  
          # Validate args
          info = self._sds.info()
          if info[1] == 1:
              dim_size = info[2]
          else:
              dim_size = info[2][self._index]
          if n_values != dim_size:
              raise HDF4Error('number of scale values (%d) does not match ' \
                               'dimension size (%d)' % (n_values, dim_size))
  
          if data_type == SDC.CHAR8:
              buf = _C.array_byte(n_values)
              # Allow a string as the scale argument.
              # Becomes a noop if already a list.
              scale = list(scale)
              for n in range(n_values):
                  scale[n] = ord(scale[n])
  
          elif data_type in [SDC.UCHAR8, SDC.UINT8]:
              buf = _C.array_byte(n_values)
  
          elif data_type == SDC.INT8:
              buf = _C.array_int8(n_values)
  
          elif data_type == SDC.INT16:
              buf = _C.array_int16(n_values)
  
          elif data_type == SDC.UINT16:
              buf = _C.array_uint16(n_values)
  
          elif data_type == SDC.INT32:
              buf = _C.array_int32(n_values)
  
          elif data_type == SDC.UINT32:
              buf = _C.array_uint32(n_values)
  
          elif data_type == SDC.FLOAT32:
              buf = _C.array_float32(n_values)
  
          elif data_type == SDC.FLOAT64:
              buf = _C.array_float64(n_values)
  
          else:
              raise HDF4Error("setscale: illegal or usupported data_type")
  
          if n_values == 1:
              buf[0] = scale
          else:
              for n in range(n_values):
                  buf[n] = scale[n]
          status = _C.SDsetdimscale(self._id, n_values, data_type, buf)
          _checkErr('setscale', status, 'cannot execute')