home *** CD-ROM | disk | FTP | other *** search
-
- ΓòÉΓòÉΓòÉ 1. The SMART User's Guide ΓòÉΓòÉΓòÉ
-
- The SMART2 User's Guide
-
- Version 2.1B
- May 1995
-
- (C) 1991, 1994, 1995 One Up Corporation
-
- Notice
- Table of Contents
-
-
- ΓòÉΓòÉΓòÉ 2. Notice ΓòÉΓòÉΓòÉ
-
- ** NOTICE **
-
- This document may not, in whole or in part, be copied, reproduced, photocopied,
- translated, or reproduced to any electronic medium or machine readable form
- without prior written consent from One Up Corporation.
-
- This publication could contain technical inaccuracies or typographical errors.
- As changes are periodically made to the information herein; these changes may
- be incorporated in new additions of the publication. One Up Corporation may
- make improvements and/or changes in the product and/or the program described in
- this publication at any time.
-
- One Up Corporation is not responsible for any direct or indirect damage or loss
- of business resulting from inaccuracies or omissions in this publication. The
- specifications contained in this document are subject to change without notice.
-
- SMART - Source Migration Analysis Reporting Toolset is a trademark of One Up
- Corporation. OS/2, Presentation Manager are trademarks of the International
- Business Machines Corporation. IBM is a registered trademark of the
- International Business Machines Corporation. Other trademarks are property of
- their respective companies.
-
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 3. Table of Contents ΓòÉΓòÉΓòÉ
-
- Chapter 1 - Introduction
- SMART - Concepts
- The Analysis/Migration Process
- What this Document Contains
- Where is the Remaining Documentation?
- Chapter 2 - Installation
- Before You Begin
- Installing SMART
- Setup Options
- Chapter 3 - Getting Started
- Getting Ready
- The Analysis Process
- The Migration Process
- Completing The Migration
- The SMART Viewer
- The SMART Resource Translator
- The SMART Win Help Translator
- Graphical Resource Conversion
- The SMART Editor Development Tool
- Chapter 4 - Techniques
- Preparing Your Source Code
- Reading the Analysis Summary Reports
- Reading the Analysis Display/Report
- Interpreting the Analysis
- Use of Common Functions
- Source Migration Format Considerations
- File Extension Mapping
- Source Migration Comment Code Removal
- Increased Productivity with The SMART Editor
- Chapter 5 - Reference
- Migration Formats
- Specifications and Restrictions
- SMART Files
- Technical Support
-
- CONTINUE - Chapter 1
-
-
- ΓòÉΓòÉΓòÉ 4. Chapter 1 - Introduction ΓòÉΓòÉΓòÉ
-
- Chapter 1 - Introduction
-
- SMART - Concepts
- The Analysis/Migration Process
- What this Document Contains
- Where is the Remaining Documentation?
-
- CONTINUE - SMART - Concepts
- BACK - Table of Contents
-
-
- ΓòÉΓòÉΓòÉ 4.1. SMART - Concepts ΓòÉΓòÉΓòÉ
-
- SMART - Concepts
-
- NOTE: REFERENCES TO SOURCELINK, SMART VIEWER, MIGRATION and RESOURCE
- CONVERSION are only applicable with the Analysis AND Migration version of
- SMART. If you are only licensed for the Analysis version of SMART, you may
- ignore information in this and other documents to those functions that you may
- not have in this product.
-
- SMART - Source Migration Analysis Reporting Toolset provides analysis and
- source code migration assistance from one platform to another or one version to
- another on a given platform. This version of SMART executes on the OS/2
- platform and is used for the migration of 'C' and C++ source code from Windows
- 16 bit to OS/2 32 bit or OS/2 16 bit to OS/2 32 bit or Win32 to OS/2 32 bit
- depending upon the licensed, installed tables.
-
- The process of porting source code from one platform to another is indeed
- difficult and subjective.
-
- In fact, exploiting the features of one platform, and using proprietary
- libraries, classes, and objects may make it severely difficult to port to
- another platform without a major rewrite of the source code.
-
- There is no pat solution or utility to port all code to a target platform,
- and we dare say there most probably never will be. However, with the proper
- tools, methodology, techniques and training the effort required in the
- migration of source code can be GREATLY reduced.
-
- The most appropriate solution for this process is to use productive computer
- tools to perform tasks that are easily identified, routine, and labor intensive
- and provide a knowledge base to contain information related to all occurrence
- types of differences between the platforms. The human element is most
- appropriately applied where the complexity of the issue is too complicated for
- the computer analysis. It is advantageous to provide the programming
- professional with powerful productivity tools to make global changes based on
- the migration issues of complex nature.
-
- SMART is designed to assist in the analysis and migration of native source
- code from one platform to another or one version of an operating environment to
- another on the same platform.
-
- The platform dependent data is contained in the migration dictionary (table)
- and the migration database files.
-
- This process is based on finding keywords (API calls, symbols, parameters,
- typedefs, etc) that differ between the source and target platforms in the
- migration. No attempt is made to analyze the intended use of the application
- source code. As such, there is no intent to evaluate platform exploitation, or
- evaluate the use of the source code for application functionality such as MDI,
- DDEML, communication, LAN, and etc. The base API keyword differences are
- categorized into groups to represent the difficulty in migration, ranging from
- a simple literal replacement to the case where the functionality does not exist
- in the target platform.
-
- In the Analysis process, SMART will analyze source code and prepare a report
- (display) providing a detailed evaluation of the migration requirements.
-
- Furthermore, in the migration process, SMART will process the user specified
- source files and create migrated source files. The migrated source file will
- contain automatic migration changes (where possible) and in all cases will
- provide in-line commented code for the developer to complete the migration.
-
- CONTINUE - The Analysis/Migration Process
- BACK - Chapter 1 - Introduction
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 4.2. The Analysis/Migration Process ΓòÉΓòÉΓòÉ
-
- The Analysis/Migration Process
-
- There are several key concepts regarding the operation of the SMART Toolset
- including: The List-of-Files, keyword, category and hit.
-
- A List-of-Files is a text file that contains all of the fully qualified
- filenames for the source files to be processed by SMART. Typically this will
- include all program source files (.C) and all header files (.H). Resource
- files are migrated in a separate process using the resource translator
- (Windows->OS/2 Migration only).
-
- Keywords are items that are the basis for the definition of the interface to
- a platform and may represent API (Application Programming Interface) calls,
- symbols, parameters, structures, and typedefs. Keywords are the basis for
- migration with SMART. As keywords are encountered in the SMART Analysis and/or
- Migration processes SMART will look to the migration tables to indicate the
- appropriate change as required.
-
- Category is a key concept in the SMART process of source code migration. All
- of the items to be considered for migration are identified by its migration
- difficulty. The "category" of difficulty increases in effort and consideration
- and range from a category of "000" to the most difficult category of "050".
-
- There is one additional category of "999" indicating that the keyword has not
- been defined. This simply indicates that a keyword is identified for
- migration, but the explanation for the migration has not yet been defined in
- the SMART database.
-
- The definitions for the difficulty categories are as follows:
-
- 000 Informational only - An exact match of the keyword exists in the target
- platform but there is change in the size of type. (e.g. short to a long).
-
- 010 Literal replacement or Automatic migration - An equivalent definition
- exists in the target platform but a literal change in the keyword is required
- (e.g., LPSTR to PSZ) or keywords that are automatically migrated through the
- use of MiCL Commands.
-
- 020 Replacement with parameter changes - Equivalent functionality exists in
- the target platform but parameters or fields of a structure differ slightly
- from the source platform definition (e.g., SetWindowPos to WinSetWindowPos).
- Also included are parameters that are not applicable or required on the target
- platform (e.g., MakeProcInstance).
-
- 030 Change with more / less API calls - Equivalent functionality exists in
- the target platform but it must be implemented with more, or sometimes less,
- function calls (e.g., DlgDirList). Also included are items which map to one of
- several choices depending upon the type of parameter used (e.g., GetObject).
-
- 040 Logic changes required - Similar functionality exists in the target
- platform but the logic required to emulate the functionality must be reworked
- (e.g., CreatePatternBrush).
-
- 050 Functionality does not exist - There is no means provided to perform the
- same functionality in the target platform (e.g., GetKeynameText). Workaround
- coding must be implemented, where possible.
-
- 999 Dictionary entry not defined - The database does not currently have a
- complete description for the migration of the keyword.
-
- A Hit is simply a term referring to a match between a keyword in your source
- code and an item in the migration database indicating that a code change may be
- required.
-
- CONTINUE - What this Document Contains
- BACK - SMART - Concepts
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 4.3. What this Document Contains ΓòÉΓòÉΓòÉ
-
- What this Document Contains
-
- This document, contains an introduction in the use of the application
- development tool SMART.
-
- Detailed information regarding individual functions, dialog panels, controls,
- parameters and options is available in the on-line documentation accessible
- when SMART is running. By pressing "F1" or accessing the on-line help through
- the "Help" menu items you can obtain details regarding the specific operation
- of SMART.
-
- Neither this document nor the SMART on-line help will attempt to cover
- specific platform migration issues beyond the help found in the on-line
- migration data base access through the SMART Viewer. Migration issues are
- covered in the documentation of the specific platforms and are left to the
- developer to research.
-
- This document may make reference to utilities and functions that may be
- specific to a particular platform and may not be included in your licensed copy
- of SMART.
-
- Programming UDMD dictionaries, including programming with MiCL Commands is
- fully explained in the document file "SMART2 Programming Guide" found in the
- SMART2 Desktop Folder.
-
- The complete documentation of The SMART Editor is found in the separate
- manual entitled "The SMART Editor Technical Manual".
-
- The chapters of this document flow in a logical order to acquaint you with
- the concepts, principles and general introduction to SMART.
-
- Chapter 1 - Introduction
-
- An introduction to the SMART methodology of source code migration and the
- functionality of the SMART Toolset.
-
- Chapter 2 - Installation
-
- Step-wise instructions in the installation of SMART.
-
- Chapter 3 - Gettiong Started
-
- A guided introductory tutorial for executing the analysis and migration
- processes.
-
- Chapter 4 - Techniques
-
- A set of topics covering important techniques in the use of SMART.
-
- Chapter 5 - Reference
-
- A chapter related to reference topics including migration formats
- specifications and technical support for this product.
-
- CONTINUE - Where is the Remaining Documentation?
- BACK - Analysis/Migration Process
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 4.4. Where is the Remaining Documentation? ΓòÉΓòÉΓòÉ
-
- Where is the Remaining Documentation?
-
- It's on-line and accessible as you run SMART. We intentionally put the
- details of all the parameters, options and definitions of the dialog controls
- on-line. This puts your reference material where you need it most -
- contextually sensitive at the point of processing.
-
- While you are processing SMART press "F1" to obtain help at any menu item or
- dialog panel. You can also use the menu items under "Help" on your main menu
- bar to browse through the SMART On-Line help facility. In addition to the
- index and contents panels, you can view panels on additional One-Up products,
- reference material and tutorials on the Analysis or Migration processes.
-
- CONTINUE - Chapter 2 - Installation
- BACK - What This Document Contains
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 5. Chapter 2 - Installation ΓòÉΓòÉΓòÉ
-
- Chapter 2 - Installation
-
- Before You Begin
- Installing SMART
- Setup Options
-
- CONTINUE - Before You Begin
- BACK - Where is the Remaining Documentation?
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 5.1. Before You Begin ΓòÉΓòÉΓòÉ
-
- Before You Begin
-
- Before you begin the installation of SMART you may wish to take a moment to
- insure that you are prepared for the installation.
-
- You can install SMART from CD-ROM or you can install from Diskette. If you
- have this product on CD-ROM you can create diskettes for installation by
- executing the command MAKADSK or MAKMDSK (Depending on whether you have the
- analysis version of SMART or the Analysis and Migration). This command file
- requires that you specify the full drive and directory path of the SMART base
- files on the CD-ROM.
-
- If you are licensed for The SMART Editor, The SMART Editor documentation
- regarding installation in The SMART Editor Technical Manual. Your installation
- of SMART will consist of an Install diskette and one or more migration table
- diskettes depending upon your license.
-
- The hard disk space requirements for the basic installation is as follows:
-
- SMART Source Migration:
- Win3.1 -> OS/2 2.1 - 8 megabytes
- Win32 -> OS/2 2.1 - 12 megabytes
- OS/2 16->32 bit - 3 megabytes
- The SMART Editor: 2 megabytes
-
- If you have received this product on CD-ROM you can perform a mini-install of
- the SMART on your hard disk (requiring only 15 KBYTES) and run from the CD-ROM.
-
- This space only considers the installation files and does not include files
- created during the run time execution of either SMART or The SMART Editor.
-
- Depending upon the migration formats chosen, you may experience file
- requirements over five or six times the original source code space in the
- source migration and The SMART Editor hyperlink data base build.
-
- CONTINUE - Installing SMART
- BACK - Chapter 2 - Installation
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 5.2. Installing SMART ΓòÉΓòÉΓòÉ
-
- Installing SMART
-
- The installation of SMART is simple.
-
- 1. Start by inserting the SMART Installation diskette into your floppy drive
- (A or B) or change directory to the CD-ROM directory containg the SMART
- files. (Depending upon the source of your SMART installation files).
-
- 2. From an OS/2 command line, type: a: (or b:), then install
-
- 3. A SMART installation window will appear to guide you through the
- installation.
-
- 4. When ready, select "Install" from the main installation menu bar.
-
- 5. You will be requested to specify the directory that will contain all of
- the SMART executing files and will be the root for subsequent
- sub-directories to contain sample files and migration tables.
-
- 6. You will also have an opportunity to select other installation parameters,
- including the Platform Tables to be installed (For Full disk installation).
-
- 7. Responding to all of the installation pop-up panels with an "Ok" (Enter
- key) will result in the default installation.
-
- 8. It is recommended that you store the SMART DLLs in the directory with the
- other SMART executables. To do so, you must have a "." (current path) in
- the LIBPATH statement in your CONFIG.SYS file. If not, then you must store
- the DLL in a path specified by the LIBPATH statement.
-
- 9. At the conclusion of the installation of SMART a desktop icon will be
- created for the SMART application and the SMART Viewer and two SMART
- Information Files.
-
- 10. If you have not already installed The SMART Editor, please follow the
- instructions in Chapter 3 of The SMART Editor Technical Manual to properly
- install this companion application. You should install The SMART Editor
- before SMART if you are licensed for this product.
-
- CONTINUE - Setup Options
- BACK - Before You Begin
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 5.3. Setup Options ΓòÉΓòÉΓòÉ
-
- Setup Options
-
- After you have successfully installed SMART on your computer you may need to
- modify the initial setup options in the SMART application.
-
- 1. Open the Setup Options dialog panel by selecting "Setup Options" under the
- "Options" main menu item.
-
- 2. Check to insure that your editor is specified in this panel. If you have
- installed The SMART Editor, your editor name will be SLSTART. If you are
- using any other editor, enter the path and filename of the editor in the
- "Editor/Browser" entry field.
-
- 3. The next item of importance is to insure that you have specified the
- appropriate SMART Migration Table filename in the Tables Selection panel,
- under the "Tables" main menu item.
-
- 4. Both SMART and The SMART Editor allow you to drag-and-drop a selected font
- from the OS/2 system font palette onto the menu bar of the application in
- order to set all window fonts. After you have dropped the selected font,
- close and reopen the application to propagate the selected font throughout
- the application.
-
- 5. Once you have installed The SMART Editor you can register the SMART Viewer
- REXX macro (SMVIEWER.REX) under the "Macro" menu item. To accomplish this,
- pull down the "Macro" menu list in The SMART Editor and select "Define Menu
- Item". Choose "Add" and complete the dialog panel to register SMVIEWER.REX
- as a macro item, with your chose of accelerator key. Using this macro, you
- can mouse click on a source platform keyword and press your chosen
- accelerator key to display SMART Viewer on-line migration help.
-
- Within SMART Viewer you can drop your chosen font on the client area of the
- application. After you have set the application font you can set the fonts for
- each of the on-line display windows.
-
- The following chapters in this document will guide you through the basic
- functionality in the Analysis and Migration processes of SMART.
-
- CONTINUE - Chapter 3 - Getting Started
- BACK - Installing SMART
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 6. Chapter 3 - Getting Started ΓòÉΓòÉΓòÉ
-
- Chapter 3 - Getting Started
-
- Getting Ready
- The Analysis Process
- The Migration Process
- Completing The Migration
- The SMART Viewer
- The SMART Resource Translator
- The SMART Win Help Translator
- Graphical Resource Conversion
- The SMART Editor Development Tool
-
- CONTINUE - Getting Ready
- BACK - Setup Options
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 6.1. Getting Ready ΓòÉΓòÉΓòÉ
-
- Getting Ready
-
- You may wish to become familiar with SMART by using the sample source code
- files supplied in the installation of SMART under the "Samples" sub-directory.
- You can follow along with this chapter and use the steps as a general tutorial,
- or you may wish to strike out on your own and explore the SMART functionality
- on your own files.
-
- Before you start processing, it is always a good idea to backup your original
- source code. SMART Source Migration generates source code. Sparing you the
- pain of inadvertently overwriting original source code, it is well advised to
- "hide" your original code during your processing.
-
- SMART creates analysis files in the same directory as the source code being
- analyzed. If you are running from CD-ROM and using the application sample
- files, you will need to copy these files to your read/write hard drive.
-
- It is also advised that you always use the option to generate the changed
- code using the extension mapping. This will insure that a SMART process
- creates a file of similar name, having a different file extension to maintain
- uniqueness. Using this technique, you can simply rerun the process, if needed,
- without losing the original source file.
-
- You will most probably wish to run the SMART migration process multiple times
- on a sample code set with different format options to insure that you achieve
- the desired results for your particular needs.
-
- CONTINUE - The Analysis Process
- BACK - Chapter 3 - Getting Started
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 6.2. The Analysis Process ΓòÉΓòÉΓòÉ
-
- The Analysis Process
-
- The analysis of source code for an evaluation of the migration and porting
- effort is accomplished through the use of SMART Analysis Procedure.
-
- This procedure simply consists of creating a text file (called a
- List-of-Files) with the fully qualified filenames of the files to be analyzed,
- and then perform the analysis procedure.
-
- The results of the analysis can be viewed on-screen and printed using The
- SMART Editor or a word processing application.
-
- First, create your analysis directories and sub-directories.
-
- Each separate analysis should be performed from a separate directory. The
- directory will contain the "List-of-Files" file, and subsequently will contain
- analysis files created by the SMART Analysis process.
-
- If separate analyses are to be created, each to represent a different
- component of the product under analysis, an individual sub-directory should be
- created to contain the analysis files. Each "List-of-Files" for individual
- analyses should have a different filename, even though they will be in a
- different sub-directory for ease of identification. Sub-directories can be
- created from The SMART Editor using the "Copy" function under the "More" main
- menu selection.
-
- Select the directory to create the new sub-directory in the "TO" section of
- the "Copy" dialog panel. Type the name of the new sub-directory in the "TO"
- "File" entry panel and press "Make Dir.". Note that you will automatically be
- placed in this new sub-directory.
-
- Copy the source files to be analyzed to a backup directory (and appropriate
- sub-directories) that will be used in this analysis. Create the "List-of-Files"
- files containing the files for the analysis. Use the "Maintain List-of-Files"
- function under the "Files" main menu item in SMART or the equivalent function
- in The SMART Editor under the "Link" main menu. The files in this list may
- span multiple directories and even drives.
-
- Execute "Analyze Code" under the "Analysis" Menu selection. Take care to
- select the proper option on the setup panel for this function.
-
- The standard options will have only the "Send Analysis Output to Editor"
- checked (all other options unchecked). The "List-of-Files" filename should be
- shown in the "List-of-Files" entry panel. If you chose to create a The SMART
- Editor Link Database, you will be able to hyperlink to points of change from
- the report created from this analysis procedure.
-
- NOTE: Multiple instances of SMART can be run at the same time if running more
- than one analysis. This may speed processing.
-
- At the completion of the analysis, you will be able to print the analysis
- report from SMART (as displayed at the completion of the analysis).
-
- Select "Printer Setup" to select appropriate printer, and then choose "Job
- Properties" to select "Landscape" for the printing mode. Close the printing
- setup panels with "Ok".
-
- Select "Formatting" and set the following parameters for the printed format.
- Uncheck "Date/Time..." and "Word Wrap".
-
- Set all page margins to 0.0.
-
- Press "Select Fonts". Uncheck "Display" but leave "Printer" fonts checked.
- Select the smallest "Courier" font available, "Normal" style.
-
- Close the "Formatting panels with "Ok". One last check before printing -
- insure that "Print File" on the "Print" dialog panel is selected (instead of
- "Print Select"). Press "Ok" on the "Print" dialog panel to print the analysis
- report. Removal and Backup of Analysis Files.
-
- To save the analysis files to floppy disk, select "Pack up Analysis Files"
- from the "Analysis" menu in SMART If you are running multiple analyses, you
- may wish to perform this step after each analysis. You will need a floppy disk
- with blank sufficient space to perform this function. You will also need a
- copy of the compression utility "PKZIP2.EXE" from PKWARE (not included with
- this application).
-
- The captured data in these analysis files contains absolutely no other
- information than appears in the analysis report. The data is in text and
- binary format and is used to rerun the analysis report if necessary with
- different file combinations or analysis options. The files copied to the
- floppy disk are of the analysis report, a compress file containing the analysis
- numerical summary data, and the text format of the List-of-Files file used for
- the analysis.
-
- After the analysis data is copied to the floppy disk, you can remove the
- small summary analyses files by selecting the "Remove Temp Analysis Files"
- from the "Analysis" menu. Insure that the proper "List-of-Files" file is used
- in this process. If multiple analyses are performed, this process must be
- performed for each List-of-Files used. This process will delete all "*.??^"
- files associated with the analysis.
-
- The 'EFFORT' value calculated for the Analysis Report is a relative number
- related to the number of hours required to complete the migration. The is a
- subjective number and varies depending upon the developers experience in the
- migrating platforms, and the tools, techniques and methodologies uses in the
- migration. The One Up Corporation Porting Work Shops may greatly reduce your
- porting effort through the techniques taught in these Work Shop sessions.
-
- It is suggested that you proceed through a complete migration of the sample
- code provided in the installation of this product, or other small sample of
- your source code to determine the relative difference between the reported
- EFFORT from SMART and the hours required in your actual process. The EFFORT
- value from the SMART Analysis should be used as a guide only and may not bear
- any correspondence to the actual time required in any porting process.
-
- The EFFORT value does not include any time required to prepare your code for
- migration, nor the correction of any compilation errors introduced by the
- migration process, or time required in learning the target or source platform
- programming internals.
-
- CONTINUE - The Migration Process
- BACK - Getting Ready
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 6.3. The Migration Process ΓòÉΓòÉΓòÉ
-
- The Migration Process
-
- The migration process of SMART processes the specified source files and
- generates migrated files with code changes and in-line comments. The
- List-of-Files file contains the fully qualified filenames to migrate (as in the
- Analysis Process).
-
- The migrated files will be placed in the same directory as the source files
- (with mapped extensions if desired).
-
- The Migration Configuration dialog panel provides the user with the
- opportunity to select migration formats and options for each category of
- difficulty. It is highly recommended that you test various output migration
- formats with a small set of sample code in order to determine the best format
- for your intended purpose.
-
- Prior to executing the Migration Procedure, you will want to perform the
- Analysis Procedure on the source code to be migrated.
-
- Create the "List-of-Files" files containing the files for the analysis. Use
- the "Maintain List-of-Files" function under the "Files" main menu item in SMART
- or the equivalent function in The SMART Editor under the "Link" main menu. The
- files in this list may span multiple directories and even drives.
-
- If you have created the List-of-Files in the Analysis procedure, you may wish
- to modify the list for migrating a sub set of the original List-of-Files or
- simply migrate the full code set.
-
- Execute "Migrate Code" under the "Migration" Menu selection. Take care to
- select the proper option on the setup panel for this function.
-
- You will have a great latitude of options in the configuration of the
- Migration process. Refer to the Migration Configuration Dialog Panel for an
- explanation of these options. The typical default selections include use of
- commented code (as opposed to 'ifdef' blocks).
-
- If you are using The SMART Editor you will want to create a link database for
- hyperlinking to migrated changes, otherwise uncheck this option. If building
- The SMART Editor Database you may wish to set the DB options to link on the
- migration keyword list.
-
- You may wish to use the files in the samples directory of the SMART
- installation to try migrations with various options and see the results.
-
- Rerunning the Migration process with the same List-of-Files and the same file
- extension mapping will overwrite the original migration files. Recursive
- migration of the same files may give unpredictable results. Note that the
- migration process creates a new List-of-Files file containing the new migrated
- file names which you may wish to use for a number of purposes, including The
- SMART Editor Link Database build.
-
- You can now proceed through the migrated files to complete the migration
- according to the in-line comments that have been placed in the migrated code.
- Use of an editor with hyperlink source code access, like The SMART Editor will
- be a valuable asset in quickly pulling up on-line help and accessing all
- references to a migrated function, structure, etc.
-
- After you have made all changes to the migrated code, you can use the
- "Remove Comments and Tagged Code" to remove migration comment, examples and
- other code that has been inserted in the source files to assist you in the
- migration process.
-
- CONTINUE - Completing The Migration
- BACK - The Analysis Process
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 6.4. Completing the Migration ΓòÉΓòÉΓòÉ
-
- Completing the Migration
-
- SMART identifies Category 000 keywords (which may require no migration at
- all) and automatically makes the changes for Category 010. This may account
- for 50-70% of the changes required in the migration. The remaining changes are
- identified by the comment insertion according to the options that you have
- chosen in the Migration Options Panel.
-
- These remaining changes, due to their categories, must be evaluated and
- changed as you deem necessary. You may wish to write a replacement function
- for the API call and change the name to call this new function or you may need
- to go to each change indicated and rewrite a portion of the code depending upon
- the usage. Any combination of techniques may be used. You are the best one to
- decide how you should approach this completion effort based upon productivity,
- compatibility and other criteria.
-
- In general, you may have chosen to restate the source code for the Category
- 020 changes. Since, by definition, these changes may require little effort, the
- original restated code is a good starting point.
-
- In most cases, you will want to make use of The SMART Editor to hyperlink to
- each type of change and make the decided change "across the board". You will
- also find The SMART Editor useful to find all occurrences of a structure, or
- function call before you make a change to a field or parameter to insure you
- fully understand its use.
-
- You may also find The SMART Editor valuable in making global replacements for
- a number of strings in all source files.
-
- It is highly recommended that you become familiar with The SMART Editor
- before you begin your migration. It will surely save you many hours of
- searching though your source code to find and display specific keywords,
- functions and other elements of your code.
-
- Take the time to go through the tutorial in The SMART Editor Technical
- Manual. It will only require about thirty minutes of your time and will
- provide you with a general understanding of the functionality of this product.
-
- With the use of The SMART Editor you will have context sensitive access to
- the on-line help for the IBM development help facility.
-
- The other productive tool in the SMART Toolset is the SMART Viewer. Using
- this on-line viewer you will be able to access the migration help of any
- specified keyword. Using these techniques, you may desire to have less comment
- inserted in-line with the migrated code and prefer to use the SMART Viewer for
- migration assistance for each encountered keyword.
-
- The comment tags at the end of each migration inserted line are coded for
- identification and removal. You can use these tags for searching (using The
- SMART Editor). You can adopt techniques of tagging each line as you complete
- the migration. There are several REXX macros provided with SMART to be used
- with The SMART Editor to enable personal tagging of the migration lines as you
- proceed with your work.
-
- When complete, you can easily remove all tagged lines and tags using the menu
- item under "Migration" entitled "Remove Tagged Code Lines...". The dialog
- panel associated with this function allows you to specify the particular lines
- or tags to be removed.
-
- CONTINUE - The SMART Viewer
- BACK - The Migration Process
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 6.5. The SMART Viewer ΓòÉΓòÉΓòÉ
-
- The SMART Viewer
-
- The SMART Viewer provides a context sensitive on-line help to the SMART
- Migration knowledge base. By providing a topic name, you can display
- information regarding the migration of the specified keyword. The display
- windows that are available in this utility are "Topic", "Template",
- "Prototype", "Example", and "References". An additional window "History"
- provides a list of all topics accessed in the current session.
-
- The SMART Viewer is invoked from The SMART Editor through the supplied Rexx
- Macro "SMVIEWER.REX". Simply mouse click on a Source Platform keyword and
- invoke the Rexx Macro with an assigned hot-key. If you are using an editor
- other than The SMART Editor, you will want to create a macro or other linking
- function to spawn SMART Viewer with topic names.
-
- The SMART Viewer communicates externally through the proxy process
- "SMARTVUE.EXE", which eliminates starting a new instance each time a request
- for a new topic is desired.
-
- SMART View contains a search panel which allows you to enter a desired topic
- (keyword) name for viewing.
-
- Selected text from the "Template", "Prototype", and "Example" window displays
- can be copied to the clipboard buffer providing "cut" and "paste" programming
- capability from the migration data base to your editor.
-
- Additional functionality for this utility of SMART is explained in the SMART
- Viewer on-line help facility.
-
- CONTINUE - The SMART Resource Translator
- BACK - Completing The Migration
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 6.6. The SMART Resource Translator ΓòÉΓòÉΓòÉ
-
- The SMART Resource Translator
-
- (It is necessary to use this utility only when migrating from Windows to OS/2.
- Resources do not require translating when migrating from one version of OS/2 to
- another.)
-
- The SMART Windows to OS/2 Resource Conversion utility (SMARTRC.EXE) provides
- source-to-source conversion of Windows resource definition files to OS/2
- resource definition files. Support is provided for converting the following
- resource definition statements:
-
- - ACCELERATORS
- - AUTO3CHECKSTATE
- - AUTOCHECKSTATE
- - AUTORADIOBUTTON
- - BITMAP
- - CAPTION
- - CHECKBOX
- - CLASS
- - COMBOBOX
- - CONTROL
- - CTEXT
- - CURSOR
- - DEFPUSHBUTTON
- - DIALOG
- - EDITTEXT
- - FONT
- - GROUPBOX
- - ICON
- - LISTBOX
- - LTEXT
- - MENU
- - MENUITEM
- - POPUP
- - PUSHBUTTON
- - RADIOBUTTON
- - RCDATA
- - RTEXT
- - SCROLLBAR
- - SEPARATOR
- - STATE3
- - STRINGTABLE
- - STYLE
- - USERBUTTON
-
- SMARTRC also recognizes and processes the following preprocessor directives:
-
- - #define
- - #elseif
- - #else
- - #endif
- - #if
- - #ifdef
- - #ifndef
- - #include
- - #undef
- - rcinclude
-
- Additional functionality includes:
-
- Automatic reformatting of all Windows resource definition statements to
- the equivalent OS/2 format.
- Automatic generation of alternate accelerator key sequences.
- Automatic reformatting of strings contained in RCDATA to produce
- equivalent binary representation in the RES file.
- Automatic conversion of mnemonic characters.
- Automatic scaling and recalculation of OS/2 dialog units from Windows
- dialog units.
- Automatic remapping of Windows dialog control styles to OS/2 dialog
- control styles.
- Automatic remapping of common dialog control identifiers to equivalent
- OS/2 common dialog control identifiers.
- Automatic detection of named-resources and generation of header file to
- assign integer identifiers.
- Optional dialog font mapping from Windows font name and point size to OS/2
- font name and point size.
- Code page conversion of text strings from Windows code page to OS/2 code
- page.
-
- The general philosophy of converting resource definition statements is that
- SMARTRC will attempt to convert everything and anything that it understands.
- For those statements which do not have an equivalent statement in OS/2 SMARTRC
- will identify the file and line number on which the statement occurs. In
- addition, SMARTRC will identify any conversion which may result in slightly
- different functionality in OS/2. It is up to the developer to decide how to
- proceed with any statement in error.
-
- If SMARTRC detects named-resources, it will generate an include file with a
- .HHH extension containing integer definitions for those resources. The user
- either needs to rename this .HHH file and include it in the top .RC file or
- copy its contents into an existing .H file that is already included. It is
- also a good practice for the user to start at the top-most .RC file when
- migrating so just one .HHH file will be created and all of the generated ID
- numbers will be sequential.
-
- SMARTRC is a utility that can be executed from SMART through the interface
- dialog panel associated with "Translate Resources..." under the "Resources"
- menu item or can be run from a command line or embedded in a batch command
- file. If the Resource Translator encounters a problem during the conversion
- process, it will output information, warning or error messages. For a detailed
- explanation of these messages, select the "Help, Help Contents" menu item in
- the SMART application, then go to "Utility Processes, Resource Translator
- Topics, Resource Translator Messages".
-
- Although SMARTRC contains many run time options, simply specifying the
- resource filename without options will process with the system default
- parameters.
-
- CONTINUE - Graphical Resource Conversion
- BACK - The SMART Viewer
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 6.7. Win Help Translation ΓòÉΓòÉΓòÉ
-
- Win Help Translation
-
- (It is necessary to use this utility only when migrating from Windows to OS/2.
- Help files do not require translating when migrating from one version of OS/2
- to another.)
-
- The SMART Windows to OS/2 Help Translator Conversion utility (SMARTHLP.EXE)
- provides conversion of Windows help files to OS/2 help files. This utility can
- be executed from SMART through the interface dialog panel associated with
- "Translate Win Help..." under the "Resources" menu item or can be run from a
- command line or embedded in a batch command file.
-
- Follow these steps to convert a Windows RTF (Rich Text Format) file to an OS/2
- help file.
-
- 1. Create an HPJ file that contains the name of the RTF file to be converted
- along with any bitmap names that are needed. A sample HPJ file is located
- in ..SMARTAUX\SAMPLE.HPJ.
-
- 2. To access the the Win Help Translator dialog panel, choose "Resources" from
- the SMART main dialog panel. From the Resources pulldown choose "Translate
- Win Help".
-
- 3. On the Win Help Translator dialog panel, enter the name (including path) of
- the HPJ file in the "Input Filename" field.
-
- 4. Choose the rest of the options as they apply. Generally, most of the
- options will be needed.
-
- 5. If the output will be used by an application, choose "Output .HLP file".
- If the output will be independent, like a "users' reference", choose
- "Output .INF file". To view the output, create an .INF file and use the
- VIEW command (in OS/2).
-
- 6. Another useful option is "Send Error file to Editor". Then, errors can be
- viewed.
-
- 7. When all options have been chosen, press "ok".
-
- 8. SMART does not display a status on the conversion process for a HELP
- document. If the "Send Error File to Editor" option is chosen, then the
- process will be complete when the error file is displayed. Otherwise,
- watch the OS/2 window in the backgound to ensure that the Help conversion
- process is complete.
-
- 9. Output from the Help conversion will depend on the options chosen. If
- nothing was entered in the "Output Filename" the file will be written to
- the same directory as the input file.
-
- 10. Unless the "Convert to IPF Only" option is chosen, the IPF file produced by
- SMART will automatically be sent to the IPF compiler. In that case, an INF
- or HLP file will be produced (depending on the option chosen). If the
- "Convert to IPF Only" option IS chosen, only the IPF file will be produced
- and will not be compiled.
-
- Note: Error messages are explained in the online help. To view the error
- message explanations, choose HELP from the Win Help Translator dialog panel.
- Then choose "Win Help Translator Topics". After that choose "Win Help
- Translator Messages".
-
- Please note that the IPF compiler (IPFC.EXE) is required for SMART Win Help
- translation. IPF (Information Processing Facility) is available from the IBM
- Developers Toolkit.
-
- WIN HELP TRANSLATION LIMITATIONS
-
- The .RTF format can specify a more general document than the IPF's tag
- language. Because of this, some word-processing functionality available with
- Windows help files cannot be translated to the PM IPF system. The following
- are the word processing functionalities that cannot be supported:
-
- Headers and Footers are not supported and will be ignored.
-
- Metafiles and Macintosh pictures are not supported and will be ignored.
- You may convert these pictures to bitmaps rather than use these unsupported
- formats.
-
- Scaling and cropping of pictures are not supported and are ignored.
-
- Outline, shadow, small-cap and all-cap character attributes are not
- supported and are ignored.
-
- Revision marking, tables, side-by-side paragraphs, centered paragraphs,
- right-justified paragraphs, paragraph borders, and paragraph leaders are not
- supported and are ignored.
-
- Decimal, right, and center tabs are not supported and are ignored.
-
- Margins, paragraph indentations, and tabs are approximated to the nearest
- character width.
-
- Line spacing before, within, and after paragraphs is approximated to the
- nearest system font character height.
-
- Text does not flow around left or right-margin images, but follows
- immediately below the image.
-
- Monochrome images appear in black and white instead of the text foreground
- and background colors.
-
- Character attributes of bold, underline and italics work correctly in all
- combinations, except for all three together. It produces red text.
-
- A maximum of 64KB of keys information can be provided.
-
- There are cosmetic differences in the way that hypertext links are
- displayed on the screen and in the mouse and keyboard interfaces to those
- links.
-
- CONTINUE - Graphical Resource Conversion
- BACK - The SMART Resource Translator
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 6.8. Graphical Resource Conversion ΓòÉΓòÉΓòÉ
-
- Graphical Resource Conversion
-
- (It is necessary to use this utility only when migrating from Windows to
- OS/2. Resource files do not require translating when migrating from one
- version of OS/2 to another.)
-
- The SMART Windows to OS/2 Graphical Resource Conversion utility
- (SMARTCVT.EXE) provides binary conversion of Windows icon, cursor, and bitmap
- files to OS/2 pointer files and bitmap files, respectively.
-
- Both icon and cursor files are referred to as pointer files in OS/2. The
- graphical format of Windows icons and cursors is significantly different from
- OS/2 pointer files.
-
- SMARTCVT is a utility that can be executed from SMART through the interface
- dialog panel associated with "Convert Graphical Resources..." under the
- "Resources" menu item or can be run from a command line or embedded in a batch
- command file. If the Graphical Resource Converter encounters a problem during
- the conversion process, it will output information, warning or error messages.
- For a detailed explanation of these messages, select the "Help, Help Contents"
- menu item in the SMART application, then go to "Utility Processes, Graphical
- Resource Converter Topics, Graphical Resource Converter Messages".
-
- The summary information output by SMARTCVT at the completion of file
- conversion recaps the entire conversion process. Following is an example of
- the output contained in the summary information:
-
- Files Processed: 10
- Files Converted: 10
- Warnings: 0 Errors: 0
-
- CONTINUE - The SMART Editor Development Tool
- BACK - The SMART Win Help Translator
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 6.9. The SMART Editor Development Tool ΓòÉΓòÉΓòÉ
-
- The SMART Editor Development Tool
-
- The SMART Editor is a feature rich programming development tool combining
- hyperlink source code access, a fully functional editor, and many file
- manipulation utility functions.
-
- Features:
-
- Build hyperlinks to key elements of your source code.
- REXX Macro interface.
- Full IBM Workframe interface.
- Spawn Compiles directly from The SMART Editor and hyperlink to errors.
- Context sensitivity to all IBM development help files (if installed).
- Edit with multiple windows, any size files.
- Create functional call tree and other documentation display - all hyperlink
- sensitive.
- Unsurpassed methods for navigating directories, drives and source code.
- Hyperlink capabilities make learning new code a breeze.
- Print SMART analysis and source code with format from within The SMART
- Editor.
- Interface with SMART provides automatic hyperlink to all points of change.
-
- Please refer to The SMART Editor Technical Manual for full explanation
- regarding the powerful functionality available with this tool.
-
- CONTINUE - Chapter 4 - Techniques
- BACK - Graphical Resource Conversion
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 7. Chapter 4 - Techniques ΓòÉΓòÉΓòÉ
-
- Chapter 4 - Techniques
-
- Preparing Your Source Code
- Reading the Analysis Display/Report
- Interpreting the Analysis
- Use of Common Functions
- Source Migration Format Considerations
- File Extension Mapping
- Source Migration Comment Code Removal
- Increased Productivity with The SMART Editor
-
- CONTINUE - Preparing Your Source Code
- BACK - The SMART Editor Development Tool
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 7.1. Preparing Your Source Code ΓòÉΓòÉΓòÉ
-
- Preparing Your Source Code
-
- Planning a strategy for the analysis and/or migration of your source code
- will greatly pay back in the long run.
-
- It is essential that your original source code be backed up to insure that an
- inadvertently mis-chosen option, especially in the migration process, does not
- prevent you from restoring to your original code state.
-
- Both the Analysis and Migration processes of SMART should not be considered
- one-shot processes. You may wish to run the Analysis a number of times, with
- global code changes to change the outcome. Likewise, you may find that you
- want to make global changes to your code fixing a recurring hit to reduce the
- migration effort before you even apply SMART.
-
- For example, after a review of the initial analysis run, changing a parameter
- type through your code may significantly reduce the Effort reported in the
- analysis. After looking at the reported keyword hits in your code, you may
- decide to write a number of common functions that replace the source platform
- API calls and make global replacements for these calls to your new functions.
- You can rerun the Analysis Process and see the resulting effort changes.
- Likewise for other changes that may involve macro #defines, or typedefs.
-
- You may be surprised at the results of these preprocessing changes and how
- they might reduce your porting effort.
-
- Likewise, you may wish to rerun the Migration Process after analyzing the
- resulting initial results. It may be that you need different formatting
- options in the Migration Process, or you find that you can make global changes
- to a syntax widely used to eliminate repetitive reporting from SMART of this
- migration hit.
-
- Essentially, anything that you can do to your code to simplify that migration
- process will greatly reduce the whole porting effort.
-
- CONTINUE - Reading the Summary Reports
- BACK - Chapter 4 - Techniques
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 7.2. Reading the Summary Reports ΓòÉΓòÉΓòÉ
-
- Reading the Summary Reports
-
- For each analysis that you run, a summary report files is created and can be
- printed using the SMART 'Print Analysis Report' process.
-
- A cover page preceeds the summary reports when they are printed with
- information regarding the date and time of the report along with the user
- supplied report title.
-
- A summary report is created with the standard Migration Analysis process, and
- the Resource Translation Analysis (if the Windows migration tables are
- selected).
-
- The report lines for the cover page and their description follows:
-
- SMART Source Code Migration Analysis Report - Cover Report Heading.
-
- [Next one to three lines] - User supplied report title (first line appears on
- each page of the report).
-
- Prepared: [Date - Time] - Date stamp of the summary report.
-
- Printed: [Date - Time] - Date stamp of the report printing.
-
- Summary: [Filename] - Filename(s) of the Summary report files.
-
- Report: [Filename] - Filename(s) of the Primary Analysis report file.
-
- The report lines for the Migration Analysis Report Summary and their
- description follows:
-
- Total File Count - Number of files processed in the Analysis.
-
- Total File Size (Bytes) - Total size of files processed in the Analysis.
-
- Total Source Lines - Total number of lines processed.
-
- Total Code Lines - Total number of lines processed excluding comment lines and
- null (skip) lines.
-
- Total Category xxx Hits - Total number of keyword encounters by category type.
-
- Total Migration Hits - Total number of all keyword encounters.
-
- Total Cat 000 and 010 Hits Auto Migrated - Total number of keyword encounters
- that will be automatically migrated using SMART.
-
- Total Hits MiCL Processed - Total number of keyword encounters that will be
- migrated using MiCL commands in either the primary Migration Database or a
- UDMD.
-
- Total Hits Processed with UDMD - Total number of keyword encounters were
- encountered from a UDMD.
-
- Total Hits Excluded - Total number of keyword encounters were excluded from
- processing based on a user supplied exclude list.
-
- Total Migration Keyword Instances - Total number of keyword encounters that
- represented different keywords.
-
- **NOTE** - The following effort estimates and productivity gains are
- calculated from a number of generalized factors and assumptions. The actual
- effort that you may encounter will depend upon your individual experience and
- productivity, in addition to unique difficulties that may be encountered in
- your coding. Please use these values as a comparative guideline only.
-
- Estimated Migration Effort Without SMART - An estimation of the total number
- of migration hours required to migrate this project without any use of SMART.
-
- Savings from SMART Base Migration - An estimation of the total number of
- migration hours saved by the base use of SMART without any productivity gains
- from automatic migration.
-
- Savings from Cat 010 Auto Migrate - An estimation of the total number of
- migration hours saved by the automatic migration from SMART.
-
- Savings from Keyword Exclusions - An estimation of the total number of
- migration hours not required due to exclusion from the user specified keyword
- exclude list.
-
- ** Net Migration Effort ** - An estimation of the total number of migration
- hours remaining to complete the project after processing with SMART.
-
- Percent Effort Reduction using SMART - A calculation of the net estimated
- migration effort as a percentage of the total estimated effort without the use
- of SMART.
-
- The report lines for the Resource Translation Analysis Report Summary
- (provided with Windows migration Analysis only) and their description follows:
-
- Total Resource File Count - Number of files processed in the Resource
- Analysis.
-
- Total Resource File Size (Bytes) - Size of files processed in the Resource
- Analysis.
-
- Total Dialog Templates - Number of Dialogs encountered in the Analysis.
-
- Total Dialog Code Lines - Number of lines of code for the Dialogs.
-
- Ave Code Lines Per Dialog - Indicates the code lines size of the average
- dialog.
-
- Total Menu Template Code Lines - Number of coding lines in the Menus.
-
- Total StringTable Code Lines - Number of coding lines in the String Tables.
-
- Total Accelerator Table Code Lines - Number of coding lines in the Accelerator
- Tables.
-
- **NOTE** - The following effort estimates and productivity gains are
- calculated from a number of generalized factors and assumptions. The actual
- effort that you may encounter will depend upon your individual experience and
- productivity, in addition to unique difficulties that may be encountered in
- your coding. Please use these values as a comparative guideline only.
-
- Estimated Translation Effort Without SMART - Estimated migration hours to
- convert the resource files without the use of SMART.
-
- Savings from SMART Resource Translator - Estimated migration hours saved in
- the effort to convert the resource files with the use of SMART automation.
-
- ** Net Translation Effort ** - An estimation of the total number of migration
- hours required to translate the resource files with SMART.
-
- Percent Effort Reduction using SMART - A calculation of the net estimated
- translation effort as a percentage of the total estimated effort without the
- use of SMART.
-
- CONTINUE - Reading the Analysis Display/Report
- BACK - Preparing Your Source Code
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 7.3. Reading the Analysis Display/Report ΓòÉΓòÉΓòÉ
-
- Reading the Analysis Display/Report
-
- Each keyword is categorized by the level of difficulty required to migrate to
- the target platform. These categories can also be viewed as the amount of
- programmer interaction and expertise required for the migration. The currently
- defined categories and their description are as follows:
-
- 000 Informational only - An exact match of the keyword exists in the target
- platform but there is change in the size of type. (e.g. short to a long).
-
- 010 Literal replacement - An equivalent definition exists in the target
- platform but a literal change in the keyword is required (e.g., LPSTR to PSZ).
-
- 020 Replacement with parameter changes - Equivalent functionality exists in
- the target platform but parameters or fields of a structure differ slightly
- from the source platform definition (e.g., SetWindowPos to WinSetWindowPos).
- Also included are parameters that are not applicable or required on the target
- platform (e.g., MakeProcInstance).
-
- 030 Change with more / less API calls - Equivalent functionality exists in
- the target platform but it must be implemented with more, or sometimes less,
- function calls (e.g., DlgDirList). Also included are items which map to one of
- several choices depending upon the type of parameter used (e.g., GetObject).
-
- 040 Logic changes required - Similar functionality exists in the target
- platform but the logic required to emulate the functionality must be reworked
- (e.g., CreatePatternBrush).
-
- 050 Functionality does not exist - There is no means provided to perform the
- same functionality in the target platform (e.g., GetKeynameText). Workaround
- coding must be implemented, where possible.
-
- 999 Dictionary entry not defined - The database does not currently have a
- complete description for the migration of the keyword.
-
- Throughout the analysis report there are several column and section headings
- used to display counts of various pieces of information.
-
- These column and section headings are defined as follows:
-
- File Detail Report:
-
- PATH/FILENAME - Full path specification of the file(s)
- SIZE - File size in bytes
- LINES - Number of lines in the file
- CODE - Number of lines containing code in the file
- HITS - Number of times a keyword was identified
- PCT HITS - Percentage of hits per line of code (i.e., HITS / CODE)
- INSTS - Number of unique keywords that were identified
- PCT INST - Percentage of unique keywords per line of code (i.e., INSTS / CODE)
- EFFORT - Calculation of the relative amount of work required to migrate the
- code in the file
- CAT xxx - Number of hits in each category
-
- Keyword Detail Report:
-
- CATEGORIES - Breakdown by category of the keywords found
- TYPES - Breakdown by type of the keywords found (function calls, messages,
- symbol definitions, and typedef statements)
- AREAS - Breakdown by functional area of the keywords found
- KEYWORDS - Breakdown by individual keyword. Ordered by category and from the
- most number of occurrences to the least number of occurrences.
- HITS - Number of times a keyword for the specified item was identified.
- PCT HITS - Percentage of all hits identified (i.e., HITS / section total HITS)
- FILES - Number of files that a keyword for the specified item was found
- INSTS - Number of unique keywords that were identified for the specified item
- PCT INST - Percentage of all unique keywords identified (i.e., INSTS / section
- total INSTS)
- EFFORT - Calculation of the relative amount of work required to migrate the
- code for the specified item
-
- CONTINUE - Interpreting the Analysis
- BACK - Reading the Summary Reports
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 7.4. Interpreting the Analysis ΓòÉΓòÉΓòÉ
-
- Interpreting the Analysis
-
- The analysis portion of SMART actually generates two related reports. Each
- report presents the detailed analysis from a different perspective. The two
- reports together should give you a thorough understanding of the amount of code
- that requires migration and the amount of effort that will be involved. A
- brief overview of the contents of the analysis report is relevant here before
- discussing how to interpret the data contained in the report.
-
- The file detail report presents a detailed analysis of each source file. This
- includes all of the items previously defined for the file detail report.
-
- The keyword detail report presents a more thorough breakdown of the keywords
- identified during the analysis. The analysis data is broken down four
- different ways. The first is a breakdown by category showing the counts of the
- keywords as identified by their respective category. The second is a breakdown
- by the types of the keywords. The third is a breakdown of the identified
- keywords by the various functional areas that a keyword is classified. The
- fourth is a breakdown by the individual keywords. This last breakdown shows
- each and every keyword that was identified and the number of occurrences.
-
- The analysis report contains a lot of valuable information about your source
- code. Once you understand how to interpret the data you will be able to more
- accurately size and evaluate the migration effort. In addition you can rerun
- the analysis program on your code during the migration process to give you
- accurate progress statistics. We begin the interpretation with the file detail
- portion of the analysis report.
-
- The first thing to be learned from the file detail report is simply how many
- lines of code are in each file and in the entire the application. This forms
- the basis for determining the relative distribution of the keywords in the
- code.
-
- The total number of hits, shown at the bottom of this part of the report,
- tells you how many changes must be made to the code. The percentage of hits
- times the number of lines of code tells you how many lines of code must be
- changed. Don't get overly excited at this point if this number is rather
- large. Until we examine the keyword detail report you don't know how many of
- these will be automatically migrated by SMART.
-
- Next look at the total number of instances. This is the number of unique
- keywords that must be migrated. What this really tells you is approximately
- how many individual keywords the programmer(s) will have to be familiar with in
- order to make various decisions during the migration. Since many migration
- issues and changes related to a specific keyword are the same or similar for
- all occurrences of that keyword the actual effort is reduced to deciding what
- needs to be changed and simply repeating the change for each occurrence.
- Again, many of these changes may be automatically migrated by SMART.
-
- At this point the effort number that is shown for each file has very little
- significance unless you have migrated source before. The effort calculation is
- based on the relative difficulty of migrating a keyword -- category 030 items
- are more difficult to migrate than category 020 items. Since the actual time
- to migrate a section of code also depends on the experience and knowledge of
- the programmer and on the tools being used the amount of actual time that the
- effort number translates to will be different for each person.
-
- In order to translate the effort number to actual time it is necessary to
- migrate several source files containing a mix of keywords in each of the
- difficulty categories. Using the actual time and the effort calculations for
- those migrated files you get an approximate time value for each effort unit.
-
- The last portion of the file detail report is the breakdown of the hits by
- their respective categories. These numbers can assist you in assigning groups
- of files to programmers with different levels of expertise. A file that is
- mostly composed of category 020 items can be assigned to someone with little
- experience on the target platform since most of the keywords are relatively
- simply to migrate.
-
- In fact, the changes required for almost all of the category 020 items is
- exactly a one-to-one change as detailed in the migration database. Files that
- contain category 040 and 050 items can be assigned to your more experienced
- programmers since these items require a more in-depth knowledge of what the
- code is attempting to do on the source platform and how the logic can be
- restructured to implement the same functionality on the target platform.
-
- In general, the file detail section provides a quantitative analysis of the
- source code showing how much must be changed. On the other hand, the keyword
- detail section provides more of a qualitative analysis of those changes. In
- the keyword detail report we get to the real nitty-gritty of what is contained
- in the source code.
-
- The first section, CATEGORIES, presents the first indication of how the
- migration breaks down by difficulty. Collectively the six columns of data can
- tell you a lot about how much effort will be involved and where that effort
- will be concentrated.
-
- The HITS, PCT HITS, and FILES columns tell you the volume of physical changes
- that have to be made. Even minor changes can require a great deal of time if
- the item occurs thousands of times or exists in hundreds of files. Time is
- required to open files, locate and enter changes, and save the files.
-
- Review the INSTS and PCT INSTS columns to identify the number of unique items
- that have to be migrated at each difficulty category. There are two things
- that may be learned from this information. First, while there may be a large
- number of HITS in a particular category it may be that they are isolated to a
- few particular keywords. This would actually indicate that less work is
- required compared to the situation where a large number of instances occur with
- a large number of hits.
-
- When we look at the KEYWORDS section it will be more evident if that is the
- case, but this section can give use a good indication of where the effort is
- concentrated. Second, look at the distribution of the hits and instances among
- the various categories. Most likely the majority of the hits as well as the
- instances are in categories 020 or less. The desired trend is for the numbers
- to decrease significantly from category 020 to category 050. Obviously the
- fewer category 040 and 050 items the less difficult the migration. The last
- column, EFFORT, is a good indicator of where you will spend most of the time
- during the migration. Depending on the number of instances of category 030 and
- 040 items it is possible that the effort for these categories can be greatly
- reduced.
-
- The next section, TYPES, is mostly for information purposes only. A couple of
- useful things about your migration effort can still be learned from it.
- Function and message items typically require the most effort since program
- logic can be affected. Symbol items require the least effort since most of the
- time it requires a simple change to a bit flag or a #define statement. The
- typedef items typically require modifications to structure field references
- and aren't significantly difficult items.
-
- The next section, AREAS, is again mostly for information purposes only. This
- section can help in staffing the migration and assigning programmers to work on
- individual areas of the project. By analyzing the various functional areas
- that require migration and the numbers associated with each you can decide what
- expertise on both the source and target platform is required. For example, if
- large portions of the migration are in the bitmap, color-palette, and
- drawing-tool areas you will want to make sure you assign a programmer with
- graphics expertise to the project.
-
- The last section, KEYWORDS, shows exactly what keywords were identified in
- the source and their frequency of occurrence. Since the keywords are organized
- by category and listed in decreasing order of occurrence it is very easy to see
- what needs to be changed. It is also here that you can see if you have an even
- distribution of hits on each keyword or if there are a lot of hits on
- relatively few keywords.
-
- For example, if you have 800 hits in category 030 but 450 of them are
- SendMessage and 250 are SelectObject then the amount of effort can be reduced.
- This is because the programmer will have only to look at these two items,
- decide the general migration changes to be applied, and make the changes (thus
- eliminating 700 of the 800 hits).
-
- On the other hand, if the hits are fairly evenly distributed in a category it
- will require more time since many more decisions on migration changes will have
- to be performed. This is especially important when looking at the category 040
- and 050 items since these items may require significant logic changes to the
- application.
-
- One additional thing to note is the relationship of the various keywords in
- a category. If you see several keywords which relate to the same functionality
- it may be possible that all of those keywords will be migrated by a change to
- a single portion of the code. For example, if you encounter a set of mouse
- related messages in category 040 then all of these will most likely be resolved
- in the same manner or with a single change to the code.
-
- There are a few items that warrant special consideration when evaluating the
- SMART analysis report. The current knowledge-base technology may
- over-categorize a keyword resulting in a higher relative effort than is
- actually required. There are many functions and messages which have a
- one-to-many mapping to the target platform. In these cases the actual
- migration depends upon the intention of the function or the value of one or
- more parameters (e.g., a flag set in a variable).
-
- When more than one choice exists for the migration SMART will use the higher
- category level for the analysis report so as not to significantly underestimate
- the effort. For example, the Windows RegisterClass function is categorized as
- category 040. If the class uses the default cursor and icon then it actually
- is a category 020 item. Yet, if a class specific cursor, icon, or background
- brush is used it is a category 040 since this would require logic changes.
- Category 040 would be used by SMART since it would depend on the values in the
- WNDCLASS structure. Be aware that you may have some keywords that are
- overclassified.
-
- One of the suggested techniques to significantly increase the speed of the
- migration is to use macros or to implement functions for category 030 and 040
- items that have high hit counts. This eliminates larger, redundant blocks of
- migrated code that implement the intended functionality and also localizes the
- debugging effort to a single function. If this technique is applied to your
- migration effort then you should take into consideration that the keywords
- implemented in this manner are actually category 020 items instead of category
- 030 or 040.
-
- CONTINUE - Use of Common Functions
- BACK - Reading the Analysis Display/Report
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 7.5. Use of Common Functions ΓòÉΓòÉΓòÉ
-
- Use of Common Functions
-
- Significant improvements in your migration effort may be achieved through the
- use of common functions. Common functions refers to the implementation of
- source platform functions as their equivalent target platform functions. Since
- the migration of many keywords involves replacing the existing function call
- with multiple lines of code, using common functions can reduce the amount of
- code and coding changes required.
-
- Selecting candidates for common functions is a very subjective process. You
- must evaluate the analysis report for your application and review the
- difficulty and hit counts for each of the keywords. As a general rule a
- keyword is a candidate if the hit count is at least twenty (20) and the
- difficulty category is 030 or higher. Once a candidate is identified you must
- review the use of that keyword throughout the application. If the keyword is
- used in generally the same context throughout the application then you will
- probably gain migration speed by implementing the particular function or
- defining an appropriate macro.
-
- As an example, assume that the analysis report for a Windows application
- shows that GetMenuString occurs 100 times. This is a category 030 keyword
- since the flag may specify the menu item either by command or by position. If
- we examine the code and find that all of the calls are requested by command
- then we could decide to just implement GetMenuString as a macro which sends the
- MM_QUERYITEMTEXT messages. On the other hand if we have a mix of requests by
- both command and position we could decide to implement GetMenuString as a
- function which sent the appropriate messages based on the specified flag.
-
- It is recommended that you place all common functions into a single,
- separate source file or library. Doing so can ease your effort during the
- debugging phase and allows you to begin abstracting functionality for future
- migrations.
-
- CONTINUE - Source Migration Format Considerations
- BACK - Interpreting the Analysis
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 7.6. Source Migration Format Considerations ΓòÉΓòÉΓòÉ
-
- Source Migration Format Considerations
-
- Each Category of the Migration Process offers a popup dialog panel to select
- the format of the inserted comments in the migrated code. These options
- include: Long, short or no comment, template, prototype, example code, restate
- original code and ignore migration.
-
- It may appear convenient to insert all of the above items in-line with your
- source code. However, in general, the more you put in your code the more
- difficult it is to read. It is better to insert less in your code and use the
- SMART Viewer to display information pertaining to the keywords as necessary.
- You also have the option to clip and paste from the SMART Viewer display panels
- to your code.
-
- After you have reviewed the Analysis report and made any necessary code
- changes, you may wish to ignore the Category 000 hits.
-
- Restatement of the original code has been offered as an option particularly
- for the Windows to OS/2 migration. This uncommented restatement allows you to
- rerun the Analysis Process during your process of completing the migration to
- determine the amount of code left to complete. Simply remove this code
- restatement as you make the necessary changes.
-
- You may also use this restatement as a starting point for code modification.
-
- In any case it is recommended that you try various options on the sample code
- or a small set of you source code to determine what works best for you.
-
- CONTINUE - File Extension Mapping
- BACK - Use of Common Functions
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 7.7. File Extension Mappings ΓòÉΓòÉΓòÉ
-
- File Extension Mapping
-
- File extension mapping allows you to control the name of the generated source
- file in the Migration process for source migration, the process for commenting
- out #ifdef code and the process for removing tagged code.
-
- In all cases where SMART generates new source files the files are placed in
- the same directory as the original, with the file extension changed. The
- alternative to this process is to request that the original file be
- overwritten. For obvious reasons this is not recommended.
-
- You can control the extension mapping by specifying the map for each file
- extension encountered in your processing. The data for this mapping is
- contained in the test file MAPEXT.DAT in the main SMART directory.
-
- You can maintain this data from the popup dialog selected in the processes
- that offer extension mapping such as the Migration Process.
-
- The mapping data simply contains the original extension and then the
- extension for the map.
-
- The mapping data will not accept wildcards, but is explicitly defined. You
- will note that several layers of mapping is defined in the default data. For
- example ".C" is mapped to ".C__X", and ".C__X" is mapped to ".C__Y". This
- allows you to perform multiple mapping processes while saving each set of files
- in the processes.
-
- Please note that the mapping data is case sensitive. If your files are in
- lower case, the mapping data must be specified in lower case.
-
- You will be notified if SMART encounters a file that cannot be mapped, due to
- missing mapping data, during the process requiring the map.
-
- The SMART Resource Translator accepts wildcards and does not use this mapping
- data.
-
- CONTINUE - Source Migration Comment Code Removal
- BACK - Source Migration Format Considerations
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 7.8. Source Migration Comment Code Removal ΓòÉΓòÉΓòÉ
-
- Source Migration Comment Code Removal
-
- You can automatically remove comment tagged code with SMART. Comment tagged
- code is defined by having a short unique set of identification characters.
-
- All of the migration insertion code has tags identified by "SM$:". The
- dialog selection panel shown above specifies that codes that are used by SMART.
- Using this panel you can select the commented code that you wish to remove at
- any point in your migration process.
-
- The four fields entitled "Other Tagged Lines" allows you to remove code that
- may have been tagged by you for your own identification purposes.
-
- This process also allows you to just remove the tags without removing the
- code on the lines. In this case the tags are removed at the end of the line,
- leaving the remaining code. To fit into this class of tagging, the tags must be
- at the end of the line and proceeded by a double slash ("//") and a space.
-
- You may wish to explore the functionality of this process with a file form
- the sample code that has been migrated.
-
- CONTINUE - Increased Productivity with The SMART Editor
- BACK - File Extension Mapping
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 7.9. Increased Productivity with The SMART Editor ΓòÉΓòÉΓòÉ
-
- Increased Productivity with The SMART Editor
-
- The SMART Editor is provided, and has been specifically designed, to increase
- your productivity through the speed and ease of source code navigation and the
- integration of file manipulation\utilities.
-
- The single most unique feature of The SMART Editor is hyperlink access to
- your source code. Once you have built a hyperlink data base for your code set,
- you can mouse click to any function definition or popup a list of all
- references to a function, symbol or other key element of your code.
-
- You can request that this database be created as a result of the SMART
- Analysis or Migration Process, or you can create the link data base within The
- SMART Editor application.
-
- In your migration process, if you wish to look at all the places where a
- function is used, simply double click with the right mouse button on the
- function in question, and The SMART Editor will create a display of all
- references.
-
- Since The SMART Editor displays are both hyperlink sensitive and editable,
- you may double click (left mouse button) on the filename-line number for any of
- the displayed references and The SMART Editor will immediately open the file at
- the point of reference.
-
- Another powerful feature of The SMART Editor is the ability to perform
- multiple file, string searches and provide a hyperlink display file of all
- strings found for your immediate access. You can use your "List-of-Files" from
- the SMART Analysis or Migration as the input file specification to this search
- process.
-
- In addition to the powerful source code access function The SMART Editor
- allows you to spawn compiles and hyperlink to the point of error.
-
- The SMART Editor has been specifically designed to assist you in productively
- maintaining your code. The integration of the features and the powerful
- navigation functionality will greatly reduce your time and effort in porting
- your code.
-
- CONTINUE - Chapter 5 - Reference
- BACK - Source Migration Comment Code Removal
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8. Chapter 5 - Reference ΓòÉΓòÉΓòÉ
-
- Chapter 5 - Reference
-
- Migration Formats
- SMART Files
- Specifications and Restrictions
- Technical Support
-
- CONTINUE - Migration Formats
- BACK - Increased Productivity with The SMART Editor
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.1. Migration Formats ΓòÉΓòÉΓòÉ
-
- Migrated code formats are user configurable. A number of options relating to
- the migrated code are available.
-
- The Format References include the following formats:
-
- Original source code (before migration)
- Format - 'ifdef' and '/*...*/' comments
- Format - 'ifdef' and '//' comments
- Format - NO 'ifdef' and '/*...*/' comments
- Format - NO 'ifdef' and '//' comments
- Format - '//' comments and NO Tags
- Format - '//', Short comments and Prototypes
- Format - '/*...*/', Long comments, Prototypes and Examples
- Format - Source code with migration comments removed
-
- CONTINUE - Original source code (before migration)
- BACK - Chapter 5 - Reference
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.1.1. Original source code (before migration) ΓòÉΓòÉΓòÉ
-
- Original Source Code
-
- /* Open the file with the OF_PARSE flag to obtain the fully qualified
- * pathname in the OFSTRUCT structure.
- */
- wFileTemp = OpenFile ((LPSTR)szFile, (LPOFSTRUCT)&of, OF_PARSE);
-
- _lclose (wFileTemp);
-
- LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz));
-
- CONTINUE - Format - 'ifdef' and '/*...*/' comments
- BACK - Migration Formats
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.1.2. Format - 'ifdef' and '/*...*/' comments ΓòÉΓòÉΓòÉ
-
- Format - 'ifdef' and '/*...*/' comments
-
- /* SM$:FO C:\TEST\TEST.C - 03/28/94 14:25:07 */
- /* Open the file with the OF_PARSE flag to obtain the fully qualified
- * pathname in the OFSTRUCT structure.
- */
- #ifndef OS221
- wFileTemp = OpenFile ((LPSTR)szFile, (LPOFSTRUCT)&of, OF_PARSE);/* SM$:O */
- #else
- wFileTemp = OpenFile ((PSZ)szFile, (LPOFSTRUCT)&of, OF_PARSE); /* SM$:M3 */
- DosOpen (,,,,,,,) /* SM$:M3 */
- DosQueryPathInfo (, FIL_QUERYFULLNAME,,); /* SM$:M2 */
- /* SM$:C
- * OpenFile Cat:030 Type:010 Area:130 SM$:K
- * Replace with DosOpen, DosDelete, or DosQueryPathInfo SM$:S
- * SM$:C
- * LPSTR replaced with PSZ - Cat:010 Type:030 Area:990 SM$:1
- * SM$:C
- * OF_PARSE Cat:020 Type:030 Area:130 SM$:K
- * Use DosQueryPathInfo to replace OpenFile function call SM$:S
- */ /* SM$:C */
- #endif
-
- #ifndef OS221
- _lclose (wFileTemp); /* SM$:O */
- #else
- DosClose (wFileTemp); /* SM$:M1 */
- /* SM$:C
- * _lclose replaced with DosClose - Cat:010 Type:010 Area:130 SM$:1
- */ /* SM$:C */
- #endif
-
- #ifndef OS221
- LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); /* SM$:O */
- #else
- LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); /* SM$:R */
- WinLoadString (,,,,); /* SM$:M2 */
- /* SM$:C
- * LoadString Cat:020 Type:010 Area:060 SM$:K
- * Replace with WinLoadString SM$:S
- */ /* SM$:C */
- #endif
-
- CONTINUE - Format - 'ifdef' and '//' comments
- BACK - Original source code (before migration)
- Migration Formats
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.1.3. Format - 'ifdef' and '//' comments ΓòÉΓòÉΓòÉ
-
- Format - 'ifdef' and '//' comments
-
- // SM$:FO C:\TEST\TEST.C - 03/28/94 14:30:22
- /* Open the file with the OF_PARSE flag to obtain the fully qualified
- * pathname in the OFSTRUCT structure.
- */
- #ifndef OS221
- wFileTemp = OpenFile ((LPSTR)szFile, (LPOFSTRUCT)&of, OF_PARSE);// SM$:O
- #else
- wFileTemp = OpenFile ((PSZ)szFile, (LPOFSTRUCT)&of, OF_PARSE); // SM$:M3
- DosOpen (,,,,,,,) // SM$:M3
- DosQueryPathInfo (, FIL_QUERYFULLNAME,,); // SM$:M2
- // OpenFile Cat:030 Type:010 Area:130 SM$:K
- // Replace with DosOpen, DosDelete, or DosQueryPathInfo SM$:S
- // SM$:C
- // LPSTR replaced with PSZ - Cat:010 Type:030 Area:990 SM$:1
- // SM$:C
- // OF_PARSE Cat:020 Type:030 Area:130 SM$:K
- // Use DosQueryPathInfo to replace OpenFile function call SM$:S
- #endif
-
- #ifndef OS221
- _lclose (wFileTemp); // SM$:O
- #else
- DosClose (wFileTemp); // SM$:M1
- // _lclose replaced with DosClose - Cat:010 Type:010 Area:130 SM$:1
- #endif
-
- #ifndef OS221
- LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); // SM$:O
- #else
- LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); // SM$:R
- WinLoadString (,,,,); // SM$:M2
- // LoadString Cat:020 Type:010 Area:060 SM$:K
- // Replace with WinLoadString SM$:S
- #endif
-
- CONTINUE - Format - NO 'ifdef' and '/*...*/' comments
- BACK - Format - 'ifdef' and '/*...*/' comments
- Migration Formats
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.1.4. Format - NO 'ifdef' and '/*...*/' comments ΓòÉΓòÉΓòÉ
-
- Format - NO 'ifdef' and '/*...*/' comments
-
- /* SM$:FO C:\TEST\TEST.C - 03/28/94 14:32:18 */
- /* Open the file with the OF_PARSE flag to obtain the fully qualified
- * pathname in the OFSTRUCT structure.
- */
- /* wFileTemp = OpenFile ((LPSTR)szFile, (LPOFSTRUCT)&of, OF_PARSE); SM$:O */
- wFileTemp = OpenFile ((PSZ)szFile, (LPOFSTRUCT)&of, OF_PARSE); /* SM$:M3 */
- DosOpen (,,,,,,,) /* SM$:M3 */
- DosQueryPathInfo (, FIL_QUERYFULLNAME,,); /* SM$:M2 */
- /* SM$:C
- * OpenFile Cat:030 Type:010 Area:130 SM$:K
- * Replace with DosOpen, DosDelete, or DosQueryPathInfo SM$:S
- * SM$:C
- * LPSTR replaced with PSZ - Cat:010 Type:030 Area:990 SM$:1
- * SM$:C
- * OF_PARSE Cat:020 Type:030 Area:130 SM$:K
- * Use DosQueryPathInfo to replace OpenFile function call SM$:S
- */ /* SM$:C */
-
- /* _lclose (wFileTemp); SM$:O */
- DosClose (wFileTemp); /* SM$:M1 */
- /* SM$:C
- * _lclose replaced with DosClose - Cat:010 Type:010 Area:130 SM$:1
- */ /* SM$:C */
-
- /* LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); SM$:O */
- LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); /* SM$:R */
- WinLoadString (,,,,); /* SM$:M2 */
- /* SM$:C
- * LoadString Cat:020 Type:010 Area:060 SM$:K
- * Replace with WinLoadString SM$:S
- */ /* SM$:C */
-
- CONTINUE - Format - NO 'ifdef' and '//' comments
- BACK - Format - 'ifdef' and '//' comments
- Migration Formats
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.1.5. Format - NO 'ifdef' and '//' comments ΓòÉΓòÉΓòÉ
-
- Format - NO 'ifdef' and '//' comments
-
- // SM$:FO C:\TEST\TEST.C - 03/28/94 14:33:45
- /* Open the file with the OF_PARSE flag to obtain the fully qualified
- * pathname in the OFSTRUCT structure.
- */
- // wFileTemp = OpenFile ((LPSTR)szFile, (LPOFSTRUCT)&of, OF_PARSE);SM$:O
- wFileTemp = OpenFile ((PSZ)szFile, (LPOFSTRUCT)&of, OF_PARSE); // SM$:M3
- DosOpen (,,,,,,,) // SM$:M3
- DosQueryPathInfo (, FIL_QUERYFULLNAME,,); // SM$:M2
- // OpenFile Cat:030 Type:010 Area:130 SM$:K
- // Replace with DosOpen, DosDelete, or DosQueryPathInfo SM$:S
- // SM$:C
- // LPSTR replaced with PSZ - Cat:010 Type:030 Area:990 SM$:1
- // SM$:C
- // OF_PARSE Cat:020 Type:030 Area:130 SM$:K
- // Use DosQueryPathInfo to replace OpenFile function call SM$:S
-
- // _lclose (wFileTemp); SM$:O
- DosClose (wFileTemp); // SM$:M1
- // _lclose replaced with DosClose - Cat:010 Type:010 Area:130 SM$:1
-
- // LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); SM$:O
- LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); // SM$:R
- WinLoadString (,,,,); // SM$:M2
- // LoadString Cat:020 Type:010 Area:060 SM$:K
- // Replace with WinLoadString SM$:S
-
- CONTINUE - Format - '//' comments and NO Tags
- BACK - Format - NO 'ifdef' and '/*...*/' comments
- Migration Formats
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.1.6. Format - '//' comments and NO Tags ΓòÉΓòÉΓòÉ
-
- Format - '//' comments and NO Tags
-
- Note: Option chosen to insert Short comment and Prototype only. Elimination
- of tags on commented lines prevents automatic removal of inserted code!
-
- // SM$:FO C:\TEST\TEST.C - 03/28/94 14:34:59
- /* Open the file with the OF_PARSE flag to obtain the fully qualified
- * pathname in the OFSTRUCT structure.
- */
- // wFileTemp = OpenFile ((LPSTR)szFile, (LPOFSTRUCT)&of, OF_PARSE);
- wFileTemp = OpenFile ((PSZ)szFile, (LPOFSTRUCT)&of, OF_PARSE);
- DosOpen (,,,,,,,)
- DosQueryPathInfo (, FIL_QUERYFULLNAME,,);
- // OpenFile Cat:030 Type:010 Area:130
- // Replace with DosOpen, DosDelete, or DosQueryPathInfo
- //
- // LPSTR replaced with PSZ - Cat:010 Type:030 Area:990
- //
- // OF_PARSE Cat:020 Type:030 Area:130
- // Use DosQueryPathInfo to replace OpenFile function call
-
- // _lclose (wFileTemp);
- DosClose (wFileTemp);
- // _lclose replaced with DosClose - Cat:010 Type:010 Area:130
-
- // LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz));
- LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz));
- WinLoadString (,,,,);
- // LoadString Cat:020 Type:010 Area:060
- // Replace with WinLoadString
-
- CONTINUE - Format - '//', Short comments and Prototypes
- BACK - Format - NO 'ifdef' and '//' comments
- Migration Formats
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.1.7. Format - '//', Short comments and Prototypes ΓòÉΓòÉΓòÉ
-
- Format - '//', Short comments and Prototypes
-
- // SM$:FO C:\TEST\TEST.C - 03/28/94 14:37:08
- /* Open the file with the OF_PARSE flag to obtain the fully qualified
- * pathname in the OFSTRUCT structure.
- */
- // wFileTemp = OpenFile ((LPSTR)szFile, (LPOFSTRUCT)&of, OF_PARSE);SM$:O
- wFileTemp = OpenFile ((PSZ)szFile, (LPOFSTRUCT)&of, OF_PARSE); // SM$:M3
- DosOpen (,,,,,,,) // SM$:M3
- DosQueryPathInfo (, FIL_QUERYFULLNAME,,); // SM$:M2
- // OpenFile Cat:030 Type:010 Area:130 SM$:K
- // Replace with DosOpen, DosDelete, or DosQueryPathInfo SM$:S
- // SM$:C
- // APIRET APIENTRY DosOpen(PSZ pszFileName, PHFILE pHf, SM$:P
- // PULONG pulAction, ULONG cbFile, ULONG ulAttribute, SM$:P
- // ULONG fsOpenFlags, ULONG fsOpenMode, PEAOP2 peaop2); SM$:P
- // APIRET APIENTRY DosQueryPathInfo(PSZ pszPathName, SM$:P
- // ULONG ulInfoLevel, PVOID pInfoBuf, ULONG cbInfoBuf); SM$:P
- // APIRET APIENTRY DosSearchPath(ULONG flag, PSZ pszPathOrName, SM$:P
- // PSZ pszFilename, PBYTE pBuf, ULONG cbBuf); SM$:P
- // APIRET APIENTRY DosDelete(PSZ pszFile); SM$:P
- // SM$:C
- // LPSTR replaced with PSZ - Cat:010 Type:030 Area:990 SM$:1
- // SM$:C
- // OF_PARSE Cat:020 Type:030 Area:130 SM$:K
- // Use DosQueryPathInfo to replace OpenFile function call SM$:S
- // SM$:C
- // APIRET APIENTRY DosQueryPathInfo(PSZ pszPathName, SM$:P
- // ULONG ulInfoLevel, PVOID pInfoBuf, ULONG cbInfoBuf); SM$:P
-
- // _lclose (wFileTemp); SM$:O
- DosClose (wFileTemp); // SM$:M1
- // _lclose replaced with DosClose - Cat:010 Type:010 Area:130 SM$:1
-
- // LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); SM$:O
- LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); // SM$:R
- WinLoadString (,,,,); // SM$:M2
- // LoadString Cat:020 Type:010 Area:060 SM$:K
- // Replace with WinLoadString SM$:S
- // SM$:C
- // LONG APIENTRY WinLoadString (HAB hab, HMODULE hModResource, SM$:P
- // ULONG idString, LONG lBufferMax, PSZ pszBuffer); SM$:P
-
- See Also:
-
- CONTINUE - Format - '/*...*/', Long comments, Prototypes and Examples
- BACK - Format - '//' comments and NO Tags
- Migration Formats
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.1.8. Format - '/*...*/', Long comments, Prototypes and Examples ΓòÉΓòÉΓòÉ
-
- Format - '/*...*/', Long comments, Prototypes and Examples
-
- // SM$:FO C:\TEST\TEST.C - 03/28/94 14:38:42
- /* Open the file with the OF_PARSE flag to obtain the fully qualified
- * pathname in the OFSTRUCT structure.
- */
- // wFileTemp = OpenFile ((LPSTR)szFile, (LPOFSTRUCT)&of, OF_PARSE);SM$:O
- wFileTemp = OpenFile ((PSZ)szFile, (LPOFSTRUCT)&of, OF_PARSE); // SM$:M3
- DosOpen (,,,,,,,) // SM$:M3
- DosQueryPathInfo (, FIL_QUERYFULLNAME,,); // SM$:M2
- // OpenFile Cat:030 Type:010 Area:130 SM$:K
- // Replace with DosOpen to open a file. Use DosQueryPathInfo SM$:L
- // specifying FIL_QUERYFULLNAME to parse the file name. Use SM$:L
- // DosSearchPath to query the fully qualified path name of a SM$:L
- // file. Use DosDelete to delete a file. SM$:L
- // SM$:C
- // APIRET APIENTRY DosOpen(PSZ pszFileName, PHFILE pHf, SM$:P
- // PULONG pulAction, ULONG cbFile, ULONG ulAttribute, SM$:P
- // ULONG fsOpenFlags, ULONG fsOpenMode, PEAOP2 peaop2); SM$:P
- // APIRET APIENTRY DosQueryPathInfo(PSZ pszPathName, SM$:P
- // ULONG ulInfoLevel, PVOID pInfoBuf, ULONG cbInfoBuf); SM$:P
- // APIRET APIENTRY DosSearchPath(ULONG flag, PSZ pszPathOrName, SM$:P
- // PSZ pszFilename, PBYTE pBuf, ULONG cbBuf); SM$:P
- // APIRET APIENTRY DosDelete(PSZ pszFile); SM$:P
- // SM$:C
- // Windows: SM$:X
- // OFSTRUCT OFStruct; SM$:X
- // HFILE hFile = OpenFile ("TEST.DAT", &OFStruct, SM$:X
- // OF_CREATE); SM$:X
- // OS/2: SM$:X
- // HFILE hFile; SM$:X
- // ULONG ulAction; SM$:X
- // DosOpen ("TEST.DAT", &hFile, &ulAction, FILE_NORMAL, SM$:X
- // OPEN_ACTION_CREATE_IF_NEW | SM$:X
- // OPEN_ACTION_REPLACE_IF_EXISTS, OPEN_ACCESS_READWRITE | SM$:X
- // OPEN_SHARE_DENYNONE, NULL); SM$:X
- // SM$:C
- // LPSTR replaced with PSZ - Cat:010 Type:030 Area:990 SM$:1
- // SM$:C
- // OF_PARSE Cat:020 Type:030 Area:130 SM$:K
- // Use DosQueryPathInfo specifying FIL_QUERYFULLNAME to SM$:L
- // query the full path of a file. This replaces the OpenFile SM$:L
- // function call. SM$:L
- // SM$:C
- // APIRET APIENTRY DosQueryPathInfo(PSZ pszPathName, SM$:P
- // ULONG ulInfoLevel, PVOID pInfoBuf, ULONG cbInfoBuf); SM$:P
-
- // _lclose (wFileTemp); SM$:O
- DosClose (wFileTemp); // SM$:M1
- // _lclose replaced with DosClose - Cat:010 Type:010 Area:130 SM$:1
-
- // LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); SM$:O
- LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); // SM$:R
- WinLoadString (,,,,); // SM$:M2
- // LoadString Cat:020 Type:010 Area:060 SM$:K
- // Replace with WinLoadString SM$:L
- // SM$:C
- // LONG APIENTRY WinLoadString (HAB hab, HMODULE hModResource, SM$:P
- // ULONG idString, LONG lBufferMax, PSZ pszBuffer); SM$:P
- // SM$:C
- // Windows: SM$:X
- // int iLen = LoadString (hInst, 1, szBuf, sizeof(szBuf)); SM$:X
- // OS/2: SM$:X
- // LONG lLen = WinLoadString (hAB, hMod, 1, sizeof(szBuf), SM$:X
- // szBuf); SM$:X
-
- CONTINUE - Format - Source code with migration comments removed
- BACK - Format - '//', Short comments and Prototypes
- Migration Formats
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.1.9. Format - Source code with migration comments removed ΓòÉΓòÉΓòÉ
-
- Format - Source code with migration comments removed
-
- /* Open the file with the OF_PARSE flag to obtain the fully qualified
- * pathname in the OFSTRUCT structure.
- */
- wFileTemp = OpenFile ((PSZ)szFile, (LPOFSTRUCT)&of, OF_PARSE); // SM$:M3
- DosOpen (,,,,,,,) // SM$:M3
- DosQueryPathInfo (, FIL_QUERYFULLNAME,,); // SM$:M2
- DosClose (wFileTemp); // SM$:M1
- WinLoadString (,,,,); // SM$:M2
-
- CONTINUE - SMART Files
- BACK - Format - '/*...*/', Long comments, Prototypes and Examples
- Migration Formats
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.2. SMART Files ΓòÉΓòÉΓòÉ
-
- The SMART generates a number of files related to Analysis and Migration. Also,
- a set of files may be created as a result of The SMART Editor creating a
- hyperlink database for the source files processed by SMART.
-
- These files are listed below:
-
- SMART Dictionary and Migration Database files (one set per directory)
- XXXXXXXX.TBL - Dictionary
- SMART1DB.D1 - Database
- SMART1DB.D2 - Database
- SMART1DB.D3 - Database
- SMART1DB.D4 - Database
- SMART1DB.K1 - Database
-
- Analysis and Migration files (in List-of-Files Directory)
- XXXXXXXX.LST - List-of-Files
- (List-of-Files).RPT - Analysis report
- (List-of-Files).LOG - Logfile from The SMART Editor (SLBUILD)
- (List-of-Files).RSP - Response File for The SMART Editor (SLBUILD)
- (List-of-Files).LNK - Analysis Keyword List
- (List-of-FileX).LOG - Logfile from The SMART Editor (SLBUILD) (Migrated
- files)
- (List-of-FileX).RSP - Response File for The SMART Editor (SLBUILD)
- (Migrated files)
- (List-of-FileX).LNK - Migration Keyword List
-
- Analysis and Migration Files (in directories with original source files)
- XXXXXXXXX.X_X - Migrated Source file with mapped extension
- (source file)_^ - Binary analysis data file (one for each source file)
-
- The SMART Editor Database Link files and report displays (from DB Build)
- (in directory with List-of-Files)
- SLINK2DB.D1 - The SMART Editor Link Database file
- SLINK2DB.D2 - The SMART Editor Link Database file
- SLINK2DB.K1 - The SMART Editor Link Database file
- SLINK2DB.K2 - The SMART Editor Link Database file
- SLINK2DB.K3 - The SMART Editor Link Database file
- SL_CALL.RPT - The SMART Editor Call Tree display report
- SL_DLGBOX.RPT - The SMART Editor Dialog Template display report
- SL_FUNCT.RPT - The SMART Editor Functions List display report
- SL_GLOB.RPT - The SMART Editor Globals display report
- SL_MODS.RPT - The SMART Editor Files display report
- SL_UNREF.RPT - The SMART Editor Unreferenced Functions display report
- SL_USER.RPT - The SMART Editor User Links display report
- (contains keywords found in Migration or Analysis from SMART processes)
-
- SMART Resource Translator
- resourcefilename.ERR - Default error filename
- resourcefilename.HHH - Default generated header filename
- resourcefilename.SUM - Default summary filename
- resourcefilename.RCX - Default translated resource filename
-
- Other SMART Files
- MAPEXT.DAT - File extension mapping data (SMART directory).
-
- CONTINUE - Specifications and Restrictions
- BACK - Format - Source code with migration comments removed
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.3. Specifications and Restrictions ΓòÉΓòÉΓòÉ
-
- Specifications and Restrictions
-
- Maximum path and file length 255
- Maximum Migration Database Path length 47
- Maximum directory levels 10
- Maximum ifdef name length 40
- Maximum "List-of-Files" data 64K
- (unless created by an editor)
- Maximum lines of code in any one file 32767
- Maximum code line length 512
- Supported preprocessor statements:
- #if, #ifdef, # if defined, #else, #elseif, #endif
-
- Analysis and Migration- syntax not supported:
-
- - Keywords within quotation marks
- - Keywords within macro define statements
- - Fields of a structure are not identified for migration
- - Context of a parameter within a call
-
- Resource Translator (Windows Only) restrictions:
-
- - Macros cannot be used for any of the reserved resource
- definition keywords.
- - Preprocessor conditional statements must begin and end
- within a single file.
- - Preprocessor conditional statements within a DIALOG
- resource definition template are properly evaluated but
- are not output to the converted resource file.
- - #include and rcinclude statements are not recognized within
- any multiline resource statements.
- - #define statements are not recognized within any multiline
- resource statements.
- - Macro definitions which contain parameter substitutions are
- currently not processed.
- - Can either replace the existing files with the converted files
- or save the converted file with a different file extension.
- - When converting dialog units as outlined in the Dialog
- Conversion section the conversion is relative to the
- system font for the current display resolution.
-
- CONTINUE - Technical Support
- BACK - SMART Files
- CONTENTS
-
-
- ΓòÉΓòÉΓòÉ 8.4. Technical Support ΓòÉΓòÉΓòÉ
-
- Technical Support
-
- Internet:
- Send questions or comments to devcon@vnet.ibm.com
-
- CompuServe:
- Obtain access to the IBM OS/2 Developer Forum 2.
- To obtain access to the Developer Connection section, please
- send a note to CompuServe userid 73423,2767.
- To access the forum, type GO OS2DF2 at the ! prompt; then
- select the Developer Connection section.
-
- OS/2 BBS:
- The DEVCON CFORUM, under TalkLink, is a feature under the
- IBMLink Commercial Services. Customers in the U.S. can call
- 1-800-547-1283; customers outside of the U.S. should contact
- their local IBM Marketing Representative.
-
- BACK - Specifications and Restrictions
- CONTENTS
-