Annotation of win32/sql/oracle/include/oci/sx3.h, revision 1.1

1.1     ! parser      1: /*
        !             2:  * $Header: /var/lib/cvsroot/parser3/parser3/src/sql/oracle/oracle32/include/oci/sx3.h,v 1.1 2001/08/22 14:02:20 parser Exp $
        !             3:  */
        !             4: 
        !             5: /* Copyright (c) Oracle Corporation 1997, 1998, 1999. All Rights Reserved. */ 
        !             6:  
        !             7: /* 
        !             8: NAME 
        !             9:   sx3.h - System dependent eXternal definitions for disk data structures.  
        !            10:            (Solaris version).
        !            11: 
        !            12: DESCRIPTION
        !            13:   System dependent definitions and declarations used in all Oracle disk 
        !            14:   data structures. 
        !            15: 
        !            16: RELATED DOCUMENTS
        !            17: 
        !            18: INSPECTION STATUS
        !            19:   Inspection date:
        !            20:   Inspection status:
        !            21:   Estimated increasing cost defects per page:
        !            22:   Rule sets:
        !            23: 
        !            24: ACCEPTANCE REVIEW STATUS
        !            25:   Review date:
        !            26:   Review status:
        !            27:   Reviewers:
        !            28: 
        !            29: PUBLIC FUNCTIONS
        !            30:   None
        !            31: 
        !            32: PRIVATE FUNCTIONS
        !            33:   None
        !            34: 
        !            35: EXAMPLES
        !            36:   N/A
        !            37: 
        !            38: NOTES  
        !            39: 
        !            40:   This file contains system dependent definitions and declarations of
        !            41:   data types used in on-disk structures. On-disk structures should be
        !            42:   defined in separate header files and can only use data types defined
        !            43:   in this file.  On-disk structures should not use any native types or
        !            44:   any other type not defined in this file (but defined in sx.h).
        !            45: 
        !            46:   Separating the definitions of on-disk data types allows us to keep 
        !            47:   them compatible across different versions. The key purpose of this 
        !            48:   file is to restrict the data types which can go on disk and to make sure
        !            49:   that their sizes remain the same across different versions. 
        !            50:  
        !            51:   The -MAXVAL and -MINVAL constants represent the numerical range of 
        !            52:   the relevant data type on the current port, i.e. the value of such 
        !            53:   symbol may change from one port to another.  The MIN-MAXVAL and 
        !            54:   MAX-MINVAL constants represent the numerical range of the relevant 
        !            55:   data type across all ports, i.e. the value of these should never be 
        !            56:   changed by porters.  Note that MAXSB1MINVAL is -127, instead of 
        !            57:   -128, to support one's ** complement arithmetic architectures.  
        !            58: 
        !            59: 
        !            60:   DEVELOPERS: This file has been created to separate all the valid
        !            61:   data types that can go on on-disk structures. All the types in
        !            62:   this file are guaranteed to be of the same size across different
        !            63:   versions, specifically while migrating from 32 bit to 64 bit. 
        !            64:   This is very important to maintain the consistency of data on 
        !            65:   the disk. All on-disk structures should be defined in separate
        !            66:   header files (*3.h) and *3.h can only include other *3.h header
        !            67:   files. New data types d*word, dptr_t, dboolean and dsize_t have been
        !            68:   defined to be used in place of *word, ptr_t, boolean and size_t. All
        !            69:   the existing references to *word, size_t, boolean and ptr_t in on-disk
        !            70:   structures have to be replaced with d*word, dsize_t, dboolean and 
        !            71:   dptr_t as word, size_t, boolean  and ptr_t could be of different sizes 
        !            72:   in different versions. d*word, dsize_t, dboolean and dptr_t are currently 
        !            73:   defined to have the same size as the existing type and are guaranteed to 
        !            74:   remain the same size in all future versions, like in 64 bit versions.  
        !            75: 
        !            76:   The d*word, dsize_t, dboolean and dptr_t data types should never be used in
        !            77:   any new data structures. Also dptr_t is defined as a non pointer type
        !            78:   to preserve the size. So it should never be used to store a pointer. 
        !            79:   It is provided as a place holder to preserve the size of the structure.  
        !            80: 
        !            81:   RELATED NOTE: Normal alignment macros like slalsu should never be used
        !            82:   for on-disk data types. You should use a new set of alignment macros 
        !            83:   defined in sl.h. Instead of slalsu, slalsd, slalpu and slalpd you should 
        !            84:   use sldalsu, sldalsd, sldalpu and  sldalpd respectively.
        !            85: 
        !            86: 
        !            87:   PRODUCT LINE DEVELOPERS: This file is solaris specific and
        !            88:   product lines have to modify this file to reflect their platform. In
        !            89:   this file the datatypes eb1, ub1, sb1, eb2, ub2, sb2, eb4, ub4, sb4
        !            90:   must be defined so that they are always of same size for a
        !            91:   particular platform across different versions. For eg: In solaris
        !            92:   ub1, ub2, ub4 occupy 1, 2 and 4 bytes respectively. While porting to
        !            93:   different versions for solaris (say to 64 bit), porters have to make
        !            94:   sure that they always occupy 1,2 and 4 bytes. If the native data
        !            95:   type associated with these types are changed to preserve the sizes,
        !            96:   then literals MIN & MAXVALS have to be changed accordingly. While
        !            97:   porting to 64 bit, only the definitions of *b1,*b2 and *b4 can be
        !            98:   changed to preserve their sizes. All other datatypes must not be
        !            99:   changed.
        !           100: 
        !           101:   dword, dsize_t, dboolean and dptr_t are defined to provide backward
        !           102:   compatibility with word, size_t, boolean  and ptr_t. Their definitions 
        !           103:   must be set such that their size is the same as existing word, size_t, 
        !           104:   boolean and ptr_t and should never be changed in the future. For example
        !           105:   in solaris ptr_t (defined as void *) has the same size as unsigned long
        !           106:   which is 4 bytes. So dptr_t is defined as ub4 and as ub4's size will
        !           107:   be constant in the future so will be dsize_t's size. The definition
        !           108:   of d* should never be changed once they have been defined for a 
        !           109:   particular product line.
        !           110: 
        !           111:    MODIFIED   (MM/DD/YY)
        !           112:     tsaulys    02/10/99 - move obsolete types and macros
        !           113:     dcolello   08/25/98 - WIN32COMMON: port
        !           114:    kkarun     08/14/98 -  Rollback 667803
        !           115:    tsaulys     07/31/98 - do not use text for C++ (when LUSEMFC defined)
        !           116:    skabraha    05/08/98 - no more 1's complement support
        !           117:    skabraha    04/17/98 - changing xb4 to int
        !           118:    skabraha    01/27/98 - adding M_IDEN and SLMXFNMLEN
        !           119:    skabraha    10/28/97 - Defining some datatypes to garbage
        !           120:    skabraha    10/16/97 - Creation
        !           121: 
        !           122: 
        !           123: */
        !           124: 
        !           125: 
        !           126: #ifndef  SX3_ORACLE
        !           127: #define  SX3_ORACLE
        !           128: 
        !           129: #ifndef ORALIMITS
        !           130: # include <limits.h>
        !           131: # define ORALIMITS
        !           132: #endif /* !ORALIMITS */
        !           133: 
        !           134: /*
        !           135: ** Note: this is the WIN32COMMON version of sx3.h.  Always make sure that
        !           136: **   WIN32COMMON is defined.  It is not defined yet if this file is included
        !           137: **   first for whatever reason.
        !           138: */
        !           139: #ifndef WIN32COMMON
        !           140: #define WIN32COMMON
        !           141: #endif
        !           142: 
        !           143: #ifdef WIN32COMMON
        !           144: /* make sure stdlib.h is included to avoid warning with max()/min() macros */
        !           145: #ifndef ORASTDLIB
        !           146: # include <stdlib.h>
        !           147: # define ORASTDLIB
        !           148: #endif
        !           149: #endif /* WIN32COMMON */
        !           150: 
        !           151: 
        !           152: /* All references to size_t has to be replaced with dsize_t. size_t should not
        !           153:  * be used in any disk structures. To enforce this size_t is defined to
        !           154:  * an invalid type here. It is redefined to a valid type in sx.h from the
        !           155:  * included file stddef.h.
        !           156:  */
        !           157: 
        !           158: #ifdef size_t 
        !           159: # undef size_t 
        !           160: #endif /* size_t */
        !           161: 
        !           162: 
        !           163: #define size_t size_t_may_not_be_used_here
        !           164: 
        !           165: /* As olint accepts most of the datatypes on its own here we are #defining
        !           166:  * the unwanted data types to garbage to catch its usage. These will be
        !           167:  * #undefed in the beginning of sx.h.
        !           168:  */
        !           169: 
        !           170: #ifndef SX3_GARBAGE_DEFS
        !           171: # define SX3_GARBAGE_DEFS
        !           172: 
        !           173: # define     uword      uword_may_not_be_used_here
        !           174: # define     sword      sword_may_not_be_used_here
        !           175: # define  ubig_ora   ubig_ora_may_not_be_used_here
        !           176: # define  sbig_ora   sbig_ora_may_not_be_used_here
        !           177: # define       ub8        ub8_may_not_be_used_here
        !           178: # define       sb8        sb8_may_not_be_used_here
        !           179: # ifndef WIN32COMMON
        !           180: #  define   boolean    boolean_may_not_be_used_here
        !           181: # else /* WIN32COMMON */
        !           182: #  undef boolean
        !           183: # endif /* WIN32COMMON */
        !           184: # define     ptr_t      ptr_t_may_not_be_used_here
        !           185: 
        !           186: #endif /* SX3_GARBAGE_DEFS */
        !           187:   
        !           188: /**-------------------------------------------------------------------------**/
        !           189: /**                         DATA TYPE DEFINITIONS                           **/
        !           190: /**-------------------------------------------------------------------------**/
        !           191: 
        !           192: /* We #define while linting as lint complains while casting between 
        !           193:  * two datatypes which have been typedefed to compatible types.             
        !           194:  */
        !           195: 
        !           196: /* xb1 definitions. xb1 will be exactly one byte - at least 8 bits,
        !           197:  * possibly more. sizeof(ub1) is guaranteed to be 1
        !           198:  */
        !           199: 
        !           200: #ifndef lint 
        !           201: typedef unsigned char  ub1;                  /* use where unsigned important */ 
        !           202: typedef   signed char  sb1;                  /* use where   signed important */ 
        !           203: #else 
        !           204: #define ub1 unsigned char 
        !           205: #define sb1 signed char 
        !           206: #endif /* LINT */ 
        !           207:  
        !           208: #define UB1MAXVAL ((ub1)UCHAR_MAX) 
        !           209: #define UB1MINVAL ((ub1)        0) 
        !           210: #define SB1MAXVAL ((sb1)SCHAR_MAX) 
        !           211: #define SB1MINVAL ((sb1)SCHAR_MIN) 
        !           212: #define MINUB1MAXVAL ((ub1)  255) 
        !           213: #define MAXUB1MINVAL ((ub1)    0) 
        !           214: #define MINSB1MAXVAL ((sb1)  127) 
        !           215: #define MAXSB1MINVAL ((sb1) -127) 
        !           216:  
        !           217:  
        !           218: /* xb2 definitions. xb2 will be atleast 2 bytes, possible more */ 
        !           219:  
        !           220: #ifndef lint 
        !           221: typedef unsigned short    ub2;               /* use where unsigned important */ 
        !           222: typedef   signed short    sb2;               /* use where   signed important */ 
        !           223: #else 
        !           224: #define ub2  unsigned short 
        !           225: #define sb2  signed short 
        !           226: #endif /* LINT */ 
        !           227: 
        !           228: #define UB2MAXVAL ((ub2)USHRT_MAX) 
        !           229: #define UB2MINVAL ((ub2)        0) 
        !           230: #define SB2MAXVAL ((sb2) SHRT_MAX) 
        !           231: #define SB2MINVAL ((sb2) SHRT_MIN) 
        !           232: #define MINUB2MAXVAL ((ub2) 65535) 
        !           233: #define MAXUB2MINVAL ((ub2)     0) 
        !           234: #define MINSB2MAXVAL ((sb2) 32767) 
        !           235: #define MAXSB2MINVAL ((sb2)-32767) 
        !           236:   
        !           237: 
        !           238: /* xb4 definitions. xb4 will be atleast 4 bytes, possibly more */
        !           239: 
        !           240: #ifndef lint 
        !           241: typedef unsigned int  ub4;                  /* use where unsigned important */ 
        !           242: typedef   signed int  sb4;                  /* use where   signed important */ 
        !           243: #else 
        !           244: #define ub4 unsigned int 
        !           245: #define sb4 signed int 
        !           246: #endif /* LINT */ 
        !           247:  
        !           248: #define UB4MAXVAL ((ub4)UINT_MAX) 
        !           249: #define UB4MINVAL ((ub4)        0) 
        !           250: #define SB4MAXVAL ((sb4) INT_MAX) 
        !           251: #define SB4MINVAL ((sb4) INT_MIN) 
        !           252: #define MINUB4MAXVAL ((ub4) 4294967295) 
        !           253: #define MAXUB4MINVAL ((ub4)          0) 
        !           254: #define MINSB4MAXVAL ((sb4) 2147483647) 
        !           255: #define MAXSB4MINVAL ((sb4)-2147483647) 
        !           256: 
        !           257: 
        !           258: /* number of bits in a byte */
        !           259: #define UB1BITS          CHAR_BIT
        !           260: #define UB1MASK          ((1 << ((uword)CHAR_BIT)) - 1)
        !           261: 
        !           262: /* This definition has been moved from s.h as it is used by on-disk 
        !           263:  * data structures. The macros for bitvec are in s.h. 
        !           264:  */
        !           265: typedef ub1   bitvec;  
        !           266:    
        !           267: /* BITVEC - to size bitvec arrays */
        !           268: #define BITVEC(n) (((n)+(UB1BITS-1))>>3) 
        !           269:                                
        !           270: /* human readable (printable) characters. oratext should always be one byte */
        !           271: /*
        !           272:  * Update for C++ design: change text to oratext
        !           273:  * typedef  unsigned char text;
        !           274:  */
        !           275: 
        !           276: #ifdef lint
        !           277: # define oratext unsigned char
        !           278: #else
        !           279:   typedef  unsigned char oratext;
        !           280: #endif
        !           281: 
        !           282: /* macros defining min & max */
        !           283: 
        !           284: #ifdef WIN32COMMON
        !           285: #ifndef max
        !           286: #define max(x, y)     (((x) < (y)) ?  (y) : (x))
        !           287: #endif
        !           288: #else
        !           289: #define max(x, y)     (((x) < (y)) ?  (y) : (x))
        !           290: #endif
        !           291: #define min(x, y)     (((x) < (y)) ?  (x) : (y))
        !           292:  
        !           293: /**-------------------------------------------------------------------------**/
        !           294: /** ALTERNATE DATA TYPES FOR THOSE OBSOLETED FOR ON_DISK DATA STRUCTURES    **/
        !           295: /**-------------------------------------------------------------------------**/
        !           296: 
        !           297: /* Developers should replace all existing references to *word, ptr_t, boolean 
        !           298:  * and size_t in disk data structures with d*word, dptr_t, dboolean and 
        !           299:  * dsize_t respectively. These types are guaranteed to be of the same size   
        !           300:  * across different versions on a platform.  
        !           301:  *
        !           302:  * d*word, dsize_t, dboolean and dptr_t should never be used in new data structures.
        !           303:  * They should only be used to preserve the sizes of existing data
        !           304:  * structures.
        !           305:  *
        !           306:  * WARNING: dptr_t has been defined to be a non-pointer datatype so that we 
        !           307:  * can guarantee that the size remains same!!!  
        !           308:  */ 
        !           309: 
        !           310: 
        !           311: /* PRODUCT LINE DEVELOPERS: Change this typedef to a type which has the 
        !           312:  * same size as the current size of *word in your platform. Once the size 
        !           313:  * of d*word has been defined, it should always be of the same size in 
        !           314:  * all future versions (irrespective of the size of *word in later versions)
        !           315:  *
        !           316:  * For example in Solaris uword is defined as having 4 bytes. Hence d*word is
        !           317:  * defined as *b4. This definition will NOT be changed in the future, thus
        !           318:  * preserving the size.
        !           319:  */
        !           320: 
        !           321: /* deword is defined as eb4. As ebx is defined later in the obselete section
        !           322:  * the definition of deword was moved there.
        !           323:  */
        !           324: 
        !           325: #ifndef lint 
        !           326: typedef         ub4      duword;                   
        !           327: typedef         sb4      dsword;                 
        !           328: /* word is an obselete datatype. But it still needs to be changed to dword */ 
        !           329: typedef         dsword   dword;
        !           330: 
        !           331: #else 
        !           332: #define duword ub4 
        !           333: #define dsword sb4 
        !           334: #define dword  dsword
        !           335: #endif /*LINT */ 
        !           336: 
        !           337: #define  DUWORDMAXVAL       UB4MAXVAL 
        !           338: #define  DUWORDMINVAL       UB4MINVAL 
        !           339: #define  DSWORDMAXVAL       SB4MAXVAL 
        !           340: #define  DSWORDMINVAL       SB4MINVAL 
        !           341: #define  MINDUWORDMAXVAL    MINUB4MAXVAL 
        !           342: #define  MAXDUWORDMINVAL    MAXUB4MINVAL 
        !           343: #define  MINDSWORDMAXVAL    MINSB4MAXVAL 
        !           344: #define  MAXDSWORDMINVAL    MAXSB4MINVAL 
        !           345: #define  DWORDMAXVAL        DSWORDMAXVAL 
        !           346: #define  DWORDMINVAL        DSWORDMINVAL 
        !           347:    
        !           348: 
        !           349: 
        !           350: /* PRODUCT LINE DEVELOPERS: Change this typedef to a type which has the 
        !           351:  * same size as the current size of size_t in your platform. Once the size 
        !           352:  * of dsize_t has been defined, it should always be of the same size in all
        !           353:  * future versions (irrespective of the size of size_t in later versions) 
        !           354:  *
        !           355:  * For example in Solaris size_t is defined as unsigned int which is
        !           356:  * the same as ub4. Hence it is defined as ub4.
        !           357:  */
        !           358: 
        !           359: #ifndef lint  
        !           360: typedef ub4 dsize_t;  
        !           361: # else 
        !           362: # define dsize_t ub4 
        !           363: #endif /*LINT */  
        !           364:  
        !           365: # define DSIZE_TMAXVAL UB4MAXVAL           
        !           366: # define MINDSIZE_TMAXVAL (dsize_t)65535 
        !           367:  
        !           368: 
        !           369: /* PRODUCT LINE DEVELOPERS: Change this typedef to a type which has the 
        !           370:  * same size as the current size of boolean in your platform. Once the size 
        !           371:  * of dboolean has been defined, it should always be of the same size in all
        !           372:  * future versions (irrespective of the size of boolean in later versions) 
        !           373:  *
        !           374:  * For example in Solaris boolean is defined as int which is 4 bytes. Hence 
        !           375:  * dboolean is defined as sb4.
        !           376:  */
        !           377: 
        !           378: #ifndef lint  
        !           379: typedef sb4 dboolean;  
        !           380: # else 
        !           381: # define dboolean sb4 
        !           382: #endif /*LINT */  
        !           383:  
        !           384:  
        !           385: /*
        !           386:  * PRODUCT LINE DEVELOPERS: Change this typedef to a type which has the 
        !           387:  * same size as the size of ptr_t in the existing version. Once the size of 
        !           388:  * dptr_t has been defined it should always be of the same size in all future
        !           389:  * versions, irrrespective of the size of ptr_t in later versions.  
        !           390:  * 
        !           391:  * For example in Solaris the pointer is a 4 byte quantity and hence dptr_t
        !           392:  * is defined as ub4.
        !           393:  * 
        !           394:  * WARNING! dptr_t has been defined to be a non-pointer datatype so that 
        !           395:  * we can  guarantee that the size remains same! So it should never be used
        !           396:  * to store a pointer. It should only be used as a place holder to preserve
        !           397:  * the size of the structure. 
        !           398:  */
        !           399: 
        !           400: 
        !           401: #ifndef lint 
        !           402: typedef ub4 dptr_t; 
        !           403: #else 
        !           404: #define dptr_t ub4 
        !           405: #endif /* lint */ 
        !           406: 
        !           407: 
        !           408: /* SLMXFNMLEN: Maximum file name length */                     
        !           409: #ifdef AIXRIOS
        !           410: # define SLMXFNMLEN 256                  
        !           411: #else
        !           412: # define SLMXFNMLEN 512                
        !           413: #endif /* AIXRIOS */
        !           414: 
        !           415: 
        !           416: /**-------------------------------------------------------------------------**/
        !           417: /**                      OBSOLETE DATA TYPES                                **/
        !           418: /**-------------------------------------------------------------------------**/
        !           419: 
        !           420: /* OBSOLETE: The following data types have been obsoleted. They should
        !           421:  * not be used in any new code. Types word, b1, b2, & b4 were
        !           422:  * considered to be synonyms of eword, eb1, eb2 & eb4, but which
        !           423:  * actually had to be implemented as sword, sb1, sb2, & sb4 for
        !           424:  * backward compatibility of old code. 
        !           425:  */
        !           426: 
        !           427: /* ebx definitions */
        !           428: 
        !           429: #ifndef lint 
        !           430: typedef          char     eb1;
        !           431: typedef          short    eb2;               
        !           432: typedef          int      eb4;               
        !           433: typedef          eb4      deword;     
        !           434: #else
        !           435: # define         eb1      char
        !           436: # define         eb2      short
        !           437: # define         eb4      int
        !           438: # define         deword   eb4
        !           439: #endif
        !           440: 
        !           441: #define EB1MAXVAL      ((eb1)SCHAR_MAX) 
        !           442: #define EB1MINVAL      ((eb1)        0) 
        !           443: #define MINEB1MAXVAL   ((eb1)  127) 
        !           444: #define MAXEB1MINVAL   ((eb1)    0) 
        !           445: #define EB2MAXVAL      ((eb2) SHRT_MAX) 
        !           446: #define EB2MINVAL      ((eb2)        0) 
        !           447: #define MINEB2MAXVAL   ((eb2) 32767) 
        !           448: #define MAXEB2MINVAL   ((eb2)     0) 
        !           449: #define EB4MAXVAL      ((eb4) INT_MAX) 
        !           450: #define EB4MINVAL      ((eb4)        0) 
        !           451: #define MINEB4MAXVAL   ((eb4) 2147483647) 
        !           452: #define MAXEB4MINVAL   ((eb4)          0) 
        !           453: #define DEWORDMAXVAL       EB4MAXVAL 
        !           454: #define DEWORDMINVAL       EB4MINVAL 
        !           455: #define MINDEWORDMAXVAL    MINEB4MAXVAL 
        !           456: #define MAXDEWORDMINVAL    MAXEB4MINVAL 
        !           457: 
        !           458: 
        !           459: /* bx definitions */
        !           460: 
        !           461: #ifndef lint 
        !           462: typedef         sb1  b1;                   
        !           463: #else 
        !           464: #define         b1 sb1 
        !           465: #endif  /* lint */ 
        !           466: #define  B1MAXVAL  SB1MAXVAL 
        !           467: #define  B1MINVAL  SB1MINVAL 
        !           468:  
        !           469: #ifndef lint 
        !           470: typedef         sb2      b2;              
        !           471: #else 
        !           472: #define         b2 sb2 
        !           473: #endif  /* lint */ 
        !           474: #define  B2MAXVAL  SB2MAXVAL 
        !           475: #define  B2MINVAL  SB2MINVAL 
        !           476:  
        !           477: #ifndef lint 
        !           478: typedef         sb4    b4;                
        !           479: #else 
        !           480: #define         b4 sb4 
        !           481: #endif  /* lint */ 
        !           482: # define  B4MAXVAL  SB4MAXVAL 
        !           483: # define  B4MINVAL  SB4MINVAL 
        !           484:  
        !           485: 
        !           486: #ifndef uiXT
        !           487: /* Since the use of BITS16 and BITS32 conflict with X Windows definitions, */
        !           488: /* they need to disappear when Xt-based toolkits are being compiled.       */
        !           489: 
        !           490: /* OBSOLETE: BITS8/16/32 are synonyms of ub1/2/4, which are preferred */
        !           491: typedef   ub1       BITS8;                               /* Can hold 8 bits  */
        !           492: typedef   ub2       BITS16;                              /* Can hold 16 bits */
        !           493: typedef   ub4       BITS32;                              /* Can hold 32 bits */
        !           494: #endif /* uiXT */
        !           495:  
        !           496: /* OBSOLETE:  For C++ users who are using Microsoft Foundation Classes, the 
        !           497:  * obsolete Oracle type text conflicts with a reserved keyword.  If LUSEMFC is
        !           498:  * defined, the Oracle definition of text is not used. 
        !           499:  */ 
        !           500: #if !defined(LUSEMFC)
        !           501: # ifdef lint
        !           502: #  define text unsigned char
        !           503: #  define OraText unsigned char
        !           504: # else
        !           505:    typedef oratext text;
        !           506:    typedef oratext OraText; 
        !           507: # endif /* lint */
        !           508: #endif /* !LUSEMFC */
        !           509: 
        !           510: /* OBSOLETE:
        !           511: ** M_IDEN       - maximum identifier size
        !           512: **
        !           513: ** This constant is generic, and should NEVER be changed.  
        !           514: */
        !           515: #define  M_IDEN    30
        !           516: 
        !           517: 
        !           518: #endif /* SX3_ORACLE */ 
        !           519: 
        !           520:   

E-mail: