gtpm2m1gMigration Guide: Program Update Tapes

C++ Support (APAR PJ25084)

The following section discusses the migration considerations for C++ support.

Prerequisite APARs

See the APEDIT for APAR PJ25084 for information about prerequisite APARs.

Note:
Be sure you have applied APAR PJ24541 before you apply APAR PJ25084.

Functional Overview

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.

Architecture

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:

Operating Environment Requirements and Planning Information

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.

Hardware

There are no hardware requirements.

Software (Programming 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:

Interface Changes

The following section summarizes interface changes.

C/C++ Language

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.

Build Scripts

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.

Dynamic Load Module (DLM) Stubs

There are no changes.

General Use C/C++ Language Header Files

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

Implementation-Specific C/C++ Language Header Files (IBM Use Only)

There are no changes.

Library Interface Scripts

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.

Library Members (Object Files)

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.

Link-Edited Modules

There are no changes.

Members (Object Files)

Table 326 summarizes changes to members (object files). This information is presented in alphabetic order by the name of the member (object file).

Notes:

  1. You must recompile or reassemble a member (object file) if it has changed.

  2. You must prelink and link a dynamic load module (DLM) if it has changed.

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.

Object Code Only (OCO) Stubs

There are no changes.

Configuration Constant (CONKC) Tags

There are no changes.

Control Program Interface (CINFC) Tags

There are no changes.

Copy Members

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.

Fixed File Records

There are no changes.

Macros

The following section summarizes the macro changes. This information is presented in alphabetic order by the type of macro.

Advanced Program-to-Program Communications (APPC) Macros

There are no changes.

Communication Macros and Statements

There are no changes.

Data Macros

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

General Macros

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

Selected Equate Macros

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

Structured Programming Macros (SPMs)

There are no changes.

System Initialization Program (SIP) Skeleton and Internal Macros (Inner Macros)

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

System Initialization Program (SIP) Stage I Macros and Statements

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

System Initialization Program (SIP) Stage II Macros

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

System Communication Keypoint (SCK) Generation Macros

There are no changes.

System Macros

There are no changes.

System Macros (IBM Use Only)

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

Segments

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.

System Equates

There are no changes.

User Exits

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.

Control Program (CP) User Exits

There are no changes.

ECB User Exits

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.

Functional and Operational Changes

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.

Commands

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.

Messages and System Errors

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

Performance or Tuning Changes

There are no changes.

Storage Considerations and Changes

There are no changes.

System Initialization Program (SIP) and System Generation Changes

Keep in mind the following:

See TPF System Generation for more information about SIP and MASM.

Loading Process Changes

There are no changes.

Online System Load Changes

There are no changes.

Publication 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.

Host System Changes

There are no changes.

Application Programming Interface (API) Changes

There are no changes.

Database Changes

There are no changes.

Feature Changes

There are no changes.

Installation Validation

There are no changes.

Migration Scenarios

You must consider the following if you want to use C++ support: