Languages Library TAL Reference Summary Abstract This manual provides a reference summary for TAL (Transaction Application Language) for system and application programmers. Part Number 096256 Edition Second Published Product Version Release ID Supported Releases September 1993 TAL C30, TAL D10, TAL D20 D20.00 This manual supports C30/D10.00 and all subsequent releases until otherwise indicated in a new edition.
Document History Edition Part Number Product Version Earliest Supported Release Published First Second 21455 096256 TAL C20 TAL C30 TAL D10 TAL D20 N/A C30/D10.00 March 1989 September 1993 New editions incorporate any updates issued since the previous edition. A plus sign (+) after a release ID indicates that this manual describes function added to the base release, either by an interim product modification (IPM) or by a new product version on a .99 site update tape (SUT).
Contents Notation Conventions 1 Running the Compiler 3 IN File Option 3 OUT File Option 3 TACL Run Options 3 Target File Option 4 Compiler Directives 4 Completion Codes Returned by the Compiler Keywords 6 Reserved Keywords 6 Nonreserved Keywords Identifiers 5 6 7 Identifier Classes 8 Data Types 9 Format of Data Types 10 Data Type Aliases 11 Storage Units 11 Constants 12 Character String Constants 12 STRING Numeric Constants 12 INT Numeric Constants 12 INT(32) Numeric Constants 13 FIXED Numeric Const
Contents Declarations 19 LITERAL and DEFINE Declarations LITERALs 19 DEFINEs 19 Simple Variable Declarations Simple Variables 20 Array Declarations Arrays 20 19 20 20 Read-Only Arrays 21 Structure Declarations 21 Definition Structures 21 Template Structures 21 Referral Structures 22 Simple Variables Declared in Structures 22 Arrays Declared in Structures 22 Definition Substructures 22 Referral Substructures 23 Fillers in Structures 23 Simple Pointers Declared in Structures 23 Structure Pointers Dec
Contents Base-Address Equivalenced Variable Declarations 30 Base-Address Equivalenced Simple Variables 30 Base-Address Equivalenced Definition Structures 31 Base-Address Equivalenced Referral Structures 31 Base-Address Equivalenced Simple Pointers 32 Base-Address Equivalenced Structure Pointers 32 NAME and BLOCK Declarations NAMEs 33 BLOCKs 33 33 Procedure and Subprocedure Declarations Procedures 34 Subprocedures 37 Entry Points 39 Labels 39 Statements 39 Compound Statements 39 ASSERT Statement 39 Assign
Contents Standard Functions 46 $ABS Function 46 $ALPHA Function 46 $AXADR Function 46 $BITLENGTH Function 46 $BITOFFSET Function 46 $BOUNDS Function 46 $CARRY Function 47 $COMP Function 47 $DBL Function 47 $DBLL Function 47 $DBLR Function 47 $DFIX Function 47 $EFLT Function 48 $EFLTR Function 48 $FIX Function 48 $FIXD Function 48 $FIXI Function 48 $FIXL Function 48 $FIXR Function 49 $FLT Function 49 $FLTR Function 49 $HIGH Function 49 $IFIX Function 49 $INT Function 50 $INTR Function 50 $LADR Function 50 $
Contents $READCLOCK Function 53 $RP Function 53 $SCALE Function 53 $SPECIAL Function 53 $SWITCHES Function 53 $TYPE Function 53 $UDBL Function 53 $USERCODE Function 54 $XADR Function 54 Privileged Procedures 54 System Global Pointers 54 SG'-Equivalenced Simple Variables 54 SG'-Equivalenced Definition Structures 55 SG'-Equivalenced Referral Structures 55 SG'-Equivalenced Simple Pointers 56 SG'-Equivalenced Structure Pointers 56 $AXADR Function 56 $BOUNDS Function 57 $SWITCHES Function 57 TARGET Directive 57
Contents ERRORS Directive 62 EXTENDSTACK Directive 62 EXTENDTALHEAP Directive 63 FIXUP Directive 63 FMAP Directive 63 GMAP Directive 63 HEAP Directive 63 HIGHPIN Directive 64 HIGHREQUESTERS Directive 64 ICODE Directive 64 IF and ENDIF Directives 65 INHIBITXX Directive 65 INNERLIST Directive 65 INSPECT Directive 66 INT32INDEX Directive 66 LARGESTACK Directive 66 LIBRARY Directive 66 LINES Directive 66 LIST Directive 67 LMAP Directive 67 MAP Directive 67 OLDFLTSTDFUNC Directive 68 OPTIMIZE Directive 68 PAGE
Contents SUBTYPE Directive 72 SUPPRESS Directive 72 SYMBOLPAGES Directive 72 SYMBOLS Directive 72 SYNTAX Directive 72 TARGET Directive 72 USEGLOBALS Directive 73 WARN Directive 73 Compiler Initialization Messages 74 About Error and Warning Messages Error Messages 75 76 Warning Messages SYMSERV Messages BINSERV Messages 110 125 125 Common Run-Time Environment Messages 096256 Tandem Computers Incorporated 125 ix
Reference Summary Notation Conventions This reference summary presents syntax in railroad diagrams. To use a railroad diagram, follow the direction of the arrows and specify syntactic items as indicated by the diagram and the term definitions that follow the diagram. Here is an example of a railroad diagram: SOURCE file-name define-name ( section-name ) , The parts of the diagram have these meanings: Branching SOURCE Specify the keyword as shown, using uppercase or lowercase.
TAL Reference Summary Notation Conventions Spacing Where no space is allowed, the notation ns appears in the railroad diagram. Here is an example of a diagram in which spaces are not allowed: ns int-expression ns . ns < > left-bit ns ns : ns right-bit 016 You can prefix identifiers of standard indirect variables with the standard indirection symbol (.) with no intervening space.
TAL Reference Summary Running the Compiler Running the Compiler To run the compiler, issue a compilation command at the TACL prompt. For example, you can compile the source file MYSOURCE and have the object code sent to the object file MYOBJECT as follows: TAL /IN mysource/ myobject You can specify the following options in the compilation command. IN File Option In the compilation command, the IN file is the source file. You can specify a file name or a TACL DEFINE as described in Appendix E.
TAL Reference Summary Running the Compiler Another run option you can specify is the MEM (memory) option, but the compiler always uses 64 pages. Target File Option The target file is the disk file that is to receive the object code. You can specify a file name or a TACL DEFINE name as described in Appendix E of the TAL Programmer’s Guide.
TAL Reference Summary Running the Compiler Completion Codes Returned by the Compiler When the compiler compiles a source file, it completes the compilation normally or stops abnormally. It then returns a process-completion code to the TACL product indicating the status of the compilation. The process-completion code values are: Code Termination Meaning 0 Normal 1 Normal 2 Normal 3 Abnormal 5 Abnormal 8 Normal The compiler found no errors or unsuppressed warnings in the source file.
TAL Reference Summary Keywords Keywords Keywords have predefined meanings to the compiler when used as shown in the syntax diagrams in this manual. Reserved Keywords The following keywords are reserved by the compiler. Do not use reserved keywords for your identifiers.
TAL Reference Summary Identifiers Identifiers Identifiers are names you declare for objects such as variables, LITERALs, DEFINEs, and procedures (including functions). Identifiers must conform to the following rules: They can be up to 31 characters long. They can begin with an alphabetic character, an underscore (_), or a circumflex (^). They can contain alphabetic characters, numeric characters, underscores, or circumflexes. They can contain lowercase and uppercase characters.
TAL Reference Summary Identifier Classes Identifier Classes Each identifier is a member of one of the following identifier classes. The compiler determines the identifier class based on how you declare the identifier. The compiler stores the identifier information in the symbol table.
TAL Reference Summary Data Types Data Types When you declare most kinds of variables, you specify a data type.
TAL Reference Summary Data Types Format of Data Types The format for specifying data types in declarations is: STRING INT INT REAL ( fpoint width ) UNSIGNED ( fpoint width ) ( fpoint fpoint ) FIXED * 214 width is a constant expression that, as of the D20 release, can include LITERALs and DEFINEs.
TAL Reference Summary Data Types Data Type Aliases Storage Units The compiler accepts the following aliases for the listed data types: Data Type Alias INT REAL FIXED(0) INT(16) REAL(32) INT(64) Storage units are the containers in which you can access data stored in memory.
TAL Reference Summary Constants Constants The following syntax diagrams describe: Character string constants (all data types) STRING numeric constants INT numeric constants INT(32) numeric constants FIXED numeric constants REAL and REAL(64) numeric constants Constant lists Character String Constants A character string constant consists of one or more ASCII characters stored in a contiguous group of bytes.
TAL Reference Summary Constants INT(32) Numeric Constants An INT(32) numeric constant is a signed or unsigned 32-bit integer. integer + D base %D 004 FIXED Numeric Constants A FIXED numeric constant is a signed 64-bit fixed-point integer. integer + base - F . fraction %F 005 REAL and REAL(64) Numeric Constants A REAL numeric constant is a signed 32-bit floating-point number that is precise to approximately 7 significant digits.
TAL Reference Summary Constants Constant Lists A constant list is a list of one or more constants.
TAL Reference Summary Expressions Expressions The following syntax diagrams describe: Arithmetic expressions Conditional expressions Assignment expressions CASE expressions IF expressions Group comparison expressions Bit extractions Bit shifts Arithmetic Expressions An arithmetic expression is a sequence of operands and arithmetic operators that computes a single numeric value of a specific data type.
TAL Reference Summary Expressions Conditional Expressions A conditional expression is a sequence of conditions and Boolean or relational operators that establishes the relationship between values. condition NOT condition AND OR NOT 011 condition Relational expression Two conditions connected by a relational operator. The result type is INT; a –1 if true or a 0 if false. Group comparison expression Unsigned comparison of a group of contiguous elements with another.
TAL Reference Summary Expressions CASE Expressions The CASE expression selects one of several expressions. CASE selector BEGIN OF ; expression END expression OTHERWISE ; 013 Group Comparison Expressions The group comparison expression compares a variable with a variable or a constant.
TAL Reference Summary Expressions IF Expressions The IF expression conditionally selects one of two expressions, usually for assignment to a variable. condition IF expression THEN expression ELSE 014 Bit Extractions A bit extraction accesses a bit field in an INT expression without altering the expression. ns int-expression ns .
TAL Reference Summary LITERAL and DEFINE Declarations Declarations Declaration syntax diagrams describe: LITERALs and DEFINEs Simple variables Arrays and read-only arrays Structures—definition structures, template structures, referral structures Structure items—simple variables, arrays, substructures, filler bytes, filler bits, simple pointers, structure pointers, and redefinitions Simple pointers and structure pointers Equivalenced variables NAMEs and BLOCKs Procedures and subprocedures LITERAL and DEFIN
TAL Reference Summary Simple Variable Declarations Simple Variable The following syntax diagram describes simple variable declarations: Declarations Simple Variables A simple variable associates an identifier with a single-element data item of a specified data type.
TAL Reference Summary Structure Declarations Read-Only Arrays A read-only array associates an identifier with a one-dimensional and nonmodifiable set of elements of the same data type. A read-only array is located in a user code segment.
TAL Reference Summary Structure Declarations Referral Structures A referral structure associates an identifier with a structure whose layout is the same as a previously declared structure and allocates storage for it. identifier STRUCT ( ) referral . .EXT ; lowerbound [ upperbound : ] 025 Simple Variables Declared in Structures A simple variable can be declared inside a structure. type ; identifier , 200 Arrays Declared in Structures An array can be declared inside a structure.
TAL Reference Summary Structure Declarations Referral Substructures A referral substructure can be declared inside a structure. STRUCT ( identifier ) referral ; lowerbound [ upperbound : ] 203 Fillers in Structures A filler is a byte or bit place holder in a structure. constant-expression FILLER ; BIT FILLER 026 Simple Pointers Declared in Structures A simple pointer can be declared inside a structure. type . ; identifier .
TAL Reference Summary Structure Declarations Simple Variable Redefinitions A simple variable redefinition associates a new simple variable with a previous item at the same BEGIN-END level of a structure. type identifier = ; previous-identifier 027 Array Redefinitions An array redefinition associates a new array with a previous item at the same BEGINEND level of a structure.
TAL Reference Summary Structure Declarations Referral Substructure Redefinitions A referral substructure redefinition associates a referral substructure with a previous item at the same BEGIN-END level of a structure. ( identifier STRUCT referral ) = lowerbound [ upperbound : previousidentifier ; ] 208 Simple Pointer Redefinitions A simple pointer redefinition associates a new simple pointer with a previous item at the same BEGIN-END level of a structure. .
TAL Reference Summary Pointer Declarations Pointer Declarations Simple Pointers The following syntax diagrams describe simple pointer and structure pointer declarations. A simple pointer is a variable you load with a memory address, usually of a simple variable or array, which you access with this simple pointer. . type ; identifier := .
TAL Reference Summary Equivalenced Variable Declarations Equivalenced Variable The following syntax diagrams describe equivalenced variable declarations for simple Declarations variables, simple pointers, structures, and structure pointers. Equivalenced Simple Variables An equivalenced simple variable associates a new simple variable with a previously declared variable.
TAL Reference Summary Equivalenced Variable Declarations Equivalenced Referral Structures An equivalenced referral structure associates a new referral structure with a previously declared variable. STRUCT identifier ( ) referral . .EXT = ; previous-identifier [ index + ... offset ] 206 Equivalenced Simple Pointers An equivalenced simple pointer associates a new simple pointer with a previously declared variable. type . identifier = previous-identifier .EXT ; [ index + ...
TAL Reference Summary Equivalenced Variable Declarations Equivalenced Structure Pointers An equivalenced structure pointer associates a new structure pointer with a previously declared variable. STRING . INT .EXT = identifier ( referral ) ; previous-identifier [ index + ...
TAL Reference Summary Base-Address Equivalenced Variable Declarations Base-Address The following syntax diagrams describe base-addressed equivalenced variable Equivalenced Variable declarations for simple variables, simple pointers, structures, and structure pointers. Declarations Base-Address Equivalenced Simple Variables A base-addressed equivalenced simple variable associates a simple variable with a global, local, or top-of-stack base address.
TAL Reference Summary Base-Address Equivalenced Variable Declarations Base-Address Equivalenced Definition Structures A base-addressed equivalenced definition structure associates a definition structure with a global, local, or top-of-stack base address. = identifier STRUCT base-address . .EXT ; [ index + ...
TAL Reference Summary Base-Address Equivalenced Variable Declarations Base-Address Equivalenced Simple Pointers A base-addressed equivalenced simple pointer associates a simple pointer with a global, local, or top-of-stack base address. . type = identifier base-address .EXT ; [ index + ... offset ] , 190 Base-Address Equivalenced Structure Pointers A base-addressed equivalenced structure pointer associates a structure pointer with a global, local, or top-of-stack base address. STRING .
TAL Reference Summary NAME and BLOCK Declarations NAME and BLOCK The following syntax diagrams describe NAME and BLOCK declarations. Declarations NAMEs The NAME declaration assigns an identifier to a compilation unit and to its private global data block if it has one. NAME ; identifier 032 BLOCKs The BLOCK declaration groups global data declarations into a named or private relocatable global data block.
TAL Reference Summary Procedure and Subprocedure Declarations Procedure and The following syntax diagrams describe procedure, subprocedure, entry-point, and Subprocedure label declarations. Declarations Procedures A procedure is a program unit that is callable from anywhere in the program.
TAL Reference Summary Procedure and Subprocedure Declarations parameter-list ( param-name ) param-pair , 210 param-pair : string length 039 proc-attribute MAIN INTERRUPT RESIDENT CALLABLE PRIV VARIABLE EXTENSIBLE ( LANGUAGE count ) C COBOL FORTRAN PASCAL UNSPECIFIED 187 096256 Tandem Computers Incorporated 35
TAL Reference Summary Procedure and Subprocedure Declarations param-spec param-type param-name . .
TAL Reference Summary Procedure and Subprocedure Declarations Subprocedures A subprocedure is a program unit that is callable from anywhere in the procedure.
TAL Reference Summary Procedure and Subprocedure Declarations param-spec param-type param-name . .
TAL Reference Summary Statements Entry Points The entry-point declaration associates an identifier with a secondary location from which execution can start in a procedure or subprocedure. ; identifier ENTRY , 195 Labels The LABEL declaration reserves an identifier for later use as a label within the encompassing procedure or subprocedure. ; identifier LABEL , 196 Statements The following syntax diagrams describe statements in alphabetic order.
TAL Reference Summary Statements Bit Deposit Assignment Statement The bit-deposit assignment statement assigns a value to a bit field in a variable. ns variable ns . ns < > left-bit ns ns ns : right-bit := expression 037 CALL Statement The CALL statement invokes a procedure, subprocedure, or entry point, and optionally passes parameters to it.
TAL Reference Summary Statements Labeled CASE Statement The labeled CASE statement executes a choice of statements the selector value matches a case label associated with those statements.
TAL Reference Summary Statements CODE Statement The CODE statement specifies machine-level instructions and pseudocodes to compile into the object file. CODE ( ) instruction ; 044 instruction No. Instruction Form 1 mnemonic 2 mnemonic identifier . @ 3 mnemonic constant 4 mnemonic register 5 mnemonic identifier , .
TAL Reference Summary Statements DROP Statement The DROP statement disassociates an identifier from an index register reserved by a USE statement or from a label. DROP identifier , 047 FOR Statement The FOR statement is a pretest loop that repeatedly executes a statement while incrementing or decementing an index. FOR index initial-value := TO limit DOWNTO DO BY step statement 048 GOTO Statement The GOTO statement unconditionally transfers program control to a labeled statement.
TAL Reference Summary Statements Move Statement The move statement copies contiguous bytes, words, or elements to a new location. destination ':=' '=:' source count FOR countunit –> nextaddr constant [ ] constant constant-list & 051 count-unit RETURN Statement BYTES Copies count bytes. If source and destination both have word addresses, BYTES generates a word copy for (count + 1) / 2 words. WORDS Copies count words. ELEMENTS Copies count occurrences of structures.
TAL Reference Summary Statements Scan Statement The SCAN or RSCAN statement scans sequential bytes for a test character from left to right or from right to left, respectively. variable SCAN test-char WHILE RSCAN UNTIL –> next-addr 053 STACK Statement The STACK statement loads values onto the register stack. STACK expression , 054 STORE Statement The STORE statement removes values from the register stack and stores them into variables.
TAL Reference Summary Standard Functions WHILE Statement The WHILE statement is a pretest loop that repeatedly executes a statement while a condition is true. condition WHILE DO statement 057 Standard Functions The following syntax diagrams describe standard functions in alphabetic order. $ABS Function The $ABS function returns the absolute value of an expression. The returned value has the same data type as the expression.
TAL Reference Summary Standard Functions $CARRY Function The $CARRY function checks the state of the carry bit in the environment register and indicates whether a carry out of the high-order bit position occurred. $CARRY 076 $COMP Function The $COMP function obtains the one’s complement of an INT expression. ( $COMP ) int-expression 077 $DBL Function The $DBL function returns an INT(32) value from an INT, FIXED(0), REAL, or REAL(64) expression.
TAL Reference Summary Standard Functions $EFLT Function The $EFLT function returns a REAL(64) value from an INT, INT(32), FIXED(fpoint), or REAL expression. $EFLT ( expression ) 082 $EFLTR Function The $EFLTR function returns a REAL(64) value from an INT, INT(32), FIXED(fpoint), or REAL expression and applies rounding to the result. ( $EFLTR ) expression 083 $FIX Function The $FIX function returns a FIXED(0) value from an INT, INT(32), REAL, or REAL(64) expression.
TAL Reference Summary Standard Functions $FIXR Function The $FIXR function returns a FIXED(0) value from an INT, INT(32), FIXED, REAL, or REAL(64) expression and applies rounding to the result. $FIXR ( expression ) 088 $FLT Function The $FLT function returns a REAL value from an INT, INT(32), FIXED(fpoint), or REAL(64) expression.
TAL Reference Summary Standard Functions $INT Function The $INT function returns an INT value from the low-order 16 bits of an INT(32 or FIXED(0) expression. $INT returns a fully converted INT expression from a REAL or REAL(64) expression. $INT ( ) expression 093 $INTR Function The $INTR function returns an INT value from the low-order 16 bits of an INT(32) or FIXED(0) expression. $INTR returns a fully converted and rounded INT expression from a REAL or REAL(64) expression.
TAL Reference Summary Standard Functions $LMAX Function The $LMAX function returns the maximum of two unsigned INT expressions. LMAX ( , int-expression ) int-expression 098 $LMIN Function The $LMIN function returns the minimum of two unsigned INT expressions. $LMIN ( , int-expression ) int-expression 099 $MAX Function The $MAX function returns the maximum of two signed INT, INT(32), FIXED(fpoint), REAL, or REAL(64) expressions.
TAL Reference Summary Standard Functions $OFFSET Function The $OFFSET function returns the number of bytes from the address of the zeroth structure occurrence to a structure data item. $OFFSET ( variable ) 104 $OPTIONAL Function The $OPTIONAL function controls whether a given parameter or parameter pair is passed to a VARIABLE or EXTENSIBLE procedure. OPTIONAL is a D20 or later feature.
TAL Reference Summary Standard Functions $READCLOCK Function The $READCLOCK function returns the current setting of the system clock. $READCLOCK 108 $RP Function The $RP function returns the current setting of the compiler’s internal RP counter. (RP is the register stack pointer.) $RP 109 $SCALE Function The $SCALE function moves the position of the implied decimal point by adjusting the internal representation of a FIXED(fpoint) expression.
TAL Reference Summary Privileged Procedures $USERCODE Function The $USERCODE function returns the content of the word at the specified location in the current user code segment. $USERCODE ( ) expression 114 $XADR Function The $XADR function converts a standard address to an extended address. $XADR ( ) variable 115 Privileged Procedures System Global Pointers The following syntax diagrams describe declarations for privileged procedures.
TAL Reference Summary Privileged Procedures 'SG'-Equivalenced Definition Structures The 'SG'-equivalenced definition structure declaration associates a definition structure with a location relative to the base address of the system global data area. = identifier STRUCT 'SG' . .SG .EXT ; [ index + ...
TAL Reference Summary Privileged Procedures 'SG'-Equivalenced Simple Pointers The 'SG'-equivalenced simple pointer declaration associates a simple pointer with a location relative to the base address of the system global data area. . type = identifier 'SG' .SG .EXT ; [ index + offset ] , 069 'SG'-Equivalenced Structure Pointers The 'SG'-equivalenced structure pointer declaration associates a structure pointer with a location relative to the base address of the system global data area.
TAL Reference Summary Privileged Procedures $BOUNDS Function The $BOUNDS function checks the location of a parameter passed to a system procedure to prevent a pointer that contains an incorrect address from overlaying the stack (S) register with data. ( $BOUNDS param , ) count 117 $SWITCHES Function The $SWITCHES function returns the current content of the switch register. $SWITCHES 119 TARGET Directive The TARGET directive specifies the target system for which you have written conditional code.
TAL Reference Summary Compiler Directives Compiler Directives The following syntax diagrams describe directive lines, followed by compiler directives in alphabetic order. Directive Lines A directive line in your source code contains one or more compiler directives. directive ? , 120 ABORT Directive The ABORT directive terminates compilation if the compiler cannot open a file specified in a SOURCE directive. The default is ABORT.
TAL Reference Summary Compiler Directives CHECK Directive CHECK generates range-checking code for certain features. The default is NOCHECK. CHECK NOCHECK PUSHCHECK POPCHECK 125 CODE Directive CODE lists instruction codes and constants in octal format after each procedure. The default is CODE. CODE NOCODE PUSHCODE POPCODE 126 COLUMNS Directive COLUMNS directs the compiler to treat any text beyond the specified column as comments.
TAL Reference Summary Compiler Directives CPU Directive CPU specifies that the object file runs on a TNS system. (The need for this directive no longer exists. This directive has no effect on the object file and is retained only for compatibility with programs that still specify it.) CPU cpu-type 129 CROSSREF Directive CROSSREF collects source-level declarations and cross-reference information or specifies CROSSREF classes. The default is NOCROSSREF.
TAL Reference Summary Compiler Directives DECS Directive DECS decrements the compiler’s internal S-register counter. DECS sdec-value = DEFEXPAND Directive 132 DEFEXPAND lists expanded DEFINEs and SQL-TAL code in the compiler listing. The default is NODEFEXPAND. DEFEXPAND NODEFEXPAND PUSHDEFEXPAND POPDEFEXPAND 133 DEFINETOG Directive DEFINETOG specifies named or numeric toggles, without changing any prior settings, for use in conditional compilation. DEFINETOG is a D20 or later feature.
TAL Reference Summary Compiler Directives ENV Directive ENV specifies the intended run-time environment of a D-series object file. The default is ENV NEUTRAL.
TAL Reference Summary Compiler Directives EXTENDTALHEAP Directive EXTENDTALHEAP increases the size of the compiler’s internal heap for a D-series compilation unit. EXTENDTALHEAP num-pages = 194 FIXUP Directive FIXUP directs BINSERV to perform its fixup step. The default is FIXUP. FIXUP NOFIXUP 140 FMAP Directive FMAP lists the file map. The default is NOFMAP. FMAP NOFMAP 141 GMAP Directive GMAP lists the global map. The default is GMAP.
TAL Reference Summary Compiler Directives HIGHPIN Directive HIGHPIN sets the HIGHPIN attribute in a D-series object file. HIGHPIN 144 HIGHREQUESTERS Directive HIGHREQUESTERS sets the HIGHREQUESTERS attribute in a D-series object file. HIGHREQUESTERS 145 ICODE Directive ICODE lists the instruction-code (icode) mnemonics for subsequent procedures. The default is NOICODE.
TAL Reference Summary Compiler Directives IF and ENDIF Directives IF and IFNOT control conditional compilation based on a condition. The ENDIF directive terminates the range of the matching IF or IFNOT directive. The D20 or later release supports named toggles and target-system toggles.
TAL Reference Summary Compiler Directives INSPECT Directive INSPECT sets the Inspect product as the default debugger for the object file. The default is NOINSPECT. INSPECT NOINSPECT 150 INT32INDEX Directive INT32INDEX generates INT(32) indexes from INT indexes for accessing items in an extended indirect structure in a D-series program. The default is NOINT32INDEX.
TAL Reference Summary Compiler Directives LIST Directive LIST lists the source text for subsequent source code if NOSUPPRESS is in effect. The default is LIST. LIST NOLIST PUSHLIST POPLIST 155 LMAP Directive LMAP lists load-map and cross-reference information. The default is LMAP ALPHA.
TAL Reference Summary Compiler Directives OLDFLTSTDFUNC Directive OLDFLTSTDFUNC treats arguments to the $FLT, $FLTR, $EFLT, and $EFLTR standard functions as if they were FIXED(0) values. OLDFLTSTDFUNC 158 OPTIMIZE Directive OPTIMIZE specifies the level at which the compiler optimizes the object code. OPTIMIZE level = 159 level 0 1 2 PAGE Directive None Within a statement Within and across statement boundaries PAGE optionally prints a heading and causes a page eject.
TAL Reference Summary Compiler Directives RELOCATE Directive RELOCATE lists BINSERV warnings for declarations that depend on absolute addresses in the primary global data area of the user data segment. RELOCATE 163 RESETTOG Directive RESETTOG creates new toggles in the off state and turns off toggles created by SETTOG. As of the D20 release, RESETTOG supports named toggles.
TAL Reference Summary Compiler Directives RUNNAMED Directive RUNNAMED causes a D-series object file to run on a D-series system as a named process even if you do not provide a name for it. RUNNAMED 167 SAVEABEND Directive SAVEABEND directs the Inspect product to generate a save file if your process terminates abnormally during execution. The default is NOSAVEABEND.
TAL Reference Summary Compiler Directives SECTION Directive SECTION gives a name to a section of a source file for use in a SOURCE directive. SECTION section-name 171 SETTOG Directive SETTOG turns the specified toggles on for use in conditional compilations. As of the D20 release, SETTOG supports named toggles. SETTOG toggle-name toggle-number , ( ) toggle-name toggle-number , SOURCE Directive 172 SOURCE specifies source code to include from another source file.
TAL Reference Summary Compiler Directives SUBTYPE Directive SUBTYPE specifies that the object file is to execute as a process of a specified subtype. SUBTYPE subtype-number = 175 SUPPRESS Directive SUPPRESS overrides all the listing directives. The default is NOSUPPRESS. SUPPRESS NOSUPPRESS 176 SYMBOLPAGES Directive SYMBOLPAGES sets the size of the internal symbol table the compiler uses as a temporary storage area for processing variables and SQL statements.
TAL Reference Summary Compiler Initialization Messages USEGLOBALS Directive USEGLOBALS retrieves the global data declarations saved in a file by SAVEGLOBALS during a previous compilation. USEGLOBALS file-name define-name define-name assign-name 179 WARN Directive WARN instructs the compiler to print a selected warning or all warnings. The default is WARN.
TAL Reference Summary About Error and Warning Messages About Error and The compiler scans each line of the source code and notifies you of an error or Warning Messages potential error by displaying one of two types of messages: Message Meaning User Action Error Indicates a source error that prevents compilation of the source file into an object file. Correct the error and recompile the source code. Warning Indicates a potential error condition that might affect program compilation or execution.
TAL Reference Summary Error Messages Error Messages 0 Error diagnostic messages identify source errors that prevent correct compilation. No object file is produced for the compilation. Compiler error This error means that the compiler’s data is no longer correct. If the IN and OUT file numbers are incorrect when the compiler tries to send error 0 to the OUT file, the following file error appears at the home terminal. This error means the file has not been opened.
TAL Reference Summary Error Messages 1 Parameter mismatch A parameter mismatch, such as the following, has occurred: The parameter type of an actual parameter is not the parameter type expected by that procedure. Pass an actual parameter that has the expected parameter type. The addressing mode (standard versus extended) of a parameter declaration does not match the addressing mode of its FORWARD or EXTERNAL declaration.
TAL Reference Summary Error Messages 5 Global primary area exceeds 256 words The space required for your global variables exceeds the 256-word global primary area.
TAL Reference Summary Error Messages 9 Compiler does not allocate space for .SG STRUCTs A structure declaration incorrectly includes .SG (the system global indirection symbol). To access the system global area, you can: Equivalence a structure to a location relative to the base address of the system global area. (See Section 15, “Privileged Procedures.”) Declare a system global pointer (using the .SG symbol) and assign a structure address to it.
TAL Reference Summary Error Messages 11 Illegal reference [ variable-name ] [ parameter-number ] Conditions that cause this error include: A variable appears where a constant is expected, or a constant appears where a variable is expected. Replace variable-name with a constant or variable as required. A CALL statement passes a value parameter to a procedure that expects a reference parameter. Replace the parameter indicated by parameter-number with a reference parameter.
TAL Reference Summary Error Messages 14 Only initialization with constant value(s) is allowed A global initialization expression includes variables. Initialize global data only with constant expressions, which can include @identifier when used with standard functions that return a constant value. @ accesses the address of identifier, which must be a nonpointer variable with a 16-bit address. For example: STRUCT .st[0:1]; BEGIN INT a; INT b; INT c; END; 15 INT .p1 := @st.b; INT .
TAL Reference Summary Error Messages 17 Formal parameter type specification is missing A declaration for a formal parameter is missing in the procedure or subprocedure header. Declare the missing formal parameter or remove its identifier from the formal parameter list. 18 Illegal array bounds specification Incorrect bounds appear in an array declaration. To correct this error: Specify bounds that are constant expressions. Specify a lower bound that is smaller than the upper bound.
TAL Reference Summary Error Messages 21 Label declared more than once Duplicate label identifiers appear in the same procedure as shown in the following example. Specify label identifiers that are unique within a procedure. PROC q; BEGIN mylabel: !Some statements here mylabel: !More statements here END; 22 !Duplicate label identifier Only standard indirect variables are allowed The extended (32-bit) indirection symbol (.EXT) appears where the compiler expects standard indirection.
TAL Reference Summary Error Messages 27 Illegal syntax A statement or the line preceding it contains one or more syntax errors.
TAL Reference Summary Error Messages 31 Only PROC or SUBPROC identifier allowed A CALL statement specifies an incorrect identifier. In the CALL statement, specify the identifier of a procedure, subprocedure, or entry point. 32 Type incompatibility This message indicates one of the following conditions: An expression contains operands of different data types. To make the types match, use type-transfer standard functions or specify constants correctly.
TAL Reference Summary Error Messages 35 Subprocedures cannot be parameters A subprocedure is declared as a formal parameter or is passed as an actual parameter. You can declare and pass procedures (but not subprocedures) as parameters. 36 Illegal range A specified value exceeds the allowable range for a given operation. Correct the value. 37 Missing identifier A required identifier is missing from the current statement. Provide the missing identifier.
TAL Reference Summary Error Messages 40 Only allowed with a variable A bit-deposit construct is applied to a variable other than STRING or INT: INT i; UNSIGNED(5) uns5; i := uns5.<13:14>; !Error 40 appears To correct the preceding error, change the variable to STRING or INT: INT i, var; i := var.<13:14>; An operation or construct that is valid only when used with a variable appears in some other context, such as appending a bit-deposit field to an expression: INT a, b; (a+b).
TAL Reference Summary Error Messages 42 Table overflow number Your source program fills one of the fixed-size tables of the compiler. No recovery from this condition is possible. Correct the source program as indicated in the following table (number identifies the affected table): 43 Number Table Name Condition/Action 0 Constant 1 2 Tree Pseudo-Label 3 Parametric DEFINE 4 Section Place a DUMPCONS directive before the point of overflow to force the constant table to be dumped.
TAL Reference Summary Error Messages 47 Illegal for 16-bit INT An INT value appears where the compiler expected an INT(32) value. For the unsigned divide ('/') and unsigned modulo divide ('\') operations, specify an INT(32) dividend and an INT divisor. 48 Missing item-specification The source code is missing item-specification. Supply the missing item. 49 Undeclared identifier A reference to an undeclared data item appears in the source file. Declare the item or change the reference.
TAL Reference Summary Error Messages 53 Edit file has invalid format or sequence n The compiler detects an unrecoverable error in the source file. In the message, n is a negative number that identifies one of the following conditions: 54 Number Condition/Action –3 –4 Text-file format error. Correct the format. Sequence error—the line number of the current source line is less than that of the preceding line. Correct the sequence of source lines.
TAL Reference Summary Error Messages 59 Division by zero The compiler detects an attempt to divide by 0. Correct the expression to avoid division by 0. 60 Only a data variable may be indexed An index is appended to an invalid identifier such as the identifier of a label or an entry point. Append an index only to the identifier of a variable.
TAL Reference Summary Error Messages 65 Illegal parameter or routine not variable The formal-param supplied to the $PARAM function is not in the formal parameter list for the procedure, or the $PARAM function appears in a procedure that is not VARIABLE or EXTENSIBLE. Use the $PARAM function only in VARIABLE procedures and subprocedures and in EXTENSIBLE procedures.
TAL Reference Summary Error Messages 71 Only INT or STRING STRUCT pointers are allowed A structure pointer of an incorrect data type occurs. Specify only INT or STRING data type when you declare structure pointers. 72 Indirection must be supplied An indirection symbol is missing from a pointer declaration. When you declare a pointer, specify an indirection symbol preceding the pointer identifier. 73 Only a structure identifier may be used as a referral An incorrect referral occurs in a declaration.
TAL Reference Summary Error Messages 77 Unsigned variables may not be subscripted An indexed (subscripted) reference to an UNSIGNED simple variable occurs. Remove the index from the identifier of the UNSIGNED simple variable. 78 Invalid number form A floating-point constant appears in an incorrect form. Use one of the forms described in “REAL and REAL(64) Numeric Constant” in Section 3, “Data Representation.
TAL Reference Summary Error Messages 83 CPU type must be set initially A CPU directive appears in the wrong place. Specify this directive preceding any data or procedure declarations. 84 There is no SCAN instruction for extended memory An extended indirect array is the object of a SCAN or RSCAN statement. The hardware does not support scans in extended memory. Move the array temporarily into a location in the user data segment and perform the scan operations there. 85 Bounds illegal on .SG or .
TAL Reference Summary Error Messages 90 Invalid object file name - file-name The object file name is incorrect. Specify the name of a disk file. 91 Invalid default volume or subvolume The default volume or subvolume in the startup message is incorrect. Correct the volume or subvolume name. 92 Branch to entry point not allowed An entry point is the target of a GOTO statement. Following the entry point, add a label identifier and then specify the label identifier in the GOTO statement.
TAL Reference Summary Error Messages 96 Address references between global data blocks not allowed A variable declared in one global data block is initialized with the address of a variable declared in another global data block. Because global data blocks are relocatable, such an initialization is invalid. Include both declarations in the same global data block (or BLOCK declaration). This message occurs only if the compilation begins with a NAME declaration.
TAL Reference Summary Error Messages 102 Illegal operand for ACON A CODE statement contains an incorrect constant for the ACON option. Specify a constant that represents the absolute run-time code address associated with the label in the next instruction location. An absolute code address is relative to the beginning of the code space in which the encompassing procedure resides.
TAL Reference Summary Error Messages 109 Case label range must be non-empty - range A case alternative in a labeled CASE statement has no values associated with it. Specify at least one value for each case alternative. 110 This case label (or range) overlaps a previously used case label - n The value n appears as a case label more than once in a labeled CASE statement. Specify unique case labels within a CASE statement.
TAL Reference Summary Error Messages 115 Missing FOR part The FOR count clause is missing from a move statement. Include the FOR count clause in the move statement. 116 Illegal use of period prefix An incorrect use of the period (.) prefix occurs. Use this prefix only as follows: As an indirection symbol in declarations As a separator in qualified identifiers of structure items, as in MYSTRUCT.SUBSTRUCT.
TAL Reference Summary Error Messages 121 Only STRUCT items are allowed here An incorrect argument to the $BITOFFSET function appears. Specify only a structure item as the $BITOFFSET argument. 122 Extended MOVE or GROUP COMPARISON needs a 32-bit NEXT ADDRESS variable The next-address (next-addr) variable in a move statement or a group comparison expression is the wrong data type.
TAL Reference Summary Error Messages 126 Initialization of local extended arrays is not allowed An initial value appears in a local extended array declaration. Remove the initialization from the declaration and use an assignment statement instead. 127 Illegal block relocation specifier, expecting either AT or BELOW An incorrect relocation clause appears in a BLOCK declaration. Specify only the AT or BELOW clause to relocate the block.
TAL Reference Summary Error Messages 133 Compiler label table overflow The code generator detected a label table overflow. Report this occurrence to Tandem and include a copy of the complete compilation listing (and source, if possible). 134 Value assigned to USE variable within argument list may be lost An assignment to a USE register appears in an actual parameter list. After a procedure call, the compiler restores the USE register to its original value and the changed value is lost.
TAL Reference Summary Error Messages 139 Invalid declaration for length component of string parameter An incorrect length parameter appears in a parameter pair specification. Declare this parameter as an INT simple variable that specifies the length of the string parameter in the parameter pair. 140 Too many parameters Too many formal parameters appear in a procedure or subprocedure declaration. For a procedure, include no more than 32 formal parameters.
TAL Reference Summary Error Messages 145 Only 16-bit integer index expression allowed An index expression of the wrong data type appears. Change the index expression to an INT expression. 146 Identifier for SQLMEM length must be an INT literal An incorrect MAPPED length value appears in the SQLMEM directive. Specify the length value as an INT LITERAL or constant. The LITERAL identifier is interpreted when an EXEC SQL statement occurs, not when the directive occurs.
TAL Reference Summary Error Messages 151 Only STRING arrays may have SQL attributes SQL attributes are applied to arrays that are not STRING arrays. Apply SQL attributes only to STRING arrays. 152 Type mismatch for SQL attribute An incorrect SQL data type attribute occurs for a TAL variable. Specify an SQL data type attribute that matches the TAL data type of the variable.
TAL Reference Summary Error Messages 160 Only one language attribute is allowed More than one language attribute appears in a procedure declaration. Specify only one of the following language attributes following the LANGUAGE keyword (and only in a D-series EXTERNAL procedure declaration): C COBOL FORTRAN PASCAL UNSPECIFIED 161 Language attribute only allowed for external procedures A language attribute appears in a procedure declaration that is not specified as being EXTERNAL.
TAL Reference Summary Error Messages 166 Illegal public name encountered An incorrect public name appears. Specify a public name only in a D-series EXTERNAL procedure declaration, using the identifier format of the language in which the external routine is written (C, COBOL85, FORTRAN, Pascal, or TAL). 168 Use a DUMPCONS directive before the atomic operation Constants included in the code make it impossible to specify an atomic operation here.
TAL Reference Summary Error Messages 176 The second argument of $OPTIONAL must be a string parameter pair The called procedure declares a parameter pair, but the caller does not specify a parameter pair as the second argument to $OPTIONAL. Replace the incorrect argument with a parameter pair to match the specification in the called procedure. See the example shown for Error 175.
TAL Reference Summary Warning Messages Warning Messages The following messages indicate conditions that might affect program compilation or execution. If you get any warning messages, check your code carefully to determine whether you need to make corrections. 0 All index registers are reserved Three index registers are already reserved by USE statements. Three is the maximum number of index registers that you can reserve. The compiler assigned the last identifier to an already allocated index register.
TAL Reference Summary Warning Messages 6 Invalid ABSLIST addresses may have been generated When the file reaches the 64K-word limit, the compiler disables ABSLIST, starts printing offsets relative to the procedure base instead of to the code area base, and emits this warning.
TAL Reference Summary Warning Messages 10 RP register overflow or underflow A calculation produced an index register number that is greater than 7 or less than 0. If this overflow or underflow adversely affects your program, correct the calculation. 11 Parameter type conflict possible An actual parameter does not have the parameter type specified by the formal parameter declaration.
TAL Reference Summary Warning Messages 15 Right shift emitted A procedure or subprocedure call passed a byte address as a parameter to a procedure that expects a word address. The compiler converts the byte address to a word address by right-shifting the address. If the STRING item begins on an odd-byte boundary, the word-aligned item also includes the even-byte part of the word. If this is a problem, pass only a word address.
TAL Reference Summary Warning Messages 22 Illegal command list format The format of options in a directive is incorrect. The compiler ignores the directive. If your program is adversely affected, correct the format of the compiler options. 23 The list length has been used for the compare count A FOR count clause and a constant list both appear in a group comparison expression, which are mutually exclusive. The compiler obtains the count of items from the length of the constant list.
TAL Reference Summary Warning Messages 28 More than one MAIN specified. MAIN is still name Although the source code can contain more than one MAIN procedure, in the object code only the first MAIN procedure the compiler sees retains the MAIN attribute. If the program contains any COBOL or COBOL85 program units, the MAIN procedure must be written in COBOL or COBOL85, respectively. For more information, see the COBOL85 Reference Manual.
TAL Reference Summary Warning Messages 35 Segment number information lost If you pass an extended indirect actual parameter to a procedure that expects a standard address, the compiler converts the address and the segment number is lost. The resulting address is correct only within the user data segment. Pass an appropriate address.
TAL Reference Summary Warning Messages 40 A procedure declared FORWARD is missing - proc-name A FORWARD declaration occurs, but the procedure body declaration is missing. The compiler converts all references to this procedure into EXTERNAL references to the same identifier. If this is not your intent, declare the procedure body. 41 File system DEFINEs are not enabled A TACL DEFINE name appears in place of a file name, but the system is not configured to use TACL DEFINEs.
TAL Reference Summary Warning Messages 46 Non-relocatable global reference A declaration that refers to a G-relative location appears when the RELOCATE directive is in effect and all primary global data is relocatable. This reference might be incorrect if BINSERV relocates the data blocks when it builds the object file. Either change the declaration of the identifier or, if NAME (and BLOCK) statements do not appear, delete the RELOCATE directive.
TAL Reference Summary Warning Messages 52 The compiler no longer generates code for NonStop 1+ systems As of release C00, the compiler no longer generates code for the NonStop 1+ system. Instructions that apply only to NonStop 1+ systems are CBDA, CBDB, CBUA, CBUB, CDS, RMD, SCAL, SLRU, LWBG, MAPP, MNGS, MNSG, MNSS, UMPP, XINC, XSMS, ZZZZ. A CODE statement that specifies such an instruction causes error 44 (Illegal instruction).
TAL Reference Summary Warning Messages 57 SAVEGLOBALS and USEGLOBALS cannot appear in the same compilation Two mutually exclusive directives appear in the same compilation unit. To save global declarations in a file for use by a later compilation, retain SAVEGLOBALS and delete USEGLOBALS. To make use of the saved global declarations, retain USEGLOBALS and delete SAVEGLOBALS.
TAL Reference Summary Warning Messages 63 A file system DEFINE name is not permitted in a LIBRARY directive. A TACL ASSIGN name or a TACL DEFINE name appears in a LIBRARY directive. Specify a disk file name, fully or partially qualified, in the LIBRARY directive. 64 No file system DEFINE exists for this logical file name A TACL DEFINE name (such as =ABLE) occurs, but no such TACL DEFINE has been added in the operating system environment. 65 RELEASE1 and RELEASE2 options are mutually exclusive.
TAL Reference Summary Warning Messages 69 Label declaration belongs inside a procedure or subprocedure A label declaration appears outside of a procedure or subprocedure. Move the label declaration into the appropriate procedure or subprocedure. 70 Conflicting TARGET directive ignored A TARGET directive conflicts with a previous TARGET directive. The compiler accepts only the first TARGET directive that it encounters.
TAL Reference Summary Warning Messages 78 TAL cannot set RP value for forward branch A CODE statement causes a conditional jump out of an optimized FOR loop. The compiler can generate correct code for the nonjump condition of the CODE statement, but not for the jump condition. To set the RP value for the forward branch, use a CODE (STRP ...) statement or an RP directive. . 79 Invalid directive option. Remainder of line skipped. An incorrect option appears in a directive.
TAL Reference Summary Warning Messages 86 Return condition code must be 16-bit integer expression A procedure returns a condition code that does not evaluate to an INT expression. Correct the condition code so that it evaluates to an INT expression. 87 The register stack should be empty, but is not The register stack should be empty after each statement (except CODE, STACK, and STORE). If you have not left items on the register stack deliberately, change your code.
TAL Reference Summary SYMSERV Messages 93 Do not use an SQL statement in a parametized DEFINE An EXEC SQL statement appears in the text of a DEFINE that has parameters. The compiler evaluates the parameters and the SQL statement in the same buffer space. 94 A template structure is not addressable The address of a template structure is specified. Specify only the address of a definition structure of a referral structure.