First, you need to find out what the 'blank' line actually is, acsii wise.
It may be as simple as a CR w/o a LF, in which case you could test for that, then shell out to u2d (unix to dos, takes care of cr to cr/lf), then finish the run you need.
Or, you could:
Open xyz$ for binary as #1
then do some scanning/reencoding to convert whatever the blank line is to a regular cr/lf and continue on.
Me, I'd add a header or a footer to each file as it's processed, then check for it on opening a file, discard the header/footer if present, and continue.
If the header/footer isn't present, then pass the file through the 'recoder' routine, add header/footer, and write file back out.
That should start to save quite a few machine cycles as the files slowly get worked through. That's just me though.