gtpm2m0kMigration Guide: Program Update Tapes

ISO-C Support (APAR PJ17852)

The following section discusses the migration considerations for ISO-C support.

ISO-C support brings with it new terminology. See TPF Application Programming for explanations of new terms and concepts.

ISO-C enhancements for program update tape 3 (PUT 3) include support for the E-type loader. See ISO-C E-Type Loader Support (APAR PJ19966) for more information.

Additional ISO-C changes for PUT 3 include the migration of the ZIMAG and ZTPLD commands to ISO-C dynamic load modules (DLMs). See Migration of TPF System Code to ISO-C Support (APAR PJ19938) for more information.

Prerequisite APARs

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

Functional Overview

With ISO-C support you can write applications using an ISO-C (equivalent to ANSI C) implementation of C. This brings TPF applications closer to open systems (UNIX).

Architecture

The architecture for ISO-C support is based on the C environment, as defined by the IBM SAA AD/Cycle C/370 family of compilers. The central structure for the compiler is the task communications area (TCA). The TCA is used by the compiler much the same as the ECB is used by the TPF 4.1 system. The layout of the fields and their usage is fixed by the compiler (and other tools) and is not changed by the TPF 4.1 system.

TPF 4.1 architecture for ISO-C support replaces that created for the TPF system's earlier C language support, called TARGET(TPF) where a distinction must be made. The ISO-C environment is considered to be separate from the TARGET(TPF) environment because the C structures used to support the ISO-C environment are different. From a C load module perspective, TARGET(TPF) programs run in the TPF environment. Although TARGET(TPF) has not been enhanced by this support, both C environments are supported.

Overall, the application development architecture is similar to architectures commonly found in non-TPF environments:

  1. Build scripts are created.
  2. A C program is compiled to produce an object file.
  3. The object file is prelinked with stub and startup object files to produce a composite object file.
  4. The composite object file is linked to produce a load module.
  5. The load module is written on a storage medium by the TPF loader (the E-type loader does not support ISO-C load modules).
    Note:
    ISO-C E-type loader support is provided with PUT 3. See ISO-C E-Type Loader Support (APAR PJ19966) for more information.
  6. The TPF online loader copies the program to the program database.
  7. The system fetch mechanism retrieves the code and runs the user program under the TPF 4.1 system.

Installing the ISO-C code without initially exploiting its functions allows for a more stable TPF environment. TARGET(TPF) and basic assembly language (BAL) applications currently running on the TPF 4.1 system can be loaded to the TPF 4.1 system with ISO-C support installed and be run at the same time as ISO-C applications. An attempt was made to make the integration of ISO-C support and TARGET(TPF) as seamless as possible.

Operating Environment Requirements and Planning Information

To ensure that your TPF 4.1 system performs correctly with ISO-C support, you must establish the required operating environment. The following section describes hardware and software requirements specific to ISO-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)

The following section provides information about software requirements.

Prerequisite software for this support includes one of the following C compilers:

In addition, ISO-C support takes advantage of instructions that are only provided by IBM High-Level Assembler for IBM MVS, IBM VM, and IBM VSE systems.

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 and Interface Scripts

Table 15 summarizes the scripts used for the library interface tool and the build tool. This information is presented in alphabetic order by the name of the segment.

See the TPF Library Guide for a complete list of segments in the TPF 4.1 system.

Table 15. Changes to Build and Interface Scripts for ISO-C Support

Build Script Type New, Changed, or No Longer Supported? Description of Change
CISO Build New Build script for ISO-C standard C library.
CISOXV Library Interface New Interface script for ISO-C standard C library.
CLLE Build New ISO-C UK LOCALE definition build script.
CLLF Build New ISO-C France LOCALE definition build script.
CLLG Build New ISO-C Germany LOCALE definition build script.
CLLI Build New ISO-C Italy LOCALE definition build script.
CLLS Build New ISO-C Spain LOCALE definition build script.
CLLT Build New ISO-C TPF LOCALE definition build script.
CLLU Build New ISO-C USA LOCALE definition build script.
CTAL Build New Build script for ISO-C TPF API C library.
CTALXV Library Interface New Interface script for ISO-C TPF API library.

Dynamic Load Module (DLM) Stubs

There are no changes.

General Use C Language Header Files

Table 16 summarizes the general use C language header file changes. This information is presented in alphabetic order by the name of the general use C language header file.

General use means these header files are available for your use.

Table 16. Changes to General Use C Language Header Files for ISO-C Support

General Use C Language Header File New, Changed, or No Longer Supported? Do You Need to Recompile Segments?
assert.h Changed No
bldtol.h New Not Applicable
c$cinfc.h Changed No
c$ck1ke.h Changed Not Applicable
c$dadfq.h Changed Not Applicable
c$eb0eb.h Changed No
c$fbd0.h Changed Not Applicable
c$fer0.h Changed Not Applicable
c$fva0.h Changed Not Applicable
c$icili.h New Not Applicable
c$icolr.h Changed Not Applicable
c$idseat.h Changed Yes
c$idseld.h Changed Yes
c$idselv.h Changed Yes
c$idsepd.h Changed Yes
c$idsldr.h New Not Applicable
c$idsmxp.h New Not Applicable
c$idsold.h Changed Yes
c$idspat.h Changed Yes
c$idsprg.h New Not Applicable
c$idspvr.h Changed Yes
c$idssal.h Changed Yes
c$idsuxt.h Changed Yes
c$stdhd.h Changed No
c$tpldr.h Changed Yes
ctca.h Changed No
ctool.h New Not Applicable
ctype.h Changed No
errno.h Changed No
exlocal.h Changed No
float.h Changed No
format.h Changed No
libi.h New No
libopts.h Changed No
limits.h Changed No
locale.h Changed No
math.h Changed No
nldtci.h New No
nldtif.h New No
stdarg.h Changed No
stddef.h Changed No
stdio.h Changed No
stdlib.h Changed No
string.h Changed No
sysapi.h Changed No
sysdef.h Changed No
systime.h Changed No
tca.h Changed No
time.h Changed No
timeinc.h Changed No
tpfapi.h Changed No
tpfctype.h New No
tpfeq.h Changed No
tpferrno.h New No
tpffloat.h New No
tpfglbl.h Changed No
tpfio.h Changed No
tpflimit.h New No
tpflink.h Changed No
tpflocal.h New No
tpfmap.h Changed No
tpfmath.h New No
tpfmcsll.h Changed No
tpfregs.h New No
tpfstarg.h New No
tpfstdef.h New No
tpfstdio.h New No
tpfstdlb.h New No
tpfstrng.h New No
tpftape.h Changed No
tpftime.h New No
tppc.h Changed No
wchar.h New No
zimageq.h Changed Yes
zimagmsg.h Changed Yes
ztpld.h Changed Yes

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

