Sybase APT to PowerBuilder Conversion
I just completed a migration project. TXL from http://www.txl.ca the wonderful Source Code Transformation tool played a major role in my effort.
Source Platform:
OS - SUN Solaris
RDBMS - Sybase 11
Forms - Sybase APT - CUI vt220 toolset
Reports 4GL - DWB (also known as RWB)
Reports 3GL - DBLIBRARY/C
Target Platform:
OS - Windows
RDBMS - MS SQLServer
Forms - PowerBuilder
Reports 4GL - PowerBuilder
Reports 3GL - DBLIBRARY/C
Background: This was a poorly maintained application and it took me a lot of time to identify the active from the inert objects. I chose Microsoft SQL server as it was closest to Sybase. The best reference on this is
http://www.anylex.com/ from AnyLex/Ellipsys is the only tool I could locate that Sybase Migration but it does not do RDBMS, RWB, DBLibrary - only APT and that too Groups are not made into DataWindows. However I could guess that they must have used lex and yacc and this led me to study a lot of parsers. After 2 months of evaluation I decided on TXL. I visited and studied all the web sites like ANTLR, Javacc, JFlex but had no neat solution for tree transformation and unparsing. Until I finally hit TXL.
TXL is the best possible tool for source code transformation. Prof. Jim Cordy - the driving force behind this tool was very kind and took me through his lessons.
SybAPT.Grm & SybaseSQL.grm are 2 grammar files used in APT2PB.txl to change Sybase APT fpls to Powerscript. fpl is a APT code snippet. I wrote some code to merge all fpls into 1 file. Then using napt2pb.bat I converted fpls to Powerscript. I did some manual visual inspection of all else and moved comments "near" else out. The reason is TXL version used did not preserve comments. But comments are the very heart of software! So I used a simple gawk trick to convert existing comments including nested comments etc to APT print statements. This was later edited back to PowerBuilder comments. http://unxutils.sourceforge.net/ has gawk.exe.
ppljobreg_1.fpls.txt is a sample input and ppljobreg_1.pb7s.txt is sample output. Without TXL I would be dead!
I used sql.txl as a Sybase SQL pretty printer! This too was very useful to understand and debug Sybase SQLs. Some very huge ugly SQLs esp. in DB/Library/C looked extraordinarily beautiful by simply passing through TXL.
The grammar is NOT my sole effort. there are a few public flex, antlr, javacc samples that I read and used. I got a good vanilla SQL grammar from http://examples.oreilly.com/lex/ By John Levine, Tony Mason, Doug Brown ( http://www.oreilly.com/catalog/lex/ )
I translated to TXL and then modified to suit Sybase 11. I have added APT grammar & PowerBuilder grammar - bare bones.
Good enough for my project.
frm2srw.bat uses frm2srw.awk.txt to convert a Sybase frm to PB7 srw. But I changed all Groups to Datawindow Grids manually. Thereafter I plugged in the TXL output into PB7 events. The resultant software is maintainable and looks neat and almost original! No sense in doing transformation that is not maintainable. 99% of the APT forms used non-nested Groups. The rare nested groups I did by 2 coordinated PB7 datawindows.
SybRepSQL.sql & SybRep2PB.sql were used to create Powerscripts from Sybase DWB/RWB reports. This plugged into a template RWTMPLT.txt to migrate Sybase Reports.
dsyb2ms.bat & dblib.awk.txt were used to do 99% of the edits to make Sybase DB library C Microsoft compliant.
All
files mentioned are available in http://geocities.datacellar.net/ojnc
in SybAPT2MSSPB7.zip
The above is a brief summary of months of labour in this project. I did a similar job of migrating VAX/RDB/RALLY to Unix/Oracle/D2K but then I did my own transformations using VB6 & regexp. Subsequently I did a Oracle ProC to PL/SQL converter in Java & regexp. But my earlier efforts were at best heuristic. I did a lot of tricks to transform deeply nested while/if/else/for and it worked. But having tasted TXL I know this to be nearly flawless. My homegrown regexp methods always preserved comments. In TXL I used pre and post gawk scripts to preserve comments.
I have decided to "move my cheese". Now I am 100% into ERP esp. SAP but I do Oracle ERP infrastructure as well because of my strong Oracle D2K background. SAP is of course the best ever! SAP as me totally captivated. From ABAP, ABAP Objects, CCMS, CTMS, WorkFlow etc. SAP ERP is an amazing marvel of software engineering.
I would strongly recommend TXL from http://www.txl.ca to anyone contemplating migrations. No other tool does tree transformation and unparsing as an integral part.
But you need to use gawk or Perl or any such tool to supplement and complement. 70-80% effort will be tool based. 20% to 30% should be hard work if you are serious of creating a robust application that is maintainable and is truly infused with a new lease of life.
Sybase to Microsoft SQLServer traps besides http://www.sql-server-performance.com/sg_from_sybase_to_sql_server.asp