PDA

View Full Version : Cobol-Programm zu groß zum Compilieren ...



Tom74
13-03-07, 15:33
Hallo,

habe ein Problem, bei dem ich nun nicht weiter weiss und hoffe hier einen Lösungsansatz zu finden. Es geht um folgendes:

Ich habe ein Cobol-Programm, das bereits vor einiger Zeit einfach zu gross geworden ist. Der Compiler quittierte den Versuch der Umwandlung mit dem Code CWX9001.

Bei IBM findet man dazu dazu folgendes:

DESCRIPTION OF PROBLEM FIXED FOR APAR SE06577 :
-----------------------------------------------

Message CPF955D or CWX9001 is issued when a very large ILE

COBOL program is compiled with the *LIST DBGVIEW option.


Die Direktive COMPRESSDBG am Anfang des Cobol-Programms löste das Problem kurzeitig. Aber da das Programm ständig wächst, wurde es nach einiger Zeit erneut zu gross. Diesmal halfen keine Compiler-Optionen mehr (*NOXREF *NOMAP) und es blieb nichts anderes übrig, als auf einige Kommentare, Leerzeilen usw. zu verzichten. Mittlerweile bewege ich mich wieder an der Grenze und in einige Code-Zeilen erwarte ich wieder den Code CWX9001.

Ich stehe da bald von einem - so scheint es - unlösbaren Problem. Erschwerend kommt hinzu, dass ich für die Entwicklung den DEBUG-Listing unbedingt brauche und ich darüber hinaus nicht auf alle Kommentarzeilen im Sourcecode verzichten kann (bei dieser Projektgröße verständlich). Auch die Auslagerung einger Programmteile in Call-Module ist aufgrund der jetzigen Projekt-Struktur unmöglich (das was ausgelagert werden konnte, wurde bereits ausgelagert).

Mir ist da allerdings eine Idee gekommen, die ich hier vorstellen möchte:

Ich dachte mir, ich erstelle vor dem eigentlichen Compilerlauf eine Zwischendatei, in die ich NUR die echten Codezeilen reinkopiere und Kommentare aussen vor lasse (die Comments sollen im Source-Code drin bleiben wie oben erwähnt, aber im compilierten Programm brauche ich sie nicht). Das würde grob geschätzt einige Tausend Zeilen Code sparen. Da mir die Umsetzung dieser Idee etwas schwer erscheint, wollte ich fragen ob es von der AS400 aus eine Funktion / Möglichkeit gibt um den Code über einen Pre-Compiler o.ä. zu editieren und dort die unnötigen Zeilen rauszufiltern - und das ohne eine Zwischendatei ? Gibt es evtl. eine Zugriffs- und Manipulationsmöglichkeit nach dem Aufruf des Compilers aber noch VOR der eigentlichen Compilierung ?

Für Ideen / Lösungsvorschläge wäre ich sehr dankbar

Viele Grüße
Thomas

Fuerchau
13-03-07, 15:43
Einfacher wird es, mittels CRTCBLMOD ... DBGVIEW(*SOURCE), das reduziert die Objektgröße nicht unerheblich.
Ausserdem finde ich den "STRDBG ... OPMSRC(*YES)" besser als den STRISDB (halt Geschmackssache).

Ansonsten gibt es auch in ILE einige Beschränkungen, die nun mal nicht zu umgehen sind.
Dies gilt insbesonders für die Anzahl der MI-Anweisungen sowie Anzahl der Variablen (ich glaube je ca. 32766).

COBOL-Programme dieser Größenordnung gehören auf jeden Fall mal redesigned, denn ich glaube nicht, dass hier noch die Übersichtlichkeit gewahrt bleibt.

Ggf. identische Routinen herausfinden und mittels PERFORM verheinheitlichen.
Möglichkeiten gibt es da sicherlich sehr viele.