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