home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 December / PCWorld_1998-12_cd.iso / software / sybase / ASA / asa60.exe / data1.cab / h_files / dbtools.h < prev    next >
C/C++ Source or Header  |  1998-07-27  |  21KB  |  592 lines

  1.  /****************************************************************
  2.  *       Copyright (C) 1988-1998, by Sybase, Inc.                *
  3.  *       All rights reserved. No part of this software may be    *
  4.  *       reproduced in any form or by any means - graphic,       *
  5.  *       electronic or mechanical, including photocopying,       *
  6.  *       recording, taping or information storage and retrieval  *
  7.  *       systems - except with the written permission of         *
  8.  *       Sybase, Inc.                                            *
  9.  ****************************************************************/
  10.  
  11. #ifndef _DBTOOLS_H_INCLUDED
  12. #define _DBTOOLS_H_INCLUDED
  13.  
  14. #include "sqlca.h"
  15. #include "dllapi.h"
  16. #include "dbtlvers.h"
  17. #if defined( _SQL_PACK_STRUCTURES )
  18. #include "pshpk1.h"
  19. #endif
  20.  
  21. // Changes in this version requiring a version number change:
  22. //  - a_compress_db:
  23. //    - extended structure to fill in compression statistics to avoid
  24. //      writing them directly.
  25. //  - a_db_info:
  26. //    - extended structure to allow returning of page usage information
  27. //        from DBInfo.
  28.  
  29. //***************************************************************************
  30. //  Generic interface pieces
  31. //***************************************************************************
  32.  
  33. #if defined(__unix) || defined(_AIX)
  34.     #if !defined(a_bit_field)
  35.         #define a_bit_field unsigned int
  36.         #define a_bit_short unsigned int
  37.     #endif
  38. #else
  39.     #if !defined(a_bit_field)
  40.         #define a_bit_field unsigned char
  41.         #define a_bit_short unsigned short
  42.     #endif
  43. #endif
  44.  
  45. typedef struct a_name {
  46.     struct a_name _fd_ *    next;
  47.     char            name[1];
  48. } a_name, _fd_ * p_name;
  49.  
  50. typedef struct a_sysinfo {
  51.     a_bit_field        valid_data        : 1;    // are following values set?
  52.     a_bit_field        blank_padding    : 1;
  53.     a_bit_field        case_sensitivity    : 1;
  54.     a_bit_field        encryption        : 1;
  55.     char        default_collation[11];
  56.     unsigned short  page_size;
  57. } a_sysinfo;
  58.  
  59. //***************************************************************************
  60. // initialization (DBTINIT) interface
  61. //***************************************************************************
  62. typedef struct a_dbtools_info {
  63.     MSG_CALLBACK    errorrtn;
  64. } a_dbtools_info;
  65.  
  66. extern _crtn short _entry DBToolsInit( const a_dbtools_info _fd_ * );
  67. extern _crtn short _entry DBToolsFini( const a_dbtools_info _fd_ * );
  68.  
  69.  
  70. //***************************************************************************
  71. // get shared library version
  72. //***************************************************************************
  73.  
  74. extern _crtn short _entry DBToolsVersion( void );
  75.  
  76. //***************************************************************************
  77. // backup database (DBBACKUP) interface
  78. //***************************************************************************
  79.  
  80. typedef struct a_backup_db {
  81.     unsigned short    version;
  82.     const char _fd_    *output_dir;
  83.     const char _fd_    *connectparms;    // userid,password,database
  84.     const char _fd_    *startline;        // (NULL for default start line)
  85.     MSG_CALLBACK    confirmrtn;
  86.     MSG_CALLBACK    errorrtn;
  87.     MSG_CALLBACK    msgrtn;
  88.     MSG_CALLBACK    statusrtn;
  89.     a_bit_field        backup_database    : 1;
  90.     a_bit_field        backup_logfile    : 1;
  91.     a_bit_field        backup_writefile: 1;    // only if using write file
  92.     a_bit_field        no_confirm    : 1;
  93.     a_bit_field        quiet        : 1;
  94.     a_bit_field        rename_log    : 1;
  95.     a_bit_field        truncate_log    : 1;
  96.     a_bit_field        rename_local_log: 1;
  97.     const char _fd_    *hotlog_filename;
  98.     char        backup_interrupted;
  99. } a_backup_db;
  100.  
  101. extern _crtn short _entry DBBackup( const a_backup_db _fd_ * );
  102.  
  103. //***************************************************************************
  104. // change database logfile name (DBLOG) interface
  105. //***************************************************************************
  106.  
  107. typedef struct a_change_log {
  108.     unsigned short    version;
  109.     const char _fd_ *    dbname;
  110.     const char _fd_ *    logname;    // (logname = NULL) for no log
  111.     MSG_CALLBACK    errorrtn;
  112.     MSG_CALLBACK    msgrtn;
  113.     a_bit_field        query_only        : 1;
  114.     a_bit_field        quiet            : 1;
  115.     a_bit_field        mirrorname_present    : 1;
  116.     a_bit_field        change_mirrorname    : 1;
  117.     a_bit_field        change_logname        : 1;
  118.     a_bit_field        ignore_ltm_trunc    : 1;
  119.     a_bit_field        ignore_remote_trunc    : 1;
  120.     a_bit_field        set_generation_number    : 1;
  121.  
  122.     // Following fields are new with 5.0:
  123.     const char _fd_ *    mirrorname;
  124.     unsigned short    generation_number;
  125.  
  126.     // Following fields are new with 5.5.02
  127.     const char _fd_ *    key_file;
  128.  
  129.     // Following fields are new with 6.0:
  130.     char *              zap_current_offset;
  131.     char *              zap_starting_offset;
  132. } a_change_log;
  133.  
  134. extern _crtn short _entry DBChangeLogName( const a_change_log _fd_ * );
  135.  
  136. //***************************************************************************
  137. // (1) change write file to refer to another database file (DBWRITE -d)
  138. // (2) create a database write file (DBWRITE -c)
  139. // (3) get status of a write file (DBWRITE -s)
  140. //***************************************************************************
  141.  
  142. typedef struct a_writefile {
  143.     unsigned short    version;
  144.     const char _fd_ *    writename;
  145.     const char _fd_ *    wlogname;    // "create" only
  146.     const char _fd_ *    dbname;        // "change", "create"
  147.     const char _fd_ *    forcename;    // forced filename reference
  148.     MSG_CALLBACK    confirmrtn;    // "create" only
  149.     MSG_CALLBACK    errorrtn;
  150.     MSG_CALLBACK    msgrtn;
  151.     char        action;        // used internally
  152.     a_bit_field        quiet           : 1;
  153.     a_bit_field        erase           : 1;    // "create" only; erase without confirm
  154.     a_bit_field        force             : 1;
  155.     a_bit_field        mirrorname_present    : 1;
  156.  
  157.     // new for v5.0
  158.     const char _fd_ *    wlogmirrorname;    // "create" only
  159.  
  160.  
  161.     // Following fields are new with 6.0:
  162.  
  163.     // When TRUE, DBCreateWriteFile will use the values in wlogname and 
  164.     // wlogmirrorname as "base" filenames to determine appropriate filenames
  165.     // with the correct path and extensions, etc.
  166.     // When FALSE, DBCreateWriteFile will use the two filenames as
  167.     // specified (old behaviour).
  168.     a_bit_field        make_log_and_mirror_names: 1; 
  169. } a_writefile;
  170.  
  171. extern _crtn short _entry DBChangeWriteFile( const a_writefile _fd_ * );
  172. extern _crtn short _entry DBCreateWriteFile( const a_writefile _fd_ * );
  173. extern _crtn short _entry DBStatusWriteFile( const a_writefile _fd_ * );
  174.  
  175. //***************************************************************************
  176. // compress a database (DBSHRINK) interface
  177. //***************************************************************************
  178.  
  179. typedef struct a_stats_line {
  180.     long        pages;
  181.     long        bytes;
  182.     long        compressed_bytes;
  183. } a_stats_line;
  184.  
  185. typedef struct a_compress_stats {
  186.     a_stats_line    tables;
  187.     a_stats_line    indices;
  188.     a_stats_line    other;
  189.     a_stats_line    free;
  190.     a_stats_line    total;
  191.     long        free_pages;
  192.     long        unchanged;
  193. } a_compress_stats;
  194.  
  195. typedef struct a_compress_db {
  196.     unsigned short    version;
  197.     const char _fd_ *    dbname;
  198.     const char _fd_ *    compress_name;
  199.     MSG_CALLBACK    errorrtn;
  200.     MSG_CALLBACK    msgrtn;
  201.     MSG_CALLBACK    statusrtn;
  202.     a_bit_field        display_free_pages    : 1;
  203.     a_bit_field        quiet            : 1;
  204.     a_bit_field        record_unchanged    : 1;
  205.  
  206.     // The following values are new with version 3.2c:
  207.  
  208.     a_compress_stats _fd_ * stats;    // filled in if not NULL
  209.                     // && display_free_pages not zero
  210.  
  211.     // The following values are new with version 3.2d:
  212.  
  213.     MSG_CALLBACK    confirmrtn;
  214.     a_bit_field        noconfirm        : 1;
  215.  
  216.     // Following fields are new with 5.5.02
  217.     const char _fd_ *    key_file;
  218. } a_compress_db;
  219.  
  220. extern _crtn short _entry DBCompress( const a_compress_db _fd_ * );
  221.  
  222. //***************************************************************************
  223. // create a new database (DBINIT) interface
  224. //***************************************************************************
  225.  
  226. enum {            // verbosity
  227.     VB_QUIET,
  228.     VB_NORMAL,
  229.     VB_VERBOSE
  230. };
  231.  
  232. enum {            // Possible values for blank_pad
  233.     NO_BLANK_PADDING,
  234.     BLANK_PADDING
  235. };
  236.  
  237. typedef struct a_create_db {
  238.     unsigned short    version;
  239.     const char _fd_ *    dbname;
  240.     const char _fd_ *    logname;            // (NULL for no log file)
  241.     const char _fd_ *    startline;            // (NULL for default start line)
  242.     short        page_size;
  243.     const char _fd_ *    default_collation;        // collation identifier
  244.     MSG_CALLBACK    errorrtn;
  245.     MSG_CALLBACK    msgrtn;
  246.     short        database_version;        // used internally
  247.     char        verbose;            // VB_xxx (above)
  248.     a_bit_field        blank_pad        : 2;
  249.     a_bit_field        respect_case        : 1;
  250.     a_bit_field        encrypt            : 1;
  251.     a_bit_field        debug            : 1;     // should be FALSE
  252.     a_bit_field        dbo_avail        : 1;    // doesn't do anything
  253.     a_bit_field        mirrorname_present    : 1;
  254.     a_bit_field        avoid_view_collisions    : 1;    // SYS.SYSCOLUMNS and
  255.                             // SYS.SYSINDEXES not created
  256.  
  257.     // The following fields are used internally by DBCreate.
  258.  
  259.     short           collation_id;
  260.  
  261.     // Following fields are new with 5.0:
  262.  
  263.     // the dbo_username functionality has been dropped as of 6.0
  264.     // you can leave it set to NULL
  265.     const char _fd_ *    dbo_username; 
  266.     const char _fd_ *    mirrorname;
  267.     
  268.     // Following fields are new with 5.5.02
  269.     const char _fd_ *    encryption_dllname;
  270.  
  271.     // Following fields are new with 6.0:
  272.     a_bit_field        java_classes        : 1;
  273.     a_bit_field        jconnect        : 1;
  274. } a_create_db;
  275.  
  276. extern _crtn short _entry DBCreate( a_create_db _fd_ * );
  277.  
  278. //***************************************************************************
  279. // erase a database (DBERASE)
  280. //***************************************************************************
  281.  
  282. typedef struct an_erase_db {
  283.     unsigned short    version;
  284.     const char _fd_ *    dbname;
  285.     MSG_CALLBACK    confirmrtn;
  286.     MSG_CALLBACK    errorrtn;
  287.     MSG_CALLBACK    msgrtn;
  288.     a_bit_field        quiet : 1;
  289.     a_bit_field        erase : 1;    // erase without confirmation
  290.  
  291.     // Following fields are new with 5.5.02
  292.     const char _fd_ *    key_file;    // encryption key
  293. } an_erase_db;
  294.  
  295. extern _crtn short _entry DBErase( const an_erase_db _fd_ * );
  296.  
  297. //***************************************************************************
  298. // expand a compressed database (DBEXPAND) interface
  299. //***************************************************************************
  300.  
  301. typedef struct an_expand_db {
  302.     unsigned short    version;
  303.     const char _fd_ *    compress_name;
  304.     const char _fd_ *    dbname;
  305.     MSG_CALLBACK    errorrtn;
  306.     MSG_CALLBACK    msgrtn;
  307.     MSG_CALLBACK    statusrtn;
  308.     a_bit_field        quiet : 1;
  309.  
  310.     // The following values are new with version 3.2d:
  311.  
  312.     MSG_CALLBACK    confirmrtn;
  313.     a_bit_field        noconfirm        : 1;
  314.  
  315.     // Following fields are new with 5.5.02
  316.     const char _fd_ *    key_file;
  317. } an_expand_db;
  318.  
  319. extern _crtn short _entry DBExpand( const an_expand_db _fd_ * );
  320.  
  321. //***************************************************************************
  322. // get information from a database about how it was created (DBINFO)
  323. //***************************************************************************
  324.  
  325. typedef struct a_table_info {
  326.     struct a_table_info _fd_ * next;
  327.     unsigned short  table_id;        // table id
  328.     unsigned long   table_pages;    // number of table pages
  329.     unsigned long   index_pages;    // number of index pages
  330.     unsigned long   table_used;        // bytes used in table pages
  331.     unsigned long   index_used;        // bytes used in index pages
  332.     char _fd_ *        table_name;        // table name
  333. } a_table_info;
  334.  
  335. typedef struct a_db_info {
  336.     unsigned short  version;
  337.     MSG_CALLBACK    errorrtn;
  338.     const char _fd_ *dbname;        // file to extract info from
  339.     unsigned short  dbbufsize;        // size of "dbnamebuffer"
  340.     char _fd_ *        dbnamebuffer;    // filled in
  341.     unsigned short  logbufsize;        // size of "lognamebuffer"
  342.     char _fd_ *        lognamebuffer;    // filled in; empty if no log
  343.     unsigned short  wrtbufsize;        // size of "wrtnamebuffer"
  344.     char _fd_ *        wrtnamebuffer;    // filled in; empty if not write file
  345.     a_bit_field        quiet : 1;
  346.     a_bit_field        mirrorname_present : 1;
  347.  
  348.     // The following values are returned by DBInfo:
  349.  
  350.     a_sysinfo        sysinfo;
  351.     unsigned long   free_pages;
  352.     a_bit_field        compressed : 1;
  353.  
  354.     // The following values are new with version 3.2c:
  355.  
  356.     const char _fd_ *connectparms;    // userid,password,database
  357.     const char _fd_ *startline;        // (NULL for default start line)
  358.     MSG_CALLBACK    msgrtn;
  359.     MSG_CALLBACK    statusrtn;
  360.     a_bit_field     page_usage : 1;    // fill in page usage values below?
  361.  
  362.     // The following page usage values are returned by DBInfo:
  363.  
  364.     a_table_info _fd_ * totals;        // page usage statistics
  365.     unsigned long   file_size;        // file size (in pages)
  366.     unsigned long   unused_pages;    // number of unused (free) pages
  367.     unsigned long   other_pages;    // number of other pages
  368.  
  369.     // New for v5.0
  370.     unsigned short  mirrorbufsize;    // size of "lognamebuffer"
  371.     char _fd_ *        mirrornamebuffer;    // filled in; empty if no log
  372.  
  373.     // Following fields are new with 5.5.02
  374.     const char _fd_ *key_file;        // encryption key
  375. } a_db_info;
  376.  
  377. extern _crtn short _entry DBInfo( a_db_info _fd_ * );
  378. extern _crtn short _entry DBInfoDump( a_db_info _fd_ * );
  379. extern _crtn short _entry DBInfoFree( a_db_info _fd_ * );
  380.  
  381. //***************************************************************************
  382. // get collation information from database (DBCOLLAT)
  383. //***************************************************************************
  384.  
  385. typedef struct a_db_collation {
  386.     unsigned short    version;
  387.     const char _fd_ *    connectparms;    // userid,password,database
  388.     const char _fd_ *    startline;    // (NULL for default start line)
  389.     const char _fd_ *    collation_label;
  390.     const char _fd_ *    filename;
  391.     MSG_CALLBACK    confirmrtn;
  392.     MSG_CALLBACK    errorrtn;
  393.     MSG_CALLBACK    msgrtn;
  394.     a_bit_field        include_empty    : 1;// include lines with no mappings?
  395.     a_bit_field        hex_for_extended: 1;// use hex for extended chars (> 7E)?
  396.     a_bit_field        replace        : 1;// replace file w/o confirm?
  397.     a_bit_field        quiet        : 1;
  398.  
  399.     // New for v6.0:
  400.     const char _fd_ *    input_filename; // input collation definition
  401.     const char _fd_ *    mapping_filename; // syscollationmapping output
  402. } a_db_collation;
  403.  
  404. extern _crtn short _entry DBCollate( const a_db_collation _fd_ * );
  405.  
  406. //***************************************************************************
  407. // translate log file to SQL (DBTRAN) interface
  408. //***************************************************************************
  409.     
  410. typedef enum dbtran_userlist_type {
  411.     DBTRAN_INCLUDE_ALL,
  412.     DBTRAN_INCLUDE_SOME,
  413.     DBTRAN_EXCLUDE_SOME
  414. } dbtran_userlist_type;
  415.  
  416. typedef struct a_translate_log {
  417.     unsigned short    version;
  418.     const char _fd_ *    logname;
  419.     const char _fd_ *    sqlname;
  420.     p_name        userlist;
  421.     MSG_CALLBACK    confirmrtn;
  422.     MSG_CALLBACK    errorrtn;
  423.     MSG_CALLBACK    msgrtn;
  424.     char        userlisttype;        // DBTRAN_xxx (above)
  425.     a_bit_field        remove_rollback : 1;
  426.     a_bit_field        ansi_sql    : 1;
  427.     a_bit_field        since_checkpoint: 1;
  428.     a_bit_field        omit_comments   : 1;
  429.     a_bit_field        replace        : 1;    // replace SQL file w/o confirm?
  430.     a_bit_field        debug        : 1;
  431.     a_bit_field        include_trigger_trans : 1;
  432.     a_bit_field        comment_trigger_trans : 1;
  433.     unsigned long    since_time;
  434. } a_translate_log;
  435.  
  436. extern _crtn short _entry DBTranslateLog( const a_translate_log _fd_ * );
  437.  
  438. //***************************************************************************
  439. // unload the database into files (DBUNLOAD)
  440. //***************************************************************************
  441.  
  442. enum {
  443.     UNLOAD_ALL,
  444.     UNLOAD_DATA_ONLY,
  445.     UNLOAD_NO_DATA
  446. };
  447.  
  448. typedef struct an_unload_db {
  449.     unsigned short    version;
  450.     const char _fd_ *    connectparms;    // userid,password,database
  451.     const char _fd_ *    startline;    // (NULL for default start line)
  452.     const char _fd_ *    temp_dir;    // directory for data files (bad name)
  453.     const char _fd_ *    reload_filename;// (Must be filled in)
  454.     MSG_CALLBACK    errorrtn;
  455.     MSG_CALLBACK    msgrtn;
  456.     MSG_CALLBACK    statusrtn;
  457.     MSG_CALLBACK    confirmrtn;
  458.     char        unload_type;    // UNLOAD_xxx (above)
  459.     char        verbose;    // VB_xxx (above)
  460.     a_bit_field        unordered : 1;
  461.     a_bit_field        no_confirm : 1; 
  462.     a_bit_field        use_internal_unload : 1;
  463.     a_bit_field        dbo_avail : 1;  // doesn't do anything
  464.     a_bit_field        extract : 1;
  465.     a_bit_field        table_list_provided : 1;
  466.     a_bit_field        exclude_tables : 1;
  467.     a_bit_field        more_flag_bits_present : 1;
  468.     // ** NOTE ** Do not add any more flags here!!
  469.  
  470.     // The following values are only written to by DBUnload:
  471.     a_sysinfo           sysinfo;
  472.     const char _fd_ *    remote_dir;
  473.  
  474.     // Following fields added in 5.0:
  475.  
  476.     // the dbo_username functionality has been dropped as of 6.0
  477.     // you can leave it set to NULL
  478.     const char _fd_ *    dbo_username;
  479.  
  480.     // Fields for dbextract (added in 5.0)
  481.     const char _fd_ *    subscriber_username;
  482.     const char _fd_ *    publisher_address_type;
  483.     const char _fd_ *    publisher_address;
  484.     unsigned short    isolation_level;
  485.     a_bit_field        start_subscriptions : 1;
  486.     a_bit_field        exclude_foreign_keys : 1;
  487.     a_bit_field        exclude_procedures : 1;
  488.     a_bit_field        exclude_triggers : 1;
  489.     a_bit_field        exclude_views : 1;
  490.     a_bit_field        isolation_set : 1;
  491.     a_bit_field        include_where_subscribe : 1;
  492.     a_bit_field        debug : 1;
  493.     
  494.     p_name        table_list;        // selective table list
  495.     
  496.     // Extended bits -- these are present if 'more_flag_bits_available' is true
  497.     a_bit_short        escape_char_present : 1;
  498.     a_bit_short        view_iterations_present : 1;
  499.     a_bit_short        use_internal_reload : 1;
  500.     
  501.     unsigned short    view_iterations;
  502.     char        escape_char;
  503.  
  504.     // Fields for automatic reload( added in 5.5.05 )
  505.     char _fd_ *        reload_connectparms; // userid,password,database for reload database
  506.     char _fd_ *        reload_db_filename;  // filename of reload database to create
  507.     a_bit_field        output_connections:1;
  508.     char        unload_interrupted;
  509. } an_unload_db;
  510.  
  511. extern _crtn short _entry DBUnload( an_unload_db _fd_ * );
  512.  
  513. //***************************************************************************
  514. // upgrade the system tables of a database (DBUPGRAD)
  515. //***************************************************************************
  516.  
  517. typedef struct an_upgrade_db {
  518.     unsigned short    version;
  519.     const char _fd_ *    connectparms;    // userid,password,database
  520.     const char _fd_ *    startline;    // (NULL for default start line)
  521.     MSG_CALLBACK    errorrtn;
  522.     MSG_CALLBACK    msgrtn;
  523.     MSG_CALLBACK    statusrtn;
  524.     a_bit_field        quiet         : 1;
  525.     a_bit_field        dbo_avail     : 1;  // doesn't do anything
  526.     // the dbo_username functionality has been dropped as of 6.0
  527.     // you can leave it set to NULL
  528.     const char _fd_ *    dbo_username;
  529.  
  530.     // following fields added in 6.0
  531.     a_bit_field        java_classes     : 1;
  532.     a_bit_field        jconnect    : 1;
  533. } an_upgrade_db;
  534.  
  535. extern _crtn short _entry DBUpgrade( const an_upgrade_db _fd_ * );
  536.  
  537. //***************************************************************************
  538. // validate the tables of a database (DBVALID)
  539. //***************************************************************************
  540.  
  541. typedef struct a_validate_db {
  542.     unsigned short    version;
  543.     const char _fd_ *    connectparms;    // userid,password,database
  544.     const char _fd_ *    startline;    // (NULL for default start line)
  545.     p_name        tables;
  546.     MSG_CALLBACK    errorrtn;
  547.     MSG_CALLBACK    msgrtn;
  548.     MSG_CALLBACK    statusrtn;
  549.     a_bit_field        quiet : 1;
  550. } a_validate_db;
  551.  
  552. extern _crtn short _entry DBValidate( const a_validate_db _fd_ * );
  553.  
  554. //***************************************************************************
  555. // truncate transaction log interface
  556. //***************************************************************************
  557.  
  558. typedef struct a_truncate_log {
  559.     unsigned short    version;
  560.     const char _fd_ *    connectparms;    // userid,password,database
  561.     const char _fd_ *    startline;    // (NULL for default start line)
  562.     MSG_CALLBACK    errorrtn;
  563.     MSG_CALLBACK    msgrtn;
  564.     a_bit_field        quiet    : 1;
  565.     char        truncate_interrupted;
  566. } a_truncate_log;
  567.  
  568. extern _crtn short _entry DBTruncateLog( const a_truncate_log _fd_ * );
  569.  
  570. //***************************************************************************
  571. // encrypt database (DBCRYPT) interface
  572. //***************************************************************************
  573.  
  574. typedef struct a_crypt_db {
  575.     const char _fd_ *    dbname;
  576.     const char _fd_ *    dllname;
  577.     MSG_CALLBACK    errorrtn;
  578.     MSG_CALLBACK    msgrtn;
  579.     MSG_CALLBACK    statusrtn;
  580.     char        verbose;
  581.     a_bit_field        quiet    : 1;
  582.     a_bit_field        debug    : 1;
  583. } a_crypt_db;
  584.  
  585. extern _crtn short _entry DBCrypt( const a_crypt_db _fd_ * );
  586.  
  587. #if !defined( _SQL_OS_UNIX )
  588. #include "poppk.h"
  589. #endif
  590.  
  591. #endif
  592.