home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sp15demo.zip / libsrc.zip / LIBSRC / SQL.PAS < prev    next >
Pascal/Delphi Source File  |  1996-02-22  |  25KB  |  457 lines

  1. UNIT SQL;
  2.  
  3. {*************************************************************************
  4.  *                                                                       *
  5.  * Module Name    = SQL.H                                                *
  6.  *                                                                       *
  7.  * Descriptive Name = External Include file for Database Manager         *
  8.  *                                                                       *
  9.  * Copyright = 5622-044 (C) Copyright IBM Corp. 1988, 1993               *
  10.  *             Licensed Material - Program Property of IBM               *
  11.  *             Refer to Copyright Instructions Form Number G120-3083     *
  12.  *                                                                       *
  13.  * Function = Include File defining                                      *
  14.  *              System Constants                                         *
  15.  *              SQLCA/SQLDA Constants                                    *
  16.  *              Dynamic Link Interface to BINDER                         *
  17.  *              Error Message Retrieval Interface                        *
  18.  *              Authorization Constants                                  *
  19.  *                                                                       *
  20.  *************************************************************************}
  21.  
  22. INTERFACE
  23.  
  24. USES OS2Def;
  25.  
  26. TYPE
  27.  /* SQL Communication Area - SQLCA */
  28.  PSQLCA=^TSQLCA;
  29.  TSQLCA=RECORD
  30.             sqlcaid: ARRAY[0..7] OF BYTE;  /* Eyecatcher = 'SQLCA   ' */
  31.             sqlcabc:LONG;                  /* SQLCA size in bytes = 136 */
  32.             sqlcode:LONG;                  /* SQL return code */
  33.             sqlerrml:SHORT;                /* Length for SQLERRMC */
  34.             sqlerrmc: ARRAY[0..69] OF BYTE; /* Error message tokens */
  35.             sqlerrp:ARRAY[0..7] OF BYTE;   /* Diagnostic information */
  36.             sqlerrd:ARRAY[0..5] OF LONG;   /* Diagnostic information */
  37.             sqlwarn:ARRAY[0..10] OF BYTE;  /* Warning flags */
  38.             sqlstate:ARRAY[0..4] OF BYTE;  /* State corresponding to SQLCODE */
  39.         END;
  40.  
  41. VAR
  42.    sqlca:TSQLCA;
  43.  
  44. VAR
  45.    SQLCODE   :LONG ABSOLUTE sqlca.sqlcode;
  46.    SQLWARN0  :BYTE ABSOLUTE sqlca.sqlwarn[0];
  47.    SQLWARN1  :BYTE ABSOLUTE sqlca.sqlwarn[1];
  48.    SQLWARN2  :BYTE ABSOLUTE sqlca.sqlwarn[2];
  49.    SQLWARN3  :BYTE ABSOLUTE sqlca.sqlwarn[3];
  50.    SQLWARN4  :BYTE ABSOLUTE sqlca.sqlwarn[4];
  51.    SQLWARN5  :BYTE ABSOLUTE sqlca.sqlwarn[5];
  52.    SQLWARN6  :BYTE ABSOLUTE sqlca.sqlwarn[6];
  53.    SQLWARN7  :BYTE ABSOLUTE sqlca.sqlwarn[7];
  54.    SQLWARN8  :BYTE ABSOLUTE sqlca.sqlwarn[8];
  55.    SQLWARN9  :BYTE ABSOLUTE sqlca.sqlwarn[9];
  56.    SQLWARNA  :BYTE ABSOLUTE sqlca.sqlwarn[10];
  57.  
  58. CONST
  59.           /* System Constants */
  60.  
  61.           SQL_KEYPMAX       =     16 ;  /* Maximum nbr of key parts in Index */
  62.           SQL_KEYLMAX       =    255 ;  /* Maximum key length                */
  63.           SQL_SORTFLDLMT    =    254 ;  /* Maximum size of field for sort    */
  64.           SQL_MAXRECL       =   4005 ;  /* Maximum record length             */
  65.           SQL_MAXTABLES     =     15 ;  /* Maximum nbr of tables in a SELECT */
  66.           SQL_MAXSEL_ITEMS  =    255 ;  /* Maximum nbr of items in a SELECT  */
  67.           SQL_MAXVARS       =    880 ;  /* Maximum nbr of unique Host Vars   */
  68.           SQL_MAXVARS_STMT  =   1489 ;  /* Maximum nbr of Host Vars per stmt */
  69.           SQL_MAXSTMTS      =    400 ;  /* Maximum nbr of Sections in a Plan */
  70.           SQL_MAXCOLS       =    255 ;  /* Maximum nbr of columns in a table */
  71.           SQL_MAX_STMT_SIZ  =  32765 ;  /* Maximum statement size            */
  72.  
  73.           SQL_SMALL_LENGTH  =      2 ;  /* Size of a SMALLINT                */
  74.           SQL_MAXSMALLVAL   =  32767 ;  /* Maximum value of a SMALLINT       */
  75.           SQL_MINSMALLVAL   = -32768 ;  /* Minimum value of a SMALLINT       */
  76.           SQL_INT_LENGTH    =      4 ;  /* Size of an INTEGER                */
  77.           SQL_MAXINTVAL = maxint     ;  /* Maximum value of an INTEGER       */
  78.           SQL_MININTVAL = minint     ;  /* Minimum value of an INTEGER       */
  79.           SQL_FLOAT_LENGTH    =    8 ;  /* Size of a FLOAT                   */
  80.           SQL_DEFDEC_PRECISION=    5 ;  /* Default precision for DECIMAL     */
  81.           SQL_DEFDEC_SCALE  =      0 ;  /* Default scale for DECIMAL         */
  82.           SQL_MAXDECIMAL    =     31 ;  /* Maximum scale/prec. for DECIMAL   */
  83.           SQL_DEFCHAR       =      1 ;  /* Default length for a CHAR         */
  84.           SQL_MAXCHAR       =    254 ;  /* Maximum length of a CHAR          */
  85.           SQL_MAXLSTR       =    255 ;  /* Maximum length of an LSTRING      */
  86.           SQL_MAXVCHAR=(SQL_MAXRECL-5); /* Maximum length of a VARCHAR       */
  87.           SQL_MAXVGRAPH     =   2000 ;  /* Maximum length of a VARGRAPHIC    */
  88.           SQL_VCHAROH       =      4 ;  /* Overhead for VARCHAR in record    */
  89.           SQL_LONGMAX       =  32700 ;  /* Maximum length of a LONG VARCHAR  */
  90.           SQL_LONGGRMAX     =  16350 ;  /* Max. length of a LONG VARGRAPHIC  */
  91.           SQL_LVCHAROH      =     24 ;  /* Overhead for LONG VARCHAR in rec. */
  92.           SQL_TIME_LENGTH   =      3 ;  /* Size of a TIME field              */
  93.           SQL_TIME_STRLEN   =      8 ;  /* Size of a TIME field output       */
  94.           SQL_TIME_MINSTRLEN=      5 ;  /* Size of a non-USA TIME field output
  95.                                           without seconds                   */
  96.           SQL_DATE_LENGTH   =      4 ;  /* Size of a DATE field              */
  97.           SQL_DATE_STRLEN   =     10 ;  /* Size of a DATE field output       */
  98.           SQL_STAMP_LENGTH  =     10 ;  /* Size of a TIMESTAMP field         */
  99.           SQL_STAMP_STRLEN  =     26 ;  /* Size of a TIMESTAMP field output  */
  100.           SQL_STAMP_MINSTRLEN=    19 ;  /* Size of a TIMESTAMP field output
  101.                                            without microseconds              */
  102.           SQL_IND_LENGTH    =      2 ;  /* Size of a indicator value         */
  103.  
  104.           SQL_LG_IDENT      =     18 ;  /* Maximum length of Long Identifer  */
  105.           SQL_SH_IDENT      =      8 ;  /* Maximum length of Short Identifer */
  106.           SQL_MN_IDENT      =      1 ;  /* Minimum length of Identifiers     */
  107.           SQL_MAX_VAR_NAME  =     30 ;  /* Max size of Host Variable Name    */
  108.  
  109.  
  110.  
  111.           /* Codepages */
  112.           SQL_CP_437        =    437 ;  /* Codepage 437 - US, Europe         */
  113.           SQL_CP_813        =    813 ;  /* Codepage 813 - AIX Greece         */
  114.           SQL_CP_819        =    819 ;  /* Codepage 819 - ISO 8859-1         */
  115.           SQL_CP_850        =    850 ;  /* Codepage 850 - International PC   */
  116.           SQL_CP_852        =    852 ;  /* Codepage 852 - OS2 Latin2         */
  117.           SQL_CP_857        =    857 ;  /* Codepage 857 - OS2 Turkey         */
  118.           SQL_CP_860        =    860 ;  /* Codepage 860 - Portuguese         */
  119.           SQL_CP_862        =    862 ;  /* Codepage 860 - OS2 Hebrew         */
  120.           SQL_CP_863        =    863 ;  /* Codepage 863 - Canadian-French    */
  121.           SQL_CP_864        =    864 ;  /* Codepage 863 - OS2 Arabic         */
  122.           SQL_CP_865        =    865 ;  /* Codepage 865 - Norway, Denmark    */
  123.           SQL_CP_869        =    869 ;  /* Codepage 869 - OS2 Greece         */
  124.           SQL_CP_891        =    891 ;  /* Codepage 891 - Korean             */
  125.           SQL_CP_897        =    897 ;  /* Codepage 897 - Japanese           */
  126.           SQL_CP_903        =    903 ;  /* Codepage 903 - Chinese            */
  127.           SQL_CP_904        =    904 ;  /* Codepage 904 - Taiwan             */
  128.           SQL_CP_912        =    912 ;  /* Codepage 912 - AIX Latin2         */
  129.           SQL_CP_916        =    916 ;  /* Codepage 916 - AIX Hebrew         */
  130.           SQL_CP_920        =    920 ;  /* Codepage 920 - AIX Turkey         */
  131.           SQL_CP_1040       =   1040 ;  /* Codepage 1040 - Extended Korean   */
  132.           SQL_CP_1041       =   1041 ;  /* Codepage 1041 - Extended Japanese */
  133.           SQL_CP_1042       =   1042 ;  /* Codepage 1042 - Extended Chinese  */
  134.           SQL_CP_1043       =   1043 ;  /* Codepage 1043 - Extended Taiwan   */
  135.           SQL_CP_1046       =   1046 ;  /* Codepage 1046 - AIX Arabic        */
  136.           SQL_CP_1088       =   1088 ;  /* Codepage 1088 - Korea Std         */
  137.           SQL_CP_1089       =   1089 ;  /* Codepage1089 - AIX Arabic         */
  138.  
  139.           /* DBCS Codepages */
  140.           SQL_CP_926        =    926 ;  /* Codepage 926 - Korean             */
  141.           SQL_CP_951        =    951 ;  /* Codepage 951 - New Korean         */
  142.           SQL_CP_301        =    301 ;  /* Codepage 301 - Japanese           */
  143.           SQL_CP_928        =    928 ;  /* Codepage 928 - Chinese            */
  144.           SQL_CP_927        =    927 ;  /* Codepage 927 - Taiwan             */
  145.  
  146.           /* Combined Codepages */
  147.           SQL_CP_934        =    934 ;  /* Codepage 891 + 926 - Korean       */
  148.           SQL_CP_949        =    949 ;  /* CP 1088 + 951 - Korean Std        */
  149.           SQL_CP_932        =    932 ;  /* Codepage 897 + 301 - Japanese     */
  150.           SQL_CP_936        =    936 ;  /* Codepage 903 + 928 - Chinese      */
  151.           SQL_CP_938        =    938 ;  /* Codepage 904 + 927 - Taiwan       */
  152.           SQL_CP_944        =    944 ;  /* Codepage 1040 + 926 - Ext.Korean  */
  153.           SQL_CP_942        =    942 ;  /* Codepage 1041 + 301 - Ext.Japanese*/
  154.           SQL_CP_946        =    946 ;  /* Codepage 1042 + 928 - Ext.Chinese */
  155.           SQL_CP_948        =    948 ;  /* Codepage 1043 + 927 - Ext.Taiwan  */
  156.  
  157. /* Datastream Types */
  158.           SQL_JPN_PC        =    1;/* Japanese-PC                          */
  159.           SQL_CHN_PC        =    2;/* Chinese-PC                           */
  160.           SQL_KOR_PC        =    3;/* Korean-PC                            */
  161.           SQL_KSC_PC        =    4;/* New Korean-PC                        */
  162.           SQL_SBC_PC        =    0;/* Single byte PC                       */
  163.           SQL_UNKN_PC       =  255;/* Unknown                              */
  164.  
  165.           /* SQLCA Constants */
  166.  
  167.           SQL_RC_INVALID_SQLCA = -1;     /* Invalid SQLCA address */
  168.  
  169.           /* Size of SQLCA */
  170.           SQLCA_SIZE   =  sizeof(sqlca);
  171.  
  172.           /* SQL Error message token delimiter */
  173.           SQL_ERRMC_PRES =$FF;           /* delimiter for string entry */
  174.  
  175.           /* Offset in SQLERRD - Diagnostic information */
  176.           SQL_ERRD_RC   =0 ;            /* return code */
  177.           SQL_ERRD_REAS =1 ;            /* reason code */
  178.           SQL_ERRD_CNT  =2 ;            /* nbr rows inserted/updated/deleted */
  179.           SQL_ERRD_OPTM =3 ;            /* optimizer information */
  180.           SQL_ERRD_DCNT =4 ;            /* nbr of cascaded deletes/updates */
  181.           SQL_ERRD_LINE =4 ;            /* line number for recompile error */
  182.           SQL_ERRD_DIAG =5 ;            /* diagnostics */
  183.  
  184.           /* Indexes in SQLWARN - Warning flags */
  185.           SQL_WARN_ANY  =0;             /* composite - set if any warnings */
  186.           SQL_WARN_TRUNC=1;             /* string column truncated */
  187.           SQL_WARN_NUL  =2;             /* null values eliminated */
  188.           SQL_WARN_MISM =3;             /* nbr of columns/host vars mismatch */
  189.           SQL_WARN_ALLR =4;             /* no WHERE clause in update/delete */
  190.           SQL_WARN_DATE =6;             /* date has been truncated */
  191.  
  192.           /* Values for Warning flags in SQLWARN */
  193.           SQL_WARNING   ='W';           /* warning indicator */
  194.           SQL_NULL_TRN  ='N';           /* null terminator truncated warning */
  195.           SQL_NO_WARN   =' ';           /* no warning indicator */
  196.  
  197.  
  198.  
  199.           /* SQLDA Constants */
  200.  
  201.           /* increment for type with null indicator */
  202.           SQL_TYP_NULINC     =  1 ;
  203.  
  204.           /* Variable Types */
  205.           SQL_TYP_DATE      = 384 ;     /* DATE */
  206.           SQL_TYP_NDATE     = (SQL_TYP_DATE+SQL_TYP_NULINC);
  207.  
  208.           SQL_TYP_TIME      = 388 ;     /* TIME */
  209.           SQL_TYP_NTIME     = (SQL_TYP_TIME+SQL_TYP_NULINC);
  210.  
  211.           SQL_TYP_STAMP     = 392 ;     /* TIMESTAMP */
  212.           SQL_TYP_NSTAMP    = (SQL_TYP_STAMP+SQL_TYP_NULINC);
  213.  
  214.           SQL_TYP_VARCHAR   = 448 ;     /* VARCHAR(i) - varying length string
  215.                                                         (2 byte length) */
  216.           SQL_TYP_NVARCHAR  = (SQL_TYP_VARCHAR+SQL_TYP_NULINC);
  217.  
  218.           SQL_TYP_CHAR      = 452 ;     /* CHAR(i) - fixed length string */
  219.           SQL_TYP_NCHAR     = (SQL_TYP_CHAR+SQL_TYP_NULINC);
  220.  
  221.           SQL_TYP_LONG      = 456 ;     /* LONG VARCHAR - varying length
  222.                                                           string */
  223.           SQL_TYP_NLONG     = (SQL_TYP_LONG+SQL_TYP_NULINC);
  224.  
  225.           SQL_TYP_CSTR      = 460 ;     /* varying length string for C
  226.                                             (null terminated) */
  227.           SQL_TYP_NCSTR     = (SQL_TYP_CSTR+SQL_TYP_NULINC);
  228.  
  229.           SQL_TYP_VARGRAPH  = 464 ;     /* VARGRAPHIC(i) - varying length
  230.                                            graphic string (2 byte length) */
  231.           SQL_TYP_NVARGRAPH = (SQL_TYP_VARGRAPH+SQL_TYP_NULINC);
  232.  
  233.           SQL_TYP_GRAPHIC   = 468 ;     /* GRAPHIC(i) - fixed length graphic
  234.                                            string */
  235.           SQL_TYP_NGRAPHIC  = (SQL_TYP_GRAPHIC+SQL_TYP_NULINC);
  236.  
  237.           SQL_TYP_LONGRAPH  = 472 ;     /* LONG VARGRAPHIC(i) - varying length
  238.                                            graphic string */
  239.           SQL_TYP_NLONGRAPH = (SQL_TYP_LONGRAPH+SQL_TYP_NULINC);
  240.  
  241.           SQL_TYP_LSTR      = 476 ;     /* varying length string for Pascal
  242.                                             (1-byte length) */
  243.           SQL_TYP_NLSTR     = (SQL_TYP_LSTR+SQL_TYP_NULINC);
  244.  
  245.           SQL_TYP_FLOAT     = 480 ;     /* FLOAT - 8-byte floating point   */
  246.           SQL_TYP_NFLOAT    = (SQL_TYP_FLOAT+SQL_TYP_NULINC);
  247.  
  248.           SQL_TYP_DECIMAL   = 484 ;    /* DECIMAL (m,n)                    */
  249.           SQL_TYP_NDECIMAL  = (SQL_TYP_DECIMAL+SQL_TYP_NULINC);
  250.  
  251.           SQL_TYP_ZONED     = 488 ;     /* Zoned Decimal -> DECIMAL (m,n)  */
  252.           SQL_TYP_NZONED    = (SQL_TYP_ZONED+SQL_TYP_NULINC);       /* &01 */
  253.  
  254.           SQL_TYP_INTEGER   = 496 ;     /* INTEGER - 4-byte signed integer */
  255.           SQL_TYP_NINTEGER  = (SQL_TYP_INTEGER+SQL_TYP_NULINC);
  256.  
  257.           SQL_TYP_SMALL     = 500 ;     /* SMALLINT - 2-byte signed integer*/
  258.           SQL_TYP_NSMALL    = (SQL_TYP_SMALL+SQL_TYP_NULINC);
  259.  
  260.           SQL_TYP_NUMERIC   = 504 ;     /* NUMERIC -> DECIMAL (m,n)    &01 */
  261.           SQL_TYP_NNUMERIC  = (SQL_TYP_NUMERIC+SQL_TYP_NULINC);     /* &01 */
  262.  
  263.  
  264.  
  265.           /* Return Codes for sqlabind and sqlabndr */
  266.  
  267.           SQLA_RC_BINDERROR    = -1 ;   /* Bind execution failed */
  268.           SQLA_RC_BAD_BINDNAME = -2 ;   /* Invalid bind file */
  269.           SQLA_RC_BAD_DBNAME   = -3 ;   /* Invalid database */
  270.           SQLA_RC_BAD_PASSWD   = -4 ;   /* Invalid password
  271.                                            (not used after Release 2) */
  272.           SQLA_RC_BAD_MSGNAME  = -5 ;   /* Invalid message file */
  273.           SQLA_RC_BAD_FORMAT   = -6 ;   /* Invalid format */
  274.           SQLA_RC_OPEN_ERROR   = -31;   /* Error opening list file */
  275.           SQLA_RC_BAD_BNDFILE  = -39;   /* Bind file corrupted */
  276.           SQLA_RC_LIST_ERROR   = -40;   /* Bind list errors */
  277.           SQLA_RC_INTERRUPT    = -94;   /* Interrupt */
  278.  
  279.           /* Additional return Codes for sqlabndr only */
  280.           SQLA_RC_OPTION_LEN_BAD =-4903;/* Option array length is invalid */
  281.           SQLA_RC_OPTION_PTR_BAD =-4904;/* Option array ptr is invalid    */
  282.           SQLA_RC_OPTION_SIZE_BAD=-4905;/* Option array size is invalid   */
  283.           SQLA_RC_OPTION_DATA_BAD=-4917;/* Option array data is invalid   */
  284.  
  285.           /* Values used for the date/time format parameter of sqlabind */
  286.           SQL_FMT_DEF       =  'DEF' ;  /* FORMAT = Default for Country Code */
  287.           SQL_FMT_USA       =  'USA' ;  /* FORMAT = USA   */
  288.           SQL_FMT_EUR       =  'EUR' ;  /* FORMAT = EUR   */
  289.           SQL_FMT_ISO       =  'ISO' ;  /* FORMAT = ISO   */
  290.           SQL_FMT_JIS       =  'JIS' ;  /* FORMAT = JIS   */
  291.           SQL_FMT_LOC       =  'LOC' ;  /* FORMAT = LOCAL */
  292.  
  293.  
  294. TYPE
  295.    /* Structures used system wide                                             */
  296.    PSQLCHAR=^TSQLCHAR;
  297.    TSQLCHAR=RECORD
  298.                 length:SHORT;
  299.                 data:BYTE;
  300.            END;
  301.  
  302. VAR
  303.    sqlchar:TSQLCHAR;
  304.  
  305. TYPE
  306.    /* Structure used to store binder options when calling sqlabndr            */
  307.    PSQLOPT=^TSQLOPT;
  308.    TSQLOPT=RECORD
  309.                header:RECORD               /* Header for sqlopt structur */
  310.                           allocated:ULONG; /* Number of options allocated */
  311.                           used:ULONG;      /* Number of options used */
  312.                       END;
  313.                option:RECORD
  314.                           atype:ULONG;     /* Type of bind option */
  315.                           val:ULONG;       /* Value of bind option */
  316.                       END;
  317.           END;
  318.  
  319. VAR
  320.     sqlopt:TSQLOPT;
  321.  
  322. CONST
  323.      /* Values used for option[n].type in the sqlopt structure of sqlabndr */
  324.      SQL_FRMT_OPT          = 1 ;   /* Option for date/time format */
  325.      SQL_ISO_OPT           = 4 ;   /* Option for isolation level */
  326.      SQL_BLOCK_OPT         = 5 ;   /* Option for record blocking */
  327.      SQL_GRANT_OPT         = 6 ;   /* Option for granting privileges */
  328.  
  329.      /* Values used for option[n].val when option[n].type is SQL_FRMT_OPT */
  330.      /* These can be also be used for the date/time format parameter of sqlabind */
  331.      SQL_FMT_0             ='0';   /* FORMAT = Default for Country Code */
  332.      SQL_FMT_1             ='1';   /* FORMAT = USA   */
  333.      SQL_FMT_2             ='2';   /* FORMAT = EUR   */
  334.      SQL_FMT_3             ='3';   /* FORMAT = ISO   */
  335.      SQL_FMT_4             ='4';   /* FORMAT = JIS   */
  336.      SQL_FMT_5             ='5';   /* FORMAT = LOCAL */
  337.  
  338.      /* Values used for option[n].val when option[n].type is SQL_ISO_OPT */
  339.      SQL_REP_READ          = 0 ;   /* Repeatable read level  */
  340.      SQL_CURSOR_STAB       = 1 ;   /* Cursor stability level */
  341.      SQL_UNCOM_READ        = 2 ;   /* Uncommitted read level */
  342.  
  343.      /* Values used for option[n].val when option[n].type is SQL_BLOCK_OPT */
  344.      SQL_BL_UNAMBIG        = 0 ;   /* Block Unambiguous cursors */
  345.      SQL_BL_ALL            = 1 ;   /* Block All cursors */
  346.      SQL_NO_BL             = 2 ;   /* Block No cursors */
  347.  
  348.  
  349.      /* Return Codes for sqlaintp */
  350.      SQLA_ERR_BADCC        =-1 ;   /* insufficient memory for msg file */
  351.      SQLA_ERR_NOCOD        =-2 ;   /* no error code in SQLCA */
  352.      SQLA_ERR_NOMSG        =-3 ;   /* requested message not found */
  353.      SQLA_ERR_BADLL        =-4 ;   /* specified line length negative */
  354.      SQLA_ERR_BADCA        =-5 ;   /* invalid sqlca/buffer addr/length */
  355.  
  356.  
  357.  
  358.      /* Administrative/Database Authorizations returned from Get Administrative
  359.         Authorizations function */
  360.  
  361.      /* Authorizations granted explicitly to user */
  362.      SQL_SYSADM          =$0001 ;  /* SYSADM Authority    */
  363.      SQL_DBADM           =$0002 ;  /* DBADM Authority     */
  364.      SQL_CREATETAB       =$0004 ;  /* CREATETAB Privilege */
  365.      SQL_BINDADD         =$0008 ;  /* BINDADD Privilege   */
  366.      SQL_CONNECT         =$0010 ;  /* CONNECT Privilege   */
  367.  
  368.      /* Composite of authorizations granted explicitly to user,
  369.         to groups of which user is a member, and to PUBLIC */
  370.      SQL_SYSADM_GRP     =(SQL_SYSADM SHL 8);
  371.      SQL_DBADM_GRP      =(SQL_DBADM SHL 8);
  372.      SQL_CREATETAB_GRP  =(SQL_CREATETAB SHL 8);
  373.      SQL_BINDADD_GRP    =(SQL_BINDADD SHL 8);
  374.      SQL_CONNECT_GRP    =(SQL_CONNECT SHL 8);
  375.  
  376.      /* Table/View Authorizations/Dependencies Bit definitions
  377.         in SYSTABAUTH.TABAUTH and SYSPLANDEP.TABAUTH */
  378.      SQL_TAB_CTL         =$0001 ;  /* Control Authority           */
  379.      SQL_TAB_ALT         =$0002 ;  /* Alter Privilege             */
  380.      SQL_TAB_DEL         =$0004 ;  /* Delete Privilege/Dependency */
  381.      SQL_TAB_IDX         =$0008 ;  /* Index Privilege             */
  382.      SQL_TAB_INS         =$0010 ;  /* Insert Privilege/Dependency */
  383.      SQL_TAB_SEL         =$0020 ;  /* Select Privilege/Dependency */
  384.      SQL_TAB_UPD         =$0040 ;  /* Update Privilege/Dependency */
  385.      SQL_TAB_REF         =$0080 ;  /* Reference Privilege         */
  386.      SQL_TAB_KEY         =$2000 ;  /* Key Dependency              */
  387.      SQL_TAB_CAS         =$4000 ;  /* Cascade Dependency          */
  388.  
  389.      /* Definitions for application remote interface */
  390.      SQLZ_DISCONNECT_PROC = 1;       /* Unload Progam                */
  391.      SQLZ_HOLD_PROC       = 2;       /* Keep program loaded          */
  392.  
  393.  
  394. IMPORTS
  395.        /* Binder Interface Parameters/Return Codes */
  396.        FUNCTION sqlabind (name:CSTRING;               /* program name */
  397.                           database:CSTRING;           /* database */
  398.                           spare:CSTRING;              /* spare */
  399.                           msgfile:CSTRING;            /* message file */
  400.                           datetimefmt:CSTRING;        /* date/time format */
  401.                           VAR asqlca:TSQLCA):INTEGER; /* SQLCA */
  402.                     APIENTRY; 'SQLA32' name 'sqlabind';
  403.        FUNCTION sqlabndr (name:CSTRING;               /* program name */
  404.                           database:CSTRING;           /* database     */
  405.                           msgfile:CSTRING;            /* message file */
  406.                           VAR asqlopt:TSQLOPT;        /* binder options */
  407.                           VAR asqlca:TSQLCA):INTEGER; /* SQLCA */
  408.                     APIENTRY; 'SQLA32' name 'sqlabndr';
  409.  
  410.        /* Generic Dynamic Link Interface to the Binder */
  411.        FUNCTION SQLGBIND (spare1:LONGWORD;            /* spare1 */
  412.                           msgfilelen:LONGWORD;        /* Message file length */
  413.                           fmtoptlen:LONGWORD;         /* Format option length */
  414.                           PlanNameLen:LONGWORD;       /* Plan name length */
  415.                           DataBaseNameLen:LONGWORD;   /* Database name length */
  416.                           VAR asqlca:TSQLCA;          /* SQLCA */
  417.                           spare2:CSTRING;             /* spare2 */
  418.                           msgfile:CSTRING;            /* Message file */
  419.                           DateTimeFmt:CSTRING;        /* Date/time format */
  420.                           ProgName:CSTRING;           /* Program name */
  421.                           DataBase:CSTRING):INTEGER;  /* Database */
  422.                      APIENTRY; 'SQLAPI32' name 'SQLGBIND';
  423.        FUNCTION SQLGBNDR (PlanNameLen:LONGWORD;       /* Plan name length */
  424.                           DataBaseNameLen:LONGWORD;   /* Database name length */
  425.                           MsgFileLen:LONGWORD;        /* Message file length */
  426.                           ProgName:CSTRING;           /* program name */
  427.                           DataBase:CSTRING;           /* database */
  428.                           MsgFile:CSTRING;            /* message file */
  429.                           VAR asqlopt :TSQLOPT;       /* binder options */
  430.                           VAR asqlca : TSQLCA):INTEGER; /* SQLCA */
  431.                      APIENTRY; 'SQLAPI32' name 'SQLGBNDR';
  432.  
  433.        /* Error Message Retrieval Interface Parameters/Return Codes */
  434.  
  435.        /* Error Message Retrieval Macro */
  436.        {sqlaintp(msgbuf,bufsize,linesize,sqlcaptr) \
  437.        sqlaintp_api(msgbuf,bufsize,linesize, \
  438.                     (char *)"sqlzk001.mo",sqlcaptr)}
  439.        FUNCTION sqlaintp_api (VAR buffer;         /* buffer for message text */
  440.                               BufSize:LONGWORD;   /* buffer size */
  441.                               linewidth:LONGWORD; /* line width */
  442.                               msgfile:CSTRING;    /* message file */
  443.                               VAR asqlca:TSQLCA):INTEGER; /* SQLCA */
  444.                      APIENTRY; 'SQLA32' name 'sqlaintp_api';
  445.  
  446.        /* Generic Dynamic Link Interface to Error Message Retrieval */
  447.        FUNCTION SQLGINTP (bufsize:LONGWORD;     /* buffer size */
  448.                           linewidth:LONGWORD;   /* line width */
  449.                           VAR asqlca :TSQLCA;   /* SQLCA */
  450.                           VAR buffer):INTEGER;  /* buffer */
  451.                     APIENTRY; 'SQLAPI32' name 'SQLGINTP';
  452. END;
  453.  
  454. IMPLEMENTATION
  455.  
  456. END.
  457.