SQL Reference for Cross-Platform Development - Version 5 ii SQL Reference for Cross-Platform Development - Version 5 Contents
Chapter 1. About this book ...... 1 CONNECT (Type 1) and CONNECT (Type 2) . . 37 Who should read this book ...... 1 Remote unit of work ...... 37 How to use this book ...... 2 Application-directed distributed unit of work . . 39 Assumptions relating to examples of SQL Data representation considerations...... 42 statements ...... 2 How to read the syntax diagrams ...... 3 Chapter 3. Language elements ....43 Conventions used in this manual ...... 5 Characters ...... 43 SQL accessibility ...... 5 Tokens ...... 44 Related documentation ...... 6 Identifiers ...... 46 What's new for this book ...... 8 SQL identifiers ...... 46 Host identifiers ...... 46 Chapter 2. Concepts ...... 9 Naming conventions ...... 47 Relational database ...... 9 SQL path ...... 52 Structured query language...... 9 Qualification of unqualified object names . . . 52 Static SQL ...... 9 Aliases ...... 54 Dynamic SQL ...... 9 Authorization IDs and authorization names . . . 55 Interactive SQL ...... 10 Example ...... 55 SQL call level interface and open database Data types...... 56 connectivity ...... 10 Nulls ...... 57 Java database connectivity and embedded SQL Numbers ...... 57 for Java programs ...... 10 Character strings ...... 60 Schemas ...... 11 Character encoding schemes...... 61 Tables ...... 11 Graphic strings ...... 62 Keys...... 11 Graphic encoding schemes ...... 63 Constraints ...... 12 Binary strings ...... 63 Indexes ...... 15 Large objects ...... 63 Triggers ...... 15 Datetime values ...... 65 Views ...... 17 XML Values ...... 69 User-defined types ...... 17 User-defined types ...... 70 Aliases ...... 18 Promotion of data types ...... 72 Packages and access plans ...... 18 Casting between data types ...... 74 Routines ...... 18 Assignments and comparisons ...... 77 Functions ...... 18 Numeric assignments ...... 78 Procedures ...... 19 String assignments ...... 80 Sequences ...... 20 Datetime assignments ...... 83 Authorization, privileges and object ownership . . 21 XML assignments ...... 84 || Row permissions and column masks .....23 Distinct type assignments...... 84 Catalog ...... 24 || Array type assignments ...... 86 Application processes, concurrency, and recovery. . 24 Assignments to LOB locators ...... 86 Locking, commit, and rollback ...... 24 Numeric comparisons ...... 86 Unit of work ...... 25 String comparisons ...... 87 Rolling back work ...... 26 Datetime comparisons ...... 89 Isolation level ...... 28 XML comparisons ...... 89 Repeatable read ...... 29 Distinct type comparisons ...... 89 Read stability...... 29 || Array type comparisons ...... 90 Cursor stability ...... 30 Rules for result data types ...... 91 Uncommitted read ...... 30 Numeric operands ...... 91 Comparison of isolation levels ...... 30 Character and graphic string operands ....92 Storage structures ...... 31 Binary string operands ...... 93 Character conversion ...... 31 Datetime operands ...... 93 Character sets and code pages ...... 34 Distinct type operands...... 94 Coded character sets and CCSIDs ...... 35 XML operands ...... 94 Default CCSID ...... 35 Conversion rules for operations that combine strings 95 Distributed relational database ...... 36 Constants ...... 97 Application servers ...... 36 Integer constants ...... 97
iii Decimal constants ...... 97 Predicates ...... 163 Floating-point constants ...... 97 Basic predicate ...... 164 Decimal floating-point constants ...... 98 Quantified predicate ...... 166 Character-string constants ...... 98 BETWEEN predicate ...... 168 Graphic-string constants ...... 99 EXISTS predicate ...... 169 Datetime constants ...... 99 IN predicate ...... 170 Decimal point ...... 100 LIKE predicate ...... 172 Special registers ...... 101 NULL predicate ...... 177 CURRENT CLIENT_ACCTNG ...... 101 Search conditions ...... 178 CURRENT CLIENT_APPLNAME .....102 Examples...... 178 CURRENT CLIENT_USERID ...... 102 CURRENT CLIENT_WRKSTNNAME ....102 || Chapter 4. Built-in global variables 181 CURRENT DATE ...... 102 || CLIENT_IPADDR ...... 182 CURRENT DECFLOAT ROUNDING MODE 103 || PACKAGE_NAME ...... 183 CURRENT DEGREE ...... 104 || PACKAGE_SCHEMA ...... 184 CURRENT PATH ...... 104 || PACKAGE_VERSION ...... 185 CURRENT SCHEMA ...... 105 CURRENT SERVER ...... 105 Chapter 5. Built-in functions .....187 CURRENT TIME ...... 105 Aggregate functions ...... 195 CURRENT TIMESTAMP ...... 106 || ARRAY_AGG ...... 196 CURRENT TIMEZONE ...... 106 AVG...... 198 SESSION_USER ...... 106 COUNT ...... 200 USER ...... 106 COUNT_BIG ...... 201 Column names ...... 108 || GROUPING ...... 202 Qualified column names...... 108 MAX...... 204 Correlation names ...... 108 MIN...... 205 Column name qualifiers to avoid ambiguity . . 110 STDDEV ...... 206 Column name qualifiers in correlated references 112 SUM...... 207 Unqualified column names in correlated VARIANCE or VAR ...... 208 references...... 113 XMLAGG ...... 209 Variables ...... 114 Scalar functions...... 211 || Global variables ...... 114 Example ...... 211 References to host variables ...... 116 ABS...... 212 Variables in dynamic SQL ...... 118 ACOS ...... 213 References to LOB variables ...... 119 ADD_MONTHS ...... 214 References to LOB locator variables .....119 ASCII ...... 216 References to LOB file reference variables . . . 120 ASIN ...... 217 References to XML variables ...... 120 ATAN...... 218 Host structures ...... 121 ATANH...... 219 Functions...... 123 ATAN2...... 220 Types of functions ...... 123 BIGINT ...... 221 Function invocation ...... 124 BITAND, BITANDNOT, BITOR, BITXOR, and Function resolution ...... 124 BITNOT ...... 222 Determining the best fit ...... 126 BLOB ...... 224 Best fit considerations ...... 128 || CARDINALITY ...... 225 Expressions ...... 130 CEILING ...... 226 Without operators ...... 130 CHAR...... 227 With arithmetic operators ...... 131 CHARACTER_LENGTH ...... 233 With the concatenation operator ...... 134 CLOB ...... 234 Scalar fullselect ...... 136 COALESCE ...... 236 Datetime operands and durations .....137 COMPARE_DECFLOAT ...... 237 Datetime arithmetic in SQL...... 138 CONCAT...... 239 Precedence of operations ...... 142 CONTAINS ...... 240 || ARRAY constructor ...... 144 COS...... 243 || ARRAY element specification ...... 145 COSH ...... 244 CASE expressions ...... 146 DATE...... 245 CAST specification ...... 149 DAY...... 247 OLAP specification ...... 153 DAYNAME ...... 248 ROW CHANGE expression...... 157 DAYOFWEEK ...... 249 Sequence reference ...... 158 DAYOFWEEK_ISO ...... 250 XMLCAST specification ...... 162
iv SQL Reference for Cross-Platform Development - Version 5 DAYOFYEAR ...... 251 REAL ...... 344 DAYS...... 252 REPEAT ...... 345 DBCLOB ...... 253 REPLACE ...... 347 DECFLOAT ...... 255 RID...... 349 DECIMAL or DEC ...... 257 RIGHT ...... 350 DECRYPT_BIT and DECRYPT_CHAR ....260 ROUND ...... 352 DEGREES ...... 262 ROUND_TIMESTAMP ...... 354 DIFFERENCE ...... 263 || RPAD...... 357 DIGITS ...... 264 RTRIM ...... 360 DOUBLE_PRECISION or DOUBLE .....265 SCORE ...... 361 ENCRYPT ...... 267 SECOND ...... 364 EXP...... 270 SIGN ...... 366 EXTRACT ...... 271 SIN...... 367 FLOAT ...... 273 SINH ...... 368 FLOOR ...... 274 SMALLINT ...... 369 GENERATE_UNIQUE ...... 275 SOUNDEX ...... 370 GETHINT ...... 276 SPACE...... 371 GRAPHIC ...... 277 SQRT...... 372 HEX...... 280 STRIP ...... 373 HOUR...... 281 SUBSTR ...... 375 IDENTITY_VAL_LOCAL ...... 282 SUBSTRING...... 378 INSERT ...... 287 TAN...... 380 INTEGER or INT ...... 289 TANH...... 381 JULIAN_DAY ...... 291 TIME ...... 382 LAST_DAY ...... 292 TIMESTAMP ...... 383 LCASE ...... 293 TIMESTAMP_FORMAT ...... 385 LEFT ...... 294 TIMESTAMP_ISO ...... 388 LENGTH ...... 295 TIMESTAMPDIFF ...... 389 LN...... 296 TOTALORDER ...... 392 LOCATE ...... 297 TRANSLATE ...... 393 LOG10 ...... 299 TRIM ...... 395 LOWER ...... 300 || TRIM_ARRAY ...... 397 || LPAD...... 301 TRUNCATE or TRUNC ...... 398 LTRIM ...... 304 TRUNC_TIMESTAMP ...... 400 MAX...... 305 UCASE ...... 401 || MAX_CARDINALITY ...... 306 UPPER ...... 402 MICROSECOND ...... 307 VALUE ...... 403 MIDNIGHT_SECONDS ...... 308 VARCHAR ...... 404 MIN...... 309 VARCHAR_FORMAT ...... 409 MINUTE ...... 310 VARGRAPHIC ...... 412 MOD...... 311 || VERIFY_GROUP_FOR_USER ...... 414 MONTH ...... 313 WEEK ...... 416 MONTHNAME ...... 314 WEEK_ISO ...... 417 MONTHS_BETWEEN ...... 315 YEAR ...... 418 MQREAD ...... 317 XMLATTRIBUTES...... 419 MQREADCLOB ...... 319 XMLCOMMENT ...... 420 MQRECEIVE ...... 321 XMLCONCAT ...... 421 MQRECEIVECLOB ...... 323 XMLDOCUMENT ...... 423 MQSEND ...... 325 XMLELEMENT...... 424 MULTIPLY_ALT ...... 327 XMLFOREST ...... 428 NEXT_DAY ...... 329 XMLNAMESPACES ...... 431 NORMALIZE_DECFLOAT ...... 331 XMLPARSE ...... 433 NULLIF ...... 332 XMLPI ...... 435 POSITION ...... 333 XMLSERIALIZE ...... 436 POSSTR ...... 335 XMLTEXT ...... 438 POWER ...... 337 || XSLTRANSFORM ...... 439 QUANTIZE ...... 338 Table functions ...... 442 QUARTER ...... 340 MQREADALL ...... 443 RADIANS ...... 341 MQREADALLCLOB ...... 446 RAISE_ERROR ...... 342 MQRECEIVEALL ...... 449 RAND...... 343 MQRECEIVEALLCLOB ...... 452
Contents v || XMLTABLE ...... 455 CREATE FUNCTION (SQL table)...... 647 CREATE INDEX ...... 653 Chapter 6. Queries ...... 463 || CREATE MASK ...... 656 Authorization ...... 463 || CREATE PERMISSION ...... 662 subselect ...... 464 CREATE PROCEDURE ...... 666 select-clause ...... 465 CREATE PROCEDURE (external)...... 667 from-clause ...... 470 CREATE PROCEDURE (SQL) ...... 675 where-clause ...... 478 CREATE SEQUENCE...... 682 group-by-clause ...... 479 CREATE TABLE ...... 688 having-clause ...... 493 CREATE TRIGGER ...... 718 order-by-clause ...... 494 || CREATE TYPE ...... 729 fetch-first-clause ...... 497 || CREATE TYPE (array) ...... 730 Examples of a subselect ...... 498 CREATE TYPE (distinct)...... 734 fullselect ...... 500 || CREATE VARIABLE ...... 740 Examples of a fullselect ...... 503 CREATE VIEW ...... 743 select-statement ...... 505 DECLARE CURSOR ...... 749 common-table-expression ...... 506 DECLARE GLOBAL TEMPORARY TABLE . . . 755 update-clause ...... 512 DELETE ...... 764 read-only-clause ...... 513 DESCRIBE ...... 769 optimize-clause...... 514 DESCRIBE INPUT...... 773 isolation-clause ...... 515 DROP ...... 776 Examples of a select-statement ...... 516 END DECLARE SECTION ...... 783 EXECUTE ...... 784 Chapter 7. Statements ...... 519 EXECUTE IMMEDIATE ...... 787 FETCH ...... 789 How SQL statements are invoked ...... 523 FREE LOCATOR ...... 792 Embedding a statement in an application GRANT (function or procedure privileges) . . . 793 program ...... 524 GRANT (package privileges) ...... 797 Dynamic preparation and execution .....525 GRANT (sequence privileges) ...... 799 Static invocation of a select-statement ....525 GRANT (table or view privileges) ...... 801 Dynamic invocation of a select-statement . . . 525 GRANT (type privileges) ...... 804 Interactive invocation...... 526 || GRANT (variable privileges) ...... 806 SQL diagnostic information...... 526 INCLUDE ...... 808 Detecting and processing error and warning INSERT ...... 810 conditions in host language applications ....526 LOCK TABLE ...... 819 SQLSTATE ...... 527 MERGE ...... 820 SQLCODE ...... 527 OPEN ...... 828 SQL comments ...... 528 PREPARE ...... 833 ALLOCATE CURSOR ...... 529 REFRESH TABLE ...... 845 ALTER FUNCTION (external) ...... 530 RELEASE (connection) ...... 846 || ALTER FUNCTION (SQL) ...... 534 RELEASE SAVEPOINT ...... 848 || ALTER MASK ...... 538 RENAME ...... 849 || ALTER PERMISSION...... 540 REVOKE (function or procedure privileges) . . . 851 ALTER PROCEDURE (external) ...... 542 REVOKE (package privileges) ...... 855 ALTER SEQUENCE ...... 543 REVOKE (sequence privileges) ...... 857 ALTER TABLE ...... 547 REVOKE (table and view privileges) .....859 || ALTER TRIGGER ...... 578 REVOKE (type privileges) ...... 862 ASSOCIATE LOCATORS ...... 580 || REVOKE (variable privileges) ...... 864 BEGIN DECLARE SECTION ...... 582 ROLLBACK ...... 866 CALL ...... 584 SAVEPOINT...... 869 CLOSE ...... 588 SELECT ...... 871 COMMENT ...... 590 SELECT INTO ...... 872 COMMIT...... 596 SET CONNECTION ...... 875 CONNECT (type 1) ...... 598 SET CURRENT DECFLOAT ROUNDING MODE 877 CONNECT (type 2) ...... 602 SET CURRENT DEGREE ...... 879 CREATE ALIAS ...... 605 SET ENCRYPTION PASSWORD ...... 881 CREATE FUNCTION...... 606 SETPATH...... 883 CREATE FUNCTION (external scalar) .....610 SET SCHEMA ...... 886 CREATE FUNCTION (external table) .....622 SET transition-variable ...... 888 CREATE FUNCTION (sourced) ...... 632 SET variable...... 890 CREATE FUNCTION (SQL scalar) ...... 640 || TRUNCATE ...... 892
vi SQL Reference for Cross-Platform Development - Version 5 UPDATE ...... 894 Fields in an occurrence of an extended SQLVAR 989 VALUES ...... 902 SQLTYPE and SQLLEN ...... 990 VALUES INTO ...... 903 CCSID values in SQLDATA and SQLNAME . . . 992 WHENEVER ...... 905 INCLUDE SQLDA declarations ...... 993 ForC...... 993 Chapter 8. SQL control statements 907 For COBOL ...... 995 References to SQL parameters and SQL variables 909 References to SQL condition names ...... 911 Chapter 13. SQLSTATE References to SQL cursor names ...... 912 values—common return codes ....997 References to SQL labels...... 913 Using SQLSTATE values...... 997 Summary of ′name′ scoping in nested compound statements ...... 914 Chapter 14. CCSID values .....1047 SQL-procedure-statement ...... 916 assignment-statement...... 918 CALL statement ...... 920 Chapter 15. Coding SQL statements CASE statement ...... 922 in C applications ...... 1063 compound-statement ...... 924 Defining the SQL communications area in C . . 1063 FOR statement ...... 933 Defining SQL descriptor areas in C...... 1063 GET DIAGNOSTICS statement ...... 935 Embedding SQL statements in C ...... 1065 GOTO statement ...... 937 Comments ...... 1065 IF statement ...... 939 Continuation for SQL statements .....1065 ITERATE statement ...... 941 Cursors ...... 1065 LEAVE statement ...... 943 Including code ...... 1065 LOOP statement ...... 944 Margins ...... 1066 REPEAT statement ...... 946 Names ...... 1066 RESIGNAL statement...... 948 NULLs and NULs ...... 1066 RETURN statement ...... 951 Statement labels ...... 1066 SIGNAL statement ...... 953 Preprocessor considerations ...... 1066 WHILE statement ...... 956 Trigraphs ...... 1066 Handling SQL errors and warnings in C . . . 1067 Chapter 9. SQL limits ...... 959 Using host variables in C ...... 1067 Declaring host variables in C ...... 1067 Chapter 10. Characteristics of SQL Declaring host structures in C ...... 1074 Using pointer data types in C ...... 1077 statements ...... 971 Determining equivalent SQL and C data types 1077 Actions allowed on SQL statements ...... 972 SQL statement data access classification for Chapter 16. Coding SQL statements routines ...... 974 in COBOL applications ...... 1081 Considerations for using distributed relational database ...... 976 Defining the SQL communications area in COBOL 1081 CONNECT (type 1) and CONNECT (type 2) Defining SQL descriptor areas in COBOL . . . 1081 differences ...... 979 Embedding SQL statements in COBOL ....1082 Determining the CONNECT rules that apply 979 Comments ...... 1082 Connecting to application servers that only Continuation for SQL statements .....1083 support remote unit of work ...... 980 Cursors ...... 1083 Including code ...... 1083 Chapter 11. SQLCA (SQL Margins ...... 1083 Names ...... 1083 communication area) ...... 981 Statement labels ...... 1083 Field descriptions ...... 981 Handling SQL errors and warnings in COBOL 1084 INCLUDE SQLCA declarations ...... 983 Using host variables in COBOL ...... 1084 ForC...... 983 Declaring host variables in COBOL.....1084 For COBOL ...... 983 Declaring host structures in COBOL ....1092 Determining equivalent SQL and COBOL data Chapter 12. SQLDA (SQL descriptor types ...... 1095 area) ...... 985 Notes on COBOL variable declaration and Field descriptions in an SQLDA header.....986 usage...... 1098 Determining how many occurrences of SQLVAR entries are needed ...... 987 Chapter 17. Coding SQL statements Field descriptions in an occurrence of SQLVAR . . 988 in Java applications ...... 1099 Fields in an occurrence of a base SQLVAR . . . 988 Defining the SQL communications area in Java 1099
Contents vii Defining SQL descriptor areas in Java .....1099 Parameter passing for external procedures Embedding SQL statements in Java...... 1099 written in Java ...... 1135 Comments ...... 1100 Attributes of the arguments of a routine Connecting to, and using a data source ....1101 program...... 1136 Declaring a connection context ...... 1101 Database information in external routines Initiating and using a connection .....1102 (DBINFO) ...... 1138 Using host variables and expressions in Java . . 1104 CCSID information in DBINFO ...... 1140 Using SQLJ iterators to retrieve rows from a result Table function column list information in table ...... 1105 DBINFO...... 1140 Declaring iterators ...... 1105 DBINFO structure for C ...... 1141 Using positioned iterators to retrieve rows DBINFO structure for COBOL ...... 1142 from a result table ...... 1107 Scratch pad in external functions ...... 1143 Using named iterators to retrieve rows from a result table ...... 1108 Chapter 20. Sample tables .....1145 Using iterators for positioned update and delete ACT...... 1145 operations ...... 1110 CL_SCHED...... 1146 Handling SQL errors and warnings in Java . . . 1111 DEPARTMENT ...... 1146 Determining equivalent SQL and Java data types 1112 EMP_PHOTO ...... 1146 Example ...... 1114 EMP_RESUME ...... 1146 EMPLOYEE ...... 1147 Chapter 18. Coding SQL statements EMPPROJACT ...... 1148 in REXX applications...... 1117 IN_TRAY ...... 1149 Defining the SQL communications area in REXX 1118 ORG...... 1150 Defining SQL descriptor areas in REXX ....1118 PROJACT ...... 1151 Embedding SQL statements in REXX .....1120 PROJECT ...... 1152 Comments ...... 1120 SALES ...... 1153 Continuation of SQL statements ...... 1121 STAFF...... 1154 Including code ...... 1121 Sample files with BLOB and CLOB data type . . 1155 Margins ...... 1121 Quintana photo ...... 1155 Names ...... 1121 Quintana resume ...... 1156 Nulls ...... 1121 Nicholls photo...... 1157 Statement labels ...... 1121 Nicholls resume ...... 1158 Handling SQL errors and warnings in REXX 1121 Adamson photo ...... 1159 Isolation level ...... 1122 Adamson resume...... 1160 Using host variables in REXX ...... 1122 Walker photo ...... 1161 Determining data types of input host variables 1122 Walker resume ...... 1162 The format of output host variables ....1123 Avoiding REXX conversion ...... 1124 Chapter 21. Terminology differences 1165 Indicator variables in REXX ...... 1124 Example...... 1124 Chapter 22. Reserved schema names and reserved words ...... 1167 Chapter 19. Coding programs for use Reserved schema names ...... 1167 by external routines ...... 1127 Reserved words ...... 1168 Parameter passing for external routines ....1127 Parameter passing for external functions Chapter 23. Notices ...... 1173 written in C or COBOL...... 1127 Programming interface information...... 1175 Parameter passing for external functions Trademarks...... 1175 written in Java ...... 1131 Parameter passing for external procedures Index ...... 1177 written in C or COBOL...... 1132
viii SQL Reference for Cross-Platform Development - Version 5 Chapter 1. About this book
This book defines IBM® DB2® Structured Query Language (DB2 SQL). It describes the rules and limits for preparing portable programs. This book is a reference rather than a tutorial and assumes a familiarity with SQL programming concepts.
Who should read this book This book is intended for programmers who want to write portable applications using SQL that is common to the DB2 relational database products and the SQL 2011 Core standard.1 DB2 SQL is consistent with the SQL 2011 Core standard. DB2 SQL also provides functional extensions to the SQL 2011 Core standard. For example, many of the scalar functions defined in this book are extensions to the SQL 2011 Core standard.
1. In this book, the term “SQL 2011 Core standard” is used to describe the ANSI/ISO Core Level SQL standard of 2011 and related industry standards. See “Related documentation” on page 6 for a list of documentation that describes these industry standards. 1 How to use this book
How to use this book This book defines the DB2 SQL language elements that are common to the IBM DB2 Family of relational database products across the following environments:
Environment IBM Relational Database Product Short Name | z/OS® DB2 11 for z/OS DB2 for z/OS | i operating system DB2 for IBM i Version 7.2 DB2 for i | DB2 10.5 for the Linux, UNIX, and Windows Platforms Version DB2 for LUW | Linux 10.5 UNIX Windows
The DB2 relational database products have product books that also describe product-specific elements and explain how to prepare and run a program in a particular environment. The information in this book is a subset of the information in the product books, and the rules and limits described in this book might not apply to all products. The limits in this book are those required to assist program portability across the applicable IBM environments. See “Related documentation” on page 6 for a list of the product books needed in addition to this book.
The SQL described in this book assumes that default environment options, including: v precompile options v bind options v registry variables are set to default values, unless specifically mentioned.
Since each DB2 product does not ship on the same schedule, at any point in time there will naturally be some elements that are only available on a subset of the DB2 products. Some elements might be implemented by all products, but differ slightly in their semantics (how they behave when the program is run). In many cases, these semantic difference are the result of the underlying operating system support. These conditions are identified in this book as shown in the next paragraph.
G The DB2 SQL definition is described in this book. If the implementation of an G element in a product differs from the DB2 SQL definition in its syntax or G semantics, the difference is highlighted with a symbol in the left margin as is this G sentence. Assumptions relating to examples of SQL statements The examples of SQL statements shown in this guide are based on the sample tables in Chapter 20, “Sample tables,” on page 1145 and assume the following: v SQL keywords are highlighted. v Table names used in the examples are the sample tables. Code disclaimer information This document contains programming examples.
2 SQL Reference for Cross-Platform Development - Version 5 How to use this book
IBM grants you a nonexclusive copyright license to use all programming code examples from which you can generate similar function tailored to your own specific needs.
All sample code is provided by IBM for illustrative purposes only. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs.
All programs contained herein are provided to you "AS IS" without any warranties of any kind. The implied warranties of non-infringement, merchantability and fitness for a particular purpose are expressly disclaimed. How to read the syntax diagrams The following rules apply to the syntax diagrams used in this book: v Read the syntax diagrams from left to right, from top to bottom, following the path of the line. The ─── symbol indicates the beginning of the syntax diagram. The ─── symbol indicates that the syntax is continued on the next line. The ─── symbol indicates that the syntax is continued from the previous line. The ─── symbol indicates the end of the syntax diagram. Diagrams of syntactical units start with the ├─── symbol and end with the ───┤ symbol. v Required items appear on the horizontal line (the main path).