2017-03-04 3 views
0

Können wir ein Shell-Skript schreiben, um die Größe von Arrays in Cobol-Programmen dynamisch zu ermitteln, wie die maximale Größe eines Arrays und wie viel Array gefüllt ist.Shell-Skript zum Ermitteln der Arraygröße von Cobol-Programmen

+0

Geben Sie bitte einen Beispielcode ein. Nicht jeder hier spricht Kobol. –

+0

Willkommen bei stackoverflow.com. Bitte nehmen Sie sich etwas Zeit, um die [Hilfeseiten] (http://stackoverflow.com/help) zu lesen, insbesondere die Abschnitte mit dem Namen ["Welche Themen kann ich hier fragen?"] (Http://stackoverflow.com/help/) on-topic) und ["Welche Art von Fragen sollte ich vermeiden zu fragen?"] (http://stackoverflow.com/help/dont-ask). Nimm auch die [Tour] (http://stackoverflow.com/tour) und lies über [wie man gute Fragen stellt] (http://stackoverflow.com/help/how-to-ask). Zuletzt erfahren Sie, wie Sie ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) erstellen können. – cschneid

+0

@ Prashanth: Hat die gegebene Antwort "für dich gearbeitet"? Wenn ja: Markieren Sie es als "akzeptiert". Wenn nicht: Fehlen bestimmte Dinge? –

Antwort

5

Frage 1: Können wir über etwas (in diesem Fall ein Shell-Skript) zuverlässig herausfinden, was das maximale Array in einer Programmiersprache (in diesem Fall COBOL) ist?

Antwort: Nein - oft hätten Sie einen dynamischen Zugriff (Zugriff durch eine Variable) und es ist nicht zuverlässig zu wissen, wie viel verwendet wird, wenn Sie das Programm nicht mit allen möglichen Eingaben ausführen.

Frage 2: Können wir ein Shell-Skript schreiben, das die Größe von Arrays in einem COBOL-Programm ermittelt?

Antwort: Ja, wenn Sie die nicht 2002+ verwenden OCCURS DYNAMIC (wo die DEPENDING ON die Größe dynamisch festgelegt) und verwenden Sie nicht die IBM Erweiterung OCCURS UNBOUNDED (wo die DEPENDING ON zur Definition der Größe verwendet wird und eine externe Zuweisung ist erforderlich). Dies lässt array OCCURS [min [TO]] max. Nur grep (oder findstr, wenn Sie für Windows gesperrt sind) für OCCURS, die die maximale Größe dahinter haben wird. Wie es in einer neuen Zeile sein kann, müssten Sie die Zeilenumbrüche vor der Überprüfung entfernen (zum Beispiel mit tr '\n\ ' ', wenn die Dateien DOS Zeilenumbrüche enthalten können, zusätzlich tr '\r\ ' '). Da Sie möglicherweise einen Inline-Kommentar haben, müssten Sie vorher alle Kommentare ersetzen. Je nach Format (ich würde ein festes Referenzformat annehmen) müssten Sie zuerst die Nicht-Code-Teile jeder Zeile entfernen und nach Fortsetzungszeilen suchen. Wenn Sie die Option haben, ist es wahrscheinlich viel einfacher, die Quellen mit einem Compiler vorzuverarbeiten (ich habe die Vorverarbeitung des freien GnuCOBOL-Compilers für eine ähnliche Codeuntersuchung einmal verwendet) oder sogar die Symboltabelle der Quellliste, wenn es bietet dies (GnuCOBOL hat es). Es kommt in diesem Fall auf eine sehr einfache grep.

Verwandte Themen