There are no changes.

Library Interface Scripts

There are no changes.

Library Module Names

Table 17 summarizes the library module changes. This information is presented in alphabetic order by the name of the library module.

Table 17. Changes to Library Modules for ISO-C Support

Library Module Name New, Changed, or No Longer Supported? Library Type
C$S370 New CISO Assembler
CABORT New CISO Assembler
CABS New CISO Object-Only
CACOS New CISO Object-Only
CASCTM New CISO Object-Only
CASIN New CISO Object-Only
CASSRT New CISO C Language
CATAN New CISO Object-Only
CATAN2 New CISO Object-Only
CATOF New CISO Object-Only
CATOIA New CISO Object-Only
CATTAC New CTAL Assembler
CATTCX New CTAL Assembler
CBDFMT New CISO Object-Only
CBGETS New CISO Assembler
CBPUTS New CISO Assembler
CBSRCH New CISO Object-Only
CCALOC New CISO Assembler
CCBCBS New CTAL Assembler
CCBCDB New CTAL Assembler
CCBCRE New CTAL Assembler
CCBCSA New CTAL Assembler
CCBCSS New CTAL Assembler
CCEIL New CISO Object-Only
CCIFRC New CTAL Assembler
CCINFC New CTAL Assembler
CCINT New CISO Object-Only
CCLOCK New CISO Assembler
CCLOCP New CISO Object-Only
CCLOCS New CISO Object-Only
CCNVRT New CISO Object-Only
CCORHC New CTAL Assembler
CCORUC New CTAL Assembler
CCOS New CISO Object-Only
CCREDC New CTAL Assembler
CCREEC New CTAL Assembler
CCREMC New CTAL Assembler
CCRETC New CTAL Assembler
CCRETL New CTAL Assembler
CCREXC New CTAL Assembler
CCROSC New CTAL Assembler
CCRUSA New CTAL Assembler
CCSID New CISO Object-Only
CCSONC New CTAL Assembler
CCTIME New CISO Object-Only
CDECHX New CISO Object-Only
CDEFRC New CTAL Assembler
CDETAC New CTAL Assembler
CDFTME New CISO Object-Only
CDIV New CISO Object-Only
CDLAYC New CTAL Assembler
CDOECV New CISO Object-Only
CDOFCV New CISO Object-Only
CDTACX New CTAL Assembler
CDTOP New CISO Object-Only
CENTDC New CTAL Assembler
CEVINC New CTAL Assembler
CEVNQC New CTAL Assembler
CEVNTC New CTAL Assembler
CEVNWC New CTAL Assembler
CEXIT New CISO Assembler
CEXP2 New CISO Object-Only
CFABS New CISO Object-Only
CFACE New CTAL Assembler
CFACES New CTAL C Language
CFACS New CTAL Assembler
CFILEC New CTAL C Language
CFILEX New CTAL Assembler
CFILNC New CTAL C Language
CFILNX New CTAL Assembler
CFILUC New CTAL C Language
CFILUX New CTAL Assembler
CFINDC New CTAL C Language
CFINDX New CTAL Assembler
CFINHC New CTAL C Language
CFINHX New CTAL Assembler
CFINWC New CTAL C Language
CFINWX New CTAL Assembler
CFIWHC New CTAL C Language
CFIWHX New CTAL Assembler
CFLIPC New CTAL Assembler
CFLRCD New CTAL C Language
CFLRCX New CTAL Assembler
CFMOD New CISO Object-Only
CFNRCD New CTAL C Language
CFNRCX New CTAL Assembler
CFREE New CISO Assembler
CFREXP New CISO Object-Only
CGDSNC New CTAL Assembler
CGDSRC New CTAL Assembler
CGETCC New CTAL Assembler
CGETFC New CTAL Assembler
CGETPC New CTAL Assembler
CGLOB New CTAL C Language
CGLOBA New CTAL Assembler
CGLOBK New CTAL Assembler
CGLOBL New CTAL C Language
CGLOBM New CTAL Assembler
CGLOBN New CTAL Assembler
CGLOBS New CTAL Assembler
CGLOBU New CTAL C Language
CGLOCK New CTAL Assembler
CGMTME New CISO Object-Only
CGSCAN New CISO Object-Only
CHEXDC New CISO Object-Only
CHXDSM New CISO Object-Only
CHXDTB New CISO Object-Only
CINQRC New CTAL Assembler
CISA New CISO Object-Only
CISAN New CISO Object-Only
CISC New CISO Object-Only
CISD New CISO Object-Only
CISG New CISO Object-Only
CISL New CISO Object-Only
CISPR New CISO Object-Only
CISPU New CISO Object-Only
CISSP New CISO Object-Only
CISU New CISO Object-Only
CISXD New CISO Object-Only
CKEYRC New CTAL Assembler
CLABS New CISO Object-Only
CLCLCO New CISO Object-Only
CLCLDT New CISO Object-Only
CLCTOD New CISO Object-Only
CLDIV New CISO Object-Only
CLDTPF New CISO Assembler
CLLOAD New CISO Object-Only
CLOCKC New CTAL Assembler
CLOG10 New CISO Object-Only
CLOG2 New CISO Object-Only
CLONGC New CTAL Assembler
CLVTST New CTAL Assembler
CLWAID New CISO Object-Only
CMACCP New CTAL C Language
CMALLC New CTAL C Language
CMALOC New CISO Assembler
CMASKC New CTAL Assembler
CMBINI New CISO Object-Only
CMBLEN New CISO Object-Only
CMBLN New CISO Object-Only
CMBWC New CISO Object-Only
CMBWCS New CISO Object-Only
CMCFM New CTAL C Language
CMCFMD New CTAL C Language
CMCHR New CISO Object-Only
CMCMP New CISO Object-Only
CMCPY New CISO Object-Only
CMCSLL New CTAL Assembler
CMDEAL New CTAL C Language
CMECS New CTAL C Language
CMEMN New CTAL C Language
CMEPLN New CTAL C Language
CMESL New CTAL C Language
CMFLUS New CTAL C Language
CMINIT New CTAL C Language
CMKTME New CISO Object-Only
CMMOVE New CISO Object-Only
CMPTR New CTAL C Language
CMRCV New CTAL C Language
CMRTS New CTAL C Language
CMSDT New CTAL C Language
CMSED New CTAL C Language
CMSEND New CTAL C Language
CMSERR New CTAL C Language
CMSET New CISO Object-Only
CMSMN New CTAL C Language
CMSPLN New CTAL C Language
CMSPTR New CTAL C Language
CMSRC New CTAL C Language
CMSSL New CTAL C Language
CMSST New CTAL C Language
CMSTPN New CTAL C Language
CMTRTS New CTAL C Language
CNLINF New CISO Object-Only
CNLSET New CISO Object-Only
CPADD New CISO Object-Only
CPAUSC New CTAL Assembler
CPCMP New CISO Object-Only
CPDASM New CISO Object-Only
CPDIV New CISO Object-Only
CPMPY New CISO Object-Only
CPOSTC New CTAL Assembler
CPOW New CISO Object-Only
CPROGC New CTAL Assembler
CPTOD New CISO Object-Only
CPTOSB New CISO Object-Only
CPTOUB New CISO Object-Only
CPVAL New CISO Object-Only
CQSORT New CISO Object-Only
CRAISA New CTAL Assembler
CRALOC New CISO Assembler
CRAND New CISO Object-Only
CRCOMP New CISO Object-Only
CREHKA New CTAL C Language
CRELCC New CTAL Assembler
CRELFC New CTAL Assembler
CRELPC New CTAL Assembler
CRERR New CISO Object-Only
CREXEC New CISO Object-Only
CRFREE New CISO Object-Only
CRIDCC New CTAL Assembler
CRLCHA New CTAL Assembler
CRMSGE New CISO Object-Only
CROUTC New CTAL Assembler
CRPMTH New CISO Object-Only
CRVTCC New CTAL Assembler
CSBTOP New CISO Object-Only
CSCAT New CISO Object-Only
CSCHR New CISO Object-Only
CSCMP New CISO Object-Only
CSCNH New CISO Object-Only
CSCNF New CISO C Language
CSCOLL New CISO Object-Only
CSCPY New CISO Object-Only
CSCSPN New CISO Object-Only
CSELEC New CTAL Assembler
CSERRC New CTAL Assembler
CSERRO New CTAL C Language
CSERRS New CTAL C Language
CSERRX New CTAL C Language
CSFMON New CISO Object-Only
CSFTME New CISO Object-Only
CSIN New CISO Object-Only
CSIPCC New CTAL Assembler
CSLEN New CISO Object-Only
CSNAPC New CTAL Assembler
CSNCAT New CISO Object-Only
CSNCMP New CISO Object-Only
CSNCPY New CISO Object-Only
CSONIC New CTAL Assembler
CSPBRK New CISO Object-Only
CSPRTF New CISO Object-Only
CSPTME New CISO Object-Only
CSQRT New CISO Object-Only
CSRCHR New CISO Object-Only
CSSCNF New CISO Object-Only
CSSPN New CISO Object-Only
CSSTR New CISO Object-Only
CSTLCL New CISO Object-Only
CSTOKA New CISO Object-Only
CSTOLD New CISO Object-Only
CSWSCC New CTAL Assembler
CSXFRM New CISO Object-Only
CSYSTC New CTAL Assembler
CTALL New CTAL C Language
CTALLC New CTAL Assembler
CTAN New CISO Object-Only
CTANH New CISO Object-Only
CTAOC New CTAL Assembler
CTAOR New CTAL Assembler
CTAPEC New CTAL Assembler
CTAPEO New CTAL Assembler
CTAPER New CTAL Assembler
CTAPEW New CTAL Assembler
CTASCN New CISO Object-Only
CTASNC New CTAL Assembler
CTBSPC New CTAL Assembler
CTCFM New CTAL Assembler
CTCFMD New CTAL Assembler
CTCLSC New CTAL Assembler
CTCNTL New CTAL Assembler
CTCPOR New CTAL Assembler
CTCPTR New CTAL Assembler
CTDEAL New CTAL Assembler
CTDSPC New CTAL Assembler
CTDSPQ New CTAL Assembler
CTDXPD New CISO Object-Only
CTEXP New CISO Object-Only
CTFLUS New CTAL Assembler
CTGATT New CTAL Assembler
CTGTYP New CTAL Assembler
CTIMEF New CISO Object-Only
CTLGNC New CISO Object-Only
CTOD New CISO Object-Only
CTOL New CISO Object-Only
CTOPNC New CTAL Assembler
CTOU New CISO Object-Only
CTOURC New CTAL Assembler
CTOUTC New CTAL Assembler
CTRCV New CTAL Assembler
CTRDC New CTAL Assembler
CTREWC New CTAL Assembler
CTRINT New CISO Object-Only
CTRSVC New CTAL Assembler
CTRT New CISO Object-Only
CTRTS New CTAL Assembler
CTSCSN New CISO Object-Only
CTSEND New CTAL Assembler
CTSERR New CTAL Assembler
CTSRAZ New CISO Object-Only
CTSYNC New CTAL Assembler
CTTAT New CISO Object-Only
CTTEST New CTAL Assembler
CTWAIT New CTAL Assembler
CTWRTC New CTAL Assembler
CTZDIF New CISO C Language
CUATBC New CTAL Assembler
CUBTOP New CISO Object-Only
CUNFRC New CTAL C Language
CUNFRX New CTAL Assembler
CUNHKA New CTAL C Language
CUNLKC New CTAL Assembler
CVSPTF New CISO Object-Only
CWAITC New CTAL Assembler
CWCMB New CISO Object-Only
CWCMBS New CISO Object-Only
CWCOLL New CISO Object-Only
CWCSID New CISO Object-Only
CWCTYP New CISO Object-Only
CWCWDT New CISO Object-Only
CWFTME New CISO Object-Only
CWGTAC New CTAL Assembler
CWISTY New CISO Object-Only
CWLEN New CISO Object-Only
CWNCPY New CISO Object-Only
CWSMBS New CISO Object-Only
CWSWDT New CISO Object-Only
CWTOLW New CISO Object-Only
CWTOPC New CTAL Assembler
CWTOPT New CTAL Assembler
CWTOUP New CISO Object-Only
CWXFRM New CISO Object-Only

