/* ===== beispiel.c =====*/


/* ===== NT doesn't need the following... */
#ifndef WIN32
#define WIN32
#endif
#define _loadds
#define _SQLPREP_
#include <sqlca.h>
#include <sqlda.h>
#include <string.h>
#define SQLLENMAX(x)      ( ((x) > 32767) ? 32767 : (x) )
short ESQLAPI _loadds sqlaaloc(
      unsigned short usSqlDaId,
      unsigned short sqld,
      unsigned short stmt_id,
      void far *spare);

short ESQLAPI _loadds sqlxcall(
      unsigned short usCallType,
      unsigned short usSection,
      unsigned short usSqldaInId,
      unsigned short usSqlDaOutId,
      unsigned short usSqlTextLen,
      char far *lpszSQLText);

short ESQLAPI _loadds sqlacall(
      unsigned short usCallType,
      unsigned short usSection,
      unsigned short usSqldaInId,
      unsigned short usSqlDaOutId,
      void far *spare);

short ESQLAPI _loadds sqladloc(
      unsigned short usSqldaInId,
      void far *spare);

short ESQLAPI _loadds sqlasets(
      unsigned short cbSqlText,
      void far *lpvSqlText,
      void far *spare);

short ESQLAPI _loadds sqlasetv(
      unsigned short usSqldaInId,
      unsigned short sqlvar_index,
      unsigned short sqltype,
      unsigned short sqllen,
      void far *sqldata,
      void far *sqlind,
      void far *spare);

short ESQLAPI _loadds sqlastop(
      void far *spare);

short ESQLAPI _loadds sqlastrt(
      void far *pid,
      void far *spare,
      void far *sqlca);

short ESQLAPI _loadds sqlausda(
      unsigned short sqldaId,
      void far *lpvSqlDa,
      void far *spare);

extern struct tag_sqlca far sql_sqlca;
extern struct tag_sqlca far *sqlca;
struct sqla_program_id2 { 
unsigned short length; 
unsigned short rp_rel_num; 
unsigned short db_rel_num; 
unsigned short bf_rel_num; 
unsigned char  sqluser[30]; 
unsigned char  sqlusername[30];
unsigned char  planname[256]; 
unsigned char  contoken[8]; 
unsigned char  buffer[8]; 
}; 
static struct sqla_program_id2 program_id = 
            {340,2,0,0,"                              ","","beispiel","JJJZOaFt","        "};
static void far* pid = &program_id;
#line 1 "beispiel.sqc"
#line 1 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"















#pragma once
#line 18 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"






#line 25 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"















#line 41 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"
#line 42 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"





#line 48 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"








#line 57 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"
#line 58 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"









#line 68 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"
#line 69 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"










#line 80 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"
 extern int errno;
#line 82 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"





typedef int ptrdiff_t;

#line 90 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"



typedef unsigned int size_t;

#line 96 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"



typedef unsigned short wchar_t;

#line 102 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"













#line 116 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stddef.h"
#line 2 "beispiel.sqc"
#line 1 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"















#pragma once
#line 18 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"






#line 25 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"







#pragma pack(push,8)
#line 34 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"






















#line 57 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"


























typedef wchar_t wint_t;
typedef wchar_t wctype_t;

#line 87 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"
#line 88 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"









typedef char *  va_list;
#line 99 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"

#line 101 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"






#line 108 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"

#line 110 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"






























#line 141 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"





struct _iobuf {
        char *_ptr;
        int   _cnt;
        char *_base;
        int   _flag;
        int   _file;
        int   _charbuf;
        int   _bufsiz;
        char *_tmpfname;
        };
typedef struct _iobuf FILE;

#line 159 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"












#line 172 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"












#line 185 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"



































 extern FILE _iob[];
#line 222 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"









#line 232 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"


typedef __int64 fpos_t;







#line 243 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"
#line 244 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"


#line 247 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"




























 int __cdecl _filbuf(FILE *);
 int __cdecl _flsbuf(int, FILE *);




 FILE * __cdecl _fsopen(const char *, const char *, int);
#line 283 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"

 void __cdecl clearerr(FILE *);
 int __cdecl fclose(FILE *);
 int __cdecl _fcloseall(void);




 FILE * __cdecl _fdopen(int, const char *);
#line 293 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"

 int __cdecl feof(FILE *);
 int __cdecl ferror(FILE *);
 int __cdecl fflush(FILE *);
 int __cdecl fgetc(FILE *);
 int __cdecl _fgetchar(void);
 int __cdecl fgetpos(FILE *, fpos_t *);
 char * __cdecl fgets(char *, int, FILE *);




 int __cdecl _fileno(FILE *);
