Thing I don't like about this is your file is being read once for each value of NUM. Where are these NUM values comming from (hardcoded, output of some other command, commandline input, etc)?
If we knew that it should be possible to get a nawk command then reads the file once and prints any line that matches your list of required values.
Here is what my final code looks like once I had cleaned it up
nawk -F\; '$7==n' n="${NUM}" file
$7 is the column I want to search for a specific number. This number may exist in other columns in the file so I want to be specific that the $NUM must be in the 7th position.
$NUM contains a list of numbers I want to search for
You cannot use == on a list of numbers. It will check if column 7 is equal to "1234 1235", see that it isn't, and return false. You'll have to split it in the BEGIN section. If you put it in an array like B["12345"]=1, you can check without a loop.
Since you need it in the BEGIN section, you will have to put the variable in with -v before, not VAR= afterwards. When you put in variables at the end, they get assigned when awk starts reading files, after BEGIN happens.
awk -v N="1234 5678" 'BEGIN { split(N,X); for(L in X) B[A[X]]=1 } $7 in B' inputfile