n'Abend Haertl,

Zitat Zitat von haertl
0131.00 C*** *IN93 DOUEQ '1'
0132.00 C*** *IN03 OREQ '1' F3
0133.00 C*** *IN12 OREQ '1' F12
0134.00 /FREE
0135.00 DOU %EOF OR *IN03;
0136.00 READC SUBF;
0137.00 /END-FREE
0138.00 C*** READC SUBF 9393 ERR/EOF
0139.00 /FREE
0140.00 IF NOT %EOF;
0141.00 /END-FREE
0142.00 C*** *IN93 IFEQ '0'
0143.00 C*** EXSR DATVER DATEI VERARB
0144.00 C*** ENDIF
0145.00 C*** ENDDO
0146.00 /FREE
0147.00 EXSR DATVER;
0148.00 ENDIF;
0149.00 ENDDO;
0150.00 Hallo Birgitta, wenn ich im fixed Format codiere (siehe C***) dann funktioniert es.
Wenn ich die free Format Befehle (siehe oben) nutze, bekomme ich bei leerem Subfile einen Einheitenfehler, weil der READC SUBF trotz EOF keine '1' setzt. IF NOT %EOF wird dann ausgeführt obwohl End of File zutrifft. Enthält das Subfile Datensätze dann funktioniert es auch in free Format. Noch eine Idee ?

%eof kann mit readc benutzt werden. ich glaube, dass es nicht mit %eof(bsname) funktioniert, aber nur %eof tun's!
der codeschnipsel lässt befürchten, dass du zuviel funktionalität in die schleife gepackt hast. es wundert mich nicht, wenn das programm nicht so, wie gewünscht funktioniert (sorry, aber *in03 in der schleife lässt mich schlimmes ahnen!).

mein ansatz:

wenn subfile gefüllt (sfldsp = *on)!!!
machwas = *ON

dow machwas

readc subformat
if %eof
leave
endif
jetzt kannst du gefahrlos alles machen

enddo

die funktionen %eof, %error, %found, ... liefern (wenn nicht spezifiziert) den Wert der letzten %eof-fähigen, usw. operation! das wird wohl iregendwo im DATVER passieren.

%error in deiner ergänzung fängt nur den fehler leere subdatei ab und hat nur deshalb mit readc etwas zu tun.



Bogomil