{
  "disks": {
    "1": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "INSTALL  EXE",
              "size": 52949,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "UNZIP    EXE",
              "size": 23528,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "README   COM",
              "size": 4217,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "DISK1    DSK",
              "size": 5,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "DRIVERS  EXE",
              "size": 54659,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "FILELIST DOC",
              "size": 12477,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "SAMPLES  ZIP",
              "size": 167691,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "SQLHOME  ZIP",
              "size": 3993,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "TEMPLATE CA1",
              "size": 361472,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "TEMPLATE CA2",
              "size": 1587,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "README",
              "size": 33808,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "SERIAL   NO",
              "size": 16,
              "date": "1993-04-10",
              "time": "16:07"
            }
          ]
        }
      ],
      "volume": "DISK 1"
    },
    "2": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "DISK2    DSK",
              "size": 5,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "SYSTEM   CA2",
              "size": 361472,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "SYSTEM   CA5",
              "size": 361472,
              "date": "1993-03-09",
              "time": "2:00"
            }
          ]
        }
      ],
      "volume": "DISK 2"
    },
    "3": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "DISK3    DSK",
              "size": 5,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "SYSTEM   CA3",
              "size": 361472,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "SYSTEM   CA6",
              "size": 361472,
              "date": "1993-03-09",
              "time": "2:00"
            }
          ]
        }
      ],
      "volume": "DISK 3"
    },
    "4": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "DISK4    DSK",
              "size": 5,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "SYSTEM   CA1",
              "size": 361472,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "SYSTEM   CA4",
              "size": 361472,
              "date": "1993-03-09",
              "time": "2:00"
            }
          ]
        }
      ],
      "volume": "DISK 4"
    },
    "5": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "DISK5    DSK",
              "size": 5,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "SYSTEM   CA7",
              "size": 29583,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "TUTORIAL ZIP",
              "size": 129443,
              "date": "1993-03-09",
              "time": "2:00"
            },
            {
              "name": "UTILITY  ZIP",
              "size": 253395,
              "date": "1993-03-09",
              "time": "2:00"
            }
          ]
        }
      ],
      "volume": "DISK 5"
    },
    "6": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "INSTALL  EXE",
              "size": 40338,
              "date": "1993-03-16",
              "time": "1:00"
            },
            {
              "name": "UNZIP    EXE",
              "size": 23528,
              "date": "1993-03-16",
              "time": "1:00"
            },
            {
              "name": "README   COM",
              "size": 4217,
              "date": "1993-03-16",
              "time": "1:00"
            },
            {
              "name": "DISK1    DSK",
              "size": 5,
              "date": "1993-03-16",
              "time": "1:00"
            },
            {
              "name": "DRIVERS  EXE",
              "size": 54659,
              "date": "1993-03-16",
              "time": "1:00"
            },
            {
              "name": "FILELIST DOC",
              "size": 1770,
              "date": "1993-03-16",
              "time": "1:00"
            },
            {
              "name": "SYSTEM   CA3",
              "size": 361472,
              "date": "1993-03-16",
              "time": "1:00"
            },
            {
              "name": "SYSTEM   CA5",
              "size": 54819,
              "date": "1993-03-16",
              "time": "1:00"
            },
            {
              "name": "README",
              "size": 5555,
              "date": "1993-03-16",
              "time": "1:00"
            }
          ]
        }
      ],
      "volume": "DISK 1"
    },
    "7": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "DISK2    DSK",
              "size": 5,
              "date": "1993-03-16",
              "time": "1:00"
            },
            {
              "name": "SYSTEM   CA2",
              "size": 361472,
              "date": "1993-03-16",
              "time": "1:00"
            },
            {
              "name": "SYSTEM   CA4",
              "size": 361472,
              "date": "1993-03-16",
              "time": "1:00"
            }
          ]
        }
      ],
      "volume": "DISK 2"
    },
    "8": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "DISK3    DSK",
              "size": 5,
              "date": "1993-03-16",
              "time": "1:00"
            },
            {
              "name": "SYSTEM   CA1",
              "size": 361472,
              "date": "1993-03-16",
              "time": "1:00"
            }
          ]
        }
      ],
      "volume": "DISK 3"
    }
  },
  "desc_file": "README",
  "desc_text": "\r\n                    Welcome to dBASE IV version 2.0 \r\n                    -------------------------------\r\n\r\nThis file contains important, late-breaking information about dBASE IV,\r\nincluding revisions to the documentation.  Information in this file \r\nsupersedes information in the dBASE IV documentation.\r\n\r\nTABLE OF CONTENTS\r\n-----------------\r\n1.  How to Contact Borland\r\n2.  Answers to Common Configuration Questions\r\n3.  Notes on dBASE's New High Performance Filter Optimization\r\n4.  Notes on Language Drivers\r\n5.  File-sharing in a Multi-tasking Environment\r\n6.  Running dBASE in Multiple Sessions\r\n7.  Creating User-defined Help\r\n8.  Creating Pop-ups for Data Validation\r\n9.  Improvements in International String Comparisons\r\n10. Documentation Additions and Corrections\r\n11. Compatibility Issues\r\n\r\n\r\n1. HOW TO CONTACT BORLAND\r\n-------------------------\r\nIf you have any problems with the product, please read this file and \r\nthe dBASE IV manuals first.  If you still need assistance, you can get \r\nhelp from the following sources:\r\n\r\n  1. CompuServe bulletin board: GO BORLAND\r\n     - Provides access to the Borland forums where you can ask technical\r\n       questions, and get the latest technical information, sample \r\n       files, utilities, and ideas.\r\n\r\n  2. File Download BBS: 1-408-439-9096 (8, N, 1)\r\n     - Contains sample files, applications, and technical information\r\n       that you can download.\r\n\r\n  3. Automated Support: \r\n       800 Automated Support (phone): 1-800-524-8420\r\n       Online Automated Support (via modem): 1-408-431-5250 (8, N, 1) \r\n       - Provides up-to-date technical information 24 hours a day, seven\r\n         days a week.  Also provides product information, usage tips,\r\n         troubleshooting information, and answers to commonly-asked\r\n         questions.\r\n\r\n  4. TECHFAX service: 1-800-822-4269 \r\n     - A 24-hours a day service that provides technical information\r\n       on all Borland products and delivers it to your fax machine.\r\n\r\n  5. dBASE Advisor Line: 1-900-555-1003.\r\n     - A faster, more comprehensive level of technical support.  Each\r\n       call is $2.00 per minute (the first minute is free).\r\n\r\n  6. Borland Express Support Line: 1-800-524-8420\r\n     - Provides recorded answers to common questions. \r\n\r\n  7. dBASE Technical Support: 1-408-431-9060\r\n\r\nFor more information about all of the Borland Technical Support programs, \r\nread the brochure, \"Borland introduces a New Class of Technical Support,\" \r\nincluded with this product.\r\n\r\nInformation You Need When You Call Technical Support\r\n----------------------------------------------------\r\nWhen you call Technical Support, please have the following information \r\nready:\r\n\r\n  a. Product name and serial number on your original distribution disk.  \r\n     Please have your serial number ready or we will be unable to process \r\n     your call.\r\n\r\n  b. Product version number. \r\n\r\n  c. Computer brand, model, and the brands and model numbers of any \r\n     additional hardware.\r\n\r\n  d. Operating system and version number. (The version number can be \r\n     determined by typing VER at the DOS prompt.)\r\n\r\n  e. Contents of your AUTOEXEC.BAT file.\r\n\r\n  f. Contents of your CONFIG.SYS file.\r\n\r\n  NOTE:  You can obtain the requested information by typing the\r\n         following at the DOS prompt:  DBINFO -x -o.  This command \r\n         creates a file, DBINFO.TXT, which includes information on \r\n         your hardware configuration, operating system, CONFIG.SYS \r\n         and AUTOEXEC.BAT.\r\n\r\n\r\n2. ANSWERS TO COMMON CONFIGURATION QUESTIONS\r\n--------------------------------------------\r\nQ1:  I'm unable to start dBASE IV 2.0 under Windows 3.1.  Each time I\r\n     try, I get an \"Insufficient Memory\" message.\r\n\r\nA1:  dBASE IV 2.0 requires approximately 4MB of virtual memory to \r\n     run.  Use the following procedure to obtain information about  \r\n     your system's memory and adjust memory allocation:  \r\n     \r\n     1)  In Window's Program Manager, select About Program Manager...\r\n         from the Help menu and check the amount of free memory.\r\n\r\n         a) If you have LESS than 4MB of free memory, read step 2.\r\n\r\n         b) If you have MORE than 4MB of free memory, check the available\r\n            contiguous XMS memory by selecting the DOS prompt icon, and\r\n            typing PMINFO at the DOS prompt.  This utility tells you how\r\n            much memory is available for DOS-16M programs.  If it indicates \r\n            less than 3MB available memory, read step 2.\r\n\r\n     2)  Increase the swap file size.  To do so, \r\n         a) Choose Window's Control Panel.\r\n         b) Choose 386 Enhanced.\r\n         c) Click the Virtual Memory push button.\r\n         d) Click the Change push button.\r\n         e) Increase the value of the New Size option.\r\n\r\n         Increasing the swap file size should increase the amount of\r\n         available virtual memory.    \r\n\r\n     3)  If you have problems starting dBASE in multiple sessions,\r\n         close all your dBASE sessions, and type SET DOS16M=:4M at\r\n         the DOS prompt.  This allocates a maximum of 4MB to each\r\n         session of dBASE.\r\n\r\n\r\nQ2:  I use Windows for Workgroups.  How do I configure dBASE IV 2.0 so\r\n     that it runs optimally in this environment?\r\n\r\nA2:  Use the same memory configuration as described for Windows 3.1 in\r\n     the previous question.\r\n\r\n\r\nQ3:  Why isn't there an option to install cache during installation?\r\n\r\nA3:  dBASE IV 2.0 uses all available extended memory and no longer requires\r\n     a separate disk cache.\r\n\r\n\r\nQ4:  When I start dBASE under Windows 3.1, I get a \"LOCALSHARE is currently\r\n     ON so you cannot run dBASE IV...\" message followed by \"Initialization\r\n     Error.\"  What do I do?\r\n\r\nA4:  LOCALSHARE is a new Config.db setting which enables file-sharing\r\n     in a multi-tasking environment such as Windows 3.1.  It is ON by\r\n     default.  When you start dBASE under Windows 3.1, dBASE checks if \r\n     you have loaded SHARE.EXE, the DOS program that provides file-sharing \r\n     and locking capabilities.  If SHARE.EXE is not loaded, you get the \r\n     \"LOCALSHARE is currently ON so you cannot run dBASE IV...\" message.  \r\n\r\n     Depending on your work environment, use one of the following\r\n     procedures:\r\n\r\n     1)  If you don't intend to share dBASE files in multiple dBASE\r\n         sessions or with other applications (such as Quattro), use\r\n         DBSETUP or edit the CONFIG.DB file to set LOCALSHARE=OFF.\r\n\r\n     2)  If you want to share dBASE files in multiple dBASE sessions\r\n         or with other applications, install SHARE.EXE.  Read your \r\n         DOS manual for instructions on how to do so.\r\n\r\n\r\nQ5:  When I start dBASE, I get a \"System is not configured for the\r\n     current code page...\" message.  What should I do?\r\n\r\nA5:  You get this message if the code page you selected during installation\r\n     of dBASE IV 2.0 is different from your system's code page.  Use the\r\n     following procedure to correct the problem:\r\n\r\n     1)  At the DOS prompt, type CHCP to find out your system's code page.\r\n     2)  Reinstall dBASE IV 2.0.\r\n     3)  In the Code Page Value option, choose the value that matches\r\n         your system's code page.  (By default, dBASE IV's installation\r\n         utility displays your system's code page value.)\r\n\r\n\r\nQ6:  I have a previous version of dBASE installed on my computer.  I\r\n     want dBASE IV 2.0's installation utility to automatically overwrite\r\n     the existing files.  What should I do?\r\n\r\nA6:  dBASE IV 2.0's installation utility gives you the option of \r\n     \"protecting\" old dBASE IV and SQL system files, or overwriting them.\r\n     Use the following procedure to overwrite the old system files:\r\n\r\n     1)  During installation, select \"Install Options... [KEEPDB4 SHIELDSQL]\"\r\n         The installation utility displays the following options:\r\n\r\n         Protect Old dBASE IV System Files: [Yes]\r\n         Shield Existing SQL System Files:  [Yes]\r\n\r\n     2)  Change both options to \"No\" by pressing Enter when the option \r\n         is highlighted.  Pressing Enter toggles the selection.\r\n\r\n     3)  Press Esc to return to the previous menu.\r\n\r\n\r\nQ7:  When I try to start dBASE, I get a \"Bad command or file name\"\r\n     message.  How do I correct this problem?\r\n\r\nA7:  dBASE may not be in your current path.  Either set dBASE in the\r\n     DOS path in your AUTOEXEC.BAT file, or type the full path at the \r\n     DOS prompt.\r\n\r\n     The dBASE IV system files may be missing.  Check that DBASE.EXE\r\n     exists in your dBASE home directory.  If it doesn't, reinstall\r\n     dBASE IV.  In the \"Configuration... [dBASE SAMPLES TUTORIAL DTL\r\n     UTILS]\" option, make sure that \"dBASE IV System\" is set to \"Yes.\"\r\n\r\n\r\nQ8:  When I start dBASE IV, it appears in black and white.  What happened \r\n     to the default colors?\r\n\r\nA8:  dBASE IV 2.0 loads in black and white in the following situations:  \r\n     - You performed a network installation\r\n     - You have an existing CONFIG.DB in the dBASE home directory \r\n       (The installation utility does not overwrite or modify an\r\n       existing CONFIG.DB during installation)\r\n     - You are using a CGA monitor\r\n\r\n     To set the default screen colors, follow the instructions in the\r\n     \"Setting Colors and Line Modes\" section in Chapter 2 of the\r\n     \"Getting Started\" manual.\r\n\r\n\r\nQ9:  I'm running dBASE IV and I get a VM error 5312 or 5313.  What\r\n     does this mean and what should I do?\r\n\r\nA9:  You were trying to execute an operation in low DOS memory, which\r\n     was fragmented.  To correct this problem, you should reduce the \r\n     amount of low DOS memory that dBASE uses.  To do so, use the \r\n     following procedure:\r\n\r\n     1.  At dBASE's dot prompt, type ? MEMORY(5).  This returns the \r\n         amount of memory that VMM is managing.\r\n     2.  Subtract 222 from the value returned by MEMORY(5).\r\n     3.  Use the resulting value as the MAXMEM value in the DBASE.VMC file.\r\n     4.  If the resulting value is LESS than 1024, set MINMEM in the\r\n         DBASE.VMC file to this value also.\r\n\r\n     For example: \r\n     \r\n     If ? MEMORY(5) returns 1200, set MAXMEM and MINMEM to 978 (1200 - 222).\r\n     If ? MEMORY(5) returns 1600, set MAXMEM to 1378 (1600 - 222).\r\n\r\n\r\n3. NOTES ON dBASE'S NEW HIGH PERFORMANCE FILTER OPTIMIZATION\r\n------------------------------------------------------------\r\nThe information in this section supplements the discussion of filter\r\noptimization in Chapter 34 of \"Programming in dBASE IV.\"\r\n\r\nThe following are some conditions where full optimization occurs:\r\n- The database is in natural order and the filter condition corresponds\r\n  to an open index or order\r\n- The database is indexed and the filter condition corresponds to the\r\n  master index\r\n- The database is indexed on a complex character expression (for example, \r\n  firstname+lastname+address) and the filter condition corresponds to  \r\n  a subset of the expression (for example, firstname or firstname+lastname)\r\n\r\nThe following table shows examples of expressions that are fully or\r\npartially optimized:\r\n\r\nExpressions                                             Optimization\r\n--------------------------------------------------------------------\r\nINDEX ON State TAG State\r\nSET FILTER TO State=\"CA\" .OR. State=\"TN\"                Full\r\n\r\nINDEX ON State+Zip TAG Statezip\r\nSET FILTER TO State+Zip=\"CA95050\"                       Full\r\nSET FILTER TO State=\"WA\"                                Full\r\n\r\nINDEX ON State TAG State\r\nSET FILTER TO .NOT. State=\"NY\"                          Full\r\n\r\nINDEX ON Lastname TAG Lastname\r\nINDEX ON Year(Date_hired) TAG Year_hired\r\nLIST FOR Year(Date_hired)=1993 .AND. Lastname=\"Smith\"   Full\r\n\r\nINDEX ON STR(OrderNo,6)+STR(StockNo,6) TAG LineKey\r\nLIST FOR STR(OrderNo,6)=\"100001\"                        Full\r\n\r\nSET FILTER TO State=\"CA\" .OR. State=\"TN\"  && no index   Partial \r\n\r\nSET FILTER TO State+Zip=\"CA95050\"  && no index          Partial\r\n\r\nINDEX ON Lastname TAG Lastname\r\nSET ORDER TO Firstname\r\nSET FILTER TO Lastname=\"Smith\"                          Partial\r\n\r\nSET FILTER TO \"Fred\" $ Lastname                         \r\nCOUNT                                                   No\r\nSUM                                                     Full; dBASE retains       \r\n                                                        the search results \r\n                                                        of the previous \r\n                                                        operation \r\n                                                      \r\nSET FILTER TO FOUND(2)                                  No    \r\n                                                          \r\n\r\n\r\n4. NOTES ON LANGUAGE DRIVERS                               \r\n----------------------------\r\nThe information in this section supplements the discussion of language\r\ndrivers on pages 344 and 345 of the Language Reference.\r\n\r\ndBASE IV version 2.0 supports DOS code pages (character sets) 437 and 850.  \r\nPrevious versions supported only code page 437.  If you decide to change to \r\ncode page 850 (the code page available, either as the default or as an \r\nalternate, with all systems running DOS 5.0 or higher), please note the \r\nfollowing:  dBASE files created on systems running code page 850 may appear \r\ndifferently and generate unexpected results when used on a system running \r\ncode page 437, and vice versa.  \r\n\r\nThis is because many of the extended ASCII (>127) characters differ between \r\nthe two code pages, and if you use these characters in your files, you will \r\nget different results when viewing and sorting data. \r\n\r\nTo ensure data integrity, dBASE IV version 2.0 now marks each data file  \r\n(.dbf) and index file (.ndx or .mdx) with a Language Driver ID.  This ID\r\nidentifies the code page and language table which the file was created with.\r\nWhen you open a file, dBASE compares the language driver assigned to the \r\nfile with the system's current language driver.  If the two are different, \r\ndBASE displays a warning and gives you the option of continuing the \r\noperation or cancelling it.\r\n\r\nIf, for example, you are currently using code page 850 and you open a \r\ndBASE IV 2.0 data file that was created with code page 437, dBASE warns \r\nyou of mismatched language drivers.  You can choose to cancel the operation \r\nor use the file.  If you use the file and it has an associated index file, \r\ndBASE displays the warning again and prompts you to cancel the operation \r\nor reindex the file with the current language driver.  If you choose to \r\nreindex the file, dBASE marks the index file with the new language driver ID.  \r\nIt does not, however, mark the data file with the new language driver ID. \r\n\r\nData and index files created in previous versions of dBASE IV do not have \r\nlanguage driver IDs; if you open these files in dBASE IV 2.0 under code\r\npage 437, dBASE automatically assigns the current language driver ID.  \r\nIf you open these files in dBASE IV 2.0 under code page 850, dBASE prompts \r\nyou to assign, or reindex with, the current language driver ID.\r\n\r\nThe language driver ID assigned to an index file is changed each time you \r\nreindex the file under a different language driver.  The language driver ID \r\nassigned to a data file, however, is permanent.  \r\n\r\nTo \"reassign\" a language driver ID of a data file, use the COPY STRUCTURE \r\nand APPEND FROM commands to create a new data file and transfer the data \r\nunder the current language driver.\r\n\r\nNOTE:  Marking a file with the new language driver ID does NOT convert \r\n       extended characters that differ between the two code pages.  If\r\n       your file contains characters that differ, you should change them\r\n       to ensure data integrity.\r\n\r\n\r\n5. FILE-SHARING IN A MULTI-TASKING ENVIRONMENT\r\n-----------------------------------------------\r\nMany operating systems and programs, such as OS/2, Windows, DOSSHELL, \r\nand DESQVIEW, provide users with the capability to run dBASE in multiple \r\nsessions and to share local files.  You can now load dBASE IV in nine \r\ndifferent sessions (the maximum allowed), and use the same files in more \r\nthan one session.  You can also share dBASE files with other applications \r\nsuch as Quattro.\r\n\r\nTo support file-sharing on a local system, dBASE provides you with the\r\noption of protecting your dBASE files from multi-tasking collisions \r\nwith a new Config.db setting, LOCALSHARE. \r\n\r\nIf you intend to use dBASE files in more than one session or application, \r\nuse LOCALSHARE=ON (the default setting) to enable file-sharing protection,\r\nand remove EXCLUSIVE=ON or set EXCLUSIVE=OFF in your CONFIG.DB file.  \r\n\r\nWhen LOCALSHARE is ON, dBASE checks and ensures that your system is running \r\nSHARE.EXE, a DOS program that provides file-sharing and locking capabilities \r\non your hard disk.  If it detects SHARE, dBASE protects your dBASE file in \r\nthe same way it protects files in a multi-user (network) environment.  \r\nFor example, dBASE will write the updates to the hard disk each time a \r\nrecord is modified or created.\r\n\r\nNOTE:  SHARE limits the number of files that can be opened and the\r\n       number of locks available to your system.  You can increase these\r\n       limits by using the /f and /l switches with the SHARE command.\r\n       Refer to your DOS manual for more information.\r\n\r\nUnlike running dBASE IV in a multi-user environment, each multi-tasking \r\nsession of dBASE IV uses the same file name (TRANSLOG.LOG) for transaction \r\nprocessing.\r\n\r\nIf LOCALSHARE is ON and you run dBASE under Windows without SHARE.EXE, \r\ndBASE displays a message telling you to load SHARE.EXE.  You can disable \r\nfile-sharing protection by specifying LOCALSHARE=OFF in your CONFIG.DB \r\nfile.   \r\n\r\n\r\n6. RUNNING dBASE IN MULTIPLE SESSIONS\r\n-------------------------------------\r\nIf you load dBASE in multiple sessions, dBASE assigns a unique identifier \r\nto each session.  The identifier is a number from 1 to 9 and is added to the \r\nuser ID in a network environment.  For example, in a network environment,\r\nif a user name is \"JSMITH\", the first session ID is \"JSMITH1\".  In a \r\nsingle-user environment where user IDs are not used, the first session \r\nis identified as \"SESSION1\".\r\n\r\nThe following commands and functions return session IDs:\r\n  ID()\r\n  USER()\r\n  LKSYS(2)\r\n  LKSYS(5)\r\n  LIST USERS\r\n  DISPLAY USERS\r\n\r\nSession numbers are assigned and recycled, starting with the lowest \r\navailable number.  Therefore, session numbers will not be in chronological \r\norder if any sessions are closed before all nine are used.  For example, \r\nif you open five sessions, then close session 2, the next session you open \r\nis assigned the number 2, not 6.\r\n\r\n\r\n7. CREATING USER-DEFINED HELP\r\n-----------------------------\r\nThe Form.gen template file lets you create user-defined Help frames.\r\n\r\nThe F1 Help key can now provide user-defined help information\r\nfor individual fields on the Edit screen. When you press F1 Help,\r\nthe information in the memo fields of a special database file\r\nwill display in a pop-up Help window. If you want to create your own\r\nHelp file, create the special database file described below.\r\n\r\nThe name of the database file must begin with the first six\r\ncharacters of the name of the format file, followed by \"_h.dbf\".\r\nFor example, if the format file is called Entry.fmt, then the\r\nHelp file must be called Entry_h.dbf. The database file must\r\nbe created with the following structure, before you compile the\r\nform:\r\n\r\n        Field  Field Name  Type       Width  Dec  Tag\r\n        -----  ----------  ---------  -----  ---- ---\r\n            1  FLD_NAME    Character    10         Y\r\n            2  FLD_HEADNG  Character    25         N\r\n            3  FLD_HELP    Memo         10         N\r\n       ----------------------------------------------\r\n\r\nEnter the names of the fields for which you want help in the Fld_name\r\nfield. You need to create an index tag named Fld_name, as follows:\r\n\r\n  INDEX ON UPPER( Fld_Name ) TAG Fld_Name\r\n\r\nYou do not need to include all the fields from the database in\r\nthe Help file, only the ones for which you want Help windows.\r\n\r\nEnter the character string for the top frame of the Help window in the\r\nFld_headng field.\r\n\r\nEnter the Help text you want displayed for each field in the Fld_help\r\nmemo field. If there is more text than will fit inside the help window,\r\nnavigation instructions are displayed inside the Help window.\r\n\r\n\r\n8. CREATING POP-UPS FOR DATA VALIDATION\r\n---------------------------------------\r\nUsing CREATE/MODIFY SCREEN, you can create a data validation\r\nroutine that presents a pop-up displaying the valid choices from\r\na lookup database file when a user enters a value that does\r\nnot match the lookup file.\r\n\r\nTo create a pop-up for data validation, start from the \"Accept value when\"\r\nportion of a field's Edit Options table on the forms design screen. You\r\nmust enter the following syntax (including quotes):\r\n\r\n  \"POPUP\"=\"<database>-><fieldname> ORDER <fieldname> [REQ] [SHADOW]\"\r\n\r\nFor example, to validate the Vendor_id field in Goods.dbf against the\r\nVendor_id field in Vendors.dbf, insert the following pop-up string in\r\nthe \"Accept value when\" fill-in when highlighting the Vendor_id field\r\nin a form that uses Goods.dbf.\r\n\r\n  \"POPUP\" = \"Vendors->Vendor_id ORDER Vendor_id REQ SHADOW\"\r\n\r\nIf you want to attach an additional .AND. condition to the pop-up\r\nvalidation, include the condition after the \"POPUP\"=\"...\" expression.\r\nThe condition should not be delimited with quotes.\r\n\r\nThe components of this pop-up string are:\r\n\r\nPOPUP               Initiates pop-up processing for this\r\n                    field during EDIT.\r\n\r\nVendors->Vendor_id  Indicates the database file to open and\r\n                    the field in that database file to use\r\n                    for data validation. You must have an index\r\n                    tag on this field.\r\n\r\nORDER Vendor_id     Specifies the index tag that orders this field.\r\n\r\nREQ                 Shows that the user must enter something\r\n                    into the field before moving on. This is\r\n                    optional. If REQ is omitted, the user can\r\n                    escape the pop-up and leave the field blank.\r\n\r\nSHADOW              Provides a shadowing effect underneath the\r\n                    pop-ups. SHADOW is optional.\r\n\r\nYou can use a field from the .DBF file you are currently working\r\nwith or a .DBF from another work area. However, the validated file\r\nand the lookup must be different files. Pop-ups are usually displayed\r\nbelow the currently-highlighted field, unless the current field is\r\nlow on the form.\r\n\r\nLimitations of Pop-up Validation:\r\n\r\n- This feature is designed for EDIT and might not display as smoothly\r\n  in BROWSE. If you have a pop-up on your EDIT, the F2 toggle from EDIT\r\n  to BROWSE is disabled.\r\n\r\n- Pop-up validation cannot be used on a multiple choice field.\r\n\r\n- Pop-up validation cannot be used on a form created by using a view that\r\n  contains more than one file.\r\n\r\n- In order to protect a procedure file you currently have in use, EDIT\r\n  will close it on entry and reopen it on exit. If this presents a\r\n  problem with forms that use procedures, see SET LIBRARY in the Language\r\n  Reference manual, and Sysproc and SET LIBRARY in the Programming in\r\n  dBASE IV manual.\r\n\r\n- The first six characters of the form name and the first eight characters\r\n  of the field names with these pop-ups must be unique.\r\n\r\n\r\n9. IMPROVEMENTS IN INTERNATIONAL STRING COMPARISONS\r\n---------------------------------------------------\r\nIn dBASE IV 2.0, comparisons between strings with extended characters\r\nhave been improved.  If you use LANGTABLES=ON and SET EXACT OFF, secondary \r\ndifferences between characters are ignored.  For example,\r\n\r\n      SET EXACT OFF\r\n      ? \"âbc\" = \"abc\"\r\n      .T.\r\n\r\nIn previous versions of dBASE IV, ? \"âbc\" = \"abc\" would have returned .F.\r\n\r\nWe recommend that you REINDEX old files.  This is important if you work\r\nwith LANGTABLES=ON, SET EXACT OFF, and INDEX ON with a FOR condition.\r\n\r\n\r\n10. DOCUMENTATION ADDITIONS AND CORRECTIONS\r\n------------------------------------------\r\nThis section of the README file contains new information and revisions\r\nto the dBASE IV manuals.\r\n\r\n\"Getting Started\"\r\n-----------------\r\n- p. 10:  When you run dBASE IV under Windows 3.1 enhanced mode, use \r\n  the DOS environment variable SET DOS16M to set the maximum memory\r\n  to 4MB or higher.  \r\n\r\n- p. 11:  When you run dBASE IV under OS/2, set DPMI_MEMORY_LIMIT to 4\r\n  or higher.\r\n\r\n- p. 68:  To increase or decrease user counts on a multi-user dBASE IV \r\n  system, you type ADDUSER4 at the DOS prompt, select the option you want, \r\n  and type in the requested LAN Access number.  dBASE LAN Access Pack \r\n  version 2.0 no longer prompts you to insert a disk.\r\n\r\n\"Programming in dBASE IV\"\r\n-------------------------\r\n- p. 498:  VMM runs automatically when you start dBASE IV if your \r\n  system has less than 4.5MB of extended memory or if you change \r\n  VMM's default settings through the DBASE.VMC configuration file.\r\n\r\n- p. 499:  NOSWAPFILE is not a valid DBASE.VMC parameter. \r\n\r\n- p. 501:  The following are valid values for the BUFFSIZE parameter\r\n  in DBASEIV_BUFF:  1, 2, 4, 7, 8 (default), 9, 15, 20, 21, 30, 31, and 32.\r\n  The buffers are dynamically sub-allocated from 64K segments.  Each \r\n  buffer allocated includes control header information.  Consequently, \r\n  large buffer sizes (such as 16 and 32) which are exact divisors of \r\n  64 waste substantial amounts of memory (almost one full buffer)\r\n  because the last buffer (plus its header) doesn't fit into the\r\n  64K segment.\r\n\r\n  You can achieve optimum memory utilization by using buffer sizes \r\n  which are close to an even divisor of 63, for example, 7, 9, 15, or 21.  \r\n  With these buffer sizes, extended memory is used more efficiently \r\n  since more buffers fit into the same physical space, thereby enlarging \r\n  the effective size of the buffer.  This, in turn, improves overall dBASE \r\n  I/O performance.\r\n\r\n  Generally, larger buffers (such as 21) provide good performance with\r\n  sequential processing, such as scanning a database file without an\r\n  active index or copying a subset of one file to another.  Smaller buffer\r\n  sizes are recommended for random file accesses.\r\n\r\n  Values 1 and 32 are seldom good settings.  Values between 7 and 21 \r\n  provide good overall performance.  On networks, smaller values, such as\r\n  2 or 4, may improve performance.\r\n\r\n- p. 508:  The following commands should be added to the list of\r\n  commands that are optimized when the FOR clause is used: BLANK, DISPLAY, \r\n  and INDEX.  SCAN is optimized only when preceded by SET FILTER TO.\r\n\r\n\"Language Reference\"\r\n--------------------\r\n- p. 58:  If you are appending from an SDF (System Data Format) file, \r\n  you can now speed up APPEND processing by using the optional NOVERIFY \r\n  argument to turn off error-checking and data validation during the APPEND.  \r\n  If you use NOVERIFY, the source data is copied as-is into the target \r\n  fields.  The following is an example of the APPEND FROM command with \r\n  the NOVERIFY option:\r\n\r\n        APPEND FROM Myfile TYPE SDF NOVERIFY\r\n\r\n  You should use this option only if your data is in the correct format. \r\n  Without data validation, dBASE doesn't check or convert your source data \r\n  to fit the data type of the target fields.  For example, when you use\r\n  NOVERIFY, dBASE doesn't check the setting of POINT and accepts only a \r\n  period as a valid decimal point character.  Therefore, if you want to\r\n  use the NOVERIFY option and get reliable results, use a period as the\r\n  decimal point in float and numeric data types in your source data.\r\n\r\n- In previous versions of dBASE, when you used the SDF or DELIMITED clause\r\n  with the APPEND FROM command, the formfeed character was appended to the\r\n  database.  Now, the formfeed is not appended to the database if it is\r\n  preceded by a carriage return.\r\n  \r\n- p. 239:  If you are running dBASE in a multi-user or multi-tasking \r\n  environment, and you use REPLACE with a scope clause to replace an \r\n  indexed field, you are now required to have exclusive use of the database.  \r\n  This ensures that all records are replaced properly.\r\n\r\n- p. 275:  This version of dBASE improves the internal processing of the \r\n  USE AGAIN command.  If you use a database in more than one work area, \r\n  any changes made to the file in one work area are reflected in all other \r\n  work areas.  Previously, if you used the same database in more than one \r\n  work area, updates to the database in one work area were not reflected \r\n  in the others.  \r\n  \r\n  NOTE:  If you're working in a multi-tasking (LOCALSHARE=ON) \r\n  or multi-user environment, SET EXCLUSIVE must be OFF to use the USE AGAIN \r\n  command.  If SET EXCLUSIVE is ON, dBASE displays a \"File already open\" \r\n  message.\r\n\r\n- p. 214:  If you omit <command> when you use ON SELECTION BAR, the\r\n  command previously assigned to the specified menu bar is disabled, and \r\n  a command specified with ON SELECTION POPUP is associated with the menu\r\n  bar.\r\n\r\n- p. 216:  If you omit <command> when you use ON SELECTION PAD, the\r\n  command previously assigned to the specified pad is disabled, and a\r\n  command specified with ON SELECTION MENU is associated with the pad.\r\n\r\n- p. 287, 337, 351:  The SET BLOCKSIZE command allocates the same block \r\n  size for both memo field data (.dbt files) and index data (.mdx files).  \r\n  In this version of dBASE, you can specify different block sizes for memo \r\n  field blocks and index blocks by using SET MBLOCK and SET IBLOCK, \r\n  respectively.  The following describes how the SET BLOCKSIZE setting  \r\n  affects SET IBLOCK and SET MBLOCK, and vice versa:\r\n\r\n  - If you change the value of BLOCKSIZE through DBSETUP, dBASE IV changes\r\n    the IBLOCK and MBLOCK values to equivalent block sizes.  For example,\r\n    setting BLOCKSIZE to 2 changes IBLOCK to 2 and MBLOCK to 16.  Each sets \r\n    the block size to 1024 bytes.\r\n\r\n  - Through DBSETUP, you can change the IBLOCK and MBLOCK values \r\n    individually.  These values do not change the BLOCKSIZE value.  \r\n    For example, if you leave the BLOCKSIZE value at its default of \r\n    1 and set IBLOCK to 2 and MBLOCK to 4, dBASE creates 1024-byte \r\n    memo field blocks and 256-byte index blocks.  In this case, the \r\n    IBLOCK and MBLOCK values override the BLOCKSIZE value.\r\n\r\n  - In a CONFIG.DB file, the command that appears further down the file\r\n    overrides one that appears earlier.  For example, if \"IBLOCK= \" appears \r\n    after \"BLOCKSIZE= \" (and it does when DBSETUP writes to CONFIG.DB),\r\n    the IBLOCK value overrides the BLOCKSIZE value.\r\n\r\n  - Using the SET BLOCKSIZE command at the dBASE dot prompt changes IBLOCK\r\n    and MBLOCK values to equivalent block sizes.\r\n\r\n- p. 489:  MEMORY(7) returns the size, in kilobytes, of the swap file that \r\n  VMM creates.  VMM always creates a swap file to improve overall \r\n  performance.  \r\n\r\n- p. 521:  Setting the second option, <expL2>, of the RUN() function to    \r\n  .T. tells dBASE to release all available extended memory prior to running\r\n  the specified command or program.  To find out how much extended memory\r\n  is currently available to execute a command or program with RUN(), use \r\n  MEMORY(0).  To determine how much extended memory dBASE will release when \r\n  you execute RUN(<expC>,.T.), use MEMORY(3).\r\n\r\n- p. 696:  Byte 29 in the database file header contains the language \r\n  driver ID.\r\n\r\n\r\n11.  COMPATIBILITY ISSUES\r\n-------------------------\r\n\r\nUsing dBASE with DOS 5.0 DOSSHELL\r\n---------------------------------\r\nIf you run dBASE IV under a task switcher, such as DOS 5.0 DOSSHELL, you \r\nshould install MULTI16M.EXE.  This TSR is provided with dBASE IV.  For\r\nmore information about this program, read MULTI16M.DOC.  This file is\r\nin your dBASE home directory.\r\n\r\nUsing dBASE with Stacker\r\n------------------------\r\nIf you are using Stacker or another disk compression software,\r\nthe amount of disk space indicated by DIR or other commands may \r\nbe more than is actually available.  This may cause you to run \r\nout of disk space when installing dBASE.  Stacker users who have \r\nless than 10MB of disk space should run SCHECK to see how much \r\ndisk space is actually available.  This information can be found \r\nunder \"Bytes Free\" in the STACVOL file.\r\n\r\nUsing dBASE under OS/2\r\n----------------------\r\ndBASE will fail to load under OS/2 unless you increase its\r\nDPMI_MEMORY_LIMIT setting to 4 or higher.\r\n\r\nIf you run dBASE under OS/2 2.0 with the Service Pack installed, using\r\nSET MOUSE ON and moving the mouse pointer causes dBASE IV to crash.\r\nThis is a problem with the OS/2 2.0 Virtual DOS mouse driver, which can\r\nbe resolved in one of the following ways:\r\n\r\n1)  Use the VMOUSE.SYS driver included with your original OS/2 2.0 disks.\r\n2)  Use MOUSE=OFF in your CONFIG.DB file.\r\n3)  Contact IBM OS/2 Support at 1-800-237-5511, and refer to problem\r\n    number PJ06533 to obtain the patch that corrects this problem.\r\n\r\nMouse drivers for Windows 3.1\r\n-----------------------------\r\nIf you run dBASE IV 2.0 in a window session, you must use MOUSE.COM\r\nor MOUSE.SYS version 8.20 or higher in order for the mouse to work.\r\nYou can use an older version of MOUSE.COM or MOUSE.SYS if you run dBASE\r\nin full screen mode.\r\n\r\nRunning Multi-user dBASE IV with IBM LAN Server or Microsoft LAN Manager\r\n------------------------------------------------------------------------\r\nPC client workstations running multi-user dBASE IV with IBM LAN Server\r\nor Microsoft LAN Manager may lose network connections and get the messages \r\n\"File not found,\" \"Network busy,\" or \"Device no longer exists\" when \r\nnetwork traffic is heavy.  This is a network problem and if it occurs, \r\ncontact IBM Technical Support or Microsoft Technical Support."
}