Yes, you are missing something. That file compiles and runs with no errors for me ;P
The problem is how you are running it. ArmA doesn't care about file extensions; it is the command you use to run it that determines whether the SQS or SQF interpreter is used.
[this,15,0.2] execVM "ied.sqf"
ied = compile preprocessFileLineNumbers "ied.sqf";
_result = [this,15,0.2] call ied;
ied = compile preprocessFileLineNumbers "ied.sqf";
[this,15,0.2] spawn ied;