Мы использовали безголовый Eclipse, чтобы выполнить некоторые преобразования между исходным кодом и сгенерированным кодом Cobol.Мы определили правила преобразования в нескольких файлах XML, и Eclipse обработал их и исходный код
Это в некоторой степени зависит от вашего исходного ввода, но в нашем процессе преобразования разделение данных было намного сложнее, чем разделение процедур,Нам в значительной степени приходилось кодировать каждое преобразование Data Division как отдельный метод Java.Мы смогли использовать заводскую модель для Отдела процедур.На фабрике было 8 конкретных реализаций классов, одна из которых использовалась в большинстве преобразований.
Отредактировано для добавления примеров.
Вот что мы вставляем в рабочее хранилище:
01 PROGRAM-COMPILE-INFO.
05 PGMNAME-COMPILED PIC X(08) VALUE 'J1PP2D0'.
05 PGMDATE-COMPILED PIC X(10) VALUE '2009-08-11'.
05 PGMTIME-COMPILED PIC X(08) VALUE '08:46:47'.
Вот простое преобразование деления данных:
$$COPY J1PP2D1
преобразуется в
COPY J1PP2D1.
Вот преобразование деления процедуры:
SQL-OTHER-ERROR IASN CLOSE
преобразуется в
IF SQL-DEADLOCK
MOVE '0329' TO ERROR-STATUS OF SUBSCHEMA-CTRL
ELSE
MOVE '0399' TO ERROR-STATUS OF SUBSCHEMA-CTRL
END-IF
MOVE 'IASN' TO ERROR-RECORD OF SUBSCHEMA-CTRL
MOVE '000600,CLOSE ,0056-PROCESS'
TO XI-EHK-STMT-CONTEXT
PERFORM XI-SQL-ERROR
GO TO IDMS-STATUS
000600 - это код ошибки, автоматически рассчитываемый прекомпилятором.0056-PROCESS - это название абзаца, содержащего оператор прекомпилятора SQL-OTHER-ERROR.
Java-код для выполнения примеров с делением данных довольно прост.
Java-код дляdo Пример с делением процедур - это фабричный метод, написанный для глагола SQL-OTHER-ERROR.
Вот один из наших сценариев преобразования XML.У нас их несколько.
<?xml version="1.0" encoding="UTF-8"?>
<script>
<transformation name="DB2Pre">
<param name="cobol.in" kind="in" type="text-files"/>
<param name="cobol.out" kind="inout" type="text-files"/>
<param name="mapsusage-xml-files" kind="inout" type="xml-files"/>
<call-transformation name="DB2PreInit"/>
<call-transformation name="DB2PreImpl">
<with-param name="cobol-src-files" value="$cobol.in"/>
<with-param name="cobol-out-files" value="$cobol.out"/>
<with-param name="mapsusage-xml-files" value="$mapsusage-xml-files"/>
<with-param name="NEED_MAP_MACRO_FLAG" value="$YES"/>
</call-transformation>
<call-transformation name="Map2Cobol"/>
<call-transformation name="GenStrutsConfig">
<with-param name="cobol-src-files" value="$cobol.in"/>
<with-param name="mapsusage-xml-files" value="$mapsusage-xml-files"/>
</call-transformation>
</transformation>
</script>