2016-07-15 34 views
1

Ich importiere CSV-Dateien von einem Drittanbieter in einer COBOL-Anwendung. Die Dateinamen sind 23 Zeichen lang im .csv-Format. Diese Dateien werden erfolgreich und korrekt in Excel, Word und Vi gelesen.Fehler 94,20 auf open-Anweisung auf eine 23-stellige Dateiname-Datei

Wenn ich eine dieser Dateien mit den angegebenen Dateinamen öffne bekomme ich einen COBOL-Fehler 94,20 - Datei nicht gefunden. Dies tritt sowohl in SCO OpenServer 5.0.7 (Unix) als auch in Windows 7-Laufzeitumgebungen auf.

Wenn ich jedoch den Dateinamen (beliebig auf 4 Zeichen) kürzen kann ich die Datei ohne Probleme öffnen, lesen und schließen.

Gibt es einen COBOL-Grenzwert für die Anzahl der Zeichen, die in einem sequenziellen Dateinamen zulässig sind? Was könnte sonst einen solchen offenen Fehler verursachen?

Ich laufe Micro-Fokus/ACUCOBOL-GT V7.00 Compiler und ACUCOBOL-GT Laufzeitversion 5.2.1.

Antwort

0

Ältere Versionen von SCO Unix (Vorgänger von SCO OpenServer) hatten einen 14-stelligen Dateinamen. Wenn Ihre Dateien den Namen "something.csv" haben, wäre der Teil "etwas" auf 10 Zeichen beschränkt.

Dieser Grenzwert sollte nicht für OpenServer 5.0.7 gelten. Wenn der COBOL, den Sie verwenden, auf einer älteren Version kompiliert wurde, oder wenn er neuer ist, aber die Unterstützung von Dateinamen freiwillig einschränkt, um Abwärtskompatibilität zu gewährleisten, könnte dies das Problem sein. Sie können dies testen, indem Sie es mit 13, 14, 15-Char-Dateinamen testen - nun, im Allgemeinen, probieren Sie verschiedene Längen, um das tatsächliche Limit zu erfahren.

Ihr 5.0.7-System sollte den Systemaufruf-Tracer-Befehl truss (C) haben und möglicherweise auch Trace (CP) haben (wenn Sie das C-Entwicklungssystem installiert haben). Das Ausführen von truss how-you-start-a-cobol-program longfilename.csv kann eine nützliche Ausgabe erzeugen, z. die tatsächliche syscall- und system error-Nummer, die zu dem angezeigten Fehler führt. Die OSR5-Versionen von truss und trace sind mäßig flockig (auf unterschiedliche Weise), versuchen Sie beides. Lesen Sie ihre man-Seiten für Dinge wie das "-o" -Flag, um die Ausgabe in eine Datei zu schreiben.