Tools to Make Your HP COBOL Applications Migration ... - OpenMPE
Tools to Make Your HP COBOL Applications Migration ... - OpenMPE
Tools to Make Your HP COBOL Applications Migration ... - OpenMPE
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Tools</strong> <strong>to</strong> <strong>Make</strong> <strong>Your</strong> <strong>HP</strong><br />
<strong>COBOL</strong> <strong>Applications</strong><br />
<strong>Migration</strong> Easy<br />
Nicolas Fortin<br />
Product Marketing Manager<br />
Speedware Corp.
Overview<br />
Breaking down the 3GL migration challenge
<strong>HP</strong> <strong>COBOL</strong><br />
• About <strong>HP</strong> <strong>COBOL</strong><br />
− An implementation of ANSII standard <strong>COBOL</strong>, with a few<br />
differences and extensions.<br />
• Why you may need a migration <strong>to</strong>ol<br />
− <strong>HP</strong> <strong>COBOL</strong> compiler does not exist on other platforms<br />
− Technologies referred <strong>to</strong> by the code do not exist on other<br />
platforms<br />
− Concepts are different on other platforms<br />
− Significant amount of code and concepts need <strong>to</strong> be<br />
adapted<br />
− Major investment of time and resources
Challenges of <strong>HP</strong> <strong>COBOL</strong> <strong>Migration</strong><br />
• Issues exist in 4 areas: code, database, OS and<br />
user interface<br />
− Compiler-specific code<br />
• Syntax and MPE extensions<br />
− Platform-specific code<br />
• Database and MPE intrinsics<br />
− MPE concepts references<br />
• JCL, Message files, file equations, CIERROR, JCW, etc.<br />
− User interface / VPLUS replacement<br />
• Database migration<br />
<strong>HP</strong> e3000 3GL applications are<br />
proprietary <strong>to</strong> MPE/iX
Understanding <strong>HP</strong> <strong>COBOL</strong><br />
• How does <strong>HP</strong> Cobol differ from ANSI Cobol and<br />
other compilers? Examples:<br />
− Syntax and compiler directives<br />
• e.g. comma, dot, semicolon, “”, etc.<br />
• e.g. $PAGE, $TITLE, $EDIT, $DEFINE,<br />
$COMMENT, $CONTROL QUOTE, $CONTROL<br />
LIST, $INCLUDE<br />
− <strong>HP</strong>-specific extensions<br />
• ACCEPT MY-DATA FREE ON INPUT ERROR<br />
• CALL...GIVING<br />
• MOVE %33 TO MY VALUE
Understanding <strong>HP</strong> <strong>COBOL</strong><br />
• How does <strong>HP</strong> Cobol differ from ANSI Cobol?<br />
− <strong>HP</strong>-specific concepts<br />
• e.g. MOVE "!JOB J123, MANAGER.SYS“ TO<br />
OUT-REC<br />
• e.g. MOVE "FILE MYFILE;DEV=LP" TO<br />
COMMAND-BUF<br />
• e.g. Checking CIERROR or return status<br />
• e.g. Passing PARM and INFO on RUN command<br />
• e.g. Specifying an entry point<br />
− Reserved Words (<strong>HP</strong> or other compilers)<br />
• e.g. DIVIDE-BY-ZERO, BEGINNING, COMMON,<br />
DISABLE, ENABLE, ENDING, FILE-LIMITS,<br />
MORE-LABELS, PROCESSING, WINDOW
User interface<br />
• Areas that need attention<br />
− Direct terminal I/O<br />
• Differences between <strong>HP</strong> <strong>COBOL</strong> and other compilers in the way<br />
information is displayed<br />
• Escape sequences and control characters<br />
− VPLUS forms<br />
• Do not exist on other platforms<br />
• Covered in “User Interface” presentation
Database / File interface<br />
• Areas that need attention<br />
− Database<br />
• TurboImage: Does not exist on other platforms<br />
−TurboImage is accessed with <strong>HP</strong> Image<br />
intrinsics (lots of them)<br />
−Code is very specific <strong>to</strong> Image methodology<br />
−Usually, the intrinsics are intertwined in the<br />
application<br />
• Image/SQL: Does not exist on other platforms<br />
• Allbase/SQL: <strong>HP</strong>UX support ends in Dec 2006.<br />
• Omnidex/Superdex<br />
− File system<br />
• File naming (FILE.GROUP.ACCT)<br />
• Cobol statements or intrinsics<br />
−Cobol statements: OPEN,READ,WRITE<br />
−Intrinsics: FOPEN, FREAD, FWRITE, etc.<br />
• MPE file access: Sequential, Message, Circular,<br />
Temporary, RIO, Byte-Stream<br />
• KSAM files<br />
−Accessed using Cobol statements, Fxxxx or<br />
CKxxxx intrinsics
How it works <strong>to</strong>day<br />
<strong>HP</strong> e3000
Image Look-alike Option<br />
<strong>HP</strong>-UX / Windows / Linux
Image intrinsics mapping Option<br />
<strong>HP</strong>-UX / Windows / Linux<br />
<br />
<br />
<br />
“mapping” software library<br />
<br />
#$ #%&'<br />
!" #
Redesign Option<br />
<strong>HP</strong>-UX / Windows / Linux<br />
<br />
<br />
Embedded SQL Statements<br />
<br />
#$ #%<br />
!" #
OS interface<br />
• Areas that need attention<br />
− Calls <strong>to</strong> MPE system intrinsics and surround code (return-status<br />
check)<br />
− Execution of OS Commands<br />
− File equations<br />
− MPE-specific networking<br />
− UDC and command file utilization<br />
− JCL code<br />
− System variables and JCWs<br />
− Interaction with spoolers<br />
− Interaction with jobs<br />
− Interaction with forms<br />
− Interaction with hardware devices
<strong>HP</strong> <strong>COBOL</strong> specifics<br />
• Areas that need attention<br />
− Cobol Concepts<br />
• Copylibs<br />
−KSAM files need <strong>to</strong> be migrated<br />
−Concept is done differently with other<br />
compilers<br />
• $INCLUDE is done differently<br />
• CIERROR and intrinsics return status<br />
• Macro expansion does not exist with other<br />
compilers<br />
• SORT files<br />
• Sharing file IDs (FDs as Intrinsic<br />
parameters)
SUMMARY: So what is required?<br />
• Solutions for<br />
− <strong>HP</strong> <strong>COBOL</strong> code conversion for new compiler<br />
− MPE-specific concepts<br />
− Database and file migration<br />
− Terminal interface (Direct I/O and VPLUS)<br />
− Additional challenges<br />
• External utilities replacement<br />
• Job files and command files<br />
• Inter-application or inter-system communication<br />
• Use of ODBC, ADO or JDBC by PC apps
<strong>HP</strong> <strong>COBOL</strong> replacement<br />
Compilers
<strong>COBOL</strong> Compiler Options<br />
• Acu<strong>COBOL</strong>-GT<br />
− Acu<strong>COBOL</strong>-GT runtime (UNIX, Windows)<br />
− AcuBench
<strong>COBOL</strong> Compiler Options<br />
• MicroFocus<br />
− NET EXPRESS (Windows)<br />
− SERVER EXPRESS (UNIX)
Cobol Compilers summary<br />
• Microfocus’ Server or Net Express<br />
− Largest market share<br />
− Priced on no. dev and users<br />
− Compiles in<strong>to</strong> native code<br />
− Offers screen equivalent for GUI forms<br />
− Requires a lot of code changes<br />
− Supported by <strong>COBOL</strong> <strong>Migration</strong> solutions<br />
• AcuCorp’s AcuCobol-GT<br />
− Very popular in the <strong>HP</strong> e3000 community<br />
− Priced on no. dev and users<br />
− Compiles in<strong>to</strong> OS independent object code and native code<br />
− Runs on the <strong>HP</strong> 3000!<br />
− Offers GUI and SQL interfaces<br />
− Require very little syntax changes with MPE switch compatibility<br />
− Supported by <strong>COBOL</strong> <strong>Migration</strong> solutions<br />
• Fujitsu’s NetCobol<br />
− Not as well known but proven<br />
− No run-time fees<br />
− Most .Net enabled<br />
− Compiles in<strong>to</strong> native code for .Net<br />
− No popular migration <strong>to</strong>ol support (sweet3000 not offered anymore)<br />
• Legacy J’s PerCobol<br />
− Not very popular; not marketed in the 3000 community<br />
− Compiles in<strong>to</strong> Java byte code. Offers GUI interface.<br />
− No migration <strong>to</strong>ol support except for ViewJ for VPLUS
<strong>Migration</strong> Solutions
Possible <strong>Migration</strong> Solutions<br />
• Manual conversion<br />
• Speedware’s AMXW<br />
• Ordina-Denkart’s ViaNova 3000<br />
• Transoft<br />
• others
Manual approach<br />
• Migrate your databases and files<br />
• Convert <strong>HP</strong> <strong>COBOL</strong> code syntax <strong>to</strong> work with new<br />
compiler<br />
• Convert all that is MPE-specific <strong>to</strong> platform-native<br />
equivalents<br />
• Terminal interface (Direct I/O and VPLUS)<br />
• Additional challenges<br />
• External utilities replacement<br />
• Job files and command files<br />
• Inter-application or inter-system communication<br />
• Use of ODBC, ADO or JDBC by PC apps<br />
• etc.
The AMXW Solution<br />
• Adapts the code<br />
− <strong>to</strong> a new compiler<br />
− <strong>to</strong> run in the new environment<br />
• Maps MPE-specifics <strong>to</strong> platform-native equivalents<br />
− Supports MPE intrinsics<br />
− Supports database and file intrinsics<br />
− Supports MPE commands with an MPE shell<br />
− Uses mapping technology; not an emula<strong>to</strong>r<br />
• Migrates databases and files<br />
• Handles user interface including VPLUS<br />
replacement solutions
Product Overview<br />
• Migrates applications written in many 3GLs <strong>to</strong> Unix<br />
or Windows<br />
− <strong>HP</strong> <strong>COBOL</strong> <strong>to</strong> MicroFocus or Acu<strong>COBOL</strong>-GT<br />
− Fortran 77 <strong>to</strong> Fortran 77<br />
− Pascal <strong>to</strong> Pascal<br />
− C <strong>to</strong> C<br />
− SPL <strong>to</strong> C<br />
• Solves most challenges involved in a migration process<br />
• Flexible purchasing model: Use the <strong>to</strong>ol yourself or<br />
outsource the project or a combination of both<br />
• Cost-effective solution which yields quick results and fast<br />
Return-On-Investment (ROI)<br />
• Proven for 12 years; used by high-profile companies
AMXW Client on Windows
Business Benefits of AMXW<br />
• Gets you up and running – fast!<br />
• Quick and cost-effective<br />
• Reduces the risk of error<br />
• Minimizes tedious manual conversion<br />
• Offers flexible approach<br />
− Purchase and migrate yourself<br />
− Outsource project<br />
− A combination of both: in-house & outsourcing
Technical Benefits of AMXW<br />
• Au<strong>to</strong>mates code conversion for the new compiler<br />
and environment<br />
• Migrates millions of lines of code in a day<br />
• Supports the most popular MPE intrinsics and<br />
commands<br />
• Maintains application performance and business<br />
continuity<br />
• Enables gradual conversion of MPE-specifics <strong>to</strong><br />
explicit native equivalents
Solution <strong>to</strong> Intrinsics<br />
• Developed most commonly used intrinsics (system calls)*<br />
− IMAGE (Dbbegin, Dbclose, Dbdelete, Dbend, Dberror, Dbexplain, Dbfind, Dbget,<br />
Dbinfo, Dblock, Dbopen, Dbput, Dbunlock, Dbupdate, Dbxbegin,…)<br />
− KSAM (Ckclose, Ckdelete, Ckerror, Cklock, Ckopen, Ckopenshr, Ckread,<br />
Ckreadbykey, Ckrewrite, Ckstart, Ckunlock, Ckwrite,…)<br />
− FILES (Fcheck, Fclose, Fcontrol, Fdelete, Ferrmsg, Ffileinfo, Fgetinfo, Flock,<br />
Fopen, Fpoint, Fread, Freadbackward, Freaddir, Freadlabel, Freadseek, Frename,<br />
Fsetmode, Fspace, Funlock, Fupdate, Fwrite, Fwritedir, Fwritelabel, Genmessage,<br />
Iodontwait, Iowait, Print, Printfileinfo, Read, Readx,…)<br />
− PROCESS (Activate, Create, Createprocess, Father, Getprocid, Getprocinfo, Kill,<br />
Quit, Suspend, Terminate,…)<br />
− COMMANDS (Command, Hpcicommand, Mycommand,…)<br />
* Sample listing only – several more intrinsics are available.
Intrinsics case study<br />
3<br />
GETDSEG<br />
2<br />
FERRMSG<br />
50<br />
FWRITEDIR<br />
319<br />
FCONTROL<br />
909<br />
FWRITE<br />
900<br />
FCLOSE<br />
14<br />
FUPDATE<br />
498<br />
FCHECK<br />
38<br />
FUNLOCK<br />
3<br />
DMOVOUT<br />
126<br />
WHO<br />
0<br />
FSPACE<br />
4<br />
DMOVIN<br />
1<br />
SETJCW<br />
14<br />
FSETMODE<br />
1<br />
DEBUG<br />
10<br />
QUIT<br />
18<br />
FREMOVE<br />
462<br />
DATELINE<br />
21<br />
PUTJCW<br />
85<br />
FREADDIR<br />
48<br />
DASCII<br />
13<br />
PROCINFO<br />
8<br />
FREADBYKEY<br />
1<br />
CTRANSLATE<br />
10<br />
PRINTFILEINFO<br />
644<br />
FREAD<br />
6<br />
CREATEPROCESS<br />
8<br />
KILL<br />
499<br />
FPOINT<br />
1<br />
CREATE<br />
1<br />
JOBINFO<br />
745<br />
FOPEN<br />
170<br />
COMMAND<br />
1<br />
<strong>HP</strong>FOPEN<br />
39<br />
FLOCK<br />
2<br />
CLOCK<br />
33<br />
<strong>HP</strong>CIGETVAR<br />
3<br />
FLABELINFO<br />
2<br />
CALENDAR<br />
3<br />
PCIDELETEVAR<br />
6<br />
FINDJCW<br />
2<br />
BINARY<br />
2<br />
<strong>HP</strong>CICOMMAND<br />
43<br />
FGETINFO<br />
106<br />
ASCII<br />
12<br />
GETINFO<br />
100<br />
FFILEINFO<br />
6<br />
ACTIVATE<br />
No.<br />
Name<br />
No.<br />
Name<br />
No.<br />
Name<br />
MPE system intrinsics calls
Solution <strong>to</strong> MPE Concepts<br />
• Developed Command Interpreter (CI) commands* using<br />
most common parameters<br />
− FILES (Build, File, Listf, Listftemp, Purge, Rename, Reset, Save,…)<br />
− PROCESS (Run,…)<br />
− BATCH/SESSIONS (Stream, Job, Showjob,…)<br />
− ENVIRONMENT (Input, Setjcw, Setvar,Listf, Listftemp, Purge, Rename, Reset,<br />
Save,Showjcw, <strong>HP</strong> variables and JCWs,…)<br />
− CI / UDCS (MPE and target OS CommandFiles, Continue, Else, Endif, Eod, Eoj,<br />
Help, If, Recall, Reply, Showcatalog, Tellop,…)<br />
− OTHERS (Comment, Listacct, Listgroup,…)<br />
* Sample listing only – several more MPE concepts are available.
AMXW Architecture<br />
AMXW Client on Windows (optional)<br />
Source Platform<br />
Target Platform<br />
<strong>HP</strong> e3000 MPE and MPE/iX<br />
DBMS: Image, TurboImage,<br />
Allbase, KSAM and flat files<br />
Windows, UNIX, Linux<br />
DBMS: Oracle, Eloquence, SQL<br />
Server, Informix, Sybase, Ingres,<br />
DB2, MySQL
AMXW <strong>Migration</strong> Process<br />
• Collect code source files, copy libraries, databases and files<br />
on the <strong>HP</strong> e3000<br />
• Migrate databases and files using AMXW or DBmotion<br />
• Import source files and copy libraries in AMXW client<br />
(optional)<br />
• Migrate the application<br />
− Converts your code so that it works with your new compiler in your<br />
new environment<br />
• Run the application<br />
− Uses database and OS intrinsics library<br />
− Uses MPE shell<br />
− Supports new user interface including VPLUS replacement<br />
technologies
The ViaNova 3000 solution<br />
(Ordina-Denkart)<br />
• Code conversion<br />
− MicroFocus: Adapts code <strong>to</strong> work with MicroFocus compiler<br />
• Cross-compiler outsource-based service required<br />
− Acu<strong>COBOL</strong>: Uses the Acu<strong>COBOL</strong>-GT MPE switch and MPUX<br />
emula<strong>to</strong>r<br />
• Cross-compiler outsource-based service not required<br />
• Not all <strong>HP</strong> <strong>COBOL</strong> code specifics handled; some manual work required<br />
− Supports MPE intrinsics<br />
− Supports file intrinsics<br />
− Supports Database intrinsics through ORDAT’s ti2SQL<br />
− Supports MPE commands with their MPE emula<strong>to</strong>r (MPUX)<br />
• Migrates databases and files (mix of ViaNova and ORDAT)<br />
• Replaces VPLUS using their edWin/3k product
ViaNova 3000 - Solution overview<br />
• Migrates applications written in many 3GLs <strong>to</strong> Unix or<br />
Windows<br />
− <strong>HP</strong> <strong>COBOL</strong> <strong>to</strong> MicroFocus (cross-compiler) or Acu<strong>COBOL</strong>-GT<br />
− Fortran 77 <strong>to</strong> Fortran 77<br />
− Fortran <strong>to</strong> C<br />
− Pascal <strong>to</strong> C<br />
− C <strong>to</strong> C<br />
− SPL <strong>to</strong> C<br />
• Solves most challenges involved in a migration process<br />
• Outsource-based model: send the code, receive it migrated<br />
(~95%); in certain cases companies have used the <strong>to</strong>ol with<br />
training<br />
• Proven solution used by high-profile companies
ViaNova 3000 - solution overview
The Transoft solution<br />
• Code conversion<br />
− MicroFocus: Adapts code <strong>to</strong> work with MicroFocus compiler<br />
• Cross-compiler outsource-based service required<br />
− Acu<strong>COBOL</strong>: Uses the Acu<strong>COBOL</strong>-GT MPE switch and converts the<br />
MPE-specific code <strong>to</strong> a platform native equivalent<br />
• Uses their technology and services: Transoft intelligent<br />
adapters<br />
• Converts MPE-specifics <strong>to</strong> platform-native equivalents<br />
− Supports MPE intrinsics<br />
− Supports file intrinsics<br />
− Supports Database intrinsics or can convert <strong>to</strong> SQL<br />
− Converts MPE commands <strong>to</strong> platform-native equivalents<br />
• Migrates databases and files<br />
• Replaces VPLUS using their GUI intelligent adapters
Transoft – solution overview<br />
• Solution sold as Consulting Service<br />
• How it works<br />
− Source code statistics sent <strong>to</strong> Transoft<br />
− Quote provided based on code complexity<br />
− Based on acceptance, code sent <strong>to</strong> Transoft<br />
− Converted code installed/tested at cus<strong>to</strong>mer site<br />
with Transoft or PP
Transoft – solution overview<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
(<br />
(<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
!<br />
!<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
"<br />
"<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
#<br />
#<br />
$<br />
$<br />
<br />
<br />
<br />
<br />
<br />
<br />
%<br />
%<br />
&<br />
&<br />
<br />
<br />
#<br />
#<br />
'<br />
'<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Legacy Libera<strong>to</strong>r is ‘trained’ <strong>to</strong> convert<br />
the legacy source <strong>to</strong> Open Systems source<br />
based on the choices you have made<br />
regarding the Target Platform.
Conclusion<br />
• How <strong>to</strong> choose a solution vendor<br />
• Final advice<br />
• Q&A
How To Choose A Solution Vendor?<br />
• Fac<strong>to</strong>rs that influence vendor choice<br />
− Time requirements<br />
• Some solutions gets you started faster than others<br />
− Resource availability<br />
• Do you prefer being directly involved with the migration?<br />
− Budget restrictions<br />
• Some solutions cost more than others<br />
− End result<br />
• Explicit native code solutions take more time and cost more<br />
• Faster solutions use run-time emula<strong>to</strong>rs or mappers<br />
− Preference for migration methodology / technology<br />
− Willingness <strong>to</strong> pay ongoing support for emula<strong>to</strong>r/mapper<br />
runtime<br />
− Strategic IT Direction
How To Choose A Solution Vendor?<br />
• Solution is based on what best fits the cus<strong>to</strong>mers needs<br />
− Cus<strong>to</strong>mer wants <strong>to</strong> do it themselves<br />
• Best Fit: AMXW is the only solution that is sold as a <strong>to</strong>olset for<br />
cus<strong>to</strong>mers <strong>to</strong> do it themselves.<br />
• Alternative: ViaNova 3000 (Ordina Denkart) is a quick way for<br />
someone else <strong>to</strong> do 90%+ of the migration au<strong>to</strong>mation.<br />
− Finishing work is done manually by the cus<strong>to</strong>mer (no <strong>to</strong>ols)<br />
− Cus<strong>to</strong>mer wants it outsourced<br />
• ViaNova 3000 (Ordina-Denkart) can provide a 100%<br />
outsourced solution<br />
• AMXW with a platinum partner’s assistance can provide a<br />
100% solution.<br />
− Cus<strong>to</strong>mer wants the result as Native as possible (no MPE<br />
/ Image emulation)<br />
• Best Fit: Transoft will replace all MPE / Image references with<br />
native counterparts, however, this will take longer and cost<br />
more.<br />
• Alternative: ViaNova Flex service from Ordina-Denkart
Final Advice<br />
• Seek advice from Platinum Partners<br />
− Chosen by <strong>HP</strong> for their migration and integration expertise<br />
− They have done the homework on who is good at what<br />
− Platinum partners offer one-s<strong>to</strong>p shopping for all these <strong>to</strong>ols<br />
− Think of Platinum partners as “General Contrac<strong>to</strong>rs” or “<strong>Migration</strong><br />
advisors and engineers”<br />
• Don’t under-estimate how many resources a manual<br />
migration might take<br />
− Especially for testing<br />
• Choose the right compiler / migration <strong>to</strong>ol combination<br />
− Clearly identify target, budget, resource constraints, and desired<br />
end result.
Q&A<br />
• THANK YOU!