#line 307 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"

 int __cdecl _flushall(void);
 FILE * __cdecl fopen(const char *, const char *);
 int __cdecl fprintf(FILE *, const char *, ...);
 int __cdecl fputc(int, FILE *);
 int __cdecl _fputchar(int);
 int __cdecl fputs(const char *, FILE *);
 size_t __cdecl fread(void *, size_t, size_t, FILE *);
 FILE * __cdecl freopen(const char *, const char *, FILE *);
 int __cdecl fscanf(FILE *, const char *, ...);
 int __cdecl fsetpos(FILE *, const fpos_t *);
 int __cdecl fseek(FILE *, long, int);
 long __cdecl ftell(FILE *);
 size_t __cdecl fwrite(const void *, size_t, size_t, FILE *);
 int __cdecl getc(FILE *);
 int __cdecl getchar(void);
 int __cdecl _getmaxstdio(void);
 char * __cdecl gets(char *);
 int __cdecl _getw(FILE *);
 void __cdecl perror(const char *);
 int __cdecl _pclose(FILE *);
 FILE * __cdecl _popen(const char *, const char *);
 int __cdecl printf(const char *, ...);
 int __cdecl putc(int, FILE *);
 int __cdecl putchar(int);
 int __cdecl puts(const char *);
 int __cdecl _putw(int, FILE *);
 int __cdecl remove(const char *);
 int __cdecl rename(const char *, const char *);
 void __cdecl rewind(FILE *);
 int __cdecl _rmtmp(void);
 int __cdecl scanf(const char *, ...);
 void __cdecl setbuf(FILE *, char *);
 int __cdecl _setmaxstdio(int);
 int __cdecl setvbuf(FILE *, char *, int, size_t);
 int __cdecl _snprintf(char *, size_t, const char *, ...);
 int __cdecl sprintf(char *, const char *, ...);
 int __cdecl sscanf(const char *, const char *, ...);
 char * __cdecl _tempnam(const char *, const char *);
 FILE * __cdecl tmpfile(void);
 char * __cdecl tmpnam(char *);
 int __cdecl ungetc(int, FILE *);
 int __cdecl _unlink(const char *);
 int __cdecl vfprintf(FILE *, const char *, va_list);
 int __cdecl vprintf(const char *, va_list);
 int __cdecl _vsnprintf(char *, size_t, const char *, va_list);
 int __cdecl vsprintf(char *, const char *, va_list);








#line 363 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"




 FILE * __cdecl _wfsopen(const wchar_t *, const wchar_t *, int);
#line 369 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"

 wint_t __cdecl fgetwc(FILE *);
 wint_t __cdecl _fgetwchar(void);
 wint_t __cdecl fputwc(wint_t, FILE *);
 wint_t __cdecl _fputwchar(wint_t);
 wint_t __cdecl getwc(FILE *);
 wint_t __cdecl getwchar(void);
 wint_t __cdecl putwc(wint_t, FILE *);
 wint_t __cdecl putwchar(wint_t);
 wint_t __cdecl ungetwc(wint_t, FILE *);

 wchar_t * __cdecl fgetws(wchar_t *, int, FILE *);
 int __cdecl fputws(const wchar_t *, FILE *);
 wchar_t * __cdecl _getws(wchar_t *);
 int __cdecl _putws(const wchar_t *);

 int __cdecl fwprintf(FILE *, const wchar_t *, ...);
 int __cdecl wprintf(const wchar_t *, ...);
 int __cdecl _snwprintf(wchar_t *, size_t, const wchar_t *, ...);
 int __cdecl swprintf(wchar_t *, const wchar_t *, ...);
 int __cdecl vfwprintf(FILE *, const wchar_t *, va_list);
 int __cdecl vwprintf(const wchar_t *, va_list);
 int __cdecl _vsnwprintf(wchar_t *, size_t, const wchar_t *, va_list);
 int __cdecl vswprintf(wchar_t *, const wchar_t *, va_list);
 int __cdecl fwscanf(FILE *, const wchar_t *, ...);
 int __cdecl swscanf(const wchar_t *, const wchar_t *, ...);
 int __cdecl wscanf(const wchar_t *, ...);






 FILE * __cdecl _wfdopen(int, const wchar_t *);
 FILE * __cdecl _wfopen(const wchar_t *, const wchar_t *);
 FILE * __cdecl _wfreopen(const wchar_t *, const wchar_t *, FILE *);
 void __cdecl _wperror(const wchar_t *);
 FILE * __cdecl _wpopen(const wchar_t *, const wchar_t *);
 int __cdecl _wremove(const wchar_t *);
 wchar_t * __cdecl _wtempnam(const wchar_t *, const wchar_t *);
 wchar_t * __cdecl _wtmpnam(wchar_t *);



