gtpp2m0hProgramming Standards

Source File Names

The following table identifies how to name source files.

Table 1. Naming Conventions for Source Files

Type of Source File Naming Convention Reserved Names Notes
CP CSECT CCxxxx, where x is any alphanumeric character. See Appendix A, "Deviations from Existing Naming Standards" for a list of CP CSECTs that deviate from the naming conventions.
COPY members axxx|x|x, where a is B, C, D, U, JC, or XL, and x is any alphanumeric character. The maximum length is six characters. See Appendix A, "Deviations from Existing Naming Standards" for a list of copy members of CP CSECTs that deviate from the naming conventions.
E-type (real-time) program
  • load module (DLM, library, DLL)
  • BAL
  • TARGET(TPF)
Note:
The program name is the name in the TPFLDR input deck.
axxx, where a is B, C, D, U, JC, or XL, and x is any alphanumeric character.
  • For the TPF Database Facility (TPFDF) product: members starting with BCB, BFA-BFB, BRC, BRZ, and all members beginning with UF (except those that start with UFF and UFH-UFJ, which are reserved for the TPFDF product for atraxis (Swissair) only).
  • For the Step-by-Step trace (SST) facility product: members starting with BT (BTxx).
  • For the CMS/TPF product: members in the CTP0-CTP9 and CTPA-CTPZ range.
  • For atraxis (Swissair): members starting with DC (DCxx), DI (DIxx), DO (DOxx), DP (DPxx), and CVZK, CVZN, and CVZO.

  • BRCP and BRCQ are already in use by the TPF product and are not available to TPFDF.
  • BTCB, BTIM, and BTLI are already in use by the TPF product and are not available to the SST facility.
  • See Appendix A, "Deviations from Existing Naming Standards" for a list of those TPF real-time programs that deviate from the naming conventions.

C/C++ source axxx/x/x, where a is B, C, D, U, JC, or XL, and x is any alphanumeric character.
  • The standard is to have 4- to 6-character names, but the guideline is to use 5- to 6- character names.1

C/C++ build script axxxBS
  • where a is B, C, D, U, JC, or XL, and x is any alphanumeric character.
  • axxx must match the load module name.
Because axxx matches the load module name, the same list of reserved names for E-type (real-time) programs applies.
C run-time (nondynamic) library interface script axxxXV
  • where a is B, C, D, U, JC, or XL, and x is any alphanumeric character.
  • axxx must match the load module library name.
Because axxx matches the load module name, the same list of reserved names for E-type (real-time) programs applies.
Ported code segments Same as the ported code name, unless it is a system-required function that must go through SIP. If you must change the file name, you must follow the TPF standard for file names.
  • Ported code segment names can be reused as long as the type is different. ABC.C and ABC.H are allowed. The key is that no two executable programs can have the same name.
  • Six-character segment names will be allowed for ported code.
  • Ported code will not have SID codes automatically placed on changed lines.

TPF external C/C++ header

(TPF interface protected; interface guaranteed)

C$xxxx, where x is any alphanumeric character.
  • If an equivalent BAL DSECT already exists, xxxx should be as close as possible to the name of the BAL DSECT.
  • If there is no BAL DSECT equivalent, there is no restriction. However, if an equivalent BAL DSECT is created, xxxx must match for both the external C/C++ header and BAL DSECT.2
  • Existing C headers, including those for drivers, will not be renamed and will remain exceptions.

TPF internal C/C++ header

(TPF implementation specific; interface not guaranteed)

I$xxxx, where x is any alphanumeric character.
  • If an equivalent BAL DSECT already exists, xxxx should be as close as possible to the name of the BAL DSECT.
  • If there is no BAL DSECT equivalent, there is no restriction. However, if an equivalent BAL DSECT is created, xxxx must match for both the internal C/C++ header and BAL DSECT.2

Ported C/C++ header Same name as ported header.
Ported C/C++ header files will not be renamed and will be named "as ported" unless they are more than 8 characters long. Ported C/C++ header files are restricted to 8 characters in length. Ported C/C++ header files are exceptions to the C/C++ header naming conventions.
Standard header Same name as standard.

BAL imperative macro

(any macro that generates code)

a(xxxx)C, where a is an alphabetic character and x is any alphanumeric character.

Note: xxxx is variable in length and can be from 1-4 characters in length. BAL imperative macros can be no longer than 6 characters in length but can be fewer than 6 characters.

  • For the Step-by-Step trace (SST) facility product: SSTxxC

  • Does not apply to system generation macros.
  • See "Macros" for a list of existing macros that currently deviate from these naming standards.
  • The FDRSC macro name is reserved for customer use.

BAL equate, declarative, keypoint, and control block macros 3 Ixxxx(x), where x is any alphanumeric character.
Note:
The 5th x is obsolete. All existing BAL equate, declarative, keypoint, and control block macros that are 6 characters in length are exceptions and will not be renamed.
  • For the Step-by-Step Trace (SST) product: ISSTxx.
  • For atraxis (Swissair):
    • IDxxDC
    • IRxxDC
    • ITxxDC
    • IWxxDC

  • Field names must start with I.
  • Does not apply to system generation macros.
  • If a BAL DSECT is created and it will also have an equivalent C header, the BAL DSECT will be Ixxxx,
    • where xxxx is any alphanumeric character.
    • where xxxx must match for both the BAL DSECT and C header.2
  • See "Macros" for a list of existing macros that currently deviate from these naming standards.

BAL global set symbols in macros &xx, where x is any alphanumeric character. All global set symbol names starting with &SU, &XU, and &U are for customer use. Global symbols must be unique to the system.
Notes:

1 The PDS member name for the compiled or assembled object code will be the same as the source file member name. This name must be unique in the directory that it is in. See TPF Application Programming for details about ISO-C, build scripts, and the library interface tool. See the BSCRLSCR prolog for a sample build script format.

2 In the following example, a new C header file is created and no BAL DSECT exists:

     C$TABL (external header)
 
     struct tpf_itabl_item
     {
       char itabl_field1;
       short int itabl_field2;
     }
But then, if a C$TABL BAL equivalent is created, it would be named ITABL. For example:
     ITABL
       ITABL_FIELD1   DS   CL1
       ITABL_FIELD2   DS   XL2
In the following example, a new C header file is created and there is an existing BAL DSECT:
     ECBHDR      a "made-up existing" TPF BAL DSECT
     C$ECBH      /* its new "made up" C language header
 
                 The field name in the C header should (but is not required to)
                 match those in the BAL DSECT.
                 

3Any equates that are specific to a declarative macro will be defined in the macro definition. For example, if the macro has indicator bytes with predefined bits, those bits will be defined via equates in the macro. These equates are available for program use with the macro call. The naming convention for all labels in a macro (including equates) should follow the macro naming convention and also begin with the letter I.