Das wird sich auch nicht ändern, da z-B. eine D-Zeile leer sein kann oder nur einen Namen enthält.
Dies könnte auch der Name einer dcl-x sein, der zufällig da steht.
Code:
 dcl-s
   DasFeld
   char(10);
In der C-Karte siehts ja nicht anders aus.
Code:
     C                       eval      Feld1 = Feld2
                             eval      Feld1 = Feld2;
Herausfinden kann man das nur, wenn man die Zeilen davor und die folgenden berücksichtigt, also eine Kontext-Evaluierung versucht.

Da kannst du mal sehen, welche Leistung ein Compiler macht.

Dein Problem bei Regex ist, dass Regex von variablem Text ausgeht.
Somit musst du Alternativen beschreiben die die Varianten einer D-Karte darstellen.
Oder eben die Karten als DS definieren und die Inhalte auf Fixformat prüfen, also ganz ohne Regex.