It think your problem is in not testing for the 94s. It is not enough to just include that one copybook.
B500-MAIN-PROCEDURE.
IF REC-94-TYPE EQUAL TO "94"
PERFORM B600-SEARCH-TERRITORY
END-IF
PERFORM B300-READ-FILE
.
Ideally you would have an 88 for the record-types, which you may find on another copybook for the same file.
Note that I have used a scope-delimiter (the END-IF) and limited the number of periods/full-stops to the mandatory one before a paragraph/SECTION starts or the end of the program is reached.
You are doing IO, you even have 88s set up, but you aren't doing any status checking on the IO. You should. Always.
Why have you opened your input for I-O? If you have an ordinary sequential file, read it, and write a new one. Otherwise you must create a back-up before your program runs. If you don't, your update-in-place becomes a corrupt-in-place.