Library Members (Object Files)

There are no changes.

Link-Edited Modules

There are no changes.

Members (Object Files)

There are no changes.

Object Code Only (OCO) Stubs

There are no changes.

Configuration Constant (CONKC) Tags

There are no changes.

Control Program Interface (CINFC) Tags

Table 18 summarizes the control program interface (CINFC) tag changes. The information in this table is ordered alphabetically by the equate name.

ISO-C support has reserved all the CINFC equates from 315 to 324. Those currently defined are listed in Table 18.

Table 18. Changes to CINFC Tags for ISO-C Support

CINFC Tag Equate Value New, Changed, or No Longer Supported?
CMMISOC 315 New
CMMICD 316 New
CMMEFC 319 New
CMMRTN 320 New

Copy Members

Table 19 summarizes copy member changes. This information is presented in alphabetic order by the name of the copy member.

Table 19. Changes to Copy Members for ISO-C Support

Copy Member Type CSECT Where Copy Member Is Located New, Changed, or No Longer Supported? Description of Change
CAAA Control Program CCNUCL Changed Add ISO-C comments.
CAPE Control Program CCNUCL Changed Support CCENBK.
CAPT Control Program CCNUCL Changed Support CCENBK.
CCIT Control Program CCNUCL Changed Support CCENBK.
CCPU Control Program CCNUCL Changed Support CCENBK.
CEET Control Program CCNUCL Changed Support CCENBK.
CHSZ Control Program CCNUCL Changed Create immediate/deferred entry control transfer.
CICR Control Program CCNUCL Changed Support CCENBK.
CICS Control Program CCNUCL Changed Macro Service Routines (2).
CTME Control Program CCNUCL Changed Changes external interrupt handler to tolerate ISO-C programs.
CCEB Control Program CCENBK Changed Handled program interface translations for ISO-C support. Moved to CCENBK.
CCEC Control Program CCENBK Changed Handled program interface translations for ISO-C support. Moved to CCENBK.
CCED Control Program CCENBK New Enter/Back routines for the ISO-C load module.
CCEF Control Program CCENBK New FETCH the ISO-C program from file.
CCEG Control Program CCENBK New Process program version records (PVRS).
CCE4 Control Program CCIISC Changed Support CCENBK.
CDC1 Control Program CCDCOL Changed Added collection data for DLMs.
CEFE Control Program CCTAPE Changed Updates made for error recovery.
CEFI Control Program CCFADC New CP $FINDC macro to accept DELB and IOB set up.
CEFJ Control Program CCFADC Changed Fixed segment title.
CIDP Control Program CCCPSE Changed Internal static override bitmap table.
CPER Control Program CCCPSE Changed Change implementation of PER support to tolerate ISO-C programs.
CPSE Control Program CCCPSE Changed Change system error code to detect ISO-C register conventions.
CPSL Control Program CCCPSE Changed Change system error dump to format ISO-C structures.
CPSF Control Program CCCPSF Changed Incorrect R11, R12 contents check removed.
CIS0 Control Program CCISOC New ISO-C data area and library support directory.
CIS1 Control Program CCISOC New ISO-C environment data and support.
CIS2 Control Program CCISOC New ISO-C static and stack routines.
CJIL Control Program CCSONA Changed Added new entry point EJFFINDC for IOBs.
CJIV Control Program CCRCSC Changed Support CCENBK.
CLHH Control Program CCSTOR Changed Heap storage management changes.
CLHV Control Program CCSTOR Changed GTSTK and related GMNBC changes.
CL02 Control Program CCLANG Changed Commentary changes.
CMKH Control Program CCMCKH Changed Reload TPF registers.
CTIN Control Program CCCTIN Changed Variable size stack and heap, page and segment tables in ECB virtual memory (EVM).
CT00 Control Program CCCTIN Changed Body of new stack and help related fields from keypoint.
CT38 Control Program CCCTIN Changed Compute stack and heap size. Copy AOLA address into the ECB activation table (EAT) slots.
CT40 Control Program CCCTIN Changed Stack and heap, page and segment tables carved.
CT81 Control Program CCCTIN Changed Process DLM Enter/Back macro trace overlays.
CUSR Control Program CCUEXT Changed New user exit support. Support CCENBK.
CVF3 Control Program CCVFAC Changed Bypass ECB counts for CP DASD I/O; enable MI0CPIO bit; bypass core block allocation.
CRTT Control Program CCUTIL Changed DLM Enter/Back intercept routines.
IB01 Control Program IPLB Changed Verify address range of virtual storage requirements plus real memory.

