Използвахме 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'.
Ето една проста трансформация на Data Division:
$$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 кодът за изпълнение на примерите за Data Division е доста прост.
Кодът на Java за изпълнение на примера за разделяне на процедури е фабричен метод, написан за глагола 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>
person
Gilbert Le Blanc
schedule
03.08.2010