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

  1. UNIT SQLENV;
  2.  
  3. {**************************************************************************
  4.  *                                                                        *
  5.  * Module Name    = SQLENV.H                                              *
  6.  *                                                                        *
  7.  * Descriptive Name = External Include File for Environment Commands      *
  8.  *                                                                        *
  9.  * Copyright = 5622-044 (C) Copyright IBM Corp. 1987, 1993                *
  10.  *             Licensed Material - Program Property of IBM                *
  11.  *             Refer to Copyright Instructions Form Number G120-3083      *
  12.  *                                                                        *
  13.  * Function = Include File defining                                       *
  14.  *              Database Environment Command Interfaces                   *
  15.  *              SQL Return Codes in SQLCODE for Environment Commands      *
  16.  *                                                                        *
  17.  **************************************************************************}
  18.  
  19. INTERFACE
  20.  
  21. USES sql,sqlaprep,sqlcodes,Os2Def;
  22.  
  23. CONST
  24.      { Service type }
  25.      SQLJ_DCSSV               = 1;     { Connection Services            }
  26.      SQLJ_DBSV                = 2;     { Database Services              }
  27.  
  28.      { Connection Service request types }
  29.      SQLJR_NOOP              = 0;     { Reserved (No-op)               }
  30.      SQLJR_STOPGW            = 1;     { Stop Database function         }
  31.      SQLJR_INT               = 2;     { Interrupt the request          }
  32.      SQLJR_STARTGW           = 3;     { Start Database Connection      }
  33.      SQLJR_RPC               = 4;     { Application Remote Interface   }
  34.      SQLJR_CS_MAXOP          = 5;     { Highest Valid Request + 1      }
  35.  
  36.      { Database Services request types }
  37.      SQLJR_PREPINIT          = 1;     { Precompiler/Binder
  38.                                          Initialization                 }
  39.      SQLJR_PREPFINI          = 2;     { Precompiler/Binder Termination }
  40.      SQLJR_COMPILE           = 3;     { Compile                        }
  41.      SQLJR_FREEDA            = 4;     { Free SQLDA                     }
  42.      SQLJR_OPEN              = 5 ;    { Open Cursor                    }
  43.      SQLJR_FETCH             = 6 ;    { Fetch with Cursor              }
  44.      SQLJR_CLOSE             = 7 ;    { Close Cursor                   }
  45.      SQLJR_EXECUTE           = 8 ;    { Execute                        }
  46.      SQLJR_PREPARE           = 9 ;    { Prepare                        }
  47.      SQLJR_EXECIMMD          = 10;    { Execute Immediate              }
  48.      SQLJR_COMMIT            = 11;    { Commit                         }
  49.      SQLJR_ROLLBACK          = 12;    { Rollback                       }
  50.      SQLJR_RUNSTATS          = 13;    { Runstats                       }
  51.      SQLJR_PREREORG          = 14;    { Reserved for Database Manager
  52.                                          use only                       }
  53.      SQLJR_DESCRIBE          = 15;    { Describe                       }
  54.      SQLJR_RQSVPT            = 17;    { Request Savepoint              }
  55.      SQLJR_ENSVPT            = 18;    { End Savepoint                  }
  56.      SQLJR_RBSVPT            = 19;    { Rollback Savepoint             }
  57.      SQLJR_GETAA             = 20;    { Reserved for Database Manager
  58.                                          use only                       }
  59.      SQLJR_NOT_USED          = 21;    { Not used                       }
  60.      SQLJR_REORG             = 22;    { Reserved for Database Manager
  61.                                          use only                       }
  62.      SQLJR_GETTA             = 23;    { Get Table/View Authorizations  }
  63.      SQLJR_DS_MAXOP          = 24;    { Highest Valid Request + 1      }
  64.  
  65.      { DCS Interface Positive Return Codes  returned to and by sqledcsr          }
  66.      SQLJR_RCF_OK          =$0000;    { Successful Execution           }
  67.      SQLJR_RCF_COMMIT      =$0001;    { Commit Performed               }
  68.      SQLJR_RCF_ROLLBACK    =$0002;    { Rollback Performed             }
  69.      SQLJR_RCF_CLOSED      =$0004;    { Cursors Closed                 }
  70.      SQLJR_RCF_HOLD        =$0008;    { Cursor has Hold option         }
  71.      SQLJR_RCF_BLOCK       =$0010;    { Cursor can be blocked          }
  72.      SQLJR_RCF_NOBLK       =$0020;    { Cursor cannot be blocked       }
  73.      SQLJR_RCF_SQLCA       =$0040;    { SQLCA Modified                 }
  74.      SQLJR_RCF_FETCHERR    =$0080;    { Cursor closed on fetch         }
  75.      SQLJR_RCF_TERMINATE   =$0100;    { Database Connection Terminated }
  76.      SQLJR_RCF_SECURITY    =$0200;    { Security error                 }
  77.      SQLJR_RCF_FORCE_RLBK  =$0400;    { Forced rollback                }
  78.  
  79.      { Number of triplets in sqljra }
  80.      SQLJCSRA_DATA_ITEMS     =  5;  { Default Connection Services      }
  81.      SQLJDSRA_DATA_ITEMS     =  9;  { Default Database Services        }
  82.      SQLJR_STARTGW_DATA_ITEMS=  5;  { Extra triplets for STARTGW       }
  83.      SQLJR_MAX_DATA_ITEMS    = 11;  { Maximum triplets for any request }
  84.  
  85.      { Data types }
  86.      SQLJ_TYP_CHAR           =  1;    { Fixed length character string  }
  87.      SQLJ_TYP_INTEGER        =  2;    { 4 byte unsigned short          }
  88.      SQLJ_TYP_SMALL          =  3;    { 2 byte unsigned long           }
  89.      SQLJ_TYP_BIN            =  4;    { Fixed length binary data       }
  90.      SQLJ_TYP_INSQLDA        =  5;    { Input SQLDA                    }
  91.      SQLJ_TYP_OUTSQLDA       =  6;    { Output SQLDA                   }
  92.      SQLJ_TYP_INHV           =  7;    { Input SQLDA for host variable
  93.                                          descriptions                  }
  94.      SQLJ_TYP_OUTHV          =  8;    { Output SQLDA for host variable
  95.                                          descriptions                   }
  96.      SQLJ_TYP_SQLCA          =  9;    { SQLCA                          }
  97.      SQLJ_TYP_BNDOPT         = 10;    { Bind option array              }
  98.      SQLJ_TYP_CSTRING        = 11;    { Null-terminated character
  99.                                          string                         }
  100.  
  101.      { Length and count defaults }
  102.  
  103.      SQLJ_LEN_SQLCA         = 136;    { SQLCA                          }
  104.      SQLJ_LEN_CTK           =   8;    { Consistency token              }
  105.      SQLJ_LEN_USERID        =   8;    { Userid                         }
  106.      SQLJ_LEN_PGMN          =   8;    { Package name                   }
  107.      SQLJ_LEN_SMALL         =   2;    { 2-Byte signed integer          }
  108.      SQLJ_LEN_CDPG          =   4;    { Application or Database
  109.                                               codepage                       }
  110.      SQLJ_LEN_TBLNAM        =  18;    { Table name                     }
  111.      SQLJ_LEN_DBNAME        =   8;    { Database name                  }
  112.      SQLJ_LEN_DRDADBNAME    =  18;    { DRDA-1 database name           }
  113.      SQLJ_LEN_PSWD          =   8;    { User password                  }
  114.      SQLJ_LEN_NODE          =   8;    { Node name                      }
  115.      SQLJ_BNDOPT_CNT        =   6;    { Bind option array count        }
  116.      SQLJ_INDICATOR_ARRAY_SIZE= 8;    { Indicator array count          }
  117.  
  118.      SQLJ_RELNO         =$0100    ;    { SQLJRA version number          }
  119.      SQLJRA_TTL       = 'SQLJRA  ';    { SQLJRA title                   }
  120.  
  121.      {********************************************************************}
  122.      { Indicator array offset defintions                                  }
  123.      {********************************************************************}
  124.  
  125.   {  sqlrtype = SQLJR_STARTGW
  126.                           - sqlrflag[SQLJ_CONN_OFF]
  127.                           - sqlrflag[SQLJ_USE_OFF]                           }
  128.  
  129.      SQLJ_CONN_OFF            = 0 ;   { Offset for Connection type     }
  130.      SQLJ_USE_OFF             = 1 ;   { Offset for database use        }
  131.  
  132.      { SQLJ_CONN_OFF values                                                      }
  133.      SQLJ_CONNECT             = 1 ;   { Connection operation           }
  134.      SQLJ_MIGRATE             = 2 ;   { Migrate operation              }
  135.      SQLJ_RESTORE             = 3 ;   { Restore database               }
  136.      SQLJ_RESTART             = 4 ;   { Restart/recover database       }
  137.      SQLJ_BACKUP              = 5 ;   { Backup database                }
  138.      SQLJ_RECOVER             = 6 ;   { Recover database               }
  139.  
  140.      { SQLJ_USE_OFF values                                                       }
  141.      SQLJ_USE_SHR           = 'S' ;   { Shared use connection          }
  142.      SQLJ_USE_EXC           = 'X' ;   { Exclusive use connection       }
  143.  
  144.      {  sqlrtype = all SQLJ_DBSV sqlrtypes : Standards option
  145.                              - sqlrflag[SQLJ_STND_OFF]                       }
  146.  
  147.      SQLJ_STND_OFF          =  0 ;   { Offset for standards option    }
  148.  
  149.      { SQLJ_STND_OFF values                                                      }
  150.      SQLJ_STND_NONE         = '0' ;   { No compliance required         }
  151.      SQLJ_STND_MIA          = '1' ;   { MIA compliance required        }
  152.      SQLJ_STND_SQL89        = '2' ;   { SQL 89 compliance required     }
  153.  
  154.      { sqlrtype = SQLJR_COMMIT
  155.                                 - sqlrflag[SQLJ_CMMT_OFF]                  }
  156.  
  157.      SQLJ_CMMT_OFF            = 1 ;   { Offset for hold option         }
  158.  
  159.      { SQLJ_CMMT_OFF values                                                      }
  160.      SQLJ_CMMT_NOHOLD         = 0 ;   { Commit                         }
  161.      SQLJ_CMMT_HOLD           = 1 ;   { Commit hold                    }
  162.  
  163.      { sqlrtype = SQLJR_COMPILE
  164.                            - sqlrflag[SQLJ_DCSR_OFF]
  165.                            - sqlrflag[SQLJ_CSRH_OFF]
  166.                            - sqlrflag[SQLJ_SG_OFF]                           }
  167.  
  168.      SQLJ_DCSR_OFF            = 1 ;   { Offset for Statement type      }
  169.      SQLJ_CSRH_OFF            = 2 ;   { Offset for Cursor Hold option  }
  170.      SQLJ_SG_OFF              = 3 ;   { Offset for Shallow Grammar     }
  171.  
  172.      { SQLJ_DCSR_OFF values                                                      }
  173.      SQLJ_STMT_NDCLR          = 0 ;   { Statement is not Declare Cursor}
  174.      SQLJ_STMT_DCLR           = 1 ;   { Statement is Declare Cursor    }
  175.  
  176.      { SQLJ_CSRH_OFF values                                                      }
  177.      SQLJ_CSR_NOHOLD          = 0 ;   { Cursor not declared with Hold  }
  178.      SQLJ_CSR_HOLD            = 1 ;   { Cursor declared with Hold      }
  179.  
  180.      { SQLJ_SG_OFF values                                                        }
  181.      SQLJ_STMT_VALID          = 0 ;   { Statement recognized by
  182.                                          precompiler                    }
  183.      SQLJ_STMT_UNKNOWN        = 1 ;   { Statement not recognized by
  184.                                          precompiler                    }
  185.  
  186.      { sqlrtype = SQLJR_EXECUTE
  187.                              sqlrflag[SQLJ_EXEC_OFF]                      }
  188.  
  189.      SQLJ_EXEC_OFF            = 1 ;   { Offset for output SQLDA option }
  190.  
  191.      { SQLJ_EXEC_OFF and SQLJ_CSRDA_OFF values                                   }
  192.      SQLJ_NO_OUTSQLDA         = 0 ;   { Do not return output SQLDA     }
  193.      SQLJ_OUTSQLDA            = 1 ;   { Return output SQLDA            }
  194.  
  195.  
  196.      { sqlrtype =  SQLJR_OPEN
  197.                                - sqlrflag[SQLJ_CSRDA_OFF]
  198.                                - sqlrflag[SQLJ_CSRRW_OFF]                 }
  199.  
  200.      SQLJ_CSRDA_OFF           = 1 ;   { Offset for SQLDA option        }
  201.      SQLJ_CSRRW_OFF           = 2 ;   { Offset for READ/UPDATE option  }
  202.  
  203.      { SQLJ_CSRDA_OFF values                                                     }
  204.      SQLJ_READ                = 0 ;   { Output SQLDA for read-only     }
  205.      SQLJ_UPDATE              = 1 ;   { Output SQLDA will be modified  }
  206.  
  207.      { sqlrtype = SQLJR_PREPFINI
  208.                             - sqlrflag[SQLJ_PFINI_OFF]                     }
  209.  
  210.      SQLJ_PFINI_OFF           = 0 ;   { Offset for Commit/Rollback     }
  211.  
  212.      { SQLJ_PFINI_OFF values                                                     }
  213.      SQLJ_COMMIT              = 1 ;   { Commit package                 }
  214.      SQLJ_ROLLBACK            = 0 ;   { Rollback package               }
  215.  
  216.      { sqlrtype = SQLJR_RUNSTATS
  217.                             - sqlrflag[SQLJ_STATS_OFF]
  218.                             - sqlrflag[SQLJ_SHRLV_OFF]                   }
  219.  
  220.      SQLJ_STATS_OFF           = 1 ;   { Offset for Statistics option   }
  221.      SQLJ_SHRLV_OFF           = 2 ;   { Offset for Share level         }
  222.  
  223.      { SQLJ_STATS_OFF values are defined in sqlutil.pas                 }
  224.  
  225.      { SQLJ_SHRLV_OFF values  are defined in sqlutil.pas                }
  226.  
  227. {***************************************************************************}
  228. { Triplet defintions                                                        }
  229. {***************************************************************************}
  230.  
  231.      { sqlrtype = SQLJR_STARTGW                                                  }
  232.      SQLJ_UPW_OFF             = 0 ;   {  user password                 }
  233.      SQLJ_ACP_OFF             = 1 ;   {  application code page         }
  234.      SQLJ_ANN_OFF             = 2 ;   {  application node name         }
  235.      SQLJ_APN_OFF             = 3 ;   {  application name              }
  236.      SQLJ_DPW_OFF             = 4 ;   {  database password             }
  237.  
  238.      { sqlrtype = SQLJR_RPC                                                      }
  239.      SQLJ_PRC_OFF             = 0 ;   {  procedure return code         }
  240.      SQLJ_RPN_OFF             = 1 ;   {  remote procedure name         }
  241.      SQLJ_IDA_OFF             = 2 ;   {  input sqlda                   }
  242.      SQLJ_ODA_OFF             = 3 ;   {  output sqlda                  }
  243.      SQLJ_DAT_OFF             = 4 ;   {  input data area               }
  244.  
  245.      { sqlrtype = SQLJR_COMPILE                                                  }
  246.      SQLJ_STN_OFF             = 0 ;   {  statement number              }
  247.      SQLJ_STT_OFF             = 1 ;   {  statement text                }
  248.      SQLJ_CRN_OFF             = 2 ;   {  cursor name                   }
  249.      SQLJ_SEL_OFF             = 3 ;   {  select string                 }
  250.  
  251.      { sqlrtype =  SQLJR_EXECIMMD
  252.      SQLJR_PREPARE   SQLJR_REORG                                                   }
  253.      SQLJ_TXT_OFF             = 0 ;   {  statement text                }
  254.      SQLJ_ALP_OFF             = 1 ;   {  alternate path                }
  255.  
  256.      { sqlrtype = SQLJR_GETTA
  257.               SQLJR_RUNSTATS                                             }
  258.      SQLJ_TNM_OFF             = 0 ;   {  table name                    }
  259.      SQLJ_INX_OFF             = 1 ;   {  index list                    }
  260.  
  261.      { sqlrtype = SQLJR_PREPINIT                                                 }
  262.  
  263.      SQLJ_BOA_OFF             = 0 ;   {  bind option array             }
  264.  
  265. {***************************************************************************}
  266. { Bind Option codepoints                                                    }
  267. { These are the DDM codepoints which correspond to the all the bind options }
  268. { which may be specified with the Database Connection Services Programming  }
  269. { Interface.                                                                }
  270. {***************************************************************************}
  271.  
  272.      { sqlrtype = SQLJR_PREPINIT, sqljra.sqlrdata[SQLJ_BOA_OFF],             }
  273.      { sqljra_bindopts.option                                                }
  274.  
  275.      SQLJ_BO_BNDCRTCTL       =$211D ;  { Bind create package option      }
  276.      SQLJ_BO_BNDCHKEXS       =$211B ;  { Bind existence checking         }
  277.      SQLJ_BO_PKGRPLOPT       =$211C ;  { Bind package replacement option }
  278.      SQLJ_BO_PKGATHOPT       =$211E ;  { Bind package authorization      }
  279.      SQLJ_BO_STTSTRDEL       =$2120 ;  { Bind statement string delimiter }
  280.      SQLJ_BO_STTDECDEL       =$2121 ;  { Bind statement decimal delimiter}
  281.      SQLJ_BO_STTDATFMT       =$2122 ;  { Bind date format option         }
  282.      SQLJ_BO_STTTIMFMT       =$2123 ;  { Bind time format option         }
  283.      SQLJ_BO_PKGISOLVL       =$2124 ;  { Isolation level                 }
  284.      SQLJ_BO_PKGDFTCST       =$2125 ;  { Package default char subtype    }
  285.      SQLJ_BO_QRYBLKCTL       =$2132 ;  { Query block protocol            }
  286.      SQLJ_BO_DECPRC          =$2106 ;  { Decimal precision               }
  287.      SQLJ_BO_PKGDFTCC        =$119A ;  { Package default CCSIDs of col   }
  288.      SQLJ_BO_RDBRLSOPT       =$2129 ;  { RDB release option              }
  289.      SQLJ_BO_BNDEXPOPT       =$2130 ;  { Bind explain option             }
  290.      SQLJ_BO_PKGOWNID        =$2131 ;  { Package owner id                }
  291.      SQLJ_BO_DFTRDBCOL       =$2128 ;  { Default RDB collection id       }
  292.      SQLJ_BO_TITLE           =$0045 ;  { Default RDB collection id       }
  293.  
  294.      {   Database Manager internal values                                        }
  295.      SQLJ_BO_STANDARD        =$F901 ;  { Standards compliance option     }
  296.  
  297. {***************************************************************************}
  298. { Bind Option values                                                        }
  299. { These are the DDM codepoints which correspond to the values for the bind  }
  300. { options which may be specified with the Database Connection Services      }
  301. { Programming Interface.                                                    }
  302. {***************************************************************************}
  303.  
  304.      { sqlrtype = SQLJR_PREPINIT, sqljra.sqlrdata[SQLJ_BOA_OFF],                 }
  305.      {            sqljra_bindopts.value                                          }
  306.  
  307.      SQLJ_BO_BNDCHKONL      =$2421 ;   { Syntax Check only               }
  308.      SQLJ_BO_BNDNERALW      =$2422 ;   { Create package if no errors     }
  309.      SQLJ_BO_BNDERRALW      =$2423 ;   { Create Package even if errors   }
  310.      SQLJ_BO_BNDCHK         =$2421 ;   { Don't create package            }
  311.      SQLJ_BO_BNDCRT         =$2422 ;   { Create package if no errors     }
  312.      SQLJ_BO_BNDERR         =$2423 ;   { Create package if errors        }
  313.      SQLJ_BO_EURFMT         =$242B ;   { European date format            }
  314.      SQLJ_BO_EURTIMFMT      =$2430 ;   { European time format            }
  315.      SQLJ_BO_ISOFMT         =$2429 ;   { ISO date format                 }
  316.      SQLJ_BO_ISOTIMFMT      =$242E ;   { ISO time format                 }
  317.      SQLJ_BO_JAPANFMT       =$242C ;   { Japanese date format            }
  318.      SQLJ_BO_JISTIMFMT      =$2431 ;   { Japanese time format            }
  319.      SQLJ_BO_USAFMT         =$242A ;   { USA date format                 }
  320.      SQLJ_BO_USATIMFMT      =$242F ;   { USA time format                 }
  321.      SQLJ_BO_FRCSNGROW      =$2410 ;   { Force single row query          }
  322.      SQLJ_BO_LMTBLCK        =$2417 ;   { Limited block query             }
  323.      SQLJ_BO_SNGROW         =$2418 ;   { Single row query                }
  324.      SQLJ_BO_ISOLVLCHG      =$2441 ;   { Isolation lvl = change          }
  325.      SQLJ_BO_ISOLVLCS       =$2442 ;   { Isolation lvl = cursor stability}
  326.      SQLJ_BO_ISOLVLRR       =$2444 ;   { Isolation lvl = repeatable read }
  327.  
  328.      {   Database Manager internal values                                        }
  329.      SQLJ_BO_STDSQL89        =$F902;   { SQL 89 standards compliance     }
  330.      SQLJ_BO_STDMIA          =$F903;   { MIA standards compliance        }
  331.      SQLJ_BO_STDNONE         =$F904;   { No standards compliance required}
  332.      SQLJ_BO_DEFFMT          =$F905;   { Default country date format     }
  333.      SQLJ_BO_DEFTIMFMT       =$F907;   { Default country time format     }
  334.      SQLJ_BO_LOCAL           =$F906;   { Local country date format       }
  335.      SQLJ_BO_LOCALTIM        =$F906;   { Local country time format       }
  336.  
  337. {***************************************************************************}
  338. { Structure Definitions                                                     }
  339. {***************************************************************************}
  340.  
  341. TYPE
  342.     { Bind Option Array Element                                                 }
  343.     sqljra_bindopts=RECORD
  344.                       alength:WORD;
  345.                       option:WORD;
  346.                       value:WORD;
  347.                     END;
  348.  
  349.     { SQLJRA Triplet element                                                    }
  350.     SQLJDATA=RECORD
  351.                    sqlrdtl:ULONG;
  352.                    sqlrdtt:ULONG;
  353.                    sqlrdtp:PChar;
  354.              END;
  355.  
  356.     { SQLJRA                                                                    }
  357.     SQLJRA=RECORD
  358.                 sqlraid:ARRAY[0..7] OF BYTE;{Eye catcher = 'SQLJRA  '       }
  359.                 sqlrabc:ULONG;              { Size in bytes                  }
  360.                 sqlrelno:WORD;              { Version number                 }
  361.                 sqltype:WORD;               { Service type                   }
  362.                 sqlrtype:WORD;              { Request type                   }
  363.                 sqlrdnum:WORD;              { Number of triplets             }
  364.                                             { SQLCA                          }
  365.                 sqlrcal:ULONG;              {   Length of SQLCA              }
  366.                 sqlrcat:ULONG;              {   Data type of SQLCA           }
  367.                 sqlrcap:PChar;              {   Pointer to SQLCA             }
  368.                                             { Input SQLDA                    }
  369.                 sqlrdail:ULONG;             {   Length of input SQLDA        }
  370.                 sqlrdait:ULONG;             {   Data type of input SQLDA     }
  371.                 sqlrdapi:PChar;             {   Pointer to input SQLDA       }
  372.                                             { Output SQLDA                   }
  373.                 sqlrdaol:ULONG;             {   Length of output SQLDA       }
  374.                 sqlrdaot:ULONG;             {   Data type of output SQLDA    }
  375.                 sqlrdapo:PChar;             {   Pointer to output SQLDA      }
  376.                                             { Indicator array                }
  377.                 sqlrflgl:ULONG;             {   Length of indicator array    }
  378.                 sqlrflgt:ULONG;             {   Data type of indicator array }
  379.                 sqlrflag:PChar;             {   Pointer to indicator array   }
  380.                                             { Userid                         }
  381.                 sqlrusrl:ULONG;             {   Length of userid             }
  382.                 sqlrusrt:ULONG;             {   Data type of userid          }
  383.                 sqlruser:PChar;             {   Pointer to userid            }
  384.                                             { Database name                  }
  385.                 sqlrdbnl:ULONG;             {   Length of database name      }
  386.                 sqlrdbnt:ULONG;             {   Data type of database name   }
  387.                 sqlrdbnm:PChar;             {   Pointer to database name     }
  388.                                             { Package creator                }
  389.                 sqlrcrel:ULONG;             {   Length of package creator    }
  390.                 sqlrcret:ULONG;             {   Data type of package creator }
  391.                 sqlrcrea:PChar;             {   Pointer to package creator   }
  392.                                             { Section Number                 }
  393.                 sqlrsctl:ULONG;             {   Length of section number     }
  394.                 sqlrsctt:ULONG;             {   Data type of section number  }
  395.                 sqlrsect:PChar;             {   Pointer to section number    }
  396.                                             { Package Name                   }
  397.                 sqlrpgml:ULONG;             {   Length of package name       }
  398.                 sqlrpgmt:ULONG;             {   Data type of package name    }
  399.                 sqlrpgmn:PChar;             {   Pointer to package name      }
  400.                                             { Consistency token              }
  401.                 sqlrctkl:ULONG;             {   Length of consistency token  }
  402.                 sqlrctkt:ULONG;             {   Data type of consistency token}
  403.                 sqlrctkp:PChar;             {   Pointer to consistency token }
  404.                                             {   Data triplets                }
  405.                 sqlrdata:ARRAY[0..SQLJR_MAX_DATA_ITEMS-1] OF SQLJDATA;
  406.            END;
  407.  
  408.     SQLJCSRA=SQLJRA;                        { Connection Services
  409.                                               SQLJRA                }
  410.     SQLJDSRA=SQLJRA;                        { Database Services
  411.                                               SQLJRA                }
  412.  
  413. CONST
  414.      SQLJ_LEN_SQLJRA       =sizeof(SQLJRA);      { SQLJRA size           }
  415.      SQLJ_LEN_SQLJCSRA     =sizeof(SQLJRA);      { SQLJCSRA size         }
  416.      SQLJ_LEN_SQLJDSRA     =sizeof(SQLJRA);      { SQLJDSRA size         }
  417.  
  418.  
  419.      SQLJACB_TTL       ='SQLJACB ';    { SQLJACB Title }
  420.      SQLJACB_VER       =$0100;         { SQLJACB Version }
  421.  
  422.      { Connection type - SQLJ_ACBH.conn_type }
  423.      SQLJ_CONN_DRD1   = 1;
  424.      SQLJ_CONN_ASP0   = 2;
  425.      SQLJ_CONN_LOC    = 3;
  426.      SQLJ_CONN_VNDR   = 0;
  427.  
  428.      { ACB type - SQLJACB.sqlapcont }
  429.      SQLJALOC        =$00 ;          { Database is local to Application }
  430.      SQLJAREM        =$01 ;          { Database is remote to Application }
  431.  
  432.      { ACB Connection States - SQLJACB.sqlapconst }
  433.      SQLJAINA        =$00000000 ;    { Application not connected }
  434.      SQLJAIDL        =$00000001 ;    { Application is connected to DB }
  435.      SQLJAREQ        =$00000003 ;    { SQL in progress, interrupt valid }
  436.      SQLJAERR        =$00000004 ;    { Connection in error state }
  437.      SQLJRCVY        =$00000005 ;    { Connection in Recovery state }
  438.      SQLJ_CONN_PAUS  =$00000009 ;    { Connection in Paused state }
  439.      SQLJ_IN_LUW     =$00000011 ;    { In Logical Unit of Work }
  440.  
  441.      { ACB Connection Pending States - SQLJACB.sqlapconst }
  442.      SQLJAACT        =$00000000 ;    { Nothing Pending }
  443.      SQLJASTA        =$00000100 ;    { Start Database Pending }
  444.      SQLJASTO        =$00000200 ;    { Stop Database Pending }
  445.      SQLJAINT        =$00000400 ;    { Request interrupted }
  446.      SQLJ_PAUS_PEND  =$00000800 ;    { Pause Database Pending }
  447.      SQLJ_DB_TERM    =$00001000 ;    { Database has Terminated }
  448.  
  449.      { ACB Information States - SQLJACB.sqlapconst }
  450.      SQLJLOCR        =$00000000 ;    { Local Request }
  451.      SQLJREMR        =$00010000 ;    { Remote Request }
  452.      SQLJBUSY        =$00020000 ;    { Cleanup already in progress }
  453.  
  454.      { ACB Information States - SQLJACB.sqlapconst }
  455.      SQLJNOIN        =$00000000 ;    { No Info }
  456.      SQLJREST        =$01000000 ;    { Restart Request in Progress }
  457.      SQLJCDIP        =$02000000 ;    { Create Database in Progress }
  458.      SQLJBURS        =$04000000 ;    { Backup/Restore in Progress }
  459.      SQLJMIGR        =$08000000 ;    { Migrate in Progress }
  460.      SQLJBACK        =$10000000 ;    { Backup Only in Progress }
  461.  
  462. TYPE
  463.      { SQLJ_ACBH }
  464.      SQLJ_ACBH=RECORD
  465.                      handle:LONG;
  466.                      conn_type:SHORT;       { int to short. }
  467.                END;
  468.  
  469.      SQLJACB=RECORD
  470.                    sqlacbid:CSTRING[7];   { Control block eye catcher }
  471.                    sqlacbsz:ULONG;        { Size in bytes }
  472.                    sqlacbver:WORD;        { Version number }
  473.  
  474.                    sqlnacb:WORD;          { Reserved for Database Connection
  475.                                             Router use only }
  476.                    sqlapcont:WORD;        { Application connection type }
  477.                    sqlapconst:ULONG;      { Application connection state }
  478.  
  479.                    { Process and thread id }
  480.                    sqlappid:WORD;      { Process ID of source element }
  481.                    sqlaptid:WORD;      { Thread ID of source element }
  482.  
  483.                    { Codepages }
  484.                    sqlapcpg:WORD;      { Codepage of originating
  485.                                          application }
  486.                    sqldbcpg:WORD;      { Codepage of database }
  487.  
  488.                    { Datastream type }
  489.                    sqldtast:WORD;      { Datastream type }
  490.  
  491.                    { Originating Application node }
  492.                    sqlapnnl:ULONG;      { Length of application node name }
  493.                    sqlapnnt:WORD;       { Data type of application node name }
  494.                    sqlapnn:POINTER;     { Pointer to application node name }
  495.  
  496.                    { Originating Application ID }
  497.                    sqlapidl:ULONG;      { Length of application id }
  498.                    sqlapidt:WORD;       { Data type of application id }
  499.                    sqlapid:POINTER;     { Pointer to application id }
  500.  
  501.                    { Database Connection Router internal control block }
  502.                    sqlcrtcbl:ULONG;     { Length of Database Connection
  503.                                           Router internal control block }
  504.                    sqlcrtcbt:WORD;      { Data type of Database Connection
  505.                                           Router internal control block }
  506.                    sqlcrtcb:POINTER;    { Pointer to Database Connection
  507.                                           Router internal control block
  508.                                           (Database Connection Router use
  509.                                            only) }
  510.  
  511.                    { Target internal control block }
  512.                    sqlcsvcbl:ULONG;     { Length of target internal control
  513.                                           block }
  514.                    sqlcsvcbt:WORD;      { Data type of target internal
  515.                                           control block }
  516.                    sqlcsvcb:POINTER;    { Pointer to target internal control
  517.                                           block }
  518.  
  519.                    { Userid }
  520.                    sqlusl:ULONG;        { Length of userid }
  521.                    sqlust:WORD;         { Data type of userid }
  522.                    sqluser:PChar;       { Pointer to userid }
  523.  
  524.                    { Alias name in system database directory }
  525.                    sqldball:ULONG;      { Length of alias name }
  526.                    sqldbalt:WORD;       { Data type of alias name }
  527.                    sqldbal:PChar;       { Pointer to alias name of database
  528.                                            in system database directory }
  529.  
  530.                    { Database name in system database directory }
  531.                    sqlldbnl:ULONG;      { Length of database name }
  532.                    sqlldbnt:WORD;       { Data type of database name }
  533.                    sqlldbn:PChar;       { Pointer to name of database
  534.                                           in system database directory }
  535.  
  536.                    { Node name in system database directory }
  537.                    sqlnnl:ULONG;        { Length of node name }
  538.                    sqlnnt:WORD;         { Data type of node name }
  539.                    sqlnn:PChar;         { Pointer to node name in system
  540.                                           database directory }
  541.  
  542.                    { Database name in Database Connection Services directory }
  543.                    sqlsdbnl:ULONG;      { Length of database name }
  544.                    sqlsdbnt:WORD;       { Data type of database name }
  545.                    sqlsdbn:PChar;       { Pointer to database name in Database
  546.                                           Connection Services directory }
  547.  
  548.                    { Target DLL name }
  549.                    sqlpgmnl:ULONG;      { Length of DLL name }
  550.                    sqlpgmnt:WORD;       { Data type of DLL name }
  551.                    sqlpgmn:PChar;       { Pointer to DLL name of target
  552.                                           element }
  553.  
  554.                    { Parameter string }
  555.                    sqlparml:ULONG;      { Length of parameter string }
  556.                    sqlparmt:WORD;       { Data type of parameter string }
  557.                    sqlparm:PChar;       { Pointer to parameter string from
  558.                                           Database Connection Services
  559.                                           directory }
  560.                    { Target element data heap }
  561.                    sqlrshpl:ULONG;      { Length of target data heap }
  562.                    sqlrshpt:WORD;       { Data type of target data heap }
  563.                    sqlrshp:PChar;       { Pointer to target data heap }
  564.              END;
  565.  
  566. CONST
  567.      SQLJ_LEN_SQLJACB =sizeof(SQLJACB);
  568.  
  569.      { Interface Parameters/Structures/Return Codes }
  570.  
  571.  
  572.      { Parameters for START USING DATABASE }
  573.      SQL_USE_SHR           = 'S';      { USE = Share           }
  574.      SQL_USE_EXC           = 'X';      { USE = Exclusive       }
  575.  
  576.      { Sizes for entries in sqledinfo, sqleninfo, sqledbstat, sqleusrstat &
  577.                         sql_dir_entry                                }
  578.  
  579.      SQL_ALIAS_SZ          = 8  ;      { Alias name            }
  580.      SQL_USERID_SZ         = 8  ;      { User Id               }
  581.      SQL_DBNAME_SZ         = 8  ;      { Database name         }
  582.      SQL_DRIVE_SZ          = 2  ;      { Drive (Qualified)     }
  583.      SQL_INAME_SZ          = 8  ;      { Internal db name      }
  584.      SQL_NNAME_SZ          = 8  ;      { Node name             }
  585.      SQL_DBTYP_SZ          = 20 ;      { Type of database      }
  586.      SQL_CMT_SZ            = 30 ;      { Comment               }
  587.      SQL_LOCLU_SZ          = 8  ;      { Local_lu              }
  588.      SQL_RMTLU_SZ          = 8  ;      { Partner_lu            }
  589.      SQL_MODE_SZ           = 8  ;      { Mode                  }
  590.      SQL_NRESERVE_SZ       = 0  ;      { Reserved              }
  591.      SQL_DBSTAT_ALIAS_SZ   = 16 ;      { Alias name            }
  592.      SQL_DBSTAT_DBNAME_SZ  = 16 ;      { Database name         }
  593.      SQL_LONG_NAME_SZ      = 18 ;      { Host database name    }
  594.      SQL_CS_SZ             = 256;      { collating sequence    }
  595.      SQL_PARAMETER_SZ      = 512;      { Parameter string      }
  596.      SQL_NETID_SZ          = 8  ;      { Network ID            }
  597.  
  598.      { Parameters for Entry Type in sqledinfo }
  599.  
  600.      SQL_HOME              = '2' ;     { Database is home      }
  601.      SQL_REMOTE            = '1' ;     { Database is remote    }
  602.      SQL_INDIRECT          = '0' ;     { Database is indirect  }
  603.  
  604.      { Parameters for adapter number in sqlectnd }
  605.  
  606.      SQL_ADAPTER_0         = 0 ;       { Adapter number 0      }
  607.      SQL_ADAPTER_1         = 1 ;       { Adapter number 1      }
  608.      SQL_ADAPTER_MIN       = 0 ;       { Minimum adapter number}
  609.      SQL_ADAPTER_MAX       = 1 ;       { Maximum adapter number}
  610.  
  611.      { Definitions of constants used for Structure IDs }
  612.  
  613.      SQL_DCS_STR_ID           =$0100 ;  { DCS directory entry id    }
  614.      SQL_NODE_STR_ID          =$0100 ;  { Catalog node struct id    }
  615.  
  616.      { Parameters for protcol types in sqlectnd }
  617.  
  618.      SQL_PROTOCOL_APPC       =$00 ;    { APPC                       }
  619.      SQL_PROTOCOL_NETB       =$01 ;    { NETBIOS                    }
  620.      SQL_PROTOCOL_APPN       =$02 ;    { APPN                       }
  621.  
  622.      { Parameters for New Create Database api }
  623.  
  624.      SQL_CS_SYSTEM        =  0 ;       { Coll. Seq. from System    }
  625.      SQL_CS_USER          = -1 ;       { Coll. Seq. from User      }
  626.      SQL_CS_NONE          = -2 ;       { Coll. Seq. - none         }
  627.  
  628.  
  629. TYPE
  630.     {****************************************}
  631.     { Database Description Block structure   }
  632.     {****************************************}
  633.     sqledbdesc=RECORD
  634.                  sqldbdid:CSTRING[7];      { eye catcher                }
  635.                  sqldbccp:LONG;            { comment code page          }
  636.                  sqldbcss:LONG;            { Source of collating seq.   }
  637.                  sqldbudc:ARRAY[0..SQL_CS_SZ-1] OF BYTE; { user-defined collating seq.}
  638.                  sqldbcmt:ARRAY[0..SQL_CMT_SZ] OF BYTE;  { comment                    }
  639.                END;
  640.  
  641.     {****************************************}
  642.     { Database Directory Scan data structure }
  643.     {****************************************}
  644.     sqledinfo=RECORD
  645.                   alias:ARRAY[0..SQL_ALIAS_SZ-1] OF BYTE;   { Alias name                 }
  646.                   dbname:ARRAY[0..SQL_DBNAME_SZ-1] OF BYTE; { Database name              }
  647.                   drive:ARRAY[0..SQL_DRIVE_SZ-1] OF BYTE;   { Drive 'd:'                 }
  648.                   intname:ARRAY[0..SQL_INAME_SZ-1] OF BYTE; { Database subdirectory      }
  649.                   nodename:ARRAY[0..SQL_NNAME_SZ-1] OF BYTE;{ Node name                  }
  650.                   dbtype:ARRAY[0..SQL_DBTYP_SZ-1] OF BYTE;  { Release information        }
  651.                   comment:ARRAY[0..SQL_CMT_SZ-1] OF BYTE;   { Comment                    }
  652.                   com_codepage:SHORT;                       { Code page of comment       }
  653.                   atype:BYTE;                               { Entry type - defines above }
  654.               END;
  655.  
  656.     {************************************}
  657.     { Node Directory Scan data structure }
  658.     {************************************}
  659.     sqleninfo=RECORD
  660.                 nodename:ARRAY[0..SQL_NNAME_SZ-1] OF BYTE;    { Node name             }
  661.                 local_lu:ARRAY[0..SQL_LOCLU_SZ-1] OF BYTE;    { Local_lu name         }
  662.                 partner_lu:ARRAY[0..SQL_RMTLU_SZ-1] OF BYTE;  { Partner_lu name       }
  663.                 mode:ARRAY[0..SQL_MODE_SZ-1] OF BYTE;         { Mode                  }
  664.                 comment:ARRAY[0..SQL_CMT_SZ-1] OF BYTE;       { Comment               }
  665.                 com_codepage:WORD;                            { Comment code page     }
  666.                 adapter:WORD;                                 { Adapter # for Net Bios}
  667.                 networkid:ARRAY[0..SQL_NETID_SZ-1] OF BYTE;   { Network ID            }
  668.                 protocol:BYTE;                                { Protocol type         }
  669.               END;
  670.  
  671.     {********************************************}
  672.     { General Catalog Node structures and defines}
  673.     {********************************************}
  674.     sqle_node_struct=RECORD
  675.                         struct_id:WORD;          { Structure Identifier  }
  676.                         codepage:WORD;           { Codepage for comment  }
  677.                         comment:ARRAY[0..SQL_CMT_SZ] OF BYTE; { Comment               }
  678.                         nodename:ARRAY[0..SQL_NNAME_SZ] OF BYTE;{ Node name             }
  679.                         protocol:BYTE;           { Protocol Type         }
  680.                      END;
  681.  
  682.     sqle_node_appc=RECORD             { For APPC protocol     }
  683.                      local_lu:ARRAY[0..SQL_LOCLU_SZ] OF BYTE;    { Local_lu name         }
  684.                      partner_lu:ARRAY[0..SQL_RMTLU_SZ] OF BYTE;  { Alias Partner_lu name }
  685.                      mode:ARRAY[0..SQL_MODE_SZ] OF BYTE;         { Mode                  }
  686.                    END;
  687.  
  688.     sqle_node_netb=RECORD             { For Netbios Protocol  }
  689.                      adapter:WORD;                       { Adapter Number        }
  690.                      remote_nname:ARRAY[0..SQL_RMTLU_SZ] OF BYTE;{ Remote Workstation name}
  691.                    END;
  692.  
  693.     sqle_node_appn=RECORD             { For APPN protocol     }
  694.                      networkid:ARRAY[0..SQL_NETID_SZ] OF BYTE;   { Network ID            }
  695.                      remote_lu:ARRAY[0..SQL_RMTLU_SZ] OF BYTE;   { Remoter lu name       }
  696.                      local_lu:ARRAY[0..SQL_LOCLU_SZ] OF BYTE;    { Local_lu name         }
  697.                      mode:ARRAY[0..SQL_MODE_SZ] OF BYTE;         { Mode                  }
  698.                    END;
  699.  
  700.  
  701. CONST
  702.     { Sizes for entries in sqlesystat & sqleusrstat }
  703.  
  704.     SQL_PRODNAME_SZ        = 30 ;      { Product name          }
  705.     SQL_COMPID_SZ          = 9  ;      { Component Id          }
  706.     SQL_CORRLVL_SZ         = 8  ;      { Corrective serv level }
  707.     SQL_RLSLVL_SZ          = 4  ;      { Release level         }
  708.  
  709.     { Defines for STATUS parameter on Collect Database Status }
  710.     SQL_OPSTAT_SYSTEM      = 1  ;      { Collect system status }
  711.     SQL_OPSTAT_DATABASE    = 2  ;      { Collect database stat }
  712.     SQL_OPSTAT_ALL         = 3  ;      { Collect all status    }
  713.  
  714.     { Defines for OBJECT parameter on Collect Database Status }
  715.     SQL_OBJECT_DATABASE    = 1  ;      { Specified database    }
  716.     SQL_OBJECT_DRIVE       = 2  ;      { Specified drive       }
  717.     SQL_OBJECT_LOCAL       = 3  ;      { All local databases   }
  718.  
  719.     { Defines for 'location' field in sqledbstat }
  720.     SQL_LOCAL_TYPE         = 'L';
  721.     SQL_REMOTE_TYPE        = 'R';
  722.  
  723.     { Defines for 'trans_state' field in sqleusrstat }
  724.     SQL_TRANS_STATE_STARTED= 'S';
  725.     SQL_TRANS_STATE_READ   = 'R';
  726.     SQL_TRANS_STATE_CHANGED= 'C';
  727.  
  728.     { Defines for 'lock_state' field in sqleusrstat }
  729.     SQL_LOCK_STATE_WAIT    = 'W';
  730.     SQL_LOCK_STATE_NOWAIT  = 'N';
  731.  
  732.  
  733. TYPE
  734.     {*****************************************}
  735.     { Collect Database Status data structures }
  736.     {*****************************************}
  737.  
  738.     { System Status data structure }
  739.     sqlesystat=RECORD
  740.                      current_time:ULONG;
  741.                      time_zone_disp:LONG;
  742.                      product_name:ARRAY[0..SQL_PRODNAME_SZ-1] OF BYTE;
  743.                      component_id:ARRAY[0..SQL_COMPID_SZ-1] OF BYTE;
  744.                      reserved:BYTE;                       { Reserved byte  }
  745.                      release_lvl:ARRAY[0..SQL_RLSLVL_SZ-1] OF BYTE;
  746.                      corr_serv_lvl:ARRAY[0..SQL_CORRLVL_SZ-1] OF BYTE;
  747.                END;
  748.  
  749.     { Database Status data structure }
  750.     sqledbstat=RECORD
  751.                   backup_time:ULONG;        { Last backup time           }
  752.                   time_zone_disp:LONG;      { Time zone of backup time   }
  753.                   connects:WORD;            { Number of current users    }
  754.                   db_alias:ARRAY[0..SQL_DBSTAT_ALIAS_SZ-1] OF BYTE;  { Alias name          }
  755.                   db_name:ARRAY[0..SQL_DBSTAT_DBNAME_SZ-1] OF BYTE;  { Database name       }
  756.                   location:BYTE;            { Local / Remote Database    }
  757.                   reserved:BYTE;            { Reserved byte              }
  758.                   drive:ARRAY[0..SQL_DRIVE_SZ-1] OF BYTE;     { Drive containing database  }
  759.                   node:ARRAY[0..SQL_NNAME_SZ-1] OF BYTE;      { Node containing database   }
  760.                   db_type:ARRAY[0..SQL_DBTYP_SZ-1] OF BYTE;   { "OS2 DB2"                  }
  761.                END;
  762.  
  763.     { User Status data structure }
  764.     sqleusrstat=RECORD
  765.                     con_trans:ULONG;        { Transactions since connect }
  766.                     con_reqs:ULONG;         { Requests since connect     }
  767.                     cur_reqs:ULONG;         { Requests current transact  }
  768.                     connect_time:ULONG;     { Time since connect         }
  769.                     trans_time:ULONG;       { Time since current transact}
  770.                     authid:ARRAY[0..SQL_USERID_SZ-1] OF BYTE;   { User's Id                  }
  771.                     node:ARRAY[0..SQL_NNAME_SZ-1] OF BYTE;      { Nodename of connected user }
  772.                     authority_lvl:WORD;     { User's authority level     }
  773.                     trans_state:BYTE;       { Transaction state          }
  774.                     lock_state:BYTE;        { Transaction lock state     }
  775.                 END;
  776.  
  777.     {*****************************************}
  778.     { DDCS Directory Entry Data Structure     }
  779.     {*****************************************}
  780.  
  781.     sql_dir_entry=RECORD
  782.                     struct_id:WORD;           { Structure Identifier       }
  783.                     release:WORD;             { Release level of entry     }
  784.                     codepage:WORD;            { Codepage of comment        }
  785.                     comment:ARRAY[0..SQL_CMT_SZ] OF BYTE;   { Directory entry comment    }
  786.                     ldb:ARRAY[0..SQL_DBNAME_SZ] OF BYTE;    { Local DB name              }
  787.                     tdb:ARRAY[0..SQL_LONG_NAME_SZ] OF BYTE; { Target (host) DB name      }
  788.                     ar:ARRAY[0..SQL_DBNAME_SZ] OF BYTE;     { Appl. requester DLL name   }
  789.                     parm:ARRAY[0..SQL_PARAMETER_SZ] OF BYTE;{ Parameter string           }
  790.                   END;
  791.  
  792. CONST
  793.      SQLENOP = 0;
  794.  
  795.      { SQL Return Codes in SQLCODE for Environment Commands }
  796.  
  797.      SQLE_RC_INLUW        =  -752; { Connect to other DB not allowed   }
  798.      SQLE_RC_W863         =   863; { only SBCS data allowed            }
  799.  
  800.      SQLE_RC_E953         =  -953; { agent heap too small              }
  801.      SQLE_RC_E957         =  -957; { requestor comm heap too small     }
  802.      SQLE_RC_E959         =  -959; { server comm heap too small        }
  803.      SQLE_RC_E961         =  -961; { rqstr remote svcs heap too small  }
  804.      SQLE_RC_E962         =  -962; { svr remote svcs heap too small    }
  805.  
  806.      SQLE_RC_INVNEWLOGP   =   993; { New log path is invalid           }
  807.      SQLE_RC_INVLOGP      =   995; { Current log path is invalid       }
  808.  
  809.      SQLE_RC_INVALIAS     =  -1000;{ invalid alias                     }
  810.      SQLE_RC_INVDBNAME    =  -1001;{ invalid database name             }
  811.      SQLE_RC_INVDRIVE     =  -1002;{ invalid drive                     }
  812.      SQLE_RC_INVPSW       =  -1003;{ invalid password                  }
  813.      SQLE_RC_INSSTOR      =  -1004;{ insuf storage on file system      }
  814.      SQLE_RC_DUPALIAS     =  -1005;{ duplicate alias                   }
  815.      SQLE_RC_WRONGCODEPG  =  -1006;{ Appl code page does not match db  }
  816.      SQLE_RC_INV_NEWPSW   =  -1008;{ invalid new password              }
  817.      SQLE_RC_INVREMOTE    =  -1009;{ invalid remote command            }
  818.  
  819.      SQLE_RC_INVTYPE      =  -1010;{ invalid type                      }
  820.      SQLE_RC_NODRIVE      =  -1011;{ no drive for indirect entry       }
  821.      SQLE_RC_NONODE       =  -1012;{ no nodename for remote entry      }
  822.      SQLE_RC_NODB         =  -1013;{ alias or database name not found  }
  823.      SQLE_RC_NOMORE       =   1014;{ no more entries                   }
  824.      SQLE_RC_DB_RESTART   =  -1015;{ database needs restart            }
  825.      SQLE_RC_INVLLU       =  -1016;{ invalid local_lu alias            }
  826.      SQLE_RC_INVMODE      =  -1017;{ invalid mode                      }
  827.      SQLE_RC_DUPNODE      =  -1018;{ duplicate node name               }
  828.      SQLE_RC_INVNODE      =  -1019;{ invalid node name                 }
  829.  
  830.      SQLE_RC_MAXNODE      =  -1020;{ node could not be cataloged       }
  831.      SQLE_RC_NOTNODE      =  -1021;{ nodename not found                }
  832.      SQLE_RC_INSSYS       =  -1022;{ insufficient system resources     }
  833.      SQLE_RC_NOCONV       =  -1023;{ communication conversation failed }
  834.      SQLE_RC_NOSUDB       =  -1024;{ no start using database issued    }
  835.      SQLE_RC_DBACT        =  -1025;{ databases are active              }
  836.      SQLE_RC_INVSTRT      =  -1026;{ DATABASE MANAGER already started  }
  837.      SQLE_RC_NONODEDIR    =  -1027;{ node directory not found          }
  838.      SQLE_RC_INVRLU       =  -1029;{ partner lu not specified          }
  839.  
  840.      SQLE_RC_MAXDB        =  -1030;{ database directory full           }
  841.      SQLE_RC_NODBDIR      =  -1031;{ database directory not found      }
  842.      SQLE_RC_NOSTARTG     =  -1032;{ START DATABASE MANAGER not issued }
  843.      SQLE_RC_DIRBUSY      =  -1033;{ database directory being updated  }
  844.      SQLE_RC_DBBAD        =  -1034;{ database is damaged               }
  845.      SQLE_RC_DB_INUSE     =  -1035;{ database already in use           }
  846.      SQLE_RC_FILEDB       =  -1036;{ database file error               }
  847.      SQLE_RC_FILENODE     =  -1038;{ node directory file error         }
  848.      SQLE_RC_FILEDIR      =  -1039;{ directory file error              }
  849.  
  850.      SQLE_RC_MAXAPPLS     =  -1040;{ Maximum Number of applications    }
  851.      SQLE_RC_MAXDBS       =  -1041;{ Maximum Number of DB started      }
  852.      SQLE_RC_SYSERR       =  -1042;{ system error                      }
  853.      SQLE_RC_CATBOOT      =  -1043;{ catalog bootstrap failure         }
  854.      SQLE_RC_INTRRPT      =  -1044;{ request interrupted by ctrl+break }
  855.      SQLE_RC_INVINDIR     =  -1045;{ invalid level of indirection      }
  856.      SQLE_RC_INVAUTHID    =  -1046;{ invalid userid                    }
  857.      SQLE_RC_APCONN       =  -1047;{ appl already connect to another db}
  858.      SQLE_RC_USEINVALID   =  -1048;{ invalid use specified             }
  859.      SQLE_RC_APPSERR      =   -900;{ appl state in error               }
  860.  
  861.      SQLE_RC_UNCHOME      =  -1050;{ cannot uncatalog home database    }
  862.      SQLE_RC_NODIRDRV     =  -1051;{ db direct. drive does not exist   }
  863.      SQLE_RC_NODBDRV      =  -1052;{ database drive does not exist     }
  864.      SQLE_RC_INTBUSY      =  -1053;{ interrupt already in progress     }
  865.      SQLE_RC_COMMINP      =  -1054;{ commit in progress - no int's     }
  866.      SQLE_RC_ROLLINP      =  -1055;{ rollback in progress - no int's   }
  867.      SQLE_RC_MAXSCAN      =  -1056;{ maximum allowable scans exceeded  }
  868.      SQLE_RC_NODENTRY     =   1057;{ no entries in directory           }
  869.      SQLE_RC_INVHAND      =  -1058;{ invalid input handle              }
  870.      SQLE_RC_NOSCAN       =  -1059;{ open scan not issued              }
  871.  
  872.      SQLE_RC_NOCONNECT    =  -1060;{ user lacks connect privilege      }
  873.      SQLE_RC_BADPATH      =  -1062;{ database path not found           }
  874.      SQLE_RC_START_OK     =  -1063;{ startdbs successful               }
  875.      SQLE_RC_STOP_OK      =  -1064;{ stopdbs successful                }
  876.      SQLE_RC_DB_BADBINDS  =   1065;{ n utilities not bound             }
  877.      SQLE_RC_NOMSG        =  -1068;{ message file not found            }
  878.      SQLE_RC_INVDROP      =  -1069;{ DB invalid type for drop          }
  879.  
  880.      SQLE_RC_INVDBNAME_PTR=  -1070;{ Invalid Database Name ptr         }
  881.      SQLE_RC_INVALIAS_PTR =  -1071;{ Invalid Alias pointer             }
  882.      SQLE_RC_INVPSW_PTR   =  -1074;{ Invalid Password pointer          }
  883.      SQLE_RC_INVCOMM_PTR  =  -1075;{ Invalid Comment pointer           }
  884.      SQLE_RC_INVCNT_PTR   =  -1076;{ Invalid Count pointer             }
  885.      SQLE_RC_INVHAND_PTR  =  -1077;{ Invalid Handle Pointer            }
  886.      SQLE_RC_INVBUFF_PTR  =  -1078;{ Invalid Buffer pointer            }
  887.      SQLE_RC_INVNODE_PTR  =  -1079;{ Invalid Node Pointer              }
  888.  
  889.      SQLE_RC_INVLLU_PTR   =  -1080;{ Invalid Local Lu Pointer          }
  890.      SQLE_RC_INVRLU_PTR   =  -1081;{ Invalid Remote Lu Pointer         }
  891.      SQLE_RC_INVMODE_PTR  =  -1082;{ Invalid Mode Pointer              }
  892.      SQLE_RC_BAD_DBDB     =  -1083;{ Bad Database Description Block    }
  893.      SQLE_RC_KSEGSFAIL    =  -1084;{ Cannot Allocate Kernel Segments   }
  894.      SQLE_RC_APPHEAPFAIL  =  -1085;{ Cannot Allocate Application heap  }
  895.      SQLE_RC_OS2ERROR     =  -1086;{ Unexpected OS/2 error             }
  896.      SQLE_RC_BIND_LIST    =   1087;{ Bind list could not be opened     }
  897.      SQLE_RC_BIND_ERROR   =   1088;{ Error occurred during bind        }
  898.      SQLE_RC_BIND_INTRRPT =   1089;{ Binding was interrupted           }
  899.  
  900.      SQLE_RC_BAD_APP_REL  =  -1090;{ Release number of APP is invalid  }
  901.      SQLE_RC_BAD_DB_REL   =  -1091;{ Release number of database bad    }
  902.  
  903.      SQLE_RC_INSAUTH      =  -1092;{ Authorization error               }
  904.      SQLE_RC_NOLOGON      =  -1093;{ User not logged on                }
  905.      SQLE_RC_NDBUSY       =  -1094;{ Node dir being updated            }
  906.      SQLE_RC_MAX_NDSCAN   =  -1095;{ Max node scans open               }
  907.      SQLE_RC_REQTYPE      =  -1096;{ Invalid type for requester node   }
  908.      SQLE_RC_NODERR       =  -1097;{ Node not found for remote db      }
  909.      SQLE_RC_APCONN_SAME  =  -1098;{ appl is already connected to db   }
  910.      SQLE_RC_WRPROT_ERR   =  -1099;{ write protect error on diskette   }
  911.  
  912.      SQLE_RC_NODE_WARN    =   1100;{ node not cataloged for database   }
  913.      SQLE_RC_REMCONN_ERR  =  -1101;{ remote communications error       }
  914.      SQLE_RC_MIG_NODB     =  -1102;{ No Database Name provided in Call }
  915.      SQLE_RC_MIG_OK       =  -1103;{ Migration Successful Message      }
  916.      SQLE_RC_INVPROG_PTR  =  -1104;{ Invalid program name pointer     }
  917.      SQLE_RC_INV_SPDB     =  -1105;{ Invalid Stop Using Database       }
  918.      SQLE_RC_INVALID_PROC =  -1106;{ Program invalid                   }
  919.      SQLE_RC_INTRP_PROC   =  -1107;{ Program interrupted               }
  920.      SQLE_RC_SYSERR_PROC  =  -1108;{ Unexpected I/O or OS/2 error      }
  921.      SQLE_RC_NOFILE_PROC  =  -1109;{ Program file not found            }
  922.      SQLE_RC_ERROR_PROC   =  -1110;{ Program error                     }
  923.      SQLE_RC_BADPGN_PROC  =  -1111;{ Invalid DLL name format           }
  924.      SQLE_RC_INSMEM_PROC  =  -1112;{ No memory loading DLL             }
  925.      SQLE_RC_SQLDA_DATATYPE= -1113;{ Data type in output SQLDA changed }
  926.      SQLE_RC_SQLDA_LENGTH =  -1114;{ Data length in output SQLDA change}
  927.      SQLE_RC_SQLDA_VARS   =  -1115;{ Number of sqlvars changed in SQLDA}
  928.      SQLE_RC_BKP_PEND     =  -1116;{ Backup pending                    }
  929.      SQLE_RC_ROLLFWD_PEND =  -1117;{ Roll forward pending              }
  930.      SQLE_RC_BKP_INPROG   =  -1118;{ need to rerun the Backup process  }
  931.      SQLE_RC_RST_INPROG   =  -1119;{ need to rerun the Restore process }
  932.      SQLE_RC_BR_INPROG    =  -1120;{ need to rerun either Backup or    }
  933.  
  934.      SQLE_RC_INVNODESTR_PTR= -1121;{ Node strucutre ptr invalid        }
  935.      SQLE_RC_INVPROTOCOL_PTR=-1122;{ Protocol strucutre ptr invalid    }
  936.      SQLE_RC_INVPROTOCOL  =  -1123;{ Invalid protocol type             }
  937.      SQLE_RC_INVRNNAME    =  -1124;{ Invalid remote workstation name   }
  938.      SQLE_RC_INVADAPTER   =  -1125;{ Invalid adapter number            }
  939.      SQLE_RC_INVNETID     =  -1126;{ Invalid network id                }
  940.      SQLE_RC_INVPLU       =  -1127;{ Invalid real partner LU name      }
  941.  
  942.      SQLE_RC_INVOS_OBJ    =  -1200;{ invalid object specified          }
  943.      SQLE_RC_INVOS_STAT   =  -1201;{ invalid status specified          }
  944.      SQLE_RC_INVOS_NOSTAT =  -1202;{ status has not been collected     }
  945.      SQLE_RC_INVOS_NOUSER =  -1203;{ no users connected to database    }
  946.      SQLE_RC_UNSUPP_CODEPG=  -1204;{ active codepage is not supported  }
  947.  
  948.      SQLE_RC_NO_SHRD_SEG  =  -1220;{ DBM shared mem set unavailable    }
  949.      SQLE_RC_NO_ASL_HEAP  =  -1221;{ ASL heap cannot be allocated      }
  950.      SQLE_RC_ASL_TOO_SMALL=  -1222;{ ASL heap is too small             }
  951.      SQLE_RC_NO_AGENT_AVAIL= -1223;{ No more agents available          }
  952.      SQLE_RC_DBM_NOT_RUNNING=-1224;{ DBM is not started                }
  953.  
  954.      SQLE_RC_NOUEXIT      =  -1267;{ SQLUEXIT file not found           }
  955.  
  956.      SQLE_RC_FILEDCS      =  -1310;{ DCS Directory file access error   }
  957.      SQLE_RC_DCSDIR_NF    =  -1311;{ DCS Directory not found           }
  958.      SQLE_RC_NO_ENTRY     =  -1312;{ DCS Directory is empty            }
  959.      SQLE_RC_MAX_ENTRY    =  -1313;{ DCS Directory is full             }
  960.      SQLE_RC_INVENTRY_PTR =  -1314;{ Entry parameter pointer invalid   }
  961.      SQLE_RC_INVLDB       =  -1315;{ LDB name has invalid chars        }
  962.      SQLE_RC_LDB_NF       =  -1316;{ DCS Directory entry not found     }
  963.      SQLE_RC_DUPLDB       =  -1317;{ DCS Directory duplicate entry     }
  964.      SQLE_RC_INVLENGTH    =  -1318;{ Invalid element length            }
  965.      SQLE_RC_ENTRYNOT_COL =  -1319;{ Entries have not been collected   }
  966.      SQLE_RC_GDBUSY       =  -1320;{ Cannot access DCS Dir at this time}
  967.      SQLE_RC_INVSTRUCT_ID =  -1321;{ Invalid structure ID              }
  968.      SQLE_RC_DRDANSP      =  -1325;{ Remote function not supported     }
  969.      SQLE_RC_ACCD         =  -1326;{ File or directory access denied   }
  970.      SQLE_RC_IMPLCONN_INVDB= -1327;{ Implicit connect - invalid dbname }
  971.      SQLE_RC_IMPLCONN_NODB=  -1328;{ Implicit connect - alias not found}
  972.      SQLE_RC_PATH_TOO_LONG=  -1329;{ Input path too long               }
  973.  
  974.  
  975.  
  976.     {******************************************************}
  977.     { Database Environment Commands -- Function Prototypes }
  978.     {******************************************************}
  979.  
  980. IMPORTS
  981.        { ALTER DATABASE PASSWORD }
  982.        FUNCTION sqlealtd_api (database:CSTRING;     { database }
  983.                               oldpasswd:CSTRING;    { old password }
  984.                               newpasswd:CSTRING;    { new password }
  985.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  986.                   APIENTRY; 'SQLE32' name 'sqlealtd_api';
  987.        { CATALOG DATABASE }
  988.        FUNCTION sqlecatd_api (database:CSTRING;     { database }
  989.                               alias:CSTRING;        { alias }
  990.                               atype:LONGWORD;           { type }
  991.                               nodename:CSTRING;     { nodename }
  992.                               drive:LONGWORD;           { drive }
  993.                               comment:CSTRING;      { comment }
  994.                               commentcp:LONGWORD;       { comment codepage }
  995.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  996.                   APIENTRY; 'SQLE32' name 'sqlecatd_api';
  997.        { CATALOG NODE }
  998.        FUNCTION sqlecatn_api (nodename:CSTRING;     { nodename }
  999.                               locallu:CSTRING;      { local lu }
  1000.                               remotelu:CSTRING;     { remote lu }
  1001.                               mode:CSTRING;         { mode }
  1002.                               comment:CSTRING;      { comment }
  1003.                               cp:LONGINT;             { codepage }
  1004.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA    }
  1005.                   APIENTRY; 'SQLE32' name 'sqlecatn_api';
  1006.        { NEW CREATE DATABASE }
  1007.        FUNCTION sqlecrdb_api (database:CSTRING;     { database }
  1008.                               drive:LONGWORD;           { drive }
  1009.                               VAR dblock:sqledbdesc;{ database descriptor block }
  1010.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA  }
  1011.                   APIENTRY; 'SQLE32' name 'sqlecrdb_api';
  1012.        { CREATE DATABASE }
  1013.        FUNCTION sqlecred_api (database:CSTRING;     { database }
  1014.                               drive:LONGWORD;           { drive }
  1015.                               passwd:CSTRING;       { spare, was password }
  1016.                               comment:CSTRING;      { comment }
  1017.                               cp:LONGINT;             { comment code page }
  1018.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1019.                   APIENTRY; 'SQLE32' name 'sqlecred_api';
  1020.        { GENERAL CATALOG NODE }
  1021.        FUNCTION sqlectnd_api (VAR node:sqle_node_struct; { Node Structure pointer }
  1022.                               p:POINTER;         { Protocol Structure pointer }
  1023.                               VAR asqlca:TSQLCA):INTEGER;  { SQLCA pointer }
  1024.                   APIENTRY; 'SQLE32' name 'sqlectnd_api';
  1025.        { CHANGE DATABASE COMMENT }
  1026.        FUNCTION sqledchg_api (database:CSTRING;     { database }
  1027.                               drive:LONGWORD;           { drive }
  1028.                               comment:CSTRING;      { comment }
  1029.                               cp:LONGINT;             { comment codepage }
  1030.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1031.                   APIENTRY; 'SQLE32' name 'sqledchg_api';
  1032.        { CLOSE DIRECTORY SCAN }
  1033.        FUNCTION sqledcls_api (handle:LONGWORD;      { handle }
  1034.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1035.                   APIENTRY; 'SQLE32' name 'sqledcls_api';
  1036.        { GET NEXT DIRECTORY ENTRY }
  1037.        FUNCTION sqledgne_api (handle:LONGWORD;          { handle }
  1038.                               VAR buffer:sqledinfo; { buffer }
  1039.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1040.                   APIENTRY; 'SQLE32' name 'sqledgne_api';
  1041.        { OPEN DIRECTORY SCAN }
  1042.        FUNCTION sqledops_api (drive:LONGWORD;           { drive }
  1043.                               VAR Handle:WORD;      { handle }
  1044.                               VAR Count:WORD;       { count }
  1045.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1046.                   APIENTRY; 'SQLE32' name 'sqledops_api';
  1047.        { DROP DATABASE }
  1048.        FUNCTION sqledrpd_api (database:CSTRING;     { database }
  1049.                               passwd:CSTRING;       { spare, was password }
  1050.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1051.                   APIENTRY; 'SQLE32' name 'sqledrpd_api';
  1052.        { END SAVE-POINT }
  1053.        FUNCTION sqleensp (VAR asqlca:TSQLCA):INTEGER;       { SQLCA }
  1054.                   APIENTRY; 'SQLE32' name 'sqleensp';
  1055.        { FREE DATABASE STATUS RESOURCES }
  1056.        FUNCTION sqlefree_api (VAR asqlca:TSQLCA):INTEGER;     { SQLCA                          }
  1057.                   APIENTRY; 'SQLE32' name 'sqlefree_api';
  1058.  
  1059.        { ADD DCS DIRECTORY ENTRY   }
  1060.        FUNCTION sqlegdad_api (VAR entry:sql_dir_entry;  { Pointer to entry structure }
  1061.                               VAR asqlca:TSQLCA):INTEGER;         { SQLCA pointer }
  1062.                   APIENTRY; 'SQLE32' name 'sqlegdad_api';
  1063.        { CLOSE DCS DIRECTORY SCAN }
  1064.        FUNCTION sqlegdcl_api (VAR asqlca:TSQLCA):INTEGER;
  1065.                   APIENTRY; 'SQLE32' name 'sqlegdcl_api';
  1066.        { DELETE DCS DIRECTORY ENTRY }
  1067.        FUNCTION sqlegdel_api (VAR entry:sql_dir_entry;  { Pointer to entry structure }
  1068.                               VAR asqlca:TSQLCA):INTEGER;       { SQLCA pointer }
  1069.                   APIENTRY; 'SQLE32' name 'sqlegdel_api';
  1070.        { GET DCS DIRECTORY ENTRY }
  1071.        FUNCTION sqlegdge_api (VAR entry:sql_dir_entry;  { Pointer to entry structure }
  1072.                               VAR asqlca:TSQLCA):INTEGER;         { SQLCA pointer }
  1073.                   APIENTRY; 'SQLE32' name 'sqlegdge_api';
  1074.        { COPY DCS DIRECTORY ENTRIES }
  1075.        FUNCTION sqlegdgt_api (VAR Count:SHORT;   { Pointer to count variable }
  1076.                               VAR entry:sql_dir_entry;  { Pointer to entry structure }
  1077.                               VAR asqlca:TSQLCA):INTEGER;  { SQLCA pointer }
  1078.                   APIENTRY; 'SQLE32' name 'sqlegdgt_api';
  1079.        { SCAN DCS DIRECTORY       }
  1080.        FUNCTION sqlegdsc_api (VAR Count:SHORT;   { Pointer to count variable }
  1081.                               VAR asqlca:TSQLCA):INTEGER;         { SQLCA pointer }
  1082.                   APIENTRY; 'SQLE32' name 'sqlegdsc_api';
  1083.        { DCS PROGRAMMING INTERFACE }
  1084.        FUNCTION sqledcsr_api (VAR handle:sqlj_acbh;      { SQLJACB handle }
  1085.                               VAR asqljra:SQLJRA):INTEGER;        { Pointer to SQLJRA }
  1086.                   APIENTRY; 'SQLE32' name 'sqledcsr_api';
  1087.        { INTERRUPT }
  1088.        FUNCTION sqleintr_api:INTEGER;
  1089.                   APIENTRY; 'SQLE32' name 'sqleintr_api';
  1090.        { INSTALL SIGNAL HANDLER }
  1091.        FUNCTION sqleisig_api (VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1092.                   APIENTRY; 'SQLE32' name 'sqleisig_api';
  1093.        { FORCE USERS OFF DATABASE & STOPDBM}
  1094.        FUNCTION sqlekill (VAR asqlca:TSQLCA):INTEGER;         { SQLCA }
  1095.                   APIENTRY; 'SQLE32' name 'sqlekill';
  1096.        { MIGRATE DATABASE }
  1097.        FUNCTION sqlemigd_api (database:CSTRING;     { database name }
  1098.                               passwd:CSTRING;       { password }
  1099.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA pointer }
  1100.                   APIENTRY; 'SQLE32' name 'sqlemigd_api';
  1101.        { CLOSE NODE DIRECTORY SCAN }
  1102.        FUNCTION sqlencls_api (handle:LONGWORD;          { handle }
  1103.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1104.                   APIENTRY; 'SQLE32' name 'sqlencls_api';
  1105.        { GET NEXT DATABASE STATUS BLOCK }
  1106.        FUNCTION sqlenext_api (VAR Count:WORD;   { count pointer }
  1107.                               VAR Buffer;       { buffer pointer }
  1108.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1109.                   APIENTRY; 'SQLE32' name 'sqlenext_api';
  1110.        { GET NEXT NODE ENTRY }
  1111.        FUNCTION sqlengne_api (handle:LONGWORD;       { handle }
  1112.                               VAR buffer:^sqleninfo; { buffer }
  1113.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1114.                   APIENTRY; 'SQLE32' name 'sqlengne_api';
  1115.        { OPEN NODE DIRECTORY SCAN }
  1116.        FUNCTION sqlenops_api (VAR Handle:WORD;    { handle }
  1117.                               VAR Count:WORD;     { count }
  1118.                               VAR asqlca:TSQLCA):INTEGER; { SQLCA }
  1119.                   APIENTRY; 'SQLE32' name 'sqlenops_api';
  1120.  
  1121.        { DB APPLICATION REMOTE INTERFACE }
  1122.        FUNCTION sqleproc_api (path:CSTRING;    { Path Name of program to run }
  1123.                               VAR area:TSQLCHAR;{ variable length area pointer }
  1124.                               VAR isqlda:TSQLDA;  { input SQLDA }
  1125.                               VAR osqlda:TSQLDA;  { output SQLDA }
  1126.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1127.                   APIENTRY; 'SQLE32' name 'sqleproc_api';
  1128.        { ROLLBACK SAVE-POINT }
  1129.        FUNCTION sqlerbsp (VAR asqlca:TSQLCA):INTEGER;       { SQLCA }
  1130.                   APIENTRY; 'SQLE32' name 'sqlerbsp';
  1131.        { RESTART DATABASE }
  1132.        FUNCTION sqlerest_api (database:CSTRING;     { database }
  1133.                               passwd:CSTRING;       { spare, password }
  1134.                               VAR asqlca:TSQLCA):INTEGER;   { SQLCA }
  1135.                   APIENTRY; 'SQLE32' name 'sqlerest_api';
  1136.        { REQUEST SAVE-POINT }
  1137.        FUNCTION sqlerqsp (VAR asqlca:TSQLCA):INTEGER;  { SQLCA }
  1138.                   APIENTRY; 'SQLE32' name 'sqlerqsp';
  1139.        { START DATABASE MANAGER }
  1140.        FUNCTION sqlestar_api:INTEGER;
  1141.                   APIENTRY; 'SQLE32' name 'sqlestar_api';
  1142.        { COLLECT DATABASE STATUS }
  1143.        FUNCTION sqlestat_api (status:LONGWORD;     { status requested }
  1144.                               objtype:LONGWORD;    { object type }
  1145.                               objlen:LONGWORD;     { length of object }
  1146.                               VAR obj;         { object pointer }
  1147.                               VAR Count:WORD;  { count pointer }
  1148.                               VAR Buffer;      { buffer pointer }
  1149.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1150.                   APIENTRY; 'SQLE32' name 'sqlestat_api';
  1151.        { STOP DATABASE MANAGER }
  1152.        FUNCTION sqlestop_api (VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1153.                   APIENTRY; 'SQLE32' name 'sqlestop_api';
  1154.        { STOP USING DATABASE   }
  1155.        FUNCTION sqlestpd_api (VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1156.                   APIENTRY; 'SQLE32' name 'sqlestpd_api';
  1157.        { START USING DATABASE  }
  1158.        FUNCTION sqlestrd_api (database:CSTRING;     { database }
  1159.                               passwd:CSTRING;       { spare, password }
  1160.                               use:LONGWORD;             { use }
  1161.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1162.                   APIENTRY; 'SQLE32' name 'sqlestrd_api';
  1163.        { UNCATALOG DATABASE    }
  1164.        FUNCTION sqleuncd_api (database:CSTRING;     { database }
  1165.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1166.                   APIENTRY; 'SQLE32' name 'sqleuncd_api';
  1167.        { UNCATALOG NODE }
  1168.        FUNCTION sqleuncn_api (nodename:CSTRING;    { nodename }
  1169.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1170.                   APIENTRY; 'SQLE32' name 'sqleuncn_api';
  1171.        { GET USER STATUS }
  1172.        FUNCTION sqleuser_api (lendbname:LONGWORD;      { length of db name }
  1173.                               dbname:CSTRING;      { db name pointer }
  1174.                               VAR Buffer;          { buffer pointer }
  1175.                               VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1176.                   APIENTRY; 'SQLE32' name 'sqleuser_api';
  1177.  
  1178.        { ALTER DATABASE PASSWORD }
  1179.        FUNCTION SQLGALTD (newpwdlen:LONGWORD;      { new password length }
  1180.                           oldpwdlen:LONGWORD;      { old password length }
  1181.                           databaselen:LONGWORD;    { database length }
  1182.                           VAR asqlca :TSQLCA;  { SQLCA }
  1183.                           newpwd:CSTRING;      { new password }
  1184.                           OldPwd:CSTRING;      { old password }
  1185.                           Database:CSTRING):INTEGER;    { database }
  1186.                   APIENTRY; 'SQLAPI32' name 'SQLGALTD';
  1187.        { CATALOG DATABASE }
  1188.        FUNCTION SQLGCATD (clen:LONGWORD;      { comment length }
  1189.                           nlen:LONGWORD;      { node name length }
  1190.                           alen:LONGWORD;      { alias length }
  1191.                           dlen:LONGWORD;      { database length }
  1192.                           drive:LONGWORD;     { drive }
  1193.                           cp:LONGINT;       { comment code page }
  1194.                           atype:LONGWORD;     { type }
  1195.                           VAR asqlca:TSQLCA;     { SQLCA }
  1196.                           comment:CSTRING; { comment }
  1197.                           node:CSTRING;    { node name }
  1198.                           alias:CSTRING;   { alias }
  1199.                           database:CSTRING):INTEGER;    { database }
  1200.                   APIENTRY; 'SQLAPI32' name 'SQLGCATD';
  1201.  
  1202.        { GENERIC API FOR CATALOG NODE }
  1203.        FUNCTION SQLGCATN (clen:LONGWORD;     { comment length }
  1204.                           nlen:LONGWORD;     { mode length }
  1205.                           llen:LONGWORD;     { partner lu length }
  1206.                           ulen:LONGWORD;     { local lu length }
  1207.                           nolen:LONGWORD;    { node name length }
  1208.                           cp:LONGWORD;       { code page }
  1209.                           VAR asqlca:TSQLCA;      { SQLCA }
  1210.                           comment:CSTRING; { comment }
  1211.                           mode:CSTRING;    { mode }
  1212.                           plu:CSTRING;     { partner lu }
  1213.                           loclu:CSTRING;   { local lu }
  1214.                           nodename:CSTRING):INTEGER; { nodename }
  1215.                   APIENTRY; 'SQLAPI32' name 'SQLGCATN';
  1216.  
  1217.        {NEW CREATE DATABASE}
  1218.        FUNCTION SQLGCRDB ( dbnamel:LONGWORD; { database name length     }
  1219.                            drive:LONGWORD;   { drive                    }
  1220.                            VAR asqlca:TSQLCA;   { pointer to sqlca         }
  1221.                            dbname:CSTRING;  { pointer to database name }
  1222.                            VAR desc:sqledbdesc):INTEGER;   { ptr to db descript block }
  1223.                   APIENTRY; 'SQLAPI32' name 'SQLGCRDB';
  1224.        { CREATE DATABASE }
  1225.        FUNCTION SQLGCRED (clen:LONGWORD;      { comment length }
  1226.                           plen:LONGWORD;      { spare1, was password length }
  1227.                           dlen:LONGWORD;      { database length }
  1228.                           drive:LONGWORD;     { drive }
  1229.                           cp:LONGINT;       { comment code page }
  1230.                           comment:CSTRING;{ comment }
  1231.                           VAR asqlca:TSQLCA;      { SQLCA }
  1232.                           passwd:CSTRING; { spare2, was password }
  1233.                           database:CSTRING):INTEGER;    { database }
  1234.                   APIENTRY; 'SQLAPI32' name 'SQLGCRED';
  1235.        { GENERAL CATALOG NODE }
  1236.        FUNCTION SQLGCTND (VAR asqlca:TSQLCA;         { ptr to sqlca       }
  1237.                           VAR node:sqle_node_struct; { ptr to node struct }
  1238.                           prot_struct:POINTER        { ptr to protocol    }
  1239.                                                      {   structure        }
  1240.                           ):INTEGER;
  1241.                   APIENTRY; 'SQLAPI32' name 'SQLGCTND';
  1242.  
  1243.        { CHANGE DATABASE COMMENT }
  1244.        FUNCTION SQLGDCHG  (clen:LONGWORD;      { comment length }
  1245.                            dlen:LONGWORD;      { database length }
  1246.                            cp:LONGINT;       { comment codepage }
  1247.                            drive:LONGWORD;     { drive }
  1248.                            VAR asqlca:TSQLCA;      { SQLCA }
  1249.                            comment:CSTRING;     { comment }
  1250.                            database:CSTRING):INTEGER;    { database }
  1251.                   APIENTRY; 'SQLAPI32' name 'SQLGDCHG';
  1252.        { CLOSE DIRECTORY SCAN }
  1253.        FUNCTION SQLGDCLS  (handle:LONGWORD;      { handle }
  1254.                            VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1255.                   APIENTRY; 'SQLAPI32' name 'SQLGDCLS';
  1256.        { GET NEXT DIRECTORY ENTRY }
  1257.        FUNCTION SQLGDGNE (handle:LONGWORD;      { handle }
  1258.                           VAR buffer:^sqledinfo; { buffer }
  1259.                           VAR asqlca:TSQLCA):INTEGER;   { SQLCA }
  1260.                   APIENTRY; 'SQLAPI32' name 'SQLGDGNE';
  1261.        { OPEN DIRECTORY SCAN }
  1262.        FUNCTION SQLGDOPS (drive:LONGWORD;         { drive }
  1263.                           VAR handle:WORD;    { handle }
  1264.                           VAR Count:WORD;     { count }
  1265.                           VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1266.                   APIENTRY; 'SQLAPI32' name 'SQLGDOPS';
  1267.        { DROP DATABASE }
  1268.        FUNCTION SQLGDRPD (plen:LONGWORD;      { spare1, was password length }
  1269.                           dlen:LONGWORD;      { database length }
  1270.                           VAR asqlca:TSQLCA;      { SQLCA }
  1271.                           passwd:CSTRING; { spare2, was password }
  1272.                           database:CSTRING):INTEGER;    { database }
  1273.                   APIENTRY; 'SQLAPI32' name 'SQLGDRPD';
  1274.        { FREE DATABASE STATUS RESOURCES }
  1275.        FUNCTION SQLGFREE (VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1276.                   APIENTRY; 'SQLAPI32' name 'SQLGFREE';
  1277.        { ADD DCS DIRECTORY ENTRY   }
  1278.        FUNCTION SQLGGDAD ( VAR asqlca:TSQLCA;         { Ptr to SQLCA           }
  1279.                            VAR dir:sql_dir_entry   { Ptr to Directory Entry }
  1280.                          ):INTEGER;
  1281.                   APIENTRY; 'SQLAPI32' name 'SQLGGDAD';
  1282.        { CLOSE DCS DIRECTORY SCAN }
  1283.        FUNCTION SQLGGDCL (VAR asqlca:TSQLCA;           { Pointer to SQLCA        }
  1284.                          ): INTEGER;
  1285.                   APIENTRY; 'SQLAPI32' name 'SQLGGDCL';
  1286.        { DELETE DCS DIRECTORY ENTRY }
  1287.        FUNCTION SQLGGDEL ( VAR asqlca:TSQLCA;       { Ptr to SQLCA           }
  1288.                            VAR dir:sql_dir_entry;   { Ptr to Directory Entry }
  1289.                          ):INTEGER;
  1290.                   APIENTRY; 'SQLAPI32' name 'SQLGGDEL';
  1291.        { GET DCS DIRECTORY ENTRY }
  1292.        FUNCTION SQLGGDGE ( VAR asqlca:TSQLCA;        { Ptr to SQLCA           }
  1293.                            VAR dir:sql_dir_entry;    { Ptr to Directory Entry }
  1294.                          ):INTEGER;
  1295.                   APIENTRY; 'SQLAPI32' name 'SQLGGDGE';
  1296.        { COPY DCS DIRECTORY ENTRIES }
  1297.        FUNCTION SQLGGDGT (VAR asqlca:TSQLCA;          { Ptr to SQLCA        }
  1298.                           VAR count:SHORT;            { DCR 911 Ptr to count var    }
  1299.                           VAR dir:sql_dir_entry;      { Ptr to entry buffer }
  1300.                          ):INTEGER;
  1301.                   APIENTRY; 'SQLAPI32' name 'SQLGGDGT';
  1302.        { SCAN DCS DIRECTORY       }
  1303.        FUNCTION SQLGGDSC ( VAR asqlca:TSQLCA;          { Pointer to SQLCA        }
  1304.                            VAR count:SHORT;            { DCR 911    Count variable          }
  1305.                          ): INTEGER;
  1306.                   APIENTRY; 'SQLAPI32' name 'SQLGGDSC';
  1307.        { INTERRUPT }
  1308.        FUNCTION SQLGINTR:INTEGER;
  1309.                   APIENTRY; 'SQLAPI32' name 'SQLGINTR';
  1310.        { INSTALL SIGNAL HANDLER }
  1311.        FUNCTION SQLGISIG (VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1312.                   APIENTRY; 'SQLAPI32' name 'SQLGISIG';
  1313.        { MIGRATE DATABASE }
  1314.        FUNCTION SQLGMIGD (dlen:LONGWORD;      { Database name length }
  1315.                           plen:LONGWORD;      { password length }
  1316.                           database:CSTRING;  { database name }
  1317.                           passwd:CSTRING; { password }
  1318.                           VAR asqlca:TSQLCA):INTEGER;  { SQLCA pointer }
  1319.                   APIENTRY; 'SQLAPI32' name 'SQLGMIGD';
  1320.  
  1321.        { CLOSE NODE DIRECTORY SCAN }
  1322.        FUNCTION SQLGNCLS (handle:LONGWORD;      { handle }
  1323.                           VAR asqlca:TSQLCA):INTEGER;     { sqlca }
  1324.                   APIENTRY; 'SQLAPI32' name 'SQLGNCLS';
  1325.        { GET NEXT DATABASE STATUS BLOCK }
  1326.        FUNCTION SQLGNEXT (VAR Count:WORD;    { count pointer }
  1327.                           VAR Buffer;        { buffer pointer }
  1328.                           VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1329.                   APIENTRY; 'SQLAPI32' name 'SQLGNEXT';
  1330.        { GET NEXT NODE ENTRY }
  1331.        FUNCTION SQLGNGNE (handle:LONGWORD;      { handle }
  1332.                           VAR Buffer:^sqleninfo; { buffer }
  1333.                           VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1334.                   APIENTRY; 'SQLAPI32' name 'SQLGNGNE';
  1335.        { OPEN NODE DIRECTORY SCAN }
  1336.        FUNCTION SQLGNOPS  (VAR Handle:WORD;    { handle }
  1337.                            VAR Count:WORD;     { count }
  1338.                            VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1339.                   APIENTRY; 'SQLAPI32' name 'SQLGNOPS';
  1340.        { COLLECT DATABASE STATUS }
  1341.        FUNCTION SQLGOPST (status:LONGWORD;      { status requested }
  1342.                           objtype:LONGWORD;     { object type }
  1343.                           objlen:LONGWORD;      { length of object }
  1344.                           VAR obj;          { object pointer }
  1345.                           VAR count:WORD;   { count pointer }
  1346.                           VAR Buffer;       { buffer pointer }
  1347.                           VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1348.                   APIENTRY; 'SQLAPI32' name 'SQLGOPST';
  1349.        { DB APPLICATION REMOTE INTERFACE }
  1350.        FUNCTION SQLGPROC (plen:LONGWORD;        { program name length }
  1351.                           VAR asqlca:TSQLCA;{ SQLCA  }
  1352.                           path:CSTRING;     { Path Name of program to run }
  1353.                           VAR isqlda:TSQLDA;{ input SQLDA }
  1354.                           VAR osqlda:TSQLDA;{ output SQLDA }
  1355.                           VAR asqlchar:TSQLCHAR):INTEGER; { variable length area pointer }
  1356.                   APIENTRY; 'SQLAPI32' name 'SQLGPROC';
  1357.        { RESTART DATABASE }
  1358.        FUNCTION SQLGREST (plen:LONGWORD;      { spare1, was password length }
  1359.                           dlen:LONGWORD;      { database length }
  1360.                           VAR asqlca:TSQLCA;      { SQLCA }
  1361.                           passwd:CSTRING; { spare2, was password }
  1362.                           database:CSTRING):INTEGER;    { database }
  1363.                   APIENTRY; 'SQLAPI32' name 'SQLGREST';
  1364.  
  1365.        { START DATABASE MANAGER }
  1366.        FUNCTION SQLGSTAR:INTEGER;
  1367.                   APIENTRY; 'SQLAPI32' name 'SQLGSTAR';
  1368.        { STOP DATABASE MANAGER }
  1369.        FUNCTION SQLGSTDM (VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1370.                   APIENTRY; 'SQLAPI32' name 'SQLGSTDM';
  1371.        { STOP USING DATABASE }
  1372.        FUNCTION SQLGSTPD (VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1373.                   APIENTRY; 'SQLAPI32' name 'SQLGSTPD';
  1374.        { START USING DATABASE }
  1375.        FUNCTION SQLGSTRD (plen:LONGWORD;       { spare1, was password length }
  1376.                           dlen:LONGWORD;       { database length }
  1377.                           use:LONGWORD;        { use }
  1378.                           VAR asqlca:TSQLCA;      { SQLCA }
  1379.                           passwd:CSTRING;  { spare2, was password }
  1380.                           database:CSTRING):INTEGER;    { database }
  1381.                   APIENTRY; 'SQLAPI32' name 'SQLGSTRD';
  1382.        { UNCATALOG DATABASE }
  1383.        FUNCTION SQLGUNCD (dlen:LONGWORD;      { database length }
  1384.                           VAR asqlca:TSQLCA;      { SQLCA }
  1385.                           database:CSTRING):INTEGER;    { database }
  1386.                   APIENTRY; 'SQLAPI32' name 'SQLGUNCD';
  1387.        { UNCATALOG NODE }
  1388.        FUNCTION SQLGUNCN (nlen:LONGWORD;      { nodename length }
  1389.                           VAR asqlca:TSQLCA;      { SQLCA }
  1390.                           nodename:CSTRING):INTEGER;    { nodename }
  1391.                   APIENTRY; 'SQLAPI32' name 'SQLGUNCN';
  1392.        { GET USER STATUS }
  1393.        FUNCTION SQLGUSER (dlen:LONGWORD;      { length of db name }
  1394.                           database:CSTRING;     { db name pointer }
  1395.                           VAR Buffer;      { buffer pointer }
  1396.                           VAR asqlca:TSQLCA):INTEGER;     { SQLCA }
  1397.                   APIENTRY; 'SQLAPI32' name 'SQLGUSER';
  1398. END;
  1399.  
  1400.  
  1401. IMPLEMENTATION
  1402.  
  1403. END.
  1404.