CSECTs

Table 20 summarizes CSECT changes. This information is presented in alphabetic order by the name of the CSECT.

Table 20. Changes to CSECTs for ISO-C Support

CSECT New, Changed, or No Longer Supported? Description of Change
CCENBK New Enter/back trace changes due to DLMs.
CCFADC Changed New CEFI copy member.
CCISOC New ISO-C support services.
CCNUCL Changed Moved enter/back trace to new CSECT.
CCSTOR Changed GTSTK service and GMNBC changes. Support for ISO-C stack.
CCUEXT Changed New user exit and library user exit activation; CCENBK support.
CPLKMP Changed Add new CSECTs.

Although the following CSECTs were not changed by ISO-C support, you must reassemble them. The CSECTS are CCSONS, CCMCDC, and CCCLHR.

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 21 summarizes the data macro changes. This information is presented in alphabetic order by the name of the data macro.

Table 21. Changes to Data Macros for ISO-C Support

Data Macro New, Changed, or No Longer Supported? Do You Need to Reassemble Programs Using This Data Macro?
BK1RP Changed No
CK1KE Changed Yes
CS0CA Changed No
CV0CM Changed No
DC0DC Changed Yes
DBRREC Changed No
DCTBXP Changed No
DCTMIO Changed Yes
DCTMSG Changed No
DCTPFX Changed No
DCTUCL Changed Yes
IC0CV Changed No
IDR0CB Changed No
IDSCCA New Not Applicable
IDSCID New Not Applicable
IDSCSF New Not Applicable
IDSDCS New Not Applicable
IDSDEC Changed Yes
IDSDSA New Not Applicable
IDSEAT Changed Yes
IDSELD Changed Yes
IDSFCT Changed No
IDSGLB New Not Applicable
IDSICD New Not Applicable
IDSLCS New Not Applicable
IDSLST New Not Applicable
IDSLWS New Not Applicable
IDSMXP New Not Applicable
IDSPAT Changed Yes
IDSPNL Changed Yes
IDSPRG New Not Applicable
IDSPVR Changed Not Applicable
IDSTCA New Not Applicable
IDSTTR Changed Yes
IPSTAT New Not Applicable
LDCRL Changed Yes
RUNID Changed No
SE0MS Changed Yes
TPLDR Changed Yes
UI2PF Changed Yes
UX1PL Changed No

General Macros

Table 22 summarizes 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 22. Changes to General Macros for ISO-C Support

General Macro New, Changed, or No Longer Supported? Do You Need to Reassemble Programs?
ALASC Changed No
BACKC Changed No
BEGIN Changed No
CREDC Changed No
CREEC Changed No
CREMC Changed No
CRETC Changed No
CREXC Changed No
CROSC Changed No
EDCLOC Changed No
ENTDC Changed No
ENTNC Changed No
ENTRC Changed No
FINIS Changed No
GETLC Changed No
GETPC Changed No
GETSC Changed No
ICELOG Changed No
ICPLOG Changed No
MODEC Changed No
PROGC Changed No
RELPC Changed No
SONIC Changed No
SWISC Changed No
TMSEC New Not Applicable
TMSPC New Not Applicable
UXCMC Changed No
WAITC Changed No
WGTAC Changed No

