PRO-C versus GCC (V2.0)

From: User Stephane <stephane_at_mais.hydro.qc.ca>
Date: Thu, 25 Feb 1993 19:13:36 GMT
Message-ID: <stephane.730667616_at_tdsb-ipx>


Hi guys...

The problem is when i try to use an ORACLE PRO-C program, inserting a double or float value into a table, i get a core dumped. The problem is occuring only when i use GCC compiler, no problem with /usr/5bin/CC. I don't know if it depends on the compiler or linker or Precompiler or maybe a compiler switch, linker switch or precompiler switch?

Machine : SPARCstation IPX
OS : SunOS 4.1.2

Version : CC System V

          GCC (2.0)
          PRO-C precompiler 1.3.18.1.1
          ORACLE V6.0


*****************************************
Ex: Makefile

CC=gcc
CFLAGS=-c -ansi
EXEC=. PCC=$(ORACLE_HOME)/bin/pcc
PCCINC=$(ORACLE_HOME)/c/lib
PCCFLAGS=include=$(PCCINC) ireclen=132 oreclen=132 select_error=no ltype=none host=C mode=ANSI sqlcheck=LIMITED userid=graf/farg
LIBORA=$(ORACLE_HOME)/rdbms/lib/libora.a 
LIBSQL=$(ORACLE_HOME)/rdbms/lib/libsql.a
OSNTAB=$(ORACLE_HOME)/rdbms/lib/osntab.o
NETLIBS=$(OSNTAB) $(ORACLE_HOME)/rdbms/lib/libsqlnet.a PCCLIBS=$(LIBPCC) $(LIBSQL) $(LIBOCIC) $(LIBPRO) $(LIBPCC) CLIBS= OBJECTS=testora.o oratest.o

$(EXEC)/testora:$(OBJECTS)

	$(CC) $(OBJECTS) -o $(EXEC)/testora $(CLIBS) \
	$(LIBSQL) $(NETLIBS) $(LIBORA) 

testora.o:testora.c
	$(CC) testora.c $(CFLAGS)

oratest.c:oratest.pc
	$(PCC) iname=oratest.pc $(PCCFLAGS) 




*****************************************
Ex: Main program

#include <stdio.h>

main ()
{

  if (!Ora_Login ())
    {
    printf ("Login error...\n");
    exit (1);
    }

  Ora_Save ();

  exit (0);
}



Ex: PRO-C program

    /* GLOBAL VARIABLES */ EXEC SQL BEGIN DECLARE SECTION;
  VARCHAR oracleid[20];

  VARCHAR   var_char[32];
  int       var_int;
  double    var_double;
  short     var_short;

EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE SQLCA; short Ora_Login ()
{

  strcpy (oracleid.arr, "/");
  oracleid.len = strlen(oracleid.arr);

  EXEC SQL CONNECT :oracleid;

  return (TRUE);

}

short Ora_Save ()
{

  strncpy (var_char.arr, "TEST", 4);

  var_char.len = 4; 
  var_int      = 111;
  var_double   = 111.111;
  var_short    = 11;


  EXEC SQL WHENEVER SQLERROR GOTO error;

  EXEC SQL INSERT INTO GRAF.TEST

                         (VAR_CHAR, VAR_INT, VAR_DOUBLE, VAR_SHORT)
                  VALUES (:var_char, :var_int, :var_double, :var_short);

  EXEC SQL COMMIT WORK;   return (TRUE);

error:
  return (FALSE);
}

Help Stephane... Received on Thu Feb 25 1993 - 20:13:36 CET

Original text of this message