DB2 – система управления реляционными базами данных. Заданное число упорядоченных столбцов и неупорядоченные строки, страница 34

/*   'INTEGER OUT,INTEGER OUT',                                                                           */

/*   0,' ','M','N','N');                                                                                                           */

/*********************************************************************/

#pragma runopts(plist(os))

#include <stdlib.h>

#include <stdio.h>

EXEC SQL INCLUDE SQLCA;

int main(int argc,char *argv??(??))

{

*(int *)argv??(2??)=printf("S010 begin.\n");

EXEC SQL DROP TABLE U;

*(int *)argv??(1??)=sqlca.sqlcode;

printf("S010 end.\n");

}


/**********************************************************/

/*  S011                                                                                                      */

/*  Пример CAF приложения с явным обращением к                          */

/*  модулю DSNALI                                                                                 */

/**********************************************************/

#include <stdlib.h>

#include <stdio.h>

extern "OS" {int DSNALI(char * functn,...); }

EXEC SQL INCLUDE SQLCA;

int main(void)

{

EXEC SQL BEGIN DECLARE SECTION;

char functn??(13??);

char ssid??(5??);

char planname??(9??);

char termop??(5??);

int tecb=0;

int secb=0;

int ribptr;

int retcode;

int reascode;

char srdura??(11??);

int eibptr;

int fnret;

EXEC SQL END DECLARE SECTION;

strcpy(functn,"CONNECT     ");

strcpy(ssid,"DB2 ");

strcpy(srdura,"SRDURA(CD)");

printf("\nCONNECT\n");

fnret=DSNALI(&functn??(0??),&ssid??(0??),&tecb,&secb,&ribptr,

&retcode,&reascode,&srdura??(0??),&eibptr);

printf("fnret=%d retcode=%d reascode=%d\n",fnret,retcode,reascode);

printf("\nOPEN\n");

strcpy(functn,"OPEN        ");

strcpy(ssid,"DB2 ");

strcpy(planname,"ALIPLAN ");

fnret=DSNALI(&functn??(0??),&ssid??(0??),&planname??(0??),

&retcode,&reascode);

printf("fnret=%d retcode=%d reascode=%d\n",fnret,retcode,reascode);

printf("\nDROP TABLE U\n");

EXEC SQL DROP TABLE U;

if (sqlca.sqlcode != 0)

{

printf("ERROR - SQL code returned non-zero for "

"DROP TABLE U, received %d\n",sqlca.sqlcode);

return (-1);

}

printf("\nCLOSE\n");

strcpy(functn,"CLOSE       ");

strcpy(termop,"SYNC");

fnret=DSNALI(&functn??(0??),&termop??(0??),&retcode,&reascode);

printf("fnret=%d retcode=%d reascode=%d\n",fnret,retcode,reascode);

printf("\nDISCONNECT\n");

strcpy(functn,"DISCONNECT  ");

fnret=DSNALI(&functn??(0??),&retcode,&reascode); 

printf("fnret=%d retcode=%d reascode=%d\n",fnret,retcode,reascode);

return 0;

}


/**************************************************************/

/*  S012                                                                                                              */

/*  Пример использования модуля DSNTIAR для формирования              */

/*  сообщения об ошибке выполнения SQL запроса                                    */

/**************************************************************/

#include <stdlib.h>

#include <stdio.h>

#define data_len 78

#define data_dim 10

struct message

{

short int error_len;

char error_text??(data_dim??)??(data_len??);

};

extern "OS"

{

short dsntiar(struct sqlca*,struct message*,int*);

}

EXEC SQL INCLUDE SQLCA;

int main(void)

{

int lrecl;

short rc;

struct message message = {data_dim * data_len};

lrecl=data_len;

EXEC SQL INSERT INTO TABLE VALUES ('HELLO WORLD');

rc = dsntiar(&sqlca, &message, &lrecl);

printf("\n%s",message.error_text??(0??));

printf("\nrc=%d\n",rc);

return 0;

}