SQL Programming Manual for Pascal
Examples of Dynamic NonStop SQL Programs
HP NonStop SQL Programming Manual for Pascal—528614-001
C-17
Detailed Dynamic SQL Program
 354 0 {**********************************************************}
 355 0 {* HANDLE_WARNING : If an SQL warning has been issued,
         display the *}
 356 0 {* warning and set global warning condition.  *}
 357 0 {**********************************************************}
 358 0 procedure handle_warning;
 359 1 begin
 360 2  sqlcadisplay (xaddr(sqlca)); { display the warning}
 361 2  G_errcb.erc := ERC_SQLWARNING;
 362 2 end;     { of proc handle_error }
 363 0
 364 0 {**********************************************************}
 365 0 {* MIN : Return the minimum of the two input integer values. *}
 366 0 {**********************************************************}
 367 0 function min(i, j : integer) : integer;
 368 1 begin
 369 2  if (i < j) then min := i
 370 3  else min := j;
 371 2 end;
 372 0
 373 0 {**********************************************************}
 374 0 {* UPCASE : If the input is in uppercase return it as is,
          other- *}
 375 0 {* wise, return it after converting to uppercase. *}
 376 0 {**********************************************************}
 377 0 function upcase(c : char) : integer;
 378 1 begin
 379 2  if (ord(c) >= ord('a')) and (ord(c) <= ord('z')) then
 380 3  upcase := ord('A') + ord(c) - ord('a')
 381 3  else upcase := ord(c);
 382 2 end;
 383 0
 384 0 {**********************************************************}
 385 0 {* PROMPT_USER : Prompt the user to input data for a parameter.
          *}
 386 0 {**********************************************************}
 387 0 procedure prompt_user(var nambufp : P_ANY);
 388 1 var
 389 1  char_size : integer;  { size of a character }
 390 1  i : integer;    { loop index }
 391 1  len : integer;   { parameter name length }
 392 1  dispbuf : CMND_BUF;  { display buffer }
 393 1
 394 1 begin
 395 2  char_size := sizeof(char);
 396 2  len := nambufp.int16p^; { read length of the name }
 397 2  nambufp.i := nambufp.i + sizeof(int16);
 398 2
 399 2  dispbuf := '';  { set dispbuf to zero length}
 400 2
 401 2  for i := 1 to len do { copy the parameter name }
 402 3  begin    { into the display buffer }
 403 4  dispbuf := dispbuf & nambufp.charp^;
 404 4  nambufp.i := nambufp.i + sizeof(char);
 405 4  end;
 406 2 writeln(dispbuf, '?');
 407 2
 408 2 end; { of proc prompt_user }
 409 0










