15.10 - Stored Procedure - Preprocessor2 for Embedded SQL

Teradata Preprocessor2 for Embedded SQL Programmer Guide

prodname
Preprocessor2 for Embedded SQL
vrm_release
15.10
category
Programming Reference
featnum
B035-2446-035K

The stored procedure being executed is named “case1” and has been defined as:

 replace procedure case1(IN ip  integer,
          INOUT iop integer,
          OUT op integer)
 begin
          set op=ip+2;
          set iop=iop+ip;
        end;
#include <stdio.h>
#include <string.h>
EXEC SQL BEGIN DECLARE SECTION;
  int      H1;
  int      H2;
  int      H3;
        
  VARCHAR  LOGON_STR[30];
  VARCHAR  errmsg[81];
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE SQLCA;
long   errcode;
long   i;
long   count;
short  maxlen = 80;
char   reqtype[40];
int    ch;
/**************************************************************/
/* error_check                                                     */
/**************************************************************/
void error_check()
 {
   if (SQLCODE != 0)
    {
      PPRTEXT(&SQL_RDTRTCON, &errcode, &errmsg, &maxlen);
      errmsg.arr[errmsg.len] = '\0';
      printf("\n");
      printf("ERROR/WARNING DETECTED IN %s\n", reqtype);
      printf("   CODE: %d\n", errcode);
      printf("   MSG : %s\n", errmsg.arr);
    }
 }
/**************************************************************/
/* exec_request_001                                                */
/**************************************************************/
void exec_request_001()
 {
   strcpy(reqtype, "CALL PROCEDURE");
   H1=1;
   EXEC SQL CALL case1(:H1, :H2, :H3);
   error_check();
   if (SQLCODE == 0)
    {
      printf("H1 -%d\n",H1);
      printf("H2 -%d\n",H2);
      printf("H3 -%d\n",H3);
      printf("FINISHED REQUEST001\n");
    }
   return;
 }
/**************************************************************/
/* exec_request_002                                                */
/**************************************************************/
void exec_request_002()
 {
   strcpy(reqtype, "CALL PROCEDURE");
   H1=1;
   H2=2;
   EXEC SQL CALL case1(:H1, :H2, :H3);
   error_check();
   if (SQLCODE == 0)
    {
      printf("H1 -%d\n",H1);
      printf("H2 -%d\n",H2);
      printf("H3 -%d\n",H3);
      printf("FINISHED REQUEST002\n");
    }
 
   return;
 }
/**************************************************************/
/* exec_request_003                                                */
/**************************************************************/
void exec_request_003()
 {
   strcpy(reqtype, "CALL PROCEDURE");
   EXEC SQL CALL case1(1, :H2, :H3);
   error_check();
   if (SQLCODE == 0)
    {
      printf("H2 -%d\n",H2);
      printf("H3 -%d\n",H3);
      printf("FINISHED REQUEST003\n");
    }
   return;
 }
/**************************************************************/
/* exec_request_004                                                */
/**************************************************************/
void exec_request_004()
 {
   strcpy (reqtype, "CALL PROCEDURE");
   H1=2;
   EXEC SQL CALL case1(:H1*:H1, :H2, :H3);
   error_check();
   if (SQLCODE == 0)
    {
      printf("H2 -%d\n",H2);
      printf("H3 -%d\n",H3);
      printf("FINISHED REQUEST004\n");
    }
   return;
 }
/**************************************************************/
/* MAIN PROGRAM                                                    */
/**************************************************************/
main(argc, argv)
 int   argc;
 char *argv[];
 {
   int i;
   if (argc < 2)
    {
      printf("You must supply the LOGON STRING.\n");
      exit(1);
    }
   printf ("Executing stored procedure 'case1'...\n\n");
   strcpy(LOGON_STR.arr, argv[1]);
   LOGON_STR.len = strlen(LOGON_STR.arr);
     
   /* LOGON the DBS */
 
   strcpy(reqtype, "LOGON");
   EXEC SQL LOGON :LOGON_STR;
   error_check();
   if (SQLCODE != 0)
      exit(1);
   printf("LOGON SUCCESSFUL!\n");
   /* Execute the 4 stored-procedure calling functions */
   exec_request_001();
   exec_request_002();
   exec_request_003();
   exec_request_004();
   /* LOGOFF the DBS */
   strcpy (reqtype, "LOGOFF");
   EXEC SQL LOGOFF;
   error_check();
   if (SQLCODE == 0)
      printf("LOGOFF SUCCESSFUL!\n");
   return;
 }