Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Sigiswald Reeter Geändert vor über 10 Jahren
1
Die vollautomatische Transformation mit TRAVERT®.A2C
Assembler nach COBOL Die vollautomatische Transformation mit TRAVERT®.A2C erläutert am Beispiel eines vollständigen, ablauffähigen Assemblerprogramms © 2008 – 2015 Schierholz IT Modernisation GmbH 22. Dezember 2014
2
Inhalt Einführung Einfachere Muster Komplexe und sehr komplexe Muster
Einführung Einfache Muster Komplexe Muster Synopsis Inhalt Einführung Einfachere Muster Umgang mit Kommentaren Speicherdefinitionen Relative Sprünge Transformation von Code-Molekülen: B/NOP, UNPK/OI, Field Padding mit MVI/MVC, EX, ED/EDMK Komplexe und sehr komplexe Muster Ablösung der OS Linkage Convention Dateien: Definition und Zugriff Erkennung und Umformung von Subroutinen Tabellen: Definition und Zugriff © Schierholz IT Modernisation GmbH Assembler nach COBOL
3
maschinelle Verarbeitung von Computersprachen
Einführung Einfache Muster Komplexe Muster Synopsis Unternehmen Produkte Testprogramm Das Unternehmen Schierholz IT Modernisation GmbH ist der Spezialist für die Anwendungsfelder Analyse von Softwaresystemen beliebiger Komplexität und Größe Transformation von Sprachen in beliebige andere - ohne Veränderung der Funktionalität Reengineering von Quellcode beliebiger Sprachen Unsere Kunden sind große IT Anwender (meist mit Großrechnern), v. a. Versicherungen, Banken und Behörden. Unsere Leistungen Massive Kostensenkung der IT durch Migration (i. d. R. mehr als 50% !) Optimale Vorbereitung von Projekten durch vollständige Analyse gewachsener Systeme: Konsistenz, Redundanz, fehlender Code, Abhängigkeit von Dritt-Systemen usw. Daten werden als graphische Modelle und als Repository ausgegeben. maschinelle Verarbeitung von Computersprachen © Schierholz IT Modernisation GmbH Assembler nach COBOL
4
Einführung Einfache Muster Komplexe Muster Synopsis
Unternehmen Produkte Testprogramm Produkte RULAMAN® ist die universelle Umgebung für alle unsere Produkte SPL – unsere Programmiersprache zur hoch-effizienten Entwicklung von Konvertern und Analysewerkzeugen YGGDRASIL® analysiert Softwaresysteme beliebiger Sprachen, Größe und Komplexität automatisch Die TRAVERT® Produkte umfassen eine Reihe von Konvertern, z.B. TRAVERT.A2C transformiert Mainframe Assembler nach ANSI-COBOL TRAVERT.Ix2J konvertiert Informix 4GL nach Java TRAVERT.V2R modernisiert COBOL VSAM Anwendungen samt Daten nach Oracle / DB2 Die GRANUM® Produkte zum Reengineering ohne Sprachwechsel, z.B.: GRANUM.RE – Reengineering , Restrukturierung, Entfernung von Totcode u. v. a. m. GRANUM.FO – standardisierte Formatierung („Beautifying“) GRANUM.RF – Refactoring, auch zur Positionierung für die Migration in OO-Sprachen © Schierholz IT Modernisation GmbH Assembler nach COBOL
5
Einführung Einfache Muster Komplexe Muster Synopsis
Unternehmen Produkte Testprogramm Diese Präsentation ... ... zeigt die Mächtigkeit unserer Konverter-Produkte anhand der Transformation eines Assembler Programms nach COBOL durch unser Produkt A2C. Wir erläutern die wichtigsten Transformationsthemen durch Gegenüberstellung der Ausprägungen in Assembler und dem jeweiligen Ergebnis in COBOL. Das Beste ist: Das resultierende COBOL Programm erbringt ohne jede Nachbearbeitung fehlerfrei dieselben Ergebnisse wie das Assembler Programm! Alles geschieht vollautomatisch! Bevor Sie sich jetzt in die Details vertiefen, empfehlen wir, die Begleitdateien herunter zu laden und bereit zu halten. © Schierholz IT Modernisation GmbH Assembler nach COBOL
6
Das Testprogramm A2CP2 Eingabe: ZIP (PLZ), requestor ID, priority
Einführung Einfache Muster Komplexe Muster Synopsis Unternehmen Produkte Testprogramm Das Testprogramm A2CP2 Eingabe: ZIP (PLZ), requestor ID, priority AUTHTAB ID, authority name A2CP2 prüft und vervollständigt Eingabesätze benutzt zwei interne Tabellen CITYTAB ZIP, city name, inhabitants Ausgabe: Liste © Schierholz IT Modernisation GmbH Assembler nach COBOL
7
Einfachere Muster Umgang mit Kommentaren Speicherdefinitionen
Einführung Einfache Muster Komplexe Muster Synopsis Kommentare Adressierung rel. Sprünge Code-Moleküle Einfachere Muster Umgang mit Kommentaren Speicherdefinitionen Relative Sprünge Transformation von sog. Code Molekülen © Schierholz IT Modernisation GmbH Assembler nach COBOL
8
Verlagern der Programmbeschreibung
Einführung Einfache Muster Komplexe Muster Synopsis Kommentare Adressierung rel. Sprünge Code-Moleküle Verlagern der Programmbeschreibung *********************************************************************** 1.1 * The program reads selected ZIP codes from a sequential file and * enriches the data with related information from 2 internal tables. . . . * authority ID, 4 bytes alphanumeric * authority name, 20 bytes alphanumeric *********************************************************************** 1.2 Per Default interpretiert A2C den ersten größeren Block von Ganzzeilenkommentaren als Programmbeschreibung. Dieser Kommentarblock wird an den Anfang des COBOL Programms gestellt. PROGRAM-ID. A2CP2. * *********************************************************************** * The program reads selected ZIP codes from a sequential file and * enriches the data with related information from 2 internal tables. . . . * authority ID, 4 bytes alphanumeric * authority name, 20 bytes alphanumeric *********************************************************************** © Schierholz IT Modernisation GmbH Assembler nach COBOL
9
Einfügen der Transformation History
Einführung Einfache Muster Komplexe Muster Synopsis Kommentare Adressierung rel. Sprünge Code-Moleküle Einfügen der Transformation History A2C generiert einige Informationen über das Programm und die Transformation direkt hinter die Programmbeschreibung. * * * Entity A2CP2 * Transformed by Schierholz IT Modernisation GmbH * Baumwall 5, Hamburg, Germany * On :05:25 * Using A2C Version 4.2 * A2C is a RULAMAN(r) based product * * * Parameters none * ENTRY none * Calling none * Return code 0 * ABEND code none © Schierholz IT Modernisation GmbH Assembler nach COBOL
10
Einführung Einfache Muster Komplexe Muster Synopsis
Kommentare Adressierung rel. Sprünge Code-Moleküle Überschriftsblöcke *********************************************************************** 8.2 * Print final statistics *********************************************************************** PRTS14 DC F'-1' PRTSTATS DS 0H Die Mustererkennung hat PRTSTATS und andere als Subroutinen identifiziert. So kann der über »PRTS14« liegende Kommentarblock an den Beginn der COBOL Subroutine verschoben werden. *********************************************************************** * Print final statistics PRTSTATS SECTION. PRTSTATS-Start. © Schierholz IT Modernisation GmbH Assembler nach COBOL
11
Umgang mit Inline Kommentaren
Einführung Einfache Muster Komplexe Muster Synopsis Kommentare Adressierung rel. Sprünge Code-Moleküle Umgang mit Inline Kommentaren A2C bietet verschiedene Optionen zum Umgang mit Inline Kommentaren 1. TRANSFORM - Umformen in COBOL Ganzzeilenkommentare, die wahlweise vor oder hinter die betreffende Zeile gestellt werden 2. REMOVE - Entfernen 3. KEEP - Umformen in COBOL Inline Kommentare (*>) In den meisten Fällen ergibt die Option 2 »REMOVE« am meisten Sinn, da jeder Assembler Inline Kommentare auf ein bestimmtes Statement bezogen ist, das von A2C mit mehreren anderen zu einem einzigen COBOL Befehl umgeformt wird. Für diese Demonstration wurde deshalb die Option »REMOVE« aktiviert. © Schierholz IT Modernisation GmbH Assembler nach COBOL
12
Location Counter und Speicheradressen
Einführung Einfache Muster Komplexe Muster Synopsis Kommentare Adressierung rel. Sprünge Code-Moleküle Location Counter und Speicheradressen INREC DS 0CL80 INZIP DS CL5 DS C INREQID DS CL requesting authority INPRI DS C ORG INREC+L'INREC Das Längenattribut »0« in »0CL80« wird in ein »FILLER REDEFINES« umgeformt. Hier wird der ORG-Befehl dazu benutzt, eine „Lücke“ im Speicher zu definieren. Der Assembler berechnet ihre Länge automatisch. A2C übernimmt diese Berechnung und generiert einen entsprechenden »FILLER«. 01 INREC PIC X(80). 01 FILLER REDEFINES INREC. 02 INZIP PIC X(5). 02 FILLER PIC X. 02 INREQID PIC X(4). 02 INPRI PIC X. 02 FILLER PIC X(68). © Schierholz IT Modernisation GmbH Assembler nach COBOL
13
Ein relativer Sprung Der »BL *+14« überspringt den »AP« und den »BAL«.
Einführung Einfache Muster Komplexe Muster Synopsis Kommentare Adressierung rel. Sprünge Code-Moleküle Ein relativer Sprung CP LINECNT,=P'50' max 50 lines here BL * no header to be printed AP PAGECNT,=P'1' BAL R14,PRTHDR print header line(s) MVI INERR,X'00' reset indicator Der »BL *+14« überspringt den »AP« und den »BAL«. Auf der COBOL Seite finden wir ein bedingtes »GO TO« zu einem künstlich erzeugten Label (»Demo-BT0«). NB: Das Präfix, hier »Demo-« ist selbstverständlich frei wählbar! EVALUATE TRUE WHEN LINECNT < 50 GO TO Demo-BT0 END-EVALUATE ADD 1 TO PAGECNT PERFORM PRTHDR. Demo-BT0. © Schierholz IT Modernisation GmbH Assembler nach COBOL
14
Einführung Einfache Muster Komplexe Muster Synopsis
Kommentare Adressierung rel. Sprünge Code-Moleküle Code-Moleküle Wenn mehrere Assembler Befehle in ihrem Zusammenwirken eine abgegrenzte Bedeutung haben, bezeichnen wir das als „Code Moleküle“ Die Mustererkennung von A2C kennt eine Vielzahl solcher Moleküle und aktiviert die entsprechenden Regeln zur Transformation Die Ablösung erfolgt oft mit nur einem einzigen COBOL Befehl oder eleganten COBOL Konstrukten Häufig vorkommende Moleküle sind Selbstmodifizierender Code, vielfach eine sog. B/NOP-Weiche UNPK mit nachfolgender Vorzeichen Korrektur durch OI MVI / MVC zur Initialisierung eines Feldes auf ein bestimmtes Zeichen Der EX-Befehl mit dem zugehörigen auszuführenden Statement ED / EDMK zur Formatierung numerischer Felder. Hier erzeugt A2C in Abhängigkeit von den Masken unterschiedliche Redefinitionen © Schierholz IT Modernisation GmbH Assembler nach COBOL
15
Einführung Einfache Muster Komplexe Muster Synopsis
Kommentare Adressierung rel. Sprünge Code-Moleküle Beispiel B/NOP MAIN NOP PASS MVI MAIN+1,X'F0' next time no file OPEN A2C löst dieses Molekül durch einen Schalter ab, der anstelle des »NOP« abgefragt wird. MAIN. IF SW-1-JUMP GO TO PASS01 END-IF SET SW-1-JUMP TO TRUE Die Definition des Schalters erfolgt automatisch in der WORKING STORAGE SECTION. 77 SW-1 PIC X VALUE 'N'. 88 SW-1-JUMP VALUE 'Y'. 88 SW-1-NO-JUMP VALUE 'N'. © Schierholz IT Modernisation GmbH Assembler nach COBOL
16
Moleküle UNPK/OI und Field Padding
Einführung Einfache Muster Komplexe Muster Synopsis Kommentare Adressierung rel. Sprünge Code-Moleküle Moleküle UNPK/OI und Field Padding UNPK HDR1PG,PAGECNT OI HDR1PG+L'HDR1PG-1,X'F0' UNPK/OI A2C generiert eine „character numeric“ Redefinition des »HDR1PG«. 02 HDR1PG-0ZL3 PIC 999. Danach kann das Molekül durch einen einfachen »MOVE« abgelöst werden. MOVE PAGECNT TO HDR1PG-0ZL3 MVI DETAUTH,C'?' MVC DETAUTH+1(L'DETAUTH-1),DETAUTH Field Padding Das sog. Field Padding wird durch einen einfachen »MOVE ALL« ersetzt. MOVE ALL '?' TO DETAUTH © Schierholz IT Modernisation GmbH Assembler nach COBOL
17
Molekül „EX“ Die Mustererkennung geht über den »PACK« bis zum »EX« .
Einführung Einfache Muster Komplexe Muster Synopsis Kommentare Adressierung rel. Sprünge Code-Moleküle Molekül „EX“ PACK DWD,INPRI CVB R2,DWD BCTR R2, EX R2,MVCSTAR Die Mustererkennung geht über den »PACK« bis zum »EX« . Zusätzlich geht der Zielbefehl (hier ein »MVC«) in die Mustererkennung ein. MVCSTAR MVC DETPRI(0),STARS Die Sequenz wird durch »MOVE« und ein »SUBTRACT« abgelöst. Die variable Länge, die der EX benutzt, transformiert A2C zu einem »MOVE« mit sog. „COBOL Reference Modifier”. MOVE INPRI-0ZL1 TO DWD-0PL8 MOVE DWD-0PL8 TO Demo-R2Lo-S SUBTRACT FROM Demo-R2Lo MOVE STARS TO DETPRI(1:(Demo-R2Lo + 1)) © Schierholz IT Modernisation GmbH Assembler nach COBOL
18
Nun genügt ein einfacher »MOVE« , um den ED abzulösen.
Einführung Einfache Muster Komplexe Muster Synopsis Kommentare Adressierung rel. Sprünge Code-Moleküle Molekül „ED/EDMK“ MVC DETINH,=X' B B202020' ED DETINH,DWD Das Muster, das hier in das Zielfeld des »ED« kopiert wird, dient als Vorlage für eine entsprechende COBOL Definition. 02 DETINH PIC BZZZ,Z99,999. Nun genügt ein einfacher »MOVE« , um den ED abzulösen. MOVE DWD-3PL5 TO DETINH. © Schierholz IT Modernisation GmbH Assembler nach COBOL
19
Komplexe Muster Transformation des Codes der OS Linkage Convention
Einführung Einfache Muster Komplexe Muster Synopsis Linkage Dateien Subroutinen Tabellen Komplexe Muster Transformation des Codes der OS Linkage Convention Dateien: Definition und Zugriffe Erkennen und Aufruf von Subroutinen (BAL/BAS) Transformation von Tabellendaten und -zugriffen © Schierholz IT Modernisation GmbH Assembler nach COBOL
20
Transformation OS Linkage Convention
Einführung Einfache Muster Komplexe Muster Synopsis Linkage Dateien Subroutinen Tabellen Transformation OS Linkage Convention SAVE (14,12) LR R12,R get base address USING A2CP2,R12 LA R2,SAVEAREA ST R2,8(R13) link to next SA ST R13,4(R2) link to prev SA LR R13,R Dies ist nur eines von sehr vielen Mustern und Varianten der Programminitialisierung. Der Code wird erkannt und vollständig entfernt! LA R15, L R13,4(R13) Caller's SA RETURN (14,12),RC=(15) Dies ist ein typisches Muster zum Setzen des Returncodes mit Rücksprung zum Caller. Hieraus entsteht folgender COBOL Code: MOVE 0 TO RETURN−CODE GOBACK. © Schierholz IT Modernisation GmbH Assembler nach COBOL
21
Einführung Einfache Muster Komplexe Muster Synopsis
Linkage Dateien Subroutinen Tabellen File Input und Output Das Assembler Programm enthält eine Eingabe- und eine Ausgabedatei. Folgerichtig müssen u.a. folgende Befehle transformiert werden: Anm.: Das Testprogramm ist für z/OS geschrieben. Selbstverständlich unterstützt A2C auch die Makros von z/VSE und BS2000 INFILE DCB BLKSIZE=80,LRECL=80,MACRF=GM,EODAD=INEND,DDNAME=INFILE, +14.5 DSORG=PS INEND DS 0H end of input file reached OUTLST DCB BLKSIZE=133,LRECL=133,MACRF=PM,RECFM=A,DDNAME=OUTLST, GET INFILE,INREC get first/next record PUT OUTLST,DETLINE OPEN (INFILE,(INPUT)) OPEN (OUTLST,(OUTPUT)) CLOSE (INFILE) CLOSE (OUTLST) © Schierholz IT Modernisation GmbH Assembler nach COBOL
22
Einführung Einfache Muster Komplexe Muster Synopsis
Linkage Dateien Subroutinen Tabellen Dateien in COBOL A2C transformiert den Assemblercode, der sich mit Files befasst, u.a. in folgende Statements: FILE-CONTROL. SELECT INFILE ASSIGN TO S-INFILE ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS INFILE-STATUS. . . . FD INFILE BLOCK CONTAINS 1 RECORDS RECORD CONTAINS 80 CHARACTERS RECORDING MODE IS F. 01 INFILE-RECORD PIC X(80). 77 INFILE-STATUS PIC XX. 77 OUTLST-STATUS PIC XX. OPEN INPUT INFILE OPEN OUTPUT OUTLST. READ INFILE RECORD INTO INREC AT END GO TO INEND END-READ Alle COBOL Statements zur Definition und zum Zugriff auf Dateien finden sich im COBOL Programm, das wie alles andere von A2C vollautomatisch erzeugt wurde. © Schierholz IT Modernisation GmbH Assembler nach COBOL
23
Einführung Einfache Muster Komplexe Muster Synopsis
Linkage Dateien Subroutinen Tabellen Subroutinen Eine Vielzahl von Mustern befasst sich mit der Erkennung und Verarbeitung von Subroutinen. Hier sehen wir einen Aufruf mit der BAL Instruktion Verwaltungsregister sind zu identifizieren Befehle zur Sicherung und zum Rückladen der Verwaltungsregister müssen erkannt werden. Die betreffenden Befehle und Datenbereiche werden gelöscht. Das Ende der Subroutine muss identifiziert werden, auch wenn die Subroutine mehrere Ausgänge hat. Die gesamte Subroutine wird in einen gemeinsamen Pool von Unterprogrammen verschoben, zu einer SECTION umgeformt und der BAL, bzw. BAS durch ein COBOL PERFORM ersetzt. © Schierholz IT Modernisation GmbH Assembler nach COBOL
24
Erkennen und Umformen von Subroutinen
Einführung Einfache Muster Komplexe Muster Synopsis Rel. Sprünge Subroutinen Tabellen Dateien Erkennen und Umformen von Subroutinen Der »BAL«-Aufruf wird zum »PERFORM«. Die gesamte Routine wird in den sog. „A2C Subroutine Pool” verschoben. BAL R14,PRTHDR print header line(s) 6.1 DS F PRTHDR DS 0H ST R14,* save R . . . L R14,PRTHDR BR R Am Ende werden nur noch 3 COBOL Befehle benötigt. Kunden neigen dazu, ihre eigenen Methoden für den Aufruf von Subroutinen zu haben. Es ist sehr einfach, A2C immer weitere Muster „beizubringen“. PERFORM PRTHDR. PRTHDR SECTION. PRTHDR-Start. © Schierholz IT Modernisation GmbH Assembler nach COBOL
25
Tabellen – eines der komplexesten Themen
Einführung Einfache Muster Komplexe Muster Synopsis Linkage Dateien Subroutinen Tabellen Tabellen – eines der komplexesten Themen Die Muster zur Erkennung von Tabellen und der zugehörigen Zugriffsmechanismen sind hoch komplex und nehmen einen eigenen Bereich im A2C Regelsatz ein. Die Erkennung ist parametrierbar, z. B. über Mindestanzahl Zeilen und Spalten Tabellen werden zu COBOL Tabellen umgeformt Definition aller Datenzeilen Redefinition der gesamten Tabelle über eine OCCURS Klausel Automatische Generierung von Tabellenindex und des Tabellenmaximums Zugriffsmechanismen werden erkannt Kopf-, fuß- oder zählergesteuerte Schleife programmiert mit BXH, BXLE, BCT oder als ordinäre Schleife mit Branch nach oben Registeradressierung von Zellen oder Zeilen wird in Zugriff über Index transformiert Ende-Abfrage auf Delimiter, z.B. X‘FF‘ wird umgesetzt. © Schierholz IT Modernisation GmbH Assembler nach COBOL
26
Das Ergebnis findet sich im COBOL Sourcecode ab Zeile 147 bzw. 178.
Einführung Einfache Muster Komplexe Muster Synopsis Linkage Dateien Subroutinen Tabellen Tabellen Die Tabellen AUTHTAB und CITYTAB (im Assember-Quelltext ab Zeile 149 bzw. 274) werden zu COBOL umgeformt. Das Ergebnis findet sich im COBOL Sourcecode ab Zeile 147 bzw. 178. GET010 DS 0H LA R3,AUTHTAB GETLOOP DS 0H CLI 0(R3),X'FF' BE GETNOTFD not found CLC INREQID,0(R3) BE GETFD match! LA R3,24(R3) B GETLOOP GETFD DS 0H MVC DETAUTH,4(R3) B GETEND GETNOTFD DS 0H MVI DETAUTH,C'?' MVC DETAUTH+1(L'DETAUTH-1),DETAUTH MVC DETAUTH(L'INREQID),INREQID AP ERRCNT,=P'1' MVI INERR,X'FF' GETEND BR R14 Dieser Zugriff auf »AUTHTAB« findet sich ab Zeile 166 im Assembler Quelltext. Wie A2C diese Logik vollautomatisch in COBOL konvertiert, sehen sie auf der nächsten Seite. © Schierholz IT Modernisation GmbH Assembler nach COBOL
27
Tabellen A2C hat u.a. den Tabellenindex
Einführung Einfache Muster Komplexe Muster Synopsis Linkage Dateien Subroutinen Tabellen Tabellen 01 FILLER REDEFINES AuthTbl. 02 AUTHTAB-ENTRY OCCURS 7 INDEXED BY AuthTbl-Index. 03 AuthTbl-ID PIC X(4). 03 AuthTbl-Name PIC X(20). A2C hat u.a. den Tabellenindex »AuthTbl-Index« und eine Redefinition der AUTHTAB erzeugt. GET010. SET AuthTbl-Index TO 1. GETLOOP. IF AuthTbl-Index > AuthTbl-Maximum GO TO GETNOTFD END-IF EVALUATE TRUE WHEN INREQID = AuthTbl-ID(AuthTbl-Index) GO TO GETFD END-EVALUATE SET AuthTbl-Index UP BY 1 GO TO GETLOOP. GETFD. MOVE AuthTbl-Name(AuthTbl-Index) TO DETAUTH GO TO GETEND. GETNOTFD. MOVE ALL '?' TO DETAUTH MOVE INREQID TO DETAUTH-0XL4 ADD TO ERRCNT MOVE HIGH-VALUE TO INERR. GETEND. A2C transformiert den Assembler-Tabellenzugriff (siehe vorige Seite) vollautomatisch in die nebenstehende COBOL Sequenz. © Schierholz IT Modernisation GmbH Assembler nach COBOL
28
Einführung Einfache Muster Komplexe Muster Synopsis
Das Produkt TRAVERT®.A2C ist in der Lage, Mainframe-Assemblerprogramme vollautomatisch in sofort lauffähige COBOL- Programme zu transformieren. Wie das funktioniert, wie man Assembler-Konvertierungsprojekte durchführt und was es dabei zu beachten gilt, erläutern wir Ihnen gerne persönlich unter Weitere Informationen zu unseren Produkten und Leistungen finden Sie unter Oder schicken Sie eine an © Schierholz IT Modernisation GmbH Assembler nach COBOL
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.