home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / cdrom / cdrx / rdx30.txt < prev    next >
Encoding:
Text File  |  1991-01-24  |  105.3 KB  |  2,538 lines

  1.  
  2.  
  3.  
  4.  
  5. STANDARD 
  6. FOR THE EXCHANGE OF DIGITAL INFORMATION ON CD-ROM
  7.  
  8.  
  9.  
  10.  
  11.              CD-ROM Read-Only Data Exchange Standard
  12. (CD-RDx)
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.                          Commissioned by
  34.  
  35.                The Information Handling Committee
  36.                 Director of Central Intelligence
  37.                   Intelligence Community Staff
  38.                     Washington, DC 20090-0828
  39.  
  40.  
  41.                           Version 3.00
  42.                         December 31, 1990 STANDARD FOR THE EXCHANGE OF DIGITAL INFORMATION ON CD-ROM
  43.                         Table of Contents
  44.                                                              Page
  45. 1.   PURPOSES  . . . . . . . . . . . . . . . . . . . . . . . .  1
  46. 2.   OBJECTIVE . . . . . . . . . . . . . . . . . . . . . . . .  1
  47. 3.   SCOPE     . . . . . . . . . . . . . . . . . . . . . . . .  2
  48. 4.   OVERVIEW  . . . . . . . . . . . . . . . . . . . . . . . .  2
  49.      4.1  Sequence of Events of a CD-RDx Query . . . . . . . .  3
  50.      4.2  Precedence for CD-RDx  . . . . . . . . . . . . . . .  4
  51. 5.   FORMAT FOR CD-RDx PROTOCOLS . . . . . . . . . . . . . . .  7
  52.      5.1  Server Structures  . . . . . . . . . . . . . . . . .  7
  53.      5.3  Objects and Tables . . . . . . . . . . . . . . . . .  8
  54.      5.4  Currency . . . . . . . . . . . . . . . . . . . . . .  9
  55.      5.5  Object Summary . . . . . . . . . . . . . . . . . . . 10
  56.      5.6  Message Types  . . . . . . . . . . . . . . . . . . . 11
  57.      5.7  Modifiers  . . . . . . . . . . . . . . . . . . . . . 12
  58.      5.8  Message Summary  . . . . . . . . . . . . . . . . . . 13
  59.      5.9  Information Lists  . . . . . . . . . . . . . . . . . 13
  60. 6.   MESSAGE DESCRIPTIONS  . . . . . . . . . . . . . . . . . . 15
  61.      6.1  OPEN . . . . . . . . . . . . . . . . . . . . . . . . 15
  62.      6.2  CLOSE  . . . . . . . . . . . . . . . . . . . . . . . 16
  63.      6.3  SELECT . . . . . . . . . . . . . . . . . . . . . . . 17
  64.      6.4  REMOVE . . . . . . . . . . . . . . . . . . . . . . . 17
  65.      6.5  GET  . . . . . . . . . . . . . . . . . . . . . . . . 17
  66.      6.6  SEEK . . . . . . . . . . . . . . . . . . . . . . . . 18
  67.      6.7  CURRENT  . . . . . . . . . . . . . . . . . . . . . . 19
  68.      6.8  CREATE . . . . . . . . . . . . . . . . . . . . . . . 19
  69.      6.9  DELETE . . . . . . . . . . . . . . . . . . . . . . . 20
  70.      6.10 CLEAR  . . . . . . . . . . . . . . . . . . . . . . . 20
  71.      6.11 FIND . . . . . . . . . . . . . . . . . . . . . . . . 20
  72.      6.12 RECORDSET  . . . . . . . . . . . . . . . . . . . . . 21
  73.      6.13 LOGIN  . . . . . . . . . . . . . . . . . . . . . . . 21
  74.      6.14 SERVERLIST . . . . . . . . . . . . . . . . . . . . . 21
  75.      6.15 Table of Contents Processing . . . . . . . . . . . . 22
  76. 7.   Server OUTPUT . . . . . . . . . . . . . . . . . . . . . . 24
  77.      7.1  Field Description Information  . . . . . . . . . . . 24
  78.      7.2  Dataset Description Information  . . . . . . . . . . 24
  79.      7.3  Index Description Information  . . . . . . . . . . . 24
  80.      7.4  Database Description Information . . . . . . . . . . 25
  81.      7.5  Open Record Description Information  . . . . . . . . 25
  82.      7.6  Open Keylist Description Information . . . . . . . . 25
  83.      7.7  Open Recordset Description Information . . . . . . . 25
  84.      7.8  Record Set Information . . . . . . . . . . . . . . . 26
  85.      7.9  Record Information . . . . . . . . . . . . . . . . . 26
  86.      7.10 Key Information  . . . . . . . . . . . . . . . . . . 26
  87.      7.11 Count Information  . . . . . . . . . . . . . . . . . 26
  88. Appendices
  89.      A.   Error Messages . . . . . . . . . . . . . . . . . . . 27
  90.      B.   Clients and Servers Explained  . . . . . . . . . . . 30
  91.      C.   Data Types . . . . . . . . . . . . . . . . . . . . . 32
  92.      D.   Data Dictionary  . . . . . . . . . . . . . . . . . . 36
  93.      E.   OS Specific Information  . . . . . . . . . . . . . . 30
  94.      F.   Glossary . . . . . . . . . . . . . . . . . . . . . . 32
  95.      G.   Questions & Answers  . . . . . . . . . . . . . . . . 36
  96.      
  97.  
  98.    STANDARD FOR THE EXCHANGE OF DIGITAL INFORMATION ON CD-ROM
  99.  
  100.  
  101. 1.   PURPOSES
  102.  
  103.      The purposes of this standard are to:
  104.  
  105.      o    Establish CD-ROM Read-Only Data Exchange (CD-RDx)
  106.           protocols that will enable universal interoperability of
  107.           CD-ROMs and foster interchange of information.
  108.  
  109.      o    Provide criteria for the acceptance and rejection of
  110.           application software, CD-ROM retrieval engines, user
  111.           interfaces and CD-ROM databases according to this
  112.           standard.
  113.  
  114.  
  115. 2.   OBJECTIVES
  116.  
  117.      It is in the best interests of the U.S. Government to foster
  118. an environment in which access to data on CD-ROM discs would be
  119. system independent, i.e., functionally interoperable across
  120. systems, and software independent, i.e., functionally interoperable
  121. with any search and retrieval program.
  122.  
  123.      The objectives of this standard are (1) to define the criteria
  124. to enable interoperability of CD-ROMs within any and among all
  125. operating systems, CD-ROM drives, access/retrieval programs, and
  126. user interfaces; (2) to promote long-term storage and exchange of
  127. information on CD-ROM between, among and within the agencies of the
  128. U.S. Government; and (3) to provide a standard that would promote
  129. adoption of CD-ROM as an accepted archiving medium.
  130.  
  131.      This standard provides a sufficient level of detail to guide
  132. implementation and minimize ambiguity in the production of open
  133. systems, interoperable CD-ROMs.  This standard is designed to be
  134. fully compliant, at a minimum, with ISO/IEC Standard 10149 which
  135. defines the logical blocks of data on a compact disc, the
  136. International Standard for the CD-ROM Volume and File Format (ISO
  137. 9660) which defines the logical volume and file format for CD-ROM. 
  138. Requirements for adherence to this standard should be included in
  139. all requests for proposals for the production of digital data on
  140. CD-ROM, CD-ROM retrieval engines, user interfaces (including those
  141. accompanying software application programs) and commercially
  142. available CD-ROM applications.  Questions concerning this standard
  143. should be directed to Chairman, DCI Intelligence Information
  144. Handling Committee, Intelligence Community Staff, P.O. BOX 90828,
  145. Washington, D.C., 20090-0828 who will issue any interpretations or
  146. succeeding amendments or modifications, thereto, as may be
  147. required.
  148.  
  149. 3.   SCOPE
  150.      This standard is applicable to all CD-ROM retrieval engines,
  151. all indexes to data residing on CD-ROM discs or read-only updatable
  152. media, and all computers supporting CD-ROM drives and all
  153. commercially available CD-ROM applications.
  154.  
  155.  
  156. 4.   OVERVIEW
  157.  
  158.      CD-ROM discs are simple, inexpensive media containing large
  159. amounts of permanently stored digital data, an index to that data
  160. and software to search and retrieve the data.  CD-ROM discs are
  161. used in CD-ROM drives, which serve only as read-only peripheral
  162. devices to computers.  Because CD-ROMs are read-only media, once
  163. produced, they are incapable of having additional data written to
  164. them, unlike other removable media such as floppy diskettes or
  165. Write Once Read Many (WORM) disks.  Physically, CD-ROM discs are
  166. small (12 cm or 4.72" diameter) and durable; yet they store the
  167. equivalent amount of textual data contained in a typical 4-5 drawer
  168. filing cabinet.
  169.  
  170.      More importantly, CD-ROMs contain permanently stored, machine-
  171. readable (binary) data.  This data can be quickly accessed,
  172. retrieved, revised and incorporated in reports, yet remain intact
  173. and available for subsequent access.  Since CD-ROM data is in
  174. machine-readable form, easy transfer to any subsequent archiving
  175. media is assured.  For these reasons, CD-ROM is considered an
  176. appropriate medium for the dissemination and archiving of digital
  177. data, replacing and/or supplementing paper, microfiche, 9-track
  178. tapes and other digital mass storage devices.  It is, therefore,
  179. imperative to develop, implement and adopt a CD-ROM standard that
  180. enables interoperability ("plug and play") between and among all
  181. operating systems, all retrieval programs and all user interfaces.
  182.  
  183.      No such standard for CD-ROM interoperability exists. 
  184. Computer-controlled CD-ROM drives and CD-ROM search and retrieval
  185. software are subject to unique commands of each computer's
  186. operating system, which is most likely proprietary.  Although ISO
  187. 9660 defines the volume and file format for the placement of data
  188. on CD-ROMs, no standard exists for accessing, searching and
  189. retrieving the data.  These functions have been left to software
  190. developers to execute and to CD-ROM producers to implement.  The
  191. result is a ever-expanding array of different installation methods
  192. per application, different user interfaces, different query
  193. functions and different system requirements.  The burden of all
  194. these differences falls primarily on the user, the individual who
  195. must install each disc per unique instruction and learn how to use
  196. each new user interface for each new CD-ROM.
  197.  
  198.      The CD-RDx standard was developed to overcome the limitations
  199. of multiple, unique operating systems and the multiple, unique user
  200. interfaces accompanying the growing number of CD-ROM software
  201. programs applications.
  202.      4.1  Sequence of Events of a CD-RDx Query
  203.  
  204.      With the CD-RDx standard, a CD-ROM would contain the user
  205. data, one or more data indexes, a search engine and a Server.  The
  206. search engine and the Server may be separate or combined, may
  207. reside on the CD-ROM only or be copied onto the computer's hard
  208. disk drive.  Data access and retrieval occurs in the following
  209. manner (see Figure #1):
  210.  
  211.  
  212. (1)  USER:
  213.      o    Enters a query according to the user interface program of
  214.           the user's choice.
  215.  
  216. (2)  USER INTERFACE:
  217.  
  218.      o    Passes query to Server, using standard commands and
  219.           protocols defined in the CD-RDx standard.
  220.  
  221. (3)  Server:
  222.  
  223.      o    Passes query to search engine program.
  224.  
  225. (4)  SEARCH ENGINE:
  226.  
  227.      o    Receives query from Server, using standard commands and
  228.           protocols defined in the CD-RDx standard,
  229.  
  230.      o    Executes query against data index,
  231.  
  232.      o    Determines data that meets query logic,
  233.  
  234.      o    Identifies data locations on CD-ROM,
  235.  
  236.      o    Retrieves data from CD-ROM,
  237.  
  238.      o    Passes data to Server.
  239.  
  240.  
  241.  
  242. (5)  Server:
  243.  
  244.      o    Passes data to Client program, using standard commands
  245.           and protocols defined in the CD-RDx standard.     
  246.  
  247. (6)  Client:
  248.  
  249.      o    Presents data to user.
  250.  
  251. (7)  USER:
  252.  
  253.      o    Views data per user interface features.
  254.      Although a user interface developed specifically for the
  255. database/retrieval engine may also accompany the CD-ROM
  256. application, the CD-RDx standard stipulates that any user interface
  257. conforming to the CD-RDx standard may access data on a CD-ROM
  258. conforming to the CD-RDx standard, as described above.  In this
  259. way, the user may select the user interface of his or her choice
  260. and access any CD-ROM application conforming to the CD-RDx
  261. standard.  The CD-ROM producer that publishes CD-RDx compatible
  262. applications is assured that the CD-ROM is operable within all
  263. operating systems and that the database is accessible to all users.
  264.  
  265.      4.2  Precedence for CD-RDx
  266.  
  267.      The CD-ROM Read-Only Data Exchange standard is required to
  268. assure producers and users of CD-ROM databases that the discs they
  269. publish and access are interoperable, regardless of the computer
  270. operating system, the retrieval engine or the user interface.  Five
  271. problems or preferences served as the basis for defining CD-RDx:
  272.  
  273. (1)  Historically, all data, indexes to the data and software to
  274.      access the data on CD-ROM have been bundled.  This has
  275.      fostered the development of more than one hundred software
  276.      programs and at least 1,000 commercially available CD-ROM
  277.      applications.  Each software program and/or database on CD-ROM
  278.      is unique, and therefore the installation programs and user
  279.      interfaces are also unique.  This situation oftentimes forces
  280.      the CD-ROM user to acquire unique hardware per application, to
  281.      modify the computer's environment upon installation of each
  282.      application, and to learn a new user interface per
  283.      application.
  284.  
  285. (2)  The CD-ROM user should interact only with the user interface
  286.      software when seeking read-only data.  All functions beyond
  287.      the user interface, are, therefore transparent to the user,
  288.      who may not, or need not be concerned with how the data is
  289.      accessed, searched or retrieved.
  290.  
  291. (3)  The growing sophistication of relational database management
  292.      systems provides for a Client/Server architecture, which
  293.      separates the functions of the user interface from the
  294.      functions of data access and retrieval.  The CD-RDx standard
  295.      follows this same architecture and stipulates the commands and
  296.      protocols for interaction between the Client and the Server.
  297.  
  298. (4)  The Client or user interface may be developed separately from
  299.      any given retrieval engine.  Each Client may initiate basic
  300.      data access and retrieval commands or may initiate more
  301.      sophisticated commands required for displaying graphics and
  302.      video or for combining the display of text simultaneously with
  303.      audio or video segments.  The Client may be a separate product
  304.      or may come with a CD-ROM software application program.  The
  305.      Client may be upgraded and new features added without
  306.      affecting access to data on a CD-RDx disc.
  307.  
  308. (5)  The Server is developed directly for a specific retrieval
  309.      engine by the software developer.  In fact, for increased
  310.      speed, the Server and the retrieval engine may become one. 
  311.      The Server may be upgraded and new features added without
  312.      affecting the access and display of data on a CD-RDx user
  313.      interface.
  314.  
  315.      The CD-RDx standard defines a set of protocols enabling the
  316. transfer of CD-ROM data between any CD-RDx Client and any CD-RDx
  317. Server.  The standard consists of a set of commands, 2-dimensional
  318. tables and a simple procedure for their use.  CD-RDx replaces the
  319. need for users to learn a new interface for each CD-ROM
  320. application.  CD-RDx requires that software developers construct
  321. Servers for their proprietary retrieval engines.  CD-RDx allows CD-
  322. ROM software developers, publishers or third-party developers to
  323. create new user interfaces or modify existing ones.
  324.  
  325.      The CD-RDx standard assumes the following for each and every
  326. CD-ROM produced and used:
  327.      o    Digital data resides on CD-ROMs in proprietary format.
  328.  
  329.      o    Each CD-ROM Server is available in memory.
  330.  
  331.      o    Selected user interfaces can be enhanced with a library
  332.           of routines to access and manipulate certain kinds of
  333.           digital data residing on a CD-ROM.
  334.  
  335.      o    Every user interface that implements CD-RDx can access
  336.           any CD-ROM database that implements CD-RDx via a Server.
  337.  
  338.      o    CD-RDx Servers accept messages and respond appropriately
  339.           without additional user or user interface involvement.
  340.  
  341.      o    A database structure (index) can be improved and
  342.           additions made without affecting the user interface
  343.           programs.  Conversely, a user interface program can be
  344.           improved and additions made without affecting the
  345.           database structure.
  346.  
  347.      o    The CD-RDx Protocol/CD-ROM database combination is a
  348.           black box approach used extensively throughout the
  349.           computer industry and is known and accepted by software
  350.           developers.
  351.  
  352.  
  353.      o    Communication between a Server and  user interface occurs
  354.           using English-like messages in ASCII text format.
  355.  
  356.      o    The data accessed and retrieved from a CD-ROM complying
  357.           with the CD-RDx standard may be alphanumeric, audio,
  358.           still or animated graphics, raster or vector images,
  359.           video, tagged or non-tagged data, compressed or
  360.           decompressed images.  The ability to access and display
  361.           each or all of these formats is dependent on the
  362.           capabilities of the Client.  The ability to retrieve each
  363.           or all of these formats is dependent on the capabilities
  364.           of the Server.
  365.  
  366. 5.  FORMAT FOR CD-RDx PROTOCOLS
  367.  
  368.      5.1  Server Structures
  369.  
  370.      As with most database management systems, the basic unit of
  371. reference is the record.  Records are composed of one or more
  372. fields of related information.  Fields may contain fielded data,
  373. structured text, full text data, graphics, audio, video, tagged or
  374. non-tagged data, compressed or decompressed data.  Some retrieval
  375. engines require that all fields appear in every record, that the
  376. fields appear in a particular order, or that fields occur only
  377. once.  Some retrieval programs do not have such limitations.
  378.  
  379.      Fielded data is normally organized with a uniform record
  380. model.  In this type of environment, data is organized such that
  381. every record contains the same fields, in the same order.
  382.  
  383.      Structured text (such as laws, regulations, technical
  384. documentation and specifications) often implies a method that
  385. represents the content as a series of fields.  The developer
  386. typically starts with the lowest level of the text, and works
  387. upward.  When completed, the records contain a collection of fields
  388. that describe the structure (e.g., Book, Chapter and Section), and
  389. a single field that contains the text of that element.  The level
  390. of detail of the structure is determined by the developer or the
  391. requirements for the developer.
  392.  
  393.      Full text data, unlike structured text, rarely implies a
  394. fielding strategy through structure alone.  With full text data,
  395. the developer must rely on a logical content model, rather than on
  396. a predetermined structure.
  397.  
  398.      All written communication has structure in the form of words,
  399. sentences, and paragraphs.  Based on experimentation with the
  400. database, the developer can determine a logical principle that will
  401. aid in the rapid recall of information.  For example, almost all
  402. documents have a meaningful paragraph structure.  When this is the
  403. case, the developer might determine that every paragraph should be
  404. in a separate record.  In another instance, the developer may
  405. decide that the entire document should be indexed as a single
  406. record.  These decisions may then be implemented as Document Type
  407. Definitions (DTDs) and the data tagged according to SGML
  408. (Standardized General Markup Language) or a proprietary tagging
  409. scheme.
  410.  
  411.      Typically, a CD-ROM database is composed of a series of
  412. records.  Records contain a series of fields.  A field within a
  413. record can be as large as the available CD-ROM disc space or can be
  414. limited in size.  In order to process a record of indefinite size,
  415. each record is divided into a series of sub-records.  Each field,
  416. present in the record, has one or more sub-records.  Each sub-
  417. record contains a certain number of characters. 5.2Objects and Tables
  418.  
  419.      As a low-level tool, the protocols can be interpreted under
  420. both a procedural and an object metaphor.  The CD-RDx Protocols are
  421. a system of objects (or tables) that behave in a similar way.
  422.  
  423.      In the context of a procedural programming methodology,
  424. messages to the Server can be thought of as commands to a highly
  425. integrated parser.  The object model allows the programmer to treat
  426. all requests sent to the parser in a similar way.  This allows the
  427. developer to create a small family of functions that format command
  428. strings for execution and return results to the calling module. 
  429. For example, many applications require the ability to browse lists
  430. of available indexes or fields while selecting specific members of
  431. the list.  Since all of these objects respond to the same messages,
  432. the same module can be used to format command strings, and
  433. interpret results.  Other aspects of the system behave in similar
  434. ways.
  435.  
  436.      For OOP users, the CD-RDx Protocols provide the elements of a
  437. Server Class.  The developer can produce a class using these
  438. elements that models the Server Object required for the specific
  439. application.  The Server can be tailored to the Class concept that
  440. suits the developer's ideology.
  441.  
  442.      Whatever the model, all the objects in the CD-RDx Protocols
  443. can be thought of as two-dimensional tables.  A table is a list of
  444. rows and columns.  Each row is a different member consisting of a
  445. set of columns called attributes.  For example, the INDEXLIST
  446. object is a table in which each row contains an index description,
  447. and the columns give the attributes of that index.  The same
  448. rationale is applied to all of the other object types described in
  449. this standard.
  450.  
  451.      Each object contains zero or more elements (according to the
  452. specific instance of the object).  Each object has different data
  453. available.  For example, a data record object (RECORD) is a series
  454. of sub-records.  Each element has a field name, and length
  455. associated with it as well as the actual data.  
  456.  
  457.      Each object instance must be opened (see OPEN message) before
  458. using that instance.  Access is terminated with the CLOSE message. 
  459. Some objects are associated with other objects.  When these objects
  460. are opened, access to associated objects is implied.  In
  461. particular, a database object has six associated objects, a
  462. DATASETLIST, a FIELDLIST, an INDEXLIST, an OPENRECORDLIST, an
  463. OPENKEYLIST, and an OPENRECORDSETLIST.
  464.  
  465.      5.3  Currency
  466.  
  467.      To ease the management of many instances of similar objects,
  468. the CD-RDx Protocols includes the concept of currency.  The
  469. messages sent to the Server are received by the current instance of
  470. the named object.  This allows the developer to have many instances
  471. of an object active without complicating the massaging system.
  472.  
  473.      The Database keeps track of currency for each object.  There
  474. are two types of currency.  The first type is member currency.  In
  475. each open object instance, the current member is kept for use with
  476. the GET message and the PREV, NEXT and CURR modifiers.  For
  477. example, the message:
  478.  
  479.      GET FIELDLIST CURR > NAME(30)
  480.  
  481. will ask the FIELDLIST object the name of the current member of the
  482. field list.  The GET and SEEK messages automatically update member
  483. currency.
  484.  
  485.      The second type of currency is object currency.  When there is
  486. more than one instance of an object type, the Server keeps track of
  487. which object is current.  The action of many of the messages is
  488. based on the current instance of an object.  The user can change
  489. object currency by using the CURRENT message.  Object currency is
  490. automatically updated with the OPEN and CREATE messages.  
  491.  
  492.      Whenever an object is opened or created, it becomes the
  493. current object of that type.  When an object with associated
  494. objects is made current (or opened or created), its associated
  495. objects are also made current.  
  496.  
  497.     5.4  Object Summary
  498.  
  499.      The following objects exist in the CD-RDx Protocols:
  500.  
  501. DATABASELIST        A table of all open databases.  Each element
  502.                     is a description of an open database.
  503.  
  504. FIELDLIST           A table of all available fields for the
  505.                     current database.
  506.  
  507. INDEXLIST           A table of all available indexes for the
  508.                     current database.
  509.  
  510. DATASETLIST         A table of all available datasets for the
  511.                     current database.  
  512.  
  513. DATASETFIELDLIST    A table of all available fields given the
  514.                     current dataset configuration.
  515.  
  516. FIELDDATASETLIST    A table of all available datasets given the
  517.                     current field configuration.
  518.  
  519. RECORD              A list of all sub-records in an open RECORD
  520.                     conforming to the current field configuration.
  521.  
  522. OPENRECORDLIST      A table of all open record descriptions for
  523.                     the current database.
  524.  
  525. RECORDSET           A table of all record numbers in an open
  526.                     RECORDSET.
  527.  
  528. OPENRECORDSETLIST   A table of all record set descriptions for the
  529.                     current database.
  530.  
  531. KEYLIST             An alphabetical list of all keys from an open
  532.                     index.
  533.  
  534. OPENKEYLIST         A table of all open KEYLIST descriptions for
  535.                     the current database.
  536.     5.5  Message Types
  537.  
  538.      The following messages exist in the CD-RDx Protocols:
  539.  
  540. OPEN           Prepares the named object for access.  This message
  541.                applies only to DATABASE, RECORD, and KEYLIST
  542.                objects types. The OPEN message also establishes
  543.                currency within the object.
  544.  
  545. CLOSE          Terminates access to an object and removes the
  546.                object from memory.
  547.  
  548. SELECT         Adds the named FIELDS or DATASETS to the list of
  549.                currently selected objects of the same type. The
  550.                FIELDS selection modifies the list of FIELDS that
  551.                will be returned on subsequent GET RECORD requests. 
  552.                The DATASET selection modifies the available set of
  553.                records subsequent FIND messages will operate on.
  554.  
  555. REMOVE         Removes the named FIELDS or DATASETS from the list
  556.                of currently selected objects of that type. See
  557.                SELECT.
  558.  
  559. GET            Retrieves data from an object as specified in the
  560.                info list description of each object.
  561.  
  562. SEEK           Positions the currency pointer within an object
  563.                according to the associated key.
  564.  
  565. CREATE         Creates a new RECORDSET object, sets currency, and
  566.                readies for subsequent FIND messages.
  567.  
  568. DELETE         Deletes a RECORDSET object from memory.
  569.  
  570. CLEAR          Resets a RECORDSET object to an empty state.
  571.  
  572. FIND           Locates the specified key and updates the current
  573.                record set with the new occurrence information.
  574.  
  575. RECORDSET      Performs record set management.
  576.  
  577. CURRENT        Establishes currency for the specified object type. 
  578.                This applies to databases, records, keylists, and
  579.                record sets.
  580.     5.6  Modifiers
  581.  
  582.      The following modifiers exist in the CD-RDx Protocols:
  583.  
  584. CURR      Returns the currently selected instance of the specified
  585.           object
  586.  
  587. FIRST     Sets the currency pointer for the named object to the
  588.           first element before executing the requested operation.
  589.  
  590. LAST      Sets the currency pointer for the named object to the
  591.           last element before executing the requested operation.
  592.  
  593. NEXT      Sets the currency pointer for the named object to the
  594.           next element before executing the requested operation. 
  595.  
  596.           If the end of the list is reached, a warning will be
  597.           returned and currency will be wrapped around to the
  598.           beginning of the list. The next call will return the
  599.           first element in the list.
  600.  
  601. PREV      Sets the currency pointer for the named object to the
  602.           previous element before executing the requested
  603.           operation. 
  604.  
  605.           If the beginning of the list is reached, a warning will
  606.           be returned and currency will be wrapped around to the
  607.           end of the list. The next call will return the last item
  608.           in the list.
  609.  
  610. COUNT     Returns the number of instances or items in the named
  611.           object list.
  612.     5.7  Message Summary
  613.  
  614.      The following is a summary of the messages that exist in the
  615. CD-RDx Protocols:
  616.  
  617.      Message Type        Object Types             Modifiers
  618.  
  619.      OPEN (O)            DATABASELIST (DBL)       FIRST
  620.      CLOSE               INDEXLIST                LAST
  621.      SELECT (SEL)        FIELDLIST                NEXT
  622.      REMOVE (REM)        DATASETLIST              PREV
  623.      GET (G)             OPENRECORDSETLIST        CURR
  624.      SEEK (SK)           OPENRECORDLIST           THROUGH
  625.      CREATE (CR)         OPENKEYLIST              COUNT
  626.      DELETE              RECORD (REC)             OR
  627.      FIND (F)            KEYLIST (KL)             AND
  628.      RECORDSET (REC)     RECORDSET (RECSET)       NOT
  629.      CURRENT (CUR)       DATASET (DS)             XOR
  630.      CLEAR (CLR)         FIELD                    PROX(##)
  631.                          DATABASE (DB)            ADJ
  632.                          DATASETFIELDLIST         LIKE
  633.                          FIELDDATASETLIST         [name]
  634.                                                   '[id]
  635.  
  636.      The parentheses indicate abbreviations for the message or
  637. object type.  Most of the messages have the following format:
  638.  
  639.                MESSAGETYPE    OBJECTTYPE    MODIFIER
  640.  
  641.      The modifier refers to additional information which is
  642. MESSAGETYPE specific.  Modifiers are parsed according to a few
  643. rules.  There are several special characters.  These are comma,
  644. space, ;, *, ?, ', `, \, and  >.
  645.  
  646.      The comma and spaces are delimiters.  The semicolon is a
  647. terminator.  The asterisk and question mark are wild cards.  The
  648. single quote and back slash are used to place multiple words or
  649. special characters into text strings.
  650.  
  651.      To put these characters in a text string, they must be in
  652. single quotes or preceded by a back slash (\).  To use the
  653. asterisks (*) or question mark (?) or single quote ('), the back
  654. slash is used first.
  655.  
  656.      The (`) character is used as an abbreviation to speed up some
  657. operations.  For instance, when a field name (or index name or
  658. dataset name) is required in the syntax of a message, the field ID
  659. (or index id or dataset id) can be used in its place (e.g.  SELECT
  660. FIELD `1).  
  661.  
  662.      The > symbol specifies the beginning of an information list.
  663. The individual messages are described below.
  664.      5.8  Information Lists
  665.  
  666.      The GET, SEEK and CURRENT messages can return information to
  667. the data area provided by the programmer (the results parameter). 
  668. The user supplies a list of data names which are appropriate for
  669. the object type and the message.  The information list follows the
  670. special '>' character in the message.  The information list has the
  671. following format:
  672.  
  673.      DATANAME1(size[,format]),DATANAME2(size[,format]), ...  ;
  674.  
  675.      The DATANAMEn is a selection from the list of available
  676. information.  There are two parameters for each data name.  The
  677. first is the field size and is required.  The second describes the
  678. string formatting for the returned data.  Valid data formats
  679. include the following: T for text (default), C for C type strings
  680. (left justified, null terminated), and P for PASCAL strings (left
  681. justified, with the first byte being the length byte).  For
  682. example:
  683.  
  684.      > NAME(30),ID(4);
  685.  
  686. is an info list specifying that the NAME field will be 30
  687. characters in length.  If the actual data is shorter than 30
  688. characters, then it will be padded with spaces.  If it is longer
  689. than 30 characters, then only the first 30 characters will be
  690. transferred.  The same is true for the four character ID field.  
  691.  
  692.      The second parameter is the data format and is optional.  This
  693. allows the user some flexibility since the source language for the
  694. Client program may require special handling.  For example:
  695.  
  696.      > NAME(30,C),ID(4,C);
  697.  
  698. is an information list which again asks for NAME and ID fields but
  699. requests that the data be returned in C string format (NULL
  700. terminated strings).  It also means that only 29 bytes, and 3 bytes
  701. respectively will at most contain data.  There will always be a
  702. NULL byte at the end of the string.
  703.  
  704.      Another format is PASCAL strings.  These strings contain a
  705. length byte at the beginning of every string.  The same rule
  706. applies to PASCAL strings as to C strings.  One extra byte will be
  707. needed.  The length parameter always indicates the exact size of
  708. the buffer.  The P format is used to request a PASCAL string.
  709.  
  710. 6.  MESSAGE DESCRIPTIONS
  711.  
  712.      All messages yield a return code.  This is a short (16 bit)
  713. integer value.  A return code of zero indicates that the function
  714. was performed correctly.  A positive return code is a warning
  715. message.  This means that the message worked properly but there is
  716. no data returned.  This is usually an end of table message.  A
  717. negative number indicates that some sort of error occurred.  See
  718. Appendix B for the list of possible error codes. 
  719.  
  720.      The GET, SEEK and CURRENT messages also return database
  721. information.  The information received depends on the object type
  722. and the information list requested.  The information list is
  723. optional for these messages.  If there is no information list, then
  724. no additional information is returned.
  725.  
  726.      The detailed format for each message of the CD-RDx Protocols
  727. follows.
  728.  
  729.      6.1  OPEN
  730.  
  731.      The OPEN message will open and initialize selected objects for
  732. use by a Client application.  The objects are DATABASE, KEYLIST and
  733. RECORD.  A name is always associated with each 'OPEN' object so
  734. that it may be referenced by the 'CURRENT' message.  All open
  735. messages will return the name string upon completion without error.
  736.  
  737. - OPEN DATABASE dbname filepath [encryption key];
  738.  
  739.      Opens the database indicated by the 'filepath' parameter and
  740.      assigns the internal name 'dbname' to it. If the character '\'
  741.      is included in the file path it must be duplicated in the
  742.      string.
  743.  
  744.      Example:
  745.           "OPEN DATABASE stamp l:\\stamps\\stampdb"
  746.      
  747.           This message will open the database stampdb and assign
  748.           the local name 'stamp' to the object.
  749.  
  750. - OPEN KEYLIST keyname indexname;
  751.  
  752.      This message opens a keylist (index) for processing. This
  753.      message also establishes currency for the keylist.
  754.  
  755.      Example:
  756.           "OPEN KEYLIST k1 'word list'"
  757.  
  758. - OPEN RECORD recname rec#;
  759.  
  760.      This message opens a record identified by rec# and assigns the
  761.      name 'recname' to it.  Record currency is established.
  762.      Example:
  763.                
  764.           "OPEN RECORD rec1 `1"
  765.      
  766.           This message will open the first record and set currency
  767.           to the first sub-record for subsequent "GET RECORD"
  768.           messages.
  769.  
  770.      6.2  CLOSE
  771.  
  772.      The CLOSE message will remove the named object from memory. It
  773. is only used with those objects that can be 'OPEN'ed.
  774.  
  775. - CLOSE DATABASE [dbname];
  776.  
  777.      This message will close the named DATABASE.  If no name is
  778.      given, then the current database is closed.
  779.  
  780. - CLOSE KEYLIST [keyname];
  781.  
  782.      This message will close a previously opened KEYLIST identified
  783.      by the keyname.  If no keyname is given, then the current
  784.      keylist is closed.
  785.  
  786. - CLOSE RECORD [recname];
  787.  
  788.      This message will close a previously opened RECORD identified
  789.      by the 'recname'.  If no recname is given, then it will close
  790.      the current record.
  791.      
  792.     6.3  SELECT
  793.  
  794.      The SELECT message marks the specified items as selected and
  795. available for use by the Client application.  Initially, all fields
  796. and datasets are considered selected.  These selected items are
  797. used for various functions inside the Server.  The selected
  798. datasets are used to limit a search to only a selected group of
  799. datasets even if search criteria spans datasets.  The selected
  800. fields are used to return only those selected fields when reading
  801. a record.  The selected lists are NOT to be confused with currency
  802. which is an entirely different concept and function.
  803.  
  804. - SELECT DATASETS ds1,ds2, ..., dsn;     
  805. - SELECT DATASETS *;
  806. - SELECT FIELDS  fld1,fld2, ..., fldn;
  807. - SELECT FIELDS *;
  808.      
  809.      Modify the selected list to contain the items requested.  The
  810.      asterisks (*) indicates all available items are selected.
  811.  
  812.      6.4  REMOVE
  813.  
  814.      The REMOVE message removes items from a selected list in the
  815. same manner that the SELECT message adds them;
  816.  
  817. - REMOVE DATASETS ds1,ds2, ..., dsn;     
  818. - REMOVE DATASETS *;
  819. - REMOVE FIELDS  fld1,fld2, ..., fldn;
  820. - REMOVE FIELDS *;
  821.  
  822.      Modify the selected list to remove the items requested.  The
  823.      asterisks (*) indicates all available items are removed.
  824.  
  825.      6.5  GET
  826.  
  827.      The GET message retrieves information from the object
  828. requested.  Since the current object of the particular type is the
  829. one accessed, currency must be established for that type before
  830. issuing the GET message.  Currency is established by using the
  831. CURRENT message.  The OPEN or CREATE messages also establish
  832. currency when invoked.
  833.  
  834.      The format of the message is as follows:
  835.  
  836.      GET    OBJECTTYPE     MODIFIER [ > info list];
  837.  
  838.      The modifier specifies which action to take on the object
  839. type.  The data returned is a series of strings which identifies
  840. attributes about the selected object member, except the COUNT
  841. modifier which returns a number of members (rows) of the object.
  842.  
  843. - GET DATABASELIST modifier [ > info list];
  844.      Returns an entry or count from the list of open databases. 
  845.      The data returned contains the name of the database, the file
  846.      name, the number of records, and the maximum record size.
  847.  
  848. - GET INDEXLIST modifier [ > info list];
  849. - GET FIELDLIST modifier [ > info list];
  850. - GET DATASETLIST modifier [ > info list];
  851.  
  852.      Returns an entry or count from the list of available indexes,
  853.      fields or datasets.  The data returned includes the name, id,
  854.      and type.
  855.  
  856. - GET OPENRECORDSETLIST modifier [ > info list];
  857.  
  858.      Returns an entry or count from the list of open record set
  859.      names.
  860.  
  861. - GET OPENRECORDLIST modifier [ > info list];
  862.  
  863.      Returns an entry or count from the list of open records.
  864.  
  865. - GET OPENKEYLIST modifier [ > info list];
  866.  
  867.      Returns an entry or count from the list of open key lists.
  868.  
  869. - GET RECORD modifier [ > info list];
  870.  
  871.      Returns a sub-record or count from the current record.
  872.  
  873. - GET KEYLIST modifier [ > info list];
  874.  
  875.      Returns a key item or count from the current key list.
  876.  
  877. - GET RECORDSET modifier [ > info list];
  878.  
  879.      Returns a record number or count from the current record set.
  880.  
  881. - GET DATASETFIELDLIST modifier [ > info list];
  882.  
  883.      Returns a field or count from the list of fields for the
  884.      current dataset.
  885.  
  886. - GET FIELDDATASETLIST modifier [ > info list];
  887.  
  888.      Returns a dataset or count from the list of datasets for the
  889.      current field.
  890.  
  891.      6.6  SEEK
  892.  
  893.      The SEEK message positions the current pointer in the object
  894. to the item specified in data.  The format of the message is:
  895.  
  896.      SEEK OBJECTTYPE  data [ > info list];
  897.  
  898. - SEEK DATABASELIST dbname;
  899. - SEEK INDEXLIST indexname;
  900. - SEEK FIELDLIST fieldname;
  901. - SEEK DATASETLIST datasetname;
  902. - SEEK OPENRECORDSETLIST recordsetname;
  903. - SEEK OPENRECORDLIST recordname;
  904. - SEEK OPENKEYLIST indexname;
  905. - SEEK RECORD FIELD fieldname;
  906. - SEEK RECORD SUBREC sub-recordnumber;
  907. - SEEK RECORDSET sequence-number;
  908.  
  909.      There is a special case of the SEEK message as it relates to
  910. KEYLISTs.  The KEYLIST may be SEEKed on a portion of the keyvalue. 
  911. If the key is not found, the Server will return the keyvalue that
  912. is one greater than the requested result, or end-of-table if the
  913. request places the currency pointer outside of the list.  The info
  914. list for the KEYLIST includes an indicator for an exact match.
  915.  
  916. - SEEK KEYLIST keyvalue;
  917.  
  918.      6.7  CURRENT
  919.  
  920.      The CURRENT message establishes the object type instance which
  921. will be current for that object.  It also can be used to indicate
  922. the current search mode.  The format is:
  923.  
  924.      CURRENT objtype name [ > info list];
  925.  
  926. - CURRENT DATASET datasetname;
  927. - CURRENT FIELD fieldname;
  928. - CURRENT RECORD recordname;
  929. - CURRENT RECORDSET recordsetname;
  930. - CURRENT DATABASE dbname;
  931. - CURRENT KEYLIST keyname;
  932. - CURRENT INDEX indexname;
  933.  
  934.      6.8  CREATE
  935.  
  936.      The CREATE message creates an instance of an object type. 
  937. Most objects are already present in this database system and do not
  938. have to be created.  The one type which must be created is the
  939. RECORDSET.
  940.  
  941.      CREATE RECORDSET recordsetname;
  942.  
  943.           This message creates a recordset for the current
  944.           database.  It is assigned the name 'recordsetname', added
  945.           to the OPENRECORDSETLIST, and made the current RECORDSET.
  946.  
  947.      6.9  DELETE
  948.      The DELETE message deletes an instance of an object. 
  949. Currently, the only object which can be deleted is a RECORDSET.
  950.  
  951.      DELETE RECORDSET [recordsetname];
  952.  
  953.           This message deletes the current record set or the record
  954.           set specified by 'recordsetname'.
  955.  
  956.      6.10 CLEAR
  957.  
  958.      The CLEAR message resets an object to empty.  The only object
  959. currently clearable is a record set.
  960.  
  961.      CLEAR RECORDSET [recordsetname];
  962.  
  963.           This message empties the current record set or the record
  964.           set specified by 'recordsetname'.
  965.  
  966.      6.11 FIND
  967.  
  968.      The FIND message performs a search for the key within the
  969. current KEYLIST.  The search always updates the current record set
  970. with the result of the search.
  971.  
  972.      FIND [boolean op] keyvalue       * and ? are wildcards
  973.  
  974.           Searches for a key value for the current index or set of
  975.           indexes and uses the boolean operator to update the
  976.           current record set.  If no boolean operator is specified,
  977.           then the OR operator is assumed.  An asterisk (*) is a
  978.           wildcard character meaning 0 or more characters, a
  979.           question mark (?) is a wildcard character meaning a
  980.           single character replacement.
  981.  
  982.      FIND [boolean op] keyvalue1 THROUGH keyvalue2
  983.                                        ->
  984.  
  985.           Searches for a range of values.
  986.  
  987.  
  988.      FIND [boolean op] =
  989.                             >
  990.                             >=    keyvalue
  991.                             <
  992.                             <=
  993.  
  994.           Provides relational searching.  The '=' is the same as
  995.           format 1 above.  The others provide a range searching
  996.           capability from the keyvalue to the beginning or end of
  997.           the keylist.
  998.  
  999.      6.12 RECORDSET
  1000.      The RECORDSET message is used to perform operations between
  1001. the current RECORDSET and another open RECORDSET set or use the NOT
  1002. operator to remove the current RECORDSET.
  1003.  
  1004. - RECORDSET [boolean op] recordsetname;
  1005.  
  1006.      This message will use the boolean operator (the OR is used if
  1007.      not specified) to merge the indicated record set
  1008.      'recordsetname' with the current record set.
  1009.  
  1010. - RECORDSET NOT
  1011.  
  1012.      This message will reverse the current record set.
  1013.  
  1014. - RECORDSET SELECT recordnumber [THROUGH recordnumber2]
  1015. - RECORDSET REMOVE recordnumber [THROUGH recordnumber2]
  1016.  
  1017.      This message will add records to (SELECT) or take away records
  1018.      from (REMOVE) the current record set.
  1019.  
  1020.      6.13 LOGIN
  1021.  
  1022.      The LOGIN command is analogous to the way many mainframe
  1023. systems handle security.  The syntax is as follows:
  1024.  
  1025.      LOGIN     userid/password/key
  1026.  
  1027.      All of the functionality for security is handled by the
  1028. Server.  This includes selective access to various databases and/or
  1029. parts of databases.  It also includes encryption.  The user should
  1030. never be aware that any particular database, to which access is not
  1031. available, even exists.  INDEXLIST, DATASETLIST, FIELDLIST, etc.
  1032. should reflect only the ones available and should provide no clues
  1033. that others do or do not exist.  How the access for individual
  1034. users is specified is left up to the implementation.  An optional
  1035. LOGOUT command can also be specified to remove the current access
  1036. profile.
  1037.  
  1038.      6.14 SERVERLIST
  1039.  
  1040.      A table called the SERVERLIST is a list of available Servers. 
  1041. For most systems, only one Server will be available.  The purpose
  1042. in providing this table is to allow the user and the Client to
  1043. obtain pertinent information about the current Server, as indicated
  1044. below.  By default, the SERVERLIST should contain the Server name,
  1045. maximum open databases, maximum open records, etc.  It should allow
  1046. the Client to obtain information about the current environment. 
  1047. The SERVERLIST could be used to determine, which of many Servers is
  1048. available.  The CURRENT command (such as CURRENT SERVER servername)
  1049. is used to establish the Server to be used.  This would allow a
  1050. Client program to access databases from many different vendors at
  1051. the same time.
  1052.      Specifications for each CD-ROM application should appear
  1053. automatically on screen, in printed matter that accompanies the CD-
  1054. ROM application, and would include the following information at a
  1055. minimum(All data is for example only):
  1056.  
  1057.      Data Contents:      Text, graphics, maps, audio, video, etc. 
  1058.      Data Index:         Inverted, Keyword, Boolean, etc.
  1059.      Proximity/Adjacency:Yes or No
  1060.      Stop Words:         Yes or No
  1061.      Scope of Index:     All words, stop list, graphics, etc.
  1062.      Server:   
  1063.           Copyright Company:       Dataware, Fulcrum, SilverPlatter
  1064.           Server Name:             CDAnswer, ROMWARE, Folio, etc.
  1065.           Max Open Databases:      500, 5, 27, etc
  1066.           Max Open Records:        500, 5, 27, etc
  1067.           Memory Requirements:     215 Kbytes
  1068.           Other Information:       
  1069.      Standards compliancy:
  1070.           Operating Environment:   MS-DOS, OS/2, UNIX, Macintosh
  1071.           CD-ROM Reader:           Yellow book
  1072.           CD-ROM Disc Vol/File:    ISO 9660, HSG, Proprietary
  1073.           CD-ROM Access Protocol:  CD-RDx
  1074.           Data Structure:          8211, SGML, 3-D Bit Mapped
  1075.           Server Protocol:         CALS, etc.
  1076.           Data Item:               None, DoD xxxxxxx, etc.
  1077.           Data Element:            None, DoD xxxxxxx, etc.
  1078.           Other Standards:         MIL-STD-28001, etc.
  1079.           Other Information:       xxxxxxx (FREE FORM to EOF).
  1080.  
  1081.      6.15 Table of Contents Processing
  1082.  
  1083.      The object of the Server is to provide access to the data in
  1084. a database in a consistent manner.  The commands should be simple
  1085. and as independent from each other as possible.  In a n-way tree
  1086. structure, each block has n rows which potentially point to n
  1087. blocks at the next lower level.  Each of these blocks also contains
  1088. an indefinite number of rows, each of which may point to a lower
  1089. level block, and so on.  The following commands will be available:
  1090.  
  1091.      OPEN TOC name            This command opens to the Table of
  1092.                               Contents block at the next level
  1093.                               from the current block and current
  1094.                               row.
  1095.  
  1096.      CLOSE TOC name           Close the named TOC block.
  1097.  
  1098.      CURRENT TOC name         Make the named TOC block the current
  1099.                               block.
  1100.  
  1101.                NEXT
  1102.                PREV
  1103.      GET TOC   CURR           Get data within TOC block.
  1104.                FIRST
  1105.                LAST
  1106.  
  1107.      SEEK TOC row#            Position to a row number.
  1108.  
  1109.      The first level of the table of contents can either be opened
  1110. automatically when the database is opened and given a reserved
  1111. name, or it can require the Client to open the first level and
  1112. assign its own name.
  1113.  
  1114.      Another table, the OPENTOCLIST table, is also provided which
  1115. contains a list of open TOCs.
  1116.  
  1117.      This system is analogous to the rest of the Server.  This
  1118. OPENTOCLIST is exactly equivalent to the OPENRECORDLIST.  Opening
  1119. TOC blocks is equivalent to opening records.  Only the exact manner
  1120. of opening is different and this is because of the hierarchical
  1121. nature of the table of contents.  A Client can access the table of
  1122. contents data in many different ways without overburdening the
  1123. Server with lots of overhead to keep track of.
  1124. 7.  Server OUTPUT
  1125.  
  1126.      The data items available for a given request depend on the
  1127. object type and the message.  There are eleven different
  1128. information list types.  The following describes each information
  1129. list type and which messages return it.
  1130.  
  1131.      7.1  Field Description Information
  1132.  
  1133.           Returned by GET/SEEK FIELDLIST or CURRENT FIELD.
  1134.  
  1135.           Data Name      Data Size      Values
  1136.           NAME              50          Defined name of the field
  1137.           ID                 4          Field id 1-255
  1138.           SEL                1          Y/N (field selected)
  1139.           DTYPE              8          Data type (See Appendix 
  1140.                                         F for more information.)
  1141.           MVALUE             1          Y/N (Multi-valued)
  1142.           FORM               4          Date form or number size
  1143.           SIZE               4          Field size
  1144.           DECIMAL            4          Number of decimal pos
  1145.  
  1146.      7.2  Dataset Description Information
  1147.  
  1148.           Returned by GET/SEEK DATASETLIST or CURRENT DATASET.
  1149.  
  1150.           Data Name      Data Size      Values
  1151.           NAME              16          Defined dataset name
  1152.           ID                 4          Dataset id 1-255
  1153.           SEL                1          Y/N (dataset selected)
  1154.           STREC             10          Starting Record number
  1155.           ENDREC            10          Ending Record number
  1156.  
  1157.      7.3  Index Description Information
  1158.  
  1159.           Returned by GET/SEEK INDEXLIST or CURRENT INDEX.
  1160.  
  1161.           Data Name      Data Size      Values
  1162.           NAME              32          Defined index name
  1163.           ID                 4          Index id 1-255
  1164.           ITYPE              1          Index type (W or I) 
  1165.           STEM               1          Y/N (stemming)
  1166.           DTYPE              1          Index data type (C,N,D)
  1167.           COUNT             10          Number of keys
  1168.  
  1169.     7.4  Database Description Information
  1170.  
  1171.           Returned by GET/SEEK DATABASELIST or CURRENT DATABASE.
  1172.  
  1173.  
  1174.           Data Name      Data Size      Values
  1175.           NAME              16          DB name (OPEN DB message)
  1176.           PATH              70          Actual file & path name
  1177.           NRECS             10          Number of records in DB
  1178.           MAXREC            10          Maximum record size in DB
  1179.           DATAID            80          Defined Data ID field
  1180.           OWNERID           80          Defined Owner ID field
  1181.           PUBID             80          Defined publishers id
  1182.  
  1183.      7.5  Open Record Description Information
  1184.  
  1185.           Returned by GET/SEEK OPENRECORDLIST or CURRENT RECORD.
  1186.  
  1187.           Data Name      Data Size      Values
  1188.           NAME              16          Record name (OPEN REC)
  1189.           DSID               4          Dataset ID of the record
  1190.           RECNUM            10          Record number
  1191.           RECSIZE           10          Record size
  1192.  
  1193.      7.6  Open Keylist Description Information
  1194.  
  1195.           Returned by GET/SEEK OPENKEYLIST or CURRENT KEYLIST.
  1196.  
  1197.           Data Name      Data Size      Values
  1198.           NAME              16          Keylist name (OPEN KL)
  1199.           IDXID              4          Index id
  1200.           ITYPE              1          Index type (W or I)
  1201.           DTYPE              1          Index data type (C,N,D)
  1202.  
  1203.      7.7  Open Recordset Description Information
  1204.  
  1205.           Returned by GET/SEEK OPENRECORDSETLIST or CURRENT
  1206.           RECORDSET.
  1207.  
  1208.           Data Name      Data Size      Values
  1209.           NAME              16          Recordset name (CREATE)
  1210.           COUNT             10          # of records in RECSET
  1211.  
  1212.     7.8  Record Set Information
  1213.  
  1214.           Returned by GET/SEEK RECORDSET.
  1215.  
  1216.           Data Name      Data Size      Values
  1217.           NUMBER            10          Record number
  1218.           SEQ               10          Record sequence
  1219.  
  1220.      7.9  Record Information
  1221.  
  1222.           Returned by GET/SEEK RECORD.
  1223.  
  1224.           Data Name      Data Size      Values
  1225.           SUBREC           255          Sub-record data
  1226.           SRTYPE             1          Sub-record type
  1227.                                    (S-start field, C-cont field)
  1228.           FLDID              4          Field id of sub-record
  1229.           SRLEN              4          Sub-record length
  1230.           SRNUM              4          Sub-record number
  1231.  
  1232.      7.10 Key Information
  1233.  
  1234.           Returned by GET/SEEK KEYLIST.
  1235.  
  1236.           Data Name      Data Size      Values
  1237.           KEY               52          Key value
  1238.           COUNT             10          Number of records.
  1239.           FREQ              10          Frequency
  1240.           EXACT              1          Y/N (exact match)
  1241.  
  1242.      EXACT is always 'Y' with the GET message.  With the SEEK
  1243. message, EXACT can be 'Y' indicating an exact match or 'N'
  1244. indicating a partial match.
  1245.  
  1246.      7.11 Count Information
  1247.  
  1248.           Returned by GET objtype COUNT.
  1249.  
  1250.           Data Name      Data Size      Values
  1251.           COUNT               10        Number of members
  1252.     Appendix A:    Error Messages
  1253.  
  1254.      All messages yield a return code.  This is a short (16 bit)
  1255. integer value plus 30 bytes for  message text from server (i.e.
  1256. Volume Identifier for -402).  A return code of zero indicates that
  1257. the function was performed correctly.  A positive return code is a
  1258. warning message.  This means that the command worked properly but
  1259. there is no data returned.  This is usually an end of table
  1260. message.  A negative number indicates that some sort of error
  1261. occurred.
  1262.  
  1263.                Name                     Code
  1264.  
  1265.                ERR_no_error             0
  1266.                Text: No Error
  1267.           
  1268.           General Errors
  1269.      
  1270.                ERR_par_syntax           -1
  1271.                ERR_par_cmd              -2
  1272.                ERR_par_obj              -3
  1273.                ERR_not_init             -4
  1274.                ERR_no_current_db        -5
  1275.                ERR_syntax_err           -6
  1276.                ERR_mem_fail             -7        
  1277.                ERR_already_init         -8
  1278.                ERR_par_mod              -9
  1279.                ERR_db_not_found         -10
  1280.                ERR_invalid_obj          -11
  1281.                ERR_dataset_not_found    -12
  1282.                ERR_index_not_found      -13
  1283.                ERR_field_not_found      -14
  1284.                ERR_record_not_found     -15
  1285.                ERR_keylist_not_found    -16
  1286.                ERR_recordset_not_found  -17
  1287.                ERR_no_keyfile           -18
  1288.      
  1289.           OS Errors
  1290.      
  1291.                ERR_os_open_err          -100
  1292.                ERR_os_read_err          -101
  1293.                ERR_os_seek_err          -102
  1294.      
  1295.           Dictionary Errors
  1296.      
  1297.                ERR_dict_fail            -200
  1298.  
  1299.           Open/Close File Errors
  1300.      
  1301.                ERR_max_dbs_exc          -300
  1302.                ERR_max_oprecs_exc       -301
  1303.                ERR_no_current_rec       -302
  1304.                ERR_invalid_recnum       -303
  1305.                ERR_already_opened       -304
  1306.                ERR_max_open_keylist_exc -305
  1307.                ERR_max_rs_exc           -306
  1308.      
  1309.           Access Errors
  1310.      
  1311.                ERR_db_access_denied     -400
  1312.                ERR_invalid_access_file  -401
  1313.                ERR_mount_fault          -402
  1314.      
  1315.           Get Errors/Messages
  1316.      
  1317.                MSG_end_of_table          500
  1318.                MSG_beg_of_table          501
  1319.  
  1320.                ERR_empty_table          -500
  1321.                ERR_no_current           -501
  1322.                ERR_no_keys              -502
  1323.                ERR_key_read_error       -503
  1324.      
  1325.           Seek Errors/Messages
  1326.  
  1327.                ERR_not_found            -600
  1328.                ERR_field_not_selected   -601
  1329.                ERR_seek_error           -602
  1330.                ERR_invalid_sequence     -603
  1331.      
  1332.           Find Errors
  1333.      
  1334.                ERR_no_current_recordset -700
  1335.                ERR_no_current_keylist   -701
  1336.                ERR_invalid_edi          -702
  1337.                ERR_key_not_found        -703
  1338.                ERR_different_dbs        -704
  1339.      
  1340.           VMM Errors
  1341.      
  1342.                ERR_reload_err           -800
  1343.                ERR_unload_err           -801
  1344.  
  1345.           Server Error
  1346.  
  1347.                ERR_server_msg           -900
  1348.      
  1349.           User Interrupt
  1350.  
  1351.                ERR_abort                -999
  1352.  
  1353.  
  1354.  
  1355.  
  1356. More On Error Code
  1357.  
  1358.      The Server returns an error code in addition to whatever
  1359. information is requested.  The following command syntax
  1360. illustrates the error code return.
  1361.  
  1362.  
  1363.      The return code (rc) variable contains the return code.
  1364.  
  1365.      There are three types of return codes.
  1366.  
  1367.      0  - Means there is no error.
  1368.      <0 - Means that the command failed (ERROR).
  1369.      >0 - Means that the command worked but further information
  1370.           is provided (WARNING).
  1371.  
  1372.  
  1373.  
  1374. WARNING CODES
  1375.  
  1376.      There are, presently, two warning messages and both involve
  1377. the GET command.
  1378.  
  1379.           500  -    End_of_table.  This means that a GET table
  1380.                     NEXT command was issued and there are no more
  1381.                     entries.  No Data is returned.
  1382.  
  1383.           501  -    Beg_of_table.  This means that a GET table
  1384.                     PREV command was issued and the current
  1385.                     pointer is at the beginning of the table.  No
  1386.                     Data is returned.
  1387.  
  1388. ERROR CODES
  1389.  
  1390.      There are many error return codes.   They are divided into
  1391. groups as follows:
  1392.  
  1393.      -1 to -50      General Command Errors which may occur in a
  1394.                     number of commands.
  1395.  
  1396.      -100 to -150   DOS I/O errors.  These errors may also occur
  1397.                     in a number of commands.  These are due to
  1398.                     DOS reporting an error in response to an
  1399.                     input request.  This can be the result of
  1400.                     physical media errors, bad hardware,
  1401.                     corrupted copy of DOS, or database integrity
  1402.                     corruption.
  1403.  
  1404.      -200 to -250   Dictionary read errors.  This is usually
  1405.                     caused by the data dictionary file being
  1406.                     corrupted.
  1407.  
  1408.      -300 to -350   Open/Close command errors.  This usually
  1409.                     occurs when the object to be opened or closed
  1410.                     is not present, or the maximum number of open
  1411.                     objects has been exceeded.
  1412.  
  1413.      -400 to -425   Access control errors.  These occur when you
  1414.                     attempt to open a database, to which you do
  1415.                     not have access.
  1416.  
  1417.      -500 to -550   GET errors.  These codes are returned for a
  1418.                     variety of reasons.
  1419.  
  1420.      -600 to -625   SEEK errors.  These codes are returned when a
  1421.                     seek command fails.  The most common reason
  1422.                     is the not found message.
  1423.  
  1424.      -650 to -675   TOC (Table of Contents) errors.  These occur
  1425.                     when access to the Table of contents fails.
  1426.  
  1427.      -700 to -750   FIND errors.  These are issued when the FIND
  1428.                     command fails.
  1429.  
  1430.      -800 to -825   Virtual memory errors.  These are issued when
  1431.                     the unloading or reloading of data fails.
  1432.  
  1433.      -999           User Abort.  The user requests an abort by
  1434.                     pressing ctrl-break.
  1435.  
  1436. Specific Error Messages
  1437.  
  1438. GENERAL ERRORS:
  1439.  
  1440.      -1 (ERR_par_syntax) 
  1441.                Parsing syntax error.  This usually occurs, when
  1442.                the command line is empty or part of the command
  1443.                is missing.  This usually refers to the first two
  1444.                parameters of the command, the command verb and
  1445.                the object.  Errors in the rest of the command are
  1446.                indicated to the (-6) syntax error (see below).
  1447.                ACTION: Correct command syntax.
  1448.  
  1449.      -2 (ERR_par_cmd)
  1450.                Parsing error. Invalid command.
  1451.                ACTION: Use valid command.
  1452.  
  1453.      -3 (ERR_par_obj)    
  1454.                Parsing error. Invalid Object or Table type.
  1455.                ACTION: Use valid table type.
  1456.  
  1457.      -4 (ERR_not_init)
  1458.                The Server has not been initialized or the
  1459.                initialization failed.  This should not happen to
  1460.                client programs.  SYSTEM ERROR.
  1461.  
  1462.      -5 (ERR_no_current_db)
  1463.                There is no current database.  This results when
  1464.                no database has been opened (or the open attempt
  1465.                has failed) and another command is issued.  It can
  1466.                also occur when a database is closed and a new
  1467.                current database has not been established with the
  1468.                CURRENT command.  Most commands require that a
  1469.                database has been opened and is current.
  1470.                ACTION: Be sure that a database is opened and that
  1471.                currency has been established.
  1472.  
  1473.      -6 (ERR_syntax_err)
  1474.                Syntax error.  This indicates an error in the data
  1475.                portion of the command.  This means that the
  1476.                command and object are correct but that the data
  1477.                following is syntactically incorrect.
  1478.                ACTION: Correct command syntax.
  1479.  
  1480.      -7 (ERR_mem_fail)
  1481.                This message occurs anytime memory is required by
  1482.                the Server and is unavailable.  The command
  1483.                failed, usually, somewhere in the middle and the
  1484.                Server objects are not consistent.  It is best to
  1485.                shut down the current operation by deleting the
  1486.                current record sets.  
  1487.                ACTION: The Server needs to be started with more
  1488.                static RAM, more Expanded/Extended memory and/or a
  1489.                virtual disk buffer.
  1490.                               
  1491.  
  1492.      -8 (ERR_already_init)
  1493.                This error occurs when the system initialization
  1494.                is performed while it is currently running.  This
  1495.                should not appear to Client programs.  SYSTEM
  1496.                ERROR.
  1497.  
  1498.      -9 (ERR_par_mod)
  1499.                Invalid command modifier.  A command modifier is
  1500.                fixed text in the syntax of some of the commands,
  1501.                such as NEXT, PREV, etc.
  1502.                ACTION: Correct syntax.
  1503.  
  1504.      -10 (ERR_db_not_found)
  1505.                DB name not found.  This message occurs when the
  1506.                command is expecting an internal database name
  1507.                (assigned when the database is opened, by the OPEN
  1508.                DATABASE command), and the name is not present. 
  1509.                This error could occur from a misspelling because
  1510.                a the database was closed.
  1511.                ACTION: Use the correct name.
  1512.  
  1513.      -11 (ERR_invalid_obj)
  1514.                This error occurs when a command verb attempts an
  1515.                invalid action on an object.  For example,
  1516.                attempting to OPEN a DATABASELIST.
  1517.                ACTION: Check the documentation to be sure you
  1518.                understand the meaning of the command and/or
  1519.                table.
  1520.  
  1521.      -12 (ERR_dataset_not_found)
  1522.                Dataset name is not found.  This message occurs,
  1523.                when the command is expecting a valid dataset name
  1524.                or dataset id number, and it is not present.  It
  1525.                could be from a misspelling or when the wrong
  1526.                database is current.
  1527.                ACTION: Use the correct name or id number.
  1528.  
  1529.      -13 (ERR_index_not_found)
  1530.                Index name is not found.  This message occurs when
  1531.                the command is expecting a valid index name or
  1532.                index id number, and it is not present.  The error
  1533.                could result from a misspelling or when the wrong
  1534.                database is current.
  1535.                ACTION: Use the correct name or id number.
  1536.  
  1537.      -14 (ERR_field_not_found)
  1538.                Field name is not found.  This message occurs,
  1539.                when the command is expecting a valid field name
  1540.                or field id number, and it is not present.  This
  1541.                error could result from a misspelling, or because
  1542.                the wrong database is current.
  1543.                ACTION: Use the correct name or id number.
  1544.  
  1545.      -15 (ERR_record_not_found)
  1546.                Record name is not found.  This message occurs
  1547.                when the command is expecting an internal record
  1548.                name (assigned by the user with the OPEN RECORD
  1549.                command) and it is not present.  It could result
  1550.                from a misspelling, because the wrong database is
  1551.                current, or when the record was closed.
  1552.                ACTION: Use the correct name.
  1553.  
  1554.      -16 (ERR_keylist_not_found)
  1555.                Keylist name is not found.  This message occurs
  1556.                when the command is expecting an internal keylist
  1557.                name (assigned by the user with the OPEN KEYLIST
  1558.                command), and it is not present.  It could result
  1559.                from a misspelling, because the wrong database is
  1560.                current, or when the keylist was closed.
  1561.                ACTION: Use the correct name.
  1562.  
  1563.      -17 (ERR_recordset_not_found)
  1564.                Recordset name is not found.  This message occurs
  1565.                when the command is expecting an internal
  1566.                recordset name (assigned by the user with the OPEN
  1567.                RECORDSET command), and it is not present.  It
  1568.                could result from a misspelling, the wrong
  1569.                database being current, or the recordset was
  1570.                closed.
  1571.                ACTION: Use the correct name.
  1572.  
  1573.      -18 (ERR_no_keyfile)
  1574.                This message occurs, when there is no index files
  1575.                present (the database has not been indexed), and
  1576.                an operation requiring the index files is
  1577.                requested, such as FIND or OPEN KEYLIST.
  1578.                               
  1579.      -19 (ERR_inflist_err)
  1580.                There is a syntax error in the information list
  1581.                provided with the command.  Undefined data items
  1582.                do NOT cause a syntax error.  If a data item is
  1583.                undefined, blanks are returned in the field. 
  1584.                Syntax errors usually occur in the size and type
  1585.                portion of the line.
  1586.  
  1587.  
  1588. OS ERRORS:
  1589.  
  1590.      -100 (ERR_os_open_err)
  1591.                OS has returned an error while attempting to open
  1592.                a file.
  1593.                ACTION: Make sure you have a valid database and
  1594.                media.
  1595.  
  1596.      -101 (ERR_os_read_err)
  1597.                OS has returned an error while attempting to read
  1598.                data from a data file.  This is an internal or
  1599.                media error.
  1600.                ACTION: Make sure you have a valid database and
  1601.                media.
  1602.  
  1603.      -102 (ERR_os_seek_err)
  1604.                OS has returned an error while attempting to
  1605.                position the file pointer.  This is an internal or
  1606.                media error.
  1607.                ACTION: Make sure you have a valid database and
  1608.                media.
  1609.  
  1610.  
  1611. DICTIONARY ERRORS:
  1612.  
  1613.      -200 (ERR_dict_fail)
  1614.                This error occurs, when there is a problem loading
  1615.                or reloading the data dictionary into memory.
  1616.                ACTION: Make sure you have a valid database and
  1617.                media.
  1618.  
  1619. OPEN/CLOSE ERRORS:
  1620.  
  1621.      -300 (ERR_max_dbs_exc)
  1622.                An OPEN DATABASE command is issued, when the
  1623.                maximum number of open databases are already
  1624.                opened.
  1625.  
  1626.      -301 (ERR_max_oprecs_exc)
  1627.                An OPEN RECORD command is issued, when the maximum
  1628.                number of open records are already opened.
  1629.                ACTION: Close one of the open records.
  1630.  
  1631.      -302 (ERR_no_current_rec)
  1632.                An operation requiring a current record is issued
  1633.                and there is no current record.
  1634.                ACTION: Open a record if none are opened, or
  1635.                establish currency (CURRENT command) on a
  1636.                previously existing record.
  1637.  
  1638.      -303 (ERR_invalid_recnum)
  1639.                The record number in an OPEN RECORD command is
  1640.                invalid.
  1641.                ACTION: Use a valid record number.
  1642.  
  1643.      -304 (ERR_already_opened)
  1644.                The internal name supplied with the OPEN table
  1645.                command is currently in use.
  1646.                ACTION: Use a different name or close the object
  1647.                with the name you wish.
  1648.  
  1649.      -305 (ERR_max_open_keylist_exc)
  1650.                An OPEN KEYLIST command is issued when the maximum
  1651.                number of open keylists are already opened.  The
  1652.                current maximum is 10.
  1653.                ACTION: Close one of the open keylists.
  1654.  
  1655.      -306 (ERR_max_open_rs_exc)
  1656.                An OPEN RECORDSET command is issued when the
  1657.                maximum number of open recordsets are already
  1658.                opened.  The current maximum is 30.
  1659.                ACTION: Close one of the open recordsets.
  1660.  
  1661. ACCESS ERRORS:
  1662.  
  1663.      -400 (ERR_db_access_denied)
  1664.                An OPEN DATABASE command was issued for a database
  1665.                for which access is denied.
  1666.                ACTION: Use another database or get access
  1667.                permission.
  1668.  
  1669.      -401 (ERR_invalid_access_file)
  1670.                This is a system error. The access file is
  1671.                corrupted.
  1672.                ACTION: Get new access file.
  1673.  
  1674. GET ERRORS:
  1675.  
  1676.      -500 (ERR_empty_table)
  1677.                The table to which the GET command was directed
  1678.                has no entries.
  1679.                ACTION: This depends on the reason the table is
  1680.                empty.  If it is an OPENxxxLIST, such as
  1681.                OPENRECORDLIST, then open some objects must first
  1682.                be opened.
  1683.  
  1684.      -501 (ERR_no_current)
  1685.                A GET table CURR command is issued and the current
  1686.                entry in a table is not available.  This could
  1687.                occur because the position was not established or
  1688.                it was lost due the GETting passed the end of
  1689.                table of beginning of table.
  1690.                ACTION: Correct program logic.  Make sure that an
  1691.                entry in the table is current.
  1692.  
  1693.      -502 (ERR_no_keys)
  1694.                A keylist is empty or the current dataset
  1695.                selection makes it empty.
  1696.                ACTION: Use more datasets.  Make sure the database
  1697.                was indexed properly.
  1698.  
  1699.      -503 (ERR_key_read_error)
  1700.                The index files in the database are in error.
  1701.  
  1702.  
  1703. SEEK ERRORS:
  1704.  
  1705.      -600 (ERR_not_found)
  1706.                The entry that was the target of the SEEK command
  1707.                is not present in the table.  Check the spelling
  1708.                of an object name or for a number out of range.
  1709.                ACTION: Correct the name or number.
  1710.  
  1711.      -601 (ERR_field_not_selected)
  1712.                This message is returned, when a SEEK RECORD FIELD
  1713.                'fieldname' command is issued and the field in
  1714.                question has been de-selected (REMOVE command).
  1715.                ACTION: Select the field or change fields.
  1716.  
  1717.      -602 (ERR_seek_error)
  1718.                This is an internal error, seeking within a
  1719.                record.
  1720.  
  1721.      -603 (ERR_invalid_sequence)
  1722.                This occurs when a sequence number for a recordset
  1723.                is out of range.
  1724.                ACTION:  Use a correct sequence number.
  1725.  
  1726. TOC ERRORS:
  1727.  
  1728.      -650 (ERR_no_toc)
  1729.                A command for the table of contents is issued but
  1730.                there is no table of contents for this database.
  1731.                ACTION: Do not access the TOC if it does not
  1732.                exist.  This message also allows the Client
  1733.                program to check if the TOC exists.
  1734.  
  1735.      -651 (ERR_no_more_tocs)
  1736.                An OPEN TOC command is issued and the current line
  1737.                of the current TOC block has no branches.
  1738.                ACTION: Check the MORE data field for the current
  1739.                line before issuing an OPEN TOC command for that
  1740.                line.
  1741.  
  1742.      -652 (ERR_no_current_toc_entry)
  1743.                An OPEN TOC command is issued and there is no
  1744.                current entry in the current TOC block.
  1745.                ACTION: Make an entry current (GET or SEEK
  1746.                command).
  1747.  
  1748.      -653 (ERR_no_current_toc)
  1749.                An OPEN TOC command is issued and there is no
  1750.                current TOC block.
  1751.                ACTION: Make a TOC block current (CURRENT
  1752.                command).
  1753.  
  1754.      -654 (ERR_max_optocs_exc)
  1755.                An OPEN TOC command is issued when the maximum
  1756.                number of open TOC blocks are already opened.  The
  1757.                current maximum is 20.
  1758.                ACTION: Close one of the open TOC blocks.
  1759.  
  1760.      -655 (ERR_toc_not_found)
  1761.                TOC block name is not found.  This message occurs
  1762.                when the command is expecting an internal TOC
  1763.                block name (assigned by the user with the OPEN TOC
  1764.                command) and it is not present.  This error could
  1765.                occur from a misspelling, is because the wrong
  1766.                database is current, or when the TOC block was
  1767.                closed.
  1768.                ACTION: Use the correct name.
  1769.  
  1770.  
  1771. FIND ERRORS:
  1772.  
  1773.      -700 (ERR_no_current_recordset)
  1774.                There must be a current recordset when a FIND
  1775.                command is issued.  The results of the FIND
  1776.                command is reflected in the current recordset.
  1777.                ACTION: Create a recordset or make one current.
  1778.  
  1779.      -701 (ERR_no_current_keylist)
  1780.                There must be a current keylist when a FIND
  1781.                command is issued.  The FIND command searches the
  1782.                current keylist for the data.
  1783.                ACTION: Open a keylist or make one current.
  1784.  
  1785.      -702 (ERR_invalid_edi)
  1786.                This is an internal error.
  1787.  
  1788.      -703 (ERR_key_not_found)
  1789.                The key requested on the FIND command line is not
  1790.                in the current keylist.
  1791.                ACTION: Use another key.
  1792.  
  1793.  
  1794. VIRTUAL MEMORY ERRORS:
  1795.  
  1796.      -800 (ERR_reload_err)
  1797.                An error occurs while attempting to reload a data
  1798.                segment from virtual memory.  This is usually an
  1799.                internal error.
  1800.                ACTION: Verify that the media is correct, then
  1801.                call systems support.
  1802.  
  1803.      -801 (ERR_unload_err)
  1804.                An error occurs while attempting to unload a data
  1805.                segment to virtual memory.  This is usually an
  1806.                internal error.
  1807.                ACTION: Verify that the media is correct, then
  1808.                call systems support.
  1809.  
  1810.      
  1811. USER ABORT:
  1812.  
  1813.      -999 (ERR_abort)
  1814.                The user has pressed the Ctrl-C or Ctrl-break keys
  1815.                while the server was processing a request.
  1816.                ACTION: Take whatever action, you wish to have
  1817.                happen, when the user aborts your Client program.
  1818.  
  1819.  
  1820.     Appendix B:    Client & Servers Explained
  1821.  
  1822.      A Client is an operating system (OS) specific computer
  1823. program that creates and send queries, via an OS-specific method
  1824. to a Server and displays the data returned by that Server.
  1825.  
  1826.      A Server is a memory available, OS-specific, program
  1827. initiated before a Client that receives queries via an OS
  1828. specific method.  The Server then processes the request and/or
  1829. returns an error code via an OS specific method.
  1830.  
  1831.      The functions of the Client and Server are separated as
  1832. follows:
  1833.  
  1834.      Client Functions:
  1835.  
  1836.           --   Screen Control:  Any writing to the screen is the
  1837.                domain of the Client program.  This is necessary 
  1838.                to avoid screen collisions from two programs in 
  1839.                the same screen.  The exception to this is at the 
  1840.                time the Server is started or installed.
  1841.  
  1842.           --   Input Device Monitoring:  Data from the keyboard, 
  1843.                mouse, touch screen, light pen, bar code reader or
  1844.                other input device is the sole domain of the 
  1845.                Client.  In order to make changes to the Server 
  1846.                the Client must be terminated and then the Server 
  1847.                can be modified, terminated or replaced.
  1848.  
  1849.           --   Control of Data Reflowing:  When data is returned 
  1850.                to the Client it may not fit in the data window.  
  1851.                The client is responsible for reflowing the data 
  1852.                to fit the window.  Examples of this occurs when
  1853.                the Client changes fonts, changes window size,
  1854.                zooms, clips or scrolls returned data.
  1855.  
  1856.           --   Handle Interrupts:  The Client has the duty to 
  1857.                specify when a search is interrupted.  The limits 
  1858.                can be on wait time, return data size, and/or
  1859.                number of hits (Word or Document hits is up to the
  1860.                Server).
  1861.  
  1862.           --   Provide Help Functions:  Search method assistance,
  1863.                screen sensitive help, and/or tutorial type help
  1864.                are the domain of the Client.  This is not to be  
  1865.                confused with error messages.
  1866.  
  1867.           --   Expand Error Messages:  The Client expands 
  1868.                error messages based on the pre-defined error 
  1869.                message set.  The method**, wording and language
  1870.                of the error message is up to the Client designer. 
  1871.                The Client may choose to pass the Server message
  1872.                as a default.
  1873.                ** Note: This includes Error recovery functions.
  1874.  
  1875.           --   Ask For Security Information:  The Security
  1876.                Information request is generated by the Client 
  1877.                for the user to complete and passed to the Server. 
  1878.                See Server functions for more information.
  1879.  
  1880.  
  1881.      Server Functions:
  1882.  
  1883.           --   CD-ROM Reading Of Data Via OS Extensions:  Only
  1884.                the Server may access data from the storage media. 
  1885.                It may receive data by any available method.
  1886.  
  1887.           --   Perform Searches And Boolean Operations:  The 
  1888.                Server performs all necessary functions needed to 
  1889.                return requested data.
  1890.  
  1891.           --   Format Return Data Records:  The Server packages
  1892.                and formats the data.  The Server also adds data
  1893.                type tags and inserts formatting information.
  1894.  
  1895.           --   Uncompressing Data:  If data is stored on the 
  1896.                CD-ROM in a compressed form it is the function of
  1897.                the Server to decompress (via hardware or
  1898.                software) the data before returning it to the
  1899.                Client.
  1900.  
  1901.           --   Activate Audio Play:  If CD-DA data is requested,
  1902.                the Server will spin the disc and activate play 
  1903.                of the audio.
  1904.  
  1905.           --   Enforce Security:  It is the function of the 
  1906.                Server to verify and enforce security if it is 
  1907.                available.  Security functions are not required of
  1908.                CD-RDx but may be a requirement of a customer.  
  1909.                If messages are incorrect or the user does not
  1910.                have the appropriate clearance low level,
  1911.                security information is given to the Server then
  1912.                the Server may return "nothing available" instead
  1913.                of an error message.  If no security information
  1914.                is passed to a Server that requires a login then
  1915.                an error message will be returned.  If no security
  1916.                is available from the Server and security
  1917.                information is passed to the Server then the
  1918.                Server must generate proper error messages. Mandatory minimums for Clients and Servers:
  1919.  
  1920.      Client:
  1921.  
  1922.           --   The Client must be able to request and display the
  1923.                Basic Data Types.  See the Appendix for more 
  1924.                information on the Basic Data Types.
  1925.  
  1926.  
  1927.      Server:
  1928.  
  1929.           --   The Server must be able to communicate with the OS
  1930.                extensions to CD-ROM.
  1931.  
  1932.           --   The Server must be able to return the Basic Data 
  1933.                Types.  The basic data types must be supported if
  1934.                the Server has that data available in any of the
  1935.                databases it is responsible for.  See the Appendix
  1936.                for more information on the Basic Data Types. Appendix C:Data Types
  1937.  
  1938.      The data types in the data dictionary include the following
  1939. general categories:
  1940.  
  1941.           --   Text, Fielded Terms, Specific Program Formats, 
  1942.                Executable.
  1943.  
  1944.           --   Numerical Values, Numerical Array.
  1945.  
  1946.           --   Graphics, 2-D Bit Map, 3-D Bit Map, 2-D Vector, 
  1947.                3-D Vector, Animated Bit Map, Animated Vector.
  1948.  
  1949.           --   Digital Audio Music, Speech, Noise(Sound Effects),
  1950.                and digitized Sounds at various quality levels.
  1951.  
  1952.      The Basic Data Types are required to be available to the
  1953. Server and displayable by the Client.  The Basic Data Types are
  1954. suggested to include:
  1955.  
  1956.           --   Screen formatted text.
  1957.  
  1958.           --   TIFF raster graphics.
  1959.  
  1960.           --   CGM vector graphics.
  1961.  
  1962.           --   Program Names and Paths
  1963.  
  1964.           --   Digital Audio Appendix D:Data Dictionary
  1965.  
  1966. Text Data:
  1967.  
  1968. TEXT0001  Screen formatted text.  Hard return every 72 
  1969.           characters.  Word wrapping up to Server.
  1970. TEXT0002  Re-flowable text. Hard return at end of paragraph and 
  1971.           blank line.  No font info.  No Highlight info.
  1972. TEXT0003  Re-flowable text. No font info.  Highlight info around 
  1973.           hits.
  1974.  
  1975. MULT0001  Multi valued field with separator as first character.
  1976.  
  1977. DATE0001  MM/DD/YY
  1978. DATE0002  DD/MM/YY
  1979. DATE0003  MM/YY
  1980. DATE0004  Month Day, Year
  1981. DATE0005  MM/DD/YYYY
  1982. DATE0006  DD/MM/YYYY
  1983. DATE0007  JULIAN DATE
  1984.  
  1985. SGML0001  SGML tagged data with DTD ISO 9660 file name and path.
  1986.  
  1987. DB3F0001  DBase III format.
  1988. DB4F0001  DBase IV format.
  1989.  
  1990. PROG0001  ISO 9660 Program name and path for specific OS.
  1991.  
  1992.  
  1993. Numerical Data:
  1994.  
  1995. NUMR0001  TBD
  1996.  
  1997.  
  1998. Image/Graphic Data:
  1999.  
  2000. TIFF0001  TIFF format graphic.
  2001.  
  2002. CGM_0001  CGM format graphic.
  2003.  
  2004.  
  2005. Digital Audio:
  2006.  
  2007. CDDA0001  CD Digital Audio recorded per Philips/Sony Red book. 
  2008.           Track, Start Time, Run Time. Appendix E:OS Specific Information
  2009.  
  2010. Information: The MS-DOS Version
  2011.  
  2012.      Every CD-ROM software application complying to this standard
  2013. will have a Server linking the CD-RDx Protocols to the user
  2014. interface.  An example is given for MS-DOS.
  2015.  
  2016.      Beginning with DOS, we add the MicroSoft CD-ROM Extensions.
  2017. On top of this rests the Server.  On the platform of these three
  2018. components the application programmer begins the task of creating
  2019. a user interface that suits both the data and the operating
  2020. environment.
  2021.  
  2022.      The technique used for accessing DOS functions involves a
  2023. combination of the interrupt vectors stored in the first 1K of
  2024. memory, and the contents of the hardware registers built in to
  2025. the 80x86 architecture.  To activate a function within the
  2026. operating system, the programmer loads the registers with
  2027. relevant parameters, then 'calls,' or jumps, to the memory
  2028. location stored in the appropriate vector.  The operating system
  2029. will return the results of the operation, or a message code, in
  2030. the registers.
  2031.  
  2032.      The Server extends the operation of the MS-DOS  interrupts
  2033. and the MicroSoft Extensions interrupt through the addition of
  2034. interrupt 63H.  In this way, the MS-DOS version of the Server
  2035. behaves like any other low level component present within the
  2036. system.  This aspect of the design is critical in integration
  2037. with variable video adapters, a variety of CD player
  2038. configurations, asynchronous communication lines (such as modems
  2039. and fax cards), and various other devices attached in the course
  2040. of successfully completing an application on the DOS platform.
  2041.  
  2042.      The Server, accessed via an interrupt, is a passive memory
  2043. resident module which is loaded when DOS is called and is
  2044. permanently put into memory, is available to any application
  2045. program, and available to any program language.  The TSR responds
  2046. to ASCII message strings.  Because of the run-time independence
  2047. on any system and the near universal acceptance of the ASCII
  2048. format, CD-ROM application programs that are cross platform in
  2049. nature are possible.  A standard protocol can be injected between
  2050. the DOS machine and any other machine (eg. via a network).  The
  2051. DOS machine can be accessed through this protocol using ASCII
  2052. strings embedded in standard communications packets.
  2053.  
  2054. Server Example for DOS
  2055.  
  2056.      The Server is a memory resident program.  The Server is
  2057. started up before any application program.  It occupies
  2058. approximately xxxK of main memory in addition to the buffers
  2059. specified when the Server is first invoked.  The Server may be
  2060. removed from memory when desired.
  2061.  
  2062.      The delivery platform requires a CD-ROM drive and enough
  2063. main memory to support the developer's application, DOS, and the
  2064. Microsoft CD-ROM Extensions (MSCDEX).  This can typically be
  2065. accomplished with as little as 512K main memory on the host
  2066. system.  The Server has no hard drive requirements but, the
  2067. developer's application may require hard disk space to operate. 
  2068. The Server will use this device for temporary storage if the -v
  2069. parameter is specified at start up.  The Server has no
  2070. requirement for video adapters since it does not write directly
  2071. to the screen.  However, the Server should not conflict with any
  2072. standard video adapter that the developer chooses to use or
  2073. require in the application.
  2074.  
  2075.      The Server supports both extended and expanded memory with
  2076. appropriate drivers loaded.  Other optional equipment may also be
  2077. used.  The Server is passive and self contained within both
  2078. memory allocation and code space.  The executable is installed in
  2079. a directory on the hard disk drive, and the PATH is set to
  2080. include that directory.  This will allow the executable to be
  2081. used in many different areas of the hard disk without making
  2082. multiple copies of the executable.
  2083.  
  2084. Server Programs:
  2085.  
  2086.      DBSTSR.EXE   - The TSR Server
  2087.      DBSTERM.EXE  - The TSR Server terminator
  2088.      _DBSUTIL.EXE - A demonstration program
  2089.  
  2090. DBSTSR - The Server
  2091.  
  2092.      Format: DBSTSR <options>
  2093.  
  2094.      This program loads The Server into memory and keeps it there
  2095.      and sets up an interrupt interface for the Client
  2096.      applications.
  2097.  
  2098.      Options:
  2099.           -h        - displays available options
  2100.           -ixxx     - modifies the default interrupt
  2101.           -e        - use expanded memory (if available)
  2102.           -x        - use extended memory (if available)
  2103.           -s        - use speed over size optimization
  2104.           -mXXXXX   - Number of bytes of memory allocated
  2105.           -dDIR     - Directory for Virtual overflow file
  2106.           -rXXXX    - Default record buffer size
  2107.  
  2108. DBSTERM - Remove The Server from memory.
  2109.  
  2110.      Format: DBSTERM
  2111.  
  2112. DBSUTIL - Run Demonstration of The Server.
  2113.  
  2114.      Format: DBSUTIL <options>
  2115.  
  2116.      Options:
  2117.           -h     - Display available options
  2118.           -q     - Quiet mode
  2119.  
  2120. Important:  The above is only a sample for DOS.  CD-RDx Information: Macintosh
  2121.  
  2122.      This example is given for Apple Macintosh.
  2123.  
  2124.      Beginning with HFS, Apple provides two INIT files (Foreign
  2125. File Access and CD Audio Access. The addition of these two files
  2126. to the system folder, allows access to ISO 9660 formatted 
  2127. CD-ROMs. Running in this environment add the Server, also into
  2128. the system folder. On the platform of these components the
  2129. application programmer begins the task of creating a user
  2130. interface that suits both the data and the operating environment.
  2131.  
  2132.      The technique used for accessing INITs is outlined in the
  2133. guidelines established by Apple.  Apple developer services has
  2134. several publications and products to aide the developer in the
  2135. creation of INITs and the communication to INITs.
  2136.  
  2137.      The Server, accessed via an standard memory location, is a
  2138. memory resident program which is loaded when the Macintosh is
  2139. started.  It is available to any application program, and
  2140. available to any program language.   Appendix F:Glossary
  2141.  
  2142. ASCII TEXT FORMAT   This is a standard format used to represent
  2143.                     characters of textual information.  Each
  2144.                     character has its own unique number between 0
  2145.                     to 127.  The IBM Extended Character Set
  2146.                     (numbered 128 to 255) is used for inner-
  2147.                     operability between multiple operating
  2148.                     platforms and general purpose programming
  2149.                     languages.
  2150.  
  2151. CLASS               A term from Object Oriented Programming that
  2152.                     describes a collection of objects with common
  2153.                     traits.
  2154.  
  2155. DATABASE            A collection of one or more related datasets.
  2156.  
  2157.                     The DATABASE object knows its name and the
  2158.                     path that it is currently using.
  2159.  
  2160. DATABASE 
  2161. DICTIONARY          A collection of descriptions of the
  2162.                     structures contained within a database.  It
  2163.                     may describe each dataset, index, and field
  2164.                     for the database.
  2165.  
  2166. DATABASELIST        The object that contains the names, location
  2167.                     and other pertinent information about all of
  2168.                     the databases currently open in the system. 
  2169.                     Its currency points to the database to which
  2170.                     the current INDEXLIST, FIELDLIST,
  2171.                     DATASETLIST, OPENRECORDSETLIST,
  2172.                     OPENRECORDLIST, and OPENKEYLIST objects are
  2173.                     associated.
  2174.  
  2175. DATASET             A collection of records with a common set of
  2176.                     fields.  The DATASET object knows the range
  2177.                     of records across which it is active, and the
  2178.                     name defined with the build system.
  2179.  
  2180. DATASETFIELDLIST    The object that contains the names of all of
  2181.                     the fields for the current dataset.
  2182.  
  2183. DATASETLIST         The object that contains the names, the
  2184.                     subtended ranges of records, and other
  2185.                     pertinent information relevant to datasets
  2186.                     within the current database.
  2187.  
  2188. ELEMENT             The CD-RDx Protocols consist of two
  2189.                     dimensional tables.  The rows of these tables
  2190.                     are referred to as elements, and the
  2191.                     components of these elements are referred to
  2192.                     as columns or attributes.
  2193.  
  2194. FIELD               A field is a collection of text, imagery,
  2195.                     sound, etc. of related information.  For
  2196.                     example, the letters of a person's name may
  2197.                     compose the contents of a field entitled
  2198.                     "Name."  
  2199.  
  2200.                     FIELD objects know the type of their contents
  2201.                     and other valuable information.  
  2202.  
  2203. FIELDDATASETLIST    The object that contains the names of all
  2204.                     datasets associated with the current field.
  2205.  
  2206. FIELDLIST           The object that contains the names, types and
  2207.                     formatting attributes of all of the fields
  2208.                     associated with the current database.
  2209.   
  2210. FIELD SET           The set that contains every instance of every
  2211.                     field in a database.
  2212.  
  2213. INDEX               A set of keys contained within the field set. 
  2214.                     See also "Word Index" and "Item Index."
  2215.  
  2216. INDEXLIST           The object that contains the names, sizes and
  2217.                     other pertinent information about all of the
  2218.                     indexes within the current database.  
  2219.  
  2220. INSTANCE            A term from Object Oriented Programming that
  2221.                     refers to a particular copy of an object. 
  2222.                     For example, "5" is an instance of an integer
  2223.                     object in the number class.
  2224.  
  2225. ITEM INDEX          An item index indexes every value or phrase
  2226.                     in the field set across the entire database.
  2227.  
  2228. KEY                 An index key is a word or phrase that has a
  2229.                     list of records associated with it.
  2230.  
  2231. KEYLIST             The object that contains the entire contents
  2232.                     of the field set against which it has been
  2233.                     applied.  Each instance of a keylist knows a
  2234.                     count and frequency of the key within the
  2235.                     entire database, or selected dataset range,
  2236.                     or across records for every key.
  2237.  
  2238. LINE                See subrecord.
  2239.  
  2240. OBJECT              A term from Object Oriented Programming that
  2241.                     describes an entity that contains internally
  2242.                     managed data and the methods that manipulate
  2243.                     the data.
  2244.                     The objects that form the CD-RDx Protocols
  2245.                     can be thought of as tables.  A table is a
  2246.                     list of rows and columns.  Each row is a
  2247.                     different member of the set.
  2248.  
  2249.                     The objects within the CD-RDx Protocols
  2250.                     always subscribe to this metaphor.  Of
  2251.                     course, not all object-oriented systems
  2252.                     contain this reference; however, methods can
  2253.                     be built into  object-oriented systems
  2254.                     directly that model the behavior of these
  2255.                     tables.
  2256.  
  2257. OPENKEYLIST         The object that contains the names of the
  2258.                     labels defined by the developer for all
  2259.                     KEYLIST objects they have opened.
  2260.  
  2261. OPENRECORDLIST      The object that contains the record numbers
  2262.                     of all records that have been opened by the
  2263.                     developer.
  2264.  
  2265. OPENRECORDSETLIST   The object that contains the developer-
  2266.                     defined labels and the gross size of each of
  2267.                     the family of record sets currently opened by
  2268.                     the developer.  
  2269.  
  2270. RECORD              A record is composed of one or more fields of
  2271.                     related information.  
  2272.  
  2273.                     The RECORD object knows the contents of all
  2274.                     subrecords and the field identifier
  2275.                     associated with each of them.  In addition,
  2276.                     the RECORD object keeps other pertinent
  2277.                     information for each subrecord.  Subranges
  2278.                     can be defined within the RECORD object
  2279.                     through use of the SELECT FIELDS message.
  2280.  
  2281. RECORDSET           The object that contains the record numbers
  2282.                     of every record that has satisfied FIND
  2283.                     statements issued by the developer. 
  2284.  
  2285.                     The RECORDSET message is used to combine
  2286.                     record sets, or to explicitly add and remove
  2287.                     specific records or ranges of records to the
  2288.                     current RECORDSET object.
  2289.  
  2290. SUBRECORD           A record, or any field within that record,
  2291.                     can be as large as the available disc space. 
  2292.                     In order to process a field of indefinite
  2293.                     size, each field is divided into a series of
  2294.                     subrecords.  Each field in a record has one
  2295.                     or more subrecords.
  2296. WORD INDEX          An index that contains every word from every
  2297.                     field across the database.
  2298.  
  2299.     Appendix G:    Questions & Answers
  2300.  
  2301. Q.   What does CD-RDx involve?
  2302. A.   Like many other computer operations, the CD-RDx standard
  2303.      incorporates a Client/Server approach, meaning that the
  2304.      Client (what the user interacts with, such as the menus
  2305.      and/or commands for a particular software application,
  2306.      command structure, graphical user interface or pull down
  2307.      menu) is separate from the Server (the unique retrieval
  2308.      engine and data index requirements).  Therefore, CD-RDx
  2309.      describes in detail the Black Box through which both sides
  2310.      are to communicate with one another.
  2311.  
  2312. Q.   What's in the Black Box?
  2313. A.   The Black Box is not a thing; rather it is a set of rules
  2314.      that provide a level of abstraction so that both sides --
  2315.      the Client and the Server -- can communicate with one
  2316.      another.  These rules consist of commands and 2-dimensional
  2317.      tables as described in detail in the CD-RDx standard.
  2318.  
  2319. Q.   What will an organization need to do to adhere to this
  2320.      standard?
  2321. A.   If an organization is purchasing commercially available CD-
  2322.      ROM applications or developing a solicitation for the
  2323.      delivery of digital data on CD-ROM discs, then an explicit
  2324.      statement requiring that the discs contain the necessary
  2325.      index/retrieval engine drivers (Server) conforming to this
  2326.      standard is needed.
  2327.  
  2328.      If, on the other hand, an organization is receiving CD-ROM
  2329.      discs with the Server, then the organization must have the
  2330.      necessary user interface drivers (Client) conforming to the
  2331.      standard in order to use the discs.
  2332.  
  2333. Q.   Does this mean that an organization has to create a new
  2334.      Client for each Server?
  2335. A.   Absolutely NOT.  In fact, quite the opposite.  Once a Client
  2336.      is created for a top-level user interface, such as Windows
  2337.      3.0, Motif, Hypercard, or a software application program,
  2338.      such as SAS, SPSS, Lotus 1-2-3, Excel, Word, WordPerfect and
  2339.      so on, then these types of user interfaces will work with
  2340.      ANY CD-ROM disc that have the requisite Server.
  2341.  
  2342. Q.   What will happen to existing CD-ROM discs that do not
  2343.      contain a Server?
  2344. A.   These discs continue to be useful just as they are now;
  2345.      however, unlike those discs containing a Server, the
  2346.      existing discs will have to be installed with each use and
  2347.      the user interfaces will be specific to that disc.
  2348.  
  2349. Q.   Can a user interface now used for a specific CD-ROM
  2350.      retrieval engine be used for ALL discs containing a Server?
  2351. A.   Yes, if the software vendor has designed the retrieval
  2352.      engine and user interface as separate functions and if the
  2353.      user interface has the necessary Client drivers.
  2354.  
  2355. Q.   What are the major implications of the CD-RDx standard?
  2356. A.   Presently, most CD-ROM publishers purchase CD-ROM software
  2357.      based on the user interface and the features that the user
  2358.      interface provide.  With this standard, potential publishers
  2359.      will not have to concern themselves about a user interface -
  2360.      - since these decisions will reside with users and the user
  2361.      interfaces/Client the users select.  Instead, publishers
  2362.      will be dealing with performance of the software, the
  2363.      structure of the index(es) and data preparation requirements
  2364.      of the software program.  Although this is exactly what
  2365.      potential CD-ROM publishers should be concerned with, most
  2366.      software vendors would like potential licensees to consider
  2367.      less important factors, such as sticky notes, printout
  2368.      capabilities, Boolean operators and licensing fees.
  2369.  
  2370.      For CD-ROM publishers, this standard could also move the
  2371.      perspective of potential buyers from, again, features as
  2372.      observed in the user interface to quality, accuracy and
  2373.      completeness of the data.  Like a book, CD-ROM should convey
  2374.      appropriate, complete and useful information.  A potential
  2375.      purchaser is now wise enough to detect a beautifully bound
  2376.      book with irrelevant information.  This "next-level-of-
  2377.      intelligence" will occur for CD-ROM purchasers and users as
  2378.      well, as a result of this standard.
  2379.  
  2380. Q.   What are the risks?  What will users or purchasers of CD-
  2381.      ROMs have to give up?
  2382. A.   Nothing.  The standard provides only rewards for users and
  2383.      purchasers.  Instead of having to learn each software
  2384.      program with each new disc, users will select the user
  2385.      interface of their choice and access data on any one or a
  2386.      combination of discs with this single user interface.  Users
  2387.      may develop a single search and then apply it to one or more
  2388.      databases on separate discs published by different vendors.
  2389.  
  2390. Q.   What will CD-ROM producers have to do to implement this
  2391.      standard?
  2392. A.   Assuming that the specific CD-ROM indexing and retrieval
  2393.      software selected comes with a Server, then the answer is
  2394.      nothing different than what is required of the program now. 
  2395.      The software developer/vendor, however, will have to create
  2396.      its own Server driver ONCE for each OS.
  2397.  
  2398. Q.   What will CD-ROM users have to do to implement this
  2399.      standard?
  2400. A.   Obtain or develop a Client driver for each top-level or
  2401.      application-specific user interface as desired.  For
  2402.      example, the user may want to access full-text information
  2403.      from Windows 3.0, from a word processing program, and also
  2404.      from "XYZ's" menu.  Client drivers will have to be developed
  2405.      for each of these three programs.
  2406.  
  2407. Q.   What will the CD-ROM industry have to do to implement this
  2408.      standard?
  2409. A.   Developers of CD-ROM indexing retrieval software will each
  2410.      have to develop their own Server drivers to work with their
  2411.      proprietary software engines and indexing schemes.  Software
  2412.      and/or third-party developers of top-level interfaces and of
  2413.      software applications will have to develop Client drivers to
  2414.      work with a number of programs.
  2415.  
  2416. Q.   Does this mean that a user interface does not come
  2417.      automatically with a CD-ROM application?
  2418. A.   Not necessarily.  A CD-ROM producer/publisher may decide to
  2419.      deliver a user interface for the database as well as the
  2420.      Server on the same disc.  The standard does not limit
  2421.      publishers nor users from providing or using a user
  2422.      interface that comes with the software as we are used to at
  2423.      the present time.
  2424.  
  2425. Q.   What is the proposed course of action with respect to
  2426.      implementing the CD-RDx standard as an international
  2427.      standard?
  2428. A.   The DCI Intelligence Information Handling Committee (IHC)
  2429.      agrees on the need for a CD-RDx standard for use throughout
  2430.      the Intelligence Community.  Simultaneously, IHC is briefing
  2431.      civilian agencies, the Department of Defense, NISO/NIST and
  2432.      other groups in the public and private sectors on the
  2433.      details of the CD-RDx standard. It is also began funding the
  2434.      development of Client drivers for some "most-used" user
  2435.      interfaces in the DOS, UNIX, OS/2 and Macintosh operating
  2436.      system environments so that CD-ROM discs containing the
  2437.      requisite Server driver can be demonstrated to work in
  2438.      different operating systems within different user
  2439.      interfaces.
  2440.  
  2441. Q.   Does this CD-RDx standard conflict with any of the
  2442.      standardization activities within the Computer-Aided
  2443.      Acquisition and Logistics Support (CALS) system?
  2444. A.   The answer is NO.
  2445.  
  2446. Q.   How does the CD-RDx standard address the accessing,
  2447.      retrieval and display of graphics?
  2448. A.   Images are passed as data to the Client.  It is up to the
  2449.      Client to support a specific type of graphics.  In short,
  2450.      CD-RDx in no way limits the use of graphics, nor the type of
  2451.      graphics.
  2452.  
  2453. Q.   How does CD-RDx deal with MARK RECORD, SORT RESULTS and
  2454.      similar functions?
  2455. A.   MARK and SORT are functions of the Server, not a part of a
  2456.      CD-ROM access and retrieval standard.  It is up to the
  2457.      Client to understand the marked data. The Client can resort
  2458.      data.
  2459.  
  2460. Q.   How does CD-RDx deal with ADJACENCY and PROXIMITY?
  2461. A.   A modification to the FIND command with ADJ and PROX have
  2462.      been implemented.
  2463.  
  2464. Q.   Are the specifications and the internal components of the
  2465.      specifications extensible?
  2466. A.   Yes.  Extensibility is in the data display.  The data
  2467.      return types include extensible/proprietary data types. 
  2468.      NOTE: Proprietary data types can only be used by Clients
  2469.      that understand that type of data. (i.e. The Server
  2470.      company's Client.)
  2471.  
  2472. Q.   How will multiple simultaneous protocols be defined?  Where
  2473.      will the protocol handlers be located?  Does CD-RDx take
  2474.      into account multi-relational, multi-file databases?
  2475. A.   Implementation of the Server is not limited to the CD-RDx
  2476.      standard.  If a particular CD-ROM retrieval engine supports
  2477.      multi-anything, then that particular software developer
  2478.      should write these capabilities into the Server.
  2479.  
  2480. Q.   Doesn't a memory resident program, such as a Terminate and
  2481.      Stay Resident (TSR), limit acceptance of the CD-RDx
  2482.      standard? 
  2483. A.   The primary purpose of CD-RDx is to transcend the need for
  2484.      writing a Server for each computer or interface environment. 
  2485.      Without a memory resident Server, it would not be a standard
  2486.      acceptable in all environments.
  2487.  
  2488. Q.   Is there any reason why the Server must be a TSR?  There are
  2489.      any number of alternative ways to implement such a Server,
  2490.      some of which have significant advantages over a TSR based
  2491.      implementation.
  2492. A.   A Terminate and Stay Resident (TSR) program may be used, but
  2493.      it is only needed in the DOS part of the CD-RDx standard. 
  2494.      The Server just needs to be an independent program in
  2495.      memory.
  2496.  
  2497. Q.   Where in this CD-RDx standard are security issues addressed?
  2498. A.   If security and audits are an issue, then they may be added
  2499.      to the Server.  Such functional capabilities are part of the
  2500.      Server.
  2501. Q.   The limits for PATH and FileName in the POSiX specification
  2502.      is more liberal than those for MS-DOS.  Can the length
  2503.      limitations be increased?
  2504. A.   Clients operating in different environments can specify any
  2505.      length for path and file names.
  2506.  
  2507. Q.   How will the user process records/fields that are huge, such
  2508.      as 1 MB or larger?
  2509. A.   CD-RDx imposes no limitations at all.  The Client sets
  2510.      buffer length.  The Server merely writes to the buffer.  The
  2511.      buffer may be written to the full available size of any
  2512.      storage device available.  This allows the Server to use
  2513.      both RAM and mass storage.
  2514.  
  2515. Q.   What techniques are used in CD-RDx for dealing with Database
  2516.      Passwords, Field Passwords and "restricted" records?
  2517. A.   See LOGIN command and Appendix B (Server Functions)
  2518.  
  2519. Q.   How does CD-RDx work with networks.
  2520. A.   The ability to access databases that reside on a networked
  2521.      drive is a function of the Server.  Establishing the link to
  2522.      the network is not in the realm of how data is passed
  2523.      between the Client and Server.  When the database retrieval
  2524.      power is on a network server, it is the responsibility of
  2525.      the Server running on a local computer to request and
  2526.      process the remote information.  The possible exception to
  2527.      this is in the UNIX world where the remote Server has
  2528.      established an ID on the CD-RDx Socket.
  2529.  
  2530. Q.   ISO 9660 has three levels of implementation.  Does CD-RDx
  2531.      have a similar approach to implementation so that developers
  2532.      can get "up and running" faster?
  2533. A.   CD-RDx supports everything and nothing can be left out.
  2534.      However, developers of Clients and Servers can certainly
  2535.      begin with the basics and provide increasing levels of
  2536.      sophistication over time.  The basic data types must be
  2537.      supported if the Server has that data available in any of
  2538.      the databases it is responsible for.