Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Assembler nach COBOL Die vollautomatische Transformation mit TRAVERT®.A2C erläutert am Beispiel eines vollständigen, ablauffähigen Assemblerprogramms ©

Ähnliche Präsentationen


Präsentation zum Thema: "Assembler nach COBOL Die vollautomatische Transformation mit TRAVERT®.A2C erläutert am Beispiel eines vollständigen, ablauffähigen Assemblerprogramms ©"—  Präsentation transkript:

1 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 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 Einführung Einfache Muster Komplexe Muster Synopsis © Schierholz IT Modernisation GmbHAssembler nach COBOL

3 Das Unternehmen Einführung Einfache Muster Komplexe Muster SynopsisUnternehmen Produkte Testprogramm © Schierholz IT Modernisation GmbHAssembler nach COBOL 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

4 Produkte Einführung Einfache Muster Komplexe Muster SynopsisUnternehmen Produkte Testprogramm © Schierholz IT Modernisation GmbHAssembler nach COBOL 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

5 Diese Präsentation... Einführung Einfache Muster Komplexe Muster SynopsisUnternehmen Produkte Testprogramm © Schierholz IT Modernisation GmbHAssembler nach COBOL... 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.

6 Das Testprogramm A2CP2 Einführung Einfache Muster Komplexe Muster SynopsisUnternehmen Produkte Testprogramm © Schierholz IT Modernisation GmbHAssembler nach COBOL Eingabe: ZIP (PLZ), requestor ID, priority Ausgabe: Liste AUTHTAB ID, authority name CITYTAB ZIP, city name, inhabitants A2CP2 prüft und vervollständigt Eingabesätze benutzt zwei interne Tabellen

7 Einfachere Muster Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL Umgang mit Kommentaren Speicherdefinitionen Relative Sprünge Transformation von sog. Code Molekülen

8 Verlagern der Programmbeschreibung Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL *********************************************************************** 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 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 *********************************************************************** Per Default interpretiert A2C den ersten größeren Block von Ganzzeilenkommentaren als Programmbeschreibung. Dieser Kommentarblock wird an den Anfang des COBOL Programms gestellt.

9 Einfügen der Transformation History Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL * * * 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 * * A2C generiert einige Informationen über das Programm und die Transformation direkt hinter die Programmbeschreibung.

10 Überschriftsblöcke Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL *********************************************************************** 8.2 * Print final statistics *********************************************************************** PRTS14 DC F'-1' PRTSTATS DS 0H *********************************************************************** * Print final statistics *********************************************************************** PRTSTATS SECTION. PRTSTATS-Start. Die Mustererkennung hat PRTSTATS und andere als Subroutinen identifiziert. So kann der über » PRTS14 « liegende Kommentarblock an den Beginn der COBOL Subroutine verschoben werden.

11 Umgang mit Inline Kommentaren Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL 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.

12 Location Counter und Speicheradressen Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL INREC DS 0CL80 INZIP DS CL5 DS C INREQID DS CL4 requesting authority DS C INPRI DS C ORG INREC+L'INREC 3 01 INREC PIC X(80). 01 FILLER REDEFINES INREC. 02 INZIP PIC X(5). 02 FILLER PIC X. 02 INREQID PIC X(4). 02 FILLER PIC X. 02 INPRI PIC X. 02 FILLER PIC X(68). 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 «. Das Längenattribut »0« »0« in » 0CL80 « wird in ein » FILLER REDEFINES « umgeformt.

13 Ein relativer Sprung Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL CP LINECNT,=P'50' max 50 lines here BL *+14 no header to be printed 5.1 AP PAGECNT,=P'1' BAL R14,PRTHDR print header line(s) 6.1 MVI INERR,X'00' reset indicator 5.2 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.

14 Code-Moleküle Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL 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

15 Beispiel B/NOP Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL MAIN NOP PASS MVI MAIN+1,X'F0' next time no file OPEN 4.2 MAIN. IF SW-1-JUMP GO TO PASS01 END-IF SET SW-1-JUMP TO TRUE A2C löst dieses Molekül durch einen Schalter ab, der anstelle des » NOP « abgefragt wird. 77 SW-1 PIC X VALUE 'N'. 88 SW-1-JUMP VALUE 'Y'. 88 SW-1-NO-JUMP VALUE 'N'. Die Definition des Schalters erfolgt automatisch in der WORKING STORAGE SECTION.

16 Moleküle UNPK/OI und Field Padding Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL 02 HDR1PG-0ZL3 PIC 999. A2C generiert eine „character numeric“ Redefinition des » HDR1PG «. MOVE PAGECNT TO HDR1PG-0ZL3 Danach kann das Molekül durch einen einfachen » MOVE « abgelöst werden. MOVE ALL '?' TO DETAUTH Das sog. Field Padding wird durch einen einfachen » MOVE ALL « ersetzt. UNPK HDR1PG,PAGECNT 9.1 OI HDR1PG+L'HDR1PG-1,X'F0' 9.2 UNPK/OI MVI DETAUTH,C'?' 17.1 MVC DETAUTH+1(L'DETAUTH-1),DETAUTH 17.2 Field Padding