#line 414 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"
#line 415 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"


#line 418 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"
































 int __cdecl fcloseall(void);
 FILE * __cdecl fdopen(int, const char *);
 int __cdecl fgetchar(void);
 int __cdecl fileno(FILE *);
 int __cdecl flushall(void);
 int __cdecl fputchar(int);
 int __cdecl getw(FILE *);
 int __cdecl putw(int, FILE *);
 int __cdecl rmtmp(void);
 char * __cdecl tempnam(const char *, const char *);
 int __cdecl unlink(const char *);

#line 463 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"






#pragma pack(pop)
#line 471 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"

#line 473 "C:\\Programme\\Microsoft Visual Studio\\VC98\\include\\stdio.h"
#line 3 "beispiel.sqc"
void ErrorHandler (void) {printf("%li %li %li\n", SQLCODE, SQLERRD1, SQLERRMC); }

int main ( int argc, char** argv, char** envp) {
    
#line 6
/*
EXEC  SQL BEGIN DECLARE SECTION;
*/
#line 6
                    
    char  server[] = "arnold.uni";                      
    char  loginPasswort[] = "erika.mustermann";         
    int   persnr;                                       
    char  name[20];                                     
    char  rang[3];                                      
    int   raum;                                         
    char  gebdatum[17];                                 
    short raum_ind;                                     
    char eingaberang[3];                                
    
#line 16
/*
EXEC SQL END DECLARE SECTION;
*/
#line 16
                       

    
#line 18
/*
EXEC SQL WHENEVER SQLERROR CALL ErrorHandler();
*/
#line 18
     
    
#line 19
/*
EXEC SQL CONNECT TO :server USER :loginPasswort;
*/
#line 19

#line 19
{
#line 19
      sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca);
#line 19
      sqlaaloc(2, 2, 1, (void far *)0);
#line 19
      sqlasetv(2, 0, 462, (short) SQLLENMAX(sizeof(server)), (void far *)server, (void far *)0, (void far *)0L);
#line 19
      sqlasetv(2, 1, 462, (short) SQLLENMAX(sizeof(loginPasswort)), (void far *)loginPasswort, (void far *)0, (void far *)0L);
#line 19
      sqlxcall(30, 1, 2, 0, 43, (char far *)"  CONNECT TO @p1      USER @p2             ");
#line 19
      SQLCODE = sqlca->sqlcode;
#line 19
#line 19
      if(sqlca->sqlcode < 0) {
#line 19
            sqlastop((void far *)0L);
#line 19
            ErrorHandler()  ;
#line 19
      }
      sqlastop((void far *)0L);
#line 19
}
#line 20    
    if (SQLCODE == 0) printf("Verbindung aufgebaut!\n");
    else { printf("Keine Verbindung\n"); return (1); }  
    printf("Bitte Rang eingeben: ");                    
    scanf("%s", eingaberang);                           
    printf("Mit Rang %s gespeichert:\n", eingaberang);

    
#line 26
/*
EXEC SQL DECLARE C1 CURSOR FOR                      
      SELECT PersNr, Name, Rang, Raum, Gebdatum         
      FROM Professoren
      WHERE Rang = :eingaberang;
*/
#line 29

    
#line 30
/*
EXEC SQL OPEN C1;
*/
#line 30

#line 30
{
#line 30
      sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca);
#line 30
      sqlaaloc(2, 1, 2, (void far *)0);
#line 30
      sqlasetv(2, 0, 462, (short) SQLLENMAX(sizeof(eingaberang)), (void far *)eingaberang, (void far *)0, (void far *)0L);
#line 30
      sqlxcall(26, 2, 2, 0, 113, (char far *)"/* C1 2 nohold */ SELECT PersNr, Name, Rang, Raum, Gebdatum          FROM Professoren WHERE Rang = @p1           ");
#line 30
      SQLCODE = sqlca->sqlcode;
#line 30
#line 30
      if(sqlca->sqlcode < 0) {
#line 30
            sqlastop((void far *)0L);
#line 30
            ErrorHandler()  ;
#line 30
      }
      sqlastop((void far *)0L);
#line 30
}
#line 31                                   
    
#line 31
/*
EXEC SQL FETCH C1 INTO :persnr, :name, :rang,       
             :raum INDICATOR :raum_ind, :gebdatum;
*/
#line 32

#line 31
{
#line 31
      sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca);
#line 31
      sqlaaloc(1, 5, 2, (void far *)0);
#line 31
      sqlasetv(1, 0, 496,(short) SQLLENMAX(sizeof(persnr)),(void far *)&persnr, (void far *)0,0L);
#line 31
      sqlasetv(1, 1, 462,(short) SQLLENMAX(sizeof(name)),(void far *)&name, (void far *)0,0L);
#line 31
      sqlasetv(1, 2, 462,(short) SQLLENMAX(sizeof(rang)),(void far *)&rang, (void far *)0,0L);
#line 31
      sqlasetv(1, 3, 497,(short) SQLLENMAX(sizeof(raum)),(void far *)&raum, (void far *)&raum_ind,0L);
#line 31
      sqlasetv(1, 4, 462,(short) SQLLENMAX(sizeof(gebdatum)),(void far *)&gebdatum, (void far *)0,0L);
#line 31
      sqlxcall(25, 2, 0, 1, 82, (char far *)"  FETCH C1 INTO :       , :     , :     , :                :         , :          ");
#line 31
      SQLCODE = sqlca->sqlcode;
#line 31
#line 31
      if(sqlca->sqlcode < 0) {
#line 31
            sqlastop((void far *)0L);
#line 31
            ErrorHandler()  ;
#line 31
      }
      sqlastop((void far *)0L);
#line 31
}
#line 33      

    while (SQLCODE == 0){                               
      printf("%d %s %s", persnr, name, rang);           
      if(raum_ind == -1) printf(" ???");                
      else printf("%4d", raum);                         
      printf(" %s\n", gebdatum);                        
      
#line 39
/*
EXEC SQL FETCH C1 INTO :persnr, :name, :rang,     
                  :raum INDICATOR :raum_ind, :gebdatum;
*/
#line 40

#line 39
{
#line 39
      sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca);
#line 39
      sqlaaloc(1, 5, 2, (void far *)0);
#line 39
      sqlasetv(1, 0, 496,(short) SQLLENMAX(sizeof(persnr)),(void far *)&persnr, (void far *)0,0L);
#line 39
      sqlasetv(1, 1, 462,(short) SQLLENMAX(sizeof(name)),(void far *)&name, (void far *)0,0L);
#line 39
      sqlasetv(1, 2, 462,(short) SQLLENMAX(sizeof(rang)),(void far *)&rang, (void far *)0,0L);
#line 39
      sqlasetv(1, 3, 497,(short) SQLLENMAX(sizeof(raum)),(void far *)&raum, (void far *)&raum_ind,0L);
#line 39
      sqlasetv(1, 4, 462,(short) SQLLENMAX(sizeof(gebdatum)),(void far *)&gebdatum, (void far *)0,0L);
#line 39
      sqlxcall(25, 2, 0, 1, 82, (char far *)"  FETCH C1 INTO :       , :     , :     , :                :         , :          ");
#line 39
      SQLCODE = sqlca->sqlcode;
#line 39
#line 39
      if(sqlca->sqlcode < 0) {
#line 39
            sqlastop((void far *)0L);
#line 39
            ErrorHandler()  ;
#line 39
      }
      sqlastop((void far *)0L);
#line 39
}
#line 41 
    }
    
#line 42
/*
EXEC SQL CLOSE C1;
*/
#line 42

#line 42
{
#line 42
      sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca);
#line 42
      sqlxcall(20, 2, 0, 0, 11, (char far *)"  CLOSE C1 ");
#line 42
      SQLCODE = sqlca->sqlcode;
#line 42
#line 42
      if(sqlca->sqlcode < 0) {
#line 42
            sqlastop((void far *)0L);
#line 42
            ErrorHandler()  ;
#line 42
      }
      sqlastop((void far *)0L);
#line 42
}
#line 43                                  
    
#line 43
/*
EXEC SQL DISCONNECT ALL;
*/
#line 43

#line 43
{
#line 43
      sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca);
#line 43
      sqlxcall(36, 3, 0, 0, 17, (char far *)"  DISCONNECT ALL ");
#line 43
      SQLCODE = sqlca->sqlcode;
#line 43
#line 43
      if(sqlca->sqlcode < 0) {
#line 43
            sqlastop((void far *)0L);
#line 43
            ErrorHandler()  ;
#line 43
      }
      sqlastop((void far *)0L);
#line 43
}
#line 44                            
    return (0);
}

long SQLCODE;