PROC程序在IBM机上编译不过去,HP上是没有问题的
各位达人,小弟有此问题求助:
================================================================
System default option values taken from: /oracle/product/9.2.0/precomp/admin/pcscfg.cfg
Syntax error at line 1316, column 2, file MainDeal.pc:
Error at line 1316, column 2 in file MainDeal.pc
        ub4      l_iLen = 0, l_iOffSet;
.1
PCC-S-02201, Encountered the symbol "ub4" when expecting one of the following:
   auto, char, const, double, enum, extern, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   typedef, union, unsigned, utext, uvarchar, varchar, void,
   volatile, a typedef name, a precompiled header, exec oracle,
   exec oracle begin, exec, exec sql, exec sql begin,
   exec sql end, exec sql type, exec sql var, exec sql include,
The symbol "enum," was substituted for "ub4" to continue.
================================================================
非常奇怪,那个ub4在ORA的头文件里头已经有定义了啊,而且我已经包含进来了,为什么还会报这个错,编译命令行如下:
proc  sqlcheck=syntax release_cursor=yes def_sqlcode=yes MODE=ANSI ireclen=256 include=/lbill/tuxedo/tuxapp/sendlbas/src include=/lbill/tuxedo/tuxapp/sendlbas/src/include include=/home/tuxedo/tuxedo8.1/include  include=/oracle/product/9.2.0/rdbms/demo include=/oracle/product/9.2.0/rdbms/public include=/oracle/product/9.2.0/plsql/public include=/oracle/product/9.2.0/network/public  define=__NO_CICS define=PROGRAM_GZ parse=none iname=MainDeal.pc这个问题困扰小弟两天了,GOOGLE了大江南北,都没法解决,各位能给点指导意见,不胜感激

解决方案 »

  1.   

    期待高手
    对了,忘记说了,一开始从HPUX移植到IBM/AIX来的时候,编译出现的问题是
            proc mode=ansi DYNAMIC=ANSI  def_sqlcode=yes  include=/opt/aCC/include include=/lbill/tuxedo/tuxapp/sendlbas/src include=/lbill/tuxedo/tuxapp/sendlbas/src/include include=/oracle/product/9.2.0/rdbms/demo include=/oracle/product/9.2.0/rdbms/public include=/oracle/product/9.2.0/plsql/public include=/oracle/product/9.2.0/network/public parse=full iname=dyn.pcPro*C/C++: Release 9.2.0.8.0 - Production on Thu Jan 24 11:42:10 2008Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.System default option values taken from: /oracle/product/9.2.0/precomp/admin/pcscfg.cfgSyntax error at line 135, column 2, file /usr/include/standards.h:
    Error at line 135, column 2 in file /usr/include/standards.h
    #warning  The -qdfp option is required to process DFP code in headers.
    .1
    PCC-S-02014, Encountered the symbol "warning" when expecting one of the followin
    g:   a numeric constant, newline, define, elif, else, endif,
       error, if, ifdef, ifndef, include, line, pragma, undef,
       an immediate preprocessor command, a C token,
    The symbol "newline," was substituted for "warning" to continue.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    后来把那个PARSE设置为NONE的话,那么,就是出现第一贴的那个错误,这个错误是不是编译器有问题,还是数据库按装有问题,需要一些什么补丁之类的不??
      

  2.   

    UNIX环境,主要是平台都不一样了, 一个是HP,一个是IBM
      

  3.   

    能看你的代码吗?
    比较参数平台: Linux fc7-2.sanss.com 2.6.21-1.3194.fc7 #1 SMP Wed May 23 22:47:07 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
    Oracle 9i: window xp 机器上
    数据库名:ngn我的Makefile代码如下: ###########################################################################
    # Makefile to build sample applications.
    ###########################################################################
    APPLPATH  = .
    INCLUDE =  -I$(APPLPATH)/inc 
    MAINFILES = $(APPLPATH)/src
    connectDb : connectDb.o  
    gcc -Wall -g -o connectDb connectDb.o   -L"$(ORACLE_HOME)/lib"  -lclntsh
    connectDb.o :  $(MAINFILES)/connectDb.pc  
    proc PARSE=NONE INAME=$(MAINFILES)/connectDb.pc ONAME=$(MAINFILES)/connectDb.c INCLUDE=$(ORACLE_HOME)/precomp/public USERID=ngnsiguser/ngnsiguser@ngn  IRECLEN=512 MODE=ANSI DYNAMIC=ANSI  THREADS=YES  SQLCHECK=SEMANTICS
    gcc $(INCLUDE) -Wall -c -g  $(MAINFILES)/connectDb.c   -DDEBUG 
    valgrind:
    valgrind  --tool=memcheck  --leak-check=full --show-reachable=yes  -v -q  ./connectDbclean:
    \rm -rf   *.bak *.txt *.log *.o  $(MAINFILES)/*.lis  $(MAINFILES)/*.bak   $(MAINFILES)/*.c  connectDb
      

  4.   

    还是编译器的差异,没法做到只是修改编译参数编译成功,因此还是修改了程序;而且在IBM机子上,PROC的变理声明要严格放在BEGIN DECLARE 与END DECLARE之间,HP就不会存在这个问题,并且不能包含宏;例如
    EXEC SQL BEGIN DECLARE SECTION;
    char l_acValue[VALUE_NUM]; /*---1*/
    EXEC SQL ENDDECLARE SECTION;
    这个在HP上的PROC编译是没有问题,但是在IBM上就会报错
      

  5.   

    今日也遇到同样的问题,想知道 blueshame 是怎么解决的,能赐教吗?