Selected Equate Macros

Table 23 summarizes selected equate macro changes. This information is presented in alphabetic order by the name of the selected equate macro.

Table 23. Changes to Selected Equate Macros for ISO-C Support

Selected Equate Macro New, Changed, or No Longer Supported? Do You Need to Reassemble Programs?
CINFC Changed No
CMFEQ Changed No
CZOCP Changed No
CZ1SE Changed No
DADFQ Changed No
DLTEC Changed Yes
ICYCWB Changed No
IEQCE2 Changed No
IEQCE3 Changed Yes
RTTEQ Changed No
SYSEQ Changed No

Structured Programming Macros (SPMs)

There are no changes.

System Communication Keypoint (SCK) Generation Macros

There are no changes.

System Initialization Program (SIP) Skeleton, Stage I, and Internal Macros (Inner Macros)

Table 24 summarizes the system initialization program (SIP) skeleton, stage 1, 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 macro (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. If the SIP Stage I macro is changed, you must run the appropriate JCL jobs from the SIP Stage II deck.

Table 24. Changes to SIP Skeleton and Internal Macros for ISO-C Support

SIP Skeleton, Stage I, and Internal Macro New, Changed, or No Longer Supported?
CORREQ Changed
GENSIP Changed
SKCTKA Changed
SKCTKB Changed
SPPBLD Changed
SPPGML Changed
SPCOMP Changed
SPEDCC Changed
SPGLB Changed
SPREPT Changed
SPTABS Changed

System Initialization Program (SIP) Stage II Macros

Table 25 summarizes the 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 25. Changes to SIP Stage II Macros for ISO-C Support

SIP Stage II Macro New, Changed, or No Longer Supported?
IBMPAL Changed

System Macros

Table 26 summarizes system macro changes. This information is presented in alphabetic order by the name of the system macro. See TPF System Macros for a complete description of all system macros.

Table 26. Changes to System Macros for ISO-C Support

System Macro New, Changed, or No Longer Supported? Do You Need to Reassemble Programs?
$DCOLC Changed No
$FINDC New Not Applicable
$GSVAC Changed Yes
$GTSTC New Not Applicable
DPROC Changed No
FTSTC Changed Yes
IBMSVC Changed Not Applicable
RPVRC New Not Applicable
SLNKC Changed No
UXITC Changed No
VCONC New Not Applicable

System Macros (IBM Use Only)

Table 27 summarizes system macro changes. This information is presented in alphabetic order by the name of the system macro.

Table 27. Changes to System Macros (IBM Use Only) for ISO-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 28 summarizes segment changes. This information is presented in alphabetic order by the name of the segment.

Table 28. Changes to Segments for ISO-C Support

Segment Type New, Changed, or No Longer Supported? Description of Change
ACPL Real-Time Assembler Changed Support for>4K load modules.
ALDR Offline Assembler Changed Support for>4K load modules.
BMT3 Real-Time Assembler Changed Deactivate DLM enter/back intercepts.
BMT5 Real-Time Assembler Changed Set intercepts for DLM external function call.
CBLD Offline C Language New Build tool to produce link decks and JCL.
CCLGER Assembler New ISO-C Germany locale definition.
CELC Real-Time C Language Changed Support program linkage type.
CELF Real-Time C Language Changed Support program linkage type.
CELI Real-Time C Language No Longer Supported Support program linkage type. Moved to CCEG.
CELK Real-Time C Language Changed Support program linkage type.
CIKD Real-Time C Language Changed ZIMAG COPY command (with the PROG parameter specified) support for #XPRG records.
CIKE Real-Time C Language Changed New messages for the ZIMAG COPY command (with the PROG parameter specified).
CILA Real-Time C Language Changed Support loading greater than 4K ISO-C load module.
CILB Real-Time C Language Changed Support loading greater than 4K ISO-C load module.
CILC Real-Time C Language New Support loading greater than 4K ISO-C load module.
CILD Real-Time C Language New Support loading greater than 4K ISO-C load module.
CILE Real-Time C Language New Support loading greater than 4K ISO-C load module.
CILF Real-Time C Language New Support loading greater than 4K ISO-C load module.
CILG Real-Time C Language New Support loading greater than 4K ISO-C load module.
CILH Real-Time C Language New Support loading greater than 4K ISO-C load module.
CILI Offline C Language New Offline loader common ISO-C functions to process C load modules.
CIL0 Real-Time C Language Changed Support loading greater than 4K ISO-C load module.
CIL1 Real-Time C Language Changed Support loading greater than 4K ISO-C load module.
CIL6 Real-Time C Language Changed Support loading greater than 4K ISO-C load module.
CIPY Real-Time Assembler Changed Do not allow the ZDPGM or ZAPGM command on ISO-C programs.
CLDF Real-Time C Language Changed Support loading greater than 4K ISO-C load module.
CLDJ Real-Time C Language Changed Support loading greater than 4K ISO-C load module.
CLDL Real-Time C Language Changed Support loading greater than 4K ISO-C load module. Support CCENBK.
CLDZ Real-Time C Language Changed Support loading greater than 4K ISO-C load module.
CLEF Real-Time C Language Changed Support loading greater than 4K ISO-C load module. Copy AOLA address into ECB activation table (EAT) slots.
CLEM Real-Time C Language Changed Support new record #XPRG.
CLE7 Real-Time C Language Changed Support loading greater than greater than 4K ISO-C load module.
CLE9 Real-Time C Language Changed Support loading greater than 4K ISO-C load module. Get program size from the program allocation table (PAT).
CLH0 Real-Time Assembler Changed Added ISO-C heap structures.
CLH2 Real-Time Assembler New Added ISO-C heap structures.
CLIB Real-Time Assembler New Fetch ISO-C library.
CLLENG Assembler New ISO-C UK locale definition.
CLLFRN Assembler New ISO-C France locale definition.
CLLITL Assembler New ISO-C Italy locale definition.
CLLOAD Assembler New ISO-C CISO internal C library function.
CLLSPA Assembler New ISO-C Spain locale definition.
CLLTPF Assembler New ISO-C TPF locale definition.
CLLUSA Assembler New ISO-C USA locale definition.
COLO Real-Time C Language Changed Support loading>4K ISO-C load module.
COLP Real-Time C Language Changed Support loading>4K ISO-C load module.
COLR Offline C Language Changed Support loading>4K ISO-C load module.
COLV Real-Time C Language Changed Program version-related information to PVR record.
CPRE Real-Time Assembler Changed Load ISO-C libraries that are allocated PREFETCH.
CPSU Real-Time Assembler Changed Added a message that program size is truncated to 7FFF.
CREA Offline C Language Changed Support CCENBK.
CRLW Real-Time C Language New Resegmentation of CLEM.
CSTRTD Assembler New ISO-C startup code for DLMs.
CSTRTL Assembler New ISO-C startup code for libraries.
CTKS Real-Time Assembler Changed Call CLIB to build ISO-C libraries. Added call to RPVRC to process PVR records.
CVAW Real-Time Assembler Changed Display program allocation table (PAT) linkage and restrict PAT settings for ISO-C support. Display enhancements.
CVA6 Real-Time Assembler Changed Display PAT linkage and restrict PAT settings for ISO-C support (the ZDPAT and ZAPAT commands).
CVA8 Real-Time Assembler New Display PAT linkage and restrict PAT settings for ISO-C support (the ZDPAT and ZAPAT commands). Resegment CVAW.
CVOJ Real-Time Assembler Changed Activation/deactivation of DLM enter/back trace overlay.
CYB1 Real-Time Assembler Changed Program size changes.
CYB2 Real-Time C Language Changed Do not allow the ZAPGM or ZDPGM commands in ISO-C programs.
CYB3 Real-Time Assembler Changed Program size changes.
DCR2 Offline Assembler Changed Add system errors.
DRVA Assembler Changed Add support for non-TARGET(TPF) compiles.
FMTR Offline Assembler Changed Added new data set type.
FTER00 Offline C Language Changed New error message.
FTVA02 Offline C Language Changed Program base definition checks.
FTVA03 Offline C Language Changed New XPRGn record and made PVRs required.
JRA2 Offline PL/I Changed Added DLM information to data collection reports.
JRP1 Offline PL/I Changed Added DLM information to data reduction reports.
JRP3 Offline PL/I Changed Added DLM information to data reduction reports.
LEDT Offline Assembler Changed Support loading>4K ISO-C load module.
LIBI Offline C Language New Library interface tool main segment.
MASM Assembler Changed Compiles ISO-C source code. Add support for non-TARGET(TPF) compiles.
NLDT Offline C Language New Support loading greater than 4K ISO-C load module.
NLDTRL Offline C Language New Support loading greater than 4K ISO-C load module.
OLDR Offline C Language Changed Support loading greater than 4K ISO-C load module.
RAISST Offline C Language New Common uppercase function.
STUB Offline C Language New Main segment for DLM stub generator tool.
TLDR Offline Assembler Changed Support to load greater than 4K ISO-C load module.
TLDRMN Offline C Language New C main () function for auxiliary loader (TLDR) and general file loader (ALDR)
TOKN Offline C Language New Shared token function.
UELI Real-Time Assembler New #XPRG user exit.
VMADD Offline C Language New For the IBM VM system. Adds text file to textlib.

Although the following segments were not changed by ISO-C support, you must reassemble them.

CELA CELB CELD CELE CELH
CELJ CELL CELM CELN CELO
CELP CELR CELS CELT CELU
CELV CELW CELX CELY CELZ
CEL0 CEL1 CEL2 CEL4 CEL5
CEL6 CEL7 CEL8 CILB CIL2
CIL3 CIL4 CIL5 CIL7 CLEJ
CLDY COLC COLK COLM COLN
COLW        

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

This information is presented in alphabetic order by the name of the control program (CP) user exit.

Table 29. Changes to Control Program (CP) User Exits for ISO-C Support

Control Program (CP) User Exit Activated In User Routine Label New, Changed, or No Longer Supported? Description of Change
CLMINT UCCCENV New DLM environment initialization.
CSTRTL UCCCLE New Entry to a C library function.
CSTRTL UCCCLX New Exit from a C library function.
CCISOC (CIS2) UCCCSOE New Entry to C stack overflow processing.
CCISOC (CIS2) UCCCSOX New Exit from C stack overflow processing.
CCNUCL (CHSZ) UCCECB Changed The exit itself has not changed but the ECB now contains additional information available through the exit.
CCENBK (CCED) UCCEFCE New DLM external function call exit.
CLMINT UCCEFCX New Exit before DLM function is called.
CLMINT UCCRTNE New DLM return processing entry.
CCENBK (CCED) UCCRTNX New DLM return processing exit.

ECB User Exits

This information is presented in alphabetic order by user exit.

Table 30. Changes to ECB User Exits ISO-C Support

ECB User Exit Activated In User Routine Label New, Changed, or No Longer Supported? Description of Change
UELI Not Applicable Changed Support new record #XPRG.

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 31 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 31. Changes to Commands for ISO-C Support

Command New, Changed, or No Longer Supported? Description of Change
ZAPAT Changed This command is restricted to CLASS=SHARED for ISO-C programs, DLMs, and libraries.
ZAPGM Changed This command cannot be used with C load modules.
ZCTKA Changed This command now supports the following parameters.

Parameter
Description

 EMPS 
Changes the page and segment table size of the maloc heap in EVMs. The size is in megabytes.

 ESPS 
Changes the page and segment table size of the ISO-C stack heap in EVMs. The size is in megabytes.

 MMHS 
Changes the maximum number of frames that an ECB can acquire in maloc heap. The maximum storage can not exceed the page and segment table size for maloc heap.

 MSHS 
Changes the maximum number of frames that an ECB can acquire in ISO-C stack heap. The maximum storage can not exceed the page and segment table size for the stack heap.

 ISAS 
Changes the number of frames acquired for initial stack allocation.

 ISAI 
Changes the number of frames acquired for ISO-C stack increment by the stack overflow routine.
ZDPAT Changed This command displays program linkage type and base PAT address.
ZDPGM Changed This command cannot be used with C load modules.

Messages and System Errors

Table 32 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 32. Changes to Messages and System Errors for ISO-C Support

Message ID or System Error Number Message Type New, Changed, or No Longer Supported?
ACPL0048E Online No Longer Supported
ACPL0049E Online No Longer Supported
ACPL0076E Online No Longer Supported
ACPL0077E Online No Longer Supported
ACPL0097W Online New
ACPL0098E Online New
ACPL0099E Online New
ACPL0100E Online New
ACPL0101E Online New
ACPL0102E Online New
ACPL0103E Online New
ALDR0901E Offline New
ALDR0902E Offline New
ALDR0903E Offline New
ALDR0904E Offline New
ALDR0905E Offline New
APAT0015E Online New
CBLD0000I Offline New
CBLD0400W Offline New
CBLD0401W Offline New
CBLD0410W Offline New
CBLD0801E Offline New
CBLD0802E Offline New
CBLD1201T Offline New
CBLD1208T Offline New
CBLD1211T Offline New
CBLD1222T Offline New
CILC0101E Online New
CILD0104E Online New
CILD0105E Online New
CILD0106W Online New
CILE0102E Online New
CILE0103W Online New
CILF0107E Online New
CILF0108E Online New
CILF0109W Online New
CILF0110E Online New
CILG0111E Online New
CILH0111E Online New
CPSF0003E Online No Longer Supported
CTKA0003I Online New
CTKA0004I Online New
CTKA0059E Online New
DADF0102E Online No Longer Supported
DADF0126E Online New
DPAT0001I Online No Longer Supported
DPAT0002I Online No Longer Supported
DPAT0003I Online New
DPAT0004I Online New
FCTB0107E Offline New
IMAG0079E Online New
IMAG0080E Online New
IMAG0081E Online New
IMAG0082E Online New
IMAG0083E Online New
LIBI0801E Offline New
LIBI0802E Offline New
LIBI0810E Offline New
LIBI0815E Offline New
LIBI0820E Offline New
LIBI0821E Offline New
LIBI0822E Offline New
LIBI0823E Offline New
LIBI0824E Offline New
LIBI1201T Offline New
LIBI1202T Offline New
LIBI1212T Offline New
LIBI1213T Offline New
LIBI1250T Offline New
LIBI1251T Offline New
LIBI1252T Offline New
LIBI1253T Offline New
LIBI1254T Offline New
LIBI1260T Offline New
STUB0001I Offline New
STUB0010W Offline New
STUB0100E Offline New
STUB0101E Offline New
STUB1200T Offline New
TLDR0200T Offline New
TLDR0201T Offline New
TLDR0202T Offline New
TLDR0210T Offline New
TLDR0211T Offline New
TPFL0002W Offline New
TPFL0003W Offline New
NOT LOADED -- PGM CAN ONLY BE LOADED IN THE BSS Offline New
NOT LOADED -- PGM NOT FOUND IN LIBRARY Offline New
NOT LOADED -- PGM NOT REALTIME Offline New
PARS LIST vv NOT AVAILABLE -- LOAD ENDS Offline New
WARNING -- REP CARD NOT SUPPORTED FOR PROGRAM MODULE Offline New
WARNING -- PROG-MOD-BASE CLEAR CARD INPUT, PROGRAM MODULE WILL BE CLEARED Offline New
00004D System Error New
00004F System Error No Longer Supported
000061 System Error New
000062 System Error New
000063 System Error New
000064 System Error New
000065 System Error New
000066 System Error New
000067 System Error New
000068 System Error New
000069 System Error New
00006A System Error New
00006B System Error New
00006C System Error New
000077 System Error New
000079 System Error New
094000 System Error New
094001 System Error New
094002 System Error New
094004 System Error New
094005 System Error New
094006 System Error New
094007 System Error New
094008 System Error New
094009 System Error New
09400A System Error New
09400B System Error New
09400C System Error New
09400D System Error New
09400F System Error New

Performance or Tuning Changes

The following packaging elements affect TPF performance with ISO-C support.

A TARGET(TPF) program with minimal changes can be transformed to a C load module but some further work will help performance. By linking together several segments rather than making a one-for-one conversion, functional calls between segments are avoided. The overhead of a function call within a load module is significantly less than the overhead of a call to an external DLM. The process of linking several segments together reduces the number of external functions, therefore increasing performance.

Linking several segments together has a disadvantage: because each load module has only one entry point function, some functions within the load module will no longer be callable from outside the load module. If the functions of multiple entry points to the same segment are useful, you may consider using a common segment to serve the several ones that represent each entry point. You also may want to consider forming library functions out of commonly used routines.

TPF Application Programming discusses the performance trade offs for the ISO-C function types. In brief, inline functions perform faster than functions internal to the load module, internal faster than library functions, and library faster than DLMs.

The compiler does not distinguish between writable static and read-only static. There is a performance overhead for reentrant static, particularly when calling library functions. Use the RENT compile-time option when compiling writable static. Functions considered naturally reentrant do not need to be compiled using the RENT option and the overhead associated with reentrant static is avoided. The RENT parameter should be used judiciously for library functions, because it entails performance concerns. If a segment does not specify the RENT option and it does include writable static data a system error occurs.

Data Collection Changes

There are several new or changed data collection functions that provide new information about the TPF 4.1 system.

Enter/Back Trace

The new DLM linkage support added to enter/back trace invokes the program collector intercept for all:

No new reduction reports are provided for ISO-C DLM enter/back trace activity, although a new field is provided under the current report.

Storage Management

Storage management routines have added the ISO-C stack frames to the heap frame usage data.

The usage of the CE2MPF field has changed. In the TPF 4.1 system this field was used to indicate how big the managed heap (MALOC) was able to grow. The check for the maximum number of frames has moved to $GMNBC and this field now indicates the total heap storage size allowed which includes requests from both MALOC and $GMNBC.

Core Resident Program Area (CRPA)

All ISO-C programs and libraries are loaded into the 31-bit CRPA. This is reflected in the CRPA report.

Performance Critical Macro Area

TARGET(TPF) C support provided a C library macro area (CSTKSVCL) so performance critical TPF macros could be generated without the overhead of allocating a new C stack frame.

For ISO-C support the library work space (LWS) is mapped by the IDSLWS DSECT and replaces the performance critical macro area. To maintain compatibility, all user tags in DSECT ICS0TK have a corresponding tag in the IDSLWS DSECT. The LWS is used by the TPFAPI functions that issue TPF macro calls. Addressability to the area is established by TMSPC. Only the functions that update the area should access data stored in the area.

The TMSPC and TMSEC macros support performance critical macros by providing access to the LWS area, called CSTKSVCL. To use this area for ISO-C functions, code TMSPC LWS=Rx.

Because access to the LWS is different than access to the performance critical macro area, all C library functions that use this area must be modified. The tag names in the critical area are different and code that accesses the critical area must be removed.

As is the case with the performance critical macro area, the LWS can only be used for macros that can not directly or indirectly run another C function. The size of the LWS is accessed through the IDSLWS DSECT. You can make the user expansion area larger by coding a routine in the CENV user exit.

Optimization level 2 improves the performance of ISO-C programs.

Storage Considerations and Changes

There are no changes.

System Initialization Program (SIP) and System Generation Changes

The system initialization program (SIP) automatically builds ISO-C applications and libraries provided by IBM. You must customize the JCL and tools provided to build your own ISO-C libraries and applications.

Changes to CRPA

The size of the 31-bit core resident program area changes due to making all ISO-C programs and libraries core resident. This value must be reflected in CORREQ and CTKA. The minimum amount required for the shipped libraries CTAL and CISO is 403920 bytes. The libraries require 108 #XPRG records for storage on DASD.

             Size in memory      Size on file
               (bytes)             (# XPRGs)
  CTAL          87 056                25
  CISO         316 864                83
              ---------              ---
  TOTAL        403 920               108

Compiles and Builds

The following required activities are performed automatically by SIP:

You must customize the JCL and tools provided for your own libraries and applications.

SPPBLD Macro in SPPGML

The SPPBLD macro has 3 new program types:

In addition to the program types there are parameters to specify program reentrancy and to generate a C stub:

RAMFIL Macro

#PVR records are now required.

A new required record type has been added, which is #XPRG. This 4 KB record type holds executable ISO-C code. #XPRG records are pointed to by #PROG records. Ordinals for #XPRG records are kept in #PROG records associated with each load module. The number of #XPRG records required can be estimated using the following formula:

                  number of 4 KB   number of overflow
Number #XPRGn  =  records for   +  directory records
records for a     machine code     needed
program
 
 
                  size_of_module     (size_of_module) / 4096
               =  --------------  +  -----------------------
                       4096                  500

Allocation Changes

TARGET(TPF) C applications that currently span several program segments, if they are merged into one ISO-C program, will require only a single PAT entry for the ISO-C load module after migration to ISO-C support. Program segments linked to an ISO-C load module can have their IBMPAL or USRTPF entries reused or removed (changed to SPARE records). This is also true for multiple run-time library functions merged into a single ISO-C library.

The program allocation table entry for ISO-C DLMs and libraries should specify PATTYPE=SHARED. This means that a single copy of the program code is used instead of multiple copies. The PATTYPE=SHARED condition is forced during restart. Because ISO-C support is required to be reentrant, program sharing is not a problem.

The PATLINK field has been added to the program allocation table (PAT) to represent type of program (that is, whether it is basic assembler language, a dynamic link module, an ISO-C library, or TARGET(TPF)).

Allocator (SALO) Changes

Allocate new ISO-C libraries as shared with a 31-bit addressing mode and the PRELOAD option set. If an ISO-C DLM or library is loaded to the system using an existing SAL/PAT entry, it is not necessary to change the allocation characteristics. The main storage copy of each ISO-C DLM or Library PAT entry is treated as shared. Restart interrogates all PVR entries (which now contain a field indicating the program type - BAL, TARGET(TPF), DLM, library) and updates the main storage copy PAT entries appropriately.

Loading Process Changes

There are the following changes to the loading process:

Online System Load Changes

There is a change to the ACPL message report.

Publication Changes

Table 33 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 33. Changes to TPF Publications for ISO-C Support

Publication Title Softcopy File Name Description of Change
TPF C Language Support Application Programming Not Applicable This publication is no longer part of the TPF library. The information that was found in this publication was merged into TPF Application Programming.
TPF Application Programming GTPAPP02 Contains information from TPF C Language Support Application Programming and TPF C Language Support User's Guide.
TPF C Language Support Reference Summary Not Applicable Functions added and changed.
TPF C Language Support User's Guide GTPCLU02 Functions added and first part merged.
TPF Concepts and Structures GTPCON01 Architecture changed.
TPF General Macros GTPGEN02 Macros added.
TPF Library Guide GTPDOC02 Updated with definitions for new terminology in the master glossary.
TPF Main Supervisor Reference GTPMSR01 Main processor changes.
Messages (System Error and Offline) and Messages (Online) Not Applicable Updated with information about the messages and system errors that were added, changed, and no longer supported for ISO-C support.
TPF Migration Guide: Program Update Tapes GTPMIG02 Updated with migration considerations for ISO-C support.
TPF Operations GTPOPR02 Updated with information about the commands that were added and changed for ISO-C support.
TPF Program Development Support Reference GTPPDR02 Tracing changed.
TPF Programming Standards GTPPSM02 Prologs added and changed.
TPF System Generation Installation parameters changed.
TPF System Installation Support Reference GTPINR02 User exits and loaders changed.
TPF System Macros GTPSYS02 Macros added.

Coexistent Configuration Changes

Application level coexistence is supported (that is, ISO-C and TARGET(TPF) programs can exist in the same processor).

Existing applications do not need to be recompiled. TARGET(TPF) and BAL applications which currently run on the TPF 4.1 system, can be loaded to the TPF 4.1 ISO-C system without change.

Functions such as the auxiliary loader are written in TARGET(TPF) to allow the new support to be loaded using existing functions.

For ISO-C assembler segments code the BEGIN macro with the TPFISOC=YES parameter (the default is TPFISOC=NO).

Host System Changes

ISO-C support requires changes to your existing procedures for compiling C programs. In addition, new procedures for linking load modules and building libraries are required. Several tools are provided to help with these procedures:

See TPF Application Programming for more information about these tools.

Application Programming Interface (API) Changes

There are the following changes to the application programming interface (API):

Database Changes

There are changes for the #PVR and #XPRG records.

Feature Changes

There are no changes.

Installation Validation

There are no changes.

Migration and Installation Considerations

This section provides information about migrating and installing ISO-C support.

Before You Install ISO-C Support

  1. Obtain education about how ISO-C support works for TPF system programmers.
  2. Ensure the proper C environment is set up.
  3. Determine the impact to the offline/source library to accommodate new ISO-C segment types.
  4. Analyze and adjust offline application program build procedures to include the prelink and link edit steps and creation of the C libraries (CTAL and CISO).
    Note:
    CTAL is the TPF API library and CISO is the standard C library.
  5. Do the following for an IBM MVS system only:
    1. Load the ISO-C support tapes on DASD storage.
    2. Copy the CTRT40 module from the ACP.OBJ.RELvv PDS to the ACP.CLIB.RELvv PDS and rename it to @@TRT.
    3. Create the C libraries (CTAL and CISO) and the locales.

      See TPF Application Programming for more information about creating C libraries.

  6. Consider modifying gets and puts according to the requirements of your complex:
    • The ISO-C support implementation of scanf calls gets to receive text from the core block attached to data level D0. The ISO-C support implementation of gets reads each character of input text and returns EOF when it reaches the #EOM character.
    • The ISO-C support implementation of printf calls puts to send text to EBROUT. The ISO-C support implementation of puts runs the WTOPC macro to send an unsolicited message without a header each time it is passed a new-line character (-n) or its buffer is filled.
  7. Migrate the user C libraries and TARGET(TPF) programs:
    1. Educate application programmers about writing ISO-C applications for the TPF 4.1 system.
    2. Investigate and perform the updates needed to migrate the user C library functions.
    3. Investigate and perform the updates needed to migrate the TARGET(TPF) programs to ISO-C support.
    4. Make the library function source updates and use new procedures to create the library load modules.
    5. Make any needed source updates and use new procedures to create ISO-C load modules.
  8. Provide new procedures for compiling ISO-C applications to your users.

Additional Information:

See TPF Application Programming for more information about the C libraries.