IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces de programmation Oracle Discussion :

[PRO*C] probléme


Sujet :

Interfaces de programmation Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 34
    Par défaut [PRO*C] probléme
    slt a tous!! je suis reconnaissant du grand travail que vous fournissez ici et je suis toujours un fidéle a ce forum !!je suis en train de porter (migrer) un produit installé sur AIX et compilé avec XLC vers LINUX RED HAT ENTREPRISE 5 avec GCC comme compilateur !!j’ai résolu plusieurs problémes mais mnt je suis vrmt bloqué dans la précompilation avec pro*c :

    $ make all
    /usr/local/oracle/9.2.0/bin/proc sqlcheck=full userid=PSMS_USER/PSMS_USER dbms=v7 LINES=YES include=/home/oracle/Open2/COMMON/inc include=/home/oracle/Open2/ps/BOF/inc include=/home/oracle/Open2/ps/inc include=/home/oracle/Open2/ps/inc include=/home/oracle/Open2/syu/inc include=/home/oracle/Open2/lng/inc include=/home/oracle/Open2/lng/inc include=/home/oracle/Open2/com/inc iname=/home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.pc

    Pro*C/C++: Release 9.2.0.4.0 - Production on Wed Jul 29 13:12:44 2009

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    System default option values taken from: /usr/local/oracle/9.2.0/precomp/admin/pcscfg.cfg

    Syntax error at line 365, column 6, file /home/oracle/Open2/ps/inc/ps_parslib_parsers.h:
    Error at line 365, column 6 in file /home/oracle/Open2/ps/inc/ps_parslib_parsers
    .h
    bool CheckAndAssign_String(unsigned char dst_string[],
    .....1
    PCC-S-02201, Encountered the symbol "CheckAndAssign_String" when expecting one o
    f the following:

    ; , = ( [
    The symbol ";" was substituted for "CheckAndAssign_String" to continue.

    Syntax error at line 376, column 6, file /home/oracle/Open2/ps/inc/ps_parslib_parsers.h:
    Error at line 376, column 6 in file /home/oracle/Open2/ps/inc/ps_parslib_parsers
    .h
    bool get_send_log_flag(void);
    .....1
    PCC-S-02201, Encountered the symbol "get_send_log_flag" when expecting one of th
    e following:

    ; , = ( [
    The symbol ";" was substituted for "get_send_log_flag" to continue.

    Syntax error at line 139, column 4, file /home/oracle/Open2/ps/BOF/inc/ps_bof_comlib_envdata.h:
    Error at line 139, column 4 in file /home/oracle/Open2/ps/BOF/inc/ps_bof_comlib_
    envdata.h
    Input_Queue_Data BOF_iq;
    ...1
    PCC-S-02201, Encountered the symbol "Input_Queue_Data" when expecting one of the
    following:

    } char, const, double, enum, float, int, long, ulong_varchar,
    OCIBFileLocator OCIBlobLocator, OCIClobLocator, OCIDateTime,
    OCIExtProcContext, OCIInterval, OCIRowid, OCIDate, OCINumber,
    OCIRaw, OCIString, short, signed, sql_context, sql_cursor,
    struct, union, unsigned, utext, uvarchar, varchar, void,
    volatile, a typedef name,

    Syntax error at line 0, column 0, file /home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.pc:
    Error at line 0, column 0 in file /home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_l
    rmdb.pc
    PCC-S-02201, Encountered the symbol "<eof>" when expecting one of the following:

    ; : an identifier, end-exec, random_terminal

    Error at line 0, column 0 in file /home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_l
    rmdb.pc
    PCC-F-02102, Fatal error while doing C preprocessing
    make: *** [/home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.c] Erreur 1

    voici mon fichier sys_include :

    sys_include=(/usr/include,/usr/lib/gcc/i386-redhat-linux/4.1.1/include,/usr/local/oracle/9.2.0/precomp/public)

    include=(/usr/local/oracle/9.2.0/precomp/public)

    include=(/usr/local/oracle/9.2.0/rdbms/demo)

    include=/usr/local/oracle/9.2.0/network)

    include=(/usr/local/oracle/9.2.0/plsql/public)

    ltype=short
    j'ai posté ici quelque partie du code:

    in the file ps_parslib_parsers.c

    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    bool CheckAndAssign_String(unsigned char dst_string[],
                                    unsigned char *src_string,
                                    int max_len);
     
     
     
    void get_error_prod_mng(int *);
    void set_error_prod_mng(int );
    void reset_error_prod_mng(void);
    void set_send_log_flag(void);
    void reset_send_log_flag(void);
    bool get_send_log_flag(void);
    ...
    j'ai chérché pour la définition du fonction checkandassign_string function et je l'ai trouvé dans un autre répertoire dans le fichier the ps_parslib_parsers.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    ...
    /*-----------------------------------------------------------------------------
      FUNCTION CheckAndAssign_String
      -----------------------------------------------------------------------------
      The function executes a copy between strings and then frees the source
      string; the length of the source string is checked before assigning it
      to the destination string.
      The function must be used only with str_val as the source string (it is
      the value returned by the parser).
      ---------------------------------------------------------------------------*/
     
    bool CheckAndAssign_String(unsigned char dst_string[],
                                    unsigned char *src_string,
                                    int max_len)
    {
       if (strlen((char *)src_string) <= max_len)
       {
          strcpy((char *)dst_string, (char *)src_string);
          /*if (strlen((char *)src_string) != 0)
    		{
          */
             free(src_string);
          /*} */
          return TRUE;
       }
       else
       {
          /*if (strlen((char *)src_string) != 0)
    		{
          */
             free(src_string);
          /*} */
          return FALSE;
       }
    }
    ...
     
    méme chose pour la fonction   input_Queue_Data that qui figure dans les erreurs je l'ai trouvé dans un des lib .h :
     
     
    /*=============================================================================
                                   INPUT QUEUE DATA
      ===========================================================================*/
     
     
    /*-----------------------------------------------------------------------------
      MACROS
      ---------------------------------------------------------------------------*/
     
    #define IQ_NAME_LEN 48  /* CLSQD.QName's length */
     
     
    /*-----------------------------------------------------------------------------
      TYPES AND STRUCTURES
      ---------------------------------------------------------------------------*/
     
    typedef struct
    {
       /* name of the alias queue */
       unsigned char name[IQ_NAME_LEN+1];
     
       /* handle of the alias queue */
       CLHOBJ handle;
     
    } Input_Queue_Data;
     
     
     
    /*=============================================================================
                                   QUEUE MANAGER DATA
      ===========================================================================*/
     
     
    /*-----------------------------------------------------------------------------
      TYPES AND STRUCTURES
      ---------------------------------------------------------------------------*/
     
    typedef struct
    {
       /* time of the wait reading operation on the BOF input queue */
       unsigned long  wait_time;
     
       /* id of the connection to the queue manager */
       CLHCONN connection_id;
     
       /* input queue of BOF process */
       Input_Queue_Data BOF_iq;
     
       /* input queue of PSM Scheduler process */
       Input_Queue_Data PSM_sched_iq;
     
    } Queue_Manager_Data;
    je serai vraiment reconnaissant si vous m'aidiez a résoudre cela!!

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Le type de données bool n'existe pas en C! (il existe en C++ mais ce n'est pas pareil).

  3. #3
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    il faut spécifier au précompilateur que le code est du c++ avec l'option code.

    Ajoutes à ta ligne de commande "CODE=CPP"
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 34
    Par défaut
    meeeeeerci ça m'a vrmt aidé vos réponses!!a ce que je vois vous m'avez dit de faire CODE=CPP pour indiquer au précompilateur que c'est du cpp mais mon fichier c'est .c !!en tt cas ça a marché mais avec des erreurs ce sont les suivants :

    make all
    gcc -c -DLINUX -DUNIX_OPSYS -DDEBUG -I/home/oracle/Open2/COMMON/inc -I/home/oracle/Open2/dbg -I. -I/home/oracle/Open2/ps/BOF/inc -I/home/oracle/Open2/ps/inc -I/home/oracle/Open2/ps/inc -I/home/oracle/Open2/com/inc -I/home/oracle/Open2/syu/inc -I/home/oracle/Open2/lng/inc -I/usr/local/oracle/9.2.0/precomp/public /home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.c
    /home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.c:117: erreur: expected identifier or ‘(’ before string constant
    /home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.c:131: erreur: expected identifier or ‘(’ before string constant
    make: *** [/home/oracle/Open2/ps/BOF/src_EDS/ps_bof_eds_lrmdb.o] Erreur 1
    et le code c'est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    // Prototypes
    extern "C" {                                             /*VOICI LA LIGNE ERREUR 117*/
      void sqlcxt (void **, unsigned int *,
                   struct sqlexd *, const struct sqlcxp *);
      void sqlcx2t(void **, unsigned int *,
                   struct sqlexd *, const struct sqlcxp *);
      void sqlbuft(void **, char *);
      void sqlgs2t(void **, char *);
      void sqlorat(void **, unsigned int *, void *);
    }
    
    // Forms Interface
    static const int IAPSUCC = 0;
    static const int IAPFAIL = 1403;
    static const int IAPFTL  = 535;
    extern "C" { void sqliem(char *, int *); }/*VOICI LA LIGNE ERREUR 131*/
    
     static const char *sq0003 = 
    "select c.called_resource ,c.called_link_version  from psms_resource a ,psms_\
    resource_technology b ,psms_resource_link c where ((((((((((a.resource_name=:b\
    0 and a.ownership=:b1) and a.type=:b2) and a.domain_id=:b3) and (a.customer_id\
    =:b4 or (a.customer_id is null  and :b4:b6 is null ))) and a.resource_id=b.res\
    ource_id) and b.format=:b7) and b.resolution=:b8) and b.version=:b9) and b.res\
    _tech_id=c.calling_resource) and c.calling_link_version=:b10)           ";
    et vrmt merci a ce tt ce que vous faites dans ce forum!!

Discussions similaires

  1. [PRO*C] Problème de compilation
    Par sacan dans le forum Interfaces de programmation
    Réponses: 3
    Dernier message: 29/12/2010, 09h41
  2. [PRO*C] probléme avec la fonction Lead | Lag
    Par Sixclopes dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 28/05/2010, 11h52
  3. [UNITY PRO XL] problème commande READ_VAR
    Par padawann10 dans le forum Automation
    Réponses: 4
    Dernier message: 22/02/2010, 12h36
  4. [PRO*C] Problème dans la commande FETCH
    Par David78180 dans le forum Interfaces de programmation
    Réponses: 3
    Dernier message: 18/10/2008, 14h39
  5. Réponses: 2
    Dernier message: 28/08/2007, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo