Your script might work but the syntax is ambiguous so it may also not work.
To make the script clearer to the interpreter it's recommended to specify the table you are referencing.
You can use GetField() like so:
x := GetField("Purchdisc", "Supplier"))
Or just do this:
nNewList := nCost * Supplier->Purchdisc
If you want to access a database field, then the syntax is:
If you want a function or expression to look at a particular table, then surround the function or expression with round brackets like so: