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 errors

    wer 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...

    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...


Anmelden zum Antworten