You can't do it like that: The parameter substitution is done at a different stage of the SQL processing, so that won't work. What you have to do is create a string and execute that:
DECLARE @CMD VARCHAR(MAX)
SET @CMD = 'SELECT cust_id FROM custm_master WHERE ' + @datafield + '=1'
EXEC(@CMD)