esql/c problem...
-
hi !
ich habe folgendes problem...
ich rufe aus einem c-programm mit system() ein esql/c-file auf. bei diesem aufruf übergebe ich ein datum. in dem esql/c-file wiederum will ich dieses datum einem element zuweisen, aber irgendwie funzt das nicht...
weiss vielleicht jemand woran es liegt?!c-file:
time_t datum; struct tm *tmzgr; char zeit[11]; char befehl[30]; datum = time(NULL); tmzgr = localtime(&datum); strftime(zeit,11,"%d.%m.%Y",tmzgr); print_starter(&zeit); do{ print_menu(); printf(" "); scanf("%i", &auswahl); if (auswahl == 1){ /* Befehl generieren */ sprintf(befehl,"ausgabe.out %s",zeit); system(befehl);
esql/c-file
$char Xmedien_nummer[11], Xrueckgabe_datum[11]; Xrueckgabe_datum = argv[1]; $update medien SET rueckgabe_datum = :Xrueckgabe_datum WHERE CURRENT OF UCS ;
Fehlermeldung:
line 136: left operand must be modifiable lvalue: op "="
line 229: cannot recover from previous errorswer kann mir vielleicht sagen, was ich hier falsch mache und wie ich es ändern kann?!
danke für jede hilfe
-
vielleicht kannst du uns verraten, welche Zeilen die 136 und 229 sind.
-
also... zeile 136 ist
Xrueckgabe_datum = argv[1];
und das andere ist denke ich das return 0; am ende des files.
-
startupboy schrieb:
$char Xmedien_nummer[11], Xrueckgabe_datum[11];
Was ist das eigentlich für ein Datentyp($char)
-
...
-
$char oder allgemein $variable ist irgend so eine esql-variable...
also mein komplettes file ist...
#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...