17 Molekül „EX“ Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL PACK DWD,INPRI 10.4 CVB R2,DWD BCTR R2, EX R2,MVCSTAR 10.1 Die Mustererkennung geht über den » PACK « bis zum » EX «. Zusätzlich geht der Zielbefehl (hier ein » MVC «) in die Mustererkennung ein. MOVE INPRI-0ZL1 TO DWD-0PL8 MOVE DWD-0PL8 TO Demo-R2Lo-S SUBTRACT 1 FROM Demo-R2Lo MOVE STARS TO DETPRI(1:(Demo-R2Lo + 1)) 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”. MVCSTAR MVC DETPRI(0),STARS 10.2

18 Molekül „ED/EDMK“ Einführung Einfache Muster Komplexe Muster SynopsisKommentare Adressierung rel. Sprünge Code-Moleküle © Schierholz IT Modernisation GmbHAssembler nach COBOL MVC DETINH,=X' B B202020' 11.2 ED DETINH,DWD Das Muster, das hier in das Zielfeld des » ED « kopiert wird, dient als Vorlage für eine entsprechende COBOL Definition. MOVE DWD-3PL5 TO DETINH. Nun genügt ein einfacher » MOVE «, um den ED abzulösen. 02 DETINH PIC BZZZ,Z99,999.

19 Komplexe Muster Einführung Einfache Muster Komplexe Muster SynopsisLinkage Dateien Subroutinen Tabellen © Schierholz IT Modernisation GmbHAssembler nach COBOL Transformation des Codes der OS Linkage Convention Dateien: Definition und Zugriffe Erkennen und Aufruf von Subroutinen (BAL/BAS) Transformation von Tabellendaten und -zugriffen

20 Transformation OS Linkage Convention Einführung Einfache Muster Komplexe Muster SynopsisLinkage Dateien Subroutinen Tabellen © Schierholz IT Modernisation GmbHAssembler nach COBOL SAVE (14,12) 2.1 LR R12,R15 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,R2 2.2 LA R15,0 2.3 L R13,4(R13) Caller's SA RETURN (14,12),RC=(15) 2.4 MOVE 0 TO RETURN−CODE GOBACK. Dies ist nur eines von sehr vielen Mustern und Varianten der Programminitialisierung. Der Code wird erkannt und vollständig entfernt! Dies ist ein typisches Muster zum Setzen des Returncodes mit Rücksprung zum Caller. Hieraus entsteht folgender COBOL Code:

21 File Input und Output Einführung Einfache Muster Komplexe Muster SynopsisLinkage Dateien Subroutinen Tabellen © Schierholz IT Modernisation GmbHAssembler nach COBOL 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, DSORG=PS INEND DS 0H end of input file reached 14.3 OUTLST DCB BLKSIZE=133,LRECL=133,MACRF=PM,RECFM=A,DDNAME=OUTLST, DSORG=PS GET INFILE,INREC get first/next record 14.2 PUT OUTLST,DETLINE 15.3 OPEN (INFILE,(INPUT)) 14.1 OPEN (OUTLST,(OUTPUT)) 15.1 CLOSE (INFILE) 14.4 CLOSE (OUTLST) 15.2

22 Dateien in COBOL Einführung Einfache Muster Komplexe Muster SynopsisLinkage Dateien Subroutinen Tabellen © Schierholz IT Modernisation GmbHAssembler nach 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) 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.

23 Subroutinen Einführung Einfache Muster Komplexe Muster SynopsisLinkage Dateien Subroutinen Tabellen © Schierholz IT Modernisation GmbHAssembler nach COBOL 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.

24 Erkennen und Umformen von Subroutinen Einführung Einfache Muster Komplexe Muster SynopsisRel. Sprünge Subroutinen Tabellen Dateien © Schierholz IT Modernisation GmbHAssembler nach COBOL BAL R14,PRTHDR print header line(s) 6.1 DS F PRTHDR DS 0H ST R14,*-4 save R L R14,PRTHDR BR R Der » BAL «- Aufruf wird zum » PERFORM «. Die gesamte Routine wird in den sog. „A2C Subroutine Pool” verschoben. Am Ende werden nur noch 3 COBOL Befehle benötigt. PERFORM PRTHDR. PRTHDR SECTION. PRTHDR-Start. Kunden neigen dazu, ihre eigenen Methoden für den Aufruf von Subroutinen zu haben. Es ist sehr einfach, A2C immer weitere Muster „beizubringen“.

25 Tabellen – eines der komplexesten Themen Einführung Einfache Muster Komplexe Muster SynopsisLinkage Dateien Subroutinen Tabellen © Schierholz IT Modernisation GmbHAssembler nach COBOL 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.

26 Tabellen Einführung Einfache Muster Komplexe Muster SynopsisLinkage Dateien Subroutinen Tabellen © Schierholz IT Modernisation GmbHAssembler nach COBOL 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 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 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.

27 Tabellen Einführung Einfache Muster Komplexe Muster SynopsisLinkage Dateien Subroutinen Tabellen © Schierholz IT Modernisation GmbHAssembler nach COBOL 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 1 TO ERRCNT MOVE HIGH-VALUE TO INERR. GETEND. 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. A2C transformiert den Assembler-Tabellenzugriff (siehe vorige Seite) vollautomatisch in die nebenstehende COBOL Sequenz.

28 Synopsis Einführung Einfache Muster Komplexe Muster Synopsis © Schierholz IT Modernisation GmbHAssembler nach COBOL 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


Herunterladen ppt "Assembler nach COBOL Die vollautomatische Transformation mit TRAVERT®.A2C erläutert am Beispiel eines vollständigen, ablauffähigen Assemblerprogramms ©"

Ähnliche Präsentationen


Google-Anzeigen