SQL Programming Manual for Pascal
Examples of Dynamic NonStop SQL Programs
HP NonStop SQL Programming Manual for Pascal—528614-001
C-3
Simple Dynamic SQL Program
Code for the simple dynamic SQL program follows.
Tandem Pascal (T9256C30 01DEC90)
COPYRIGHT TANDEM COMPUTERS INCORPORATED 1986,1987,1988,1989
 1  0 { This program finds the average salary for employees }
 2  0 { according to criteria established by the user. The }
 3  0 { program contains a SELECT statement for the EMPLOYEE }
 4  0 { table; the user enters the selection criteria, which }
 5  0 { the program concatenates to the SELECT statement as a }
 6  0 { WHERE clause.       }
 7  0 {         }
 8  0 ?LIST,NOMAP,XMEM
 9  0 ?SQL
 10  0 ?SYMBOLS
 11  0 PROGRAM FINDAVG (INPUT,OUTPUT);
 12  0
 13  0 { Copy in external declarations for SQLCADISPLAY procedure }
 14  0 { to handle error message display, and SQLDT data type  }
 15  0 { literals. SQLCADISPLAY requires copying in the TYPES  }
 16  0 { definitions.        }
 17  0
 18  0 IMPORT BEGIN
 19  0 ?SOURCE $SYSTEM.SYSTEM.PEXTDECS(TYPES, SQLCADISPLAY,
  SQLDT),NOLIST
 20  0 END;
 21  0
 22  0 CONST
 23  0 MAXCMD = 1000;
 24  0
 25  0 TYPE
 26  0 CMDSTR = STRING[MAXCMD];
 27  0 SHORTSTR = STRING[8];
 28  0
 29  0 VAR SQLCODE : INT16;  { for error checking   }
 30  0  AVERAGE : INT32;  { for output value   }
 31  0  CMD : CMDSTR; { for SQL statement user enters }
 32  0
 33  0 EXEC SQL INCLUDE SQLCA;
 1  0 TYPE
 2  0 SQLCA_TYPE = RECORD
 3  1 filler : ARRAY [1..430] OF BYTE;
 4  1 END;
 5  0
 6  0 VAR
 7  0 sqlca : SQLCA_TYPE;
 34  0 EXEC SQL INCLUDE SQLSA;
 1  0 TYPE
 2  0 STATS_TYPE = RECORD
 3  1   table_name  : FSTRING(24);
 4  1   records_accessed : LONGINT;
 5  1   records_used : LONGINT;
 6  1   disc_reads  : LONGINT;
 7  1   messages  : LONGINT;
 8  1   message_bytes : LONGINT;
 9  1   waits  : INTEGER;
 10  1   escalations  : INTEGER;
 11  1   sqlsa_reserved : FSTRING(4);
 12  1   END;
 13  0
 14  0 DML_TYPE = RECORD
 15  1   num_tables : INTEGER;
 16  1   stats : ARRAY [1..16] OF STATS_TYPE;
 17  1  END;
 18  0










