gtpm2m1g | Migration Guide: Program Update Tapes |
The following section discusses the migration considerations for C++ support.
See the APEDIT for APAR PJ25084 for information about prerequisite APARs.
The TPF 4.1 system now provides support for the C++ language, which is designed to take advantage of object-oriented programming concepts. Except for minor details, the C++ language is a superset of C language. In addition to the facilities provided by C language, the C++ language provides flexible and effective facilities for defining new data types. You can partition an application program into manageable pieces by defining new data types that closely match the logical design of the application program. When used well, these techniques result in shorter, easier to understand, and easier to maintain programs.
Dynamic link libraries (DLLs) are now supported. A DLL is a collection of one or more functions or variables gathered in a load module that can be run or accessed from a separate application load module.
The key concept in the C++ language is class. A class is a user-defined data type. These classes provide data hiding, guaranteed initialization of data, implicit type conversion for user-defined types, dynamic typing, user-controlled memory management, and mechanisms for overloading operators. The C++ language provides better facilities than C language for type checking and for expressing modularity.
The key concept in DLLs is that functions or variables can be dynamically linked while the application program is running rather than statically when the application program is built. You can, therefore, call a function or use a variable in a load module other than the one that contains the definition.
You need the following to use C++ support on the TPF 4.1 system:
To ensure that your TPF 4.1 system performs correctly with C++ support, you must create the required operating environment. The following section describes hardware and software requirements specific to C++ support.
Operating Environment Requirements and Planning Information provides information about the minimum system configuration requirements that are necessary to operate the TPF 4.1 system. You may find it helpful to review that chapter along with the following information.
There are no hardware requirements.
You can use the following C/C++ compilers to compile C programs with the DLL compiler option and to compile C++ programs:
Keep in mind the following:
The following section summarizes interface changes.
The following section summarizes C/C++ language changes. This information is presented in alphabetic order by the type of C/C++ language information. See the TPF C/C++ Language Support User's Guide and TPF Application Programming for more information about the C/C++ language.
Table 322 summarizes changes to the build scripts used by the build
tool. This information is presented in alphabetic order by the name of
the build script.
Table 322. Changes to Build Scripts for C++ Support
Build Script | Type | New, Changed, or No Longer Supported? | Description of Change |
---|---|---|---|
CISOBS | DLM | Changed | Added functions to support DLLs. |
CPP1BS | DLM | New | Build script containing C++ run-time functions. CPP1 is a DLL and does not need a library interface script. |
There are no changes.
Table 323 summarizes the general use C/C++ language header file changes. This information is presented in alphabetic order by the name of the general use C/C++ language header file.
General use means these header files are available for your
use.
Table 323. Changes to General Use C/C++ Language Header Files for C++ Support
C/C++ Language Header File | New, Changed, or No Longer Supported? | Do You Need to Recompile Segments? |
---|---|---|
bldtol.h | Changed | No |
c$idselv.h | Changed | No |
c$idslst.h | Changed | No |
c$idspat.h | Changed | No |
c$idsprg.h | Changed | No |
c$idspvr.h | Changed | No |
c$idsuxt.h | Changed | No |
new.hpp | New | No |
There are no changes.
Table 324 summarizes changes to the library interface scripts used by
the library interface tool and the build tool. This information is
presented in alphabetic order by the name of the library interface
script.
Table 324. Changes to Library Interface Scripts for C++ Support
Library Interface Script | New, Changed, or No Longer Supported? | Description of Change |
---|---|---|
CISOXV | Changed | Added functions for DLL support. |
Table 325 summarizes the library member (object file) changes.
This information is presented in alphabetic order by the name of the library
member (object file).
Table 325. Changes to Library Members (Object Files) for C++ Support
Library Member (Object File) | Library Module Name | New, Changed, or No Longer Supported? | Type | Description of Change |
---|---|---|---|---|
CLMINT | CISO | Changed | Assembler | Added support for DLLs. |
CSSDLL | CISO | New | C Language | Subsystem-shared DLL validation routine. |
There are no changes.
Table 326 summarizes changes to members (object files). This information is presented in alphabetic order by the name of the member (object file).
Notes:
Table 326. Changes to Members (Object Files) for C++ Support
Member (Object File) | DLM/DLL | New, Changed, or No Longer Supported? | Type | Description of Change |
---|---|---|---|---|
CDMRTR | CDM1 | Changed | C Language | Added support for DLLs to link map support. |
CELL | CELA | Changed | C Language | Added DLL checks. |
CEL4 | CEL4 | Changed | C Language | Added support for detecting an error when a run-time library contains a DLL module. |
CEL8 | CEL8 | Changed | C Language | Added DLL checks. |
CILD | CILD | Changed | C Language | Added DLL checks. |
CIL6 | CILA | Changed | C Language | Added DLL checks. |
CLDF | CLDF | Changed | C Language | Added DLL checks. |
CLDJ | CEL2 | Changed | C Language | Added support for the DLL type to the OLDR2026T message. |
CLDL | CEL2 | Changed | C Language | Added support for detecting an error when a run-time library contains a DLL module. |
CLDZ | CELA | Changed | C Language | Added DLL checks. |
CLEW | CLEW | Changed | C Language | Added DLL checks. |
COL2 | COL1 | Changed | C Language | Added DLL checks. |
CRLY | COLO | Changed | C Language | Added DLL checks. |
There are no changes.
There are no changes.
There are no changes.
Table 327 summarizes copy member changes. This information is
presented in alphabetic order by the name of the copy member.
Table 327. Changes to Copy Members for C++ Support
Copy Member | Type | CSECT Where Copy Member Is Located | New, Changed, or No Longer Supported? | Description of Change |
---|---|---|---|---|
CCEB | Control Program | CCENBK | Changed | Added DLL checks and added a DLL error message. |
CCEC | Control Program | CCENBK | Changed | Added DLL checks. |
CCEG | Control Program | CCENBK | Changed | Changed a comment to mention DLLs. |
CIS1 | Control Program | CCISOC | Changed | Added a field to be used by the DLL support functions in the CISO library. |
CIS2 | Control Program | CCISOC | Changed | Added support for DLL load to allocate and initialize storage for DLLs. |
CLHH | Control Program | CCSTOR | Changed | Added support for freeing DLL storage. |
There are no changes.
The following section summarizes the macro changes. This information is presented in alphabetic order by the type of macro.
There are no changes.
There are no changes.
Table 328 summarizes the data macro changes. This information
is presented in alphabetic order by the name of the data macro.
Table 328. Changes to Data Macros for C++ Support
Data Macro | New, Changed, or No Longer Supported? | Do You Need to Reassemble Programs That Use This Data Macro? |
---|---|---|
IDSCID | Changed | No |
IDSELD | Changed | No |
IDSLST | Changed | No |
IDSPAT | Changed | No |
IDSPRG | Changed | No |
IDSPVR | Changed | No |
IDSTTR | Changed | No |
Table 329 summarizes the general macro changes. This
information is presented in alphabetic order by the name of the general
macro. See TPF General Macros for a complete
description of all general macros.
Table 329. Changes to General Macros for C++ Support
General Macro | New, Changed, or No Longer Supported? | Do You Need to Reassemble Programs? |
---|---|---|
FREEC | Changed | No |
Table 330 summarizes the selected equate macro changes. This
information is presented in alphabetic order by the name of the selected
equate macro.
Table 330. Changes to Selected Equate Macros for C++ Support
Selected Equate Macro | New, Changed, or No Longer Supported? | Do You Need to Reassemble Programs? |
---|---|---|
CZ1SE | Changed | No |
There are no changes.
Table 331 summarizes the system initialization program (SIP) skeleton
and internal macro changes. This information is presented in alphabetic
order by the name of the SIP skeleton and internal macro. See TPF System Generation for a complete description of the
SIP skeleton and internal macros. If the SIP skeleton and internal mcro
(inner macro) is changed, you must reassemble the SIP Stage I deck and run the
appropriate job control language (JCL) jobs from the SIP Stage II deck.
Table 331. Changes to SIP Skeleton and Internal Macros for C++ Support
SIP Skeleton and Internal Macro | New, Changed, or No Longer Supported? |
---|---|
SPEDCC | Changed |
SPGLB | Changed |
SPPBLD | Changed |
SPPGML | Changed |
SPTABS | Changed |
Table 332 summarizes system initialization program (SIP) Stage I macro and statement changes. This information is presented in alphabetic order by the name of the SIP Stage I macro. See TPF System Generation for a complete description of the SIP Stage I macros. If the SIP Stage I macro is changed, you must run the appropritae job control language (JCL) jobs from the SIP Stage II deck.
See System Initialization Program (SIP) and System Generation Changes for a description of other system generation changes you
must make.
Table 332. Changes to SIP Stage I Macros and Statements for C++ Support
SIP Stage I Macro | New, Changed, or No Longer Supported? |
---|---|
GENSIP | Changed |
Table 333 summarizes system initialization program (SIP) Stage II
macro changes. This information is presented in alphabetic order by the
name of the SIP Stage II macro. See TPF System
Generation for a complete description of the SIP Stage II macros.
If IBMPAL is changed, you must run the system allocator (SALO) and load the
new program allocation table (PAT) to the TPF 4.1
system.
Table 333. Changes to SIP Stage II Macros for C++ Support
SIP Stage II Macro | New, Changed, or No Longer Supported? |
---|---|
IBMPAL | Changed |
SPCOMP | Changed |
There are no changes.
There are no changes.
Table 334 summarizes system macro changes that are for IBM use
only. This information is presented in alphabetic order by the name of
the system macro.
Table 334. Changes to System Macros (IBM Use Only) for C++ Support
System Macro (IBM Use Only) | New, Changed, or No Longer Supported? | Do You Need to Reassemble Programs? |
---|---|---|
CFMCC | Changed | Yes |
CFMDC | Changed | Yes |
Table 335 summarizes segment changes. This information is
presented in alphabetic order by the name of the segment.
Table 335. Changes to Segments for C++ Support
Segment | Type | Link-Edit Module (Where Offline Segment Is Linked) | New, Changed, or No Longer Supported? | Description of Change |
---|---|---|---|---|
ACPL | Real-Time Assembler | Not Applicable | Changed | Added DLL checks. |
ALDR | Offline Assembler | TPFLDR | Changed | Changed a comment to mention DLL. |
CBLD | Offline C Language | CBLD | Changed | Added DLL support including support for the new DLL keyword to include DLL startup code CSTDLL. |
CIPY | Real-Time Assembler | Not Applicable | Changed | Added DLL checks. |
CLIB | Real-Time Assembler | Not Applicable | Changed | Added support for detecting an error when a run-time library contains a DLL module. |
CPRE | Real-Time Assembler | Not Applicable | Changed | Added support for detecting an error when a run-time library contains a DLL module. |
CSTDLL | Real-Time Assembler | Not Applicable | New | C++ startup code. |
CSTRTL | Real-Time Assembler | Not Applicable | New | Added support for detecting an error when a run-time library contains a DLL module. |
CVAW | Real-Time Assembler | Not Applicable | Changed | Added support to recognize DLL as a linkage type for the ZAPAT and ZDPAT commands. |
CVA6 | Real-Time Assembler | Not Applicable | Changed | Added support to recognize DLL as a linkage type for the ZAPAT and ZDPAT commands. |
DRVA | Offline Assembler | DRIVERA | Changed | Added C++ support. |
MASM | Offline Assembler | MASM | Changed | Added C++ support. |
NLDT | Offline C Language | TPFLDR | Changed | Added DLL checks and set appropriate indicators. |
OLDR | Offline C Language | TPFLDR | Changed | Added DLL checks. |
TLDR | Offline Assembler | TPFLDR | Changed | Added DLL checks. |
There are no changes.
Control Program (CP) User Exits and ECB User Exits summarize the control program (CP) and ECB user exit changes. See TPF System Installation Support Reference for a complete description of all user exits.
There are no changes.
This information is presented in alphabetic order by the name of the
function.
Table 336. Changes to ECB User Exits for C++ Support
Function | User Exit Activated In | User Exit Program | New, Changed, or No Longer Supported? | Description of Change |
---|---|---|---|---|
Program History | CIL7
CIPY CLDJ CLDZ CLEJ CLEW COLC COLK COLO CRLD CVAW | UELM | Changed | Added the passing of new value UXT_PH_DLL (to indicate a DLL) in the ph_linkage_type field. |
The following section summarizes functional and operational changes. This information is presented in alphabetic order by the functional or operational change.
See Appendix A, "PUT 2-15 Interface Changes by Authorized Program Analysis Report (APAR)" for a summary of functional and operational changes by APAR.
Table 337 summarizes command changes. This information is presented in alphabetic order by the name of the command. See TPF Operations for a complete description of all commands.
Attention: Changes to commands can impact any automation
programs you are using in your complex.
Table 337. Changes to Commands for C++ Support
Command | New, Changed, or No Longer Supported? | Description of Change |
---|---|---|
ZAPAT | Changed | Added support to recognize DLL as a linkage type. |
ZDPAT | Changed | Added support to recognize DLL as a linkage type. |
Table 338 summarizes message (offline and online messages) and system error changes.
The message IDs or system error numbers are listed in numeric order preceded by their alphabetic prefix. Some offline and online messages do not have a standard message ID. For these, the messages are presented in alphabetic order based on the initial message text; or for those messages that begin with variable information, the initial message text that follows that variable information. See Messages (System Error and Offline) and Messages (Online) for a complete description of all messages and system errors.
Attention: Changes to offline messages, online messages,
and system errors may impact any automation programs you are using in your
complex.
Table 338. Changes to Messages and System Errors for C++ Support
Message ID or System Error Number | Message Type | New, Changed, or No Longer Supported? |
---|---|---|
094015 | System Error | New |
094016 | System Error | New |
094017 | System Error | New |
094018 | System Error | New |
094101 | System Error | New |
094201 | System Error | New |
CBLD0805E | Offline | New |
OLDR2026T | Online | Changed |
OLDR2053T | Online | New |
There are no changes.
There are no changes.
Keep in mind the following:
If the source code is the CPP type, you must do one of the following:
See TPF System Generation for more information about SIP and MASM.
There are no changes.
There are no changes.
Table 339 summarizes changes to the publications in the TPF
library. This information is presented in alphabetic order by the
publication title. See the TPF Library Guide
for more information about the TPF library.
Table 339. Changes to TPF Publications for C++ Support
Publication Title | Softcopy File Name | Description of Change |
---|---|---|
TPF Application Programming | GTPAPP07 | Updated with information about application programming processes using C++ support. |
TPF C/C++ Language Support User's Guide | GTPCLU07 | Updated with information about the functions that were added for C++ support and for the ACP.IMPORTS.RELvv definition side-deck. |
TPF Concepts and Structures | GTPCON05 | Updated with information about the concepts and structures that were added or changed for C++ support. |
TPF General Macros | GTPGEN07 | Updated with information about the general macros that were changed for C++ support. |
TPF Library Guide | GTPDOC07 | Updated with definitions for new terminology in the master glossary. |
Messages (System Error and Offline) and Messages (Online) | Not Applicable | Updated with information about messages and system errors that were added and changed for C++ support. |
TPF Migration Guide: Program Update Tapes | GTPMIG07 | Updated with migration considerations for C++ support. |
TPF Operations | GTPOPR07 | Updated with information about the commands that were changed for C++ support. |
TPF Programming Standards | GTPPSM07 | Updated with information about the standards and conventions that were added for C++ support. |
TPF System Macros | GTPSYS07 | Updated with information about the system macros that were changed for C++ support. |
TPF System Installation Support Reference | GTPINR07 | Updated with information about MASM and the system initialization program (SIP) macros and processes that were changed for C++ support. |
There are no changes.
There are no changes.
There are no changes.
There are no changes.
There are no changes.
You must consider the following if you want to use C++ support:
You must code the SPPBLD macro in SPPGML for any C++ source code or dynamic link libraries (DLLs) you have because the SPPBLD macro supports:
See System Initialization Program (SIP) and System Generation Changes for a description of SIP changes. See TPF System Generation for a complete description of the SIP Stage I macros.
Notes: