S
$char oder allgemein $variable ist irgend so eine esql-variable...
also mein komplettes file ist...
ausgabe.ec
#include <stdio.h>
#include <stdlib.h>
$include sqlca;
$include sqlhdr;
$include sqltypes;
$include datetime;
$include decimal;
void make_clean();
void print_bar(int);
int psqlca( char *t ); /*** Deklaration Protokoll SQL Control Area ***/
int main(int argc , char *argv[]) {
int k;
char sdat[20];
/*** Definition von Host- Variablen ****************************************/
$typedef struct{
char medien_nummer[11];
int status;
int vorbestellt;
int entleiher_nr;
char rueckgabe_datum[11];
} MEDIEN_STRUCT;
/* Strukturvariable fuer FETCH-Kommando ***************************/
$MEDIEN_STRUCT Xmedien;
/* Sonstige Variable **********************************************/
$int Xanz, Xvorbestellt, Xausweis_nummer,Xgefunden;
$char Xmedien_nummer[11], Xrueckgabe_datum[11];
/* Mit BIDA Datenbank verbinden ***********************************/
$database bida; psqlca("Database");
/* Update Cursor erstellen ****************************************/
$declare UCS cursor for
select medien_nummer,
status,
vorbestellt,
entleiher_nr,
rueckgabe_datum
from medien
for update of medien_nummer,
status,
vorbestellt,
entleiher_nr,
rueckgabe_datum ; psqlca("Declare");
/* Cursor oeffnen *************************************************/
$open UCS; psqlca("Open CS");
/* Abfrage Variable fuer das Suchen *******************************/
Xgefunden = 0;
/* Eingabe der Medien Nummer der Ausleihe *************************/
make_clean();
print_bar(1);
printf (" Medien Ausgabe\n");
print_bar(2);
printf (" Bitte geben Sie die Medien Nummer des auszuleihenden Mediums ein:\n");
printf ("\n\n\n\n\n\n\n\n\n\n ");
scanf("%s", &Xmedien_nummer);
/* Abfagen aller Medien *******************************************/
for ( k=0 ; SQLCODE==0 ; k++ ){
$fetch UCS into $Xmedien; psqlca("Fetch");
if ( SQLCODE ){
printf("sdsdsd");
break;
}
/* Prüfen ob das Medium im Medienpool existiert *******************/
if (strcmp(Xmedien.medien_nummer,Xmedien_nummer) == 0){
Xgefunden = 1;
/* Abfage ob es ein vorbestelltes Medium ist **********************/
make_clean();
print_bar(1);
printf (" Wollen Sie ein vorbestelltes Medium ausleihen?\n");
print_bar(2);
printf (" 0 = vorhandenes Medium ausleihen\n");
printf (" 1 = vorbestelltes Medium ausleihen\n");
printf ("\n\n\n\n\n\n\n\n\n ");
scanf("%i", &Xvorbestellt);
/* Ein nicht vorbestelltes Medium ausleihen */
if (Xvorbestellt == 0){
if (Xmedien.vorbestellt == 0) {
/* Aendert den Status von 0(Vorhanden) ********/
/* auf 1(Entliehen) ********/
$update medien SET status = 1 WHERE CURRENT OF UCS ;
/* Eingabe der Ausweis Nummer *****************/
make_clean();
print_bar(1);
printf (" Medien Ausgabe\n");
print_bar(2);
printf (" Bitte geben Sie ihre Ausweis Nummer ein:\n");
printf ("\n\n\n\n\n\n\n\n\n\n ");
scanf("%i", &Xausweis_nummer);
/* Traegt die Ausweis Nummer in das Medium ein*/
$update medien SET entleiher_nr = :Xausweis_nummer WHERE CURRENT OF UCS ;
/* Eingabe des Rueckgabe Datums ***************/
make_clean();
print_bar(1);
printf (" Medien Ausgabe\n");
print_bar(2);
printf (" Heute ist der %s.\n", argv[1]);
printf (" Wann soll das Medium zurueckgebracht werden?\n");
printf ("\n\n\n\n\n\n\n\n\n ");
scanf("%s", &Xrueckgabe_datum);
/* Traegt das Rueckgabe Datum ein */
$update medien SET rueckgabe_datum = :Xrueckgabe_datum WHERE CURRENT OF UCS ;
}
if (Xmedien.vorbestellt == 1) {
/* Versucht ein vorbestelltes medium auszuleihen */
make_clean();
print_bar(1);
printf (" Error! \n");
print_bar(2);
printf (" Ausgabe des Mediums \"%s\" leider nicht moeglich, \n", Xmedien_nummer);
printf (" da es vorbestellt ist!\n\n\n\n\n\n\n\n\n\n");
printf (" Press any Key...");
fflush(stdin);
getchar();
}
}
/* Ein nicht vorbestelltes Medium ausleihen */
if (Xvorbestellt == 1){
if (Xmedien.vorbestellt == 0) {
/* Keine Vorbestllung registiert, Ausleihe trotzdem moeglich */
/* Aendert den Status von 0(Vorhanden) ********/
/* auf 1(Entliehen) ********/
$update medien SET status = 1 WHERE CURRENT OF UCS ;
/* Eingabe der Ausweis Nummer *****************/
make_clean();
print_bar(1);
printf (" Medien Ausgabe\n");
print_bar(2);
printf (" Es wurde keine registrierung fuer dieses Medium gefunden!\n");
printf (" Die Ausleihe ist jedoch trotzdem moeglich.\n\n");
printf (" Bitte geben Sie ihre Ausweis Nummer ein:\n");
printf ("\n\n\n\n\n\n\n ");
scanf("%i", &Xausweis_nummer);
/* Traegt die Ausweis Nummer in das Medium ein*/
$update medien SET entleiher_nr = :Xausweis_nummer WHERE CURRENT OF UCS ;
/* Eingabe des Rueckgabe Datums ***************/
make_clean();
print_bar(1);
printf (" Medien Ausgabe\n");
print_bar(2);
printf (" Heute ist der %s.\n", argv[1]);
printf (" Wann soll das Medium zurueckgebracht werden?\n");
printf ("\n\n\n\n\n\n\n\n\n ");
scanf("%s", &Xrueckgabe_datum);
/* Traegt das Rueckgabe Datum ein */
$update medien SET rueckgabe_datum = :Xrueckgabe_datum WHERE CURRENT OF UCS ;
}
if (Xmedien.vorbestellt == 1) {
printf("pruefen ob du am laengsten wartest\n");
}
}
}
}
/* Abfagen aller Medien *******************************************/
if (Xgefunden == 0) {
make_clean();
print_bar(1);
printf (" Error! \n");
print_bar(2);
printf (" Medium \"%s\" wurde im Medienpool nicht gefunden!\n", Xmedien_nummer);
printf (" Ueberpruefen Sie Ihre Eingabe und versuchen Sie es erneut!\n\n\n\n\n\n\n\n\n\n");
printf (" Press any Key...");
fflush(stdin);
getchar();
}
/* Cursor schliessen*/
$close UCS; psqlca("Close Cursor");
/* Datenbank schliessen*/
$close database;
/* Bildschirm loeschen */
make_clean(); psqlca("Close Database");
return 0;
}
/*** Ausgabe der SQL Control Area Struktur sqlca mit Kommentar-String t *****/
int psqlca( char *t )
{/*
int k;
printf("PSQLCA :%s",t);
printf(" SQLCODE: %ld\n",sqlca.sqlcode);
puts("SQLERRD[0] SQLERRD[1] SQLERRD[2] SQLERRD[3] SQLERRD[4] SQLERRD[5] SQLWARN");
for ( k=0 ; k<6 ; k++ ) printf("%10ld ",sqlca.sqlerrd[k]);
putchar(sqlca.sqlwarn.sqlwarn0 == 'W' ? 'W':'*');
putchar(sqlca.sqlwarn.sqlwarn1 == 'W' ? 'W':'*');
putchar(sqlca.sqlwarn.sqlwarn2 == 'W' ? 'W':'*');
putchar(sqlca.sqlwarn.sqlwarn3 == 'W' ? 'W':'*');
putchar(sqlca.sqlwarn.sqlwarn4 == 'W' ? 'W':'*');
putchar(sqlca.sqlwarn.sqlwarn5 == 'W' ? 'W':'*');
puts("");
return sqlca.sqlcode; /*** Rueckgabe des Fehlercodes ***/
}
/*************************************************************************************************/
void print_bar(int mit){
if (mit == 0){
printf (" ______________________________________________________________________________ ");
}
if (mit == 1){
printf (" ______________________________________________________________________________ \n");
}
if (mit == 2){
printf (" ______________________________________________________________________________ \n\n");
}
if (mit == 3){
printf (" ______________________________________________________________________________ \n\n\n");
}
}
/************************************************************************************************/
void make_clean(){
printf ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
}
falls das irgendjemanden weiter hilft...