home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / dcedirsv.zip / DCEDIRSV.INF (.txt)
OS/2 Help File  |  1998-05-08  |  487KB  |  11,784 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Notices ΓòÉΓòÉΓòÉ
  3.  
  4. Second Edition (June 1996) 
  5.  
  6. The following paragraph does not apply to the United Kingdom or any country 
  7. where such provisions are inconsistent with local law:  INTERNATIONAL BUSINESS 
  8. MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY 
  9. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  10. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states 
  11. do not allow disclaimer of express or implied warranties in certain 
  12. transactions, therefore, this statement may not apply to you. 
  13.  
  14. This publication could include technical inaccuracies or typographical errors. 
  15. Changes are periodically made to the information herein; these changes will be 
  16. incorporated in new editions of the publication. IBM may make improvements 
  17. and/or changes in the product(s) and/or the program(s) described in this 
  18. publication at any time. 
  19.  
  20. It is possible that this publication may contain reference to, or information 
  21. about, IBM products (machines and programs), programming, or services that are 
  22. not announced in your country.  Such references or information must not be 
  23. construed to mean that IBM intends to announce such IBM products, programming, 
  24. or services in your country. 
  25.  
  26. Requests for technical information about IBM products should be made to your 
  27. IBM reseller or IBM marketing representative. 
  28.  
  29.  
  30. ΓòÉΓòÉΓòÉ 1.1. Copyright Notices ΓòÉΓòÉΓòÉ
  31.  
  32. COPYRIGHT LICENSE: This publication contains printed sample application 
  33. programs in source language, which illustrate OS/2 programming techniques. You 
  34. may copy, modify, and distribute these sample programs in any form without 
  35. payment to IBM, for the purposes of developing, using, marketing or 
  36. distributing application programs conforming to the OS/2 application 
  37. programming interface. 
  38.  
  39. Each copy of any portion of these sample programs or any derivative work, which 
  40. is distributed to others, must include a copyright notice as follows: "(C) 
  41. (your company name) (year).  All rights reserved." 
  42.  
  43. (C)Copyright International Business Machines Corporation 1992, 1996.  All 
  44. rights reserved. 
  45. Note to U.S. Government Users - Documentation related to restricted rights - 
  46. Use, duplication or disclosure is subject to restrictions set forth in GSA ADP 
  47. Schedule Contract with IBM Corp. 
  48.  
  49.  
  50. ΓòÉΓòÉΓòÉ 1.2. Disclaimers ΓòÉΓòÉΓòÉ
  51.  
  52. References in this publication to IBM products, programs, or services do not 
  53. imply that IBM intends to make these available in all countries in which IBM 
  54. operates. Any reference to an IBM product, program or service is not intended 
  55. to state or imply that only that IBM product, program, or service may be used. 
  56. Subject to IBM's valid intellectual property or other legally protectable 
  57. rights, any functionally equivalent product, program, or service may be used 
  58. instead of the IBM product, program, or service. The evaluation and 
  59. verification of operation in conjunction with other products, except those 
  60. expressly designated by IBM, are the responsibility of the user. 
  61.  
  62. IBM may have patents or pending patent applications covering subject matter in 
  63. this document. The furnishing of this document does not give you any license to 
  64. these patents. You can send license inquiries, in writing, to: 
  65.  
  66.       IBM Director of Licensing 
  67.       IBM Corporation 
  68.       500 Columbus Avenue 
  69.       Thornwood, NY  10594 
  70.       U.S.A. 
  71.  
  72.  Licensees of this program who wish to have information about it for the 
  73.  purpose of enabling: (i) the exchange of information between independently 
  74.  created programs and other programs (including this one) and (ii) the mutual 
  75.  use of the information which has been exchanged, should contact IBM 
  76.  Corporation, Department LZKS, 11400 Burnet Road, Austin, TX 78758 U.S.A.  Such 
  77.  information may be available, subject to appropriate terms and conditions, 
  78.  including in some cases, payment of a fee. 
  79.  
  80.  Asia-Pacific users can inquire, in writing, to the IBM Director of 
  81.  Intellectual Property and Licensing, IBM World Trade Asia Corporation, 2-31 
  82.  Roppongi 3-chome, Minato-ku, Tokyo 106, Japan. 
  83.  
  84.  
  85. ΓòÉΓòÉΓòÉ 1.3. Trademarks ΓòÉΓòÉΓòÉ
  86.  
  87. The following terms are trademarks of the IBM Corporation in the United States 
  88. or other countries or both: 
  89.  
  90.       AIX 
  91.  
  92.       IBM 
  93.  
  94.       OS/2 
  95.  
  96.  The following terms are trademarks of other companies: 
  97.  
  98.  OSF       Open Software Foundation 
  99.  
  100.  UNIX      Registered trademark in the United States and other countries, 
  101.            licensed exclusively through X/Open Company Limited. 
  102.  
  103.  Other company, product, and service names, which may be denoted by a double 
  104.  asterisk (**), may be trademarks or service marks of others. 
  105.  
  106.  
  107. ΓòÉΓòÉΓòÉ 2. About This Book ΓòÉΓòÉΓòÉ
  108.  
  109. The IBM Distributed Computing Environment 2.1 for OS/2 Warp: Application 
  110. Development Guide - Directory Services provides information on how to access 
  111. the DCE Directory Service on an IBM OS/2 Warp operating system to share 
  112. information and resources between cells. 
  113.  
  114. The Directory Service primarily includes three components: 
  115.  
  116.    o  DCE Cell Directory Service (CDS) 
  117.    o  DCE Global Directory Service (GDS) (not supported for this release) 
  118.    o  X/Open Directory Service (XDS) and X/Open OSI-Abstract-Data Manipulation 
  119.       (XOM) Interfaces 
  120.  
  121.  
  122. ΓòÉΓòÉΓòÉ 2.1. Who Should Use This Book ΓòÉΓòÉΓòÉ
  123.  
  124. This guide is written for application programmers with OS/2 operating system 
  125. and C language experience who want to develop and write applications to run on 
  126. DCE. It does not assume that you have prior knowledge of, or experience with, 
  127. designing and writing distributed applications using the Open Software 
  128. Foundation's (OSF)** Distributed Computing Environment (DCE) services. Ideally, 
  129. you should be able to perform the following: 
  130.  
  131.    o  Edit, browse, and copy OS/2 Warp files; 
  132.  
  133.    o  Print files; and 
  134.  
  135.    o  Write, compile, link, debug, and run C programs on OS/2 Warp. 
  136.  
  137.  A good working knowledge and understanding of the following would also be 
  138.  helpful: 
  139.  
  140.    o  Structured programming techniques; 
  141.  
  142.    o  Computer communications over a network using Transmission Control 
  143.       Protocol (TCP) and User Datagram Protocol (UDP); and 
  144.  
  145.    o  Concepts behind a distributed application. 
  146.  
  147.  Some exposure to the UNIX** or AIX* operating systems is helpful but not 
  148.  essential to use this guide. 
  149.  
  150.  
  151. ΓòÉΓòÉΓòÉ 2.2. How This Book is Organized ΓòÉΓòÉΓòÉ
  152.  
  153. This book is divided into 14 sections which describe application programming, 
  154. program functions, and packages. Each section provides detailed instructions 
  155. for performing each specific set of tasks. Where necessary, directions to other 
  156. sections of the document are provided. 
  157.  
  158.  
  159. ΓòÉΓòÉΓòÉ 2.3. Related Publications ΓòÉΓòÉΓòÉ
  160.  
  161. In order to obtain a good foundation of the components and concepts behind DCE 
  162. prior to developing applications using this guide, you may find it helpful to 
  163. read or refer to the following: 
  164.  
  165.    o  IBM Distributed Computing Environment 2.1 for OS/2 Warp: Getting Started 
  166.  
  167.    o  IBM Distributed Computing Environment 2.1 for OS/2 Warp: Administration 
  168.       Guide 
  169.  
  170.    o  IBM Distributed Computing Environment 2.1 for OS/2 Warp: Administration 
  171.       Command Reference 
  172.  
  173.    o  IBM Distributed Computing Environment 2.1 for OS/2 Warp: Application 
  174.       Development Guide - Introduction and Style Guide 
  175.  
  176.    o  IBM Distributed Computing Environment 2.1 for OS/2 Warp: Application 
  177.       Development Guide - Core Components 
  178.  
  179.    o  IBM Distributed Computing Environment 2.1 for OS/2 Warp: Application 
  180.       Development Reference 
  181.  
  182.    o  IBM Distributed Computing Environment 2.1 for OS/2 Warp: Network File 
  183.       System to Distributed File System Authenticating Gateway Guide and 
  184.       Reference 
  185.  
  186.    o  IBM Distributed Computing Environment 2.1 for OS/2 Warp: Distributed File 
  187.       Service Client Guide and Reference 
  188.  
  189.  Additionally, you may find the following documents helpful while developing 
  190.  your distributed application using IBM Distributed Computing Environment 2.1 
  191.  for OS/2 Warp: 
  192.  
  193.    o  ANSI.C, American National Standard X3.159-1989 
  194.  
  195.    o  CCITT Blue Book, Fascicle VIII.4, International Telecommunications Union, 
  196.       1988 
  197.  
  198.    o  Information Processing - Programming Language C, ISO Draft International 
  199.       Standard DIS9899 
  200.  
  201.  
  202. ΓòÉΓòÉΓòÉ 2.4. Conventions Used in This Book ΓòÉΓòÉΓòÉ
  203.  
  204. This guide uses the following typographic conventions throughout: 
  205.  
  206.  Bold                 Bold words or characters represent system elements that 
  207.                       you must enter into the system literally, such as 
  208.                       commands and file, path, and directory names. 
  209.  
  210.  Italics              Italicized words or characters represent values for 
  211.                       variables that you supply. Italics is also used to 
  212.                       highlight a word or phrase that is being described. 
  213.  
  214.  Example Font         Examples and information displayed by the system are 
  215.                       printed using an example font that is a constant width 
  216.                       typeface. 
  217.  
  218.  [ ]                  Optional items found in format and syntax descriptions 
  219.                       are enclosed in brackets. 
  220.  
  221.  { }                  In format and syntax descriptions, a list from which you 
  222.                       must choose an item is enclosed in braces. 
  223.  
  224.  |                    A vertical bar separates items in a list of choices. 
  225.  
  226.  < >                  Angle brackets enclose the name of a key on a keyboard. 
  227.  
  228.  ...                  Horizontal ellipsis points indicate that you can repeat 
  229.                       the preceding item one or more times. Vertical ellipsis 
  230.                       points indicate that you can repeat the preceding item 
  231.                       one or more times. 
  232.  
  233.  This document uses the following keying conventions throughout: 
  234.  
  235.  <Ctrl-x>                   The notation <Ctrl-x> or ^x followed by the name of 
  236.                             a key, indicates a control character sequence. For 
  237.                             example, <Ctrl-c> means hold down the control key 
  238.                             while pressing c key. 
  239.  
  240.  <Enter>                    The notation <Enter> refers to the key on your 
  241.                             terminal or workstation that is labeled with either 
  242.                             the word Enter or Return, or with a left arrow. 
  243.  
  244.  Entering commands          When instructed to enter a command, type the 
  245.                             command name and then press the <Enter> key. For 
  246.                             example, the instruction "Enter the IDL command" 
  247.                             means that you type the IDL command and then press 
  248.                             the <Enter> key. 
  249.  
  250.  
  251. ΓòÉΓòÉΓòÉ 2.5. Terminology Used in This Book ΓòÉΓòÉΓòÉ
  252.  
  253. Although every attempt has been made to conform to Systems Application 
  254. Architecture (SAA)* terminology guidelines, you must keep in mind that the DCE 
  255. technology has been developed from the UNIX environment. 
  256.  
  257. Notes: 
  258.  
  259.    1. Throughout this document, the terms API, call, and routine all refer to 
  260.       the same IBM Distributed Computing Environment 2.1 for OS/2 Warp: 
  261.       application programming interface that is referenced. For example, 
  262.       rpc_binding_free API, rpc_binding_free call, and rpc_binding_free 
  263.       routine, all refer to the same rpc_binding_free API. 
  264.  
  265.    2. Throughout this document, all references to individual DCE. components 
  266.       (such as RPC) refer to that component with the IBM Distributed Computing 
  267.       Environment 2.1 for OS/2 Warp: product. For example, references to RPC, 
  268.       DCE RPC, and IBM DCE for OS/2 RPC all refer to the same IBM DCE for OS/2 
  269.       component - RPC. 
  270.  
  271.  
  272. ΓòÉΓòÉΓòÉ 3. DCE Directory Service Overview ΓòÉΓòÉΓòÉ
  273.  
  274. This section of the DCE for OS/2 Warp Application Development Guide - Directory 
  275. Services provides an overview of the DCE Directory Service for application 
  276. programmers. This section begins with a basic description. It then introduces 
  277. DCE Directory Service concepts, the structure of DCE names, and the DCE 
  278. namespace. This section then provides an overview of the programming interfaces 
  279. used to access the DCE Directory Service. 
  280.  
  281.  
  282. ΓòÉΓòÉΓòÉ 3.1. Introduction to the DCE Cell Directory Service ΓòÉΓòÉΓòÉ
  283.  
  284. This section describes how application developers can access the DCE Directory 
  285. Service. From the application programmer's perspective, the Directory Service 
  286. has three main parts - the DCE Cell Directory Service (CDS), the DCE Global 
  287. Directory Service (GDS), and the X/Open Directory Service (XDS) and X/Open 
  288. OSI-Abstract-Data Manipulation (XOM) programming interfaces. GDS is not 
  289. supported for this release of DCE. See the DCE for AIX Version 1.3 publications 
  290. if you need information on GDS. 
  291.  
  292. This product contains support for the XDS/XOM API over CDS. Although the 
  293. documentation contains numerous references to the functions provided by the 
  294. Global Directory Services (GDS), only the XDS/XOM API over CDS functionality is 
  295. shipped with this product. 
  296.  
  297.  
  298. ΓòÉΓòÉΓòÉ 3.1.1. Document Usage ΓòÉΓòÉΓòÉ
  299.  
  300. Before reading this guide, you should read the Introduction to Distributed 
  301. Computing Environment. It contains overviews, along with illustrations, of all 
  302. the DCE components and of DCE as a whole. Introductions that are necessary to a 
  303. full understanding of what is described here. Next, read this section in its 
  304. entirety. 
  305.  
  306. If you do not find the information you need either in this guide or in the DCE 
  307. for OS/2 Warp: Application Development Reference, see the DCE for OS/2 
  308. Warp:Administration Guide and the DCE for OS/2 Warp: Administration Command 
  309. Reference. For example, information about the DCE Cell Directory Service as a 
  310. separate component is found in the administration documentation. Although the 
  311. DCE Security Service is documented in the application development guides, some 
  312. information of interest to programmers (such as adding new principals to the 
  313. registry database) is also found in the administration information units. 
  314.  
  315.  
  316. ΓòÉΓòÉΓòÉ 3.1.2. Directory Service Tools ΓòÉΓòÉΓòÉ
  317.  
  318. CDS has commands that allow system administrators to inspect and alter the 
  319. contents of the directory. This can be useful when developing applications that 
  320. access the DCE namespace. 
  321.  
  322. For information on the CDS Control Program (cdscp), see the DCE for OS/2 
  323. Warp:Administration Guide. 
  324.  
  325.  
  326. ΓòÉΓòÉΓòÉ 3.2. Using the DCE Directory Service ΓòÉΓòÉΓòÉ
  327.  
  328. The DCE Directory Service can be used in many ways. It is used by the DCE 
  329. services to support the DCE environment. For example, cells can be registered 
  330. in the global part of the Directory Service, enabling users from different 
  331. cells to share information and resources (you will need an AIX Version 1.3 
  332. system as part of your cell to perform this function). 
  333.  
  334. The DCE Directory Service is also useful to DCE applications. The client and 
  335. server sides of an application can use the Directory Service to find each 
  336. other's locations. The Directory Service can also be used to store information 
  337. that needs to be made available in a globally accessible, well-known place. 
  338.  
  339. For example, one DCE application could be a print service consisting of a 
  340. client side application that makes requests for jobs to be printed, and a 
  341. server side that prints jobs on an available printer. The Directory Service 
  342. could be used as a central place where the print clients could look up the 
  343. location of a print server. Furthermore, the Directory Service could be used to 
  344. store information about printers; for example, what type of jobs a printer can 
  345. accept, whether the printer is currently up or down, and whether it is 
  346. currently lightly or heavily loaded. 
  347.  
  348. In some ways, a Directory Service can be used in the same way as a file system 
  349. has traditionally been used; that is, for containing globally accessible 
  350. information in a well-known place. An example is, the use of configuration 
  351. information stored in files in a UNIX /etc directory. However, the Directory 
  352. Service differs in important ways. It can be replicated so that information is 
  353. available even if one server goes down. Replicas can be kept automatically 
  354. up-to-date, so that, unlike multiple copies of a file on different machines, 
  355. the information in the replicas of the Directory Service can be kept current 
  356. without manual intervention. 
  357.  
  358. The Directory Service can also provide security for data that is kept in a 
  359. globally accessible place. It supports Access Control Lists (ACLs) that provide 
  360. fine-grained control over who is able to read, modify, create, and perform 
  361. other operations on its data. 
  362.  
  363. As you learn about the DCE Directory Service and how to access it, think about 
  364. the ways in which your application can best take advantage of the services it 
  365. provides. 
  366.  
  367.  
  368. ΓòÉΓòÉΓòÉ 3.3. DCE Directory Service Concepts ΓòÉΓòÉΓòÉ
  369.  
  370. This section provides a description of DCE Directory Service concepts that are 
  371. important to application developers. The following concepts are intended to 
  372. convey general definitions that are applicable to the DCE Directory Service as 
  373. a whole rather than specific to a particular Directory Service component. For 
  374. more detailed definitions, see the Glossary in the Introduction to Distributed 
  375. Computing Environment. 
  376.  
  377.    o  DCE Namespace - The DCE namespace is the collection of names in a DCE 
  378.       environment. It can be made up of several domains, in which different 
  379.       types of servers own the names in different parts of the namespace (see 
  380.       DCE Cell Namespace in the DCE for OS/2 Warp: Administration Guide. 
  381.       Typically, there are two high-level, or global, domains to a DCE 
  382.       namespace: the GDS namespace and the Domain Name Service (DNS) namespace. 
  383.       At the next level is the CDS namespace, with names contained in the 
  384.       cell's CDS Server. A DCE environment always contains a cell namespace, 
  385.       which is implemented by CDS. Parts of the DCE namespace can be contained 
  386.       in any of the Directory Services; for example, the DFS namespace, also 
  387.       called the filespace, contains the names of files and directories in DFS, 
  388.       and the Security namespace contains principals and groups contained in 
  389.       the Security Server. 
  390.  
  391.       The term DCE namespace is used when referring to names, but not the 
  392.       information associated with them. For example, it would include the name 
  393.       of a printer in the Directory Service, but not its associated location 
  394.       attribute, and it would include the name of a DFS file, but not its 
  395.       contents. 
  396.  
  397.    o  Cell Namespace - All of the names found in a single DCE cell comprise the 
  398.       cell's namespace. This includes names managed by the cell's CDS Server 
  399.       and Security Server, names in the cell's DFS if it has one, and any other 
  400.       names that reside within a particular cell. 
  401.  
  402.    o  Hierarchy - The DCE namespace is organized into a hierarchy; that is, 
  403.       each name except the global root has a parent node and can itself have 
  404.       child nodes or leaves. The leaves are called objects or entries, and in 
  405.       the CDS and DFS namespace, the nodes are called directories. 
  406.  
  407.    o  Directory - The word directory has two meanings, which can be 
  408.       differentiated by their context. The first is the node of a hierarchy as 
  409.       mentioned in the previous definition. The second is a collection of 
  410.       objects managed by a directory service. 
  411.  
  412.    o  Directory Service - A directory service is software that manages names 
  413.       and their associated attributes. A directory service can store 
  414.       information, be queried about information, and be requested to change 
  415.       information. DCE for OS/2 Warp 2.1 contains Cell Directory Service (CDS) 
  416.       and interacts with DNS and GDS (which are not part of this release). 
  417.  
  418.    o  Junction - A junction is a point in the DCE namespace where two domains 
  419.       meet. For example, the point where the DFS entries are mounted into a CDS 
  420.       namespace is a junction. DCE also has junctions between the global 
  421.       directory services and CDS, and between CDS and the Security Service. 
  422.  
  423.    o  Object - The word object can have two meanings, depending on the context. 
  424.       Sometimes it means an entry in a directory service. Sometimes it means a 
  425.       real object that an entry in a directory service describes, such as a 
  426.       printer. In the context of XDS/XOM, the requested data is returned to the 
  427.       application in one or more interface objects, which are data structures 
  428.       that the application can manipulate. 
  429.  
  430.    o  Entry - An entry is a unit of information in a directory service. It 
  431.       consists of a name and associated attributes. For example, an entry could 
  432.       consist of the name of a printer, its capabilities, and its network 
  433.       address. 
  434.  
  435.            Class   In GDS, each entry has a class associated with it. The class 
  436.                    determines what type of entry it is and what attributes can 
  437.                    be associated with it. Class is optional in CDS. 
  438.  
  439.            Link    A link is one type of object class. This type of object is a 
  440.                    pointer to another object; it is similar to a soft link in a 
  441.                    UNIX file system. A CDS link is similar to a GDS alias. 
  442.  
  443.    o  Attribute - If an object is like a complex data structure, then its 
  444.       attributes are analogous to the separate member fields within that 
  445.       structure. Some of an object's attributes can be of significance only to 
  446.       the directory service that manages it. With attributes such as these, a 
  447.       directory service implements objects that contain various kinds of data 
  448.       about the directory itself, thus enabling the service to organize the 
  449.       entries into a meaningful structure. For example, directory objects can 
  450.       contain attributes whose values are other directory objects (called child 
  451.       directories or subdirectories) in the directory. Or link objects can 
  452.       contain attributes whose values are the names and internal identifiers of 
  453.       other directory entries, making a link object's entry name an alias of 
  454.       the other object to which its attributes indirectly refer. 
  455.  
  456.            Type    Every attribute is characterized as being of a certain type. 
  457.                    The attribute is used to hold a certain kind of data, such 
  458.                    as a zip code or the name of a cat. Entries can also be 
  459.                    classified by type; for entries, the term used is class. 
  460.  
  461.            Value   An attribute can have one or more values. 
  462.  
  463.    o  Object Identifier - Directory attributes are uniquely identified by 
  464.       Object Identifiers (OIDs), which are administered by the International 
  465.       Organization for Standardization (ISO). In GDS, OIDs are also used to 
  466.       identify object classes. When it creates new attribute types, an 
  467.       application is responsible for tagging them with new, properly allocated 
  468.       OIDs (see your Directory Service administrator for OID assignments). In 
  469.       CDS, attribute types are sometimes identified by strings, which can be 
  470.       representations of OIDs. The cds_attr file contains the string to OID 
  471.       mappings. 
  472.  
  473.    o  Name - A DCE name corresponds to an entry in some service participating 
  474.       in the DCE namespace, usually a directory service (see DCE Cell Namespace 
  475.       in the DCE for OS/2 Warp: Administration Guide). 
  476.  
  477.            Global Name       A global name is a name that contains a path 
  478.                              through one of the global namespaces (GDS or DNS). 
  479.  
  480.            Local Name        A local name is a name that uses the cell prefix 
  481.                              /.: to indicate the cell name and therefore does 
  482.                              not have a specific path through a global 
  483.                              namespace. The entry for a local name is always 
  484.                              contained in the local cell. 
  485.  
  486.    o  Access Control List - Access to DCE namespace entries is determined by 
  487.       lists of entities that are attached through the DCE Security Service to 
  488.       both the entries and the objects when they are created. The lists, called 
  489.       Access Control Lists (ACLs), specify the privileges that an entity or 
  490.       group of entities has for the entry the ACL is associated with. The DCE 
  491.       Security Service provides servers with authenticated identification of 
  492.       every entity that contacts them; it is then the server's responsibility 
  493.       to check the ACL attached to the object that the potential client wants 
  494.       to access, and perform or refuse to perform the requested operation on 
  495.       the basis of what it finds there. The ACLs are checked using Security 
  496.       Service library routines. 
  497.  
  498.       Objects in the GDS namespace have ACLs associated with them, but they are 
  499.       not DCE Security Service ACLs. 
  500.  
  501.    o  Replication - The DCE Directory Service can keep replicas (copies) of its 
  502.       data on different servers. This means that if one server is unavailable, 
  503.       clients can still obtain information from another server. 
  504.  
  505.    o  Caching - The CDS component of the DCE Directory Service supports caching 
  506.       of data on the client machine. When a client requests a piece of data 
  507.       from the Directory Service for the first time, the information must be 
  508.       obtained over the network from a server. However, the data can then be 
  509.       cached (stored) on the local machine, and subsequent requests for the 
  510.       same data can be satisfied more quickly by looking in the local cache 
  511.       instead of sending a request over the network. Programmers need to be 
  512.       aware of caching because in some cases you will want to bypass the cache 
  513.       to ensure that the data you obtain is as up-to-date as possible. 
  514.  
  515.  
  516. ΓòÉΓòÉΓòÉ 3.4. Structure of DCE Names ΓòÉΓòÉΓòÉ
  517.  
  518. The following sections describe the structure of the names found in a DCE 
  519. environment. DCE names can consist of several different parts, which reflect 
  520. the federated nature of the DCE namespace. A DCE name has some combination of 
  521. the following elements. They must occur in this order, but most elements are 
  522. optional. 
  523.  
  524.    o  Prefix 
  525.    o  GDS cell name or DNS cell name 
  526.    o  GDS name or CDS name 
  527.    o  Junction 
  528.    o  Application name 
  529.  
  530.  A DCE name can be represented by a string that is a readable description of a 
  531.  specific entry in the DCE namespace. The name is a string consisting of a 
  532.  series of elements separated by slashes (/). The elements are read from left 
  533.  to right. Each consecutive element adds further specificity to the entry being 
  534.  described, until finally one arrives at the rightmost element, which is the 
  535.  simple name of the entry itself. Thus, in appearance DCE names are similar to 
  536.  UNIX file names. 
  537.  
  538.  In the discussion that follows, a DCE name element is the single piece of a 
  539.  name string enclosed between a consecutive pair of slashes. For example, in 
  540.  the following string: 
  541.  
  542.   /.../C=US/O=OSF/OU=DCE/hosts/abc/self
  543.  
  544.  the substring O=OSF is an element and so is abc. 
  545.  
  546.  The entire name contains (counting the ... element) a total of seven elements. 
  547.  
  548.  In GDS, an element is called a Relative Distinguished Name (RDN) and the 
  549.  entire name is called a Distinguished Name (DN). In the preceding example, the 
  550.  attribute type O stands for the Organization type OID, which is 2.5.4.10. 
  551.  
  552.  
  553. ΓòÉΓòÉΓòÉ 3.4.1. DCE Name Prefixes ΓòÉΓòÉΓòÉ
  554.  
  555. The leftmost element of any valid DCE name is a root prefix. The appearance and 
  556. meaning of each is as follows: 
  557.  
  558.  /...   This is the global root. It signifies that the immediately following 
  559.         elements form the name of a global namespace entry. Usually, the 
  560.         entry's contents consist of binding information for a DCE cell (more 
  561.         specifically, for some CDS server in the cell), and the name of the 
  562.         global entry is the name of the cell. 
  563.  
  564.  /.:    This is the cell root. It is an alias for the global prefix plus the 
  565.         name of the local cell; that is, the cell in which the prefix is being 
  566.         used. It signifies that the immediately following elements taken 
  567.         together form the name of a cell namespace entry. 
  568.  
  569.  /:     This is the filespace root. It is an alias for the global prefix, the 
  570.         name of the local cell, and the DFS junction. 
  571.  
  572.  DCE also supports a junction into the Security Service namespace, but there is 
  573.  no alias for this junction. 
  574.  
  575.  A prefix by itself is a valid DCE name. For example, you can list the contents 
  576.  of the /.: directory to see the top-level entries in the CDS namespace, and 
  577.  you can use a file system command to list the contents of the /: directory to 
  578.  see the top-level entries in the filespace. 
  579.  
  580.  
  581. ΓòÉΓòÉΓòÉ 3.4.2. Names of Cells ΓòÉΓòÉΓòÉ
  582.  
  583. After the global root prefix, the next section of a DCE name contains the name 
  584. of the cell in which the object's name resides. The name of a cell can be 
  585. expressed as either a GDS name or a DNS name, depending on which global 
  586. directory service (GDS or DNS) the cell is registered in. The following 
  587. sections provide examples. 
  588.  
  589.  
  590. ΓòÉΓòÉΓòÉ 3.4.2.1. GDS Cell Names ΓòÉΓòÉΓòÉ
  591.  
  592. GDS elements always consist of a substring in which an abbreviation or acronym 
  593. in capital letters is followed by an equal sign (=), which is followed by a 
  594. string value. These substrings represent pairs of attribute types and attribute 
  595. values. See Programming in the CDS Namespace for more information. 
  596.  
  597. For example, in the global DCE name 
  598.  
  599. /.../C=DE/O=SNI/OU=DCE/subsys/druecker/docs
  600.  
  601. the attribute = value form of the leftmost elements after the /... indicates 
  602. that the global part of the name is a GDS namespace entry, and that it ends 
  603. after the OU=DCE element; therefore, the rest of the name is in the 
  604. /.../C=DE/O=SNI/OU=DCE cell. 
  605.  
  606.  
  607. ΓòÉΓòÉΓòÉ 3.4.2.2. DNS Cell Names ΓòÉΓòÉΓòÉ
  608.  
  609. If DNS is used as the global directory, a global name has a form like the 
  610. following: 
  611.  
  612. /.../cs.univ.edu/subsys/printers/docs
  613.  
  614. where the single element 
  615.  
  616. cs.univ.edu
  617.  
  618. is the cell name; that is, the cell's name in the DNS namespace. The DNS name 
  619. consists of up to four domain names (depending on the name assigned to the 
  620. cell), separated by dots. 
  621.  
  622.  
  623. ΓòÉΓòÉΓòÉ 3.4.2.3. Discovering Your Local Cell's Name ΓòÉΓòÉΓòÉ
  624.  
  625. A DCE cell consists of the machines that are configured into it; each DCE 
  626. machine belongs to one DCE cell. Your local cell is therefore the cell to which 
  627. the machine you are using belongs. Depending on the DCE name you are using, you 
  628. can access your own cell or other (foreign) cells. If the name you are 
  629. accessing is global, then its cell is explicitly named. If the name begins with 
  630. the local cell prefix, then you are accessing a name within your local cell. 
  631. You can find out what cell you are in by calling the dce_cf_get_cell_name 
  632. function. 
  633.  
  634. Using the global directory services, applications can access resources and 
  635. services in foreign cells; however, applications most frequently use resources 
  636. from their local cell. If this is not the case, the cell boundaries can not 
  637. have been well chosen. 
  638.  
  639.  
  640. ΓòÉΓòÉΓòÉ 3.4.3. CDS Names ΓòÉΓòÉΓòÉ
  641.  
  642. After the cell name or cell root prefix, the next part of a DCE name is often a 
  643. CDS name. For example, in the name /.../C=DE/O=SNI/OU=DCE/subsys/druecker/docs, 
  644. the CDS part is /subsys/druecker/docs. Or, in the name 
  645. /.../cs.univ.edu/subsys/printers/docs, the CDS part is /subsys/printers/docs. 
  646.  
  647. The following strings show equivalent names using the cell root prefix, 
  648. assuming that the name is used from within the /.../C=DE/O=SNI/OU=DCE and 
  649. /.../cs.univ.edu cells, respectively: 
  650.  
  651. /.:/subsys/druecker/docs
  652. /.:/subsys/printers/docs
  653.  
  654.  
  655. ΓòÉΓòÉΓòÉ 3.4.4. GDS Names ΓòÉΓòÉΓòÉ
  656.  
  657. Some names fall entirely in the GDS namespace. These names are pure X.500 (and 
  658. therefore GDS) names, because each element consists of a type and an attribute. 
  659. The entries for these names are contained in a GDS server. The following is an 
  660. example of a pure GDS name: 
  661.  
  662. /.../C=US/L=Cambridge/CN=Kilroy
  663.  
  664.  
  665. ΓòÉΓòÉΓòÉ 3.4.5. Junctions in DCE Names ΓòÉΓòÉΓòÉ
  666.  
  667. Some junctions are implied in a DCE name; others can be seen. There is an 
  668. implied junction between the global prefix and either GDS or DNS. It occurs 
  669. after the global prefix. The junction between either of the global namespaces 
  670. and the local cell namespace is also implied. It occurs after the cell name. 
  671. The junction between the local cell namespace and either the DFS namespace or 
  672. the security namespace is shown by the symbol /fs or /sec, respectively. The 
  673. following are examples of visible junctions in DCE names: 
  674.  
  675. /.:/fs/usr/snowpaws
  676. /.../dce.osf.org/sec/principal/ziggy
  677.  
  678.  
  679. ΓòÉΓòÉΓòÉ 3.5. Application Names ΓòÉΓòÉΓòÉ
  680.  
  681. The part of a DCE name that occurs after a junction into a DCE application is 
  682. the application name. DFS and Security names are the currently supported 
  683. examples; in the future, application programmers might also be able to create 
  684. junctions in the namespace. 
  685.  
  686. DFS names occur after the DFS junction. They are typeless and resemble UNIX 
  687. file system names. After the global and CDS parts of a DFS name have been 
  688. resolved by the appropriate directory services, the rest of the DFS name is 
  689. handled within the Distributed File Service. In the equivalent examples that 
  690. follow, /usr/snowpaws is the DFS part of the DCE name: 
  691.  
  692. /.../dce.osf.org/fs/usr/snowpaws
  693. /.:/fs/usr/snowpaws
  694. /:/usr/snowpaws
  695.  
  696. Security names are similar to DFS names; first the parts of the name within the 
  697. DCE Directory Service are resolved, then the rest of the name is handled by the 
  698. Security Service. The entry is contained in the Security registry database. In 
  699. the following example: 
  700.  
  701. /.:/sec/principal/ziggy
  702.  
  703. the Security part of the DCE name is /principal/ziggy. 
  704.  
  705.  
  706. ΓòÉΓòÉΓòÉ 3.6. The Federated DCE Namespace ΓòÉΓòÉΓòÉ
  707.  
  708. The DCE namespace is a single hierarchy of names, but the names can be 
  709. contained in many different services. Because several services cooperate to 
  710. make the DCE namespace, it is a federated namespace. 
  711.  
  712. "A Federated DCE Namespace" shows a typical DCE namespace and the different 
  713. services in which names reside. 
  714.  
  715.  
  716. A Federated DCE Namespace
  717.  
  718.  
  719. ΓòÉΓòÉΓòÉ 3.6.1. The GDS Namespace ΓòÉΓòÉΓòÉ
  720.  
  721. This section provides a brief overview of the main characteristics of the GDS 
  722. namespace regarded apart from the XDS interface used to access it. 
  723.  
  724. In a GDS name such as /.../C=US/O=OSF/OU=DCE, the C=US and O=OSF elements do 
  725. not refer to directory entries that are fundamentally different from the one 
  726. represented by OU=DCE, unlike in CDS or the UNIX file system. 
  727.  
  728. Thus, in the name string 
  729.  
  730. /C=US/O=OSF/OU=DCE
  731.  
  732. the element C=US refers to a one-level-down Country entry whose value is US, 
  733. then to a two-levels-down Organization entry whose value is OSF, and then to a 
  734. three-levels-down Organization Unit entry whose value is DCE. Concatenating 
  735. these elements results in a valid path of entries from the directory root to 
  736. the DCE entry. The entry itself is the namespace sign to a GDS directory object 
  737. that contains binding information for the /.../C=US/O=OSF/OU=DCE cell. 
  738.  
  739. "GDS Namespace Entries and Directory Objects" shows what a part of the DCE 
  740. global namespace could look like. 
  741.  
  742.  
  743. GDS Namespace Entries and Directory Objects
  744.  
  745. Levels in the tree of entries are numbered; the global root is at Level 0. The 
  746. GDS structure rules define what is allowed at each level. The structure rules 
  747. for the above figure show only country name entries at the next level under the 
  748. root; organization name and locality name entries can exist at the level below 
  749. a country name. An organizational unit name can be a child of an organizational 
  750. name entry, and a common name can be a child of a locality name. 
  751.  
  752. The object entry /C=US/O=OSF/OU=DCE belongs to the Organizational Unit class. 
  753. One of the object's values is the CDS server binding information that is used 
  754. to reach the cell from other DCE cells. The entire name is an attribute of the 
  755. object that it refers to, as is the CDS server binding information that it 
  756. contains. 
  757.  
  758.  
  759. ΓòÉΓòÉΓòÉ 3.6.1.1. The GDS Schema ΓòÉΓòÉΓòÉ
  760.  
  761. The schema defines the shape and format of entries in the GDS directory. It 
  762. contains four types of rules, which describe the following: 
  763.  
  764.    o  The legal hierarchy of entries. What entries can be subordinate of other 
  765.       entries. These rules are what prevents, for example, countries from being 
  766.       subordinate to states. 
  767.  
  768.    o  The allowable object classes, the mandatory and optional attributes of 
  769.       entries, and which attributes are the naming attributes. 
  770.  
  771.    o  The allowable attribute types, associating a unique OID and an attribute 
  772.       syntax with each attribute type. 
  773.  
  774.    o  The syntaxes of attributes that describe what attribute values look like, 
  775.       such as strings, numbers, or OIDs. 
  776.  
  777.  By installing the proper schema, an entry of any particular object class can 
  778.  have the two attributes needed to identify a cell. 
  779.  
  780.  
  781. ΓòÉΓòÉΓòÉ 3.6.2. The CDS Namespace ΓòÉΓòÉΓòÉ
  782.  
  783. The CDS namespace is the part of the DCE namespace that resides in the local 
  784. cell's CDS. DCE itself is made up of components that, like the applications 
  785. that use them, are distributed client/server applications. These components 
  786. rely on the Cell Directory Service to make themselves available as services to 
  787. DCE applications. This requires that the structure of the cell namespace be 
  788. stable, known, and have parts that are not alterable by casual users or 
  789. applications. 
  790.  
  791.  
  792. ΓòÉΓòÉΓòÉ 3.6.2.1. The CDS Schema ΓòÉΓòÉΓòÉ
  793.  
  794. The cell namespace hierarchy model is different from the GDS model, and the CDS 
  795. rules do not enforce any particular model; CDS allows entries containing any 
  796. kind of data to be created anywhere in the namespace. Thus, CDS offers a 
  797. free-form namespace in which entries and directories can be organized as 
  798. desired, and in which any entry or directory can contain any attributes. The 
  799. CDS administrator can create additional directories, and applications can add 
  800. name entries as needed; applications cannot create CDS directory entries. 
  801. Because of this, and because the cell namespace is so important to the 
  802. operation of the cell, application developers and system administrators have 
  803. more responsibility in planning and regulating their use of it. 
  804.  
  805. The cell namespace has a structure similar to that of a UNIX file system. The 
  806. CDS namespace is a tree of entries that grows from the root downward. The name 
  807. entries are organized under directory entries, which can themselves be 
  808. subentries of other directories. The cell root (represented by the prefix /.: ) 
  809. can be thought of as the location you get when you dereference the cell's 
  810. global name. New directories and new entries within the directories can be 
  811. added anywhere in the tree, subject to the restrictions mentioned previously. 
  812.  
  813.  
  814. ΓòÉΓòÉΓòÉ 3.6.2.2. CDS Entries and CDS Attributes ΓòÉΓòÉΓòÉ
  815.  
  816. There are three different kinds of CDS entries that are of significance to 
  817. application programmers: 
  818.  
  819.    o  Object 
  820.    o  Soft link 
  821.    o  Directory 
  822.  
  823.  The object entries are the most primitive form. These are where data is 
  824.  stored. Directory entries contain other entries (that is, can have children) 
  825.  just like UNIX file system directories. Soft link entries are essentially 
  826.  alias names for other directory or object entries. Only object entries and 
  827.  soft links can be created by applications; directories must be created and 
  828.  manipulated with the cdscp command. 
  829.  
  830.  Thus, any CDS entry is defined as a directory, a soft link, or an object entry 
  831.  by the presence of a certain combination of attributes belonging to that kind 
  832.  of entry. You can use the cdscp command to get a display of all the attributes 
  833.  of any CDS entry. 
  834.  
  835.  The term attribute as applied to namespace entry objects has roughly the same 
  836.  meaning in CDS and GDS. The main difference is that CDS does not restrict or 
  837.  control the combinations of attributes attached to entries written in its 
  838.  namespace. 
  839.  
  840.  
  841. ΓòÉΓòÉΓòÉ 3.7. Programming Interfaces to the DCE Directory Service ΓòÉΓòÉΓòÉ
  842.  
  843. Two sections that describe programming interfaces for accessing the DCE 
  844. Directory Service are: 
  845.  
  846.    o  The X/Open Directory Service Interface 
  847.    o  The RPC Name Service Interface 
  848.  
  849.  For information about programming interfaces to names that occur in namespace 
  850.  junctions, see the documentation for the component. 
  851.  
  852.  
  853. ΓòÉΓòÉΓòÉ 3.7.1. The X/Open Directory Service Interface ΓòÉΓòÉΓòÉ
  854.  
  855. The main programming interface to all services within the DCE Directory Service 
  856. is XDS/XOM, as defined by X/Open. The calls correspond to the X.500 service 
  857. requests, including Read, List (enumerate children), Search, Add Entry, Modify 
  858. Entry, Modify RDN, and Remove Entry. XDS uses XOM to define and manipulate data 
  859. structures (called objects) used as the parameters to these calls, and used to 
  860. describe the directory entries manipulated by the calls. XOM is extremely 
  861. flexible, but also somewhat complex. The interfaces are used in different ways, 
  862. depending on which underlying directory service is being addressed. For 
  863. example, CDS entries are typeless, but GDS entries are typed. This difference 
  864. is reflected in the use of the interface. 
  865.  
  866.  
  867. ΓòÉΓòÉΓòÉ 3.7.2. The RPC Name Service Interface ΓòÉΓòÉΓòÉ
  868.  
  869. The DCE Remote Procedure Call facility supports an interface to the Directory 
  870. Service that is specific to RPC and is layered on top of DCE Directory Service 
  871. interfaces; it is called the Name Service Independent (NSI) interface. NSI can 
  872. manipulate three object classes - entries, groups, and profiles (which were 
  873. created to store RPC binding information). NSI data is stored in CDS. 
  874.  
  875.  
  876. ΓòÉΓòÉΓòÉ 4. Programming in the CDS Namespace ΓòÉΓòÉΓòÉ
  877.  
  878. This section provides information about writing applications that use the 
  879. XDS/XOM interface to access the portion of the DCE namespace contained in the 
  880. Cell Directory Service. 
  881.  
  882. The XDS/XOM interface provides generalized access to CDS. 
  883.  
  884. If you only need to use CDS to store information related to RPC (for example, 
  885. storing the location of a server so that clients can find it), you should use 
  886. the Name Service Independent (NSI) interface of DCE RPC. NSI implements 
  887. RPC-specific use of the namespace. For information on using RPC NSI, see DCE 
  888. for OS/2 Warp: Application Development Guide - Core Components. 
  889.  
  890. For information on the details of accessing the CDS namespace through the 
  891. XDS/XOM interface, see XDS and the DCE Cell Namespace. 
  892.  
  893.  
  894. ΓòÉΓòÉΓòÉ 4.1. Initial Cell Namespace Organization ΓòÉΓòÉΓòÉ
  895.  
  896. The following sections describe the organization of a cell's namespace after it 
  897. has initially been configured. For more information on configuring a cell, see 
  898. the DCE for OS/2 Warp: Administration Guide. 
  899.  
  900. Every DCE cell is set up at configuration with the basic namespace structure 
  901. necessary for the other DCE components to be able to find each other and to be 
  902. accessible to applications. The vital parts of the namespace are protected from 
  903. being accessed by unauthorized entities by Access Control Lists (ACLs) that are 
  904. attached to the entries and directories. 
  905.  
  906. "The Cell Namespace After Configuration" shows what the cell namespace looks 
  907. like after a cell has been configured and before any additional directories or 
  908. entries have been added to it by system administrators or applications. In the 
  909. figure, ovals represent directories, rectangles represent simple entries, 
  910. circles represent soft links, and triangles represent namespace junctions. 
  911.  
  912.  
  913. The Cell Namespace After Configuration
  914.  
  915. The following sections describe the organization of a cell's namespace after it 
  916. has initially been configured. For more information on configuring a cell, see 
  917. the DCE for OS/2 Warp: Administration Guide. 
  918.  
  919. All of the simple entries shown in the figure are created for use with RPC NSI 
  920. routines; that is, they all contain server-binding information and exist to 
  921. enable clients to find servers. These are referred to as RPC entries. 
  922.  
  923. Note:  Only the name entries (those in boxes) and junction entries (those in 
  924.        triangles) are RPC entries. The directories (entries indicated by ovals) 
  925.        are normal CDS directories. 
  926.  
  927.  Some of the namespace entries in the figure are intended to be used (if 
  928.  desired) directly by applications (namely, /.:/cell-profile, /.:/lan-profile, 
  929.  and, through the /: soft link alias, /.:/fs). The self and profile name 
  930.  entries under hosts also fall into this category. Others, such as those under 
  931.  /.:/subsys/dce, are for the internal use of the DCE components themselves. 
  932.  
  933.  Each of the entries is explained in detail in the sections: 
  934.  
  935.    o  The Cell Profile 
  936.    o  LAN Profile 
  937.    o  The CDS Clearinghouse 
  938.    o  Hosts Directory 
  939.    o  Subsystems Directory 
  940.    o  The /: DFS Alias 
  941.    o  The DFS and Security Service Junctions 
  942.  
  943.  See the DCE for OS/2 Warp: Administration Guide for detailed information on 
  944.  the contents of the initial DCE cell namespace. 
  945.  
  946.  
  947. ΓòÉΓòÉΓòÉ 4.1.1. The Cell Profile ΓòÉΓòÉΓòÉ
  948.  
  949. The /.:/cell-profile entry is an RPC profile entry that contains the default 
  950. list of namespace entries to be searched by clients trying to bind to certain 
  951. basic services. An RPC profile is a class of namespace entry used by the RPC 
  952. NSI routines. When a client imports bindings from such an entry, it imports, 
  953. through the profile, from an ordered list of RPC entries containing appropriate 
  954. bindings. The list of entries is keyed by their interface UUIDs so that only 
  955. bindings to servers offering the interface sought by the client are returned. 
  956. The entries listed in the profile exist independently in the namespace, and can 
  957. be separately accessed in the normal way. The profile is simply a way of 
  958. organizing clients' searches. 
  959.  
  960. The main purpose of cell-profile is to have a path of last resort for 
  961. prospective clients. All other profile entries in the cell namespace are 
  962. required to have the cell-profile entry in their entry lists so that if a 
  963. client exhausts a particular profile's list of entries, it tries the entries in 
  964. cell-profile. 
  965.  
  966.  
  967. ΓòÉΓòÉΓòÉ 4.1.2. LAN Profile ΓòÉΓòÉΓòÉ
  968.  
  969. /.:/lan-profile is a LAN-oriented default list of services' namespace entries, 
  970. for use when servers' relative positions in the network topography are of 
  971. importance to their prospective clients. 
  972.  
  973.  
  974. ΓòÉΓòÉΓòÉ 4.1.3. The CDS Clearinghouse ΓòÉΓòÉΓòÉ
  975.  
  976. The /.:/cdshostname_ch entry is the namespace entry for cdshostname's 
  977. clearinghouse, where cdshostname is the name of the host machine on which a CDS 
  978. server is installed. 
  979.  
  980. A clearinghouse is the database managed by a CDS server; it is where CDS 
  981. directory replicas are physically stored. For more information about 
  982. clearinghouses, see the DCE for OS/2 Warp: Administration Guide. All 
  983. clearinghouse namespace entries reside at the cell root, and there must be at 
  984. least one in a DCE cell. The first clearinghouse's name must be in the form 
  985. shown in the previous figure, but additional clearinghouses can be named as 
  986. desired. 
  987.  
  988.  
  989. ΓòÉΓòÉΓòÉ 4.1.4. Hosts Directory ΓòÉΓòÉΓòÉ
  990.  
  991. The /.:/hosts entry is a directory containing entries for all of the host 
  992. machines in the cell. Each host has a separate directory under hosts; its 
  993. directory has the same name as the host. Four entries are created in each 
  994. host's directory: 
  995.  
  996.    o  self - This entry contains bindings to the host's RPC daemon (rpcd, also 
  997.       called the endpoint mapper), which is responsible for dynamically 
  998.       resolving the partial bindings that it receives in incoming RPCs from 
  999.       clients attempting to reach servers resident on this host. 
  1000.  
  1001.    o  profile - This entry is the default profile entry for the host. This 
  1002.       profile contains in its list of entries at least the /.:/cell-profile 
  1003.       entry described in The Cell Profile. 
  1004.  
  1005.    o  cds-clerk - This entry contains bindings to the host's resident CDS 
  1006.       clerk. 
  1007.  
  1008.    o  cds-server - This entry contains bindings to a CDS server. 
  1009.  
  1010.  
  1011. ΓòÉΓòÉΓòÉ 4.1.5. Subsystems Directory ΓòÉΓòÉΓòÉ
  1012.  
  1013. The /.:/subsys entry is the directory for subsystems. Subdirectories below 
  1014. subsys are used to hold entries that contain location-independent information 
  1015. about services, particularly RPC binding information for servers. 
  1016.  
  1017. The dce directory is created below /.:/subsys at configuration. This directory 
  1018. contains directories for the DCE Security Service and Distributed File Service 
  1019. components. The functional difference between these two directories and the fs 
  1020. and sec junctions described in The DFS and Security Service Junctions is that 
  1021. the latter two entries are the access points for the components' special 
  1022. databases, whereas the directories under subsys/dce contain the services' 
  1023. binding information. 
  1024.  
  1025. Subsystems that are added to DCE should place their system names in directories 
  1026. created beneath the /.:/subsys directory. 
  1027.  
  1028. Companies adding subsystems should conform to the convention of creating a 
  1029. unique directory below subsys by using their trademark as a directory name. Use 
  1030. these directories for storage of location independent information about 
  1031. services. You should store server entries, groups and profiles for the entire 
  1032. cell in the directories below subsys. For example, International Air 
  1033. Freight-supplied subsystems should be placed in /.:subsys/IAF. 
  1034.  
  1035.  
  1036. ΓòÉΓòÉΓòÉ 4.1.6. The /: DFS Alias ΓòÉΓòÉΓòÉ
  1037.  
  1038. The entry /: is created and set up as a soft link to the /.:/fs entry, which is 
  1039. the DFS database junction. The name /: is equivalent to /.:/fs. Note, however, 
  1040. that the name /: is well-known, whereas the name /.:/fs is not, so using /: 
  1041. makes an application more portable. A CDS soft link entry is an alias to some 
  1042. other CDS entry. A soft link is created through the cdscp command. The 
  1043. procedure is described in the DCE for OS/2 Warp: Administration Guide. 
  1044.  
  1045.  
  1046. ΓòÉΓòÉΓòÉ 4.1.7. The DFS and Security Service Junctions ΓòÉΓòÉΓòÉ
  1047.  
  1048. The /.:/fs entry is the Distributed File Service junction entry. This is the 
  1049. entry for a server that manages the DFS file location database. 
  1050.  
  1051. The /.:/sec entry is the DCE Security Service junction entry. This is the entry 
  1052. for a server that manages the Security Service database (also called the 
  1053. registry database). 
  1054.  
  1055. The /.:/fs and /.:/sec root entries in "The Cell Namespace After Configuration" 
  1056. are junctions maintained by DCE components. The /.:/sec junction is the DCE 
  1057. Security Service's namespace of principal identities and related information. 
  1058. The Distributed File Service's fileset location servers are reached through the 
  1059. /.:/fs entry, making /.:/fs effectively the entry point into the cell's 
  1060. distributed file system. 
  1061.  
  1062. Note:  The /.:/sec and /.:/fs are both actually RPC group entries (for 
  1063.        definitions of the RPC entry types, see DCE for OS/2 Warp: Application 
  1064.        Development Reference); the junctions are implemented by the servers 
  1065.        whose entries are members of the group entries. 
  1066.  
  1067.  See the DCE for OS/2 Warp: Administration Guide for further details on the 
  1068.  Security Service and DFS junctions. 
  1069.  
  1070.  
  1071. ΓòÉΓòÉΓòÉ 4.2. Recommended Use of the CDS Namespace ΓòÉΓòÉΓòÉ
  1072.  
  1073. CDS data is maintained in a loosely consistent manner. This means that when the 
  1074. writeable copy of a replicated name is updated, the read/only copies cannot be 
  1075. updated for some period of time, and applications reading from those 
  1076. nonsynchronized copies can receive stale data. This is in contrast to 
  1077. distributed databases, which use multiphase commit protocols that prevent 
  1078. readers from accessing potentially stale or inconsistent data while the writes 
  1079. are being propagated to all copies of the data. It is possible to specifically 
  1080. request data from the master copy, which is guaranteed to be up-to-date, but 
  1081. replication advantages are then lost. This should only be done when it is 
  1082. important to obtain current data. 
  1083.  
  1084.  
  1085. ΓòÉΓòÉΓòÉ 4.2.1. Storing Data in CDS Entries ΓòÉΓòÉΓòÉ
  1086.  
  1087. Some CDS entries can contain information that is immediately useful or 
  1088. meaningful to applications. Other entries can contain RPC information that 
  1089. enables application clients to reach application servers; that is, binding 
  1090. handles for servers, which are stored and retrieved using the RPC NSI routines. 
  1091. In either case, the entry's name should be a meaningful identification label 
  1092. for the information that the entry contains. This is because the namespace 
  1093. entry names are the main clue that users and applications have to the available 
  1094. set of resources in the DCE cell. Using the CDS namespace to store and retrieve 
  1095. binding information for distributed applications is the function of DCE RPC 
  1096. NSI. 
  1097.  
  1098. In general, applications can store data into CDS object entry attributes in any 
  1099. XDS-expressible form they wish. The section Attribute and Data Type Translation 
  1100. shows XDS-to-CDS data type translations. 
  1101.  
  1102. If you add new attributes to the \opt\dcelocal\etc\cds_attr file, together with 
  1103. a meaningful CDS syntax (that is, a data type identifier) and name, then the 
  1104. attribute is displayed with the string representation of the OID by cdscp show 
  1105. commands when executed on objects containing instances of that attribute. If 
  1106. the attribute has not been added to cds_attr, then the OID is displayed. There 
  1107. are three main questions to consider when using CDS to store data through 
  1108. application calls to XDS: 
  1109.  
  1110.    1. Where in the CDS namespace should the new entries be placed? 
  1111.  
  1112.       You are free to create new directories as long as you do not disturb the 
  1113.       namespace's configured structure. Keep in mind that CDS directories must 
  1114.       be created with the cdscp command; they cannot be created by 
  1115.       applications. 
  1116.  
  1117.       Only two root-level directories are created at configuration: hosts and 
  1118.       subsys. Applications should not add entries under the hosts tree; the 
  1119.       host's default profile should instead be set up by a system 
  1120.       administrator. The subsys directory is intended to be populated by 
  1121.       directories (for example, /.:/subsys/dce) in which the servers and other 
  1122.       components of independent vendors' distributed products are accessed. 
  1123.       Thus, the typical cell should usually have a series of root-level CDS 
  1124.       directories that represent a reasonable division of categories. 
  1125.  
  1126.       One obvious division could be between entries intended for RPC use (that 
  1127.       is, namespace entries that contain bindings for distributed 
  1128.       applications), and entries that contain data of other kinds. On the other 
  1129.       hand, it can be very useful to add supplementary data attributes to RPC 
  1130.       entries in which various housekeeping or administrative data can be held. 
  1131.       In this way, for example, performance data for printers can be associated 
  1132.       with the print servers' name entries. You can either add new attributes 
  1133.       to the server entries themselves, where, for example, 
  1134.  
  1135.             /.:/applications/printers/pr1
  1136.  
  1137.       is the name of a server entry that receives the new attributes. Or you 
  1138.       can change the subtree structure so that new entries are added to hold 
  1139.       the data, the server bindings are still held in separate wholly RPC 
  1140.       entries, and each group of entries is located under a directory named for 
  1141.       the printer: 
  1142.  
  1143.             /.:/applications/printers/pr1 -directory
  1144.             /.:/applications/printers/pr1/server -server bindings
  1145.             /.:/applications/printers/pr1/stats -extra data
  1146.  
  1147.       In general, the same principals of logic and order that apply to the 
  1148.       organization of a file system apply to the organization of a namespace. 
  1149.       For example, server entries should not be created directly at the 
  1150.       namespace root because this is the place for default profiles, 
  1151.       clearinghouse entries, and directories. 
  1152.  
  1153.       "A Possible Namespace Structure" illustrates some of the preceding 
  1154.       suggestions, added to the initial configuration namespace structure shown 
  1155.       in the "The Cell Namespace After Configuration". 
  1156.  
  1157.  
  1158.             A Possible Namespace Structure
  1159.  
  1160.       In "A Possible Namespace Structure", the vendor of the xyz subsystem has 
  1161.       set up an xyz directory under /.:/subsys in which the system's servers 
  1162.       are exported. This cell also has an /.:/applications directory in which 
  1163.       the printers directory contains separate directories for each installed 
  1164.       printer available on the system; the directory for pr1 is illustrated in 
  1165.       the figure. In the pr1 directory, server is an RPC entry containing 
  1166.       exported binding handles, and stats is an entry created and maintained 
  1167.       through the XDS interface. 
  1168.  
  1169.    2. How should the entries be constructed? 
  1170.  
  1171.       Because CDS allows you to add as many attributes as you wish to an object 
  1172.       entry, it is up to you to impose some restraint in doing this. In view of 
  1173.       the XDS overhead involved in reading and writing single CDS attributes, 
  1174.       it makes sense to combine multiple related attributes under single 
  1175.       entries (that is, in the same directory object) where they can be read 
  1176.       and written in single calls to ds_read or ds_modify_entry. This way, for 
  1177.       example, you only have to create one interface input object (to pass to 
  1178.       ds_read) to read all the attributes, which you can do with one call to 
  1179.       ds_read. You can then separate out the returned subobjects that you are 
  1180.       interested in and ignore the rest. XDS and the DCE Cell Namespace 
  1181.       contains detailed discussions of XDS programming techniques. 
  1182.  
  1183.       In any case, you should define object types for use in applications so 
  1184.       that namespace access operations can be standardized and kept efficient. 
  1185.       A CDS object type consists of a specific set of attributes that belong to 
  1186.       an object of that type, with no other attributes allowed. Note again that 
  1187.       CDS, unlike GDS, does not force you to do things this way. You could 
  1188.       theoretically have hundreds of CDS object entries, each of which would 
  1189.       contain a different combination of attributes. 
  1190.  
  1191.    3. Should a directory or an entry be created? 
  1192.  
  1193.       When you consider adding information to the namespace, you can choose 
  1194.       between creating a new directory, possibly with entries in it, or 
  1195.       creating simply one or more entries. When making your decision, take into 
  1196.       consideration the following: 
  1197.  
  1198.         a. Directories cannot be created using XDS; they must be created using 
  1199.            administrative commands. 
  1200.  
  1201.         b. Directories are more expensive; they take up more space and take 
  1202.            more time to access. However, they can contain entries and can 
  1203.            therefore be used to organize information in the namespace. 
  1204.  
  1205.         c. Entries can be created using XDS and they are cheaper to create and 
  1206.            use than directories. Entries are cheaper to create and use than 
  1207.            directories. However, they must be created in existing directories, 
  1208.            and cannot themselves contain other entries. 
  1209.  
  1210.  
  1211. ΓòÉΓòÉΓòÉ 4.2.2. Access Control for CDS Entries ΓòÉΓòÉΓòÉ
  1212.  
  1213. Each object in the CDS namespace is automatically equipped with a mechanism by 
  1214. which access to it can be regulated by the object's owner or by another 
  1215. authority. For each object, the mechanism is implemented by a separate list of 
  1216. the entities that can access the object in some way; for example, to read it, 
  1217. write to it, delete it. Associated with each entity in this list is a string 
  1218. that specifies which operations are allowed for that entity on the object. The 
  1219. object's list is automatically checked by CDS whenever any kind of access is 
  1220. attempted on that object by any entity. If the entity can be found in the 
  1221. object's list, and if the kind of access the entity intends is found among its 
  1222. permissions, then the operation is allowed to proceed by CDS; otherwise, it is 
  1223. not allowed. 
  1224.  
  1225. DCE permission lists are called Access Control Lists (ACLs). ACLs are one of 
  1226. the features of the DCE Security Service used by the Cell Directory Service. 
  1227. ACLs are used to test the entities' (that is, the principals') authorization to 
  1228. do things to the objects they propose to do them to. The authorization 
  1229. mechanism for all CDS objects is handled by CDS itself. All that users of the 
  1230. CDS namespace have to do is make sure that ACLs on the CDS objects that they 
  1231. create are set up with the appropriate permissions. 
  1232.  
  1233.  
  1234. ΓòÉΓòÉΓòÉ 4.2.2.1. Creation of ACLs ΓòÉΓòÉΓòÉ
  1235.  
  1236. Whenever you create a new entry in the CDS namespace, an ACL is created for it 
  1237. implicitly, and its initial list of entries and their permission sets are 
  1238. determined by the ACL templates associated with the CDS directory in which you 
  1239. create the entry. 
  1240.  
  1241. Each CDS directory has the following two ACL templates associated with it: 
  1242.  
  1243.    o  Initial Container - This template is used to generate the initial ACL for 
  1244.       any directories created within the directory. 
  1245.  
  1246.    o  Initial Object - This template is used to generate ACLs for entries 
  1247.       created within the directory. 
  1248.  
  1249.  Every CDS directory also has its own ACL, just like any other CDS object. This 
  1250.  ACL is generated from the parent directory's Initial Container template when 
  1251.  the child directory is created. The Initial Container template also serves as 
  1252.  a template for the child directories' own Initial Container templates. 
  1253.  
  1254.  
  1255. ΓòÉΓòÉΓòÉ 4.2.2.2. Manipulating ACLs ΓòÉΓòÉΓòÉ
  1256.  
  1257. There are two ways to manipulate ACLs: either through the acl_edit command, 
  1258. which is documented in the DCE for OS/2 Warp: Administration Command Reference, 
  1259. or through the DCE ACL application interface, which consists of routines 
  1260. documented in the DCE for OS/2 Warp: Application Development Reference. (These 
  1261. routines have names in the form of sec_acl_....) 
  1262.  
  1263.  
  1264. ΓòÉΓòÉΓòÉ 4.2.2.3. Initializing ACLs ΓòÉΓòÉΓòÉ
  1265.  
  1266. After creating a CDS directory using the cdscp command, your first step is 
  1267. usually to run the acl_edit command to set up the new directory's ACLs the way 
  1268. you want them. (The new directory inherits its ACLs and its templates from the 
  1269. directory in which it was created, as explained in Creation of ACLs.) You might 
  1270. want to modify not only the directory's own ACLs, but also its two templates. 
  1271. To edit the latter, you can specify the -ic option (for the Initial Container 
  1272. template) or the -io option (for the Initial Object template); otherwise, edit 
  1273. the object ACL. 
  1274.  
  1275. You can modify a directory's ACL templates from an application, assuming that 
  1276. you have control permission for the object, with the same combination of 
  1277. sec_acl_lookup and sec_acl_replace calls as for the object ACL. An option to 
  1278. these routines lets you specify which of the three possible ACLs on a directory 
  1279. object you want the call applied to. The ACLs themselves are in identical 
  1280. format. 
  1281.  
  1282. The -e (entry) option to acl_edit can be used to make sure that you get the ACL 
  1283. for the specified namespace entry object, and not the ACL (if any) for the 
  1284. object that is referenced by the entry. This distinction has to be made clear 
  1285. to acl_edit because it finds the object (and hence the ACL) in question by 
  1286. looking it up in the namespace and binding to its ACL manager. Essentially, the 
  1287. -e option tells acl_edit whether it should bind to the CDS ACL manager (if the 
  1288. entry ACL is wanted), or to the manager responsible for the referenced object's 
  1289. ACL. This latter manager would be a part of the server application whose 
  1290. binding information the entry contained. 
  1291.  
  1292. An example of such an ambiguous name would be a CDS clearinghouse entry, such 
  1293. as the cdshostname_ch entry discussed previously. With the -e option 
  1294.  
  1295. acl_edit -e /.:/cdshostname_ch
  1296.  
  1297. you would edit the ACL on the namespace entry; without the -e option you would 
  1298. edit the ACL on the clearinghouse itself, which you presumably do not want to 
  1299. do. 
  1300.  
  1301. Similarly, there is a bind_to_entry parameter by which the caller of 
  1302. sec_acl_bind can indicate whether the entry object's ACL or the ACL to which 
  1303. the entry refers is desired. For further details on binding ambiguity, see DCE 
  1304. for OS/2 Warp: Application Development Reference. 
  1305.  
  1306. Note:  You can also use the dcecp command to create CDS directories and manage 
  1307.        ACLs. 
  1308.  
  1309.  
  1310. ΓòÉΓòÉΓòÉ 4.2.2.4. Namespace ACLs at Cell Configuration ΓòÉΓòÉΓòÉ
  1311.  
  1312. The ACLs attached to the CDS namespace at configuration are described in DCE 
  1313. for OS/2 Warp: Administration Guide. The following ACL permissions are defined 
  1314. for CDS objects. The single letter in parentheses for each item represents the 
  1315. DCE notation for that permission. These single letters are identical to the 
  1316. untokenized forms returned by sec_acl_get_printstring. 
  1317.  
  1318.  read (r)             This permission allows a principal to look up an object 
  1319.                       entry and view its attribute values. 
  1320.  
  1321.  write (w)            This permission allows a principal to change an object's 
  1322.                       modifiable attributes, except for its ACLs. 
  1323.  
  1324.  insert (i)           This permission allows a principal to create new entries 
  1325.                       in a CDS directory. It is used with directory entries 
  1326.                       only. 
  1327.  
  1328.  delete (d)           This permission allows a principal to delete a name entry 
  1329.                       from the namespace. 
  1330.  
  1331.  test (t)             This permission allows a principal to test whether an 
  1332.                       attribute of an object has a particular value, but does 
  1333.                       not permit it actually to see any of the attribute values 
  1334.                       (in other words, read permission for the object is not 
  1335.                       granted). The test permission allows an application to 
  1336.                       verify a particular CDS attribute's value without reading 
  1337.                       it. 
  1338.  
  1339.  control (c)          This permission allows a principal to modify the entries 
  1340.                       in the object's ACL. The control permission is 
  1341.                       automatically granted to the creator of a CDS object. 
  1342.  
  1343.  administer (a)       This permission allows a principal to issue cdscp 
  1344.                       commands that control the replication of directories. It 
  1345.                       is used with directory entries only. 
  1346.  
  1347.  Detailed instructions on the mechanics of setting up ACLs on CDS objects can 
  1348.  be found in the DCE for OS/2 Warp: Administration Guide. 
  1349.  
  1350.  For CDS directories, read and test permissions are sufficient to allow 
  1351.  ordinary principals to access the directory and to read and test entries 
  1352.  therein. Principals who you want to be able to add entries in a CDS directory 
  1353.  should have insert permission for that directory. Entries created by the RPC 
  1354.  NSI routines (for example, when a server exports bindings for the first time) 
  1355.  are automatically set up with the correct permissions. However, if you are 
  1356.  creating new CDS directories for RPC use, you should be sure to grant 
  1357.  prospective user principals insert permission to the directory so that servers 
  1358.  can create entries when they export their bindings. A general list of the 
  1359.  permissions required for the various RPC NSI operations as well as the RPC NSI 
  1360.  routines (all of whose names are in the form rpc_ns_...) can be found in the 
  1361.  DCE for OS/2 Warp: Application Development Reference. 
  1362.  
  1363.  Note:  CDS names do not behave the same way as file system names. A principal 
  1364.         does not have to have access to an entire entry name path in order to 
  1365.         have access to an entry at the end of that path. For example, a 
  1366.         principal can be granted read access to the following entry 
  1367.  
  1368.                 /.:/applications/utilities/pr2
  1369.  
  1370.  and yet not have read access to the utilities directory. 
  1371.  
  1372.  
  1373. ΓòÉΓòÉΓòÉ 4.3. Valid Characters and Naming Rules for CDS ΓòÉΓòÉΓòÉ
  1374.  
  1375. See "Valid Characters and Naming Rules for CDS" in DCE for OS/2 
  1376. Warp:Administration Guide. In that same document, also see the sections that 
  1377. discuss the valid character sets for DCE Directory Service names as used by CDS 
  1378. Interfaces as follows: 
  1379.  
  1380.    o  Metacharacters 
  1381.    o  Additional Rules 
  1382.    o  Maximum Name Sizes 
  1383.  
  1384.  
  1385. ΓòÉΓòÉΓòÉ 4.4. Use of Object Identifiers ΓòÉΓòÉΓòÉ
  1386.  
  1387. Object Identifiers (OIDs) are not seen by applications that restrict themselves 
  1388. to using only the RPC NSI routines (rpc_ns_...). These identifiers are 
  1389. important for applications that use the XDS interface to read entries directly 
  1390. or to create new attributes for use with namespace entries. 
  1391.  
  1392. RPC makes use of only four different entry attributes in various 
  1393. application-specified or administrator-specified combinations. CDS, however, 
  1394. contains definitions for many more than these. They can be added by 
  1395. applications to RPC entries through the XDS interface. Attributes that already 
  1396. exist are already properly identified so applications that use these attributes 
  1397. do not have to concern themselves with the OIDs, except to the extent of making 
  1398. sure that they handle them properly. 
  1399.  
  1400. Unlike UUIDs, OIDs are not generated by command or function call. They 
  1401. originate from the International Organization for Standardization (ISO), which 
  1402. allocates them in hierarchically organized blocks to recipients. Each 
  1403. recipient, typically some organization, is then responsible for ensuring that 
  1404. the OIDs it receives are used uniquely. 
  1405.  
  1406. For example, the OID block 1.3.22 was allocated to OSF by ISO. OSF can now 
  1407. generate, for example, the OID 1.3.22.1.1.4 and allocate it to identify some 
  1408. DCE directory object. (The OID 1.3.22.1.1.4 identifies the RPC profile entry 
  1409. object attribute.) OSF is responsible for making sure that 1.3.22.1.1.4 is not 
  1410. used to identify any other attribute. Thus, as long as all OIDs are generated 
  1411. only from within each owner's properly obtained block, and as long as each 
  1412. block owner makes sure that the OIDs generated within its block are properly 
  1413. used, each OID is a universally valid identifier for its associated value. 
  1414.  
  1415. OIDs are encoded and internally represented as strings of hexadecimal digits, 
  1416. and comparisons of OIDs have to be performed as hexadecimal string comparisons 
  1417. (not as comparisons on NULL-terminated strings because OIDs can have NULL bytes 
  1418. as part of their value). 
  1419.  
  1420. When applications have occasion to handle OIDs, they do so directly because the 
  1421. numbers do not change and should not be reused. However, for users' 
  1422. convenience, CDS also maintains a file (called cds_attr, found in 
  1423. \opt\dcelocal\etc) that lists string equivalents for all the OIDs in use in a 
  1424. cell in entries like the following one: 
  1425.  
  1426. 1.3.22.1.1.4        RPC_Profile        byte
  1427.  
  1428. This allows users to see RPC_Profile in output, rather than the meaningless 
  1429. string 2.1.3.22.1.1.4. Further details about the cds_attr file and OIDs can be 
  1430. found in the DCE for OS/2 Warp: Administration Guide. 
  1431.  
  1432. In summary, the procedure you should follow to create new attributes on CDS 
  1433. entries consists of the following steps: 
  1434.  
  1435.    1. Request and receive from your local designated authority the OIDs for the 
  1436.       attributes you intend to create. 
  1437.  
  1438.    2. Update the cds_attr file with the new attributes. OIDs and labels if you 
  1439.       want your application to be able to use string name representations for 
  1440.       OIDs in output. 
  1441.  
  1442.    3. Using XDS, write the routines to create, add, and access the attributes. 
  1443.  
  1444.  Note:  The XDS interface does not look at the cds_attr file; therefore, 
  1445.         entries cannot be referenced by the string name. You must use the 
  1446.         actual OID or define the OID in a header file used by the application. 
  1447.  
  1448.  Your cell administrator should be able to provide you with a name and an OID. 
  1449.  The name is a guaranteed-unique series of values for a global directory entry 
  1450.  name. If the directory is GDS, the name is a series of type/value pairs, such 
  1451.  as C=US O=OSF. 
  1452.  
  1453.  The cell administrator can also obtain an OID block. From this OID space, the 
  1454.  administrator can assign you the OIDs you need for your application. 
  1455.  
  1456.  There is no need for new OIDs in connection with cell names. The OIDs for 
  1457.  Country Name and Organization Name are part of the X.500 standard implemented 
  1458.  in GDS; only the values associated with the OIDs (the values of the objects) 
  1459.  change from entry name to entry name. Instead, being able to generate new OIDs 
  1460.  gives you the ability to invent and add new details to the directory itself. 
  1461.  For example, you can create new kinds of CDS entry attributes by generating 
  1462.  new OIDs to identify them. The same thing can be done to GDS, although the 
  1463.  procedure is more complicated because it involves altering the directory 
  1464.  schema. 
  1465.  
  1466.  
  1467. ΓòÉΓòÉΓòÉ 5. XDS and the DCE Cell Namespace ΓòÉΓòÉΓòÉ
  1468.  
  1469. This section describes the use of the XDS programming interface when accessing 
  1470. the CDS namespace. Introduction to Accessing CDS with XDS provides an 
  1471. introduction to using XDS in the CDS namespace. XDS Objects describes XDS 
  1472. objects and how they are used to access CDS data. Accessing CDS Using the XDS 
  1473. Step-by-Step Procedure provides a step-by-step procedure for writing an XDS 
  1474. program to access CDS. Object-Handling Techniques provides examples of using 
  1475. the XOM interface to manipulate objects. XDS/CDS Object Recipes provides 
  1476. details of the structure of XDS/CDS objects. Finally, Attribute and Data Type 
  1477. Translation provides translation tables between XDS and CDS for attributes and 
  1478. data types. 
  1479.  
  1480.  
  1481. ΓòÉΓòÉΓòÉ 5.1. Introduction to Accessing CDS with XDS ΓòÉΓòÉΓòÉ
  1482.  
  1483. Outside of the DCE cells and their separate namespaces is the global namespace 
  1484. in which the cell names themselves are entered, and where all intercell 
  1485. references are resolved. Two directory services participate in the global 
  1486. namespace. The first is the X.500-compliant Global Directory Service (GDS). The 
  1487. second is the Domain Name Service (DNS), which DCE interacts with, but is not a 
  1488. part of DCE. 
  1489.  
  1490. The global and cell directory services are accessed implicitly by RPC 
  1491. applications using the NSI interface. GDS and CDS can also be accessed 
  1492. explicitly using the X/Open Directory Service (XDS) interface. With XDS, 
  1493. application programmers can gain access to GDS, a powerful general-purpose 
  1494. distributed database service, which can be used for many other things besides 
  1495. intercell binding. XDS can also be used to access the cell namespace directly, 
  1496. as this section describes. 
  1497.  
  1498. An XDS application looks very different from the RPC-based DCE applications. 
  1499. This is partly because there is no dependency in XDS on the DCE RPC interface, 
  1500. although you can use both interfaces in the same application. Also, XDS is a 
  1501. generalized directory interface, oriented more toward performing large database 
  1502. operations than toward fine-tuning the contents of RPC entries. Nevertheless, 
  1503. XDS can be used as a general access mechanism on the CDS namespace. 
  1504.  
  1505.  
  1506. ΓòÉΓòÉΓòÉ 5.1.1. Using the Reference Material in this Section ΓòÉΓòÉΓòÉ
  1507.  
  1508. Complete descriptions of all the XDS and XOM functions used in CDS operations 
  1509. can be found in the DCE for OS/2 Warp: Application Development Reference, which 
  1510. you should have beside you as you read through the examples in this section. In 
  1511. particular, refer to it for information about XDS error objects, which are not 
  1512. discussed in this section. 
  1513.  
  1514. Complete descriptions for all objects required as input parameters by XDS 
  1515. functions when accessing a CDS namespace can be found in XDS/CDS Object 
  1516. Recipes. XOM functions are general-purpose utility routines that operate on 
  1517. objects of any class, and take the rest of their input in conventional form. 
  1518.  
  1519. Slightly less detailed descriptions of the output objects you can expect to 
  1520. receive when accessing CDS through XDS are also given in XDS/CDS Object 
  1521. Recipes. You do not have to construct objects of these classes yourself. You 
  1522. just have to know their general structure so that you can disassemble them 
  1523. using XOM routines. 
  1524.  
  1525. No information is given in this section about the DS_status error objects that 
  1526. are returned by unsuccessful XDS functions. A description of all the subclasses 
  1527. of DS_status requires a section in itself. Code for a rudimentary 
  1528. general-purpose DS_status handling routine can be found in the cds_xmpl.c XDS 
  1529. sample program. 
  1530.  
  1531.  
  1532. ΓòÉΓòÉΓòÉ 5.1.2. What You Cannot Do with XDS ΓòÉΓòÉΓòÉ
  1533.  
  1534. XDS allows you to perform general operations on CDS entry attributes, something 
  1535. which you cannot do through the DCE RPC NSI interface. However, there are 
  1536. certain things you cannot do to cell directory entries even through XDS: 
  1537.  
  1538.    o  You cannot create or modify directory entries. 
  1539.  
  1540.       The ds_modify_rdn function does not work in a CDS namespace. These 
  1541.       operations must be performed through the CDS cdscp command. For more 
  1542.       information, see the DCE for OS/2 Warp: Administration Command Reference. 
  1543.  
  1544.    o  You cannot perform XDS searches on the cell namespace 
  1545.  
  1546.       The XDS function ds_search does not work. This is mainly because the CDS 
  1547.       has no concept of a hierarchy of entry attributes, such as the X.500 
  1548.       schema. The ds_compare function, however, does work. 
  1549.  
  1550.    o  You cannot modify ACL entries in the cell namespace. 
  1551.  
  1552.  
  1553. ΓòÉΓòÉΓòÉ 5.1.3. What Must Be Set Up ΓòÉΓòÉΓòÉ
  1554.  
  1555. If you are planning to use XDS to access the cell namespace in a one-cell 
  1556. environment (that is, your cell does not need to communicate with other DCE 
  1557. cells), you do not need to set up a cell entry in GDS or DNS for your cell 
  1558. because the XDS functions simply call the appropriate statically linked CDS 
  1559. routines to access the cell namespace. XDS, in conjunction with CDS, is able to 
  1560. recognize the local cell portion of a name in the cell namespace without help 
  1561. from GDS or DNS. You need to specify the complete name for the interface object 
  1562. DS_C_DS_DN; omitting the cell name portion of the name is not allowed. See a 
  1563. description of the DS_C_DS_DN object in Building a Name Object. 
  1564.  
  1565. For XDS to be able to access any nonlocal cell namespace, that cell must be 
  1566. registered (that is, have an entry) in the global namespace. 
  1567.  
  1568. For information on setting up your cell name, see the DCE for OS/2 
  1569. Warp:Administration Guide. 
  1570.  
  1571.  
  1572. ΓòÉΓòÉΓòÉ 5.2. XDS Objects ΓòÉΓòÉΓòÉ
  1573.  
  1574. The XDS interface differs from the other DCE component interfaces in that it is 
  1575. object oriented. The following sections explain two things: 
  1576.  
  1577.    1. What object-oriented programming means in terms of using XDS. 
  1578.  
  1579.    2. How to use XDS to access the Cell Directory Service. 
  1580.  
  1581.  Imagine a generalized data structure that always has the same data type and 
  1582.  yet can contain any kind of data, and any amount of it. Functions could pass 
  1583.  these structures back and forth in the same way all the time, and yet they 
  1584.  could use the same structures for any kind of data they wanted to store or 
  1585.  transfer. Such a data structure, if it existed, would be a true object. 
  1586.  Programming language constructs allow interfaces to pretend that they use 
  1587.  objects, although the realities of implementation are not usually so simple. 
  1588.  
  1589.  XDS is such an interface. For the most part, XDS functions neither accept nor 
  1590.  return values in any form but as objects. The objects themselves are indeed 
  1591.  always the same data type; namely, pointers to arrays of object descriptor (C 
  1592.  struct) elements. Contained within these, OM_descriptor element structures are 
  1593.  unions that can actually accommodate all the different kinds of values an 
  1594.  object can be called on to hold. In order to allow the interface to make sense 
  1595.  of the unions, each OM_descriptor also contains a syntax field, which 
  1596.  indicates the data type of that descriptor's union. There is also a record of 
  1597.  what the descriptor's value actually is (for example, whether it is a name, a 
  1598.  number, an address, a list, and so on). This information is held in the 
  1599.  descriptor's type field. 
  1600.  
  1601.  These OM_descriptor elements, which are referred to as object descriptors or 
  1602.  descriptors, are the basic building blocks of all XDS objects; every actual 
  1603.  XDS object reduces to arrays of them. Each descriptor contains three items: 
  1604.  
  1605.    o  A type field, which identifies the descriptor's value; 
  1606.    o  A syntax field, which indicates the data type of the value field; and 
  1607.    o  The value field, which is a union. 
  1608.  
  1609.  "One Object Descriptor" illustrates one such object descriptor. 
  1610.  
  1611.  
  1612.   One Object Descriptor
  1613.  
  1614.  From an abstract point of view, syntax is just an implementation detail. The 
  1615.  scheme really consists only of a type/value pair. The type gives an identity 
  1616.  to the object (something like CDS entry attribute, CDS entry name, or DUA 
  1617.  access point), and the value is some data associated with that identity, just 
  1618.  as a variable has a name that gives meaning to the value it holds, and the 
  1619.  value itself. 
  1620.  
  1621.  In order to make the representation of objects as logical and as flexible as 
  1622.  possible, these two logical components of every object, type and value, are 
  1623.  themselves each represented by separate object descriptors. Thus, the first 
  1624.  element of every complete object descriptor array is a descriptor whose type 
  1625.  field identifies its value field as containing the name of the kind (or class) 
  1626.  of this object, and the syntax field indicates how that name value should be 
  1627.  read. Next is usually one (or more, if the object has multiple values) object 
  1628.  descriptor whose type field identifies its value field as containing some 
  1629.  value appropriate for this class of object. Finally, every complete object 
  1630.  descriptor array ends with a descriptor element that is identified by its 
  1631.  fields as being a NULL-terminating element. 
  1632.  
  1633.  Thus, a minimum-size descriptor array consists of just two elements: 
  1634.  
  1635.    o  The first contains its class identity, and 
  1636.    o  The second is a NULL (it is legitimate for objects not to have values). 
  1637.  
  1638.  When an object does have a value, it is held in the value field of a 
  1639.  descriptor whose type field communicates the value's meaning. 
  1640.  
  1641.  "A Complete Object Represented" illustrates the arrangement of a complete 
  1642.  object descriptor array. 
  1643.  
  1644.  
  1645.   A Complete Object Represented
  1646.  
  1647.  
  1648. ΓòÉΓòÉΓòÉ 5.2.1. Object Attributes ΓòÉΓòÉΓòÉ
  1649.  
  1650. The generic term for any object value is attribute. In this sense, an object is 
  1651. nothing but a collection of attributes, and every object descriptor describes 
  1652. one attribute. The first attribute's value identifies the object's class, and 
  1653. this determines all the other attributes the object is supposed to have. One or 
  1654. more other attributes follow, which contain the object's working values. The 
  1655. NULL object descriptor at the end is an implementation detail, and is not a 
  1656. part of the object. 
  1657.  
  1658. Note:  Depending on the attribute it represents, a descriptor's value field can 
  1659.        contain a pointer to another array of object descriptors. In other 
  1660.        words, an object's value can be another object. 
  1661.  
  1662.  "A Three-Layer Compound Object" shows a three-layer compound object. The 
  1663.  top-level superobject, dn_object, contains the subobject rdn1, which in turn 
  1664.  contains the subobject ava1. 
  1665.  
  1666.  
  1667.   A Three-Layer Compound Object
  1668.  
  1669.  
  1670. ΓòÉΓòÉΓòÉ 5.2.2. Interface Objects and Directory Objects ΓòÉΓòÉΓòÉ
  1671.  
  1672. GDS is comprised of objects. These are directory objects and reflect the X.500 
  1673. design. The XDS interface also works with objects. However, there is a big 
  1674. difference between directory and XDS objects. Programmers do not work directly 
  1675. with the directory objects; they are composed of attributes that make up the 
  1676. directory service's implementation of entries. 
  1677.  
  1678. Programmers work with XDS objects. XDS objects have explicit data 
  1679. representations that can be directly manipulated with programming language 
  1680. operators. Some of these techniques are described in this section; others can 
  1681. be found in the sample files in the \opt\dcelocal\examples\xdsxom directory. 
  1682.  
  1683. XDS and GDS terminology sometimes suggests that XDS objects are somehow direct 
  1684. representations of the directory objects to which they communicate information. 
  1685. This is not the case, however. You never directly see or manipulate the 
  1686. directory objects; the XDS interface objects are used only to pass parameters 
  1687. to the XDS calls, which in turn request GDS (or CDS) to perform operations on 
  1688. the directory objects. The XDS objects are therefore somewhat arbitrary 
  1689. structures defined by the interface. 
  1690.  
  1691. "Directory Objects and XDS Interface Objects" illustrates the relationship 
  1692. between XDS (also called interface) objects and directory objects. The figure 
  1693. shows an application passing several properly initialized XDS objects to some 
  1694. XDS function; it then takes some action, which affects the attribute contents 
  1695. of certain directory objects. The application never works with the directory 
  1696. objects, it works with the XDS interface objects. 
  1697.  
  1698. A side effect of the existence of a separate XDS interface and GDS or CDS 
  1699. directory objects is the existence of attributes for both kinds of objects as 
  1700. well. Because the purpose of XDS objects is to feed data into and extract data 
  1701. from directory objects, programmers work with XDS objects whose attributes have 
  1702. directory object attributes as their values. You should keep in mind the 
  1703. distinction between directory objects and interface objects. 
  1704.  
  1705.  
  1706. Directory Objects and XDS Interface Objects
  1707.  
  1708.  
  1709. ΓòÉΓòÉΓòÉ 5.2.3. Directory Objects and Namespace Entries ΓòÉΓòÉΓòÉ
  1710.  
  1711. The GDS namespace is a hierarchical collection of entries. The name of each of 
  1712. these entries is an attribute of a directory object. The object is accessed 
  1713. through XDS by stating its name attribute. 
  1714.  
  1715. "Directory Objects and Namespace Entries" shows the relationship of entry names 
  1716. in the GDS namespace to the GDS directory objects to which they refer. 
  1717.  
  1718.  
  1719. Directory Objects and Namespace Entries
  1720.  
  1721.  
  1722. ΓòÉΓòÉΓòÉ 5.2.4. Values That an Object Can Contain ΓòÉΓòÉΓòÉ
  1723.  
  1724. There are many different classes of objects defined for the XDS interface; 
  1725. still more are defined by the X.500 standard for general directory use. But 
  1726. only a small number of classes are needed for XDS/CDS operations, and only 
  1727. those classes are discussed in this section. 
  1728.  
  1729. The class that an object belongs to determines what sort of information the 
  1730. object can contain. Each object class consists of a list of attributes that 
  1731. objects must have. For example, you would expect an object in the directory 
  1732. entry name class to be required to have an attribute to hold the entry name 
  1733. string. However, it is not sufficient to simply place a string like: 
  1734.  
  1735. /.../C=US/O=OSF/OU=DCE/hosts/tamburlaine/self
  1736.  
  1737. into an object descriptor. 
  1738.  
  1739. A full directory entry name such as the preceding one is called in XDS a 
  1740. Distinguished Name (DN), meaning that the entry name is fully qualified 
  1741. (distinct) from root to entry name. To properly represent the entry name in an 
  1742. object, you must look up the definition of the XDS distinguished name object 
  1743. class and build an object that has the set of attributes that the definition 
  1744. prescribes. 
  1745.  
  1746.  
  1747. ΓòÉΓòÉΓòÉ 5.2.5. Building a Name Object ΓòÉΓòÉΓòÉ
  1748.  
  1749. Complete definitions for all the object classes required as input for XDS 
  1750. functions can be found in XDS/CDS Object Recipes. Among them is the class for 
  1751. distinguished name objects, called DS_C_DS_DN. There you will learn that this 
  1752. class of object has two attributes: its class attribute, which identifies it as 
  1753. a DS_C_DS_DN object, and a second attribute, which occurs multiple times in the 
  1754. object. Each instance of this attribute contains as its value one piece of the 
  1755. full name; for example, the directory name hosts. 
  1756.  
  1757. The DS_C_DS_DN attribute that holds the entry name piece, or Relative 
  1758. Distinguished Name, is defined by the class rules to hold, not a string, but 
  1759. another object of the Relative Distinguished Name class (DS_C_DS_RDN). 
  1760.  
  1761. Thus, a static declaration of the descriptor array representing the DS_C_DS_DN 
  1762. object would look like the following: 
  1763.  
  1764. static OM_descriptor   Full_Entry_Name_Object[]={
  1765.  
  1766.    OM_OID_DESC(OM_CLASS, DS_C_DS_DN),
  1767. /*                                                             */
  1768. /*   Macro to put an "OID string" in a descrip-                */
  1769. /*     tor's value field and fill the type and                 */
  1770. /*     syntax fields with appropriate values.                  */
  1771.  
  1772.  
  1773.    {DS_RDNS, OM_S_OBJECT, {0, Country_RDN}},
  1774. /*                                                             */
  1775. /*     type      syntax            value                       */
  1776. /*                                                             */
  1777. /*     (the "value" union is in fact here a                    */
  1778. /*      structure; the 0 fills a pad field in                  */
  1779. /*      that structure.)                                       */
  1780.  
  1781.  
  1782.    {DS_RDNS, OM_S_OBJECT, {0, Organization_RDN}},
  1783.    {DS_RDNS, OM_S_OBJECT, {0, Org_Unit_RDN}},
  1784.    {DS_RDNS, OM_S_OBJECT, {0, Hosts_Dir_RDN}},
  1785.    {DS_RDNS, OM_S_OBJECT, {0, Tamburlaine_Dir_RDN}},
  1786.    {DS_RDNS, OM_S_OBJECT, {0, Self_Entry_RDN}},
  1787.  
  1788.  
  1789.    OM_NULL_DESCRIPTOR
  1790. /*                                                             */
  1791. /*    Macro to fill a descriptor with proper                   */
  1792. /*     NULL values.                                            */
  1793.  
  1794. };
  1795.  
  1796. The use of the OM_OID_DESC and OM_NULL_DESCRIPTOR macros slightly obscures the 
  1797. layout of this declaration. However, each line contains code to initialize 
  1798. exactly one OM_descriptor object; the array consists of eight objects. 
  1799.  
  1800. The names (such as Country_RDN) in the descriptors' value fields refer to the 
  1801. other descriptor arrays, which separately represent the relative name objects. 
  1802. (The order of the C declaration in the source file is opposite to the order 
  1803. described here.) Since DS_C_DS_RDN objects are now called for, the next step is 
  1804. to look at what attributes that class requires. 
  1805.  
  1806. The definition for DS_C_DS_RDN can be found in The DS_C_DS_RDN Object. This 
  1807. class object is defined, like DS_C_DS_DN, to have only one attribute (with the 
  1808. exception of the OM_Object attribute, which is mandatory for all objects). The 
  1809. one attribute, DS_AVAS, holds the value of one relative name. The syntax of 
  1810. this value is OM_S_OBJECT, meaning that DS_AVAS's value is a pointer to yet 
  1811. another object descriptor array: 
  1812.  
  1813. static OM_descriptor    Country_RDN[] = {
  1814.  
  1815.      OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  1816.  
  1817.      {DS_AVAS, OM_S_OBJECT, {0, Country_Value}},
  1818.  
  1819.      OM_NULL_DESCRIPTOR
  1820. };
  1821.  
  1822. Note:  There should also be five other similar declarations, one for each of 
  1823.        the other DS_C_DS_RDN objects held in the DS_C_DS_DN. 
  1824.  
  1825.  The declarations have the same meanings as they did in the previous example. 
  1826.  Country_Value is the name of the descriptor array that represents the object 
  1827.  of class DS_C_AVA. 
  1828.  
  1829.  The rules for the DS_C_AVA class can be found in this section just after 
  1830.  DS_C_DS_RDN. They tell us that DS_C_AVA objects have two attributes aside from 
  1831.  the omnipresent OM_Object; namely: 
  1832.  
  1833.  DS_ATTRIBUTE_VALUES                 This attribute holds the object's value. 
  1834.  
  1835.  DS_ATTRIBUTE_TYPE                   This attribute gives the meaning of the 
  1836.                                      object's value. 
  1837.  
  1838.  In this instance, the meaning of the string US is that it is a country name. 
  1839.  There is a particular directory service attribute value for this. It is 
  1840.  identified by an OID that is associated with the label DS_A_COUNTRY_NAME (the 
  1841.  OIDs held in objects are represented in string form). Accordingly, we make 
  1842.  that OID the value of DS_ATTRIBUTE_TYPE, and we make the name string itself 
  1843.  the value of DS_ATTRIBUTE_VALUES: 
  1844.  
  1845.   static OM_descriptor    Country_Value[] = {
  1846.  
  1847.        OM_OID_DESC(OM_CLASS, DS_C_AVA),
  1848.  
  1849.        OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_COUNTRY_NAME),
  1850.  
  1851.        {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("US")},
  1852.   /*                                                               */
  1853.   /*                                             Macro to properly */
  1854.   /*       fill the "value" union with the NULL-terminated string. */
  1855.        OM_NULL_DESCRIPTOR
  1856.   };
  1857.  
  1858.  There are also five other DS_C_AVA declarations, one for each of the five 
  1859.  other separate name piece objects referred to in the DS_C_DS_RDN superobjects. 
  1860.  
  1861.  
  1862. ΓòÉΓòÉΓòÉ 5.2.6. A Complete Object ΓòÉΓòÉΓòÉ
  1863.  
  1864. The previous sections described how an object is created: 
  1865.  
  1866.    o  Look up the rules for the object class that is required, and 
  1867.  
  1868.    o  Add the attributes called for in the definition. 
  1869.  
  1870.  Whenever some attribute is defined to have an object as its value, look up the 
  1871.  class rules for the new object and declare a further descriptor array for it. 
  1872.  In this way you continue working down through layers of subobjects until an 
  1873.  object class is reached that contains no subobjects as values; at that point, 
  1874.  you are finished. 
  1875.  
  1876.  Normally, you do not statically declare objects in real applications. The 
  1877.  steps outlined in the preceding text are given as a method for determining 
  1878.  what an object looks like. Once that is done, then write routines to create 
  1879.  the objects dynamically. An example of how to create OM descriptor entries 
  1880.  dynamically can be found in the thradd.c program in the 
  1881.  \opt\dcelocal\examples\xdsxom directory. 
  1882.  
  1883.  The process of object building is somewhat easier than it sounds. There are 
  1884.  only five different object classes needed for input to XDS functions when 
  1885.  accessing CDS, and only one of those, the DS_C_DS_DN class, has more than one 
  1886.  level of subobjects. The rules for all five of these classes can be found in 
  1887.  XOM Programming. In order to use the GDS references, you should know a few 
  1888.  things about class hierarchy. 
  1889.  
  1890.  
  1891. ΓòÉΓòÉΓòÉ 5.2.7. Class Hierarchy ΓòÉΓòÉΓòÉ
  1892.  
  1893. Object classes are hierarchically organized so that some classes can be located 
  1894. above some classes in the hierarchy and below others in the hierarchy. In any 
  1895. such system of subordinate classes, each next lower class inherits all the 
  1896. attributes prescribed for the class immediately above it, plus whatever 
  1897. attributes are defined peculiarly for it alone. If the hierarchy continues 
  1898. further down, cumulative collection of attributes continues to accumulate. If 
  1899. there were a class for every letter of the alphabet, starting at the highest 
  1900. level with A and continuing down to the lowest level with Z, and if each 
  1901. succeeding letter was a subclass of its predecessor, the Z class would possess 
  1902. all the attributes of all the other letters, as well as its own, while the A 
  1903. class would possess only the A class attributes. 
  1904.  
  1905. XDS/XOM classes are seldom nested more than two or at most three layers. All 
  1906. inherited attributes are explicitly listed in the object descriptions that 
  1907. follow, so you do not have to worry about class hierarchies here. However, the 
  1908. complete descriptions of XDS/XOM objects of this guide rely on statements of 
  1909. class inheritance to fill out their attribute lists for the different classes. 
  1910.  
  1911.  
  1912. ΓòÉΓòÉΓòÉ 5.2.8. Class Hierarchy and Object Structure ΓòÉΓòÉΓòÉ
  1913.  
  1914. Note:  Class hierarchy is different from object structure. Object structure is 
  1915.        the layering of object arrays that was previously described in the 
  1916.        DS_C_DS_DN declaration in Building a Name Object. It occurs when one 
  1917.        object contains another object as the value of one or more of its 
  1918.        attributes. 
  1919.  
  1920.  What is meant by recursive objects is one object can point to another object 
  1921.  as one of its attribute values. The layering of subobjects below superobjects 
  1922.  in this way is described repeatedly in XDS/CDS Object Recipes. 
  1923.  
  1924.  The only practical significance of class hierarchy is in determining all the 
  1925.  attributes a certain object class must have. Once you have done this, you 
  1926.  might find that a certain attribute requires as its value some other object. 
  1927.  The result is a compound object, but this is completely determined by the 
  1928.  attributes for the particular class you are viewing. 
  1929.  
  1930.  
  1931. ΓòÉΓòÉΓòÉ 5.2.9. Public and Private Objects and XOM ΓòÉΓòÉΓòÉ
  1932.  
  1933. In Building a Name Object, you saw how a multilevel XDS object can be 
  1934. statically declared in C code. Now imagine that you have written an application 
  1935. that contains such a static DS_C_DS_DN object declaration. From the point of 
  1936. view of the application, that object is nothing but a series of arrays, and you 
  1937. can manipulate them with all the normal programming operators, just as any 
  1938. other data type. Nevertheless, the object is syntactically perfectly acceptable 
  1939. to any XDS (or XOM) function that is prepared to receive a DS_C_DS_DN object. 
  1940.  
  1941. Objects are also created by the XDS functions themselves. This is the way they 
  1942. usually return information to callers. However, there is a difference between 
  1943. objects generated by the XDS interface and objects that are explicitly declared 
  1944. by the application: You cannot access the former, private, objects in the 
  1945. direct way that you can the latter, public, objects. 
  1946.  
  1947. These two kinds of objects are the same as far as their classes and attributes 
  1948. are concerned. The only difference between them is in the way they are 
  1949. accessed. The public objects that an application explicitly creates or declares 
  1950. in its own memory area are just as accessible as any of the other data storage 
  1951. it uses. However, private objects are created and held in the XDS interface's 
  1952. own system memory. Applications get handles to private objects, and in order to 
  1953. access the private objects' contents, they have to pass the handles to Object 
  1954. Management functions. The Object Management (XOM) functions make up a sort of 
  1955. all-purpose companion interface to XDS. Whereas XDS functions typically require 
  1956. some specific class object as input, the XOM functions accept objects of any 
  1957. class and perform useful operations on them. 
  1958.  
  1959. If a private object needs to be manipulated, one of the XOM functions, om_get, 
  1960. can be called to make a public copy of the private object. Then, calling the 
  1961. XOM om_create function allows applications to generate private objects 
  1962. manipulable by om_get. The main significance of private as opposed to public 
  1963. objects is that they do not have to be explicitly operated on, instead, you can 
  1964. access them cleanly through the XOM interface and let it do most of the work. 
  1965. You still have to know something about the objects' logical representation, 
  1966. however, to use XOM. 
  1967.  
  1968. Except for a few more details, which will be mentioned as needed, this is 
  1969. practically all there is to XDS object representation. 
  1970.  
  1971.  
  1972. ΓòÉΓòÉΓòÉ 5.2.10. XOM Objects and XDS Library Functions ΓòÉΓòÉΓòÉ
  1973.  
  1974. To call an XDS library function: 
  1975.  
  1976.    1. Decide what input parameters you must supply to the function. 
  1977.  
  1978.    2. Bundle up these parameters in objects (that is, arrays of object 
  1979.       descriptors) in an XDS format. 
  1980.  
  1981.  Almost all data returned by an XDS function is enclosed in objects, which you 
  1982.  must parse to recover the information that you want. This task is made almost 
  1983.  automatic by a library function supplied with the companion X/Open 
  1984.  OSI-Abstract-Data Manipulation (XOM) interface. 
  1985.  
  1986.  With XDS, the programmer has to perform a lot of call parameter management, 
  1987.  but in other respects the interface is easy to use. The XDS functions' 
  1988.  dependence on objects makes them easy to call, after you have the objects 
  1989.  themselves correctly set up. 
  1990.  
  1991.  
  1992. ΓòÉΓòÉΓòÉ 5.3. Accessing CDS Using the XDS Step-by-Step Procedure ΓòÉΓòÉΓòÉ
  1993.  
  1994. You now know all that you need to know to work with a cell namespace through 
  1995. XDS. The following sections provide a walk-through of the steps of some typical 
  1996. XDS/CDS operations. They describe what is involved in using XDS to access 
  1997. existing CDS attributes. They then describe how you can create and access new 
  1998. CDS entry attributes. 
  1999.  
  2000.  
  2001. ΓòÉΓòÉΓòÉ 5.3.1. Reading and Writing Existing CDS Entry Attributes Using XDS ΓòÉΓòÉΓòÉ
  2002.  
  2003. Suppose you want to use XDS to read some information from the following CDS 
  2004. entry: 
  2005.  
  2006. /.../C=US/O=OSF/OU=DCE/hosts/tamburlaine/self
  2007.  
  2008. As explained in the DCE for OS/2 Warp: Administration Guide, the 
  2009. /.:/hosts/hostname/self entry, which is created at the time of cell 
  2010. configuration, contains binding information for the machine hostname. Since 
  2011. this is a simple RPC NSI entry, there is not very much in the entry that is 
  2012. interesting to read, but this entry is used as an example anyway as a simple 
  2013. demonstration. 
  2014.  
  2015. Following are the header inclusions and general data declarations. 
  2016.  
  2017. #include <stdio.h>
  2018. #include <stdlib.h>
  2019. #include <string.h>
  2020. #include <xom.h>
  2021. #include <xds.h>
  2022. #include <xdsbdcp.h>
  2023. #include <xdscds.h>
  2024.  
  2025. The xom.h and xds.h header files must be included in the order shown in the 
  2026. preceding example. Also note that the xdscds.h header file is brought in for 
  2027. the sake of DSX_TYPELESS_RDN. This file is where the CDS-significant OIDs are 
  2028. defined. The xdsbdcp.h file contains information necessary to the Basic 
  2029. Directory Contents Package, which is the basic version of the XDS interface you 
  2030. can use in this program. 
  2031.  
  2032. The XDS/XOM interface defines numerous object identifier string constants, 
  2033. which are used to identify the many object classes, parts, and pieces (among 
  2034. other things) that it needs to know about. In order to make sure that these OID 
  2035. constants do not collide with any other constants, the interface refers to them 
  2036. with the string OMP_O_ prefixed to the user-visible form; for example, 
  2037. DS_C_DS_DN becomes OMP_O_DS_C_DS_DN internally. In order to make application 
  2038. instances consistent with the internal form, use OM_EXPORT to import all 
  2039. XDS-defined or XOM-defined OID constants used in your application. 
  2040.  
  2041. OM_EXPORT( DS_A_COUNTRY_NAME )
  2042. OM_EXPORT( DS_A_OBJECT_CLASS )
  2043. OM_EXPORT( DS_A_ORG_UNIT_NAME )
  2044. OM_EXPORT( DS_A_ORG_NAME )
  2045.  
  2046.  
  2047. OM_EXPORT( DS_C_ATTRIBUTE )
  2048. OM_EXPORT( DS_C_ATTRIBUTE_LIST )
  2049. OM_EXPORT( DS_C_AVA )
  2050. OM_EXPORT( DS_C_DS_DN )
  2051. OM_EXPORT( DS_C_DS_RDN )
  2052. OM_EXPORT( DS_C_ENTRY_INFO_SELECTION )
  2053. OM_EXPORT( DSX_TYPELESS_RDN )
  2054.  
  2055. /* ...Special OID for an untyped (i.e., non-X.500) "Relative */
  2056. /*  Distinguished Name". Defined in xdscds.h header.         */
  2057.  
  2058. A further important effect of OM_EXPORT is that it builds an OM_string 
  2059. structure to hold the exported Object Identifier hexadecimal string. As 
  2060. explained in the previous section, OIDs are not numeric values, but strings. 
  2061. Comparisons and similar operations on OIDs must access them as strings. Once an 
  2062. OID has been exported, you can access it using its declared name. For example, 
  2063. the hexadecimal string representation of DS_C_ATTRIBUTE is contained in 
  2064. DS_C_ATTRIBUTE.elements, and the length of this string is contained in 
  2065. DS_C_ATTRIBUTE.length. 
  2066.  
  2067.  
  2068. ΓòÉΓòÉΓòÉ 5.3.1.1. Significance of Typed and Untyped Entry Names ΓòÉΓòÉΓòÉ
  2069.  
  2070. Next are the static declarations for the lowest layer of objects that make up 
  2071. the global name (Distinguished Name) of the CDS directory entry you want to 
  2072. read. These lowest-level objects contain the string values for each part of the 
  2073. name. Remember that the first three parts of the name (excluding the global 
  2074. prefix /.../, which is not represented): 
  2075.  
  2076. /C=US/O=OSF/OU=DCE/
  2077.  
  2078. constitute the cell name. In this example, assume that GDS is being used as the 
  2079. cell's global directory service, so the cell name is represented in X.500 
  2080. format, and each part of it is typed in the object representation; for example, 
  2081. DS_A_COUNTRY_NAME is the DS_ATTRIBUTE_TYPE in the Country_String_Object. If you 
  2082. were using DNS, and the cell name, for example was: 
  2083.  
  2084. osf.org.dce
  2085.  
  2086. then the entire string osf.org.dce would be held in a single object whose 
  2087. DS_ATTRIBUTE_TYPE would be DSX_TYPELESS_RDN. 
  2088.  
  2089. DSX_TYPELESS_RDN is a special type that marks a name piece as not residing in 
  2090. an X.500 namespace. If the object resides under a typed X.500 name, as is the 
  2091. case in the declared object structures, then it serves as a delimiter for the 
  2092. end of the cell name GDS looks up, and the beginning of the name that is passed 
  2093. to a CDS server in that cell, assuming that the cell has access to GDS; if not, 
  2094. such a name cannot be resolved. If the untyped portion of the name is at the 
  2095. beginning, as would be the case with the name: 
  2096.  
  2097. /.../osf.org.dce/hosts/zenocrate/self
  2098.  
  2099. then the name is passed immediately by XDS by way of the local CDS (and the 
  2100. GDA) to DNS for resolution of the cell name. Thus, the typing of entry names 
  2101. determines which directory service a global directory entry name is sent to for 
  2102. resolution. 
  2103.  
  2104.  
  2105. ΓòÉΓòÉΓòÉ 5.3.1.2. Static Declarations ΓòÉΓòÉΓòÉ
  2106.  
  2107. Following are the static declarations you need: 
  2108.  
  2109. /*****************************************************************/
  2110. /* Here are the objects that contain the string values for each  */
  2111. /*  part of the CDS entry's global name...                   */
  2112.  
  2113. static OM_descriptor    Country_String_Object[] = {
  2114.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  2115.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_COUNTRY_NAME),
  2116.  {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("US")},
  2117.  OM_NULL_DESCRIPTOR
  2118. };
  2119.  
  2120. static OM_descriptor    Organization_String_Object[]= {
  2121.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  2122.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_ORG_NAME),
  2123.  {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("OSF")},
  2124.  OM_NULL_DESCRIPTOR
  2125. };
  2126.  
  2127. static OM_descriptor    Org_Unit_String_Object[] = {
  2128.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  2129.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_ORG_UNIT_NAME),
  2130.  {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("DCE")},
  2131.  OM_NULL_DESCRIPTOR
  2132. };
  2133.  
  2134. static OM_descriptor    Hosts_Dir_String_Object[] = {
  2135.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  2136.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_TYPELESS_RDN),
  2137.  {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("hosts")},
  2138.  OM_NULL_DESCRIPTOR
  2139. };
  2140.  
  2141. static OM_descriptor    Tamburlaine_Dir_String_Object[] = {
  2142.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  2143.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_TYPELESS_RDN),
  2144.  {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("tamburlaine")},
  2145.  OM_NULL_DESCRIPTOR
  2146. };
  2147.  
  2148. static OM_descriptor    Self_Entry_String_Object[] = {
  2149.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  2150.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_TYPELESS_RDN),
  2151.  {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("self")},
  2152.  OM_NULL_DESCRIPTOR
  2153. };
  2154.  
  2155. The string objects are contained by a next-higher level of objects that 
  2156. identify the strings as being pieces (RDNs) of a fully qualified directory 
  2157. entry name (DN). Thus, the Country_RDN object contains Country_String_Object as 
  2158. the value of its DS_AVAS attribute; Organization_RDN contains 
  2159. Organization_String_Object. 
  2160.  
  2161. /*****************************************************************/
  2162. /* Here are the "Relative Distinguished Name" objects.*/
  2163. static OM_descriptor    Country_RDN[] = {
  2164.  OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  2165.  {DS_AVAS, OM_S_OBJECT, {0, Country_String_Object}},
  2166.  OM_NULL_DESCRIPTOR
  2167. };
  2168.  
  2169. static OM_descriptor    Organization_RDN[] = {
  2170.  OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  2171.  {DS_AVAS, OM_S_OBJECT, {0, Organization_String_Object}},
  2172.  OM_NULL_DESCRIPTOR
  2173. };
  2174.  
  2175. static OM_descriptor    Org_Unit_RDN[] = {
  2176.  OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  2177.  {DS_AVAS, OM_S_OBJECT, {0, Org_Unit_String_Object}},
  2178.  OM_NULL_DESCRIPTOR
  2179. };
  2180.  
  2181. static OM_descriptor    Hosts_Dir_RDN[] = {
  2182.  OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  2183.  {DS_AVAS, OM_S_OBJECT, {0, Hosts_Dir_String_Object}},
  2184.  OM_NULL_DESCRIPTOR
  2185. };
  2186.  
  2187. static OM_descriptor    Tamburlaine_Dir_RDN[] = {
  2188.  OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  2189.  {DS_AVAS, OM_S_OBJECT, {0, Tamburlaine_Dir_String_Object}},
  2190.  OM_NULL_DESCRIPTOR
  2191. };
  2192.  
  2193. static OM_descriptor    Self_Entry_RDN[] = {
  2194.  OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  2195.  {DS_AVAS, OM_S_OBJECT, {0, Self_Entry_String_Object}},
  2196.  OM_NULL_DESCRIPTOR
  2197. };
  2198.  
  2199. At the highest level, all the subobjects are gathered together in the DN object 
  2200. named Full_Entry_Name_Object. 
  2201.  
  2202. /*****************************************************************
  2203. /
  2204. static OM_descriptor    Full_Entry_Name_Object[]  = {
  2205.      OM_OID_DESC(OM_CLASS, DS_C_DS_DN),
  2206.      {DS_RDNS, OM_S_OBJECT, {0, Country_RDN}},
  2207.      {DS_RDNS, OM_S_OBJECT, {0, Organization_RDN}},
  2208.      {DS_RDNS, OM_S_OBJECT, {0, Org_Unit_RDN}},
  2209.      {DS_RDNS, OM_S_OBJECT, {0, Hosts_Dir_RDN}},
  2210.      {DS_RDNS, OM_S_OBJECT, {0, Tamburlaine_Dir_RDN}},
  2211.      {DS_RDNS, OM_S_OBJECT, {0, Self_Entry_RDN}},
  2212.      OM_NULL_DESCRIPTOR
  2213. };
  2214.  
  2215.  
  2216. ΓòÉΓòÉΓòÉ 5.3.1.3. Other Necessary Objects for ds_read ΓòÉΓòÉΓòÉ
  2217.  
  2218. The ds_read procedure takes requests in the form of a DS_C_ENTRY_INFO_SELECTION 
  2219. class object. However, if you refer to the recipe for this object class in 
  2220. XDS/CDS Object Recipes, you might find that it is much simpler than the name 
  2221. object; it contains no subobjects, and its declaration is straightforward. 
  2222.  
  2223. The value of the DS_ALL_ATTRIBUTES attribute specifies that all attributes be 
  2224. read from the CDS entry, which is specified in the Full_Entry_Name_Object 
  2225. variable. The term attribute is used slightly differently in CDS and XDS 
  2226. contexts. In XDS, attributes describe the values that can be held by various 
  2227. object classes; they can be thought of as object fields. In CDS, attributes 
  2228. describe the values that can be associated with a directory entry. The 
  2229. following code fragment shows the definition of a DS_C_ENTRY_INFO_SELECTION 
  2230. object. 
  2231.  
  2232. static OM_descriptor         Entry_Info_Select_Object[[= }
  2233.      OM_OID_DESC(OM_CLASS, DS_C_ENTRY_INFO_SELECTION),
  2234.      {DS_ALL_ATTRIBUTES, OM_S_BOOLEAN, OM_TRUE},
  2235.      {DS_INFO_TYPE, OM_S_ENUMERATION, DS_TYPES_AND_VALUES},
  2236.      OM_NULL_DESCRIPTOR
  2237. };
  2238.  
  2239.  
  2240. ΓòÉΓòÉΓòÉ 5.3.1.4. Miscellaneous Declarations ΓòÉΓòÉΓòÉ
  2241.  
  2242. The following are declarations for miscellaneous variables: 
  2243.  
  2244. OM_workspace          xdsWorkspace;
  2245.      /* ...will contain handle to our "workspace"  */
  2246.  
  2247. DS_feature featureList[] = {
  2248.  
  2249.      { OM_STRING(OMP_O_DS_BASIC_DIR_CONTENTS_PKG), OM_TRUE },
  2250.      { 0 }
  2251. };
  2252.      /* ...list of service "packages" we will want from XDS     */
  2253.  
  2254. OM_private_object     session;
  2255.      /* ...will contain handle to a bound-to directory session  */
  2256.  
  2257. DS_status             dsStatus;
  2258.      /* ...status return from XDS calls  */
  2259.  
  2260. OM_return_code        omStatus;
  2261.      /* ...status return from XOM calls  */
  2262.  
  2263. OM_sint               dummy;
  2264.      /* ...for unsupported ds_read() argument  */
  2265.  
  2266. OM_private_object     readResultObject;
  2267.   /* ...to receive entry information read from CDS by "ds_read()" */
  2268.  
  2269. OM_type I_want_entry_object[] = {DS_ENTRY, OM_NO_MORE_TYPES};
  2270. OM_type I_want_attribute_list[] = {DS_ATTRIBUTES, OM_NO_MORE_TYPES};
  2271. OM_type I_want_attribute_value[] = }DS_ATTRIBUTE_VALUES,
  2272.                           OM_NO_MORE_TYPES};
  2273.    /* ...arrays to pass to "om_get()" to extract subobjects */
  2274.    /*  from the result object returned by "ds_read()"           */
  2275.  
  2276. OM_value_position number_of_descriptors;
  2277.    /* ...to hold number of attribute descriptors returned      */
  2278.    /*  by "om_get()                                             */
  2279.  
  2280. OM_public_object entry;
  2281.      /* ...to hold public object returned by "om_get()"     */
  2282.  
  2283.  
  2284. ΓòÉΓòÉΓòÉ 5.3.1.5. The Main Program ΓòÉΓòÉΓòÉ
  2285.  
  2286. This section describes the main program. Three calls usually precede any use of 
  2287. XDS. 
  2288.  
  2289. First, ds_initialize is called to set up a workspace. A workspace is a memory 
  2290. area in which XDS can generate objects that will be used to pass information to 
  2291. the application. If the call is successful, it returns a handle that must be 
  2292. saved for the ds_shutdown call. If the call is unsuccessful, it returns NULL, 
  2293. but this example does not check for errors. 
  2294.  
  2295. xdsWorkspace = ds_initialize();
  2296.  
  2297. If GDS is being used as the global directory service, the service packages are 
  2298. specified next. Packages consist of groups of objects, together with the 
  2299. associated supporting interface functionality, designed to be used for some 
  2300. specific end. This example uses the basic XDS service so 
  2301. DS_BASIC_DIR_CONTENTS_PKG is specified. The featureList parameter to ds_version 
  2302. is an array, not an object, because packages are not being handled yet. 
  2303.  
  2304. dsStatus = ds_version(featureList, xdsWorkspace);
  2305.  
  2306. Note:  If you are not using GDS as your global directory service (in other 
  2307.        words, if you are using XDS by itself), then you do not need to call 
  2308.        ds_version. If you use XDS to access the CDS namespace in any cell with 
  2309.        an X.500 cell name, DS_BASIC_DIR_CONTENTS_PKG is required. 
  2310.  
  2311.  From this point on, status is returned by XDS functions by way of a DS_status 
  2312.  variable.DS_status is a handle to a private object, whose value is DS_SUCCESS 
  2313.  (that is, NULL) if the call was successful. If something went wrong, the 
  2314.  information in the (possibly complex) private error object has to be analyzed 
  2315.  through calls to om_get, which is one of the general-purpose object management 
  2316.  functions that belongs to XDS's companion interface XOM. Usage of om_get is 
  2317.  demonstrated later on in this program, but return status is not checked in 
  2318.  this example. 
  2319.  
  2320.  The third necessary call is to ds_bind. This call brings up the directory 
  2321.  service, which binds to the CDS namespace. The DS_DEFAULT_SESSION parameter 
  2322.  calls for a default session. The alternative is to build and fill out your own 
  2323.  DS_C_SESSION object and pass that object. However, when accessing the CDS 
  2324.  namespace, the DS_DEFAULT_SESSION parameter is all that is required. The 
  2325.  default is used in this example: 
  2326.  
  2327.   dsStatus = ds_bind(DS_DEFAULT_SESSION, xdsWorkspace, &session);
  2328.  
  2329.  
  2330. ΓòÉΓòÉΓòÉ 5.3.1.6. Reading a CDS Attribute ΓòÉΓòÉΓòÉ
  2331.  
  2332. At this point, you can read a set of object attributes from the cell namespace 
  2333. entry. Call ds_read with the two objects that specify the entry to be read and 
  2334. the specific entry attribute you want: 
  2335.  
  2336. dsStatus = ds_read(session, DS_DEFAULT_CONTEXT,
  2337.            Full_Entry_Name_Object,
  2338.            Entry_Info_Select_Object, &readResultObject, &dummy);
  2339.  
  2340. The DS_DEFAULT_CONTEXT parameter could be substituted with a DS_C_CONTEXT 
  2341. object, which would typically be reused during a series of related XDS calls. 
  2342. This object specifies and records how the operations should be performed. Most 
  2343. of the fields in the DS_C_CONTEXT object have no meaning when accessing the CDS 
  2344. namespace. 
  2345.  
  2346. If the call succeeds, the private object readResultObject contains a series of 
  2347. DS_C_ATTRIBUTE subobjects, one for each attribute read from the cell name 
  2348. entry. A complete recipe for the DS_C_READ_RESULT object can be found in XDS 
  2349. Class Definitions, but the following is a skeletal outline of the object's 
  2350. structure: 
  2351.  
  2352. DS_C_READ_RESULT
  2353.         DS_ENTRY:  object(DS_C_ENTRY_INFO)
  2354.         DS_ALIAS_DEREFERENCED:  OM_S_BOOLEAN
  2355.         DS_PERFORMER:  object(DS_C_NAME)
  2356.  
  2357.     DS_C_ENTRY_INFO
  2358.             DS_FROM_ENTRY:  OM_S_BOOLEAN
  2359.             DS_OBJECT_NAME:  object(DS_C_NAME)
  2360.             DS_ATTRIBUTES:  one or more object(DS_C_ATTRIBUTE)
  2361.  
  2362.        DS_C_NAME == DS_C_DS_DN
  2363.                DS_RDNS:  object(DS_C_DS_RDN)
  2364.  
  2365.            DS_C_DS_RDN
  2366.                    DS_AVAS:  object(DS_C_AVA)
  2367.  
  2368.                DS_C_AVA
  2369.                        DS_ATTRIBUTE_TYPE: OID string
  2370.                        DS_ATTRIBUTE_VALUES: anything
  2371.  
  2372.        DS_C_ATTRIBUTE  -one for each attribute read
  2373.       DS_ATTRIBUTE_TYPE:  OID string
  2374.               DS_ATTRIBUTE_VALUES:  anything
  2375.       DS_C_ATTRIBUTE
  2376.               DS_ATTRIBUTE_TYPE:  OID string
  2377.               DS_ATTRIBUTE_VALUES:  anything
  2378.  
  2379.  
  2380. "The DS_C_READ_RESULT Object Structure" illustrates the general object 
  2381. structure of a DS_C_READ_RESULT, showing only the object-valued attributes, and 
  2382. only one DS_C_ATTRIBUTE subobject. 
  2383.  
  2384.  
  2385. The DS_C_READ_RESULT Object Structure
  2386.  
  2387.  
  2388. ΓòÉΓòÉΓòÉ 5.3.1.7. Handling the Result Object ΓòÉΓòÉΓòÉ
  2389.  
  2390. The next goal is to extract the instances of the DS_C_ATTRIBUTE subclass, one 
  2391. for each attribute read, from the returned object. The first step is to make a 
  2392. public copy of readResultObject, which is a private object and does not, 
  2393. therefore, allow access to the object descriptors themselves. Using the XOM 
  2394. om_get function, you can make a public copy of readResultObject, and at the 
  2395. same time specify that only the relevant parts of it be preserved in the copy. 
  2396. Then with a couple of calls to om_get, you can reduce the object to manageable 
  2397. size, leaving a superobject whose immediate subobjects are fairly easily 
  2398. accessed. 
  2399.  
  2400. The om_get function takes as its third input parameter an OM_type_list, which 
  2401. is an array of OM_type. Possible parameters are DS_ENTRY, DS_ATTRIBUTES, 
  2402. DS_ATTRIBUTE_VALUES, and anything that can legitimately appear in an object 
  2403. descriptor's type field. The types specified in this parameter are interpreted 
  2404. according to the options specified in the preceding parameter. For example, the 
  2405. relevant attribute from the read result is DS_ENTRY. It contains the 
  2406. DS_C_ENTRY_INFO object, which in turn contains the DS_C_ATTRIBUTE objects. The 
  2407. DS_C_ATTRIBUTE objects contain the data read from the cell directory name 
  2408. entry. Therefore, you should specify the OM_EXCLUDE_ALL_BUT_THESE_TYPES option, 
  2409. which has the effect of excluding everything but the contents of the object's 
  2410. DS_ENTRY type attribute. 
  2411.  
  2412. The OM_EXCLUDE_SUBOBJECTS option is also ORed into the parameter. Why would you 
  2413. not preserve the subobjects of DS_C_ENTRY_INFO? Because om_get works only on 
  2414. private, not on public objects. If you were to use om_get on the entire object 
  2415. substructure, you would not be able to continue getting the subobjects, and 
  2416. instead you would have to follow the object pointers down to the 
  2417. DS_C_ATTRIBUTEs. However, when om_get excludes subobjects from a copy, it does 
  2418. not really leave them out; it merely leaves the subobjects private, with a 
  2419. handle to the private objects where pointers would have been. This allows you 
  2420. to continue to call om_get as long as there are more subobjects. 
  2421.  
  2422. The following is the first call: 
  2423.  
  2424. /* The DS_C_READ_RESULT object that ds_read()               */
  2425. /*  return has one subobject, DS_C_ENTRY_INFO;              */
  2426. /*  it in turn has two subobjects, i.e. a DS_C_NAME         */
  2427. /*  which holds the object's distinguished name (which we   */
  2428. /*  don't care about here), and a DS_C_ATTRIBUTE            */
  2429. /*  which contains the attribute info we read; that one we  */
  2430. /*  want.  So we climb down to it...                        */
  2431. /* This om_get() will "return" the entry-info object...     */
  2432.  
  2433. omStatus = om_get(readResultObject,
  2434.                   OM_EXCLUDE_ALL_BUT_THESE_TYPES +
  2435.                   OM_EXCLUDE_SUBOBJECTS,
  2436.                   I_want_entry_object,
  2437.                   OM_FALSE,
  2438.                   OM_ALL_VALUES,
  2439.                   OM_ALL_VALUES,
  2440.                   &entry,
  2441.                   &number_of_descriptors);
  2442.  
  2443. The number_of_descriptors parameter contains the number of attribute 
  2444. descriptors returned in the public copy, not in any excluded subobjects. 
  2445.  
  2446. If an XOM function is successful, it returns an OM_SUCCESS code. Unsuccessful 
  2447. calls to XOM functions do not return error objects, but rather return simple 
  2448. error codes. The interface assumes that if the XOM function does not accept 
  2449. your object, then you will not be able to get much information from any further 
  2450. objects. The return status is not checked in this example. 
  2451.  
  2452. The return parameter entry should now contain a pointer to the DS_C_ENTRY_INFO 
  2453. object with the following immediate structure. (The number of instances of 
  2454. DS_ATTRIBUTES depends on the number of attributes read from the entry.) 
  2455.  
  2456. DS_C_ENTRY_INFO
  2457.     DS_FROM_ENTRY:  OM_S_BOOLEAN
  2458.     DS_OBJECT_NAME:  object(DS_C_NAME)
  2459.     DS_ATTRIBUTES:  object(DS_C_ATTRIBUTE)
  2460.                             DS_C_ATTRIBUTE
  2461.                                 DS_ATTRIBUTE_TYPE:  OID string
  2462.                                 DS_ATTRIBUTE_VALUES:  anything
  2463.  
  2464. DS_ATTRIBUTES:  object(DS_C_ATTRIBUTE)
  2465.                          object(DS_C_ATTRIBUTE)
  2466.                              DS_C_ATTRIBUTE
  2467.                                  DS_ATTRIBUTE_TYPE:  OID string
  2468.                                  DS_ATTRIBUTE_VALUES:  anything
  2469.  
  2470. The items in bold are private subobjects. 
  2471.  
  2472. "The DS_C_ENTRY_INFO Object Structure" shows the DS_C_ENTRY_INFO object. Only 
  2473. one instance of a DS_C_ATTRIBUTE subobject is shown in the figure; usually 
  2474. there are several such subobjects, all at the same level, each containing 
  2475. information about one of the attributes read from the entry. These subobjects 
  2476. are represented in DS_C_ENTRY_INFO as a series of descriptors of type 
  2477. DS_ATTRIBUTES, each of which has as its value a separate DS_C_ATTRIBUTE 
  2478. subobject. 
  2479.  
  2480.  
  2481. The DS_C_ENTRY_INFO Object Structure
  2482.  
  2483. Now extract the separate attribute values of the entry that was read. These 
  2484. were returned as separate object values of DS_ATTRIBUTES; each one has an 
  2485. object class of DS_C_ATTRIBUTE To return any one of these subobjects, a second 
  2486. call to om_get is necessary, as follows. 
  2487.  
  2488. /*  The second om_get() returns one selected sub-object     */
  2489. /*  from the DS_C_ENTRY_INFO subobject we just got.   */
  2490. /*  The contents of "entry" as we enter this call is the       */
  2491. /*  private subobject which is the value of DS_ATTRIBUTES.  */
  2492. /*  If we were to make the following call with the             */
  2493. /*  OM_EXCLUDE_SUBOBJECTS and without the                */
  2494. /*  OM_EXCLUDE_ALL_BUT_THESE_VALUES flags,      */
  2495. /*  we would get back an object consisting of six private      */
  2496. /*  subobjects, one for each of the attributes returned.       */
  2497. /*  Note the values for initial and limiting                   */
  2498. /*  position: "2" specifies                                    */
  2499. /*  that we want only the third DS_C_ATTRIBUTE subobject */
  2500. /*  to be gotten (the subobjects are numbered from 0, not      */
  2501. /*  from one), and the "3" specifies that we want no more      */
  2502. /*  than that-- in other words, the limiting value must al-    */
  2503. /*  ways be one more than the initial value if the latter      */
  2504. /*  is to have any effect.                                     */
  2505. /*  OM_EXCLUDE_ALL_BUT_THESE_VALUES             */
  2506. /*  is likewise required for the initial and limiting val-     */
  2507. /*  ues to have any effect...                              */
  2508.  
  2509. omStatus = om_get(entry->value.object.object,
  2510.                   OM_EXCLUDE_ALL_BUT_THESE_TYPES
  2511.                   + OM_EXCLUDE_SUBOBJECTS
  2512.                   + OM_EXCLUDE_ALL_BUT_THESE_VALUES,
  2513.                   I_want_attribute_list,
  2514.                   OM_FALSE,
  2515.                   ((OM_value_position) 2),
  2516.                   ((OM_value_position) 3),
  2517.                   &entry,
  2518.                   &number_of_descriptors);
  2519.  
  2520. See the value that is passed as the first parameter. Because om_get does not 
  2521. work on public objects, the application must pass it the handle of the private 
  2522. subobject explicitly. To do this you have to know the arrangement of the 
  2523. descriptor's value union, which is defined in xom.h. 
  2524.  
  2525.  
  2526. ΓòÉΓòÉΓòÉ 5.3.1.8. Representation of Object Values ΓòÉΓòÉΓòÉ
  2527.  
  2528. The following is the layout of the object field in a descriptor's value union: 
  2529.  
  2530. typedef struct {
  2531.         OM_uint32         padding;
  2532.         OM_object         object;
  2533. } OM_padded_object;
  2534.  
  2535. The following is the layout of the value union: 
  2536.  
  2537. typedef union OM_value_union {
  2538.         OM_string        string;
  2539.         OM_boolean       boolean;
  2540.         OM_enumeration   enumeration;
  2541.         OM_integer       integer;
  2542.         OM_padded_object        object;
  2543. } OM_value;
  2544.  
  2545. The following is the layout of the descriptor: 
  2546.  
  2547. typedef struct OM_descriptor_struct {
  2548.         OM_type                   type;
  2549.         OM_syntax                 syntax;
  2550.         union OM_value_union   value;
  2551. } OM_descriptor;
  2552.  
  2553. Thus, if entry is a pointer to the DS_C_ENTRY_INFO object, then 
  2554. entry->value.object.object is the private handle to the DS_C_ATTRIBUTE object 
  2555. that you want next. 
  2556.  
  2557.  
  2558. ΓòÉΓòÉΓòÉ 5.3.1.9. Extracting an Attribute Value ΓòÉΓòÉΓòÉ
  2559.  
  2560. The last call yielded one separate DS_C_ATTRIBUTE subobject from the original 
  2561. returned result object: 
  2562.  
  2563. DS_C_ATTRIBUTE
  2564.         DS_ATTRIBUTE_TYPE:  OID string
  2565.         DS_ATTRIBUTE_VALUES:  anything
  2566.  
  2567. "The DS_C_ATTRIBUTE Object Structure" illustrates what is left. 
  2568.  
  2569.  
  2570. The DS_C_ATTRIBUTE Object Structure
  2571.  
  2572. A final call to om_get returns the single object descriptor that contains the 
  2573. actual value of the single attribute you selected from the returned object: 
  2574.  
  2575. omStatus = om_get(entry->value.object.object,
  2576.                   OM_EXCLUDE_ALL_BUT_THESE_TYPES,
  2577.                   I_want_attribute_value,
  2578.                   OM_FALSE,
  2579.                   OM_ALL_VALUES,
  2580.                   OM_ALL_VALUES,
  2581.                   &entry,
  2582.                   &number_of_descriptors);
  2583.  
  2584. At this point, the value of entry is the base address of an object descriptor 
  2585. whose entry->type is DS_ATTRIBUTE_VALUES. Depending on the value found in 
  2586. entry->syntax, the value of the attribute can be read from 
  2587. entry->value.string,entry->value.integer, entry->value.boolean, or 
  2588. entry->value.enumeration. For example, suppose the value of entry->syntax is 
  2589. OM_S_OCTET_STRING. The attribute value, represented as an octet string (not 
  2590. terminated by a NULL), is found in entry->value.string.elements; its length is 
  2591. found in entry->value.string.length. 
  2592.  
  2593. You can check any attribute value against the value you get from the cdscp 
  2594. command by entering: 
  2595.  
  2596. cdscp show object /.: /hosts/tamburlaine/self
  2597.  
  2598. For further information on cdscp, see the DCE for OS/2 Warp: Administration 
  2599. Command Reference. 
  2600.  
  2601. You can always call om_get to get the entire returned object from an XDS call. 
  2602. This yields a full structure of object descriptors that you can manipulate like 
  2603. any other data structure. To do this with the ds_read return object would have 
  2604. required the following call: 
  2605.  
  2606. /* make a public copy of ENTIRE object...   */
  2607.  
  2608. omStatus = om_get(readResultObject,
  2609.                   OM_NO_EXCLUSIONS,
  2610.                   ((OM_type_list) 0),
  2611.                   OM_FALSE,
  2612.                   ((OM_value_position) 0),
  2613.                   ((OM_value_position) 0),
  2614.                   &entry,
  2615.                   &number_of_descriptors);
  2616.  
  2617. At the end of every XDS session you have to unbind from the CDS namespace, and 
  2618. then deallocate the XDS and XOM structures and other storage. You must also 
  2619. explicitly deallocate any service-generated objects, whether public or private, 
  2620. with calls to om_delete, as follows: 
  2621.  
  2622. /* delete service-generated public or private objects...  */
  2623.  
  2624. omStatus = om_delete(readResultObject);
  2625. omStatus = om_delete(entry);
  2626.  
  2627. /* unbind from the CDS namespace  */
  2628. dsStatus = ds_unbind(session);
  2629.  
  2630. /* close down the workspace... */
  2631. dsStatus = ds_shutdown(xdsWorkspace);
  2632.  
  2633. exit;
  2634.  
  2635.  
  2636. ΓòÉΓòÉΓòÉ 5.3.2. Creating New CDS Entry Attributes ΓòÉΓòÉΓòÉ
  2637.  
  2638. The following sections provide the procedure and some code examples for 
  2639. creating new CDS entry attributes: 
  2640.  
  2641.    o  Procedure for Creating New Attributes 
  2642.    o  Rules for Transforming an OID into XDS Internal Form 
  2643.    o  Coding Examples 
  2644.  
  2645.  
  2646. ΓòÉΓòÉΓòÉ 5.3.2.1. Procedure for Creating New Attributes ΓòÉΓòÉΓòÉ
  2647.  
  2648. To create new attributes of your own on cell namespace entries, you must do the 
  2649. following: 
  2650.  
  2651.    1. Allocate a new ISO Object Identifier (OID) for the new attribute. For 
  2652.       information on how to do this, see the DCE for OS/2 Warp: Administration 
  2653.       Guide. 
  2654.  
  2655.    2. Enter the new attribute's name and OID in the \opt\dcelocal\etc\cds_attr 
  2656.       file. This text file contains OID-to-readable string mappings that are 
  2657.       used, for example, by the CDS administration command cdscp when it 
  2658.       displays CDS entry attributes. Each entry also gives a syntax for reading 
  2659.       the information in the entry itself. This should be congruent with the 
  2660.       format of the data you intend to write in the attribute. For more 
  2661.       information about the cds_attr file, see DCE for OS/2 
  2662.       Warp:Administration Guide. 
  2663.  
  2664.    3. In the xdscds.h header file, define an appropriate OID string constant to 
  2665.       represent the new attribute. 
  2666.  
  2667.       For example, the following shows the xdscds.h definition for the CDS 
  2668.       CDS_Class attribute: 
  2669.  
  2670.             #define OMP_O_DSX_A_CDS_Class            "\x2B\x16\x01\x03\x0F"
  2671.  
  2672.       Note the XDS internal form of the name. This is what DSX_A_CDS_Class 
  2673.       looks like when it has been exported using OM_EXPORT in an application, 
  2674.       as all OIDs must be. Thus, if you wanted to create a CDS attribute called 
  2675.       CDS_Brave_New_Attrib, you would obtain an OID from your administrator and 
  2676.       add the following line to xdscds.h: 
  2677.  
  2678.             #define OMP_O_DSX_A_CDS_Brave_New_Attrib "your_OID"
  2679.  
  2680.    4. In an application, call the XDS ds_modify_entry routine to add the 
  2681.       attribute to the cell namespace entry of your choice. 
  2682.  
  2683.  
  2684. ΓòÉΓòÉΓòÉ 5.3.2.2. Rules for Transforming an OID into XDS Internal Form ΓòÉΓòÉΓòÉ
  2685.  
  2686. In Item 3 in the previous procedure, the CDS_Class attribute is shown in the 
  2687. XDS internal form as \x2B\x16\x01\x03\x0F. In the cds_attr file, the OID is 
  2688. defined as 1.3.22.1.3.15. The following provides the rules for transforming an 
  2689. OID into the XDS internal form. They must be applied in the sequence listed 
  2690. below. 
  2691.  
  2692.    1. The first two OID values are collapsed into a single byte using the 
  2693.       following formula: 
  2694.  
  2695.      OID Value 1 x 40 + OID Value 2 
  2696.  
  2697.  For example, OID 1.3 transforms to \x2B (1 x 40 + 3 = 43 or \x2B). 
  2698.  
  2699.    2. If an OID value is 127 or less, it is represented by its hex value. For 
  2700.       example, the OID value 22 above is represented by \x16. 
  2701.  
  2702.    3. If an OID value is larger than 127, the value is represented by multiple 
  2703.       bytes in the XDS internal form. In the XDS internal form, the high order 
  2704.       bit (\x80) means that the following byte is part of the same OID value. 
  2705.       The low order 7 bits are concatenated with the lower 7 bits of the next 
  2706.       byte. This concatenation continues until a byte is reached that is \x7F 
  2707.       or less. Once this transformation is complete, the values of the bits 
  2708.       concatenated together will be the value of the OID. 
  2709.  
  2710.       For example, the OID for the Service Package is 1.3.12.2.1011.28.0 and 
  2711.       has an XDS internal representation of \x2B\x0C\x02\x87\x73\x1C\00. The 
  2712.       following illustrates the mapping used: 
  2713.  
  2714.               1.3 -> \x2B       (Rule 1)
  2715.                12 -> \x0C       (Rule 2)
  2716.                 2 -> \x02       (Rule 2)
  2717.              1011 -> \87\x73    (Rule 3 - see below)
  2718.                28 -> \x1C       (Rule 2)
  2719.                 0 -> \x00       (rule 2)
  2720.  
  2721.       If you concatenate the last 7 bits of \x87 and \x73, the value \x03\xF3 
  2722.       is obtained (which is 1011 in decimal). 
  2723.  
  2724.  
  2725. ΓòÉΓòÉΓòÉ 5.3.2.3. Coding Examples ΓòÉΓòÉΓòÉ
  2726.  
  2727. In the following code fragments a set of declarations similar to those in the 
  2728. previous examples is assumed. 
  2729.  
  2730. The ds_modify_entry function, which is called to add new attributes to an entry 
  2731. or to write new values into existing attributes, requires a DS_C_ENTRY_MOD_LIST 
  2732. input object whose contents specify the attributes and values to be written to 
  2733. the entry. The name, as always, is specified in a DS_C_DS_DN object. The 
  2734. following is a static declaration of such a list, which consists of two 
  2735. attributes: 
  2736.  
  2737. static OM_descriptor    Entry_Modification_Object_1[] = {
  2738.      OM_OID_DESC(OM_CLASS, DS_C_ENTRY_MOD),
  2739.      OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_A_CDS_Brave_New_Attrib),
  2740.      {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING,
  2741.              OM_STRING("O brave new attribute")},
  2742.      {DS_MOD_TYPE, OM_S_ENUMERATION, DS_ADD_ATTRIBUTE}
  2743.      OM_NULL_DESCRIPTOR
  2744. };
  2745.  
  2746. static OM_descriptor    Entry_Modification_Object_2[] = {
  2747.      OM_OID_DESC(OM_CLASS, DS_C_ENTRY_MOD),
  2748.      OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_A_CDS_Class),
  2749.      {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING,  OM_STRING("Miscellaneous")},
  2750.      }DS_MOD_TYPE, OM_S_ENUMERATION, DS_ADD_ATTRIBUTE},
  2751.      OM_NULL_DESCRIPTOR
  2752. };
  2753.  
  2754.  
  2755. static OM_descriptor     Entry_Modification_List_Object[] =  {
  2756.      OM_OID_DESC(OM_CLASS, DS_C_ENTRY_MOD_LIST),
  2757.      {DS_CHANGES, OM_S_OBJECT, {0, Entry_Modification_Object_1}},
  2758.      {DS_CHANGES, OM_S_OBJECT, {0, Entry_Modification_Object_2}},
  2759.      OM_NULL_DESCRIPTOR
  2760. };
  2761.  
  2762. A full description of this object can be found in XDS/CDS Object Recipes. There 
  2763. could be any number of additional attribute changes in the list; this would 
  2764. mean additional DS_C_ENTRY_MOD objects declared, and an additional DS_CHANGES 
  2765. descriptor declared and initialized in the DS_C_ENTRY_MOD_LIST object. 
  2766.  
  2767. With the DS_C_ENTRY_MOD_LIST class object having been declared as shown 
  2768. previously, the following code fragment illustrates how to call XDS to write a 
  2769. new attribute value (actually two new values because two attributes are 
  2770. contained in the list object). 
  2771.  
  2772. Note:  Any of the attributes can be new, although the entry itself must already 
  2773.        exist. 
  2774.  
  2775.   dsStatus = ds_modify_entry(session,            /* Directory session from "ds_bind" */
  2776.                     DS_DEFAULT_CONTEXT, /* Usual directory context   */
  2777.                     Full_Entry_Name_Object, /* Entry name object         */
  2778.                     Entry_Modification_List_Object, /* Entry Modifi- */
  2779.                                             /*  cation object      */
  2780.                     &dummy);                /* Unsupported argument  */
  2781.  
  2782.  If the entire entry is new, you must call ds_add_entry. This function requires 
  2783.  an input object of class DS_C_ATTRIBUTE_LIST, whose contents specify the 
  2784.  attributes (and values) to be attached to the new entry. Following is the 
  2785.  static declaration for an attribute list that contains three attributes: 
  2786.  
  2787.   static OM_descriptor    Class_Attribute_Object[] = {
  2788.        OM_OID_DESC(OM_CLASS, DS_C_ATTRIBUTE),
  2789.        OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_A_CDS_Class),
  2790.        {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING,
  2791.         OM_STRING("Printer")},
  2792.        OM_NULL_DESCRIPTOR
  2793.   };
  2794.  
  2795.   static OM_descriptor    ClassVersion_Attribute_Object[] = {
  2796.        OM_OID_DESC(OM_CLASS, DS_ATTTRIBUTE),
  2797.        OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_A_CDS_ClassVersion),
  2798.        {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("1.0")},
  2799.        OM_NULL_DESCRIPTOR
  2800.   };
  2801.  
  2802.   static OM_descriptor    My_Own_Attribute_Object[] = {
  2803.        OM_OID_DESC(OM_CLASS, DS_C_ATTRIBUTE),
  2804.        OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_A_CDS_My_OwnAttribute),
  2805.        {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING,
  2806.          OM_STRING("zorro")},
  2807.        OM_NULL_DESCRIPTOR
  2808.   };
  2809.  
  2810.   static OM_descriptor    Attribute_List_Object[]= {
  2811.        OM_OID_DESC(OM_CLASS, DS_C_ATTRIBUTE_LIST),
  2812.        {DS_ATTRIBUTES, OM_S_OBJECT, {0, Class_Attribute_Object}},
  2813.        {DS_ATTRIBUTES, OM_S_OBJECT, {0, ClassVersion_Attribute_Object}},
  2814.        {DS_ATTRIBUTES, OM_S_OBJECT, {0, My_Own_Attribute_Object}},
  2815.        OM_NULL_DESCRIPTOR
  2816.   };
  2817.  
  2818.  The ds_add_entry function also requires a DS_C_DS_DN class object containing 
  2819.  the new entry's full name, for example: 
  2820.  
  2821.   /.../osf.org.dce/subsys/doc/my_book
  2822.  
  2823.  where every member of the name exists except for the last one, my_book. 
  2824.  Assuming that Full_Entry_Name_Object is a DS_C_DS_DN object, the following 
  2825.  code shows what the call would look like: 
  2826.  
  2827.   dsStatus = ds_add_entry(session, /*Directory session from "ds_bind()" */
  2828.              DS_DEFAULT_CONTEXT, /* Usual directory context     */
  2829.              Full_Entry_Name_Object, /* Name of new entry           */
  2830.              Attribute_List_Object, /* Attributes to be attached   */
  2831.                                 /*  to new entry, with values           */
  2832.                 &dummy);               /* Unsupported argument      */
  2833.  
  2834.  
  2835. ΓòÉΓòÉΓòÉ 5.4. Object-Handling Techniques ΓòÉΓòÉΓòÉ
  2836.  
  2837. These sections describe the use of XOM and discuss dynamic object creation: 
  2838.  
  2839.    o  Using XOM to Access CDS 
  2840.    o  Dynamic Creation of Objects 
  2841.  
  2842.  
  2843. ΓòÉΓòÉΓòÉ 5.4.1. Using XOM to Access CDS ΓòÉΓòÉΓòÉ
  2844.  
  2845. The following code fragments demonstrate an alternative way to set up the entry 
  2846. modification object for a ds_modify_entry call, mainly for the sake of showing 
  2847. how the om_put and om_write functions are used. 
  2848.  
  2849. The following technique is used to initialize the modification object: 
  2850.  
  2851.    1. The om_create function is called to generate a private object of a 
  2852.       specified class. 
  2853.  
  2854.    2. The om_put function is called to copy statically declared attributes into 
  2855.       a declared private object. 
  2856.  
  2857.    3. The om_write function is called to write the value string, which is to be 
  2858.       assigned to the attribute, into the private object. 
  2859.  
  2860.    4. The om_get function is called to make the private object public. 
  2861.  
  2862.    5. The object is now public, and its address is inserted into the 
  2863.       DS_C_ENTRY_MOD_LIST object's DS_CHANGES attribute. 
  2864.  
  2865.  The following new declarations are necessary: 
  2866.  
  2867.   OM_private_object newAttributeMod_priv;
  2868.     /* ...handle to a private object to "om_put" to               */
  2869.  
  2870.   OM_public_object newAttributeMod_pub;
  2871.     /* ...to hold public object from "om_get"                     */
  2872.  
  2873.   OM_type types_to_include[] = {DS_ATTRIBUTE_TYPE,
  2874.                   DS_ATTRIBUTE_VALUES,
  2875.                   DS_MOD_TYPE, OM_NO_MORE_TYPE};
  2876.     /* ...i.e., all attribute values of the Entry Modification    */
  2877.     /*  object. For "om_put()" and "om_get"                       */
  2878.  
  2879.   char *my_string = "O brave new attribute";
  2880.     /* ...value I want to write into attribute                    */
  2881.  
  2882.   OM_value_position number_of_descriptors;
  2883.     /* ...to hold value returned by "om_get"                      */
  2884.  
  2885.  First, use XOM to generate a private object of the desired class: 
  2886.  
  2887.   omStatus = om_create(DS_C_ENTRY_MOD,  /*  Class of object   */
  2888.                   OM_TRUE,   /* Initialize attributes per defaults   */
  2889.                   xdsWorkspace,  /* Our workspace handle                */
  2890.                   &newAttributeMod_priv);  /* Created object handle     */
  2891.  
  2892.  Next, copy the public object's attributes into the private object: 
  2893.  
  2894.   omStatus = om_put(newAttributeMod_priv, /*Private object to copy */
  2895.                                            /*  attributes into      */
  2896.                OM_REPLACE_ALL,        /* Which attributes to replace in */
  2897.                                            /*  destination object  */
  2898.                Entry_Modification_Object, /* Source object to copy      */
  2899.                                            /*  attributes from     */
  2900.                types_to_include, /* List of attribute types we want     */
  2901.                                            /*  copied              */
  2902.                0, 0); /* Start-stop index for multivalued attributes    */
  2903.                       /* ignored with OM_REPLACE_ALL        */
  2904.  
  2905.  Because om_put ignores the class of the source object (the object from which 
  2906.  attributes are being copied), it is not necessary to declare class descriptors 
  2907.  for the source objects. In other words, the static declarations could have 
  2908.  omitted the OM_CLASS initializations if this technique were being used, for 
  2909.  example: 
  2910.  
  2911.   static OM_descriptor    Entry_Modification_Object_2[]= {
  2912.   /*     OM_OID_DESC(OM_CLASS, DS_C_ENTRY_MOD), */
  2913.   /*     Not needed for "om_put"...                        */
  2914.  
  2915.        OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_A_CDS_Class),
  2916.        {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING,
  2917.         OM_STRING("Miscellaneous")},
  2918.        {DS_MOD_TYPE, OM_S_ENUMERATION, DS_ADD_ATTRIBUTE},
  2919.        OM_NULL_DESCRIPTOR
  2920.   };
  2921.  
  2922.  The OM_CLASS was already properly initialized by om_create. 
  2923.  
  2924.  Next, write the attribute value string into the private object: 
  2925.  
  2926.   omStatus = om_write(newAttributeMod_priv, /* Private object to write to */
  2927.            DS_ATTRIBUTE_VALUES,             /* Attribute type whose value */
  2928.                                             /*  we're writing */
  2929.            0,                               /* Descriptor index if attribute  is multivalued */
  2930.            OM_S_PRINTABLE_STRING,          /* Syntax of value */
  2931.            0,                               /* Offset in source string to write from */
  2932.            my_string);                      /* Source string to write from */
  2933.  
  2934.  Now make the whole thing public again: 
  2935.  
  2936.   omStatus = om_get(newAttributeMod_priv, /* Private object to get*/
  2937.            0,                    /* Get everything               */
  2938.            types_to_include,     /* All attribute types          */
  2939.            0,                    /* Unsupported argument         */
  2940.            0, 0, /* Start-stop descriptor index for multival-    */
  2941.                  /*  ued attributes; ignored in this case        */
  2942.            &newAttributeMod_pub, /* Pointer to returned copy   */
  2943.            &number_of_descriptors); /* Number of attribute      */
  2944.                                    /*  descriptors returned */
  2945.  
  2946.  Finally, insert the address of the subobject into its superobject: 
  2947.  
  2948.   Entry_Modification_List_Object[1].value.object.object = newAttributeMod_pub;
  2949.  
  2950.  
  2951. ΓòÉΓòÉΓòÉ 5.4.2. Dynamic Creation of Objects ΓòÉΓòÉΓòÉ
  2952.  
  2953. Objects can be completely dynamically allocated and initialized; however, you 
  2954. have to implement the routines to do this yourself. The examples in this 
  2955. section are code fragments; for complete examples, see the 
  2956. \opt\dcelocal\examples\xdsxom directory. 
  2957.  
  2958. Initialization of object structures can be automated by declaring macros or 
  2959. functions to do this. For example, the following macro initializes one object 
  2960. descriptor with a full set of appropriate values: 
  2961.  
  2962.    /* Put a C-style (NULL-terminated) string into an object, and     */
  2963.    /* set all the other descriptor fields to requested values... */
  2964. #define FILL_OMD_STRING( desc, index, typ, syntx, val ) \
  2965.         desc[index].type = typ; \
  2966.         desc[index].syntax = syntx; \
  2967.         desc[index].value.string.length =
  2968. (OM_element_position)strlen(val); \
  2969.         desc[index].value.string.elements = val;
  2970.  
  2971. When generating objects, use malloc to allocate space for the number of objects 
  2972. desired, and then use macros (or functions) such as the preceding one to 
  2973. initialize the descriptors. The following code fragment shows how this can be 
  2974. done for the top level object of a DS_C_DS_DN, such as the one described near 
  2975. the beginning of this section. Recall that the DS_C_DS_DN has a separate 
  2976. DS_RDNS descriptor for each name piece in the full name. 
  2977.  
  2978. /* Calculate number of "DS_RDNS" attributes there should be... */
  2979. numberOfPieces = number_of_name_pieces;
  2980.  
  2981. /* Allocate space for that many descriptors, plus one for the      */
  2982. /*  object class at the front, and a NULL descriptor at the        */
  2983. /*  back...                                                    */
  2984. Name_Object = (OM_object)malloc((numberOfPieces + 2) *
  2985.                   sizeof(OM_descriptor));
  2986. if(Name_Object == NULL)                  /* "malloc" failed */
  2987. return OM_MEMORY_INSUFFICIENT;
  2988.  
  2989. /* Initialize it as a DS_C_DS_ DN object by placing that class  */
  2990. /*  identifier in the first position...                        */
  2991.  
  2992. FILL_OMD_XOM_STRING(Name_Object, 0, OM_CLASS,
  2993.     OM_S_OBJECT_IDENTIFIER_STRING, DS_C_DS_DN)
  2994.  
  2995. All of these steps would have to be repeated for each of the DS_C_DS_RDN 
  2996. objects required as attribute values of the DS_C_DS_DN. Then a tier of DS_C_AVA 
  2997. objects would have to be created in the same way, because each of the 
  2998. DS_C_DS_RDNs requires one of them as its attribute value. 
  2999.  
  3000. You could now use om_create and om_put to generate a private copy of this 
  3001. object, if so desired. 
  3002.  
  3003. The application is responsible for managing the memory it allocates for such 
  3004. dynamic object creation. 
  3005.  
  3006.  
  3007. ΓòÉΓòÉΓòÉ 5.5. XDS/CDS Object Recipes ΓòÉΓòÉΓòÉ
  3008.  
  3009. The following sections contain shorthand for object classes. For example, if 
  3010. you look at the reference pages for the ds_... functions, you will see that an 
  3011. object of class DS_C_NAME is required to hold entry names you want to pass to 
  3012. the call, not DS_C_DS_DN as is stated in this section. However, DS_C_NAME is in 
  3013. fact an abstract class with only one subclass, DS_C_DS_DN, so in this section, 
  3014. DS_C_DS_DN is used. 
  3015.  
  3016.  
  3017. ΓòÉΓòÉΓòÉ 5.5.1. Input XDS/CDS Object Recipes ΓòÉΓòÉΓòÉ
  3018.  
  3019. In general, the objects you work with in an XDS/CDS application fall into two 
  3020. categories: 
  3021.  
  3022.    o  Objects you have to supply as input parameters to XDS functions 
  3023.  
  3024.    o  Objects returned to you as output by XDS functions 
  3025.  
  3026.  This section describes only the first category, because you have to construct 
  3027.  these input objects yourself. 
  3028.  
  3029.  The following list shows XDS functions and the objects required by them as 
  3030.  input parameters. Only items significant to CDS are listed. DS_C_SESSION and 
  3031.  DS_C_CONTEXT are ignored. DS_C_SESSION is returned by ds_bind, which usually 
  3032.  receives the DS_DEFAULT_SESSION constant as input. DS_C_CONTEXT is usually 
  3033.  substituted by the DS_DEFAULT_CONTEXT constant. 
  3034.  
  3035.  Note:  DS_C_NAME is an abstract class that has the single subclass DS_C_DS_DN. 
  3036.         Therefore, DS_C_NAME is practically the same thing as DS_C_DS_DN. 
  3037.  
  3038.    o  Directory Service Functions with their Required Input Objects 
  3039.  
  3040.            Function                 Input Object 
  3041.  
  3042.            ds_add_entry             DS_C_NAME 
  3043.                                     DS_C_ATTRIBUTE_LIST 
  3044.  
  3045.            ds_bind                  None 
  3046.  
  3047.            ds_compare               DS_C_NAME 
  3048.                                     DS_C_AVA 
  3049.  
  3050.            ds_initialize            None 
  3051.  
  3052.            ds_list                  DS_C_NAME 
  3053.  
  3054.            ds_modify_entry          DS_C_NAME 
  3055.                                     DS_C_ENTRY_MOD_LIST 
  3056.  
  3057.            ds_read                  DS_C_NAME 
  3058.                                     DS_C_ENTRY_INFO_SELECTION 
  3059.  
  3060.            ds_remove_entry          DS_C_NAME 
  3061.  
  3062.            ds_shutdown              None 
  3063.  
  3064.            ds_unbind                None 
  3065.  
  3066.            ds_version               None 
  3067.  
  3068.  
  3069. ΓòÉΓòÉΓòÉ 5.5.2. Input Object Classes for XDS/CDS Operations ΓòÉΓòÉΓòÉ
  3070.  
  3071. The following sections contain information about all the object types required 
  3072. as input to any of the XDS functions that can be used to access the CDS. In 
  3073. order to use these functions successfully, you must be able to construct and 
  3074. modify the objects that the functions expect as their input parameters. XDS 
  3075. functions require most of their input parameters to be wrapped in a nested 
  3076. series of data structures that represent objects, and these functions deliver 
  3077. their output returns to callers in the same object form. 
  3078.  
  3079. Objects that are returned to you by the interface are not difficult to 
  3080. manipulate because the om_get function allows you to go through them and 
  3081. retrieve only the value parts you are interested in, and discard the parts of 
  3082. data structures you are not interested in. However, any objects you are 
  3083. required to supply as in put to an XDS or XOM function are another matter. You 
  3084. must build and initialize these object structures yourself. 
  3085.  
  3086. The basics of object building have already been explained earlier in this 
  3087. section. Each object described in the following sections is accompanied by a 
  3088. static declaration in C of a very simple instance of that object class. The 
  3089. objects in an application are usually built dynamically (this technique was 
  3090. demonstrated earlier in this section). The static declarations that follow give 
  3091. a simple example of what the objects look like. 
  3092.  
  3093. An object's properties, such as what sort of values it can hold, how many of 
  3094. them it can hold,and so on, are determined by the class the object belongs to. 
  3095. Each class consists of one or more attributes that an object can have. The 
  3096. attributes hold whatever values the object contains. Thus, the objects are data 
  3097. structures that all look the same (and can be handled in the same way) from the 
  3098. outside, but whose specific data fields are determined by the class each object 
  3099. belongs to. At the abstract level, objects consist of attributes, just as 
  3100. structures consist fields. 
  3101.  
  3102.  
  3103. ΓòÉΓòÉΓòÉ 5.5.2.1. XDS/CDS Object Types ΓòÉΓòÉΓòÉ
  3104.  
  3105. Following is a list of all the object types that are described in the following 
  3106. sections. Most of these objects are object structures, that is, compounds 
  3107. consisting of superobjects that contain subobjects as some of their values. 
  3108. These latter can in turn contain other objects, and so on. Subobjects are 
  3109. indicated by indentation. A DS_C_DS_DN object contains at least one DS_C_DS_RDN 
  3110. object, and each of the latter contains one DS_C_AVA object. Note that 
  3111. subobjects can, and often do, exist by themselves, depending on what object 
  3112. class is called for by a given function. This list contains all the possible 
  3113. kinds of objects that can be required as input for any XDS/CDS operation. 
  3114.  
  3115.    o  DS_C_ATTRIBUTE_LIST 
  3116.         -  DS_C_ATTRIBUTE 
  3117.    o  DS_C_DS_DN 
  3118.         -  DS_C_DS_RDN 
  3119.              o  DS_C_AVA 
  3120.    o  DS_C_ENTRY_MOD_LIST 
  3121.         -  DS_C_ENTRY_MOD 
  3122.    o  DS_C_ENTRY_INFO_SELECTION 
  3123.  
  3124.  In each section, information is provided for the described object's 
  3125.  attributes. All of its attributes are listed. 
  3126.  
  3127.  The illustrations in the following sections can be compared to the same object 
  3128.  classes' tabular definitions in XDS Class Definitions. 
  3129.  
  3130.  
  3131. ΓòÉΓòÉΓòÉ 5.5.2.2. The DS_C_ATTRIBUTE_LIST Object ΓòÉΓòÉΓòÉ
  3132.  
  3133. A DS_C_ATTRIBUTE_LIST class object is required as input to ds_add_entry. The 
  3134. object contains a list of the directory attributes you want associated with the 
  3135. entry that is to be added. 
  3136.  
  3137. Its general structure is as follows: 
  3138.  
  3139.    o  Attribute List class type attribute 
  3140.  
  3141.    o  Zero or more Attribute objects: 
  3142.  
  3143.         -  Attribute class type attribute 
  3144.  
  3145.         -  Attribute Type attribute 
  3146.  
  3147.         -  Zero or more Attribute Value(s) 
  3148.  
  3149.  Thus, a DS_C_ATTRIBUTE_LIST object containing one attribute consists of two 
  3150.  object descriptor arrays because each additional attribute in the list 
  3151.  requires an additional descriptor array to represent it. The subobject arrays' 
  3152.  names (that is, addresses) are the contents of the value fields in the 
  3153.  DS_ATTRIBUTES object descriptors. 
  3154.  
  3155.  "The DS_C_ATTRIBUTE_LIST Object" shows the attributes of the 
  3156.  DS_C_ATTRIBUTE_LIST object. 
  3157.  
  3158.  
  3159.   The DS_C_ATTRIBUTE_LIST Object
  3160.  
  3161.    o  OM_CLASS - The value of this attribute is an OID string that identifies 
  3162.       the object's class; its value is always DS_C_ATTRIBUTE_LIST. 
  3163.  
  3164.    o  DS_ATTRIBUTES - This is an attribute whose value is another object of 
  3165.       class DS_C_ATTRIBUTE. The attribute is defined by a separate array of 
  3166.       object descriptors whose base address is the value of the DS_ATTRIBUTES 
  3167.       attribute. There can be any number of instances of this attribute, and 
  3168.       therefore any number of subobjects. 
  3169.  
  3170.  
  3171. ΓòÉΓòÉΓòÉ 5.5.2.3. The DS_C_ATTRIBUTE Object ΓòÉΓòÉΓòÉ
  3172.  
  3173. An object of this class can be an attribute of a DS_C_ATTRIBUTE_LIST object 
  3174. (see XDS/CDS Object Types). 
  3175.  
  3176.    o  OM_CLASS - The value of this attribute is an OID string that identifies 
  3177.       the object's class; its value is always DS_C_ATTRIBUTE. 
  3178.  
  3179.    o  DS_ATTRIBUTE_TYPE - The value of this attribute, which is an OID string, 
  3180.       identifies the directory attribute whose value is contained in this 
  3181.       object. 
  3182.  
  3183.    o  DS_ATTRIBUTE_VALUES - These are the actual values for the directory 
  3184.       attribute represented by this DS_C_ATTRIBUTE object. Both the value 
  3185.       syntax and the number of values depend on what directory attribute this 
  3186.       is; that is, they depend on the value of DS_ATTRIBUTE_VALUE. 
  3187.  
  3188.  
  3189. ΓòÉΓòÉΓòÉ 5.5.2.4. Example Definition of a DS_C_ATTRIBUTE_LIST Object ΓòÉΓòÉΓòÉ
  3190.  
  3191. The following code fragment is a definition of a DS_C_ATTRIBUTE_LIST object. 
  3192.  
  3193. static OM_descriptor    Single_Attribute_Object [] = {
  3194.  OM_OID_DESC(OM_CLASS, DS_C_ATTRIBUTE),
  3195.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_A_CDS_Class),
  3196.  {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("Printer"){,
  3197.  OM_NULL_DESCRIPTOR
  3198. };
  3199.  
  3200. static OM_descriptor    Attribute_List_Object []  = {
  3201.  OM_OID_DESC(OM_CLASS, DS_C_ATTRIBUTE_LIST),
  3202.  {DS_ATTRIBUTES, OM_S_OBJECT,{0, Single_Attribute_Object}},
  3203.  OM_NULL_DESCRIPTOR
  3204. };
  3205.  
  3206.  
  3207. ΓòÉΓòÉΓòÉ 5.5.2.5. The DS_C_DS_DN Object ΓòÉΓòÉΓòÉ
  3208.  
  3209. DS_C_DS_DN class objects are used to hold the full names of directory entries 
  3210. (Distinguished Names). You need an object of this class to pass directory entry 
  3211. names to the following XDS functions: 
  3212.  
  3213.    o  ds_add_entry 
  3214.    o  ds_compare 
  3215.    o  ds_list 
  3216.    o  ds_modify_entry 
  3217.    o  ds_read 
  3218.    o  ds_remove_entry 
  3219.  
  3220.  "The DS_C_DS_DN Object Attributes" shows the attributes of a DS_C_DS_DN 
  3221.  object. 
  3222.  
  3223.  
  3224.   The DS_C_DS_DN Object Attributes
  3225.  
  3226.    o  OM_CLASS - The value of this attribute is an OID string that identifies 
  3227.       the object's class; its value is DS_C_DS_DN. 
  3228.  
  3229.    o  DS_RDNS - This is an attribute whose value is another object of class 
  3230.       DS_C_DS_RDN (see The DS_C_DS_RDN Object). The DS_C_DS_RDN object is 
  3231.       defined by a separate array of object descriptors whose base address is 
  3232.       the value of the DS_RDNS attribute. 
  3233.  
  3234.       There are as many DS_RDNS attributes in a DS_C_DS_DN object as there are 
  3235.       separate name components in the full directory entry name. For example, 
  3236.       to represent the CDS entry name /.../C=US/O=OSF/OU=DCE/hosts/brazil/self, 
  3237.       a total of six instances of the DS_RDNS attribute are required in the 
  3238.       DS_C_DS_DN object. The /.../ (global root prefix) is not represented. 
  3239.       This means that another six object descriptor arrays are required to hold 
  3240.       the Relative Distinguished Name objects, as well as six object 
  3241.       descriptors in the present object, one to hold (as the value of a DS_RDNS 
  3242.       attribute) a pointer to each array. The order of these DS_RDNS attributes 
  3243.       is significant, that is, the first DS_RDNS should contain as its value a 
  3244.       pointer to the array representing the C=US part of the name; the next 
  3245.       DS_RDNS should contain as its value a pointer to the array representing 
  3246.       the O=OSF part. The root part of the name is not represented at all. 
  3247.  
  3248.  
  3249. ΓòÉΓòÉΓòÉ 5.5.2.6. The DS_C_DS_RDN Object ΓòÉΓòÉΓòÉ
  3250.  
  3251. DS_C_DS_RDN class objects are required as values for the DS_RDNS attributes of 
  3252. DS_C_DS_DN objects. (For an illustration of its structure, see the previous 
  3253. figure.) RDN refers to the X.500 term Relative Distinguished Name that is used 
  3254. to signify a part of a full entry name. Separate objects of this class are not 
  3255. usually required as input to XDS functions. 
  3256.  
  3257. The standard permits multiple AVAs in an RDN, but the DCE Directory and XDS API 
  3258. restrict an RDN to one AVA. 
  3259.  
  3260.    o  OM_CLASS - The value of this attribute is an OID string that identifies 
  3261.       the object's class; its value is always DS_C_DS_RDN. 
  3262.  
  3263.    o  DS_AVAS - This is an attribute whose value is yet another object of class 
  3264.       DS_C_AVA (see The DS_C_AVA Object). The DS_C_AVA object is defined by a 
  3265.       separate array of object descriptors whose base address is the value of 
  3266.       the DS_AVAS attribute. 
  3267.  
  3268.       There can only be one instance of this attribute in the DS_C_RDN object. 
  3269.       The object descriptor array describing this object always consists of 
  3270.       three object descriptor structures: the first describes the object's 
  3271.       class, the second describes the DS_AVAS attribute, and the third 
  3272.       descriptor is the terminating NULL. 
  3273.  
  3274.  
  3275. ΓòÉΓòÉΓòÉ 5.5.2.7. The DS_C_AVA Object ΓòÉΓòÉΓòÉ
  3276.  
  3277. The DS_C_AVA class object is used to hold an actual value. The value is usually 
  3278. in the form of one of the many different XOM string types. (For an illustration 
  3279. of its structure, see "The DS_C_DS_DN Object Attributes".) 
  3280.  
  3281. In calls to ds_compare, an object of this type is required to hold the type and 
  3282. value of the attribute that you want compared with those in the entry you 
  3283. specify. It holds the type and value in a separate DS_C_DS_DN object. 
  3284.  
  3285. DS_C_AVA is also included here because it is a required subobject of 
  3286. DS_C_DS_DN. DS_C_AVA is the subobject in which the name part's actual literal 
  3287. value is held. 
  3288.  
  3289.    o  OM_CLASS - The value of this attribute is an OID string that identifies 
  3290.       the object's class; its value is always DS_C_AVA. 
  3291.  
  3292.    o  DS_ATTRIBUTE_TYPE - The value of this attribute, which is an OID string, 
  3293.       identifies the directory attribute whose value is contained in this 
  3294.       object. 
  3295.  
  3296.    o  DS_ATTRIBUTE_VALUES - This is the literal value of what is represented by 
  3297.       this DS_C_AVA object. 
  3298.  
  3299.       If the DS_C_AVA object is a subobject of DS_C_DS_RDN (and therefore also 
  3300.       of DS_C_DS_DN), then the value is a string representing the part of the 
  3301.       directory entry name represented by this object. For example, if the 
  3302.       DS_C_DS_RDN object contains the O=OSF part of an entry name, then the 
  3303.       string OSF is the value of the DS_ATTRIBUTE_VALUES attribute, and 
  3304.       DS_A_COUNTRY_NAME is the value of the DS_ATTRIBUTE_TYPE attribute. 
  3305.  
  3306.       On the other hand, if DS_C_AVA contains an entry attribute type and value 
  3307.       to be passed to ds_compare, then DS_ATTRIBUTE_TYPE identifies the type of 
  3308.       the attribute, and DS_ATTRIBUTE_VALUES contains a value, which is 
  3309.       appropriate for the attribute type, to be compared with the entry value. 
  3310.  
  3311.       For example, suppose you wanted to compare a certain value with a CDS 
  3312.       entry's CDS_Class attribute's value. The identifiers for all the valid 
  3313.       CDS entry attributes are found in the \opt\dcelocal\etc\cds_attr file. 
  3314.       The value of DS_ATTRIBUTE_TYPE would be DSX_A_CDS_Class, which is the 
  3315.       label of an object identifier string, and DS_ATTRIBUTE_VALUES would 
  3316.       contain some desired value, in the correct syntax for CDS_Class. The 
  3317.       syntax also is found in the cds_attr file; for CDS_Class it is byte, that 
  3318.       is, a character string. The user could code OM_S_OCTET_STRING for 
  3319.       DS_ATTRIBUTE_VALUES. See Attribute and Data Type Translation. 
  3320.  
  3321.  
  3322. ΓòÉΓòÉΓòÉ 5.5.2.8. Example Definition of a DS_C_DS_DN Object ΓòÉΓòÉΓòÉ
  3323.  
  3324. The following code fragment shows an example definition for a DS_C_DS_DN 
  3325. object. 
  3326.  
  3327. static OM_descriptor    Entry_String_Object [] = {
  3328.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  3329.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_TYPELESS_RDN),
  3330.  {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("brazil")},
  3331.  OM_NULL_DESCRIPTOR
  3332. };
  3333.  
  3334. static OM_descriptor    Entry_Part_Object [] = {
  3335.  OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  3336.  {DS_AVAS, OM_S_OBJECT, {0, Entry_String_Object}},
  3337.  OM_NULL_DESCRIPTOR
  3338. };
  3339.  
  3340. static OM_descriptor    Entry_Name_Object[] = {
  3341.  OM_OID_DESC(OM_CLASS, DS_C_DS_DN),
  3342.  {DS_RDNS, OM_S_OBJECT, {0, Entry_Part_Object}},
  3343.  OM_NULL_DESCRIPTOR
  3344. };
  3345.  
  3346.  
  3347. ΓòÉΓòÉΓòÉ 5.5.2.9. The DS_C_ENTRY_MOD_LIST Object ΓòÉΓòÉΓòÉ
  3348.  
  3349. DS_C_ENTRY_MOD_LIST class objects, which contain a list of changes to be made 
  3350. to some directory entry, must be passed to ds_modify_entry. DS_C_ENTRY_MOD_LIST 
  3351. objects have the attributes shown in "The DS_C_ENTRY_MOD_LIST Object". 
  3352.  
  3353.  
  3354. The DS_C_ENTRY_MOD_LIST Object
  3355.  
  3356.    o  OM_CLASS - The value of this attribute is an OID string that identifies 
  3357.       the object's class; its value is always DS_C_ENTRY_MOD_LIST. 
  3358.  
  3359.    o  DS_CHANGES - This is an attribute whose value is another object of class 
  3360.       DS_C_ENTRY_MOD (see The DS_C_ENTRY_MOD_LIST Object). The DS_C_ENTRY_MOD 
  3361.       object is defined by a separate array of object descriptors whose base 
  3362.       address is the value of the DS_CHANGES attribute. 
  3363.  
  3364.       There can be one or more instances of this attribute in the object, which 
  3365.       is why it is called _LIST. Each attribute contains one separate entry 
  3366.       modification. To learn how the modification itself is specified, see The 
  3367.       DS_C_ENTRY_MOD_LIST Object. The order of multiple instances of this 
  3368.       attribute is significant because if more than one modification is 
  3369.       specified, the modifications are performed by ds_modify_entry in the 
  3370.       order in which the DS_CHANGES attributes appear in the 
  3371.       DS_C_ENTRY_MOD_LIST object. 
  3372.  
  3373.  
  3374. ΓòÉΓòÉΓòÉ 5.5.2.10. The DS_C_ENTRY_MOD_LIST Object ΓòÉΓòÉΓòÉ
  3375.  
  3376. The DS_C_ENTRY_MOD class object holds the information associated with a 
  3377. directory entry modification. (For an illustration of its structure, see "The 
  3378. DS_C_ENTRY_MOD_LIST Object".) Each DS_C_ENTRY_MOD object describes one 
  3379. modification. To create a list of modifications suitable to be passed to a 
  3380. ds_modify_entry call, describe each modification in a separate DS_C_ENTRY_MOD 
  3381. object, and then insert these objects as multiple instances of the DS_CHANGES 
  3382. attribute in a DS_C_ENTRY_MOD_LIST object (see The DS_C_ENTRY_MOD_LIST Object). 
  3383.  
  3384.    o  OM_CLASS - The value of this attribute is an OID string that identifies 
  3385.       the object's class; its value is always DS_C_ENTRY_MOD. 
  3386.  
  3387.    o  DS_ATTRIBUTE_TYPE - The value of this attribute, which is an OID string, 
  3388.       identifies the directory attribute whose modification is described in 
  3389.       this object. 
  3390.  
  3391.    o  DS_ATTRIBUTE_VALUES - These are the values required for the entry 
  3392.       modification; their type and number depend on both the entry type and the 
  3393.       modification requested. 
  3394.  
  3395.    o  DS_MOD_TYPE - The value of this attribute identifies the kind of 
  3396.       modification requested. It can be one of the following: 
  3397.  
  3398.            DS_ADD_ATTRIBUTE             The attribute specified by 
  3399.                                         DS_ATTRIBUTE_TYPE is not currently in 
  3400.                                         the entry. It should be added, along 
  3401.                                         with the value(s) specified by 
  3402.                                         DS_ATTRIBUTE_VALUES, to the entry. The 
  3403.                                         entry itself is specified in a separate 
  3404.                                         DS_C_DS_DN object, which is also passed 
  3405.                                         to ds_modify_entry. 
  3406.  
  3407.            DS_ADD_VALUES                The specified attribute is currently in 
  3408.                                         the entry. The value(s) specified by 
  3409.                                         DS_ATTRIBUTE_VALUES should be added to 
  3410.                                         it. 
  3411.  
  3412.            DS_REMOVE_ATTRIBUTE          The specified attribute is currently in 
  3413.                                         the entry and should be deleted from 
  3414.                                         the entry. Any values specified by 
  3415.                                         DS_ATTRIBUTE_VALUES are ignored. 
  3416.  
  3417.            DS_REMOVE_VALUES             The specified attribute is currently in 
  3418.                                         the entry. One or more values, 
  3419.                                         specified by DS_ATTRIBUTE_VALUES, 
  3420.                                         should be removed from it. 
  3421.  
  3422.  
  3423. ΓòÉΓòÉΓòÉ 5.5.2.11. Example Definition of a DS_C_ENTRY_MOD_LIST Object ΓòÉΓòÉΓòÉ
  3424.  
  3425. The following code fragment is an example definition of a DS_C_ENTRY_MOD_LIST 
  3426. object. 
  3427.  
  3428. OM_string my_uuid;
  3429.  
  3430. static OM_descriptor    Entry_Mod_Object[] =  {
  3431.  OM_OID_DESC(OM_CLASS, DS_C_ENTRY_MOD),
  3432.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_UUID),
  3433.  {DS_ATTRIBUTE_VALUES, OM_S_OCTET_STRING, my_uuid},
  3434.  {DS_MOD_TYPE, OM_S_ENUMERATION, DS_ADD_ATTRIBUTE},
  3435.  OM_NULL_DESCRIPTOR
  3436. };
  3437.  
  3438. static OM_descriptor    Entry_Mod_Object[] =  {
  3439.  OM_OID_DESC(OM_CLASS, DS_C_ENTRY_MOD_LIST),
  3440.  {DS_CHANGES, OM_S_OBJECT, {0, Entry_Mod_Object}},
  3441.  OM_NULL_DESCRIPTOR
  3442. };
  3443.  
  3444.  
  3445. ΓòÉΓòÉΓòÉ 5.5.2.12. The DS_C_ENTRY_INFO_SELECTION Object ΓòÉΓòÉΓòÉ
  3446.  
  3447. When you call ds_read to read one or more attributes from a CDS entry, you 
  3448. specify in the DS_C_ENTRY_INFO_SELECTION object the entry attributes you want 
  3449. to read. 
  3450.  
  3451. The DS_C_ENTRY_INFO_SELECTION object contains the attributes shown in "The 
  3452. DS_C_ENTRY_INFO_SELECTION Object". 
  3453.  
  3454.  
  3455. The DS_C_ENTRY_INFO_SELECTION Object
  3456.  
  3457. Note:  This object class has no subobjects. 
  3458.  
  3459.    o  OM_CLASS - The value of this attribute is an OID string that identifies 
  3460.       the object's class; its value is always DS_C_ENTRY_INFO_SELECTION. 
  3461.  
  3462.    o  DS_ALL_ATTRIBUTES - This attribute is a simple Boolean option whose value 
  3463.       indicates whether all the entry's attributes are to be read, or only some 
  3464.       of them. Its possible values are as follows: 
  3465.  
  3466.         -  OM_TRUE, meaning that all attributes in the directory entry should 
  3467.            be read. Any values specified by the DS_ATTRIBUTES_SELECTED 
  3468.            attribute are ignored. 
  3469.  
  3470.         -  OM_FALSE, meaning that only some of the entry attributes should be 
  3471.            read; namely, those specified by the DS_ATTRIBUTES_SELECTED 
  3472.            attribute. 
  3473.  
  3474.    o  DS_ATTRIBUTES_SELECTED - The value of this attribute, which is an OID 
  3475.       string, identifies the entry attribute to be read. Note that this 
  3476.       attribute's value has meaning only if the value of DS_ALL_ATTRIBUTES is 
  3477.       OM_FALSE. If it is OM_TRUE, the value of DS_ATTRIBUTES_SELECTED is 
  3478.       ignored. 
  3479.  
  3480.       There are multiple instances of this attribute if more than one 
  3481.       attribute, but not all of them, is to be selected for reading. Each 
  3482.       separate instance of DS_ATTRIBUTES_SELECTED has as its value an OID 
  3483.       string that identifies one directory entry attribute to be read. If 
  3484.       DS_ATTRIBUTES_SELECTED is present but does not have a value, ds_read 
  3485.       reads the entry but does not return any attribute data; this technique 
  3486.       can be used to verify the existence of a directory entry. 
  3487.  
  3488.    o  DS_INFO_TYPE - The value of this attribute specifies what information is 
  3489.       to be read from each attribute specified by DS_ATTRIBUTES_SELECTED. The 
  3490.       two possible values are as follows: 
  3491.  
  3492.         -  DS_TYPES_ONLY, meaning that only the attribute types of the selected 
  3493.            attributes should be read. 
  3494.  
  3495.         -  DS_TYPES_AND_VALUES, meaning that both the attribute types and the 
  3496.            attribute values of the selected attributes should be read. 
  3497.  
  3498.  
  3499. ΓòÉΓòÉΓòÉ 5.5.2.13. Example Definition of a DS_C_ENTRY_INFO_SELECTION Object ΓòÉΓòÉΓòÉ
  3500.  
  3501. The following code fragment provides an example definition of a 
  3502. DS_C_ENTRY_INFO_SELECTION object. 
  3503.  
  3504. static OM_descriptor   Entry_Info_Select_Object[] = {
  3505.  OM_OID_DESC(OM_CLASS, DS_C_ENTRY_INFO_SELECTION),
  3506.  OM_OID_DESC(DS_ATTRIBUTES_SELECTED, DSX_A_CDS_Class),
  3507.  {DS_ALL_ATTRIBUTES, OM_S_BOOLEAN, OM_FALSE},
  3508.  {DS_INFO_TYPE, OM_S_ENUMERATION, DS_TYPES_AND_VALUES},
  3509.  OM_NULL_DESCRIPTOR
  3510. };
  3511.  
  3512.  
  3513. ΓòÉΓòÉΓòÉ 5.6. Attribute and Data Type Translation ΓòÉΓòÉΓòÉ
  3514.  
  3515. The following lists provide translations between CDS and XDS for attributes and 
  3516. data types. The first list provides the OM syntax for CDS attributes. The 
  3517. second list provides the OM syntax for CDS data types, and the third defines 
  3518. the mapping of the CDS Data Types to OM Syntaxes. 
  3519.  
  3520.    1. CDS Attributes to OM Syntax Translation 
  3521.  
  3522.            CDS Attribute                    OM Syntax 
  3523.            CDS_CTS                          OM_S_OCTET_STRING 
  3524.            CDS_UTS                          OM_S_OCTET_STRING 
  3525.            CDS_Class                        OM_S_OCTET_STRING 
  3526.            CDS_Class Version                OM_S_INTEGER 
  3527.            CDS_ObjectUID                    OM_S_OCTET_STRING 
  3528.            CDS_AllUpTo                      OM_S_OCTET_STRING 
  3529.            CDS_Convergence                  OM_S_INTEGER 
  3530.            CDS_InCHName                     OM_S_INTEGER 
  3531.            CDS_Directory Version            OM_S_INTEGER 
  3532.            CDS_Upgrade_To                   OM_S_INTEGER 
  3533.            CDS_LinkTimeout                  OM_S_INTEGER 
  3534.            CDS_Towers                       OM_S_OCTET_STRING 
  3535.  
  3536.    2. OM Syntax to CDS Data Types Translation 
  3537.  
  3538.            OM Syntax                                    CDS Data Type 
  3539.            OM_S_TELETEX_STRING                          cds_char 
  3540.            OM_S_OBJECT_IDENTIFIER_STRING                cds_byte 
  3541.            OM_S_OCTET_STRING                            cds_byte 
  3542.            OM_S_PRINTABLE_STRING                        cds_char 
  3543.            OM_S_NUMERIC_STRING                          cds_char 
  3544.            OM_S_BOOLEAN                                 cds_long 
  3545.            OM_S_INTEGER                                 cds_long 
  3546.            OM_S_UTC_TIME_STRING                         cds_char 
  3547.            OM_S_ENCODING                                cds_byte 
  3548.  
  3549.    3. CDS Data Types to OM Syntax Translation 
  3550.  
  3551.            CDS Data Type              OM Syntax 
  3552.            cds_none                   OM_S_NULL 
  3553.            cds_long                   OM_S_INTEGER 
  3554.            cds_short                  OM_S_INTEGER 
  3555.            cds_small                  OM_S_INTEGER 
  3556.            cds_uuid                   OM_S_OCTET_STRING 
  3557.            cds_Timestamp              OM_S_OCTET_STRING 
  3558.            cds_Version                OM_S_PRINTABLE_STRING 
  3559.            cds_char                   OM_S_TELETEX_STRING 
  3560.            cds_byte                   OM_S_OCTET_STRING 
  3561.  
  3562.  
  3563. ΓòÉΓòÉΓòÉ 6. XDS API Logging ΓòÉΓòÉΓòÉ
  3564.  
  3565. The XDS API logging facility displays informational and error messages for XDS 
  3566. functions. In addition, the input and output arguments to XDS function calls 
  3567. can also be displayed. For each XDS object, its OM types, syntaxes, and values 
  3568. are displayed recursively. A number of different display formats can be 
  3569. selected for the XDS objects. These are selected by setting the value of the 
  3570. environment variable XDS_LOG as shown in "XDS_LOG Values". 
  3571.  
  3572. Logging can be activated dynamically at run-time by setting the environment 
  3573. variable XDS_LOG. 
  3574.  
  3575. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3576. Γöé Table 1. XDS_LOG Values                                 Γöé
  3577. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3578. Γöé XDS_LOG VALUE  Γöé RESULT                        Γöé   EXAMPLE   Γöé
  3579. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3580. Γöé Bit 1 = on    Γöé Display arguments, messages, results, and errors   Γöé    N/A    Γöé
  3581. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3582. Γöé Bit 1 = off   Γöé Display messages only (all other bits ignored)    Γöé    N/A    Γöé
  3583. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3584. Γöé Bit 2 = on    Γöé Display result and error objects as private objects Γöé    N/A    Γöé
  3585. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3586. Γöé Bit 2 = off   Γöé Display result and error objects as public objects  Γöé    N/A    Γöé
  3587. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3588. Γöé Bit 3 = on    Γöé Object identifiers displayed as specified in fourth Γöé    N/A    Γöé
  3589. Γöé         Γöé bit                         Γöé         Γöé
  3590. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3591. Γöé Bit 3 = off   Γöé Object identifiers displayed as symbolic constants  Γöé  DS_C_SESSION  Γöé
  3592. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3593. Γöé Bit 4 = on    Γöé Object identifiers displayed as dotted-decimal    Γöé   2.5.4.35   Γöé
  3594. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3595. Γöé Bit 4 = off   Γöé Object identifiers displayed as hexadecimal bytes  Γöé  \x55\x04\x23  Γöé
  3596. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3597. Γöé Bit 5 = on    Γöé Syntaxes displayed as integers            Γöé    127    Γöé
  3598. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3599. Γöé Bit 5 = off   Γöé Syntaxes displayed as symbolic constants       Γöé  OM_S_OBJECT  Γöé
  3600. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3601.  
  3602. The bits shown in the previous table can be combined. For example, the 
  3603. following command sequence sets XDS_LOG to 5 (0101 in binary): 
  3604.  
  3605. set XDS_LOG=5
  3606.  
  3607. In the previous example, the logging facility is directed to display arguments, 
  3608. messages, results, and errors, to convert results and errors into public 
  3609. objects (for display purposes only) and to display object identifiers as 
  3610. hexadecimal bytes; and to display OM syntaxes as symbolic constants. OM Types 
  3611. are always displayed as integers. Normally, XDS_LOG should be set to 0. If full 
  3612. tracing is required, set XDS_LOG to 1. 
  3613.  
  3614. The location of the log file can be set by means of the D2_LOG_DIR environment 
  3615. variable. For example, the following places the log files in c:\tmp\log. 
  3616.  
  3617. SET D2_LOG_DIR=c:\tmp\log
  3618.  
  3619. A separate log file is created for each process that uses the XDS API. The log 
  3620. file names have the following format: 
  3621.  
  3622. pid.xds
  3623.  
  3624. where pid is the process ID of the application. If the environment variable 
  3625. D2_LOG_DIR is not set, the files are placed in the directory set by the HOME 
  3626. environment variable. 
  3627.  
  3628.  
  3629. ΓòÉΓòÉΓòÉ 6.1. Logging Format ΓòÉΓòÉΓòÉ
  3630.  
  3631. The following general display format is used by the logging facility: 
  3632.  
  3633. identifier-name = {
  3634.   { type, syntax, value },
  3635.   { type, syntax, value },
  3636.   :
  3637.   :
  3638.   etc. }; /* identifier-name */
  3639.  
  3640. where: 
  3641.  
  3642.    o  TYPE - The integer defined for the specified type 
  3643.  
  3644.    o  SYNTAX - A symbolic constant for the specified syntax. A +L is appended 
  3645.       to the syntax label if the OM_S_LOCAL_STRING bit is set in the OM_syntax 
  3646.       field. 
  3647.  
  3648.    o  VALUE 
  3649.  
  3650.         -  An integer (if syntax is OM_S_INTEGER or OM_S_ENUMERATION) 
  3651.  
  3652.         -  OM_FALSE or OM_TRUE (if syntax is OM_S_BOOLEAN) 
  3653.  
  3654.         -  Symbolic constant, dotted-decimal notation, or hexadecimal bytes (if 
  3655.            syntax is OM_S_OBJECT_ID_STRING) 
  3656.  
  3657.         -  Quoted-string (if syntax is any other type of string) 
  3658.  
  3659.         -  Another object (if syntax is OM_S_OBJECT) 
  3660.  
  3661.  Note:  The terminating NULL descriptor is expected but not displayed. 
  3662.  
  3663.  
  3664. ΓòÉΓòÉΓòÉ 6.2. Examples ΓòÉΓòÉΓòÉ
  3665.  
  3666. These examples show how a selection of XDS objects are displayed by the logging 
  3667. facility. 
  3668.  
  3669. The following filter selects entries that do not have the value secret for the 
  3670. DS_A_USER_PASSWORD attribute. The DS_FILTER_TYPE has the value DS_NOT. It 
  3671. contains a single DS_C_FILTER_ITEM attribute. DS_C_FILTER_ITEM tests for 
  3672. equality against the DS_A_USER_PASSWORD attribute. 
  3673.  
  3674. my_filter = {
  3675.    { OM_CLASS, OM_S_OBJECT_ID_STRING,    DS_C_FILTER },
  3676.    { DS_FILTER_ITEMS, OM_S_OBJECT,
  3677.      {
  3678.        { OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_FILTER_ITEM },
  3679.        { DS_FILTER_ITEM_TYPE, OM_S_ENUMERATION, 0 },
  3680.        { DS_ATTRIBUTE_TYPE, OM_S_OBJECT_ID_STRING, DS_A_USER_PASSWORD },
  3681.        { DS_ATTRIBUTE_VALUES, OM_S_OCTET_STRING, "secret" },
  3682.      }
  3683.    }
  3684.    { DS_FILTER_TYPE, OM_S_ENUMERATION, 3 },
  3685. }; /* my_filter */
  3686.  
  3687. The following example shows logging output if the interface logger encounters a 
  3688. NULL pointer. The NULL pointer is flagged as follows: 
  3689.  
  3690. my_session = {
  3691.    { OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_SESSION },
  3692.    { DS_DSA_NAME, OM_S_OBJECT, ---WARNING: NULL pointer encountered--- },
  3693. }; /* my_session */
  3694.  
  3695. The following example shows logging output if the interface logger encounters a 
  3696. private object. The private object is displayed as follows: 
  3697.  
  3698. bound_session = {
  3699.    { OM_PRIVATE_OBJECT,    OM_S_OBJECT_ID_STRING, DS_C_SESSION } ...
  3700. }; /* bound_session */
  3701.  
  3702. The following example shows how a five-part DSA distinguished name is displayed 
  3703. (/C=de/O=sni/OU=ap/CN=dsa/CN=dsa-ml): 
  3704.  
  3705. dsa_name = {
  3706.    { DS_DSA_NAME, OM_S_OBJECT,
  3707.      {
  3708.        { OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_DS_DN },
  3709.        { DS_RDNS, OM_S_OBJECT,
  3710.          {
  3711.            { OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_DS_RDN },
  3712.              { DS_AVAS, OM_S_OBJECT,
  3713.                {
  3714.                  {OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_AVA },
  3715.                  { DS_ATTRIBUTE_TYPE, OM_S_OBJECT_ID_STRING, DS_A_COUNTRY_NAME },
  3716.                  { DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, "de" },
  3717.                }
  3718.              }
  3719.            }
  3720.          }
  3721.          { DS_RDNS, OM_S_OBJECT,
  3722.            {
  3723.              {OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_DS_RDN },
  3724.              { DS_AVAS, OM_S_OBJECT,
  3725.                {
  3726.                  {OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_AVA },
  3727.                  { DS_ATTRIBUTE_TYPE, OM_S_OBJECT_ID_STRING, DS_A_ORG_NAME },
  3728.                  { DS_ATTRIBUTE_VALUES, OM_S_TELETEX_STRING, "sni" },
  3729.                }
  3730.              }
  3731.            }
  3732.          }
  3733.          { DS_RDNS, OM_S_OBJECT,
  3734.            {
  3735.              {OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_DS_RDN },
  3736.              { DS_AVAS, OM_S_OBJECT,
  3737.                {
  3738.                  { OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_AVA },
  3739.                  { DS_ATTRIBUTE_TYPE, OM_S_OBJECT_ID_STRING, DS_A_ORG_UNIT_NAME },
  3740.                  { DS_ATTRIBUTE_VALUES, OM_S_TELETEX_STRING, "ap" },
  3741.                }
  3742.              }
  3743.            }
  3744.          }
  3745.          { DS_RDNS, OM_S_OBJECT,
  3746.            {
  3747.              { OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_DS_RDN },
  3748.              { DS_AVAS, OM_S_OBJECT,
  3749.                {
  3750.                  { OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_AVA },
  3751.                  { DS_ATTRIBUTE, OM_S_OBJECT_ID_STRING, DS_A_COMMON_NAME },
  3752.                  { DS_ATTRIBUTE_VALUES, OM_S_TELETEX_STRING, "dsa" },
  3753.                }
  3754.              }
  3755.            }
  3756.          }
  3757.          { DS_RDNS, OM_S_OBJECT,
  3758.            {
  3759.              { OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_DS_RDN },
  3760.              { DS_AVAS, OM_S_OBJECT,
  3761.                {
  3762.                  { OM_CLASS, OM_S_OBJECT_ID_STRING, DS_C_AVA },
  3763.                  { DS_ATTRIBUTE_TYPE, OM_S_OBJECT_ID_STRING, DS_A_COMMON_NAME },
  3764.                  { DS_ATTRIBUTE_VALUES, OM_S_TELETEX_STRING, "dsa-m1" },
  3765.                }
  3766.              }
  3767.            }
  3768.          }
  3769.        }
  3770.      }
  3771.  }; /* dsa_name */
  3772.  
  3773.  
  3774. ΓòÉΓòÉΓòÉ 7. XOM Programming ΓòÉΓòÉΓòÉ
  3775.  
  3776. XOM API defines a general-purpose interface for use in conjunction with other 
  3777. application-specific APIs for OSI services, such as XDS API to CDS. It presents 
  3778. the application programmer with a uniform information architecture based on the 
  3779. concept of groups, classes, and similar information objects. 
  3780.  
  3781. This section describes some of the basic concepts required to understand and 
  3782. use the XOM API effectively. 
  3783.  
  3784. The following names refer to the complete XDS example programs, which are 
  3785. shipped with DCE and can be found in \opt\dcelocal\examples\xdsxom. 
  3786.  
  3787.    o  add_list.c (add_list.h) 
  3788.    o  cds_xmpl.c (cds_xmpl.h) 
  3789.    o  example.c (example.h) 
  3790.    o  thradd.c (thradd.h) 
  3791.    o  teldir2.c 
  3792.  
  3793.  Note:  For multithreaded XDS/XOM applications, see Using Threads with the 
  3794.         XDS/XOM API. For use of the XDS/XOM convenence functions, refer to DCE 
  3795.         for OS/2 Warp: Application Development Guide - Core Components. 
  3796.  
  3797.  
  3798. ΓòÉΓòÉΓòÉ 7.1. OM Objects ΓòÉΓòÉΓòÉ
  3799.  
  3800. The purpose of XOM API is to provide an interface to manage complex information 
  3801. objects. These information objects belong to classes and have attributes 
  3802. associated with them. There are two distinct kinds of classes and attributes 
  3803. that are used throughout this guide - directory and OM. 
  3804.  
  3805. The directory classes and attributes defined for XDS API correspond to entries 
  3806. that make up the objects in the directory. These classes and attributes are 
  3807. defined in the X.500 directory standard and by additional GDS extensions 
  3808. created for DCE. Other APIs, such as the X.400 Application Interface, which is 
  3809. the application interface for the industry standard X.400 electronic mail 
  3810. service, define their own set of objects in terms of classes and attributes. OM 
  3811. classes and OM attributes are used to model the objects in the directory. 
  3812.  
  3813. XOM API provides a common information architecture so that the information 
  3814. objects defined for any API that conforms to this architectural model can be 
  3815. shared. Different application service interfaces can communicate using this 
  3816. common way of defining objects by means of workspaces. A workspace is simply a 
  3817. common work area where objects defined by a service can be accessed and 
  3818. manipulated. In turn, XOM API provides a set of standard functions that perform 
  3819. common operations on these objects in a workspace. Two different APIs can share 
  3820. information by copying data from one workspace to another. 
  3821.  
  3822.  
  3823. ΓòÉΓòÉΓòÉ 7.1.1. OM Object Attributes ΓòÉΓòÉΓòÉ
  3824.  
  3825. OM objects are composed of OM attributes. OM objects can contain zero or more 
  3826. OM attributes. Every OM attribute has zero or more values. An attribute 
  3827. comprises an integer that indicates the attribute's type. Each value is 
  3828. accompanied by an integer that indicates that value's syntax. 
  3829.  
  3830. An OM attribute type is a category into which all the values of an OM attribute 
  3831. are placed on the basis of its purpose. Some OM attributes can either have 
  3832. zero, one, or multiple values. The OM attribute type is used as the name of the 
  3833. OM attribute. 
  3834.  
  3835. A syntax is a category into which a value is placed on the basis of its form. 
  3836. OM_S_PRINTABLE_STRING is an example of a syntax. 
  3837.  
  3838. An OM attribute value is an information item that can be viewed as a 
  3839. characteristic or property of the OM object of which it is a part. 
  3840.  
  3841. OM attribute types and syntaxes have integer values and symbolic equivalents 
  3842. assigned to them for ease of use by naming authorities in the various API 
  3843. specifications. The integers that are assigned to the OM attribute type and 
  3844. syntax are fixed, but the attribute values can change. These OM attribute types 
  3845. and syntaxes are defined in the DCE implementation of XDS and XOM APIs in 
  3846. header files that are included with the software along with additional OM 
  3847. attributes specific to the DCE implementation. 
  3848.  
  3849. The following figure shows the internal structure of an OM object. 
  3850.  
  3851.  
  3852. The Internal Structure of an OM Object
  3853.  
  3854. For example, the tables in "Mapping the Class Definition of 
  3855. DS_C_ENTRY_INFO_SELECTION" show the OM attributes, syntax, and values for the 
  3856. OM class DS_C_ENTRY_INFO_SELECTION, and how the integer values are mapped to 
  3857. corresponding names in the xom.h and xds.h header files. See XDS Class 
  3858. Definitions for a complete description of DS_C_ENTRY_INFO_SELECTION and the 
  3859. accompanying table. 
  3860.  
  3861. DS_C_ENTRY_INFO_SELECTION is a subclass of OM_C_OBJECT. This information is 
  3862. supplied in the description of this OM class in XDS Class Definitions. As such, 
  3863. DS_C_ENTRY_INFO_SELECTION inherits the OM attributes of OM_C_OBJECT. The only 
  3864. OM attribute of OM_C_OBJECT is OM_CLASS. OM_CLASS identifies the object's OM 
  3865. class, which in this case is DS_C_ENTRY_INFO_SELECTION. 
  3866. DS_C_ENTRY_INFO_SELECTION identifies information to be extracted from a 
  3867. directory entry and has the following OM attributes, in addition to those 
  3868. inherited from OM_C_OBJECT: 
  3869.  
  3870.    o  DS_ALL_ATTRIBUTES 
  3871.    o  DS_ATTRIBUTES_SELECTED 
  3872.    o  DS_INFO_TYPE 
  3873.  
  3874.  As part of an XDS function call, DS_ALL_ATTRIBUTES specifies to the Directory 
  3875.  Service whether all the attributes of a directory entry are relevant to the 
  3876.  application program. It can take the values OM_TRUE or OM_FALSE. These values 
  3877.  are defined to be of syntax OM_S_BOOLEAN. The value OM_TRUE indicates that 
  3878.  information is requested on all attributes in the directory entry. The value 
  3879.  OM_FALSE indicates that information is only requested on those attributes that 
  3880.  are listed in the OM attribute DS_ATTRIBUTES_SELECTED. 
  3881.  
  3882.  DS_ATTRIBUTES_SELECTED lists the types of attributes in the entry from which 
  3883.  information is to be extracted. The syntax of the value is specified as 
  3884.  OM_S_OBJECT_IDENTIFIER_STRING. 
  3885.  
  3886.  OM_S_OBJECT_IDENTIFIER_STRING contains an octet string of integers that are 
  3887.  BER encoded object identifiers of the types of OM attributes in the OM 
  3888.  attribute list. The value of DS_ATTRIBUTES_SELECTED is only significant if the 
  3889.  value of DS_ALL_ATTRIBUTES is OM_FALSE, as described previously. 
  3890.  
  3891.  DS_INFO_TYPE identifies what information is to be extracted from each OM 
  3892.  attribute identified. The syntax of the value is specified as 
  3893.  Enum(DS_INFORMATION_TYPE). DS_INFO_TYPE is an enumerated type that has two 
  3894.  possible values:  DS_TYPES_ONLY and DS_TYPES_AND_VALUES. DS_TYPES_ONLY 
  3895.  indicates that only the attribute types in the entry are returned by the 
  3896.  Directory Service operation. DS_TYPES_AND_VALUES indicates that both the types 
  3897.  and the values of the attributes in the directory entry are returned. 
  3898.  
  3899.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3900.   Γöé Table 2. OM Attributes of a OM_C_OBJECT                         Γöé
  3901.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3902.   Γöé          Γöé                    Γöé  VALUE  Γöé  VALUE  Γöé  VALUE Γöé
  3903.   Γöé ATTRIBUTE     Γöé VALUE SYNTAX              Γöé  LENGTH Γöé  NO.  Γöé  INI-  Γöé
  3904.   Γöé          Γöé                    Γöé     Γöé     Γöé TIALLY Γöé
  3905.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3906.   Γöé OM_CLASS      Γöé String(OM_S_OBJECT_IDENTIFIER_STRING) Γöé   -   Γöé   1   Γöé   -  Γöé
  3907.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3908.  
  3909.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3910.   Γöé Table 3. OM Attributes of a DS_ENTRY_INFO_SELECTION                   Γöé
  3911.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3912.   Γöé ATTRIBUTE     Γöé VALUE SYNTAX         Γöé  VALUE  Γöé  VALUE  Γöé VALUE INITIALLY  Γöé
  3913.   Γöé          Γöé               Γöé  LENGTH Γöé  NO.  Γöé          Γöé
  3914.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3915.   Γöé DS_ALL_ATTRIBUTES Γöé OM_S_BOOLEAN         Γöé   -   Γöé   1   Γöé OM_TRUE      Γöé
  3916.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3917.   Γöé DS_ATTRIBUTES   Γöé String(OM_S_OBJECT      Γöé   -   Γöé  0 or  Γöé -         Γöé
  3918.   Γöé _SELECTED     Γöé _IDENTIFIER_STRING)     Γöé     Γöé  more  Γöé          Γöé
  3919.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3920.   Γöé DS_INFO_TYPE    Γöé Enum(DS_Information_Type)  Γöé   -   Γöé   1   Γöé DS_TYPES_AND_   Γöé
  3921.   Γöé          Γöé               Γöé     Γöé     Γöé VALUES      Γöé
  3922.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3923.  
  3924.  
  3925.   Mapping the Class Definition of DS_C_ENTRY_INFO_SELECTION
  3926.  
  3927.  A typical Directory Service operation, such as a read operation (ds_read), 
  3928.  requires the entry_information_selection parameter to specify to the Directory 
  3929.  Service the information to be extracted from the directory entry. This 
  3930.  entry_information_selection parameter is built by the application program as a 
  3931.  public object (Public Objects describes how to create a public object), and is 
  3932.  included as a parameter to the ds_read function call, as shown in the 
  3933.  following code fragment from example.c: 
  3934.  
  3935.   /*
  3936.   * Public Object ("Descriptor List") for
  3937.   * Entry-Information-Selection
  3938.   * parameter to ds_read.
  3939.   */
  3940.   OM_descriptor selection[] = {
  3941.   OM_OID_DESC(OM_CLASS,DS_C_ENTRY_INFO_SELECTION),
  3942.   { DS_ALL_ATTRIBUTES, OM_S_BOOLEAN,{ OM_FALSE, NULL } },
  3943.   OM_OID_DESC(DS_ATTRIBUTES_SELECTED, DS_A_TELEPHONE_NUMBER),
  3944.   { DS_INFO_TYPE,OM_S_ENUMERATION,{ DS_TYPES_AND_VALUES,NULL } },
  3945.   OM_NULL_DESCRIPTOR
  3946.   };
  3947.  
  3948.   CHECK_DS_CALL(ds_read(session, DS_DEFAULT_CONTEXT,
  3949.                  name, selection, &result, &invoke_id));.
  3950.  
  3951.  
  3952. ΓòÉΓòÉΓòÉ 7.1.2. Object Identifiers ΓòÉΓòÉΓòÉ
  3953.  
  3954. OM classes are uniquely identifiable by means of ASN.1 object identifiers. OM 
  3955. classes have mandatory and optional OM attributes. Each OM attribute has a 
  3956. type, value, and syntax. OM objects are instances of OM classes that are 
  3957. uniquely identifiable by means of ASN.1 object identifiers. The syntax of 
  3958. values defined for these OM object classes and OM attributes are 
  3959. representations at a higher level of abstraction so that implementers can 
  3960. provide the necessary high-level language binding for their own implementations 
  3961. of the various application interfaces, such as XDS API. 
  3962.  
  3963. The DCE implementation uses the C language to define the internal 
  3964. representation of OM classes and OM attributes. These definitions are supplied 
  3965. in the header files that are included as part of the XDS and XOM API. 
  3966.  
  3967. OM classes are defined as symbolic constants that correspond to ASN.1 object 
  3968. identifiers. An ASN.1 object identifier is a sequence of integers that uniquely 
  3969. identifies a specific class. OM attribute type and syntax are defined as 
  3970. integer constants. These standardized definitions provide application programs 
  3971. with a uniform and stable naming environment in which to perform directory 
  3972. operations. Registration authorities are responsible for allocating the unique 
  3973. object identifiers. 
  3974.  
  3975. The following code fragment from the xdsbdcp.h (the Basic Directory Contents 
  3976. Package) header file contains the symbolic constant OMP_O_DS_A_COUNTRY_NAME: 
  3977.  
  3978. #ifndef dsP_attributeType /* joint-iso-ccitt(2) ds(5)
  3979. attributeType(4) */
  3980. #define dsP_attributeType(X) ("\x55\xo4" #X)
  3981. #endif
  3982.  
  3983. #define OMP_O_DS_A_COUNTRY_NAME      dsp_attributeType(\x06)
  3984.  
  3985. It resolves to 2.5.4.6, which is the object identifier value for the Country 
  3986. Name attribute type as defined in the directory standard. The symbolic constant 
  3987. for the directory object class Country resolves to 2.5.6.2, the corresponding 
  3988. object identifier in the directory standard. OM classes are defined in the 
  3989. header files in the same manner. 
  3990.  
  3991. Note:  2.5.4.6 and 2.5.6.2 are object identifiers defined by the standards, not 
  3992.        the BER encoding found in the header file which are \x55\x04\x06 and 
  3993.        \x55\x06\x02. 
  3994.  
  3995.  
  3996. ΓòÉΓòÉΓòÉ 7.1.3. C Naming Conventions ΓòÉΓòÉΓòÉ
  3997.  
  3998. In the DCE implementation of XDS and XOM APIs, all object identifiers start 
  3999. with the letters ds, DS, MH, or OMP. Note that the interface reserves all 
  4000. identifiers starting with the letters dsP and omP for internal use by 
  4001. implementations of the interface. It also reserves all identifiers starting 
  4002. with the letters dsX, DSX, omX, and OMX for vendor specific extensions of the 
  4003. interface. Applications programmers should not use any identifier starting with 
  4004. these letters. 
  4005.  
  4006. The C identifiers for interface elements are formed using the following 
  4007. conventions: 
  4008.  
  4009.    o  XDS API function names are specified entirely in lowercase letters, and 
  4010.       are prefixed by ds_(for example, ds_read). 
  4011.  
  4012.    o  XOM API function names are specified entirely in lowercase letters, and 
  4013.       are prefixed by om_(for example, om_get). 
  4014.  
  4015.    o  C function parameters are derived from the parameter and result names and 
  4016.       are specified entirely in lowercase letters. In addition, the names of 
  4017.       results have _return added as a suffix (for example, 
  4018.       operation_status_return). 
  4019.  
  4020.    o  OM class names are specified entirely in uppercase letters, and are 
  4021.       prefixed by DS_C_ and MH_C_ (for example, DS_C_AVA). 
  4022.  
  4023.    o  OM attribute names are specified entirely in uppercase letters, and are 
  4024.       prefixed by DS_ and MH_ (for example, DS_RDNS). 
  4025.  
  4026.    o  OM syntax names are specified entirely in uppercase letters, and are 
  4027.       prefixed by OM_S_(for example, OM_S_PRINTABLE_STRING). 
  4028.  
  4029.    o  Directory class names are specified entirely in uppercase letters, and 
  4030.       are prefixed by DS_O(for example, DS_O_ORG_PERSON). 
  4031.  
  4032.    o  Directory attribute names are specified entirely in uppercase letters, 
  4033.       and are prefixed by DS_A (for example, DS_A_COUNTRY_NAME). 
  4034.  
  4035.    o  Errors are treated as a special case. Constants that are the possible 
  4036.       values of the OM attribute DS_PROBLEM of a subclass of the OM class 
  4037.       DS_C_ERROR are specified entirely in uppercase letters, and are prefixed 
  4038.       by DS_E_(for example, DS_E_BAD_CLASS). 
  4039.  
  4040.    o  The constants in the Value Length and Value Number columns of the OM 
  4041.       class definition tables are also assigned identifiers. Where the upper 
  4042.       limit in one of these columns is not 1, it is given a name that consists 
  4043.       of the OM attribute name, prefixed by DS_VL_ for value length, or DS_VN_ 
  4044.       for value number. 
  4045.  
  4046.    o  The sequence of octets for each object identifier is also assigned an 
  4047.       identifier for internal use by certain OM macros. These identifiers are 
  4048.       all uppercase letters and are prefixed by OMP_O_. 
  4049.  
  4050.  The following summarizes the XDS and XOM naming conventions. 
  4051.  
  4052.  
  4053. ΓòÉΓòÉΓòÉ 7.1.3.1. C Naming Conventions for XDS ΓòÉΓòÉΓòÉ
  4054.  
  4055.  Item                                                     Prefix 
  4056.  
  4057.  Reserved for implementers                                dsP 
  4058.  
  4059.  Reserved for interface extensions                        dsX 
  4060.  
  4061.  Reserved for interface extensions                        DSX 
  4062.  
  4063.  XDS functions                                            ds 
  4064.  
  4065.  Error problem values                                     DS_E_ 
  4066.  
  4067.  OM class names                                           DS_C_,MH_C_ 
  4068.  
  4069.  OM attribute names                                       DS_,MH_ 
  4070.  
  4071.  OM value length limits                                   DS_VL_ 
  4072.  
  4073.  OM value number limits                                   DS_VN_ 
  4074.  
  4075.  Other constants                                          DS_,MH_ 
  4076.  
  4077.  Attribute type                                           DS_A_ 
  4078.  
  4079.  Object class                                             DS_O_ 
  4080.  
  4081.  
  4082. ΓòÉΓòÉΓòÉ 7.1.3.2. Naming Conventions for XOM ΓòÉΓòÉΓòÉ
  4083.  
  4084.  Element Type                                             Prefix 
  4085.  
  4086.  Data type                                                OM_ 
  4087.  
  4088.  Data value                                               OM_ 
  4089.  
  4090.  Data value (class)                                       OM_C_ 
  4091.  
  4092.  Data value (syntax)                                      OM_S_ 
  4093.  
  4094.  Data value component (structure member)                  None 
  4095.  
  4096.  Function                                                 om_ 
  4097.  
  4098.  Function parameter                                       None 
  4099.  
  4100.  Function result                                          None 
  4101.  
  4102.  Macro                                                    OM_ 
  4103.  
  4104.  Reserved for use by implementers                         OMP 
  4105.  
  4106.  Reserved for use by implementers                         omP 
  4107.  
  4108.  Reserved for proprietary extension                       omX 
  4109.  
  4110.  Reserved for proprietary extension                       OMX 
  4111.  
  4112.  
  4113. ΓòÉΓòÉΓòÉ 7.1.4. Public Objects ΓòÉΓòÉΓòÉ
  4114.  
  4115. The ultimate aim of an application program is access to the directory to 
  4116. perform some operation on the contents of the directory. A user can request the 
  4117. telephone number or electronic mail address of a fellow employee. In order to 
  4118. access this information, the application performs a read operation on the 
  4119. directory so that information is extracted about a target object in the 
  4120. directory and manipulated locally within the application. 
  4121.  
  4122. XDS functions that perform directory operations, such as ds_read, require 
  4123. public and private objects as input parameters. Typically, a public object is 
  4124. generated by an application program and contains the information required to 
  4125. access a target directory object. This information includes the AVAs and RDNs 
  4126. that make up a distinguished name of an entry in the directory. However, an 
  4127. application program can also generate a private object. Private objects are 
  4128. described in Private Objects. 
  4129.  
  4130. A public object is created using OM classes and OM attributes. These OM classes 
  4131. and OM attributes model the target object entry in the directory and provide 
  4132. other information required by the Directory Service to access the directory. 
  4133.  
  4134.  
  4135. ΓòÉΓòÉΓòÉ 7.1.4.1. Descriptor Lists ΓòÉΓòÉΓòÉ
  4136.  
  4137. A public object is represented by a sequence of OM_descriptor data structures 
  4138. that is built by the application program. A descriptor contains the type, 
  4139. syntax, and value for an OM attribute in a public object. 
  4140.  
  4141. The data structure OM_descriptor is defined in the xom.h header file as 
  4142. follows: 
  4143.  
  4144. typedef struct OM_descriptor_struct {
  4145.         OM_type                    type;
  4146.         OM_syntax                  syntax;
  4147.         union OM_value_union       value;
  4148. }OM_descriptor;
  4149.  
  4150. The following figure shows the representation of a public object in a 
  4151. descriptor list. The first descriptor in the list indicates the object's OM 
  4152. class; the last descriptor is a NULL descriptor that signals the end of the 
  4153. list of OM attributes. In between the first and the last descriptor are the 
  4154. descriptors for the OM attributes of the object. 
  4155.  
  4156.  
  4157. A Representation of a Public Object Using a Descriptor List
  4158.  
  4159. For example, the following represents the public object country in example.c. 
  4160.  
  4161. static OM_descriptor        country[] = {
  4162.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  4163.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_COUNTRY_NAME),
  4164.  { DS_ATTRIBUTE_VALUES,OM_S_PRINTABLE_STRING, OM_STRING("US") },
  4165.  OM_NULL_DESCRIPTOR
  4166.  };
  4167.  
  4168. The descriptor list is an array of data type OM_descriptor that defines the OM 
  4169. class, OM attribute types, syntax, and values that make up a public object. 
  4170.  
  4171. The first descriptor gives the OM class of the object. The OM class of the 
  4172. object is defined by the OM attribute type, OM_CLASS. The OM_OID_DESC macro 
  4173. initializes the syntax and value of an object identifier, in this case to OM 
  4174. class DS_C_AVA, with syntax of OM_S_OBJECT_IDENTIFIER_STRING. 
  4175. OM_S_OBJECT_IDENTIFIER_STRING is an OM syntax type that is assigned by 
  4176. definition in the macro to any OM attribute type and value parameters input to 
  4177. it. 
  4178.  
  4179. The second descriptor defines the first OM attribute type, DS_ATTRIBUTE_TYPE, 
  4180. which has as its value DS_A_COUNTRY_NAME and syntax 
  4181. OM_S_OBJECT_IDENTIFIER_STRING. 
  4182.  
  4183. The third descriptor specifies the AVA of an object entry in the directory. The 
  4184. OM_OID_DESC macro is not used here because OM_OID_DESC is only used to 
  4185. initialize values having OM_S_OBJECT_IDENTIFIER_STRING syntax. The OM attribute 
  4186. type is DS_ATTRIBUTE_VALUES, the syntax is OM_S_PRINTABLE_STRING, and the value 
  4187. is US. The OM_STRING macro creates a data value for a string data type (data 
  4188. type OM_string), in this case OM_S_PRINTABLE_STRING. A string is specified in 
  4189. terms of its length or whether or not it terminates with a NULL. The OM_STRING 
  4190. macro is described in The OM_STRING Macro. 
  4191.  
  4192. The last descriptor is a NULL descriptor that marks the end of the public 
  4193. object definition. It is defined in the xom.h header file as follows: 
  4194.  
  4195. #define OM_NULL_DESCRIPTOR      \
  4196. { OM_NO_MORE__TYPES, OM_S_NO_MORE_SYNTAXES,{ { 0, OM_ELEMENTS_UNSPECIFIED } } }
  4197.  
  4198. OM_NULL_DESCRIPTOR is OM attribute type OM_NO_MORE_TYPES, syntax 
  4199. OM_S_NO_MORE_SYNTAXES, and value OM_ELEMENTS_UNSPECIFIED. 
  4200.  
  4201. "A Descriptor List for the Public Object: country" shows the composition of a 
  4202. descriptor list representing a public object. 
  4203.  
  4204.  
  4205. A Descriptor List for the Public Object: country
  4206.  
  4207.  
  4208. ΓòÉΓòÉΓòÉ 7.1.5. Building the Distinguished Name as a Public Object ΓòÉΓòÉΓòÉ
  4209.  
  4210. Recall that RDNs are built from AVAs and a distinguished name is built from a 
  4211. series of RDNs. In a typical application program, several AVAs are defined in 
  4212. descriptor lists as public objects. These public objects are incorporated into 
  4213. descriptor lists that represent corresponding RDNs. Finally, the RDNs are 
  4214. incorporated into one descriptor list that represents the distinguished name of 
  4215. an object in the directory, as shown in the following figure. This descriptor 
  4216. list is included as one of the input parameters to a Directory Service 
  4217. function. 
  4218.  
  4219. The following code fragment from example.c shows how a distinguished name is 
  4220. built as a public object. The public object is the name parameter for a 
  4221. subsequent read operation call to the directory. The representation of a 
  4222. distinguished name in the DIT is shown in "The Distinguished Name of Peter in 
  4223. the DIT". 
  4224.  
  4225.  
  4226. The Distinguished Name of Peter in the DIT
  4227.  
  4228. The first section of code defines the four AVAs. These AVAs make the assertion 
  4229. to the Directory Service that the attribute values in the distinguished name of 
  4230. Peter are valid and can therefore be read from the directory. The country name 
  4231. is US, the organization name is ibm, the organizational unit name is austin, 
  4232. and the CDS name is Peter. 
  4233.  
  4234. /*
  4235.  * Public Object ("Descriptor List") for Name parameter to
  4236.  * ds_read.
  4237.  * Build the Distinguished-Name of Peter Piper  */
  4238.  
  4239. static OM_descriptor        country[] = {
  4240.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  4241.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_COUNTRY_NAME),
  4242.  { DS_ATTRIBUTE_VALUES,OM_S_PRINTABLE_STRING, OM_STRING("US") },
  4243.  OM_NULL_DESCRIPTOR
  4244.  };
  4245. static OM_descriptor        organization[] = {
  4246.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  4247.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_ORG_NAME),
  4248.  { DS_ATTRIBUTE_VALUES,OM_S_TELETEX_STRING, OM_STRING("ibm") },
  4249.  OM_NULL_DESCRIPTOR
  4250.  };
  4251. static OM_descriptor        organizational_unit[] = {
  4252.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  4253.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_ORG_UNIT_NAME),
  4254.  { DS_ATTRIBUTE_VALUES,OM_S_TELETEX_STRING, OM_STRING("austin") },
  4255.  OM_NULL_DESCRIPTOR
  4256.  };
  4257. static OM_descriptor        cds_name[] = {
  4258.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  4259.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_TYPELESS_RDN),
  4260.  { DS_ATTRIBUTE_VALUES,OM_S_TELETEX_STRING, OM_STRING("Peter")},
  4261.  OM_NULL_DESCRIPTOR
  4262.  };
  4263.  
  4264. The next section of code is nested one level above the previously defined AVAs. 
  4265. Each RDN has a descriptor with OM attribute type DS_AVAS (indicating that it is 
  4266. OM attribute type AVA), a syntax of OM_S_OBJECT, and a value of the name of the 
  4267. descriptor array defined in the previous section of code for an AVA. The rdn1 
  4268. descriptor contains the descriptor list for the AVA country, the rdn2 
  4269. descriptor contains the descriptor list for the AVA organization, and so on. 
  4270.  
  4271. OM_S_OBJECT is a syntax that indicates that its value is a subobject. For 
  4272. example, the value for DS_AVAS is the previously defined object country. In 
  4273. this manner a hierarchy of linked objects and subobjects can be constructed. 
  4274.  
  4275. static OM_descriptor        rdn1[] = {
  4276.  OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  4277.  { DS_AVAS, OM_S_OBJECT, { 0, country } },
  4278.  OM_NULL_DESCRIPTOR
  4279.  };
  4280. static OM_descriptor        rdn2[] = {
  4281.  OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  4282.  { DS_AVAS, OM_S_OBJECT, { 0, organization } },
  4283.  OM_NULL_DESCRIPTOR
  4284.  };
  4285. static OM_descriptor        rdn3[] = {
  4286.  OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  4287.  { DS_AVAS, OM_S_OBJECT, { 0, organization_unit  } },
  4288.  OM_NULL_DESCRIPTOR
  4289.  };
  4290. static OM_descriptor        rdn4[] = {
  4291.  OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  4292.  { DS_AVAS, OM_S_OBJECT, { 0, cds_name } },
  4293.  OM_NULL_DESCRIPTOR
  4294.  };
  4295.  
  4296. The next section of code contains the RDNs that make up the distinguished name, 
  4297. which is stored in the array of descriptors called name. It is made up of the 
  4298. OM class DS_C_DS_DN (representing a distinguished name) and four RDNs of OM 
  4299. attribute type DS_RDNS and syntax OM_S_OBJECT. 
  4300.  
  4301. OM_descriptor       name[] = {
  4302.  OM_OID_DESC(OM_CLASS, DS_C_DS_DN),
  4303.  { DS_RDNS, OM_S_OBJECT, { 0, rdn1 } },
  4304.  { DS_RDNS, OM_S_OBJECT, { 0, rdn2 } },
  4305.  { DS_RDNS, OM_S_OBJECT, { 0, rdn3 } },
  4306.  { DS_RDNS, OM_S_OBJECT, { 0, rdn4 } },
  4307.  OM_NULL_DESCRIPTOR
  4308.  };
  4309.  
  4310. In summary, the distinguished name for Peter is stored in the array of 
  4311. descriptors called name, which is composed of three nested levels of arrays of 
  4312. descriptors (see "Building a Distinguished Name"). The definitions for the AVAs 
  4313. are at the innermost level, the definitions for RDNs are at the next level up, 
  4314. and the distinguished name is at the top level. 
  4315.  
  4316.  
  4317. Building a Distinguished Name
  4318.  
  4319. "A Simplified View of the Structure of a Distinguished Name" shows a more 
  4320. general view of the structure distinguished name. 
  4321.  
  4322.  
  4323. A Simplified View of the Structure of a Distinguished Name
  4324.  
  4325. The name descriptor defines a public object that is provided as the name 
  4326. parameter required by the XDS API read function call, ds_read, as follows (XDS 
  4327. API function calls are described in detail in XDS Programming): 
  4328.  
  4329. CHECK_DS_CALL(ds_read(session, DS_DEFAULT_CONTEXT,
  4330.                     name, selection, &result, &invoke_id));
  4331.  
  4332. The result of the ds_read function call is in a private implementation-specific 
  4333. format; it is stored in a workspace and pointed to by result. The application 
  4334. program must use XOM function calls (described in OM Function Calls) to 
  4335. interpret the data and extract the information. This extraction process 
  4336. involves uncovering the nested data structures in a series of XOM function 
  4337. calls. 
  4338.  
  4339.  
  4340. ΓòÉΓòÉΓòÉ 7.1.6. Client-Generated and Service-Generated Public Objects ΓòÉΓòÉΓòÉ
  4341.  
  4342. There are two types of public objects - service-generated objects and 
  4343. client-generated objects. The distinguished name object described in the 
  4344. previous section is a client-generated public object because an application 
  4345. program (the client) created the data structure. As the creator of the public 
  4346. object, it is the responsibility of the application program to manage the 
  4347. memory resources allocated for it. 
  4348.  
  4349. Service-generated public objects are created by the XOM service. 
  4350. Service-generated public objects can be generated as a result of an XOM 
  4351. request. An XOM API function, such as om_get, converts a private object into a 
  4352. service-generated public object. This is necessary because XDS can return a 
  4353. pointer to data in private format that can only be interpreted by XOM functions 
  4354. such as om_get. 
  4355.  
  4356. For example, "Client-Generated and Service-Generated Objects" shows how the 
  4357. read request described in the previous example returns a pointer to an encoded 
  4358. data structure stored in result. This encoded data structure, referred to as a 
  4359. private object (described in the next section) is one of the input parameters 
  4360. to om_get. The om_get function provides a pointer to a public object (in this 
  4361. case, entry) as an output parameter. The public object is a data structure that 
  4362. has been interpreted by om_get and is accessible by the application program 
  4363. (the client). The information requested by the application in the read request 
  4364. is contained in the output parameter entry. 
  4365.  
  4366.  
  4367. Client-Generated and Service-Generated Objects
  4368.  
  4369. The application program is responsible for managing the storage (memory) for 
  4370. the service-generated public object. This is an important point because it 
  4371. requires that the application issue a series of om_delete calls to delete the 
  4372. service-generated public object from memory. Because the data structures 
  4373. involved with Directory Service requests can be very large, it is imperative 
  4374. that the application programmer build into any application program the 
  4375. efficient management of memory resources. 
  4376.  
  4377. The following code fragment from example.h demonstrates how storage for public 
  4378. and private objects is released using a series of om_delete function calls 
  4379. after they are no longer needed by the application program. The data (a list of 
  4380. phone numbers associated with the name Peter required by the application 
  4381. program) has already been extracted using a series of om_get function calls: 
  4382.  
  4383. /*  We can now safely release all the private objects
  4384. *  and the public objects we no longer need
  4385. */
  4386. CHECK_OM_CALL(om_delete(session));
  4387. CHECK_OM_CALL(om_delete(result));
  4388. CHECK_OM_CALL(om_delete(entry));
  4389. CHECK_OM_CALL(om_delete(attributes));
  4390.  
  4391.  
  4392. ΓòÉΓòÉΓòÉ 7.2. Private Objects ΓòÉΓòÉΓòÉ
  4393.  
  4394. Private objects are created dynamically by the service interface. In 
  4395. Client-Generated and Service-Generated Public Objects the ds_read function 
  4396. returns a pointer to the data structure result in the workspace. This 
  4397. service-generated data structure is a private object in a private 
  4398. implementation-specific format, which requires a call to om_get to interpret 
  4399. the data. A private object is one of the required input parameters to XOM API 
  4400. functions (such as om_get), as shown in "Client-Generated and Service-Generated 
  4401. Objects". Private objects are always service generated. 
  4402.  
  4403. The following table compares private and public objects. 
  4404.  
  4405. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4406. Γöé Table 4. Comparison of Private and Public Objects                    Γöé
  4407. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4408. Γöé PRIVATE                   Γöé PUBLIC                   Γöé
  4409. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4410. Γöé Representation is implementation specific  Γöé Representation is defined in the API    Γöé
  4411. Γöé                       Γöé specification               Γöé
  4412. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4413. Γöé Not directly accessible by the client    Γöé Directly accessible by the client     Γöé
  4414. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4415. Γöé Manipulated by the client using OM func-  Γöé Manipulated by the client using program-  Γöé
  4416. Γöé tions                    Γöé ming constructs              Γöé
  4417. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4418. Γöé Created in storage provided by the service Γöé Is a service-generated object if created  Γöé
  4419. Γöé                       Γöé by the service               Γöé
  4420. Γöé                       Γöé                      Γöé
  4421. Γöé                       Γöé Is a client-generated object if created  Γöé
  4422. Γöé                       Γöé by the client in storage provided by the  Γöé
  4423. Γöé                       Γöé client                   Γöé
  4424. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4425. Γöé Cannot be modified by the client directly, Γöé If a client-generated object, can be mod- Γöé
  4426. Γöé except through the service interface    Γöé ified directly by the client        Γöé
  4427. Γöé                       Γöé                      Γöé
  4428. Γöé                       Γöé If a service-generated object, cannot be  Γöé
  4429. Γöé                       Γöé modified directly by the client, except  Γöé
  4430. Γöé                       Γöé through the service interface       Γöé
  4431. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4432. Γöé Storage is allocated and released by the  Γöé If a service-generated object, storage is Γöé
  4433. Γöé service                   Γöé allocated and released by the service   Γöé
  4434. Γöé                       Γöé                      Γöé
  4435. Γöé                       Γöé If a client-generated object, storage is  Γöé
  4436. Γöé                       Γöé allocated and released by the client    Γöé
  4437. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4438.  
  4439. Private objects can also be used as input to XOM and XDS API functions to 
  4440. improve program efficiency. For example, the output of a ds_compare request can 
  4441. be used as input to a ds_read. The compare request may return the distinguished 
  4442. name of the target object (present if the passed name was dereferenced). If 
  4443. present, the target name private object may be used as input to the ds_read 
  4444. operation. 
  4445.  
  4446.  
  4447. ΓòÉΓòÉΓòÉ 7.3. Object Classes ΓòÉΓòÉΓòÉ
  4448.  
  4449. Objects are categorized into OM classes based on their purpose and internal 
  4450. structure. An object is an instance of its OM class. An OM class is 
  4451. characterized by OM attribute types that can appear in its instances. An OM 
  4452. class is uniquely identified by an ASN.1 object identifier. 
  4453.  
  4454. Later in this section, it will be shown how OM classes are organized into 
  4455. groups of OM classes, called packages, that support some aspect of the 
  4456. Directory Service. 
  4457.  
  4458.  
  4459. ΓòÉΓòÉΓòÉ 7.3.1. OM Class Hierarchy and Inheritance Properties ΓòÉΓòÉΓòÉ
  4460.  
  4461. OM classes are related to each other in a tree hierarchy whose root is a 
  4462. special OM class called OM_C_OBJECT. Each of the other OM classes is the 
  4463. immediate subclass of precisely one other OM class. This tree structure is 
  4464. known as the OM class hierarchy. It is important because of the property of 
  4465. inheritance. The OM class hierarchy is defined by the XDS/XOM. DCE implements 
  4466. this hierarchy for XDS/XOM. 
  4467.  
  4468. The OM attribute types that can exist in an instance of an OM class but not in 
  4469. an instance of an OM class above it in the tree hierarchy are said to be 
  4470. specific to that OM class. OM Attributes that can appear in an object are those 
  4471. specific to its OM class as well as those inherited from OM classes above it in 
  4472. the tree. OM classes above an instance of an OM class in the tree are 
  4473. superclasses of that OM class. OM classes below an instance of an OM class are 
  4474. subclasses of that OM class. 
  4475.  
  4476. For example, as shown in "The OM Class DS_C_ENTRY_INFO_SELECTION", 
  4477. DS_C_ENTRY_INFO_SELECTION inherits its OM attributes from its superclass 
  4478. OM_C_OBJECT. The OM attributes DS_ALL_ATTRIBUTES, DS_ATTRIBUTES_SELECTED, and 
  4479. DS_INFO_TYPE are attributes specific to the OM class DS_C_ENTRY_INFO_SELECTION. 
  4480. The DS_C_ENTRY_INFO_SELECTION class has no subclasses. 
  4481.  
  4482.  
  4483. The OM Class DS_C_ENTRY_INFO_SELECTION
  4484.  
  4485. Another important point about OM class inheritance is that an instance of an OM 
  4486. class is also considered to be an instance of each of its superclasses and can 
  4487. appear wherever the interface requires an instance of any of those 
  4488. superclasses. For example, DS_C_DS_DN is a subclass of DS_C_NAME. Everywhere in 
  4489. an application program where DS_C_NAME is expected at the interface (as a 
  4490. parameter to ds_read, for example), it is permitted to supply DS_C_DS_DN. 
  4491.  
  4492.  
  4493. ΓòÉΓòÉΓòÉ 7.3.2. Abstract and Concrete Classes ΓòÉΓòÉΓòÉ
  4494.  
  4495. OM classes are defined as abstract or concrete. 
  4496.  
  4497. An abstract OM class is an OM class in which instances are not permitted. An 
  4498. abstract OM class can be defined so that subclasses can share a common set of 
  4499. OM attributes between them. 
  4500.  
  4501. In contrast to abstract OM classes, instances of OM concrete classes are 
  4502. permitted. However, the definition of each OM concrete class can include the 
  4503. restriction that a client not be allowed to create instances of that OM class. 
  4504. For example, consider two alternative means of defining the OM classes used in 
  4505. XDS: DS_C_LIST_INFO and DS_C_READ_RESULT. DS_C_LIST_INFO and DS_C_READ_RESULT 
  4506. are subclasses of the abstract OM class DS_C_COMMON_RESULT. 
  4507.  
  4508. "A Comparison of Two Classes With and Without an Abstract OM Class" shows the 
  4509. relationship of DS_C_LIST_INFO and DS_C_READ_RESULTS when the abstract OM class 
  4510. DS_C_COMMON_RESULT is defined and when it is not defined. It demonstrates that 
  4511. the presence of an abstract OM class enables the programmer to develop 
  4512. applications that process information more efficiently. 
  4513.  
  4514.  
  4515. A Comparison of Two Classes With and Without an Abstract OM Class
  4516.  
  4517. The following list contains the hierarchy of concrete and abstract OM classes 
  4518. in the Directory Service Package. Abstract OM classes are shown in italics. The 
  4519. indentation shows the class hierarchy; for example, the abstract class 
  4520. OM_C_OBJECT is a superclass of the abstract class DS_C_COMMON_RESULTS, which in 
  4521. turn is a superclass of the concrete class DS_C_COMPARE_RESULT. 
  4522.  
  4523. OM_C_OBJECT 
  4524.  
  4525.    o  DS_C_ACCESS_POINT 
  4526.    o  DS_C_ADDRESS 
  4527.         -  DS_C_PRESENTATION_ADDRESS 
  4528.    o  DS_C_ATTRIBUTE 
  4529.         -  DS_C_AVA 
  4530.         -  DS_C_ENTRY_MOD 
  4531.         -  DS_C_FILTER_ITEM 
  4532.    o  DS_C_ATTRIBUTE_ERROR 
  4533.    o  DS_C_ATTRIBUTE._LIST 
  4534.         -  DS_C_ENTRY_INFO 
  4535.    o  DS_C_COMMON_RESULTS 
  4536.         -  DS_C_COMPARE_RESULT 
  4537.         -  DS_C_LIST_INFO 
  4538.         -  DS_C_READ_RESULT 
  4539.         -  DS_C_SEARCH_INFO 
  4540.    o  DS_C_CONTEXT 
  4541.    o  DS_C_CONTINUATION_REF 
  4542.         -  DS_C_REFERRAL 
  4543.    o  DS_C_ENTRY_INFO_SELECTION 
  4544.    o  DS_C_ENTRY_MOD_LIST 
  4545.    o  DS_C_ERROR 
  4546.         -  DS_C_ABANDON_FAILED 
  4547.         -  DS_C_ATTRIBUTE_PROBLEM 
  4548.         -  DS_C_COMMUNICATIONS_ERROR 
  4549.         -  DS_C_LIBRARY_ERROR 
  4550.         -  DS_C_NAME_ERROR 
  4551.         -  DS_C_SECURITY_ERROR 
  4552.         -  DS_C_SYSTEM_ERROR 
  4553.         -  DS_C_SECURITY_ERROR 
  4554.         -  DS_C_UPDATE_ERROR 
  4555.    o  DS_C_EXT 
  4556.    o  DS_C_FILTER 
  4557.    o  DS_C_LIST_INFO_ITEM 
  4558.    o  DS_C_LIST_RESULT 
  4559.    o  DS_C_NAME 
  4560.         -  DS_C_DS_DN 
  4561.    o  DS_C_OPERATION_PROGRESS 
  4562.    o  DS_C_PARTIAL_OUTCOME_QUAL 
  4563.    o  DS_C_RELATIVE_NAME 
  4564.         -  DS_C_DS_RDN 
  4565.    o  DS_SEARCH_RESULT 
  4566.    o  DS_C_SESSION 
  4567.  
  4568.  In summary, an OM class is defined with the following elements: 
  4569.  
  4570.    o  OM class name (indicated by an object identifier) 
  4571.    o  Identity of its immediate superclass 
  4572.    o  Definitions of the OM attribute types specific to the OM class 
  4573.    o  Indication whether the OM class is abstract or concrete 
  4574.    o  Constraints on the OM attributes 
  4575.  
  4576.  A complete description of OM classes, OM attributes, syntaxes, and values that 
  4577.  are defined for XDS and XOM APIs are described in this guide. Tables and 
  4578.  textual descriptions, such as the one shown in "A Complete Description of the 
  4579.  Concrete OM Class DS_C_ATTRIBUTE" for the concrete OM class DS_C_ATTRIBUTE, 
  4580.  are also provided in this guide for each OM class. 
  4581.  
  4582.  
  4583.   A Complete Description of the Concrete OM Class DS_C_ATTRIBUTE
  4584.  
  4585.  "A Complete Description of the Concrete OM Class DS_C_ATTRIBUTE" provides 
  4586.  information under the following headings: 
  4587.  
  4588.  OM Attribute        The name of each of the OM attributes 
  4589.  
  4590.  Value Syntax        The syntaxes of each of the OM attribute's values 
  4591.  
  4592.  Value Length        Any constraints on the number of bits, octets, or 
  4593.                      characters in each value that is a string 
  4594.  
  4595.  Value Number        Any constraints on the number of values 
  4596.  
  4597.  Value Initially     Any value with which the OM attribute can be initialized 
  4598.  
  4599.  An OM class can be constrained to contain only one member of a set of OM 
  4600.  attributes. In turn, OM attributes can be restricted to having no more than a 
  4601.  fixed number of values, either 0 (zero) or 1 as an optional value, or exactly 
  4602.  one mandatory value. 
  4603.  
  4604.  An OM attribute's value can be also constrained to a single syntax. That 
  4605.  syntax can be further restricted to a subset of defined values. 
  4606.  
  4607.  An object passed as a parameter to an XOM and XDS function call needs to meet 
  4608.  a minimum set of conditions: 
  4609.  
  4610.    o  The type of each OM attribute must be specific to the object's OM class 
  4611.       or one of its superclasses. 
  4612.  
  4613.    o  The number of values of each OM attribute must be within OM class limits. 
  4614.  
  4615.    o  The syntax of each value must be among those the OM class permits. 
  4616.  
  4617.    o  The number of bits, octets, or characters in each string value must be 
  4618.       within OM class limits. 
  4619.  
  4620.  
  4621. ΓòÉΓòÉΓòÉ 7.4. Packages ΓòÉΓòÉΓòÉ
  4622.  
  4623. A package is a collection of OM classes that are grouped together, usually by 
  4624. function. The packages themselves are features that are negotiated with the 
  4625. Directory Service using the XDS function ds_version. Consider what OM classes 
  4626. will be required for your application programs and determine the packages that 
  4627. contain these OM classes. 
  4628.  
  4629. A package is uniquely identified by an ASN.1 object identifier. DCE XDS API 
  4630. supports four packages of which one is mandatory and three are optional: 
  4631.  
  4632.    o  The Directory Service Package (mandatory) 
  4633.    o  The Basic Directory Contents Package (optional) 
  4634.    o  The Global Directory Service Package (optional; not used for CDS) 
  4635.    o  The MHS Directory User Package (optional; not used for CDS) 
  4636.  
  4637.  
  4638. ΓòÉΓòÉΓòÉ 7.4.1. The Directory Service Package ΓòÉΓòÉΓòÉ
  4639.  
  4640. The Directory Service Package is the default package and as such does not 
  4641. require negotiation. The optional packages have to be negotiated with the 
  4642. Directory Service using the ds_version function. 
  4643.  
  4644. The object identifiers for specific packages are defined in header files that 
  4645. are part of the XDS API and XOM API. An object identifier consists of a string 
  4646. of integers. The header files include #define preprocessor statements that 
  4647. assign names to these constants in order to make them more readable. These 
  4648. assignments alleviate the application programmer from the burden of maintaining 
  4649. these strings of integers. For example, the object identifiers for the 
  4650. Directory Service Package are defined in xds.h. The xds.h header file contains 
  4651. OM class and OM attribute names, OM object constants, and defines prototypes 
  4652. for XDS API functions, as shown in the following code fragment from the xds.h 
  4653. file. 
  4654.  
  4655. /* DS package object identifier */
  4656. /* {iso(1) identifier-organization(3) icd-ecma(12)
  4657.  *  member-company(2)
  4658.  *  dec(1011) xopen(28) dsp(0) } */
  4659.  
  4660. #define OMP_O_DS_SERVICE_PKG   "\x2B\x0C\x02\x87\x73\xlC\x00"
  4661.  
  4662. A ds_version function call must be included within an application program to 
  4663. negotiate the optional features (packages) with the Directory Service. The 
  4664. first step is to build an array of object identifiers for the optional packages 
  4665. to be negotiated (the Basic Directory Contents Package and the Global Directory 
  4666. Service Package), as shown in the following code fragment from the acl.h header 
  4667. file: 
  4668.  
  4669. DS_feature features [ ] = {
  4670.  { OM_STRING(OMP_O_DS_BASIC_DIR_CONTENTS_PKG), OM_TRUE },
  4671.  { 0 }
  4672. {;
  4673.  
  4674. The OM_STRING macro is provided for creating a data value of data type 
  4675. OM_string for octet strings and characters. XOM API macros are described in XOM 
  4676. API Macros. 
  4677.  
  4678. The array of object identifiers is stored in features, and passed as an input 
  4679. parameter to ds_version, as shown in the following code fragment: 
  4680.  
  4681. /* Negotiate the use of the BDCP package. */
  4682.  
  4683. if (ds_version(features) != DS_SUCCESS)
  4684.   printf("ds_version() error\n");
  4685.  
  4686.  
  4687. ΓòÉΓòÉΓòÉ 7.4.2. The Basic Directory Contents Package ΓòÉΓòÉΓòÉ
  4688.  
  4689. The Basic Directory Contents Package contains the object identifier definition 
  4690. of directory classes and attribute types as defined by the X.500 standard. 
  4691. These definitions allow the creation of and maintenance of directory entries 
  4692. for a number of common objects so that the representation of all such objects 
  4693. is the same throughout the directory. Also included are the definitions of the 
  4694. OM classes and OM attributes required to support the directory attribute types. 
  4695.  
  4696. Basic Directory Contents Package describes the Basic Directory Contents package 
  4697. in detail. 
  4698.  
  4699. The object identifier associated with the Basic Directory Contents Package is 
  4700. shown in the following code fragment from the xdsbdcp.h header file: 
  4701.  
  4702. /* BDCP package object identifier */
  4703. /* { iso(1) identifier-organization(3) icd-ecma(12)
  4704.  *   member-company (2)
  4705.  *   dec(1011) xopen(28) bdcp(1) } */
  4706.  
  4707.  #define OMP_DS_BASIC_DIR_CONTENTS_PKG
  4708.  "\x2B\x0C\x02\x87\x73\x1C\x01"
  4709.  
  4710. Note:  The xdsbdcp.h header file must be included. 
  4711.  
  4712.  
  4713. ΓòÉΓòÉΓòÉ 7.5. Package Closure ΓòÉΓòÉΓòÉ
  4714.  
  4715. An OM class can be defined to have an attribute whose OM class is defined in 
  4716. some other package. This avoids duplication of OM classes. This gives rise to 
  4717. the concept of a package closure. A package closure is the set of all OM 
  4718. classes that need to be supported so that all possible instances of all OM 
  4719. classes can be defined in the package. 
  4720.  
  4721.  
  4722. ΓòÉΓòÉΓòÉ 7.6. Workspaces ΓòÉΓòÉΓòÉ
  4723.  
  4724. Two application-specific APIs or two different implementations of the same 
  4725. service require work areas, called workspaces, to maintain private and public 
  4726. (service-generated) objects. The workspace is required because two 
  4727. implementations of the same service (or different services) can represent 
  4728. private objects differently. Each one has its own workspace. Using the 
  4729. functions provided by XOM API, such as om_get and om_copy, objects can be 
  4730. copied and moved from one workspace to another. 
  4731.  
  4732. Recall that private objects are returned by a service to a workspace in private 
  4733. implementation-specific format. Using the OM function calls described in OM 
  4734. Function Calls the data can be extracted from the private object for further 
  4735. program processing. 
  4736.  
  4737. Before a request to the directory can be made by an application program, a 
  4738. workspace must be created using the appropriate XDS function. An application 
  4739. creates a workspace by performing the XDS API call ds_initialize. Once the 
  4740. workspace is obtained, subsequent XDS API calls, such as ds_read, return a 
  4741. pointer to a private object in the workspace. When program processing is 
  4742. completed, the workspace is destroyed using the ds_shutdown XDS API function. 
  4743. Implicit in ds_shutdown is a call to the XOM API function om_delete to delete 
  4744. each private object the workspace contains. 
  4745.  
  4746. The programs in the \opt\dcelocal\examples\xdsxom directory demonstrate how to 
  4747. initialize and shut down a workspace. The XDS functions ds_initialize and 
  4748. ds_shutdown are described in detail in The ds_initialize Function Call and The 
  4749. ds_shutdown Function Call, respectively. 
  4750.  
  4751. The closures of one or more packages are associated with a workspace. A package 
  4752. can be associated with any number of workspaces. An application program must 
  4753. obtain a workspace that supports an OM class before it is able to create any 
  4754. instances of that OM class. 
  4755.  
  4756.  
  4757. ΓòÉΓòÉΓòÉ 7.7. Storage Management ΓòÉΓòÉΓòÉ
  4758.  
  4759. An object occupies storage. The storage occupied by a client-generated public 
  4760. object is allocated by the client, and is, therefore, directly accessible by 
  4761. the client and can be released by the client. The storage occupied by a private 
  4762. object is not accessible by the client and must be managed indirectly using XOM 
  4763. function calls. Release of service-generated public objects must also be 
  4764. managed indirectly by the client using the om_delete function. 
  4765.  
  4766. Objects are accessed by an application program by way of object handles. Object 
  4767. handles are used as input parameters to interface functions by the client and 
  4768. returned as output parameters by the service. The object handle for a public 
  4769. object is simply a pointer to the data structure (an array of descriptors) 
  4770. containing the object OM attributes. The object handle for a private object is 
  4771. a pointer to a data structure that is in private implementation-specific format 
  4772. and therefore inaccessible directly by client. 
  4773.  
  4774. The client creates a client-generated public object using normal programming 
  4775. language constructs; for example, static initialization. The client is 
  4776. responsible for managing any storage involved. The service creates 
  4777. service-generated public objects and allocates the necessary storage. As 
  4778. previously mentioned, the client must destroy service-generated public objects 
  4779. and release the storage by applying the XOM function om_delete to it, as shown 
  4780. in the following code fragment: 
  4781.  
  4782.  /*  We can now safely release all the private objects
  4783.  *  and the public objects we no longer need
  4784.  */
  4785. CHECK_OM_CALL(om_delete(session));
  4786. CHECK_OM_CALL(om_delete(result));
  4787. CHECK_OM_CALL(om_delete(entry));
  4788. CHECK_OM_CALL(om_delete(attributes));
  4789.  
  4790. The service also creates private objects for which it allocates storage that 
  4791. must be managed by the application. 
  4792.  
  4793. One of the input parameters to the ds_read function call is name. The name 
  4794. parameter is a client-generated public object created by the application from a 
  4795. series of nested data structures (RDNs and AVAs) to represent the distinguished 
  4796. name containing Peter. When the application no longer needs the 
  4797. client-generated public object, it must manage the storage for the 
  4798. client-generated public object outside the XDS/XOM API. The ds_read call 
  4799. returns the pointer to a private object, result, deposited in the workspace by 
  4800. the service. 
  4801.  
  4802. The program goes on to use the XOM function om_get with the input parameter 
  4803. result as a pointer to extract attribute values from the returned private 
  4804. object. The om_get call returns the pointer entry as a service-generated public 
  4805. object to the program so that the attribute values specified in the call can be 
  4806. accessed by it. Once the value is extracted, the application program can 
  4807. continue processing; for example, printing a message to a user with some 
  4808. extracted value like a phone number or postal address. The service-generated 
  4809. public object becomes the responsibility of the application program. The 
  4810. program goes on to release the resources allocated by the service by issuing a 
  4811. series of calls to om_delete, as shown in the following code fragment from 
  4812. example.h: 
  4813.  
  4814. /*
  4815.  * extract the telephone number(s) of "name" from the result
  4816.  *
  4817.  * There are 4 stages:
  4818.  * (1) get the Entry-Information from the Read-Result.
  4819.  * (2) get the Attributes from the Entry-Information.
  4820.  * (3) get the list of phone numbers.
  4821.  * (4) scan the list and print each number.
  4822.  */
  4823. CHECK_OM_CALL(   om_get(result,
  4824.             OM_EXCLUDE_ALL_BUT_THESE_TYPES
  4825.           + OM_EXCLUDE_SUBOBJECTS,
  4826.             entry_list, OM_FALSE, 0, 0, &entry,
  4827.             &total_num));
  4828. CHECK_OM_CALL(   om_get(entry->value.object.object,
  4829.             OM_EXCLUDE_ALL_BUT_THESE_TYPES
  4830.           + OM_EXCLUDE_SUBOBJECTS,
  4831.             attributes_list, OM_FALSE, 0, 0, &attributes,
  4832.             &total_num));
  4833. CHECK_OM_CALL(   om_get(attributes->value.object.object,
  4834.             OM_EXCLUDE_ALL_BUT_THESE_TYPES
  4835.           + OM_EXCLUDE_SUBOBJECTS,
  4836.             telephone_list, OM_FALSE, 0, 0, &telephones,
  4837.             &total_num));
  4838. /*  We can now safely release all the private objects
  4839.  *  and the public objects we no longer need
  4840.  */
  4841. CHECK_OM_CALL(om_delete(session));
  4842. CHECK_OM_CALL(om_delete(result));
  4843. CHECK_OM_CALL(om_delete(entry));
  4844. CHECK_OM_CALL(om_delete(attributes));
  4845.  
  4846. If the client possesses a valid handle (or pointer) for an object, it has 
  4847. access to a private object. If the client does not possess an object handle or 
  4848. the handle is not a valid one, a private object is inaccessible to the client 
  4849. and an error is returned to the calling function. In the preceding code 
  4850. fragment, the handles for the objects stored in entry, attributes, and 
  4851. telephones are the pointers &entry, &attributes, and &telephones, respectively. 
  4852.  
  4853.  
  4854. ΓòÉΓòÉΓòÉ 7.8. OM Syntaxes for Attribute Values ΓòÉΓòÉΓòÉ
  4855.  
  4856. An OM attribute is made up of an integer uniquely defined within a package that 
  4857. indicates the OM attribute's type, an integer giving that value's syntax, and 
  4858. an information item called a value. The syntaxes defined by the XOM API 
  4859. standard are closely aligned with ASN.1 types and type constructors. 
  4860.  
  4861. Some syntaxes are described in the standard in terms of syntax templates. 
  4862.  
  4863. A syntax template defines a group of related syntaxes. The syntax templates 
  4864. that are defined are as follows: 
  4865.  
  4866.    o  Enum(*) 
  4867.    o  Object(*) 
  4868.    o  String(*) 
  4869.  
  4870.  
  4871. ΓòÉΓòÉΓòÉ 7.8.1. Enumerated Types ΓòÉΓòÉΓòÉ
  4872.  
  4873. An OM attribute with syntax template Enum(*) is an enumerated type 
  4874. (OM_S_ENUMERATION) and has a set of values associated with that OM attribute. 
  4875. For example, one of the OM attributes of the OM class DS_C_ENTRY_INFO_SELECTION 
  4876. is DS_INFO_TYPE. DS_INFO_TYPE is listed in the OM attribute table for 
  4877. DS_C_ENTRY_INFO_SELECTION in XDS Class Definitions as having a value syntax of 
  4878. Enum(DS_INFORMATION_TYPE), as shown in the following table. DS_INFO_TYPE takes 
  4879. one of the following values: 
  4880.  
  4881.    o  DS_TYPES_ONLY 
  4882.    o  DS_TYPES_VALUES 
  4883.  
  4884.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4885.   Γöé Table 5. OM Attributes of a DS_C_ENTRY_INFO_SELECTION                  Γöé
  4886.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4887.   Γöé OM ATTRIBUTE     Γöé VALUE SYNTAX             Γöé VALUEΓöé VALUE Γöé VALUE INI-  Γöé
  4888.   Γöé           Γöé                   Γöé LENGTΓöé NUMBERΓöé TIALLY    Γöé
  4889.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4890.   Γöé DS_ALL_       Γöé OM_S_BOOLEAN             Γöé  -  Γöé  1  Γöé OM_TRUE   Γöé
  4891.   Γöé ATTRIBUTES      Γöé                   Γöé    Γöé    Γöé       Γöé
  4892.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4893.   Γöé DS_ATTRIBUTES_    Γöé String(OM_S_IDENTIFIER_STRING    Γöé  -  Γöé  0 or Γöé -      Γöé
  4894.   Γöé OBJECT_SELECTED   Γöé                   Γöé    Γöé  more Γöé       Γöé
  4895.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4896.   Γöé DS_INFO_TYPE     Γöé Enum(DS_INFORMATION_TYPE       Γöé  -  Γöé  1  Γöé DS_TYPES_  Γöé
  4897.   Γöé           Γöé                   Γöé    Γöé    Γöé AND_VALUES  Γöé
  4898.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4899.  
  4900.  The C language representation of the syntax of the OM attribute type 
  4901.  DS_INFO_TYPE is OM_S_ENUMERATION as defined in the xom.h header file. The 
  4902.  value of the OM attribute is either DS_TYPES_ONLY or DS_TYPES_AND_VALUES, as 
  4903.  shown in the following code fragment from example.h: 
  4904.  
  4905.   /*
  4906.    * Public Object ("Descriptor List") for
  4907.    * Entry-Information-Selection
  4908.    * parameter to ds_read.
  4909.    */
  4910.    OM_descriptor selection[ ] = {
  4911.    OM_OID_DESC(OM_CLASS, DS_C_ENTRY_INFO_SELECTION),
  4912.    { DS_ALL_ATTRIBUTES,  OM_S_BOOLEAN, { OM_FALSE, NULL } },
  4913.    OM_OID_DESC(DS_ATTRIBUTES_SELECTED, DS_A_TELEPHONE_NUMBER),
  4914.    { DS_INFO_TYPE,OM_S_ENUMERATION, { DS_TYPES_AND_VALUES,NULL } },
  4915.    OM_NULL_DESCRIPTOR
  4916.    };
  4917.  
  4918.  
  4919. ΓòÉΓòÉΓòÉ 7.8.2. Object Types ΓòÉΓòÉΓòÉ
  4920.  
  4921. An OM attribute with syntax template Object(*) has OM_S_OBJECT as syntax and a 
  4922. subobject as a value. For example, one of the OM attributes of the OM class 
  4923. DS_C_DS_DN is DS_RDNS. DS_RDNS is listed in the OM attribute table for DS_DS_DN 
  4924. as having a value syntax of Object(DS_C_DS_RDN), as shown in the following 
  4925. table. 
  4926.  
  4927. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4928. Γöé Table 6. OM Attributes of a DS_C_DS_DN                         Γöé
  4929. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4930. Γöé          Γöé                    Γöé  VALUE  Γöé  VALUE  Γöé VALUE  Γöé
  4931. Γöé OM ATTRIBUTE    Γöé VALUE SYNTAX              Γöé  LENGTH Γöé  NUMBER Γöé INI-  Γöé
  4932. Γöé          Γöé                    Γöé     Γöé     Γöé TIALLY Γöé
  4933. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4934. Γöé DS_RDNS      Γöé Object(DS_C_DS_RDN)          Γöé   -   Γöé  0 or  Γöé  -   Γöé
  4935. Γöé          Γöé                    Γöé     Γöé  more  Γöé     Γöé
  4936. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4937.  
  4938. The C language representation of the syntax of the OM attribute type DS_RDNS is 
  4939. OM_S_OBJECT, as shown in following code fragment from example.h: 
  4940.  
  4941. OM_descriptor       name[ ] = {
  4942.  OM_OID_DESC(OM_CLASS, DS_C_DS_DN),
  4943.  { DS_RDNS, OM_S_OBJECT, { 0, rdn1 } },
  4944.  { DS_RDNS, OM_S_OBJECT, { 0, rdn2 } },
  4945.  { DS_RDNS, OM_S_OBJECT, { 0, rdn3 } },
  4946.  { DS_RDNS, OM_S_OBJECT, { 0, rdn4 } },
  4947.  OM_NULL_DESCRIPTOR
  4948.  };
  4949.  
  4950.  
  4951. ΓòÉΓòÉΓòÉ 7.8.3. Strings ΓòÉΓòÉΓòÉ
  4952.  
  4953. An OM attribute with syntax template String(*) specifies the string syntax of 
  4954. its value. A string is categorized as either a bit string, an octet string, or 
  4955. a character string. The bits of a bit string, the octets of an octet string, or 
  4956. the octets of a character string constitute the elements of the string. See 
  4957. Information Syntaxes for a list of the syntaxes that form the string group. 
  4958.  
  4959. The value length of a string is the number of elements in the string. Any 
  4960. constraints on the value length of a string are specified in the appropriate OM 
  4961. class definitions. 
  4962.  
  4963. The elements of the string are numbered. The position of the first element is 0 
  4964. (zero). The positions of successive elements are successive positive integers. 
  4965.  
  4966. For example, one of the OM attributes of the OM class DS_C_ENTRY_INFO_SELECTION 
  4967. is DS_ATTRIBUTES_SELECTED. DS_ATTRIBUTES_SELECTED is listed in the OM attribute 
  4968. table for DS_C_ENTRY_INFO_SELECTION as having a value syntax of 
  4969. String(OM_S_OBJECT_IDENTIFIER_STRING). 
  4970.  
  4971.  
  4972. ΓòÉΓòÉΓòÉ 7.8.4. Other Syntaxes ΓòÉΓòÉΓòÉ
  4973.  
  4974. The other syntaxes are defined as follows: 
  4975.  
  4976.    o  OM_S_BOOLEAN - A value of this syntax is Boolean; that is, the value can 
  4977.       be OM_TRUE or OM_FALSE. 
  4978.  
  4979.    o  OM_S_INTEGER - A value of this syntax is a positive or negative integer. 
  4980.  
  4981.    o  OM_S_NULL - The one value of this syntax is a valueless place holder. 
  4982.  
  4983.  
  4984. ΓòÉΓòÉΓòÉ 7.9. Service Interface Data Types ΓòÉΓòÉΓòÉ
  4985.  
  4986. The local variables within an application program that contain the parameters 
  4987. and results of XDS and XOM API function calls are declared using a standard set 
  4988. of data types. These data types are defined by typedef statements in the xom.h 
  4989. header files. Some of the more commonly used data types are described in the 
  4990. following sections. A complete description of service interface data types is 
  4991. XOM Service Interface and in DCE for OS/2 Warp: Application Development 
  4992. Reference. 
  4993.  
  4994.  
  4995. ΓòÉΓòÉΓòÉ 7.9.1. The OM_descriptor Data Type ΓòÉΓòÉΓòÉ
  4996.  
  4997. The OM_descriptor data type is used to describe an OM attribute type, syntax, 
  4998. and value. A data value of this type is a descriptor, which embodies an OM 
  4999. attribute value. An array of descriptors can represent all the values of an 
  5000. object. 
  5001.  
  5002. OM_descriptor is defined in the xom.h header file as follows: 
  5003.  
  5004. /* Descriptor */
  5005.  
  5006. typedef struct OM_descriptor_struct {
  5007.         OM_type                    type;
  5008.         OM_syntax                  syntax;
  5009.         union OM_value_union       value;
  5010. } OM_descriptor;
  5011.  
  5012. OM_descriptor is made up of a series of nested data structures, as shown in 
  5013. "Data Type OM_descriptor_struct". 
  5014.  
  5015.  
  5016. Data Type OM_descriptor_struct
  5017.  
  5018. "Data Type OM_descriptor_struct" shows that type and syntax are integer 
  5019. constants for an OM attribute type and syntax, as shown in the following code 
  5020. fragment from example.c: 
  5021.  
  5022. static OM_descriptor        country [ ] = {
  5023.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  5024.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_COUNTRY_NAME),
  5025.  { DS_ATTRIBUTE_VALUES,OM_S_PRINTABLE_STRING,OM_STRING("US"},
  5026.  OM_NULL_DESCRIPTOR
  5027.  };
  5028.  
  5029. The code fragment initializes four descriptors, as shown in the following 
  5030. figure. The type and syntax evaluate to integers for all four descriptors. 
  5031.  
  5032.  
  5033. Initializing Descriptors
  5034.  
  5035. The value component is a little more complex. "Data Type OM_descriptor_struct" 
  5036. shows that value is a union of OM_value_union. OM_value_union has five members: 
  5037. string, boolean, enumeration, integer, and object. The members boolean, 
  5038. enumeration, and integer have integer values. The string member contains a 
  5039. string of type OM_string, which is a structure composed of a length and a 
  5040. pointer to a string of characters. The object member is a structure of type 
  5041. OM_padded_object that points to another object nested below it. Many OM 
  5042. attributes have other objects as values. These subobjects, in turn, can have 
  5043. other subobjects and so on. 
  5044.  
  5045. For example, as shown in "An Object and a Subordinate Object", the OM class 
  5046. DS_READ_RESULT has one OM attribute: DS_ENTRY. The syntax of DS_ENTRY is 
  5047. OM_S_OBJECT with a value of DS_C_ENTRY_INFO, indicating that it points to the 
  5048. subobject DS_C_ENTRY_INFO. DS_C_ENTRY_INFO has the OM attribute DS_OBJECT_NAME 
  5049. with the syntax OM_S_OBJECT, indicating that it points to the subobject 
  5050. DS_C_NAME. 
  5051.  
  5052.  
  5053. An Object and a Subordinate Object
  5054.  
  5055.  
  5056. ΓòÉΓòÉΓòÉ 7.9.2. Data Types for XDS API Function Calls ΓòÉΓòÉΓòÉ
  5057.  
  5058. The following code fragment from example.h shows how the data types are used to 
  5059. declare the variables that contain the output parameters from the XDS API 
  5060. function calls. 
  5061.  
  5062. int main(void)
  5063. {
  5064.   DS_status         error;       /* return value from DS functions          */
  5065.   OM_return_code    return_code; /* return value from OM functions  */
  5066.   OM_workspace      workspace;  /* workspace for objects        */
  5067.   OM_private_object session;    /* session for directory operations      */
  5068.   OM_private_object result;     /* result of read operation              */
  5069.   OM_sint           invoke_id;  /* Invoke-ID of the read operation       */
  5070.   CHECK_DS_CALL((OM_object) !(workspace=ds_initialize()));
  5071.   CHECK_DS_CALL(ds_version(bdcp_package, workspace));
  5072.   CHECK_DS_CALL(ds_bind(DS_DEFAULT_SESSION, workspace, &session));
  5073.  
  5074. The code fragment shows: 
  5075.  
  5076.    o  The ds_initialize call returns a variable of type OM_workspace 
  5077.       (workspace) that contains a handle or pointer to a workspace. 
  5078.  
  5079.    o  The ds_bind call returns a pointer to a variable of type 
  5080.       OM_private_object (&session). The private object contains the session 
  5081.       information required by all subsequent XDS API calls, except ds_shutdown. 
  5082.  
  5083.    o  The ds_read call returns a pointer to the result of a directory read 
  5084.       request in a variable of type OM_private_object (&results). 
  5085.  
  5086.    o  The error handing macros CHECK_DS_CALL and CHECK_OM_CALL, defined in the 
  5087.       example.h header file, use the data types DS_status and OM_return_code, 
  5088.       respectively, as return values from XDS and XOM API function calls. 
  5089.  
  5090.  
  5091. ΓòÉΓòÉΓòÉ 7.9.3. Data Types for XOM API Calls ΓòÉΓòÉΓòÉ
  5092.  
  5093. The following code fragment from example.h shows how the data types are used to 
  5094. declare the variables that contain the input and output parameters for the XOM 
  5095. API function calls. 
  5096.  
  5097. /*
  5098.  * variables to extract the telephone number(s)
  5099.  */
  5100.  OM_type                  entry_list[]         = { DS_ENTRY, 0 };
  5101.  OM_type                  attributes_list[]    = { DS_ATTRIBUTES, 0 };
  5102.  OM_type                  telephone_list[]     = { DS_ATTRIBUTE_VALUES, 0 };
  5103.  OM_public_object         entry;
  5104.  OM_public_object         attributes;
  5105.  OM_public_object         telephones;
  5106.  OM_descriptor            *telephone;      /* current phone number  */
  5107.  OM_value_position        total_num;       /* number of Attribute Descriptors
  5108. */
  5109.  
  5110. This code fragment shows: 
  5111.  
  5112.    o  The series of om_get calls requires a list of OM attribute types that 
  5113.       identifies the types of OM attributes to be included in the operation. 
  5114.       The variables entry_list, attribute_list, and telephone_list are declared 
  5115.       as type OM_type. 
  5116.  
  5117.    o  The series of om_get calls return pointers to variables of type 
  5118.       OM_public_object. The om_get call generates public objects that are 
  5119.       accessible to the application program. 
  5120.  
  5121.    o  Where the variable total_num is type OM_value_position and is used to 
  5122.       hold the number of OM descriptors returned by om_get. 
  5123.  
  5124.  XOM Service Interface contains detailed descriptions of all the data types 
  5125.  defined by XOM API. 
  5126.  
  5127.  
  5128. ΓòÉΓòÉΓòÉ 7.10. OM Function Calls ΓòÉΓòÉΓòÉ
  5129.  
  5130. XOM API supports general-purpose OM functions defined by the X/Open standards 
  5131. body that allow an application program to manipulate objects in a workspace. 
  5132. Summary of OM Function Calls lists the OM function calls and gives a brief 
  5133. description of each. Using the OM Function Calls illustrates the use of OM 
  5134. function calls using the om_get call as an example. 
  5135.  
  5136.  
  5137. ΓòÉΓòÉΓòÉ 7.10.1. Summary of OM Function Calls ΓòÉΓòÉΓòÉ
  5138.  
  5139. The following list of XOM API function calls contains a brief description of 
  5140. each function. See the DCE for OS/2 Warp: Application Development Reference for 
  5141. a detailed description of the input and output parameters, return codes, and 
  5142. usage of each function. 
  5143.  
  5144.  om_copy              Creates an independent copy of an existing private object 
  5145.                       and all of its subobjects in a specified workspace. 
  5146.  
  5147.  om_copy_value        Replaces an existing OM attribute value or inserts a new 
  5148.                       value into a target private object with a copy of an 
  5149.                       existing OM attribute value found in a source private 
  5150.                       object. 
  5151.  
  5152.  om_create            Creates a private object that is an instance of the 
  5153.                       specified OM class. 
  5154.  
  5155.  om_delete            Deletes a private or service-generated public object. 
  5156.  
  5157.  om_get               Creates a new public object that is an exact but 
  5158.                       independent copy of an existing private object; certain 
  5159.                       exclusions and/or syntax conversion can be requested for 
  5160.                       the copy. 
  5161.  
  5162.  om_instance          Tests to determine if an object is an instance of a 
  5163.                       specified OM class (includes the case when the object is 
  5164.                       a subclass of that OM class). 
  5165.  
  5166.  om_put               Places or replaces copies of the attribute values of the 
  5167.                       source private or public object into the target private 
  5168.                       object. 
  5169.  
  5170.  om_read              Reads a segment of a string attribute from a private 
  5171.                       object. 
  5172.  
  5173.  om_remove            Removes and discards values of an attribute of a private 
  5174.                       object. 
  5175.  
  5176.  om_write             Writes a segment of a string attribute to a private 
  5177.                       object. 
  5178.  
  5179.  om_encode            Not supported by DCE XOM API. 
  5180.  
  5181.  om_decode            Not supported by DCE XOM API. 
  5182.  
  5183.  
  5184. ΓòÉΓòÉΓòÉ 7.10.2. Using the OM Function Calls ΓòÉΓòÉΓòÉ
  5185.  
  5186. Most application programs require the use of a series of om_get function calls 
  5187. to create service-generated public objects from which the program can extract 
  5188. requested information. For this reason, this section uses the operation of 
  5189. om_get as an example to describe how XOM API functions operate in general. 
  5190.  
  5191. The following code fragment from example.h shows how a series of om_get 
  5192. function calls extract a list of telephone numbers from a workspace. The 
  5193. ds_read function call deposits the private object stored in result in the 
  5194. workspace and provides access to it by the pointer &result. 
  5195.  
  5196. /*
  5197.  * extract the telephone number(s) of "name" from the result
  5198.  *
  5199.  * There are 4 stages:
  5200.  * (1) get the Entry-Information from the Read-Result.
  5201.  * (2) get the Attributes from the Entry-Information.
  5202.  * (3) get the list of phone numbers.
  5203.  * (4) scan the list and print each number.
  5204.  */
  5205.  
  5206. CHECK_OM_CALL(   om_get(result,
  5207.                    OM_EXCLUDE_ALL_BUT_THESE_TYPES
  5208.                  + OM_EXCLUDE_SUBOBJECTS,
  5209.                    entry_list, OM_FALSE, 0, 0, &entry,
  5210.                    &total_num));
  5211.  
  5212. CHECK_OM_CALL(   om_get(entry->value.object.object,
  5213.                    OM_EXCLUDE_ALL_BUT_THESE_TYPES
  5214.                  + OM_EXCLUDE_SUBOBJECTS,
  5215.                    attributes_list, OM_FALSE, 0, 0, &attributes,
  5216.                    &total_num));
  5217.  
  5218. CHECK_OM_CALL(   om_get(attributes->value.object.object,
  5219.                    OM_EXCLUDE_ALL_BUT_THESE_TYPES
  5220.                  + OM_EXCLUDE_SUBOBJECTS,
  5221.                    telephone_list, OM_FALSE, 0, 0, &telephones,
  5222.                    &total_num));
  5223.  
  5224. /*  We can now safely release all the private objects
  5225.  *  and the public objects we no longer need
  5226.  */
  5227. CHECK_OM_CALL(om_delete(session));
  5228. CHECK_OM_CALL(om_delete(result));
  5229. CHECK_OM_CALL(om_delete(entry));
  5230. CHECK_OM_CALL(om_delete(attributes));
  5231. for (telephone = telephones;
  5232.           telephone->type != DS_ATTRIBUTE_VALUES;
  5233.           telephone++)
  5234.          {
  5235.  if (telephone->type   != DS_ATTRIBUTE_VALUES
  5236. ||  (telephone->syntax & OM_S_SYNTAX) !=
  5237.     OM_S_TELETEX_STRING)
  5238.      {
  5239. (void) fprintf(stderr, "malformed telephone number\en");
  5240.         exit(EXIT_FAILURE);
  5241.      }
  5242.  
  5243. (void) printf("Telephone number: %s\en",
  5244.      telephone->value.string.elements);
  5245.      }
  5246. CHECK_OM_CALL(om_delete(telephones));
  5247. CHECK_DS_CALL(ds_shutdown(workspace));
  5248.  
  5249. The om_get call makes a copy of all or a selected set of parts of a private 
  5250. object. The copy is a service-generated public object that is accessible to the 
  5251. application program. The application program extracts the list of telephone 
  5252. numbers from this copy. 
  5253.  
  5254.  
  5255. ΓòÉΓòÉΓòÉ 7.10.3. Required Input Parameters ΓòÉΓòÉΓòÉ
  5256.  
  5257. The om_get function requires the following input parameters: 
  5258.  
  5259.    o  A private object, 
  5260.    o  A set of exclusions, 
  5261.    o  A set of OM attributes to be included in the copy, 
  5262.    o  A flag to indicate whether local string processing is required, 
  5263.    o  The position of the first value to be copied (the base value), and 
  5264.    o  The position within each OM attribute that is one beyond the last 
  5265.       attribute to be included in the copy (indicating the scope of the copy). 
  5266.  
  5267.  The om_get call returns the following output parameters: 
  5268.  
  5269.    o  The public object that is a copy of the private object, and 
  5270.    o  The number of OM attribute descriptors returned in the public object. 
  5271.  
  5272.  In the code fragment from example.h, the private object result is input to 
  5273.  om_get. 
  5274.  
  5275.  The next parameter, the exclusions parameter, reduces the copy to a prescribed 
  5276.  portion of the original. The exclusions apply to the OM attributes of the 
  5277.  object, but not to those of subobjects. The possibilities for determining the 
  5278.  combinations of types, values, subobjects, and descriptors to be excluded 
  5279.  depend on the creativity of the programmer. For a detailed description of all 
  5280.  the exclusion possibilities, see the DCE for OS/2 Warp: Application 
  5281.  Development Reference. The values chosen for the om_get calls in the preceding 
  5282.  code fragments from example.h are simplified for clarity. These exclusion 
  5283.  values are as follows: 
  5284.  
  5285.    o  OM_EXCLUDE_ALL_BUT_THESE_TYPES 
  5286.    o  OM_EXCLUDE_SUBOBJECTS 
  5287.  
  5288.  Each value indicates an exclusion, as defined by om_get, and is chosen from 
  5289.  the set of exclusions; alternatively, the single value OM_NO_EXCLUSIONS can be 
  5290.  chosen, which selects the entire object. Each value, except OM_NO_EXCLUSIONS, 
  5291.  is represented by a distinct bit, the presence of the value being represented 
  5292.  as 1, and its absence as 0 (zero). Multiple exclusions are requested by adding 
  5293.  or ORing the values that indicate the individual exclusions. 
  5294.  
  5295.  OM_EXCLUDE_ALL_BUT_THESE_TYPES indicates that the OM attributes included are 
  5296.  only the ones defined in the list of included types supplied in the next 
  5297.  parameter, entry_list. OM_EXCLUDE_SUBOBJECTS indicates that for each value 
  5298.  whose syntax is OM_S_OBJECT, a descriptor containing an object handle for the 
  5299.  original private subobject is returned, rather than a public copy of it. This 
  5300.  handle makes that subobject accessible for use in subsequent function calls. 
  5301.  This exclusion provides a means to examine an object one level at a time. The 
  5302.  object the handle points to is used in the next om_get call to get the next 
  5303.  level. 
  5304.  
  5305.  The entry_list parameter is declared as data type OM_type and initialized as 
  5306.  an array with two entries (DS_ENTRY and a NULL terminator). DS_ENTRY specifies 
  5307.  the single OM attribute type included for that om_get call. This call limits 
  5308.  processing to the one directory entry. The NULL terminator marks the end of 
  5309.  the OM attribute list. 
  5310.  
  5311.  The next parameter, OM_FALSE, is just a place holder for a parameter that is 
  5312.  not supported by XOM local strings. The next two parameters set the initial 
  5313.  and limiting value to 0 (zero), meaning that no specific values are to be 
  5314.  excluded. 
  5315.  
  5316.  The final two parameters are output parameters: entry, a pointer to a 
  5317.  service-generated public object deposited by om_get in the workspace, and 
  5318.  total_num, an integer. Both entry and total_num are available for examination 
  5319.  by the application program. 
  5320.  
  5321.  
  5322. ΓòÉΓòÉΓòÉ 7.10.4. Extracting the Data from the Read Result ΓòÉΓòÉΓòÉ
  5323.  
  5324. The entry parameter contains the result of processing by om_get of the read 
  5325. parameter generated by the ds_read operation. A successful call to ds_read 
  5326. returns an instance of OM class DS_C_READ_RESULT in the private object result. 
  5327. DS_C_READ_RESULT contains the information extracted from the directory entry of 
  5328. the target object. The following figure shows the relationship of some of the 
  5329. superclasses, subclasses, and the OM attribute of DS_C_READ_RESULT. Consider 
  5330. "The Read Result" as a partial map of the contents of result. 
  5331.  
  5332.  
  5333. The Read Result
  5334.  
  5335. The om_get function call creates a public object to make the information 
  5336. contained in result available to the application program. The entry parameter 
  5337. is defined as data type OM_public_object. As such, it is composed of several 
  5338. nested layers of subobjects that contain entry information, OM attributes, and 
  5339. OM attribute values, as shown in "Extracting Information Using om_get". The 
  5340. series of om_get calls removes these layers of objects to extract a list of 
  5341. telephone numbers. 
  5342.  
  5343.  
  5344. Extracting Information Using om_get
  5345.  
  5346. "Extracting Information Using om_get" also shows that the process of exposing 
  5347. the subobjects continues while the syntax of the subobjects is OM_S_OBJECT. In 
  5348. effect, example.h is reversing the process of building up a series of public 
  5349. objects as input to ds_read, namely, the distinguished name of Peter and the 
  5350. descriptor list for entry_information_selection. The following code fragment 
  5351. from example.c shows how the syntax of the variable telephones is tested for 
  5352. valid syntax, in this case, OM_S_TELETEX_STRING: 
  5353.  
  5354. Note:  In example.c the phone number values were created with a syntax of 
  5355.        OM_S_PRINTABLE_STRING and returned with a syntax of OM_S_TELETEX_STRING. 
  5356.        See Attribute and Data Type Translation for a description of the syntax 
  5357.        translation that takes place when using CDS as the directory. 
  5358.  
  5359.   for (telephone = telephones;
  5360.        telephone->type != DS_ATTRIBUTE_VALUES;
  5361.        telephone++)
  5362.       {
  5363.    if (telephone->type != DS_ATTRIBUTE_VALUES ||
  5364.        (telephone->syntax & OM_S_SYNTAX) !=
  5365.        OM_S_TELETEX_STRING)
  5366.         {
  5367.   (void) fprintf(stderr, "malformed telephone number\en");
  5368.           exit(EXIT_FAILURE);
  5369.         }
  5370.   (void) printf("Telephone number: %s\en",
  5371.           telephone->value.string.elements);
  5372.          }
  5373.  
  5374.  The preceding example determines whether telephones is in a format that can be 
  5375.  used by the application program as a string data that can be printed out, and 
  5376.  that the syntax is correct for a list of telephone numbers. Note that the 
  5377.  program uses the constant OM_S_SYNTAX to mask off the top 6 bits. These bits 
  5378.  are special bits that are used by XOM API. See XOM Service Interface for more 
  5379.  information on these special bits. 
  5380.  
  5381.  
  5382. ΓòÉΓòÉΓòÉ 7.10.5. Return Codes ΓòÉΓòÉΓòÉ
  5383.  
  5384. XOM API function calls return a value of type OM_return_code, which indicates 
  5385. whether the function succeeded. If the function is successful, the value of 
  5386. OM_return is set to OM_SUCCESS. If the function fails, it returns one of the 
  5387. values listed in XOM Service Interface. The constants for OM_return_code are 
  5388. defined in the xom.h header file. 
  5389.  
  5390.  
  5391. ΓòÉΓòÉΓòÉ 7.11. XOM API Header Files ΓòÉΓòÉΓòÉ
  5392.  
  5393. The XOM API includes the header file xom.h. This header file is composed of 
  5394. declarations defining the C workspace interface. It supplies type definitions, 
  5395. symbolic constant definitions, and macro definitions. 
  5396.  
  5397.  
  5398. ΓòÉΓòÉΓòÉ 7.11.1. XOM Type Definitions and Symbolic Constant Definitions ΓòÉΓòÉΓòÉ
  5399.  
  5400. The xom.h header file includes typedef statements that define the data types of 
  5401. all OM objects used in the interface. It also provides definitions of symbolic 
  5402. constants used by the interface. 
  5403.  
  5404. See the DCE for OS/2 Warp: Application Development Reference for a listing of 
  5405. the xom.h header file. 
  5406.  
  5407.  
  5408. ΓòÉΓòÉΓòÉ 7.11.2. XOM API Macros ΓòÉΓòÉΓòÉ
  5409.  
  5410. XOM API provides several macros that are useful in defining public objects in 
  5411. your application programs. These macros are defined in the xom.h header file: 
  5412.  
  5413.  OM_IMPORT                       Makes object identifier symbolic constants 
  5414.                                  available within a C source module. 
  5415.  
  5416.  OM_EXPORT                       Allocates memory and initializes object 
  5417.                                  identifier symbolic constants within a C 
  5418.                                  source module. 
  5419.  
  5420.  OM_OID_DESC                     Initializes the type, syntax, and value of an 
  5421.                                  OM attribute that holds an object identifier. 
  5422.  
  5423.  OM_NULL_DESCRIPTOR              Marks the end of a client-generated public 
  5424.                                  object. 
  5425.  
  5426.  OMP_LENGTH                      Calculates the length of an object identifier. 
  5427.  
  5428.  OM_STRING                       Creates a data value of a string data type. 
  5429.  
  5430.  
  5431. ΓòÉΓòÉΓòÉ 7.11.2.1. The OM_EXPORT and OM_IMPORT Macros ΓòÉΓòÉΓòÉ
  5432.  
  5433. Most application programs find it convenient to export all the names they use 
  5434. from the same C source module. OM_EXPORT allocates memory for the constants 
  5435. that represent an object OM class or an object identifier, as shown in the 
  5436. following code fragment from example.c. 
  5437.  
  5438. /*  Define necessary Object Identifier constants
  5439.  */
  5440. OM_EXPORT(DS_A_COUNTRY_NAME)
  5441. OM_EXPORT(DS_A_ORG_NAME)
  5442. OM_EXPORT(DS_A_ORG_UNIT_NAME)
  5443. OM_EXPORT(DSX_TYPELESS_RDN)
  5444. OM_EXPORT(DS_C_AVA)
  5445. OM_EXPORT(DS_C_DS_DN)
  5446. OM_EXPORT(DS_C_DS_RDN)
  5447. OM_EXPORT(DS_C_ENTRY_INFO_SELECTION)
  5448. OM_EXPORT(DS_C_ATTRIBUTE)
  5449. OM_EXPORT(DS_C_ATTRIBUTE_LIST)
  5450. OM_EXPORT(DS_A_TELEPHONE_NUMBER)
  5451.  
  5452. In this code fragment, object identifier constants that represent OM classes 
  5453. that are defined in the xds.h and xdsbdcp.h header files are exported to the 
  5454. main program module. The object identifier constants are defined in xds.h and 
  5455. xdscds.h with the OMP_O prefix followed by the variable name for the object 
  5456. identifier. The constant itself provides the hexadecimal value of the object 
  5457. identifier string. 
  5458.  
  5459. The OM_EXPORT macro takes the OM class name as input and creates two new data 
  5460. structures:  a character string and a structure of type OM_string. The 
  5461. structure of type OM_string contains a length and a pointer to a string that 
  5462. can be used later in an application program by the OM_OID_DESC macro to 
  5463. initialize the value of an object identifier. 
  5464.  
  5465. OM_IMPORT marks the identifiers as external for the compiler. It is used if 
  5466. OM_EXPORT is called in a different file from where its values are referenced. 
  5467. OM_IMPORT is not used in example.c because OM_EXPORT is called in the file 
  5468. where the object identifiers are referenced. 
  5469.  
  5470.  
  5471. ΓòÉΓòÉΓòÉ 7.11.3. The OM_OID_DESC Macro ΓòÉΓòÉΓòÉ
  5472.  
  5473. The OM_OID_DESC macro initializes the type, syntax, and value of an OM 
  5474. attribute that holds an object identifier; in other words, it initializes 
  5475. OM_descriptor. It takes as input an OM attribute type and the name of an object 
  5476. identifier. The object identifier should have already been exported to the 
  5477. program module, as shown in the previous section. 
  5478.  
  5479. The output of the macro is an OM_descriptor composed of a type, syntax, and 
  5480. value. The type is the name of the OM class. The syntax is 
  5481. OM_S_OBJECT_IDENTIFIER. The value is a two-member structure with the length of 
  5482. the object identifier and a pointer to the actual object identifier string. It 
  5483. is defined as a pointer to void so that it can be used as a generic pointer; it 
  5484. can point to any data type. 
  5485.  
  5486. OM_OID_DESC calls OMP_LENGTH to calculate the length of the object identifier 
  5487. string. 
  5488.  
  5489. The following code fragment from xom.h shows the OM_OID_DESC and OMP_LENGTH 
  5490. macros: 
  5491.  
  5492. /* Private macro to calculate length
  5493.  * of an object identifier
  5494.  */
  5495. #define OMP_LENGTH(oid_string) (sizeof(OMP_O_##oid_string)-1)
  5496.  
  5497. /* Macro to initialize the syntax and value
  5498.  * of an object identifier
  5499.  */
  5500. #define OM_OID_DESC(type, oid_name)               \
  5501.         { (type), OM_S_OBJECT_IDENTIFIER_STRING,  \
  5502.          { OMP_LENGTH(oid_name) , OMP_D_##oid_name } }
  5503.  
  5504.  
  5505. ΓòÉΓòÉΓòÉ 7.11.3.1. The OM_NULL_DESCRIPTOR Macro ΓòÉΓòÉΓòÉ
  5506.  
  5507. The OM_NULL_DESCRIPTOR macro marks the end of a client-generated public object 
  5508. by setting the type, syntax, and value to OM_NO_MORE_TYPES, 
  5509. OM_S_NO_MORE_SYNTAXES, and a value of zero length and a NULL string, 
  5510. respectively. 
  5511.  
  5512.  
  5513. ΓòÉΓòÉΓòÉ 7.11.3.2. The OM_STRING Macro ΓòÉΓòÉΓòÉ
  5514.  
  5515. The OM_STRING macro creates a string data value. Data strings are of type 
  5516. OM_string, as shown from this code fragment from the xom.h header file: 
  5517.  
  5518. /* String */
  5519.  
  5520. typedef struct {
  5521.         OM_string_length            length;
  5522.         void                       *elements;
  5523. } OM_string;
  5524.  
  5525. #define OM_STRING(string)            \
  5526.          { (OM_string_length)(sizeof(string)-1), string }
  5527.  
  5528. A string is specified in terms of its length or whether or not it terminates 
  5529. with a NULL. OM_string_length is the number of octets by which the string is 
  5530. represented, or it is the OM_LENGTH_UNSPECIFIED value if the string terminates 
  5531. with a NULL. 
  5532.  
  5533. The bits of a bit string are represented as a sequence of octets. The first 
  5534. octet stores the number of unused bits in the last octet. The bits in the bit 
  5535. string, beginning with the first bit and proceeding to the trailing bit, are 
  5536. placed in bits 7 to 0 of the second octet. These are followed by bits 7 to 0 of 
  5537. the third octet, then by bits 7 to 0 of each octet in turn, followed by as many 
  5538. bits as are required of the final octet commencing with bit 7. 
  5539.  
  5540.  
  5541. ΓòÉΓòÉΓòÉ 8. XDS Programming ΓòÉΓòÉΓòÉ
  5542.  
  5543. XDS API defines an application programming interface to directory services in 
  5544. the X/Open Common Applications Environment as defined in the X/Open Portability 
  5545. Guide. This interface is based on the 1988 CCITT X.500 Series of 
  5546. Recommendations and the ISO 9594 Standard. This joint standard is referred to 
  5547. from this point on simply as X.500. 
  5548.  
  5549. This section describes the purpose and function of XDS API functions in a 
  5550. general way. Refer to the DCE for OS/2 Warp: Application Development Reference 
  5551. for complete and detailed reference information on specific function calls. 
  5552.  
  5553. The following sections describe these XDS functions: 
  5554.  
  5555.    o  XDS Interface Management - Interact with the XDS interface 
  5556.    o  Directory Management - Initiate, manage, and end connections with the 
  5557.       directory 
  5558.    o  Directory Operation - Perform operations on a directory 
  5559.  
  5560.  Note:  The DCE XDS API does not support asynchronous operations from within 
  5561.         the same thread. If an application requires asynchronous XDS 
  5562.         operations, then it should use multiple threads to achieve this 
  5563.         functionality. 
  5564.  
  5565.  The ds_abandon function is not supported in this release. A ds_abandon returns 
  5566.  a DS_C_ABANDON_FAILED ( DS_E_TOO_LATE) error. See XDS Interface Description 
  5567.  for information on abandoning directory operations. 
  5568.  
  5569.  The example.c (example.h) refers to the complete XDS example program, which 
  5570.  can be found in the \opt\dcelocal\examples\xdsxom directory. 
  5571.  
  5572.  
  5573. ΓòÉΓòÉΓòÉ 8.1. XDS Interface Management Functions ΓòÉΓòÉΓòÉ
  5574.  
  5575. XDS API defines a set of functions that only interact with the XDS interface 
  5576. and have no counterpart in the directory standard definition: 
  5577.  
  5578.    o  ds_initialize 
  5579.    o  ds_version 
  5580.    o  ds_shutdown 
  5581.  
  5582.  These interface functions perform operations that involve the initialization, 
  5583.  management, and termination of sessions with the XDS interface service. 
  5584.  
  5585.  
  5586. ΓòÉΓòÉΓòÉ 8.1.1. The ds_initialize Function Call ΓòÉΓòÉΓòÉ
  5587.  
  5588. Every application program must first call ds_initialize to establish a 
  5589. workspace where objects returned by the Directory Service are deposited. The 
  5590. ds_initialize function must be called before any other directory interface 
  5591. functions are called. 
  5592.  
  5593. The ds_initialize call returns a handle (or pointer) to a workspace. The 
  5594. application program performs operations on OM objects in this workspace. OM 
  5595. objects created in this workspace can be used as input parameters to the other 
  5596. directory interface functions. In addition, objects returned by the Directory 
  5597. Service are deposited in the workspace. 
  5598.  
  5599. Within the following code fragment from example.c, a workspace is initialized 
  5600. (the declaration of the variable workspace and the call to ds_initialize are 
  5601. found in different sections of the program): 
  5602.  
  5603. int main(void)
  5604. {
  5605.   DS_status             error;               /* return value from DS functions*/
  5606.   OM_return_code        return_code;         /* return value from OM functions */
  5607.   OM_workspace          workspace;           /* workspace for objects */
  5608.   OM_private_object     session;             /* session for directory operations */
  5609.   OM_private_object     result;              /* result of read  operation */
  5610.   OM_sint               invoke_id;           /* Invoke-ID of the read operation */
  5611.   OM_value_position     total_num;           /* Number of Attribute Descriptors */
  5612.  
  5613. /*
  5614.  * Perform the Directory operations:
  5615.  * (1) Initialize the Directory Service and get an OM workspace.
  5616.  * (2) bind a default directory session.
  5617.  * (3) read the telephone number of "name".
  5618.  * (4) end the directory session.
  5619.  */
  5620.  
  5621. CHECK_DS_ALL((OM_object)  !(workspace=ds_initialize()));
  5622.  
  5623. OM_workspace is a type definition in the xom.h header file defined as a pointer 
  5624. to void. A void pointer is a generic pointer that can point to any data type. 
  5625. The variable workspace is declared as data type OM_workspace. The return value 
  5626. is assigned to the variable workspace and the CHECK_DS_CALL macro determines if 
  5627. the call is successful. CHECK_DS_CALL is an error handling macro that is 
  5628. defined in example.h. 
  5629.  
  5630. The ds_initialize call returns a handle to a workspace in which OM objects can 
  5631. be created and manipulated. Only objects created in this workspace can be used 
  5632. as parameters to other directory interface functions. The ds_initialize call 
  5633. returns NULL if it fails. 
  5634.  
  5635.  
  5636. ΓòÉΓòÉΓòÉ 8.1.2. The ds_version Function Call ΓòÉΓòÉΓòÉ
  5637.  
  5638. The ds_version call negotiates features of the directory interface. These 
  5639. features are collected into packages that define the scope of the service. 
  5640. Packages define such things as object identifiers for directory and OM classes 
  5641. and OM attributes, enumerated types, structures, and OM object constants. 
  5642.  
  5643. XDS API defines the following packages in separate header files as part of the 
  5644. XDS API software product: 
  5645.  
  5646.    o  Directory Service Package - Contains the OM classes and OM attributes 
  5647.       used to interact with the Directory Service. This package is contained in 
  5648.       the xds.h header file. 
  5649.  
  5650.    o  Basic Directory Contents Package - Contains the OM classes and OM 
  5651.       attributes that represent values of selected attributes and selected 
  5652.       objects defined in the X.500 standard. This package is contained in the 
  5653.       xdsbdcp.h header file. 
  5654.  
  5655.  The ds_version call is not required when using XDS/XOM to access the CDS 
  5656.  namespace. 
  5657.  
  5658.  
  5659. ΓòÉΓòÉΓòÉ 8.1.3. The ds_shutdown Function Call ΓòÉΓòÉΓòÉ
  5660.  
  5661. The ds_shutdown call deletes the workspace established by ds_initialize and 
  5662. enables the Directory Service to release resources. No other directory 
  5663. functions that reference that workspace can be called after this function. 
  5664.  
  5665. The following code fragment from example.h demonstrates how the application 
  5666. closes the directory workspace by performing a ds_shutdown. 
  5667.  
  5668. CHECK_DS_CALL(ds_shutdown(workspace));
  5669.  
  5670.  
  5671. ΓòÉΓòÉΓòÉ 8.2. Directory Connection Management Functions ΓòÉΓòÉΓòÉ
  5672.  
  5673. The following sections describe the XDS functions that initiate, manage, and 
  5674. end connections with the Directory Service: 
  5675.  
  5676.    o  A Directory Session 
  5677.    o  The ds_bind Function Call 
  5678.    o  The ds_unbind Function Call 
  5679.    o  Automatic Connection Management 
  5680.  
  5681.  
  5682. ΓòÉΓòÉΓòÉ 8.2.1. A Directory Session ΓòÉΓòÉΓòÉ
  5683.  
  5684. A directory session is intended to identify the DSA to which a directory 
  5685. operation is sent. When using XDS/XOM over CDS, it is used to bind to the CDS 
  5686. namespace. 
  5687.  
  5688. An application program can request a session with specific OM attributes 
  5689. tailored for the program's requirements. The application passes an instance of 
  5690. OM class DC_C_SESSION with the appropriate OM attributes, or it uses the 
  5691. default parameters by passing the constant DS_DEFAULT_SESSION as a parameter to 
  5692. the ds_bind function call. DS_DEFAULT_SESSION is sufficient when using XDS/XOM 
  5693. over CDS. 
  5694.  
  5695.  
  5696. ΓòÉΓòÉΓòÉ 8.2.2. The ds_bind Function Call ΓòÉΓòÉΓòÉ
  5697.  
  5698. The ds_bind call establishes a session with the CDS namespace. 
  5699.  
  5700. When a ds_bind call completes successfully, the directory returns a pointer to 
  5701. an OM private object of OM class DC_C_SESSION. This parameter is then passed as 
  5702. the first parameter to most interface function calls until a ds_unbind is 
  5703. called to end the directory session. 
  5704.  
  5705. XDS API supports multiple concurrent sessions so that an application can 
  5706. interact with the Directory Service using several identities, and interact 
  5707. directly and concurrently with different parts of the CDS namespace. 
  5708.  
  5709. The following code fragment from example.c shows how an application binds to 
  5710. the CDS namespace using the default session: 
  5711.  
  5712. CHECK_DS_CALL(ds_bind(DS_DEFAULT_SESSION, workspace, &session));
  5713.  
  5714.  
  5715. ΓòÉΓòÉΓòÉ 8.2.3. The ds_unbind Function Call ΓòÉΓòÉΓòÉ
  5716.  
  5717. The ds_unbind call ends a directory session and makes the session parameter 
  5718. unavailable for use with other interface functions. However, the unbound 
  5719. session can be modified by OM functions and used again as a parameter to 
  5720. ds_bind. When the session parameter is no longer needed, it should be deleted 
  5721. using OM functions such as om_delete. 
  5722.  
  5723. The following code fragment from example.c shows how the application closes the 
  5724. connection to the CDS namespace using ds_unbind: 
  5725.  
  5726. /* Close the connection to the CDS namespace server.  */
  5727.  
  5728. CHECK_DS_CALL(ds_unbind(session));
  5729.  
  5730.  
  5731. ΓòÉΓòÉΓòÉ 8.2.4. Automatic Connection Management ΓòÉΓòÉΓòÉ
  5732.  
  5733. The XDS implementation does not support automatic connection management. A CDS 
  5734. connection is established when ds_bind is called and released when ds_unbind is 
  5735. called. 
  5736.  
  5737.  
  5738. ΓòÉΓòÉΓòÉ 8.3. XDS Interface Class Definitions ΓòÉΓòÉΓòÉ
  5739.  
  5740. The XDS Interface Class Definitions are described in detail in XDS Class 
  5741. Definitions. The OM attribute types, syntax, and values and inheritance 
  5742. properties are described for each OM class. 
  5743.  
  5744. A good way to begin to understand how the OM class hierarchy is structured and 
  5745. the relationship between OM classes and OM attributes to the service provided 
  5746. by the Directory Service Package is to look up one of the OM classes listed in 
  5747. XDS Class Definitions. 
  5748.  
  5749.  
  5750. ΓòÉΓòÉΓòÉ 8.3.1. Example:  The DS_C_ATTRIBUTE_LIST Class ΓòÉΓòÉΓòÉ
  5751.  
  5752. For example, DS_C_ATTRIBUTE_LIST inherits the OM attributes from its superclass 
  5753. OM_C_OBJECT, as do all OM classes. OM_C_OBJECT, as defined in XOM Programming, 
  5754. has one OM attribute, OM_CLASS, which has the value of an object identifier 
  5755. string that identifies the numeric representation of the object's OM class. 
  5756. DS_C_ATTRIBUTE_LIST also has one OM attribute. 
  5757.  
  5758. The purpose of DS_C_ATTRIBUTE_LIST is to define a list of attributes for an 
  5759. object. It has the DS_ATTRIBUTES OM attribute. The DS_ATTRIBUTE OM attribute 
  5760. has a value of a pointer to the DS_C_ATTRIBUTE OM object. 
  5761.  
  5762.  
  5763. ΓòÉΓòÉΓòÉ 8.3.2. The DS_C_CONTEXT Parameter ΓòÉΓòÉΓòÉ
  5764.  
  5765. The OM class DS_C_CONTEXT is the second parameter to every Directory Service 
  5766. request. DS_C_CONTEXT defines the characteristics of the Directory Service 
  5767. interaction that are specific to a particular Directory Service operation. 
  5768. These characteristics are divided into three categories of OM attributes: 
  5769.  
  5770.    o  Common Parameters - Affect the processing of each Directory Service 
  5771.       operation. 
  5772.  
  5773.    o  Service Controls - Indicate how the Directory Service should handle 
  5774.       requests. Included in this category are decisions about whether or not 
  5775.       chaining is permitted, the priority of requests, the scope of referral 
  5776.       (to DSAs within a country or within a DMD), and the maximum number of 
  5777.       objects about which a function should return information. 
  5778.  
  5779.    o  Local Controls -  Include asynchronous support and automatic continuation 
  5780.       (XDS does not currently support asynchronous operations from within the 
  5781.       same thread). Applications requiring asynchronous use of the XDS/XOM API 
  5782.       should use threads as defined in XDS Programming. 
  5783.  
  5784.  Note:  Service Controls and Local Controls are not supported for XDS/XOM over 
  5785.         CDS. 
  5786.  
  5787.  
  5788. ΓòÉΓòÉΓòÉ 8.4. Directory Class Definitions ΓòÉΓòÉΓòÉ
  5789.  
  5790. The X.500 standards define a number of attribute types and classes. These 
  5791. definitions allow the creation and maintenance of directory entries for a 
  5792. number of common objects so that the representation of all such objects is the 
  5793. same throughout the directory. The Basic Directory Contents Package contains OM 
  5794. classes and OM attributes that model the X.500 attribute types and classes. 
  5795.  
  5796. The X.500 object classes and attributes are defined in the following documents 
  5797. published by CCITT. These are the objects and the associated attributes that 
  5798. will be the targets of Directory Service operations in your application 
  5799. programs: 
  5800.  
  5801.    o  The Directory: Selected Attributes Types (Recommendation X.520) 
  5802.    o  The Directory: Selected Object Classes (Recommendation X.521) 
  5803.  
  5804.  "Representation of Values for Selected Attribute Types" describes the OM 
  5805.  classes, OM attributes, and their object identifiers that model the X.500 
  5806.  objects and attributes. See The Basic Directory Contents Package for more 
  5807.  tables with the same type of information. 
  5808.  
  5809.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5810.   Γöé Table 7. Representation of Values for Selected Attribute Types             Γöé
  5811.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5812.   Γöé ATTRIBUTE TYPE   Γöé OM VALUE SYNTAX       Γöé  VALUE  Γöé  MULTI  Γöé   MATCHING   Γöé
  5813.   Γöé          Γöé               Γöé  LENGTH Γöé  VALUED Γöé    RULES    Γöé
  5814.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5815.   Γöé DS_A_ALIASED    Γöé Object(DS_C_NAME)      Γöé  None  Γöé   No  Γöé     E     Γöé
  5816.   Γöé _OBJECT_NAME    Γöé               Γöé     Γöé     Γöé          Γöé
  5817.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5818.   Γöé DS_A_BUSINESS   Γöé String(OM_S_TELETEX     Γöé  1-128  Γöé  Yes  Γöé     E,S    Γöé
  5819.   Γöé _CATEGORY     Γöé _STRING)           Γöé     Γöé     Γöé          Γöé
  5820.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5821.   Γöé DS_A_COMMON_NAME  Γöé String(OM_S_TELETEX     Γöé  1-64  Γöé  Yes  Γöé     E,S    Γöé
  5822.   Γöé          Γöé _STRING)           Γöé     Γöé     Γöé          Γöé
  5823.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5824.   Γöé DS_A_COUNTRY_NAME Γöé String(OM_S         Γöé   2   Γöé   No  Γöé     E     Γöé
  5825.   Γöé          Γöé _PRINTABLE_STRING)(**)    Γöé     Γöé     Γöé          Γöé
  5826.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5827.   Γöé DS_A_DESCRIPTION  Γöé String(OM_S_TELETEX     Γöé  1-1024 Γöé  Yes  Γöé     E,S    Γöé
  5828.   Γöé          Γöé _STRING)           Γöé     Γöé     Γöé          Γöé
  5829.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5830.  
  5831.  The tables in The Basic Directory Contents Package contain similar categories 
  5832.  of information as do similar tables for the attributes defined in the 
  5833.  Directory Service Package. These information categories include: 
  5834.  
  5835.    o  OM Value Syntax 
  5836.    o  Value Length 
  5837.    o  Multivalued 
  5838.    o  Matching Rules 
  5839.  
  5840.  The OM Value Syntax column describes the structure of the values of an OM 
  5841.  attribute. The Value Length column gives the range of lengths permitted for 
  5842.  the string types. The Multivalued column indicates whether the attribute can 
  5843.  have multiple values. 
  5844.  
  5845.  The CCITT standards define matching rules that are used for determining 
  5846.  whether two values are equal, for ordering two values, or for identifying one 
  5847.  value as a substring of another in Directory Service operations. These are 
  5848.  indicated in the Matching Rules column. 
  5849.  
  5850.  Note:  The above elements are used when the cell name is an X.500 style name. 
  5851.         When using XDS/XOM over CDS, none of the checking for value length and 
  5852.         related information is performed. Only attribute types like 
  5853.         DS_A_COUNTRY_NAME used in the cell name should be required from the 
  5854.         Basic Directory Contents Package. 
  5855.  
  5856.  
  5857. ΓòÉΓòÉΓòÉ 8.5. Directory Operation Functions ΓòÉΓòÉΓòÉ
  5858.  
  5859. The X.500 standard defines the operations provided by the directory in a 
  5860. document called the Abstract Service Definition. DCE implements this standard 
  5861. with XDS API functions calls. The XDS API functions allow an application 
  5862. program to interact with the Directory Service. The standard divides these 
  5863. interactions into three general categories - read, search, and modify. 
  5864.  
  5865. The XDS API functions correspond to the Abstract Service functions defined in 
  5866. the X.500 standard, as shown in the following table. 
  5867.  
  5868.    o  Mapping of XDS API Functions to the Abstract Services 
  5869.  
  5870.            XDS Function Call        Abstract Service Equivalent 
  5871.            ds_read                  Read 
  5872.            ds_compare               Compare 
  5873.            ds_list                  List 
  5874.            ds_search                Search 
  5875.            ds_add_entry             AddEntry 
  5876.            ds_remove_entry          RemoveEntry 
  5877.            ds_modify_entry          ModifyEntry 
  5878.            ds_modify_rdn            ModifyRDN 
  5879.  
  5880.  Note:  ds_search and ds_modify_rdn are not supported for XDS/XOM over CDS. 
  5881.  
  5882.  
  5883. ΓòÉΓòÉΓòÉ 8.6. Directory Read Operations ΓòÉΓòÉΓòÉ
  5884.  
  5885. Read functions retrieve information from specific named entries in the 
  5886. directory where names are mapped to attributes. This is analogous to looking up 
  5887. some information about a name in the White Pages phone directory. 
  5888.  
  5889. XDS API implements the following read functions: 
  5890.  
  5891.  ds_read          The requester supplies a distinguished name and one or more 
  5892.                   attribute types. The value(s) of requested attributes or just 
  5893.                   the attribute type(s) is returned by the DSA. 
  5894.  
  5895.  ds_compare       The requester gives a distinguished name and an Attribute 
  5896.                   Value Assertion (AVA). If the AVA is TRUE for the named 
  5897.                   entry, a value of TRUE is returned by the DSA. 
  5898.  
  5899.  For example, a typical read operation could request the telephone number of a 
  5900.  particular employee. A read request would submit the distinguished name of the 
  5901.  employee with an indication to return its telephone number: 
  5902.  /C=us/O=ibm/OU=austin/Peter. 
  5903.  
  5904.  
  5905. ΓòÉΓòÉΓòÉ 8.6.1. Reading an Entry from the Directory ΓòÉΓòÉΓòÉ
  5906.  
  5907. The following sections describe a typical read operation using the ds_read 
  5908. function call. They include a description of tasks directly related to the read 
  5909. operation. They do not include service-related tasks such as initializing the 
  5910. interface, allocating an OM workspace, and binding to the CDS namespace. These 
  5911. tasks are described in XDS Interface Management Functions. The following 
  5912. sections also do not describe the process of extracting information from the 
  5913. workspace using XOM functions. See XOM Programming for a description of how to 
  5914. use XOM functions to access the workspace. 
  5915.  
  5916. A typical read operation involves the following steps: 
  5917.  
  5918.    1. Define the necessary object identifier constants for the OM classes and 
  5919.       OM attributes that will define public objects for input to ds_read using 
  5920.       the OM_EXPORT macro. 
  5921.  
  5922.    2. Declare the variables that will contain the output from the XDS functions 
  5923.       to be used in the application. 
  5924.  
  5925.    3. Build public objects (descriptor lists) for the name parameter to 
  5926.       ds_read. 
  5927.  
  5928.    4. Create a descriptor list for the selection parameter to ds_read that 
  5929.       selects the type and scope of information in your request. 
  5930.  
  5931.    5. Perform the read operation. 
  5932.  
  5933.  These steps are demonstrated in the following code fragments from example.c 
  5934.  (see the \opt\dcelocal\examples\xdsxom directory for a complete program 
  5935.  listing). The program reads the telephone numbers of a given target entry. 
  5936.  
  5937.  
  5938. ΓòÉΓòÉΓòÉ 8.6.2. Step 1:  Export Object Identifiers for Required Directory Classes and Attributes ΓòÉΓòÉΓòÉ
  5939.  
  5940. Most application programs find it convenient to export all the names they use 
  5941. from the same C source module. In the following code fragment from example.c 
  5942. the OM_EXPORT macro allocates memory for the constants that represent the OM 
  5943. object classes and directory attributes required for the read operation: 
  5944.  
  5945. /*  Define necessary Object Identifier constants   */
  5946. OM_EXPORT(DS_A_COUNTRY_NAME)
  5947. OM_EXPORT(DS_A_ORG_NAME)
  5948. OM_EXPORT(DS_A_ORG_UNIT_NAME)
  5949. OM_EXPORT(DSX_TYPELESS_RDN)
  5950. OM_EXPORT(DS_C_AVA)
  5951. OM_EXPORT(DS_C_DS_DN)
  5952. OM_EXPORT(DS_C_DS_RDN)
  5953. OM_EXPORT(DS_C_ENTRY_INFO_SELECTION)
  5954. OM_EXPORT(DS_C_ATTRIBUTE)
  5955. OM_EXPORT(DS_C_ATTRIBUTE_LIST)
  5956. OM_EXPORT(DS_A_TELEPHONE_NUMBER)
  5957.  
  5958. The OM_EXPORT macro performs the following steps: 
  5959.  
  5960.    1. It defines a character array called OMP_D_ concatenated with the 
  5961.       class_name input parameter. 
  5962.  
  5963.    2. It initializes this array to the value of a character string called 
  5964.       OMP_O_ concatenated with the class_name input parameter. This value has 
  5965.       already been defined in a header file. 
  5966.  
  5967.    3. It defines an OM_string data structure as the class_name input parameter. 
  5968.  
  5969.    4. It initializes the OM_string data structure's first component to the 
  5970.       length of the array initialized in Step 2 above and initializes the 
  5971.       second component to a pointer to the value of the array initialized in 
  5972.       Step 2. 
  5973.  
  5974.  
  5975. ΓòÉΓòÉΓòÉ 8.6.3. Step 2:  Declare Local Variables ΓòÉΓòÉΓòÉ
  5976.  
  5977. The local variables session, result, and invoke_id are defined in the following 
  5978. code fragment from example.c 
  5979.  
  5980. int main(void)
  5981. {
  5982.   DS_status             error;             /* return value from DS functions */
  5983.   OM_return_code        return_code;       /* return value from OM functions */
  5984.   OM_workspace          workspace;         /* workspace for objects          */
  5985.   OM_private_object     session;           /* session for directory          */
  5986.   OM_private_object     result;            /* result of read operation       */
  5987.   OM_sint               invoke_id;         /* Invoke-ID of the read operation */
  5988.   OM_value_position     total_num;         /* Number of Attribute Descriptors */
  5989.  
  5990. These data types are defined in a typedef statement in the xom.h header file. 
  5991. The session and result variables are defined as data type OM_private_object 
  5992. because they are returned by ds_bind and ds_read, respectively, to the 
  5993. workspace as private objects. Since asynchronous operations (within the same 
  5994. thread) are not supported, the invoke_id functionality is redundant. The 
  5995. invoke_id parameter must be supplied to the XDS functions as described in the 
  5996. DCE for OS/2 Warp: Application Development Reference, but its return value 
  5997. should be ignored. 
  5998.  
  5999. Values in error and return_code are returned by XOM and XDS functions to 
  6000. indicate whether a call was successful. The workspace variable is defined as 
  6001. OM_workspace and is used when establishing an OM workspace. The total_num 
  6002. variable is defined as OM_value_position to indicate the number of attribute 
  6003. descriptors returned in the public object by om_get based on the inclusion and 
  6004. exclusion parameters specified. 
  6005.  
  6006.  
  6007. ΓòÉΓòÉΓòÉ 8.6.4. Step 3:  Build Public Objects ΓòÉΓòÉΓòÉ
  6008.  
  6009. A ds_read function call can take a public object as an input parameter. A 
  6010. public object is generated by an application program and contains the 
  6011. information required to access a target directory object. This information 
  6012. includes the AVAs and RDNs that make up a distinguished name of an entry in the 
  6013. directory. 
  6014.  
  6015. A public object is created using OM classes and OM attributes. These OM classes 
  6016. and OM attributes model the target object entry in the directory and provide 
  6017. other information required by the Directory Service to access the directory. In 
  6018. this case, the target object entry in the directory is the entry for Peter. 
  6019.  
  6020. Public Objects describes how to create the required public objects for the 
  6021. ds_read function call using macros and data structures defined in the XDS and 
  6022. XOM API header files. 
  6023.  
  6024. The purpose of building the public objects for AVAs and RDNs is to provide the 
  6025. public objects that represent a distinguished name. The distinguished name 
  6026. public object is stored in the array of descriptors called name and provided as 
  6027. an input parameter to the ds_read function call. 
  6028.  
  6029.  
  6030. ΓòÉΓòÉΓòÉ 8.6.5. Step 4:  Create an Entry-Information-Selection Parameter ΓòÉΓòÉΓòÉ
  6031.  
  6032. The distinguished name for Peter is an entry in the directory that the 
  6033. application is designed to access. The selection parameter of the ds_read 
  6034. function call tailors its results to obtain just part of the required entry. 
  6035. Information on all attributes, no attributes, or a specific group of attributes 
  6036. can be chosen. Attribute types are always returned, but the attribute values 
  6037. need not be. 
  6038.  
  6039. The value of the parameter is a public object (descriptor list) that is an 
  6040. instance of OM class DS_C_ENTRY_INFO_SELECTION, as shown in the following code 
  6041. fragment from example.c. 
  6042.  
  6043. /*
  6044.  * Public Object ("Descriptor List") for
  6045.  * Entry-Information-Selection
  6046.  * parameter to ds_read.
  6047.  */
  6048. OM_descriptor selection[] = {
  6049. OM_OID_DESC(OM_CLASS, DS_C_ENTRY_INFO_SELECTION), { DS_ALL_ATTRIBUTES, OM_S_BOOLEAN, { OM_FALSE, NULL } },
  6050. OM_OID_DESC(DS_ATTRIBUTES_SELECTED, DS_A_TELEPHONE_NUMBER),
  6051. { DS_INFO_TYPE,OM_S_ENUMERATION, { DS_TYPES_AND_VALUES,NULL } },
  6052. OM_NULL_DESCRIPTOR
  6053. };
  6054.  
  6055. DS_C_ENTRY_INFO_SELECTION is a subclass of OM_C_OBJECT (this information is 
  6056. supplied in the description of this class in XDS Class Definitions). As such, 
  6057. DS_C_ENTRY_INFO_SELECTION inherits the OM attributes of OM_C_OBJECT. The only 
  6058. OM attribute of OM_C_OBJECT is OM_CLASS. OM_CLASS identifies an object's class, 
  6059. which in this case is DS_C_ENTRY_INFO_SELECTION. DS_C_ENTRY_INFO_SELECTION 
  6060. identifies information to be extracted from a directory entry and has the 
  6061. following OM attributes: 
  6062.  
  6063.    o  OM_C_CLASS (inherited from OM_C_OBJECT) 
  6064.    o  DS_ALL_ATTRIBUTES 
  6065.    o  DS_ATTRIBUTES_SELECTED 
  6066.    o  DS_INFO_TYPE 
  6067.  
  6068.  As part of a ds_read function call, DS_ALL_ATTRIBUTES specifies to the 
  6069.  Directory Service which attributes of a directory entry are relevant to the 
  6070.  application program. It can take the values OM_TRUE or OM_FALSE. These values 
  6071.  are defined to be of syntax OM_S_BOOLEAN. The value OM_TRUE indicates that 
  6072.  information is requested on all attributes in the directory entry. The value 
  6073.  OM_FALSE, used in the preceding sample fragment, indicates that information is 
  6074.  only requested on those attributes that are listed in the OM attribute 
  6075.  DS_ATTRIBUTES_SELECTED. 
  6076.  
  6077.  DS_ATTRIBUTES_SELECTED lists the types of attributes in the entry from which 
  6078.  information is to be extracted. The syntax of the value is specified as 
  6079.  OM_S_OBJECT_IDENTIFIER_STRING. 
  6080.  
  6081.  OM_S_OBJECT_IDENTIFIER_STRING contains an octet string of BER-encoded 
  6082.  integers, which are decimal representations of object identifiers of the types 
  6083.  of attributes in the attribute list. In the preceding code fragment, the 
  6084.  string value is the attribute name DS_A_TELEPHONE_NUMBER because the purpose 
  6085.  of the read call is to read a list of telephone numbers from the directory. 
  6086.  
  6087.  DS_INFO_TYPE identifies what information is to be extracted from each 
  6088.  attribute identified. The syntax of the value is specified as 
  6089.  Enum(DS_Information_Type). DS_INFO_TYPE is an enumerated type that has two 
  6090.  possible values: DS_TYPES_ONLY and DS_TYPES_AND_VALUES. DS_TYPES_ONLY 
  6091.  indicates that only the attribute types of the selected attributes in the 
  6092.  entry are returned by the Directory Service operation. DS_TYPES_AND_VALUES 
  6093.  indicates that both the attribute types and the attribute values of the 
  6094.  selected attributes in the entry are returned. The code fragment from 
  6095.  example.c shown previously defines the value of DS_INFO_TYPE as 
  6096.  DS_TYPES_AND_VALUES because the program wants to get the actual telephone 
  6097.  numbers. 
  6098.  
  6099.  
  6100. ΓòÉΓòÉΓòÉ 8.6.6. Step 5:  Perform the Read Operation ΓòÉΓòÉΓòÉ
  6101.  
  6102. The following code fragment from example.c shows the ds_read function call and 
  6103. the XDS calls that precede it: 
  6104.  
  6105. /*
  6106.  * Perform the Directory operations:
  6107.  * (1) Initialize the Directory Service
  6108.  *     and get an OM workspace.
  6109.  * (2) bind a default directory session.
  6110.  * (3) read the telephone number of "name".
  6111.  * (4) end the directory session.
  6112.  */
  6113.  
  6114. CHECK_DS_CALL((OM_object) !(workspace = ds_initialize()));
  6115.  
  6116. CHECK_DS_CALL(ds_version(bdcp_package, workspace));
  6117.  
  6118. CHECK_DS_CALL(ds_bind(DS_DEFAULT_SESSION, workspace,
  6119.                       &session));
  6120.  
  6121. CHECK_DS_CALL(ds_read (session, DS_DEFAULT_CONTEXT,
  6122.                             name, selection, &result,  &invoke_id));
  6123.  
  6124. CHECK_DS_CALL is an error-checking macro defined in the example.h header file 
  6125. that is included by example.c. The ds_read call returns a return code of type 
  6126. DS_status to indicate whether or not the read operation completed successfully. 
  6127. If the call was successful, ds_read returns the value DS_SUCCESS. If the call 
  6128. fails, it returns an error code. CHECK_DS_CALL interprets this return value and 
  6129. returns successfully to the program or branches to an error-handling routine. 
  6130.  
  6131. The session input parameter is a private object generated by ds_bind prior to 
  6132. the ds_read call, as shown in the preceding code fragment. DS_DEFAULT_CONTEXT 
  6133. describes the characteristics of a Directory Service interaction. Most XDS API 
  6134. function calls require these two input parameters because they define the 
  6135. operating parameters of a session with the CDS namespace. Sessions are 
  6136. described in A Directory Session; contexts are described in The DS_C_CONTEXT 
  6137. Parameter. 
  6138.  
  6139. The result of a Directory Service request is returned in a private object (in 
  6140. this case, result) that is appropriate to the type of operation. The result of 
  6141. the operation is returned in a single OM object. The components of the result 
  6142. are represented by OM attributes in the operations result object: 
  6143.  
  6144.  DS_C_COMPARE_RESULT         Returned by ds_compare 
  6145.  
  6146.  DS_C_LIST_RESULT            Returned by ds_list 
  6147.  
  6148.  DS_C_READ_RESULT            Returned by ds_read 
  6149.  
  6150.  The OM class returned by ds_read is DS_C_READ_RESULT. The OM class returned by 
  6151.  the ds_compare call is DS_C_COMPARE_RESULT, and so on. See the DCE for OS/2 
  6152.  Warp:Application Development Reference for a description of the OM classes 
  6153.  associated with a particular function call. See XDS Class Definitions for full 
  6154.  descriptions of the OM attributes, syntaxes, and values associated with these 
  6155.  OM classes. 
  6156.  
  6157.  The superclasses, subclasses, and OM attributes for DS_C_READ_RESULT are shown 
  6158.  in "Output from ds_read: DS_C_READ_RESULT". 
  6159.  
  6160.  
  6161.   Output from ds_read: DS_C_READ_RESULT
  6162.  
  6163.  The result value is returned to the workspace in private 
  6164.  implementation-specific format. As such, it cannot be read directly by an 
  6165.  application program, but requires a series of om_get function calls to extract 
  6166.  the requested information from it. The following code fragment from example.c 
  6167.  shows how a series of om_get calls extracts the list of telephone numbers 
  6168.  associated with the distinguished name for Peter. Using the OM Function Calls 
  6169.  describes this extraction process in detail. 
  6170.  
  6171.   /*
  6172.    * extract the telephone number(s) of "name" from the result
  6173.    *
  6174.    * There are 4 stages:
  6175.    * (1) get the Entry-Information from the Read-Result.
  6176.    * (2) get the Attributes from the Entry-Information.
  6177.    * (3) get the list of phone numbers.
  6178.    * (4) scan the list and print each number.
  6179.    */
  6180.  
  6181.   CHECK_OM_CALL(   om_get()(result,
  6182.                      OM_EXCLUDE_ALL_BUT_THESE_TYPES
  6183.                    + OM_EXCLUDE_SUBOBJECTS,
  6184.                      entry_list, OM_FALSE, 0, 0, &entry,
  6185.                      &total_num));
  6186.  
  6187.   CHECK_OM_CALL(   om_get()(entry->value.object.object,
  6188.                      OM_EXCLUDE_ALL_BUT_THESE_TYPES
  6189.                    + OM_EXCLUDE_SUBOBJECTS,
  6190.                      attributes_list, OM_FALSE, 0, 0, &attributes,
  6191.                      &total_num));
  6192.  
  6193.   CHECK_OM_CALL(   om_get()(attributes->value.object.object,
  6194.                      OM_EXCLUDE_ALL_BUT_THESE_TYPES
  6195.                    + OM_EXCLUDE_SUBOBJECTS,
  6196.                      telephone_list, OM_FALSE, 0, 0, &telephones,
  6197.                      &total_num));
  6198.  
  6199.  
  6200. ΓòÉΓòÉΓòÉ 8.7. Directory Search Operations ΓòÉΓòÉΓòÉ
  6201.  
  6202. Search functions can be used to browse through the CDS namespace. For example, 
  6203. a search request could supply the distinguished name of an entry and request a 
  6204. list of the distinguished names of the children of that entry. 
  6205.  
  6206. XDS over CDS API implements the ds_list search operation. With ds_list, the 
  6207. requestor supplies a distinguished name. The Directory Service returns a list 
  6208. of the immediate subordinates of the named entry. 
  6209.  
  6210.  
  6211. ΓòÉΓòÉΓòÉ 8.8. Directory Modify Operations ΓòÉΓòÉΓòÉ
  6212.  
  6213. Modify functions alter information in the directory. For example, if an 
  6214. employee changed telephone numbers, a typical modify request would modify the 
  6215. telephone number attribute in the person's directory entry to reflect the 
  6216. change. 
  6217.  
  6218. XDS API implements the following modify functions: 
  6219.  
  6220.  ds_modify_entry         The requestor gives a distinguished name and a list of 
  6221.                          modifications to the named entry. The XDS/XOM API 
  6222.                          carries out the specified changes if the user 
  6223.                          requesting the change has proper access rights. 
  6224.  
  6225.  ds_add_entry            The requestor gives a distinguished name and values 
  6226.                          for a new entry. The entry is added as a leaf node in 
  6227.                          the DIT if the user requesting the change has proper 
  6228.                          access rights. If the leaf entry already exists, it 
  6229.                          fails and the ds_modify_entry must be used. 
  6230.  
  6231.  ds_remove_entry         The requestor gives a distinguished name. The entry 
  6232.                          with that name is removed if the user requesting the 
  6233.                          change has proper access rights. 
  6234.  
  6235.  Note:  ds_add_entry and ds_remove entry only apply to leaf entries. They are 
  6236.         not intended to provide a general facility for building and 
  6237.         manipulating the DIT. Access rights are defined for the session by CDS. 
  6238.         The user needs the same access rights as if accessing CDS through 
  6239.         dcecp. 
  6240.  
  6241.  
  6242. ΓòÉΓòÉΓòÉ 8.8.1. Modifying Directory Entries ΓòÉΓòÉΓòÉ
  6243.  
  6244. This section describes a modification and subsequent listing of the DIT using 
  6245. the ds_add_entry, ds_list, and ds_remove_entry function calls. It includes a 
  6246. description of tasks directly related to these operations and does not include 
  6247. service-related tasks. It does not include a ds_modify_entry function call. 
  6248.  
  6249. A typical operation to add, remove, or list an entry uses the following steps: 
  6250.  
  6251.    1. Define the necessary object identifier constants for the OM classes and 
  6252.       OM attributes that define public objects for input to the function calls 
  6253.       by using the OM_EXPORT macro. 
  6254.  
  6255.    2. Declare the variables that contain the output from the XDS functions you 
  6256.       will use in your application. 
  6257.  
  6258.    3. Build public objects (descriptor lists) for the name parameters to the 
  6259.       function calls. 
  6260.  
  6261.    4. Create descriptor lists for the attributes to be added, removed, or 
  6262.       listed. 
  6263.  
  6264.    5. Perform the operations. 
  6265.  
  6266.  These steps are demonstrated in the following code fragments. The program adds 
  6267.  two entries to the directory, then a list operation is performed on their 
  6268.  superior entry, and finally the two entries are removed from the directory. 
  6269.  The directory tree shown in "A Sample Directory Tree" is used in the program. 
  6270.  
  6271.  
  6272.   A Sample Directory Tree
  6273.  
  6274.  
  6275. ΓòÉΓòÉΓòÉ 8.8.2. Step 1:  Export Object Identifiers for Required Directory Classes and Attributes ΓòÉΓòÉΓòÉ
  6276.  
  6277. In the following code fragment, the OM_EXPORT macro allocates memory for the 
  6278. constants that represent the object classes and attributes required for the 
  6279. add, list, and remove operations: 
  6280.  
  6281. /* The application has to export the object identifiers    */
  6282. /* it requires.     */
  6283.  
  6284. OM_EXPORT (DS_C_AVA)
  6285. OM_EXPORT (DS_C_DS_RDN)
  6286. OM_EXPORT (DS_C_DS_DN)
  6287. OM_EXPORT (DS_C_ENTRY_INFO_SELECTION)
  6288. OM_EXPORT (DS_C_ATTRIBUTE)
  6289. OM_EXPORT (DS_C_ATTRIBUTE_LIST)
  6290. OM_EXPORT (DSX_TYPELESS_RDN)
  6291.  
  6292. OM_EXPORT (DS_A_COUNTRY_NAME)
  6293. OM_EXPORT (DS_A_ORG_NAME)
  6294. OM_EXPORT (DS_A_ORG_UNIT_NAME)
  6295. OM_EXPORT (DS_A_COMMON_NAME)
  6296. OM_EXPORT (DS_A_OBJECT_CLASS)
  6297. OM_EXPORT (DS_A_TELEPHONE_NUMBER)
  6298. OM_EXPORT (DS_A_USER_PASSWORD)
  6299. OM_EXPORT (DS_A_SURNAME)
  6300.  
  6301. OM_EXPORT (DS_O_TOP)
  6302. OM_EXPORT (DS_O_PERSON)
  6303. OM_EXPORT (DS_O_ORG_PERSON)
  6304.  
  6305.  
  6306. ΓòÉΓòÉΓòÉ 8.8.3. Step 2:  Declare Local Variables ΓòÉΓòÉΓòÉ
  6307.  
  6308. The local variables bound_session, result, and invoke_id are defined in the 
  6309. following sample code fragment: 
  6310.  
  6311. OM_private_object bound_session;    /* Holds the Session object                */
  6312.                                     /* which is returned by                       */
  6313.                                     /* ds_bind.                                */
  6314. OM_private_object result;           /* Holds the list result                   */
  6315.                                     /* object.                                 */
  6316. OM_sint              invoke_id;     /* Integer for the invoke  id              */
  6317.                                     /* returned by ds_list.                  */
  6318.                                     /* This parameter must be                  */
  6319.                                     /* present even though it is               */
  6320.                                     /* ignored.                                */
  6321.  
  6322. These data types are defined in typedef statements in the xom.h header file. 
  6323. The bound_session and result variables are defined as data type 
  6324. OM_private_object because they are returned by ds_bind and ds_list operations 
  6325. to the workspace as private objects. Since asynchronous operations (within the 
  6326. same thread) are not supported,  the invoke_id parameter functionality is 
  6327. redundant. The invoke_id parameter must be supplied to the XDS functions as 
  6328. described in the DCE for OS/2 Warp: Application Development Reference, but its 
  6329. return value should be ignored. 
  6330.  
  6331.  
  6332. ΓòÉΓòÉΓòÉ 8.8.4. Step 3:  Build Public Objects ΓòÉΓòÉΓòÉ
  6333.  
  6334. The public objects required by the ds_add_entry, ds_list, and ds_remove_entry 
  6335. operations are defined in the following code fragment: 
  6336.  
  6337. /* Build up a descriptor list for the distinguished names:              */
  6338. /*     C=us/O=ibm/OU=austin/temp                                        */
  6339. /*     C=us/O=ibm/OU=austin/temp/Brendan                                */
  6340. /*     C=us/O=ibm/OU=austin/temp/Sinead                                 */
  6341.  
  6342. static OM_descriptor    countryName[] = {
  6343.     OM_OID_DESC(OM_CLASS, DS_C_AVA),
  6344.     OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_COUNTRY_NAME),
  6345.     {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("us")},
  6346.     OM_NULL_DESCRIPTOR
  6347. };
  6348. static OM_descriptor    orgName[] = {
  6349.     OM_OID_DESC(OM_CLASS, DS_C_AVA),
  6350.     OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_ORG_NAME),
  6351.     {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("ibm")},
  6352.     OM_NULL_DESCRIPTOR
  6353. };
  6354. static OM_descriptor    orgUnitName[] = {
  6355.     OM_OID_DESC(OM_CLASS, DS_C_AVA),
  6356.     OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_ORG_UNIT_NAME),
  6357.     {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("austin")},
  6358.     OM_NULL_DESCRIPTOR
  6359. };
  6360. static OM_descriptor    dirName[] = {
  6361.     OM_OID_DESC(OM_CLASS, DS_C_AVA),
  6362.     OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_TYPELESS_RDN),
  6363.     {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING, OM_STRING("temp")},
  6364.     OM_NULL_DESCRIPTOR
  6365. };
  6366. static OM_descriptor    commonName[] = {
  6367.     OM_OID_DESC(OM_CLASS, DS_C_AVA),
  6368.     OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_TYPELESS_RDN),
  6369.     {DS_ATTRIBUTE_VALUES, OM_S_TELETEX_STRING, OM_STRING("Brendan")},
  6370.     OM_NULL_DESCRIPTOR
  6371. };
  6372. static OM_descriptor    commonName2[] = {
  6373.     OM_OID_DESC(OM_CLASS, DS_C_AVA),
  6374.     OM_OID_DESC(DS_ATTRIBUTE_TYPE, DSX_TYPELESS_RDN),
  6375.     {DS_ATTRIBUTE_VALUES, OM_S_TELETEX_STRING, OM_STRING("Sinead")},
  6376.     OM_NULL_DESCRIPTOR
  6377. };
  6378. static OM_descriptor    rdn1[] = {
  6379.     OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  6380.     {DS_AVAS, OM_S_OBJECT, {0, countryName}},
  6381.     OM_NULL_DESCRIPTOR
  6382. };
  6383. static OM_descriptor    rdn2[] = {
  6384.     OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  6385.     {DS_AVAS, OM_S_OBJECT, {0, orgName}},
  6386.     OM_NULL_DESCRIPTOR
  6387. };
  6388. static OM_descriptor    rdn3[] = {
  6389.     OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  6390.     {DS_AVAS, OM_S_OBJECT, {0, orgUnitName}},
  6391.     OM_NULL_DESCRIPTOR
  6392. };
  6393. static OM_descriptor    rdn4[] = {
  6394.     OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  6395.     {DS_AVAS, OM_S_OBJECT, {0, dirName}},
  6396.     OM_NULL_DESCRIPTOR
  6397. };
  6398. static OM_descriptor    rdn5[] = {
  6399.     OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  6400.     {DS_AVAS, OM_S_OBJECT, {0, commonName}},
  6401.     OM_NULL_DESCRIPTOR
  6402. };
  6403. static OM_descriptor    rdn6[] = {
  6404.     OM_OID_DESC(OM_CLASS, DS_C_DS_RDN),
  6405.     {DS_AVAS, OM_S_OBJECT, {0, commonName2}},
  6406.     OM_NULL_DESCRIPTOR
  6407. };
  6408. static OM_descriptor name1[] = {
  6409.     OM_OID_DESC(OM_CLASS,DS_C_DS_DN),
  6410.     {DS_RDNS,OM_S_OBJECT,{0,rdn1}},
  6411.     {DS_RDNS,OM_S_OBJECT,{0,rdn2}},
  6412.     {DS_RDNS,OM_S_OBJECT,{0,rdn3}},
  6413.     {DS_RDNS,OM_S_OBJECT,{0,rdn4}},
  6414.     OM_NULL_DESCRIPTOR
  6415. };
  6416. static OM_descriptor name2[] = {
  6417.     OM_OID_DESC(OM_CLASS,DS_C_DS_DN),
  6418.     {DS_RDNS,OM_S_OBJECT,{0,rdn1}},
  6419.     {DS_RDNS,OM_S_OBJECT,{0,rdn2}},
  6420.     {DS_RDNS,OM_S_OBJECT,{0,rdn3}},
  6421.     {DS_RDNS,OM_S_OBJECT,{0,rdn4}},
  6422.     {DS_RDNS,OM_S_OBJECT,{0,rdn5}},
  6423.     OM_NULL_DESCRIPTOR
  6424. };
  6425. static OM_descriptor name3[] = {
  6426.     OM_OID_DESC(OM_CLASS,DS_C_DS_DN),
  6427.     {DS_RDNS,OM_S_OBJECT,{0,rdn1}},
  6428.     {DS_RDNS,OM_S_OBJECT,{0,rdn2}},
  6429.     {DS_RDNS,OM_S_OBJECT,{0,rdn3}},
  6430.     {DS_RDNS,OM_S_OBJECT,{0,rdn4}},
  6431.     {DS_RDNS,OM_S_OBJECT,{0,rdn6}},
  6432.     OM_NULL_DESCRIPTOR
  6433. };
  6434.  
  6435.  
  6436. ΓòÉΓòÉΓòÉ 8.8.5. Step 4:  Create Descriptor Lists for Attributes ΓòÉΓòÉΓòÉ
  6437.  
  6438. The following code fragments show how the attribute lists are created for the 
  6439. attributes to be added to the directory. 
  6440.  
  6441. First, initialize the public object object_class to contain the representation 
  6442. of the classes in the CDS object that are common to both Organizational Person 
  6443. entries, Top, Person, and Organizational Person: 
  6444.  
  6445. /* Build up an array of object identifiers for the     */
  6446. /* attributes to be added to the directory.            */
  6447.  
  6448. static OM_descriptor    object_class[] = {
  6449.  OM_OID_DESC(OM_CLASS, DS_C_ATTRIBUTE),
  6450.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_OBJECT_CLASS),
  6451.  OM_OID_DESC(DS_ATTRIBUTE_VALUES, DS_O_TOP),
  6452.  OM_OID_DESC(DS_ATTRIBUTE_VALUES, DS_O_PERSON),
  6453.  OM_OID_DESC(DS_ATTRIBUTE_VALUES, DS_O_ORG_PERSON),
  6454.  OM_NULL_DESCRIPTOR
  6455. };
  6456.  
  6457. Next, initialize the public objects that represent the attributes to be added: 
  6458. surname and telephone for the distinguished name of Brendan, and surname2 and 
  6459. password for the distinguished name of Sinead: 
  6460.  
  6461. static OM_descriptor    telephone[] = {
  6462.  OM_OID_DESC(OM_CLASS, DS_C_ATTRIBUTE),
  6463.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_TELEPHONE_NUMBER),
  6464.  {DS_ATTRIBUTE_VALUES, OM_S_PRINTABLE_STRING,  OM_STRING("555-5555")},
  6465.  OM_NULL_DESCRIPTOR
  6466. };
  6467.  
  6468. static OM_descriptor    surname[] = {
  6469.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  6470.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_SURNAME),
  6471.  {DS_ATTRIBUTE_VALUES, OM_S_TELETEX_STRING, OM_STRING("Moloney")},
  6472.  OM_NULL_DESCRIPTOR
  6473. };
  6474.  
  6475. static OM_descriptor    surname2[] = {
  6476.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  6477.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_SURNAME),
  6478.  {DS_ATTRIBUTE_VALUES, OM_S_TELETEX_STRING,  OM_STRING("Murphy")},
  6479.  OM_NULL_DESCRIPTOR
  6480. };
  6481.  
  6482. static OM_descriptor    password[] = {
  6483.  OM_OID_DESC(OM_CLASS, DS_C_AVA),
  6484.  OM_OID_DESC(DS_ATTRIBUTE_TYPE, DS_A_USER_PASSWORD),
  6485.  {DS_ATTRIBUTE_VALUES, OM_S_OCTET_STRING, OM_STRING("secret")},
  6486.  OM_NULL_SCRIPTOR
  6487. };
  6488.  
  6489. Finally, initialize the public objects that represent the list of attributes to 
  6490. be added to the directory:  attr_list1 for the distinguished name Brendan, and 
  6491. attr_list2 for the distinguished name Sinead: 
  6492.  
  6493. static OM_descriptor    attr_list1[] = {
  6494.  OM_OID_DESC(OM_CLASS, DS_C_ATTRIBUTE_LIST),
  6495.  {DS_ATTRIBUTES, OM_S_OBJECT, {0, object_class} },
  6496.  {DS_ATTRIBUTES, OM_S_OBJECT, {0, surname} },
  6497.  {DS_ATTRIBUTES, OM_S_OBJECT, {0, telephone} },
  6498.  OM_NULL_DESCRIPTOR
  6499. };
  6500.  
  6501. static OM_descriptor    attr_list2[] = {
  6502.  OM_OID_DESC(OM_CLASS, DS_C_ATTRIBUTE_LIST),
  6503.  {DS_ATTRIBUTES, OM_S_OBJECT, {0,  object_class} },
  6504.  {DS_ATTRIBUTES, OM_S_OBJECT, {0,  surname2} },
  6505.  {DS_ATTRIBUTES, OM_S_OBJECT, {0,  password} },
  6506.  OM_NULL_DESCRIPTOR
  6507. };
  6508.  
  6509. The attr_list1 variable contains the public objects surname and telephone, the 
  6510. C representations of the attributes of the distinguished name 
  6511. /C=us/O=ibm/OU=austin/temp/Brendan that are added to the directory. The 
  6512. attr_list2 variable contains the public objects surname2 and password, the C 
  6513. representations of the attributes of the distinguished name 
  6514. /C=us/O=ibm/OU=austin/temp/Sinead. 
  6515.  
  6516.  
  6517. ΓòÉΓòÉΓòÉ 8.8.6. Step 5:  Perform the Operations ΓòÉΓòÉΓòÉ
  6518.  
  6519. The following code fragments show the ds_add_entry, ds_list, and the 
  6520. ds_remove_entry calls. 
  6521.  
  6522. First, the two ds_add_entry function calls add the attribute lists contained in 
  6523. attr_list1 and attr_list2 to the distinguished names represented by brendan and 
  6524. sinead, respectively. 
  6525.  
  6526. /* Add two entries to the CDS server.         */
  6527.  
  6528. if (ds_add_entry(bound_session, DS_DEFAULT_CONTEXT,
  6529.    name2, attr_list1,
  6530.    &invoke_id) != DS_SUCCESS)
  6531.    printf("ds_add_entry() error\n");
  6532.  
  6533. if (ds_add_entry(bound_session, DS_DEFAULT_CONTEXT,
  6534.    name3, attr_list2,
  6535.    &invoke_id) != DS_SUCCESS)
  6536.    printf("ds_add_entry() error\n");
  6537.  
  6538. Next, list all the subordinates of the object referenced by the distinguished 
  6539. name /C=us/O=ibm/OU=austin/temp. 
  6540.  
  6541. if (ds_list(bound_session, DS_DEFAULT_CONTEXT, name1,
  6542.    &result, &invoke_id) != DS_SUCCESS)
  6543.    printf("ds_list() error\n");
  6544.  
  6545. The ds_list call returns the result in the private object result to the 
  6546. workspace. The components of result are represented by OM attributes in the OM 
  6547. class DS_C_LIST_RESULT and can only be read by a series of om_get calls. 
  6548.  
  6549. Finally, remove the two entries from the directory. 
  6550.  
  6551. if (ds_remove_entry(bound_session, DS_DEFAULT_CONTEXT,
  6552.      name2, &invoke_id) != DS_SUCCESS)
  6553.      printf("ds_remove_entry() error\n");
  6554.  
  6555. if (ds_remove_entry(bound_session, DS_DEFAULT_CONTEXT,
  6556.      name3, &invoke_id) != DS_SUCCESS)
  6557.      printf("ds_remove_entry() error\n");
  6558.  
  6559.  
  6560. ΓòÉΓòÉΓòÉ 8.9. Return Codes ΓòÉΓòÉΓòÉ
  6561.  
  6562. XDS API function calls return a value of type DS_status, the exception being 
  6563. ds_initialize, which returns a value of type OM_workspace. If the function is 
  6564. successful, then DS_status returns a value of DS_SUCCESS. If the function does 
  6565. not complete successfully, then DS_status takes either the error constant 
  6566. DS_NO_WORKSPACE or one of the private error objects described in XDS Class 
  6567. Definitions. 
  6568.  
  6569.  
  6570. ΓòÉΓòÉΓòÉ 9. Using Threads with the XDS/XOM API ΓòÉΓòÉΓòÉ
  6571.  
  6572. Some programs work well when they are structured as multiple flows of control. 
  6573. Other programs might show better performance when they are multithreaded 
  6574. allowing the multiple threads to be mapped to multiple processors when they are 
  6575. available. 
  6576.  
  6577. XDS/XOM application programs can contain multiple threads of control. For 
  6578. example, an XDS/XOM application might need to query several CDS servers. This 
  6579. can be achieved more efficiently by using separate threads simultaneously to 
  6580. query the different servers. 
  6581.  
  6582. XDS/XOM supports multithreaded applications. Writing multithreaded applications 
  6583. over XDS/XOM imposes new requirements on programmers; they must manage the 
  6584. threads, synchronize thread access to global resources, and make choices about 
  6585. thread scheduling and priorities. 
  6586.  
  6587. This section describes a simple GDS application that uses threads. 
  6588.  
  6589. The XDS/XOM API calls do not change when they are making use of DCE threads in 
  6590. an application program. The service underneath XDS/XOM API is designed to be 
  6591.  
  6592.    o  Thread-safe, to allow multiple threads to safely access shared data, and 
  6593.    o  Cancel-safe, to handle unexpected cancellation of a thread in an 
  6594.       application program. 
  6595.  
  6596.  "Issuing XDS/XOM Calls From Within Different Threads" shows an example of how 
  6597.  an application can issue XDS/XOM calls from within different threads. 
  6598.  
  6599.  
  6600.   Issuing XDS/XOM Calls From Within Different Threads
  6601.  
  6602.  The order of thread completion is not defined; however, XDS/XOM has an 
  6603.  inherent ordering. Multithreaded XDS applications must adhere to the following 
  6604.  order of execution: 
  6605.  
  6606.    1. ds_initialize 
  6607.    2. ds_version (optional) 
  6608.    3. ds_bind 
  6609.    4. Other XDS calls in sequence or parallel from multiple threads 
  6610.    5. ds_unbind 
  6611.    6. ds_shutdown 
  6612.  
  6613.  Multithreaded XOM applications must adhere to the following order of 
  6614.  execution: 
  6615.  
  6616.    1. ds_initialize 
  6617.    2. XOM calls in sequence or parallel from multiple threads 
  6618.    3. ds_shutdown 
  6619.  
  6620.  The XDS/XOM API will return an appropriate error code if these sequences are 
  6621.  not adhered to. For example the following errors are returned: 
  6622.  
  6623.  DS_E_BUSY                             If ds_unbind is called while there are 
  6624.                                        still outstanding operations, or if 
  6625.                                        ds_shutdown is called before all 
  6626.                                        directory connections have been released 
  6627.                                        by ds_unbind. 
  6628.  
  6629.  OM_NO_SUCH_WORKSPACE                  If any XOM API calls are made before 
  6630.                                        completing ds_initialize, or if a call 
  6631.                                        to ds_shutdown completes while there are 
  6632.                                        outstanding XOM operations on the same 
  6633.                                        workspace. In the latter case, these XOM 
  6634.                                        operations will not be performed. 
  6635.  
  6636.  
  6637. ΓòÉΓòÉΓòÉ 9.1. Overview of Sample Threads Program ΓòÉΓòÉΓòÉ
  6638.  
  6639. The sample program is called thradd. The thradd program is a multithreaded XDS 
  6640. application that adds entries to a CDS directory. Each thread performs a 
  6641. ds_add_entry call. The information for each entry to be added is read from an 
  6642. input file. 
  6643.  
  6644. The thradd program can also be used to reset the directory to its original 
  6645. state. This is achieved by invoking thradd with a -d command-line argument. In 
  6646. this case, thradd uses the same input file and calls ds_remove_entry for each 
  6647. entry. The ds_remove_entry calls are also done in separate threads. 
  6648.  
  6649. To keep the program short and clear, it works with a fixed tree for the upper 
  6650. nodes (/C=us/O=ibm/OU=austin/temp), to which the entries described in the input 
  6651. file are added. C=us/O=ibm/OU=austin is the cell name and temp is a directory 
  6652. in that cell. The directory (temp) must already exist before executing thradd. 
  6653. The input file contains the object name, the surname, and the phone number of 
  6654. each Organizational-Person entry to be added. 
  6655.  
  6656. For simplicity, only pthread_join is used for synchronization purposes; mutexes 
  6657. are not used. 
  6658.  
  6659. The thradd program could be enhanced to satisfy the following scenarios : 
  6660.  
  6661.    o  As a server program for interactive directory actions from different 
  6662.       users. The thradd program simulates a server program which gets requests 
  6663.       from different users to add entries to a directory. In the case of 
  6664.       thradd, the users' interactive input is simulated through the entries in 
  6665.       the input file. Each line of input represents a different directory 
  6666.       entry, and thradd uses a separate thread for each line. 
  6667.  
  6668.    o  Initialization of the directory with data from file. The thradd program 
  6669.       could be enhanced to read generic attribute information for a variety of 
  6670.       directory object classes from a file, and to add the corresponding 
  6671.       entries to the directory. 
  6672.  
  6673.  
  6674. ΓòÉΓòÉΓòÉ 9.1.1. User Interface ΓòÉΓòÉΓòÉ
  6675.  
  6676. The thradd program is called from the command line as follows : 
  6677.  
  6678. thradd [-d] [-f filename] 
  6679.  
  6680.  -d             If the option -d is set, the entries in the file are deleted 
  6681.                 from the tree /C=us/O=ibm/OU=austin/temp; otherwise, they are 
  6682.                 added. 
  6683.  
  6684.  -f file name   The option -f specifies the name of the input file. If no input 
  6685.                 file is specified, then a default filename of thradd.dat is 
  6686.                 used. 
  6687.  
  6688.  
  6689. ΓòÉΓòÉΓòÉ 9.1.2. Input File Format ΓòÉΓòÉΓòÉ
  6690.  
  6691. The input file can contain any number of lines. Each line represents a 
  6692. directory entry of a CDS object. Each line must contain the following three 
  6693. attributes for each entry: 
  6694.  
  6695. object surname number
  6696.  
  6697. The attributes must be strings without space characters. Lines containing less 
  6698. than three strings are rejected by the program; any input on a line after the 
  6699. first three strings is ignored and can be used for comments. The attributes are 
  6700. separated by one or more space characters. 
  6701.  
  6702. The input strings are not verified for their relevant attribute syntax. A wrong 
  6703. attribute syntax will result in either a ds_add_entry error or a 
  6704. ds_remove_entry error. 
  6705.  
  6706. The following would be a valid input file for thradd : 
  6707.  
  6708. Anna          Meister        010101
  6709. Erwin         Reiter         020202
  6710. Gerhard       Schulz         030303
  6711. Gottfried     Schmid         040404
  6712. Heidrun       Blum           050505
  6713. Hermann       Meier          060606
  6714. Josefa        Fischer        070707
  6715. Jutta         Arndt          080808
  6716. Leopold       Huber          090909
  6717. Magdalena     Schuster       101010
  6718. Margot        Junge          111111
  6719.  
  6720.  
  6721. ΓòÉΓòÉΓòÉ 9.1.3. Program Output ΓòÉΓòÉΓòÉ
  6722.  
  6723. The thradd program writes messages to stdout for every action done by a thread. 
  6724. The order of the output can differ from the order in the input file; it depends 
  6725. on the execution of the different threads. 
  6726.  
  6727. Errors are reported to stderr. 
  6728.  
  6729.  
  6730. ΓòÉΓòÉΓòÉ 9.1.4. Prerequisites ΓòÉΓòÉΓòÉ
  6731.  
  6732. The C=us/O=ibm/OU=austin/temp directory must exist and the user must have the 
  6733. proper authority to create and delete objects in the directory. The thradd 
  6734. program should always be invoked twice with the same input file - first without 
  6735. and then with option -d. This guarantees that the directory is reset to its 
  6736. original state. The DCE administration program, dcecp, can be used to verify 
  6737. the directory contents after adding entries. 
  6738.  
  6739.  
  6740. ΓòÉΓòÉΓòÉ 9.2. Description of Sample Program ΓòÉΓòÉΓòÉ
  6741.  
  6742. The static descriptors for the fixed tree (that is, /C=us/O=ibm/OU=austin/temp) 
  6743. are declared in the thradd.h header file. The thradd.c application and the 
  6744. thradd.h header file are shipped with the product and can be found in the 
  6745. \opt\dcelocal\examples\xdsxom directory. 
  6746.  
  6747. The main routine scans the command-line options, initializes the XDS workspace 
  6748. and binds to the CDS namespace. 
  6749.  
  6750. Each line of the input file is then processed in turn by a while loop (until 
  6751. the end of file is reached). The while loop contains two for loops. The first 
  6752. for loop creates a separate thread for each line of the input file, up to a 
  6753. maximum of MAX_THREAD_NO of threads. 
  6754.  
  6755. The add_or_remove procedure, which adds or removes an entry to or from the 
  6756. directory, is the starting point of each thread's processing. 
  6757.  
  6758. The second for loop waits for termination of the threads and then releases the 
  6759. resources used by the threads. 
  6760.  
  6761. When the entire input file has been processed, thradd closes the connection to 
  6762. the CDS namespace. 
  6763.  
  6764. Finally, the XDS workspace is closed. 
  6765.  
  6766. "Program Flow for the thradd Sample Program" shows the program flow. 
  6767.  
  6768.  
  6769. Program Flow for the thradd Sample Program
  6770.  
  6771.  
  6772. ΓòÉΓòÉΓòÉ 9.3. Detailed Description of Thread Specifics ΓòÉΓòÉΓòÉ
  6773.  
  6774. The program consists of the following general steps: 
  6775.  
  6776.    1. Include the header file pthread.h. 
  6777.    2. Define a parameter block structure type for the thread start routine. 
  6778.    3. Declare arrays for thread handles and parameter blocks. 
  6779.    4. Read the input file line by line. 
  6780.    5. Update the parameter block. 
  6781.    6. Create the thread. 
  6782.    7. Wait for the termination of the thread. 
  6783.    8. Release the resources used by the thread. 
  6784.    9. Define the thread start routine. 
  6785.   10. Declare local variables needed for descriptors for the objects read from 
  6786.       the input file. 
  6787.  
  6788.  The following paragraphs describe the corresponding step numbers from the 
  6789.  program listing in the next section: 
  6790.  
  6791.  Step 1 includes the header file pthread.h which is required for thread 
  6792.  programming. 
  6793.  
  6794.  Step 2 defines a parameter block structure type for the thread start routine. 
  6795.  A thread start routine must have exactly one parameter. However, add_or_remove 
  6796.  requires three parameters: session object, input line and operating mode. The 
  6797.  structure pb_add_or_remove is defined as the parameter block for these 
  6798.  components. Therefore, the single parameter block contains the three 
  6799.  parameters required by add_or_remove. 
  6800.  
  6801.  Step 3 declares arrays for thread handles and parameter blocks. The routine 
  6802.  which creates the thread (main in this case) must maintain the following 
  6803.  information for each thread: 
  6804.  
  6805.    o  A thread handle of type pthread_t to identify the thread for join and 
  6806.       detach calls. 
  6807.  
  6808.    o  A thread specific parameter block that cannot be accessed by any other 
  6809.       thread. This makes sure that a parameter for one thread is not 
  6810.       overwritten by another thread. 
  6811.  
  6812.  Step 4 reads the input file line by line. A thread is created for each line. A 
  6813.  maximum MAX_THREAD_NO of threads are created in parallel. The program then 
  6814.  waits for the termination of the created threads so that it can release the 
  6815.  resources used by these threads, allowing it to create new threads for 
  6816.  remaining input lines (if any). 
  6817.  
  6818.  The absolute maximum number of threads working in parallel depends on system 
  6819.  limits; for thradd a value of 10 was chosen (see thradd.h), which is well 
  6820.  below the maximum on most systems. 
  6821.  
  6822.  Step 5 updates the parameter block. For each thread a different element of the 
  6823.  array of parameter blocks is used. 
  6824.  
  6825.  Step 6 creates the thread. The thread is created by using the function 
  6826.  pthread_create. The function has four parameters: 
  6827.  
  6828.    o  The thread handle (output) is stored in an element of the array of type 
  6829.       pthread_t. 
  6830.  
  6831.    o  For the thread characteristics, the default pthread_attr_default is used. 
  6832.  
  6833.    o  The start routine for this thread is add_or_remove. 
  6834.  
  6835.    o  The parameter passed to add_or_remove is a pointer to an element of the 
  6836.       array of parameter blocks. 
  6837.  
  6838.  Step 7 waits for the termination of the thread. The pthread_join routine is 
  6839.  called with the thread handle as the input parameter. The program waits for 
  6840.  the termination of the thread. If the thread has already terminated, then 
  6841.  pthread_join returns immediately. The second parameter of pthread_join 
  6842.  contains the return value of the start function; here it's a dummy value 
  6843.  because add_or_remove returns a void. add_or_remove is designed as a void 
  6844.  function because the calling routine does not have to deal with error cases. 
  6845.  The add_or_remove routine prints status messages itself to show the processing 
  6846.  order of the threads. Normally a status should be returned to the application. 
  6847.  
  6848.  Step 8 releases the resources used by the thread. The thread handle is used as 
  6849.  input for the function pthread_detach, which releases the resources (for 
  6850.  example, memory) used by the thread. 
  6851.  
  6852.  Step 9 defines the thread start routine. As previously mentioned, the thread 
  6853.  start routine must have exactly one parameter. In this case, it is a pointer 
  6854.  to the parameter block structure defined in Step 2. 
  6855.  
  6856.  Step 10 declares local variables needed for descriptors for the objects read 
  6857.  from the input file. These descriptors are variables and are declared as 
  6858.  automatic because of the reentrant requirement. In the previous sample 
  6859.  programs, descriptors were generally declared static. For this example, only 
  6860.  the constant descriptors declared in thradd.h can be declared static. 
  6861.  
  6862.  This program shows only a small part of the possibilities of multithreaded XDS 
  6863.  programming. 
  6864.  
  6865.  
  6866. ΓòÉΓòÉΓòÉ 10. XDS Interface Description ΓòÉΓòÉΓòÉ
  6867.  
  6868. The XDS interface contains a number of functions, together with many OM classes 
  6869. of OM objects, which are used as the parameters and results of the functions. 
  6870. Both the functions and the OM objects are based closely on the Abstract Service 
  6871. that is specified in the standards (see The Directory: Abstract Service 
  6872. Definition, ISO 9594-3, CCITT X.511). 
  6873.  
  6874. The interface models the directory interactions as service requests made 
  6875. through a number of interface functions, which take a number of input 
  6876. parameters. Each valid request causes an operation within the Directory 
  6877. Service, which eventually returns a status and any result of the operation. 
  6878.  
  6879. All interactions between the user and the Directory Service belong to a 
  6880. session, which is represented by an OM object passed as the first parameter to 
  6881. most interface functions. 
  6882.  
  6883. The other parameters to the functions include a context and various 
  6884. service-specific parameters. The context includes a number of parameters that 
  6885. are common to many functions, and that seldom change from operation to 
  6886. operation. 
  6887.  
  6888. Each of the components of this model are described in the following sections 
  6889. along with other features of the interface, such as security. 
  6890.  
  6891.  
  6892. ΓòÉΓòÉΓòÉ 10.1. XDS Conformance to Standards ΓòÉΓòÉΓòÉ
  6893.  
  6894. The XDS interface defines an API that application programs can use to access 
  6895. the functions of the underlying Directory Service. The DCE XDS API conforms to 
  6896. the X/Open CAE Specification, API to Directory Services (XDS) (November 1991). 
  6897.  
  6898. The DCE XDS implementation supports the following features: 
  6899.  
  6900.    o  A synchronous interface. Asynchronous functionality can be achieved by 
  6901.       using threads as described in XDS Programming. 
  6902.  
  6903.    o  All synchronous interface functions except ds_search and ds_modify_rdn 
  6904.       are supported. The two asynchronous specific functions are handled as 
  6905.       follows: (for all practical purposes, these functions are not supported) 
  6906.  
  6907.             ds_abandon
  6908.  
  6909.       This call does not issue a Directory Service abandon operation. It 
  6910.       returns with a DS_C_ABANDON_FAILED (DS_E_TOO_LATE) error. 
  6911.  
  6912.             ds_receive_result
  6913.  
  6914.       If there are any outstanding operations (when multiple threads issue XDS 
  6915.       calls in parallel), this function returns DS_SUCCESS with the 
  6916.       completion_flag_return parameter set to DS_OUTSTANDING_OPERATIONS. If no 
  6917.       XDS calls are outstanding, this function returns DS_SUCCESS with the 
  6918.       completion_flag_return parameter set to DS_NO_OUTSTANDING_OPERATION. 
  6919.  
  6920.    o  Automatic connection management is not provided. The ds_bind and 
  6921.       ds_unbind functions always try, respectively, to set up and release 
  6922.       Directory Service connections immediately. 
  6923.  
  6924.    o  The DS_FILE_DESCRIPTOR attribute of the DS_C_SESSION object is not used. 
  6925.  
  6926.    o  The default values for OM attributes in the DS_C_CONTEXT and DS_C_SESSION 
  6927.       objects are described in XDS Class Definitions. 
  6928.  
  6929.    o  There is no support for local strings.  When using XDS/XOM over CDS, no 
  6930.       mapping of input or output data is done.  It is a parameter on the 
  6931.       following API's: 
  6932.  
  6933.         -  dsX_extract_attr_values() 
  6934.         -  omX_extract() 
  6935.         -  omX_object_to_string() 
  6936.         -  omX_string_to_object() 
  6937.         -  om_get() 
  6938.         -  om_read() 
  6939.  
  6940.  DCE XDS supports four packages, of which one is mandatory and three are 
  6941.  optional. Use of the optional packages is negotiated using ds_version. Only 
  6942.  the required package is necessary for XDS/XOM over CDS. The packages are as 
  6943.  follows: 
  6944.  
  6945.    o  The Directory Service Package (as defined in XDS Class Definitions), 
  6946.       which also includes the errors. This package is required. 
  6947.  
  6948.    o  The Basic Directory Contents Package (as defined in Basic Directory 
  6949.       Contents Package). This package is optional and is not required for 
  6950.       XDS/XOM over CDS. However, it's xdsbdcp.h header file is required if any 
  6951.       X.500 cell names are used. 
  6952.  
  6953.    o  The Global Directory Service Package is optional and is not required for 
  6954.       XDS/XOM over CDS. 
  6955.  
  6956.    o  The MHS Directory User Package is optional and is not required for 
  6957.       XDS/XOM over CDS. 
  6958.  
  6959.  None of the OM classes defined in these four packages are able to be encoded. 
  6960.  Thus, DCE XDS application programmers do not require the use of the XOM 
  6961.  functions om_encode and om_decode, which are not supported by the DCE XOM API. 
  6962.  
  6963.  
  6964. ΓòÉΓòÉΓòÉ 10.2. The XDS Functions ΓòÉΓòÉΓòÉ
  6965.  
  6966. As mentioned already, the standards define Abstract Services that requestors 
  6967. use to interact with the directory. Each of these Abstract Services maps to a 
  6968. single function call, and the detailed specifications are given in the XDS 
  6969. reference pages in the DCE for OS/2 Warp: Application Development Reference. 
  6970. The services and the function calls to which they map are as follows: 
  6971.  
  6972.  DirectoryBind         (maps to ds_bind) 
  6973.  DirectoryUnbind       (maps to ds_unbind) 
  6974.  Read                  (maps to ds_read) 
  6975.  Compare               (maps to ds_compare) 
  6976.  Abandon               (maps to ds_abandon; not supported) 
  6977.  List                  (maps to ds_list) 
  6978.  Search                (maps to ds_search; not supported for XDS over CDS) 
  6979.  AddEntry              (maps to ds_add_entry) 
  6980.  RemoveEntry           (maps to ds_remove_entry) 
  6981.  ModifyEntry           (maps to ds_modify_entry) 
  6982.  ModifyRDN             (maps to ds_modify_rdn; not supported for XDS over CDS) 
  6983.  
  6984.  There is a function called ds_receive_result, which has no counterpart in the 
  6985.  Abstract Service. It is used with asynchronous operations. See the DCE for 
  6986.  OS/2 Warp: Application Development Reference for information on how the 
  6987.  asynchronous functions ds_abandon and ds_receive_result are handled by the DCE 
  6988.  XDS API. 
  6989.  
  6990.  The ds_initialize, ds_shutdown, and ds_version functions are used to control 
  6991.  the XDS API and do not initiate any directory operations. 
  6992.  
  6993.  The interface functions are summarized in the following list: 
  6994.  
  6995.    o  The XDS Interface Functions 
  6996.  
  6997.            Name                       Description 
  6998.  
  6999.            ds_abandon                 Abandons the result of a pending 
  7000.                                       asynchronous operation. This function is 
  7001.                                       not supported (see XDS Conformance to 
  7002.                                       Standards for more information). 
  7003.  
  7004.            ds_add_entry               Adds a leaf entry to the CDS namespace. 
  7005.  
  7006.            ds_bind                    Opens a session with the CDS namespace. 
  7007.  
  7008.            ds_compare                 Compares a purported attribute value with 
  7009.                                       the attribute value stored in a CDS 
  7010.                                       object. 
  7011.  
  7012.            ds_initialize              Initializes the XDS interface. 
  7013.  
  7014.            ds_list                    Enumerates the names of the immediate 
  7015.                                       subordinates of a particular directory 
  7016.                                       entry. 
  7017.  
  7018.            ds_modify_entry            Performs modification to a directory 
  7019.                                       entry. 
  7020.  
  7021.            ds_modify_rdn              Changes the RDN of a leaf entry. This 
  7022.                                       function is not supported. 
  7023.  
  7024.            ds_read                    Queries information on a particular entry 
  7025.                                       by name. 
  7026.  
  7027.            ds_receive_result          Retrieves the result of a asynchronously 
  7028.                                       executed function (This function is not 
  7029.                                       supported.) See XDS Conformance to 
  7030.                                       Standards for more information. 
  7031.  
  7032.            ds_remove_entry            Removes a leaf entry from the DIT. 
  7033.  
  7034.            ds_search                  Finds entries of interest in a portion of 
  7035.                                       the directory information tree. This 
  7036.                                       function is not supported. 
  7037.  
  7038.            ds_shutdown                Discards a workspace. 
  7039.  
  7040.            ds_unbind                  Unbinds from a directory session. 
  7041.  
  7042.            ds_version                 Negotiates features of the interface and 
  7043.                                       service. 
  7044.  
  7045.  
  7046. ΓòÉΓòÉΓòÉ 10.3. The XDS Negotiation Sequence ΓòÉΓòÉΓòÉ
  7047.  
  7048. The interface has an initialization and shutdown sequence that permits the 
  7049. negotiation of optional features. This involves the ds_initialize, ds_version, 
  7050. and ds_shutdown functions. 
  7051.  
  7052. Every application program must first call ds_initialize, which returns a 
  7053. workspace. This workspace supports the standard Directory Service Package (see 
  7054. XDS Class Definitions). 
  7055.  
  7056. The workspace can be extended to support the optional Basic Directory Contents 
  7057. Package (see The Basic Directory Contents Package). 
  7058.  
  7059. Note:  ds_version is not required for XDS/XOM over CDS. 
  7060.  
  7061.  These packages are identified by means of OSI Object Identifiers, and these 
  7062.  Object Identifiers are supplied to ds_version to incorporate the extensions 
  7063.  into the workspace. 
  7064.  
  7065.  After a workspace with the required features is negotiated, the application 
  7066.  can use the workspace as required. It can create and manipulate OM objects 
  7067.  using the OM functions, and can start one or more directory sessions using 
  7068.  ds_bind. 
  7069.  
  7070.  After completing its tasks, terminating all its directory sessions using 
  7071.  ds_unbind, and releasing all its OM objects using om_delete, the application 
  7072.  needs to ensure that resources associated with the interface are freed by 
  7073.  calling ds_shutdown. 
  7074.  
  7075.  It is possible to start another cycle by calling ds_initialize if so required 
  7076.  by the application design. 
  7077.  
  7078.  
  7079. ΓòÉΓòÉΓòÉ 10.4. The session Parameter ΓòÉΓòÉΓòÉ
  7080.  
  7081. A session binds the XDS/XOM to the CDS namespace. The session parameter is 
  7082. passed as the first parameter to most interface functions. 
  7083.  
  7084. A session is described by an OM object of OM class DS_C_SESSION. It is created 
  7085. and appropriate parameter values can be set using the OM functions. A directory 
  7086. session then starts with ds_bind and later ends with ds_unbind. A session with 
  7087. default parameters can be started by passing the constant DS_DEFAULT_SESSION as 
  7088. the DS_C_SESSION parameter to ds_bind. 
  7089.  
  7090. The ds_bind function must be called before DS_C_SESSION can be used as a 
  7091. parameter to any other function in this interface. After ds_unbind is called, 
  7092. ds_bind must be called again if another session is to be started. 
  7093.  
  7094. The interface supports multiple concurrent sessions so that an application 
  7095. implemented as a single process, such as a server in a client/server model, can 
  7096. interact with the directory using several identities, and a process can 
  7097. interact directly and concurrently with different parts of the directory. 
  7098.  
  7099. Details of the OM Class DS_C_SESSION are given in XDS Class Definitions. 
  7100.  
  7101.  
  7102. ΓòÉΓòÉΓòÉ 10.5. The context Parameter ΓòÉΓòÉΓòÉ
  7103.  
  7104. The context defines the characteristics of the directory interaction that are 
  7105. specific to a particular directory operation. Nevertheless, the same 
  7106. characteristics are often used for many operations. Since these parameters are 
  7107. presumed to be relatively static for a given directory user during a particular 
  7108. directory interaction, these parameters are collected into an OM object of OM 
  7109. class DS_C_CONTEXT, which is supplied as the second parameter of most Directory 
  7110. Service requests. This reduces the number of parameters passed to each 
  7111. function. 
  7112.  
  7113. The context includes many administrative details, such as the CommonArguments 
  7114. defined in the Abstract Service, which affect the processing of each directory 
  7115. operation. These include a number of ServiceControls, which allow control over 
  7116. some aspects of the service. The ServiceControls include options such as 
  7117. dontDereferenceAliases. 
  7118.  
  7119. Each of these is mapped onto an OM attribute in the context (see XDS Class 
  7120. Definitions). 
  7121.  
  7122. The effect of passing the context parameter is as if its contents were passed 
  7123. as a group of additional parameters for every function call. The value of each 
  7124. component of the context is determined when the interface function is called, 
  7125. and remains fixed throughout the operation. 
  7126.  
  7127. All OM attributes in the class DS_C_CONTEXT have default values, some of which 
  7128. are administered locally. The constant DS_DEFAULT_CONTEXT can be passed as the 
  7129. value of the DS_C_CONTEXT parameter to the interface functions, and has the 
  7130. same effect as a context OM object created with default values. The context 
  7131. must be a private object, unless it is DS_DEFAULT_CONTEXT. 
  7132.  
  7133. See XDS Class Definitions for detailed specifications of the OM class 
  7134. DS_C_CONTEXT. 
  7135.  
  7136.  
  7137. ΓòÉΓòÉΓòÉ 10.6. The XDS Function Arguments ΓòÉΓòÉΓòÉ
  7138.  
  7139. The Abstract Service defines specific parameters for each operation. These are 
  7140. mapped onto corresponding parameters to each interface function, which are also 
  7141. called input parameters. Although each service has different parameters, some 
  7142. specific parameters recur in several operations and these are briefly 
  7143. introduced here. For complete details of these parameters, see XDS Class 
  7144. Definitions 
  7145.  
  7146. All parameters that are OM objects can generally be supplied to the interface 
  7147. functions as public objects (that is, descriptor lists) or as private objects. 
  7148. Private objects must be created in the workspace that is returned by 
  7149. ds_initialize. In some cases, constants can be supplied instead of OM objects. 
  7150.  
  7151. Note:  Wherever a function can accept an instance of a particular OM class as 
  7152.        the value of a parameter, it also accepts an instance of any subclass of 
  7153.        the OM class. For example, most functions have a name parameter, which 
  7154.        accepts values of OM class DS_C_NAME. It is always acceptable to supply 
  7155.        an instance of the subclass DS_C_DS_DN as the value of the parameter. 
  7156.  
  7157.  
  7158. ΓòÉΓòÉΓòÉ 10.6.1. Attribute and Attribute Value Assertion ΓòÉΓòÉΓòÉ
  7159.  
  7160. Each directory attribute is represented in the interface by an OM object of OM 
  7161. class DS_C_ATTRIBUTE. The type of the directory attribute is represented by an 
  7162. OM attribute, DS_ATTRIBUTE_TYPE, within the OM object. The values of the 
  7163. directory attribute are expressed as the values of the OM attribute 
  7164. DS_ATTRIBUTE_VALUES. 
  7165.  
  7166. The representation of the attribute value depends on the attribute type and is 
  7167. determined as indicated in the following list. This list describes the way in 
  7168. which an application program must supply values to the interface; for example, 
  7169. in the changes parameter to ds_modify_entry. The interface follows the same 
  7170. rules when returning attribute values to the application; for example, in the 
  7171. ds_read result. 
  7172.  
  7173.    o  The first possibility is that the attribute type and the representation 
  7174.       of the corresponding values can be defined in a package; for example, the 
  7175.       selected attribute types from the standards that are defined in Basic 
  7176.       Directory Contents Package. In this case, attribute values are 
  7177.       represented as specified. 
  7178.  
  7179.    o  If the attribute type is not known and the value is an ASN.1 simple type 
  7180.       such as IntegerType, the representation is the corresponding type 
  7181.       specified in Information Syntaxes. 
  7182.  
  7183.    o  If the attribute type is not known and the value is an ASN.1 structured 
  7184.       type, the value is represented in the Basic Encoding Rules (BER) with OM 
  7185.       syntax String(OM_S_ENCODING_STRING). 
  7186.  
  7187.  Where attribute values have OM syntax String(*), they can be long segmented 
  7188.  strings, and the functions om_read and om_write need to be used to access 
  7189.  them. 
  7190.  
  7191.  An Attribute Value Assertion (AVA) is an assertion about the value of an 
  7192.  attribute of an entry, and can be TRUE, FALSE, or undefined. It consists of an 
  7193.  attribute type and a single value. In general, the AVA is TRUE if one of the 
  7194.  values of the given attribute in the entry matches the given value. An AVA is 
  7195.  represented in the interface by an instance of OM class DS_C_AVA, which is a 
  7196.  subclass of DS_C_ATTRIBUTE and can only have one value. 
  7197.  
  7198.  Information used by ds_add_entry to construct a new directory entry is 
  7199.  represented by an OM object of OM class DS_C_ATTRIBUTE_LIST, which contains a 
  7200.  single multivalued OM attribute whose values are OM objects of OM class 
  7201.  DS_C_ATTRIBUTE. 
  7202.  
  7203.  
  7204. ΓòÉΓòÉΓòÉ 10.6.2. The EntryInformationSelection Parameter ΓòÉΓòÉΓòÉ
  7205.  
  7206. The selection parameter of the ds_read operation tailors its results to obtain 
  7207. just part of the required entry. Information on all attributes, no attributes, 
  7208. or a specific group of attributes can be chosen. Attribute types are always 
  7209. returned, but the attribute values are not necessarily returned. 
  7210.  
  7211. The value of the parameter is an instance of OM class 
  7212. DS_C_ENTRY_INFO_SELECTION, but one of the constants in the following list can 
  7213. be used in simple cases: 
  7214.  
  7215.    o  To verify the existence of an entry for the purported name, use the 
  7216.       constant DS_SELECT_NO_ATTRIBUTES. 
  7217.  
  7218.    o  To return just the types of all attributes, use the constant 
  7219.       DS_SELECT_ALL_TYPES. 
  7220.  
  7221.    o  To return the types and values of all attributes, use the constant 
  7222.       DS_SELECT_ALL_TYPES_AND_VALUES. 
  7223.  
  7224.  To choose a particular set of attributes, create a new instance of the OM 
  7225.  class DS_C_ENTRY_INFO_SELECTION and set the appropriate OM attribute values 
  7226.  using the OM functions. 
  7227.  
  7228.  
  7229. ΓòÉΓòÉΓòÉ 10.6.3. The name Parameter ΓòÉΓòÉΓòÉ
  7230.  
  7231. Most operations take a name parameter to specify the target of the operation. 
  7232. The name is represented by an instance of one of the subclasses of the OM class 
  7233. DS_C_NAME. The DCE XDS API defines the subclass DS_C_DS_DN to represent 
  7234. distinguished names and other names. 
  7235.  
  7236. For directory interrogations, any aliases in the name are dereferenced, unless 
  7237. prohibited by the DS_DONT_DEREFERENCE_ALIASES service control. However, for 
  7238. modify operations, this service control is ignored if set, and aliases are 
  7239. never dereferenced. 
  7240.  
  7241. RDNs are represented by an instance of one of the subclasses of the OM class 
  7242. DS_C_RELATIVE_NAME. The DCE XDS API defines the subclass DS_C_DS_RDN to 
  7243. represent RDNs. 
  7244.  
  7245.  
  7246. ΓòÉΓòÉΓòÉ 10.7. XDS Function Call Results ΓòÉΓòÉΓòÉ
  7247.  
  7248. All XDS functions return a DS_status, which is the C function result. Most 
  7249. return data in an invoke_id parameter, which identifies the particular 
  7250. invocation and the interrogation operations each return data in the result 
  7251. parameter. The result value is returned using a pointer that is supplied as a 
  7252. parameter of the C function. These three types of function results are 
  7253. introduced in the following sections. 
  7254.  
  7255. All OM objects returned by interface functions (results and errors) are private 
  7256. objects in the workspace returned by ds_initialize. 
  7257.  
  7258.  
  7259. ΓòÉΓòÉΓòÉ 10.7.1. The invoke_id Parameter ΓòÉΓòÉΓòÉ
  7260.  
  7261. All interface functions that call a Directory Service operation return an 
  7262. invoke_id parameter, which is an integer that identifies the particular 
  7263. invocation of an operation. Since asynchronous operations (within the same 
  7264. thread) are not supported, the invoke_id return value is no longer relevant for 
  7265. operations. DCE application programmers must still supply this parameter as 
  7266. described in the XDS reference pages (see DCE for OS/2 Warp: Application 
  7267. Development Reference) but should ignore the value returned. 
  7268.  
  7269.  
  7270. ΓòÉΓòÉΓòÉ 10.7.2. The result Parameter ΓòÉΓòÉΓòÉ
  7271.  
  7272. Directory Service interrogation operations return a result value only if they 
  7273. succeed. All errors from these operations are reported in DS_status as are 
  7274. errors from all other operations (see The DS_status Return Value). 
  7275.  
  7276. The result of an interrogation is returned in a private object whose OM class 
  7277. is appropriate to the particular operation. The format of directory operation 
  7278. results is driven by the Abstract Service. To simplify processing, the result 
  7279. of a single operation is returned in a single OM object, which corresponds to 
  7280. the abstract result defined in the standards. The components of the result of 
  7281. an operation are represented by OM attributes in the operation's result object. 
  7282. All information contained in the Abstract Service result is made available to 
  7283. the application program. The result is inspected using the functions provided 
  7284. in the Object Management API, om_get. 
  7285.  
  7286. Only the interrogation operations produce results, and each type of 
  7287. interrogation has a specific OM class of OM object for its result. These OM 
  7288. classes are as follows (see XDS Class Definitions): 
  7289.  
  7290.    o  DS_C_COMPARE_RESULT 
  7291.    o  DS_C_LIST_RESULT 
  7292.    o  DS_C_READ_RESULT 
  7293.  
  7294.  The results of the different operations share several common components, 
  7295.  including the CommonResults defined in the standards (see The Directory: 
  7296.  Abstract Service Definition, ISO 9594-3, CCITT X.511) by inheriting OM 
  7297.  attributes from the superclass DS_C_COMMON_RESULTS. An additional common 
  7298.  component is the full DN of the target object, after all aliases are 
  7299.  dereferenced. 
  7300.  
  7301.  The actual OM class of the result can always be a subclass of that named in 
  7302.  order to allow flexibility for extensions. Thus, om_instance always needs to 
  7303.  be used when testing the OM class. 
  7304.  
  7305.  Any attribute values in the result are represented as discussed in Attribute 
  7306.  and Attribute Value Assertion. 
  7307.  
  7308.  
  7309. ΓòÉΓòÉΓòÉ 10.7.3. The DS_status Return Value ΓòÉΓòÉΓòÉ
  7310.  
  7311. Every interface function returns a DS_status value, which is either the 
  7312. constant DS_SUCCESS or an error. Errors are represented by private objects 
  7313. whose OM class is a subclass of DS_C_ERROR. 
  7314.  
  7315. Other results of functions are not valid unless the status result has the value 
  7316. DS_SUCCESS. 
  7317.  
  7318.  
  7319. ΓòÉΓòÉΓòÉ 10.8. Synchronous Operations ΓòÉΓòÉΓòÉ
  7320.  
  7321. Since asynchronous use of the interface (within the same thread) is not 
  7322. supported, the value of the DS_ASYNCHRONOUS OM attribute in DS_C_CONTEXT is 
  7323. always OM_FALSE, causing all operations within the same thread to be 
  7324. synchronous. 
  7325.  
  7326. In synchronous mode, all functions wait until the operation is complete before 
  7327. returning. The thread of control is blocked within the interface after calling 
  7328. a function, and it can use the result immediately after the function returns. 
  7329.  
  7330. Implementations define a limit on the number of asynchronous operations that 
  7331. can be outstanding at any one time on any one session. The limit is given by 
  7332. the implementation-defined constant DS_MAX_OUTSTANDING_OPERATIONS. It always 
  7333. has the value 0 (zero) because asynchronous operations within the same thread 
  7334. are not supported. 
  7335.  
  7336. All errors occurring during a synchronous request are reported when the 
  7337. function returns. 
  7338.  
  7339. The DS_FILE_DESCRIPTOR OM attribute of DS_C_SESSION is not used by the DCE XDS 
  7340. API and is always set to DS_NO_VALID_FILE_DESCRIPTOR. 
  7341.  
  7342.  
  7343. ΓòÉΓòÉΓòÉ 11. XDS Class Definitions ΓòÉΓòÉΓòÉ
  7344.  
  7345. When referring to classes and attributes in the Directory Service, this guide 
  7346. makes a clear distinction between OM classes and directory classes, and between 
  7347. OM attributes and directory attributes. In both cases, the former is a 
  7348. construct of the closely associated Object Management interface, while the 
  7349. latter is a construct of the Directory Service to which XDS provides access. 
  7350. The terms object class and attribute indicate the directory constructs, while 
  7351. the phrases OM class and OM attribute indicate the Object Management 
  7352. constructs. 
  7353.  
  7354. Note:  Not all of the OM objects defined in this section are applicable to 
  7355.        XDS/XOM over CDS. One example is DS_C_SEARCH_RESULT, which is valid for 
  7356.        ds_search, but not supported for XDS/XOM over CDS. These OM objects are 
  7357.        provided in this documentation for completeness. They should not, 
  7358.        however, be needed by any application using XDS/XOM over CDS. 
  7359.  
  7360.  
  7361. ΓòÉΓòÉΓòÉ 11.1. Introduction to OM Classes ΓòÉΓòÉΓòÉ
  7362.  
  7363. This section defines, in alphabetical order, the OM classes that make up the 
  7364. Directory Service Package. This package incorporates the OM classes for the 
  7365. errors which may be returned at the XDS interface. The object identifier 
  7366. associated with this package is {iso(1) identified-organization(3) 
  7367. icd-ecma(0012) member-company(2) dec(1011) xopen(28) dsp(0)} with the following 
  7368. encoding: 
  7369.  
  7370. \x2B\xC\x2\x87\x73\x1C\x0
  7371.  
  7372. This object identifier is represented by the constant DS_SERVICE_PKG. 
  7373.  
  7374. The Object Management notation is briefly described in the following text. See 
  7375. Information Syntaxes, XOM Service Interface, and Object Management Package for 
  7376. more information on Object Management. 
  7377.  
  7378. Each OM class is described in a separate section that identifies the OM 
  7379. attributes specific to that OM class. The OM classes and OM attributes for each 
  7380. OM class are listed in alphabetical order. The OM attributes that can be found 
  7381. in an instance of an OM class are those OM attributes specific to that OM 
  7382. class, as well as those inherited from each of its superclasses. The OM 
  7383. class-specific OM attributes are defined in a table. The table indicates the 
  7384. name of each OM attribute, the syntax of each of its values, any restrictions 
  7385. upon the length (in bits, octets (bytes), or characters) of each value, any 
  7386. restrictions upon the number of values, and the value, if any, om_create 
  7387. supplies. 
  7388.  
  7389. The constants that represent the OM classes and OM attributes in the C binding 
  7390. are defined in the xds.h(4xds) header file (see the DCE for OS/2 
  7391. Warp:Application Development Reference). 
  7392.  
  7393.  
  7394. ΓòÉΓòÉΓòÉ 11.2. XDS Errors ΓòÉΓòÉΓòÉ
  7395.  
  7396. Errors are reported to the application program by means of DS_status, which is 
  7397. a result of every function (it is the function result in the C language binding 
  7398. for most functions). A function that completes successfully returns the value 
  7399. DS_SUCCESS, whereas one that is not successful returns an error. The error is a 
  7400. private object containing details of the problem that occurred. The error 
  7401. constant DS_NO_WORKSPACE can be returned by all Directory Service functions, 
  7402. except ds_initialize. DS_NO_WORKSPACE is returned if ds_initialize is not 
  7403. invoked before calling any other Directory Service function. 
  7404.  
  7405. Errors are classified into ten OM classes. The standards (see The Directory: 
  7406. Abstract Service Definition, ISO 9594-3, CCITT X.511) classify errors into 
  7407. eight different groups, as follows: 
  7408.  
  7409.    o  Abandoned 
  7410.    o  Abandon Failed 
  7411.    o  Attribute Error 
  7412.    o  Name Error 
  7413.    o  Referral 
  7414.    o  Security Error 
  7415.    o  Service Error 
  7416.    o  Update Error 
  7417.  
  7418.  The Directory Service interface never returns an Abandoned error. The 
  7419.  interface also defines three more kinds of errors - DS_C_LIBRARY_ERROR, 
  7420.  DS_C_COMMUNICATIONS_ERROR, and DS_C_SYSTEM_ERROR. Each of these error types is 
  7421.  represented by an OM class. These OM classes are detailed in later sections. 
  7422.  All of them inherit the OM attribute DS_PROBLEM from their superclass 
  7423.  DS_C_ERROR, which is described in this section. The values DS_PROBLEM can take 
  7424.  are listed in the relevant portions of this section. The error OM classes 
  7425.  defined in this section are part of the Directory Service Package. 
  7426.  
  7427.  A DS_C_ATTRIBUTE_ERROR is not a subclass of DS_C_ERROR and is special because 
  7428.  it can report several problems at once. Each one is reported in 
  7429.  DS_C_ATTRIBUTE_PROBLEM, which is a subclass of DS_C_ERROR. 
  7430.  
  7431.  
  7432. ΓòÉΓòÉΓòÉ 11.3. OM Class Hierarchy ΓòÉΓòÉΓòÉ
  7433.  
  7434. The following shows the hierarchical organization of the OM classes defined in 
  7435. this section and, as a result, shows which OM classes inherit additional OM 
  7436. attributes from their superclasses. In the following list, subclassification is 
  7437. indicated by indentation, and the names of abstract classes are in italics. 
  7438. Thus, for example, the concrete class DS_C_PRESENTATION_ADDRESS is an immediate 
  7439. subclass of the abstract class DS_C_ADDRESS, which in turn is an immediate 
  7440. subclass of the abstract class OM_C_OBJECT. OM_C_OBJECT is defined in XOM 
  7441. Programming. 
  7442.  
  7443. OM_C_OBJECT 
  7444.  
  7445.    o  DS_C_ACCESS_POINT 
  7446.    o  DS_C_ADDRESS 
  7447.         -  DS_C_PRESENTATION_ADDRESS 
  7448.    o  DS_C_ATTRIBUTE 
  7449.         -  DS_C_AVA 
  7450.         -  DS_C_ENTRY_MODE 
  7451.         -  DS_C_FILTER_ITEM 
  7452.    o  DS_C_ATTRIBUTE_LIST 
  7453.         -  DS_C_ENTRY_INFO 
  7454.    o  DS_C_COMMON_RESULTS 
  7455.         -  DS_C_COMPARE_RESULT 
  7456.         -  DS_C_LIST_INFO 
  7457.         -  DS_C_READ_RESULT 
  7458.         -  DS_C_SEARCH_INFO 
  7459.    o  DS_C_CONTEXT 
  7460.    o  DS_C_CONTINUATION_REF 
  7461.    o  DS_C_ENTRY_INFO_SELECTION 
  7462.    o  DS_C_ENTRY_MOD_LIST 
  7463.    o  DS_C_ERROR 
  7464.    o  DS_C_EXT 
  7465.    o  DS_C_FILTER 
  7466.    o  DS_C_LIST_INFO_ITEM 
  7467.    o  DS_C_LIST_RESULT 
  7468.    o  DS_C_NAME 
  7469.         -  DS_C_DS_DN 
  7470.    o  DS_C_OPERATION_PROGRESS 
  7471.    o  DS_C_PARTIAL_OUTCOME_QUAL 
  7472.    o  DS_C_RELATIVE_NAME 
  7473.         -  DS_C_DS_RDN 
  7474.    o  DS_C_SEARCH_RESULT 
  7475.    o  DS_C_SESSION 
  7476.  
  7477.  None of the classes in the preceding list are encodable using om_encode and 
  7478.  om_decode. The application is not permitted to create or modify instances of 
  7479.  some OM classes because these OM classes are only returned by the interface 
  7480.  and never supplied by it. These OM classes are as follows: 
  7481.  
  7482.    o  DS_C_ACCESS_POINT 
  7483.    o  DS_C_COMPARE_RESULT 
  7484.    o  DS_C_CONTINUATION_REF 
  7485.    o  All subclasses of DS_C_ERROR 
  7486.    o  DS_C_LIST_INFO 
  7487.    o  DS_C_LIST_INFO_ITEM 
  7488.    o  DS_C_LIST_RESULT 
  7489.    o  DS_C_OPERATION_PROGRESS 
  7490.    o  DS_C_PARTIAL_OUTCOME_QUAL 
  7491.    o  DS_C_READ_RESULT 
  7492.    o  DS_C_SEARCH_INFO 
  7493.    o  DS_C_SEARCH_RESULT 
  7494.  
  7495.  
  7496. ΓòÉΓòÉΓòÉ 11.4. DS_C_ABANDON_FAILED ΓòÉΓòÉΓòÉ
  7497.  
  7498. An instance of OM class DS_C_ABANDON_FAILED reports a problem encountered 
  7499. during an attempt to abandon an operation. 
  7500.  
  7501. An application is not permitted to create or modify instances of this OM class. 
  7502. An instance of this OM class has the OM attributes of its superclasses, 
  7503. OM_C_OBJECT and DS_C_ERROR, and no additional OM attributes. 
  7504.  
  7505. The OM attribute DS_PROBLEM, which is inherited from the superclass DS_C_ERROR, 
  7506. identifies the problem. Its value is one of the following: 
  7507.  
  7508.    o  DS_E_CANNOT_ABANDON 
  7509.    o  DS_E_NO_SUCH_OPERATION 
  7510.    o  DS_E_TOO_LATE 
  7511.  
  7512.  A ds_abandon XDS call always returns a DS_E_TOO_LATE error for the 
  7513.  DS_C_ABANDON_FAILED OM class. See XDS Interface Description information on 
  7514.  abandoning directory operations. 
  7515.  
  7516.  
  7517. ΓòÉΓòÉΓòÉ 11.5. DS_C_ACCESS_POINT ΓòÉΓòÉΓòÉ
  7518.  
  7519. An instance of OM class DS_C_ACCESS_POINT identifies a particular point that a 
  7520. DSA can be accessed. 
  7521.  
  7522. An application is not permitted to create or modify instances of this OM class. 
  7523. An instance of this OM class has the OM attributes of its superclass, 
  7524. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  7525.  
  7526. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7527. Γöé Table 8. OM Attributes of DS_C_ACCESS_POINT                       Γöé
  7528. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7529. Γöé OM ATTRIBUTES       Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  7530. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  7531. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7532. Γöé DS_ADDRESS         Γöé Object(DS_C_ADDRESS)    Γöé   -   Γöé   1   Γöé   -   Γöé
  7533. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7534. Γöé DS_AE_TITLE        Γöé Object(DS_C_NAME)      Γöé   -   Γöé   1   Γöé   -   Γöé
  7535. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7536.  
  7537.  DS_ADDRESS     This attribute indicates the address of the DSA to be used when 
  7538.                 communicating with it. 
  7539.  
  7540.  DS_AE_TITLE    This attribute indicates the name of the DSA. 
  7541.  
  7542.  
  7543. ΓòÉΓòÉΓòÉ 11.6. DS_C_ADDRESS ΓòÉΓòÉΓòÉ
  7544.  
  7545. The OM class DS_C_ADDRESS represents the address of a particular entity or 
  7546. service, such as a DSA. 
  7547.  
  7548. It is an abstract class that has the OM attributes of its superclass, 
  7549. OM_C_OBJECT, and no other OM attributes. 
  7550.  
  7551. An address is an unambiguous name, label, or number that identifies the 
  7552. location of the entity or service. All addresses are represented as instances 
  7553. of some subclass of this OM class. 
  7554.  
  7555. The only subclass defined by the DCE XDS API is DS_C_PRESENTATION_ADDRESS, 
  7556. which is the presentation address of an OSI application entity used for OSI 
  7557. communications with this subclass. 
  7558.  
  7559.  
  7560. ΓòÉΓòÉΓòÉ 11.7. DS_C_ATTRIBUTE ΓòÉΓòÉΓòÉ
  7561.  
  7562. An instance of OM class DS_C_ATTRIBUTE is an attribute of an object and is, 
  7563. therefore, a component of its directory entry. 
  7564.  
  7565. An instance of this OM class has the OM attributes of its superclass, 
  7566. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  7567.  
  7568. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7569. Γöé Table 9. OM Attributes of DS_C_ATTRIBUTE                        Γöé
  7570. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7571. Γöé OM ATTRIBUTES       Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  7572. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  7573. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7574. Γöé DS_ATTRIBUTE_TYPE     Γöé String(OM_S_OBJECT     Γöé   -   Γöé   1   Γöé   -   Γöé
  7575. Γöé              Γöé _IDENTIFIER_STRING)     Γöé     Γöé     Γöé      Γöé
  7576. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7577. Γöé DS_ATTRIBUTE_VALUES    Γöé Any             Γöé   -   Γöé  0 or  Γöé   -   Γöé
  7578. Γöé              Γöé               Γöé     Γöé  more  Γöé      Γöé
  7579. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7580.  
  7581.  DS_ATTRIBUTE_TYPE                  The attribute type that indicates the class 
  7582.                                     of information given by this attribute. 
  7583.  
  7584.  DS_ATTRIBUTE_VALUES                The attribute values. The OM value syntax 
  7585.                                     and the number of values allowed for this 
  7586.                                     OM attribute are determined by the value of 
  7587.                                     the DS_ATTRIBUTE_TYPE OM attribute in 
  7588.                                     accordance with the rules given in 
  7589.                                     Attribute and Attribute Value Assertion. 
  7590.  
  7591.                                     If the values of this OM attribute have the 
  7592.                                     syntax String(*), the strings can be long 
  7593.                                     and segmented. For this reason, om_read and 
  7594.                                     om_write need to be used to access all 
  7595.                                     String(*) values. 
  7596.  
  7597.  Note:  A directory attribute must always have at least one value, although it 
  7598.         is acceptable for instances of this OM class not to have any values. 
  7599.  
  7600.  
  7601. ΓòÉΓòÉΓòÉ 11.8. DS_C_ATTRIBUTE_ERROR ΓòÉΓòÉΓòÉ
  7602.  
  7603. An instance of OM class DS_C_ATTRIBUTE_ERROR reports an attribute-related 
  7604. Directory Service error. 
  7605.  
  7606. An application is not permitted to create or modify instances of this OM class. 
  7607. An instance of this OM class has the OM attributes of its superclass, 
  7608. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  7609.  
  7610. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7611. Γöé Table 10. OM Attributes of DS_C_ATTRIBUTE_ERROR                     Γöé
  7612. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7613. Γöé OM ATTRIBUTES       Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  7614. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  7615. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7616. Γöé DS_OBJECT_NAME       Γöé Object(DS_C_NAME)      Γöé   -   Γöé   1   Γöé   -   Γöé
  7617. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7618. Γöé DS_PROBLEMS        Γöé Object(DS_C_ATTRIBUTE    Γöé   -   Γöé  1 or  Γöé   -   Γöé
  7619. Γöé              Γöé _PROBLEM)          Γöé     Γöé  more  Γöé      Γöé
  7620. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7621.  
  7622.  DS_OBJECT_NAME             This attribute contains the name of the directory 
  7623.                             entry to which the operation is applied when the 
  7624.                             failure occurs. 
  7625.  
  7626.  DS_PROBLEMS                This attribute documents the attribute-related 
  7627.                             problems encountered. Uniquely, a 
  7628.                             DS_C_ATTRIBUTE_ERROR can report several problems at 
  7629.                             once. All problems are related to the preceding 
  7630.                             object. 
  7631.  
  7632.  
  7633. ΓòÉΓòÉΓòÉ 11.9. DS_C_ATTRIBUTE_LIST ΓòÉΓòÉΓòÉ
  7634.  
  7635. An instance of OM class DS_C_ATTRIBUTE_LIST is a list of directory attributes. 
  7636.  
  7637. An instance of this OM class has the OM attributes of its superclass, 
  7638. OM_C_OBJECT, in addition to the OM attribute listed in the following table. 
  7639.  
  7640. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7641. Γöé Table 11. OM Attribute of DS_C_ATTRIBUTE_LIST                      Γöé
  7642. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7643. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  7644. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  7645. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7646. Γöé DS_ATTRIBUTES       Γöé Object (DS_C_ATTRIBUTE)   Γöé   -   Γöé  0 or  Γöé   -   Γöé
  7647. Γöé              Γöé               Γöé     Γöé  more  Γöé      Γöé
  7648. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7649.  
  7650.  DS_ATTRIBUTES              The attributes that constitute a new object's 
  7651.                             directory entry or those selected from an existing 
  7652.                             entry. 
  7653.  
  7654.  
  7655. ΓòÉΓòÉΓòÉ 11.10. DS_C_ATTRIBUTE_PROBLEM ΓòÉΓòÉΓòÉ
  7656.  
  7657. An instance of OM class DS_C_ATTRIBUTE_PROBLEM documents one attribute-related 
  7658. problem encountered while performing an operation as requested on a particular 
  7659. occasion. 
  7660.  
  7661. An application is not permitted to create or modify instances of this OM class. 
  7662. An instance of this OM class has the OM attributes of its superclasses, 
  7663. OM_C_OBJECT and DS_C_ERROR, in addition to the OM attributes listed in the 
  7664. following table. 
  7665.  
  7666. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7667. Γöé Table 12. OM Attribute of DS_C_ATTRIBUTE_PROBLEM                    Γöé
  7668. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7669. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  7670. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  7671. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7672. Γöé DS_ATTRIBUTE_TYPE     Γöé String(OM_S_OBJECT     Γöé   -   Γöé   1   Γöé   -   Γöé
  7673. Γöé              Γöé _IDENTIFIER_STRING)     Γöé     Γöé     Γöé      Γöé
  7674. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7675. Γöé DS_ATTRIBUTE_VALUE     Γöé Any             Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  7676. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7677.  
  7678.  DS_ATTRIBUTE_TYPE                   This attribute identifies the type of 
  7679.                                      attribute with which the problem is 
  7680.                                      associated. 
  7681.  
  7682.  DS_ATTRIBUTE_VALUE                  This attribute specifies the attribute 
  7683.                                      value with which the problem is 
  7684.                                      associated. Its syntax is determined by 
  7685.                                      the value of DS_ATTRIBUTE_TYPE. This OM 
  7686.                                      attribute is present if it is necessary to 
  7687.                                      avoid ambiguity. 
  7688.  
  7689.  The OM attribute DS_PROBLEM, which is inherited from the superclass 
  7690.  DS_C_ERROR, identifies the problem. Its value is one of the following: 
  7691.  
  7692.    o  DS_E_ATTRIBUTE_OR_VALUE_EXISTS 
  7693.    o  DS_E_CONSTRAINT_VIOLATION 
  7694.    o  DS_E_INAPPROP_MATCHING 
  7695.    o  DS_E_INVALID_ATTRIBUTE_SYNTAX 
  7696.    o  DS_E_NO_SUCH_ATTRIBUTE_OR_VALUE 
  7697.    o  DS_E_UNDEFINED_ATTRIBUTE_TYPE 
  7698.  
  7699.  
  7700. ΓòÉΓòÉΓòÉ 11.11. DS_C_AVA ΓòÉΓòÉΓòÉ
  7701.  
  7702. An instance of OM class DS_C_AVA(Attribute Value Assertion) is a proposition 
  7703. concerning the values of a directory entry. 
  7704.  
  7705. An instance of this OM class has the OM attributes of its superclasses, 
  7706. OM_C_OBJECT and DS_C_ATTRIBUTE, and no other OM attributes. An additional 
  7707. restriction on this OM class is that there must be exactly one value of the OM 
  7708. attribute DS_ATTRIBUTE_VALUES. The DS_ATTRIBUTE_TYPE remains single valued. The 
  7709. OM value syntax of DS_ATTRIBUTE_VALUES must conform to the rules outlined in 
  7710. DS_C_ATTRIBUTE_LIST. 
  7711.  
  7712.  
  7713. ΓòÉΓòÉΓòÉ 11.12. DS_C_COMMON_RESULTS ΓòÉΓòÉΓòÉ
  7714.  
  7715. The OM class DS_C_COMMON_RESULTS contains the results that are returned by, and 
  7716. are common to, the directory interrogation operations. 
  7717.  
  7718. It is an abstract OM class that has the OM attributes of its superclass, 
  7719. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  7720.  
  7721. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7722. Γöé Table 13. OM Attributes of DS_C_COMMON_RESULTS                     Γöé
  7723. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7724. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  7725. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  7726. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7727. Γöé DS_ALIAS_DEREFERENCED   Γöé OM_S_BOOLEAN        Γöé   -   Γöé   1   Γöé   -   Γöé
  7728. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7729. Γöé DS_PERFORMER        Γöé Object (DS_C_NAME)     Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  7730. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7731.  
  7732.  DS_ALIAS_DEREFERENCED                 This attribute indicates whether the 
  7733.                                        name of the target object that is passed 
  7734.                                        as a function argument includes an alias 
  7735.                                        that is dereferenced to determine the 
  7736.                                        DN. 
  7737.  
  7738.  DS_PERFORMER                          When present, this attribute gives the 
  7739.                                        DN of the performer of a particular 
  7740.                                        operation. It can be present when the 
  7741.                                        result is signed, and it holds the name 
  7742.                                        of the DSA that signed the result. The 
  7743.                                        DCE Directory Service does not support 
  7744.                                        the optional feature of signed results; 
  7745.                                        therefore, this OM attribute is never 
  7746.                                        present. 
  7747.  
  7748.  
  7749. ΓòÉΓòÉΓòÉ 11.13. DS_C_COMMUNICATIONS_ERROR ΓòÉΓòÉΓòÉ
  7750.  
  7751. An instance of OM class DS_C_COMMUNICATIONS_ERROR reports an error occurring in 
  7752. the other OSI services supporting the Directory Service. 
  7753.  
  7754. An application is not permitted to create or modify instances of this OM class. 
  7755. An instance of this OM class has the OM attributes of its superclasses, 
  7756. OM_C_OBJECT and DS_C_ERROR, and no additional OM attributes. 
  7757.  
  7758. Communications errors include those arising in remote operations, association 
  7759. control, presentation, session, and transport. 
  7760.  
  7761. The OM attribute DS_PROBLEM, which is inherited from the superclass DS_C_ERROR, 
  7762. identifies the problem. Its value is DS_E_COMMUNICATIONS_PROBLEM. 
  7763.  
  7764.  
  7765. ΓòÉΓòÉΓòÉ 11.14. DS_C_COMPARE_RESULT ΓòÉΓòÉΓòÉ
  7766.  
  7767. An instance of OM class DS_C_COMPARE_RESULT contains the results of a 
  7768. successful call to ds_compare. 
  7769.  
  7770. An application is not permitted to create or modify instances of this OM class. 
  7771. An instance of this OM class has the OM attributes of its superclasses, 
  7772. OM_C_OBJECT and DS_C_COMMON_RESULTS, in addition to the OM attributes listed in 
  7773. the following table. 
  7774.  
  7775. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7776. Γöé Table 14. OM Attribute of DS_C_COMPARE_RESULT                      Γöé
  7777. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7778. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  7779. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  7780. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7781. Γöé DS_FROM_ENTRY       Γöé OM_S_BOOLEAN        Γöé   -   Γöé   1   Γöé   -   Γöé
  7782. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7783. Γöé DS_MATCHED         Γöé OM_S_BOOLEAN        Γöé   -   Γöé   1   Γöé   -   Γöé
  7784. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7785. Γöé DS_OBJECT_NAME       Γöé Object (DS_C_NAME)     Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  7786. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7787.  
  7788.  DS_FROM_ENTRY               This attribute indicates whether the assertion is 
  7789.                              tested against the specified object's entry, 
  7790.                              rather than a copy of the entry. 
  7791.  
  7792.  DS_MATCHED                  This attribute indicates whether the assertion 
  7793.                              specified as an argument returns the value 
  7794.                              OM_TRUE. It takes the value OM_TRUE if the values 
  7795.                              are compared and matched; otherwise, it takes the 
  7796.                              value OM_FALSE. 
  7797.  
  7798.  DS_OBJECT_NAME              This attribute contains the distinguished name of 
  7799.                              the target object of the operation. It is present 
  7800.                              if the OM attribute DS_ALIAS_DEREFERENCED, 
  7801.                              inherited from the superclass DS_C_COMMON_RESULTS, 
  7802.                              is OM_TRUE. 
  7803.  
  7804.  
  7805. ΓòÉΓòÉΓòÉ 11.15. DS_C_CONTEXT ΓòÉΓòÉΓòÉ
  7806.  
  7807. An instance of OM class DS_C_CONTEXT contains per-operation arguments that are 
  7808. accepted by most of the interface functions. 
  7809.  
  7810. An instance of this OM class has the OM attributes of its superclass, 
  7811. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  7812.  
  7813. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7814. Γöé Table 15. OM Attributes of DS_C_CONTEXT                         Γöé
  7815. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7816. Γöé OM ATTRIBUTE      Γöé VALUE SYNTAX    Γöé  VALUE  Γöé   VALUE  Γöé VALUE INITIALLY  Γöé
  7817. Γöé             Γöé          Γöé  LENGTH  Γöé  NUMBER  Γöé          Γöé
  7818. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7819. Γöé                   COMMON ARGUMENTS                   Γöé
  7820. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7821. Γöé DS_EXT         Γöé Object(DS_C_EXT)  Γöé   -   Γöé   0 or   Γöé NULL       Γöé
  7822. Γöé             Γöé          Γöé      Γöé   more   Γöé          Γöé
  7823. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7824. Γöé DS_OPERATION_PROGRESS  Γöé Object(DS_C    Γöé   -   Γöé    1   Γöé DS_C_OPERATION  Γöé
  7825. Γöé             Γöé _OPERATION     Γöé      Γöé       Γöé _NOT_STARTED   Γöé
  7826. Γöé             Γöé _PROGRESS     Γöé      Γöé       Γöé          Γöé
  7827. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7828. Γöé DS_ALIASED_RDNS     Γöé OM_S_INTEGER    Γöé   -   Γöé  0 or 1  Γöé 0         Γöé
  7829. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7830. Γöé                   SERVICE CONTROLS                   Γöé
  7831. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7832. Γöé DS_CHAINING_PROHIB   Γöé OM_S_BOOLEAN    Γöé   -   Γöé    1   Γöé OM_TRUE      Γöé
  7833. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7834. Γöé DS_DONT_DEREFERENCE   Γöé OM_S_BOOLEAN    Γöé   -   Γöé    1   Γöé OM_FALSE     Γöé
  7835. Γöé _ALIASES        Γöé          Γöé      Γöé       Γöé          Γöé
  7836. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7837. Γöé DS_DONT_USE_COPY    Γöé OM_S_BOOLEAN    Γöé   -   Γöé    1   Γöé OM_TRUE      Γöé
  7838. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7839. Γöé DS_LOCAL_SCOPE     Γöé OM_S_BOOLEAN    Γöé   -   Γöé    1   Γöé OM_FALSE     Γöé
  7840. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7841. Γöé DS_PREFER_CHAINING   Γöé OM_S_BOOLEAN    Γöé   -   Γöé    1   Γöé OM_FALSE     Γöé
  7842. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7843. Γöé DS_PRIORITY       Γöé Enum(DS_Priority) Γöé   -   Γöé    1   Γöé DS_MEDIUM     Γöé
  7844. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7845. Γöé DS_SCOPE_OF_REFERRAL  Γöé Enum(DS_Scope   Γöé   -   Γöé  0 or 1  Γöé DS_COUNTRY    Γöé
  7846. Γöé             Γöé _of_Referral)   Γöé      Γöé       Γöé          Γöé
  7847. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7848. Γöé DS_SIZE_LIMIT      Γöé OM_S_INTEGER    Γöé   -   Γöé  0 or 1  Γöé -         Γöé
  7849. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7850. Γöé DS_TIME_LIMIT      Γöé OM_S_INTEGER    Γöé   -   Γöé  0 or 1  Γöé -         Γöé
  7851. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7852. Γöé                   LOCAL CONTROLS                   Γöé
  7853. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7854. Γöé DS_ASYNCHRONOUS     Γöé OM_S_BOOLEAN    Γöé   -   Γöé    1   Γöé OM_FALSE     Γöé
  7855. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7856. Γöé DS_AUTOMATIC      Γöé OM_S_BOOLEAN    Γöé   -   Γöé    1   Γöé OM_TRUE      Γöé
  7857. Γöé _CONTINUATION      Γöé          Γöé      Γöé       Γöé          Γöé
  7858. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7859.  
  7860. The context gathers several arguments passed to interface functions that are 
  7861. presumed to be relatively static for a given directory user during a particular 
  7862. directory interaction. The context is passed as an argument to each function 
  7863. that interrogates or updates the directory. Although it is generally assumed 
  7864. that the context is changed infrequently, the value of each argument can be 
  7865. changed between every operation if required. The DS_ASYNCHRONOUS argument must 
  7866. not be changed. Each argument is represented by one of the OM attributes of the 
  7867. DS_C_CONTEXT OM class. 
  7868.  
  7869. The context contains the common arguments defined in the standards (see The 
  7870. Directory:  Abstract Service Definition, ISO 9594-3, CCITT X.511), except that 
  7871. all security information is omitted. These are made up of a number of service 
  7872. controls explained in the following text, possible extensions in the DS_EXT OM 
  7873. attribute, and operation progress and alias dereferencing information in the 
  7874. DS_OPERATION_PROGRESS OM attribute. It also contains a number of arguments that 
  7875. provide local control over the interface. 
  7876.  
  7877. The OM attributes of the DS_C_CONTEXT OM class are as follows: 
  7878.  
  7879.    o  Common Arguments 
  7880.  
  7881.            DS_EXT                          This attribute represents any future 
  7882.                                            standardized extensions that need to 
  7883.                                            be applied to the Directory Service 
  7884.                                            operation. The DCE XDS 
  7885.                                            implementation does not evaluate 
  7886.                                            this optional OM attribute. 
  7887.  
  7888.            DS_OPERATION_PROGRESS           This attribute represents the state 
  7889.                                            that the Directory Service assumes 
  7890.                                            at the start of the operation. This 
  7891.                                            OM attribute normally takes its 
  7892.                                            default value, 
  7893.                                            DS_OPERATION_NOT_STARTED (described 
  7894.                                            in the DS_C_OPERATION_PROGRESS OM 
  7895.                                            class definition). 
  7896.  
  7897.            DS_ALIASED_RDNS                 This attribute indicates to the 
  7898.                                            Directory Service that the object 
  7899.                                            component of the operation parameter 
  7900.                                            is created by dereferencing of an 
  7901.                                            alias on an earlier operation 
  7902.                                            attempt. This value is set in the 
  7903.                                            referral response of the previous 
  7904.                                            operation. 
  7905.  
  7906.    o  Service Controls 
  7907.  
  7908.            DS_CHAINING_PROHIB              This attribute indicates that 
  7909.                                            chaining and other methods of 
  7910.                                            distributing the request around the 
  7911.                                            Directory Service are prohibited. 
  7912.  
  7913.            DS_DONT_DEREFERENCE_ALIASES     This attribute indicates that any 
  7914.                                            alias used to identify the target 
  7915.                                            entry of an operation is not 
  7916.                                            dereferenced. This allows 
  7917.                                            interrogation of alias entries 
  7918.                                            (aliases are never dereferenced 
  7919.                                            during updates). 
  7920.  
  7921.            DS_DONT_USE_COPY                This attribute indicates that the 
  7922.                                            request can only be satisfied by 
  7923.                                            accessing directory entries and not 
  7924.                                            by using copies of entries. This 
  7925.                                            includes both copies maintained in 
  7926.                                            other DSAs by bilateral agreement 
  7927.                                            and copies cached locally. 
  7928.  
  7929.            DS_LOCAL_SCOPE                  This attribute indicates that the 
  7930.                                            directory request will be satisfied 
  7931.                                            locally. The meaning of this option 
  7932.                                            is configured by an administrator. 
  7933.                                            This option typically restricts the 
  7934.                                            request to a single DSA or DMD. 
  7935.  
  7936.            DS_PREFER_CHAINING              This attribute indicates that 
  7937.                                            chaining is preferred to referrals 
  7938.                                            when necessary. The Directory 
  7939.                                            Service is not obliged to follow 
  7940.                                            this preference, and can return a 
  7941.                                            referral even if it is set. 
  7942.  
  7943.            DS_PRIORITY                     This attribute indicates the 
  7944.                                            priority, relative to other 
  7945.                                            directory requests, to which the 
  7946.                                            Directory Service attempts to 
  7947.                                            satisfy. This is not a guaranteed 
  7948.                                            service since there is no queuing 
  7949.                                            throughout the directory. Its value 
  7950.                                            must be one of the following: 
  7951.  
  7952.                                              -  DS_LOW 
  7953.                                              -  DS_MEDIUM 
  7954.                                              -  DS_HIGH 
  7955.  
  7956.            DS_SCOPE_OF_REFERRAL            This attribute indicates the part of 
  7957.                                            the directory where referrals are 
  7958.                                            limited. This includes referral 
  7959.                                            errors and partial outcome 
  7960.                                            qualifiers. Its value must be one of 
  7961.                                            the following: 
  7962.  
  7963.                                              -  DS_COUNTRY, meaning DSAs within 
  7964.                                                 the country where the request 
  7965.                                                 originates. 
  7966.  
  7967.                                              -  DS_DMD, meaning DSAs within the 
  7968.                                                 DMD where the request 
  7969.                                                 originates. 
  7970.  
  7971.                                            DS_SCOPE_OF_REFERRAL is an optional 
  7972.                                            attribute. The lack of this 
  7973.                                            attribute in a DS_C_CONTEXT object 
  7974.                                            indicates that the scope is not 
  7975.                                            limited. 
  7976.  
  7977.            DS_SIZE_LIMIT                   If present, this attribute indicates 
  7978.                                            the maximum number of objects that 
  7979.                                            ds_list or ds_search needs to return 
  7980.                                            information. If this limit is 
  7981.                                            exceeded, information is returned 
  7982.                                            about exactly this number of 
  7983.                                            objects. The objects that are chosen 
  7984.                                            are not specified because this can 
  7985.                                            depend on the timing of interactions 
  7986.                                            between DSAs, among other reasons. 
  7987.  
  7988.            DS_TIME_LIMIT                   If present, this attribute indicates 
  7989.                                            the maximum elapsed time, in 
  7990.                                            seconds, where the service needs to 
  7991.                                            be provided (not the processing time 
  7992.                                            devoted to the request). If this 
  7993.                                            limit is reached, a service error 
  7994.                                            (DS_E_TIME_LIMIT_EXCEEDED) is 
  7995.                                            returned, except for the ds_list or 
  7996.                                            ds_search operations, which return 
  7997.                                            an arbitrary selection of the 
  7998.                                            accumulated results. 
  7999.  
  8000.    o  Local Controls 
  8001.  
  8002.            DS_ASYNCHRONOUS (Optional Functionality) The interface currently 
  8003.                                            operates only synchronously (within 
  8004.                                            the same thread) as detailed in 
  8005.                                            Synchronous Operations. There is 
  8006.                                            only one possible value: 
  8007.  
  8008.                                            OM_FALSE, meaning that the operation 
  8009.                                            is performed sequentially 
  8010.                                            (synchronously) with the application 
  8011.                                            being blocked until a result or 
  8012.                                            error is returned. 
  8013.  
  8014.            DS_AUTOMATIC_CONTINUATION       This attribute indicates the 
  8015.                                            requestor's requirement for 
  8016.                                            continuation reference handling, 
  8017.                                            including referrals and those in 
  8018.                                            partial outcome qualifiers. The 
  8019.                                            value is one of the following: 
  8020.  
  8021.                                              -  OM_FALSE, meaning that the 
  8022.                                                 interface returns all 
  8023.                                                 continuation references to the 
  8024.                                                 application program. 
  8025.  
  8026.                                              -  OM_TRUE, meaning that 
  8027.                                                 continuation references are 
  8028.                                                 automatically processed and the 
  8029.                                                 subsequent results are returned 
  8030.                                                 to the application instead of 
  8031.                                                 the continuation references, 
  8032.                                                 whenever practical. This is a 
  8033.                                                 much simpler option than 
  8034.                                                 OM_FALSE unless the application 
  8035.                                                 has special requirements. 
  8036.  
  8037.  Note:  Continuation references can still be returned to the application if, 
  8038.         for example, the relevant DSA cannot be contacted. 
  8039.  
  8040.  Applications can assume that an object of OM class DS_C_CONTEXT, created with 
  8041.  default values of all its OM attributes, works with all the interface 
  8042.  functions. The DS_DEFAULT_CONTEXT constant can be used as an argument to 
  8043.  interface functions instead of creating an OM object with default values. 
  8044.  
  8045.  
  8046. ΓòÉΓòÉΓòÉ 11.16. DS_C_CONTINUATION_REF ΓòÉΓòÉΓòÉ
  8047.  
  8048. An instance of OM class DS_C_CONTINUATION_REF contains the information that 
  8049. enables a partially completed directory request to be continued (for example, 
  8050. following a referral). 
  8051.  
  8052. An application cannot create or modify instances of this OM class. An instance 
  8053. of this OM class has the OM attributes of its superclass, OM_C_OBJECT, in 
  8054. addition to the OM attributes listed in the following table. 
  8055.  
  8056. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8057. Γöé Table 16. OM Attribute of DS_C_CONTINUATION_REF                     Γöé
  8058. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8059. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8060. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8061. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8062. Γöé DS_ACCESS_POINTS      Γöé Object(DS_C_ACCESS_POINT)  Γöé   -   Γöé  1 or  Γöé   -   Γöé
  8063. Γöé              Γöé               Γöé     Γöé  more  Γöé      Γöé
  8064. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8065. Γöé DS_ALIASED_RDNS      Γöé OM_S_INTEGER        Γöé   -   Γöé   1   Γöé   -   Γöé
  8066. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8067. Γöé DS_OPERATION_PROGRESS   Γöé Object(DS_C_OPERATION_   Γöé   -   Γöé   1   Γöé   -   Γöé
  8068. Γöé              Γöé PROGRESS)          Γöé     Γöé     Γöé      Γöé
  8069. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8070. Γöé DS_RDNS_RESOLVED      Γöé OM_S_INTEGER        Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  8071. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8072. Γöé DS_TARGET_OBJECT      Γöé Object(DS_C_NAME)      Γöé   -   Γöé   1   Γöé   -   Γöé
  8073. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8074.  
  8075.  DS_ACCESS_POINTS                      This attribute indicates the names and 
  8076.                                        presentation addresses of the DSAs from 
  8077.                                        where the directory request is 
  8078.                                        continued. 
  8079.  
  8080.  DS_ALIASED_RDNS                       This attribute indicates how many (if 
  8081.                                        any) of the RDNs in the target name are 
  8082.                                        produced by dereferencing an alias. Its 
  8083.                                        value is 0 (zero) if no aliases are 
  8084.                                        dereferenced. This value needs to be 
  8085.                                        used in the DS_C_CONTEXT of any 
  8086.                                        continued operation. 
  8087.  
  8088.  DS_OPERATION_PROGRESS                 This attribute indicates the state where 
  8089.                                        the directory request must be continued. 
  8090.                                        This value needs to be used in the 
  8091.                                        DS_C_CONTEXT of any continued operation. 
  8092.  
  8093.  DS_RDNS_RESOLVED                      This attribute indicates the number of 
  8094.                                        RDNs in the supplied object name that 
  8095.                                        are resolved (using internal references) 
  8096.                                        and not just assumed to be correct 
  8097.                                        (using cross-references). 
  8098.  
  8099.  DS_TARGET_OBJECT                      This attribute indicates the name of the 
  8100.                                        object that the continuation must focus. 
  8101.  
  8102.  
  8103. ΓòÉΓòÉΓòÉ 11.17. DS_C_DS_DN ΓòÉΓòÉΓòÉ
  8104.  
  8105. An instance of OM class DS_C_DS_DN represents a name of a directory object. 
  8106.  
  8107. An instance of this OM class has the OM attributes of its superclasses, 
  8108. OM_C_OBJECT and DS_C_NAME, in addition to the OM attribute listed in the 
  8109. following table. 
  8110.  
  8111. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8112. Γöé Table 17. OM Attribute of DS_C_DS_DN                          Γöé
  8113. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8114. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8115. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8116. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8117. Γöé DS_RNDS          Γöé Object(DS_C_DS_RDN)     Γöé   -   Γöé  0 or  Γöé   -   Γöé
  8118. Γöé              Γöé               Γöé     Γöé  more  Γöé      Γöé
  8119. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8120.  
  8121.  DS_RDNS                               This attribute indicates the sequence of 
  8122.                                        RDNs that define the path through the 
  8123.                                        DIT from its root to the object that the 
  8124.                                        DS_C_DS_DN indicates. The DS_C_DS_DN of 
  8125.                                        the root of the directory is the null 
  8126.                                        name (no DS_RDNS values). The order of 
  8127.                                        the values is significant; the first 
  8128.                                        value is closest to the root and the 
  8129.                                        last value is the RDN of the object. 
  8130.  
  8131.  
  8132. ΓòÉΓòÉΓòÉ 11.18. DS_C_DS_RDN ΓòÉΓòÉΓòÉ
  8133.  
  8134. An instance of OM class DS_C_DS_RDN is a relative distinguished name. An RDN 
  8135. uniquely identifies an immediate subordinate of an object whose entry is 
  8136. displayed in the DIT. 
  8137.  
  8138. An instance of this OM class has the OM attributes of its superclasses, 
  8139. OM_C_OBJECT and DS_C_RELATIVE_NAME, in addition to the OM attribute listed in 
  8140. the following table. 
  8141.  
  8142. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8143. Γöé Table 18. OM Attribute of DS_C_DS_RDN                          Γöé
  8144. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8145. Γöé OM ATTRIBUTES       Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8146. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8147. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8148. Γöé DS_AVAS          Γöé Object(DS_C_AVA)      Γöé   -   Γöé  1 or  Γöé   -   Γöé
  8149. Γöé              Γöé               Γöé     Γöé  more  Γöé      Γöé
  8150. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8151.  
  8152.  DS_AVAS                               This attribute indicates the DS_AVAS 
  8153.                                        that are marked by the DIB as components 
  8154.                                        of the object's RDN. The assertion is 
  8155.                                        TRUE of the object but not of any of its 
  8156.                                        siblings, and the attribute type and 
  8157.                                        value are displayed in the object's 
  8158.                                        directory entry. The order of the 
  8159.                                        DS_AVAS is not significant. 
  8160.  
  8161.  
  8162. ΓòÉΓòÉΓòÉ 11.19. DS_C_ENTRY_INFO ΓòÉΓòÉΓòÉ
  8163.  
  8164. An instance of OM class DS_C_ENTRY_INFO contains selected information from a 
  8165. single directory entry. 
  8166.  
  8167. An instance of this OM class has the OM attributes of its superclasses, 
  8168. OM_C_OBJECT and DS_C_ATTRIBUTE_LIST, in addition to the OM attributes listed in 
  8169. the following table. 
  8170.  
  8171. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8172. Γöé Table 19. OM Attributes of DS_C_ENTRY_INFO                       Γöé
  8173. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8174. Γöé OM ATTRIBUTES       Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8175. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8176. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8177. Γöé DS_FROM_ ENTRY       Γöé OM_S_BOOLEAN        Γöé   -   Γöé   1   Γöé   -   Γöé
  8178. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8179. Γöé DS_OBJECT_NAME       Γöé Object(DS_C_NAME)      Γöé   -   Γöé   1   Γöé   -   Γöé
  8180. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8181.  
  8182. The OM attribute DS_ATTRIBUTES is inherited from the superclass 
  8183. DS_C_ATTRIBUTE_LIST. It contains the information extracted from the directory 
  8184. entry of the target object. The type of each attribute requested and located is 
  8185. indicated in the list as are its values, if types and values are requested. 
  8186.  
  8187. The OM class-specific OM attributes are as follows: 
  8188.  
  8189.  DS_FROM_ENTRY                         This attribute indicates whether the 
  8190.                                        information is extracted from the 
  8191.                                        specified object's entry, rather than 
  8192.                                        from a copy of the entry. 
  8193.  
  8194.  DS_OBJECT_NAME                        This attribute contains the object's 
  8195.                                        distinguished name. 
  8196.  
  8197.  
  8198. ΓòÉΓòÉΓòÉ 11.20. DS_C_ENTRY_INFO_SELECTION ΓòÉΓòÉΓòÉ
  8199.  
  8200. An instance of OM class DS_C_ENTRY_INFO_SELECTION identifies the information to 
  8201. be extracted from a directory entry. 
  8202.  
  8203. An instance of this OM class has the OM attributes of its superclass, 
  8204. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  8205.  
  8206. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8207. Γöé Table 20. OM Attributes of DS_C_ENTRY_INFO_SELECTION                  Γöé
  8208. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8209. Γöé OM ATTRIBUTE       Γöé VALUE SYNTAX       Γöé  VALUE Γöé  VALUE Γöé    VALUE   Γöé
  8210. Γöé              Γöé              Γöé LENGTH Γöé NUMBER Γöé   INITIALLY  Γöé
  8211. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8212. Γöé DS_ALL_ATTRIBUTES     Γöé OM_S_BOOLEAN       Γöé   -  Γöé   1  Γöé   OM_TRUE   Γöé
  8213. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8214. Γöé DS_ATTRIBUTES_SELECTED  Γöé String(OM_S_OBJECT    Γöé   -  Γöé  0 or  Γöé     -    Γöé
  8215. Γöé              Γöé _IDENTIFIER_STRING)    Γöé     Γöé  more  Γöé         Γöé
  8216. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8217. Γöé DS_INFO_TYPE       Γöé Enum(DS_Information    Γöé   -  Γöé   1  Γöé   DS_TYPES   Γöé
  8218. Γöé              Γöé _Type)          Γöé     Γöé     Γöé  _AND_VALUES  Γöé
  8219. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8220.  
  8221.  DS_ALL_ATTRIBUTES                     This attribute indicates which 
  8222.                                        attributes are relevant. It can take one 
  8223.                                        of the following values: 
  8224.  
  8225.                                          o  OM_FALSE, meaning that information 
  8226.                                             is only requested on those 
  8227.                                             attributes that are listed in the 
  8228.                                             OM attribute 
  8229.                                             DS_ATTRIBUTES_SELECTED. 
  8230.  
  8231.                                          o  OM_TRUE, meaning that information 
  8232.                                             is requested on all attributes in 
  8233.                                             the directory entry. Any values of 
  8234.                                             the OM attribute 
  8235.                                             DS_ATTRIBUTES_SELECTED are ignored 
  8236.                                             in this case. 
  8237.  
  8238.  DS_ATTRIBUTES_SELECTED                This attribute lists the types of 
  8239.                                        attributes in the entry from which 
  8240.                                        information will be extracted. The value 
  8241.                                        of this OM attribute is used only if the 
  8242.                                        value of DS_ALL_ATTRIBUTES is OM_FALSE 
  8243.                                        If an empty list is supplied, no 
  8244.                                        attribute data is returned that could be 
  8245.                                        used to verify the existence of an entry 
  8246.                                        for a distinguished name. 
  8247.  
  8248.  DS_INFO_TYPE                          This attribute identifies what 
  8249.                                        information will be extracted from each 
  8250.                                        attribute identified. It must take one 
  8251.                                        of the following values: 
  8252.  
  8253.                                          o  DS_TYPES_ONLY, meaning that only 
  8254.                                             the attribute types of the selected 
  8255.                                             attributes in the entry are 
  8256.                                             returned. 
  8257.  
  8258.                                          o  DS_TYPES_AND_VALUES, meaning that 
  8259.                                             both the attribute types and the 
  8260.                                             attribute values of the selected 
  8261.                                             attributes in the entry are 
  8262.                                             returned. 
  8263.  
  8264.  
  8265. ΓòÉΓòÉΓòÉ 11.21. DS_C_ENTRY_MOD ΓòÉΓòÉΓòÉ
  8266.  
  8267. An instance of OM class DS_C_ENTRY_MOD describes a single modification to a 
  8268. specified attribute of a directory entry. 
  8269.  
  8270. An instance of this OM class has the OM attributes of its superclasses, 
  8271. OM_C_OBJECT and DS_C_ATTRIBUTE, in addition to the OM attribute listed in the 
  8272. following table. 
  8273.  
  8274. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8275. Γöé Table 21. OM Attribute of DS_C_ENTRY_MOD                        Γöé
  8276. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8277. Γöé OM ATTRIBUTE       Γöé VALUE SYNTAX       Γöé  VALUE Γöé  VALUE Γöé  VALUE INI-  Γöé
  8278. Γöé              Γöé              Γöé LENGTH Γöé NUMBER Γöé   TIALLY   Γöé
  8279. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8280. Γöé DS_MOD_TYPE        Γöé Enum(DS_Modification_TypeΓöé   -  Γöé   1  Γöé   DS_ADD   Γöé
  8281. Γöé              Γöé              Γöé     Γöé     Γöé  _ATTRIBUTE  Γöé
  8282. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8283.  
  8284. The attribute type to be modified, and the associated values, are specified in 
  8285. the OM attributes DS_ATTRIBUTE_TYPE and DS_ATTRIBUTE_VALUES that are inherited 
  8286. from the DS_C_ATTRIBUTE superclass. 
  8287.  
  8288.  DS_MOD_TYPE          This attribute identifies the type of modification. It 
  8289.                       must have one of the following values: 
  8290.  
  8291.                         o  DS_ADD_ATTRIBUTE, meaning that the specified 
  8292.                            attribute is absent and will be added with the 
  8293.                            specified values. 
  8294.  
  8295.                         o  DS_ADD_VALUES, meaning that the specified attribute 
  8296.                            is present and that one or more specified values 
  8297.                            will be added to it. 
  8298.  
  8299.                         o  DS_REMOVE_ATTRIBUTE, meaning that the specified 
  8300.                            attribute is present and will be removed. Any values 
  8301.                            present in the OM attribute DS_ATTRIBUTE_VALUES are 
  8302.                            ignored. 
  8303.  
  8304.                         o  DS_REMOVE_VALUES, meaning that the specified 
  8305.                            attribute is present and that one or more specified 
  8306.                            values will be removed from it. 
  8307.  
  8308.  
  8309. ΓòÉΓòÉΓòÉ 11.22. DS_C_ENTRY_MOD_LIST ΓòÉΓòÉΓòÉ
  8310.  
  8311. An instance of OM class DS_C_ENTRY_MOD_LIST contains a sequence of changes to 
  8312. be made to a directory entry. 
  8313.  
  8314. An instance of this OM class has the OM attributes of its superclass, 
  8315. OM_C_OBJECT, in addition to the OM attribute listed in the following table. 
  8316.  
  8317. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8318. Γöé Table 22. OM Attribute of DS_C_ENTRY_MOD_LIST                      Γöé
  8319. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8320. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8321. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8322. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8323. Γöé DS_CHANGES         Γöé Object(DS_C_ENTRY_MOD)   Γöé   -   Γöé  1 or  Γöé   -   Γöé
  8324. Γöé              Γöé               Γöé     Γöé  more  Γöé      Γöé
  8325. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8326.  
  8327.  DS_CHANGES            This attribute identifies the modifications to be made 
  8328.                        (in the order specified) to the directory entry of the 
  8329.                        specified object. 
  8330.  
  8331.  
  8332. ΓòÉΓòÉΓòÉ 11.23. DS_C_ERROR ΓòÉΓòÉΓòÉ
  8333.  
  8334. The OM class DS_C_ERROR contains the parameters common to all errors. 
  8335.  
  8336. It is an abstract OM class with the OM attributes of its superclass, 
  8337. OM_C_OBJECT, in addition to the OM attribute listed in the following table. 
  8338.  
  8339. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8340. Γöé Table 23. OM Attribute of DS_C_ERROR                          Γöé
  8341. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8342. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8343. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8344. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8345. Γöé DS_PROBLEM         Γöé Enum(DS_Problem)      Γöé   -   Γöé   1   Γöé   -   Γöé
  8346. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8347.  
  8348. Details of errors are returned in an instance of a subclass of this OM class. 
  8349. Each such subclass represents a particular kind of error and is one of the 
  8350. following: 
  8351.  
  8352.    o  DS_C_ABANDON_FAILED 
  8353.    o  DS_C_ATTRIBUTE_PROBLEM 
  8354.    o  DS_C_COMMUNICATIONS_ERROR 
  8355.    o  DS_C_LIBRARY_ERROR 
  8356.    o  DS_C_NAME_ERROR 
  8357.    o  DS_C_SECURITY_ERROR 
  8358.    o  DS_C_SERVICE_ERROR 
  8359.    o  DS_C_SYSTEM_ERROR 
  8360.    o  DS_C_UPDATE_ERROR 
  8361.  
  8362.  A number of possible values are defined for these subclasses. DCE XDS does not 
  8363.  return other values for error conditions described in this section. 
  8364.  Information on system errors can be found in DS_C_SYSTEM_ERROR. The following 
  8365.  is a list of the error values. Each error OM class section defines the 
  8366.  possible error values associated with that class. For a description of the 
  8367.  errors please refer to the DFS Client Guide and Reference. 
  8368.  
  8369.    o  DS_E_ADMIN_LIMIT_EXCEEDED 
  8370.    o  DS_E_AFFECTS_MULTIPLE_DSAS 
  8371.    o  DS_E_ALIAS_DEREFERENCING_PROBLEM 
  8372.    o  DS_E_ALIAS_PROBLEM 
  8373.    o  DS_E_ATTRIBUTE_OR_VALUE_EXISTS 
  8374.    o  DS_E_BAD_ARGUMENT 
  8375.    o  DS_E_BAD_CLASS 
  8376.    o  DS_E_BAD_CONTEXT 
  8377.    o  DS_E_BAD_NAME 
  8378.    o  DS_E_BAD_SESSION 
  8379.    o  DS_E_BAD_WORKSPACE 
  8380.    o  DS_E_BUSY 
  8381.    o  DS_E_CANNOT_ABANDON 
  8382.    o  DS_E_CHAINING_REQUIRED 
  8383.    o  DS_E_COMMUNICATIONS_PROBLEM 
  8384.    o  DS_E_CONSTRAINT_VIOLATION 
  8385.    o  DS_E_DIT_ERROR 
  8386.    o  DS_E_ENTRY_EXISTS 
  8387.    o  DS_E_INAPPROP_AUTHENTICATION 
  8388.    o  DS_E_INAPPROP_MATCHING 
  8389.    o  DS_E_INSUFFICIENT_ACCESS_RIGHTS 
  8390.    o  DS_E_INVALID_ATTRIBUTE_SYNTAX 
  8391.    o  DS_E_INVALID_ATTRIBUTE_VALUE 
  8392.    o  DS_E_INVALID_CREDENTIALS 
  8393.    o  DS_E_INVALID_REF 
  8394.    o  DS_E_INVALID_SIGNATURE 
  8395.    o  DS_E_LOOP_DETECTED 
  8396.    o  DS_E_MISCELLANEOUS 
  8397.    o  DS_E_MISSING_TYPE 
  8398.    o  DS_E_MIXED_SYNCHRONOUS 
  8399.    o  DS_E_NAMING_VIOLATION 
  8400.    o  DS_E_NO_INFO 
  8401.    o  DS_E_NO_SUCH_ATTRIBUTE_OR_VALUE 
  8402.    o  DS_E_NO_SUCH_OBJECT 
  8403.    o  DS_E_NO_SUCH_OPERATION 
  8404.    o  DS_E_NOT_ALLOWED_ON_NON_LEAF 
  8405.    o  DS_E_NOT_ALLOWED_ON_RDN 
  8406.    o  DS_E_NOT_SUPPORTED 
  8407.    o  DS_E_OBJECT_CLASS_MOD_PROHIB 
  8408.    o  DS_E_OBJECT_CLASS_VIOLATION 
  8409.    o  DS_E_OUT_OF_SCOPE 
  8410.    o  DS_E_PROTECTION_REQUIRED 
  8411.    o  DS_E_TIME_LIMIT_EXCEEDED 
  8412.    o  DS_E_TOO_LATE 
  8413.    o  DS_E_TOO_MANY_OPERATIONS 
  8414.    o  DS_E_TOO_MANY_SESSIONS 
  8415.    o  DS_E_UNABLE_TO_PROCEED 
  8416.    o  DS_E_UNAVAILABLE 
  8417.    o  DS_E_UNAVAILABLE_CRIT_EXT 
  8418.    o  DS_E_UNDEFINED_ATTRIBUTE_TYPE 
  8419.    o  DS_E_UNWILLING_TO_PERFORM 
  8420.  
  8421.  
  8422. ΓòÉΓòÉΓòÉ 11.24. DS_C_EXT ΓòÉΓòÉΓòÉ
  8423.  
  8424. An instance of OM class DS_C_EXT indicates that a standardized extension to the 
  8425. Directory Service is outlined in the standards. Such extensions will only be 
  8426. standardized in post-1988 versions of the standards. Therefore, this OM class 
  8427. is not used by the XDS API and is only included for X/Open conformance 
  8428. purposes. 
  8429.  
  8430. An instance of this OM class has the OM attributes of its superclass, 
  8431. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  8432.  
  8433. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8434. Γöé Table 24. OM Attribute of DS_C_EXT                           Γöé
  8435. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8436. Γöé OM ATTRIBUTE       Γöé VALUE SYNTAX       Γöé  VALUE Γöé  VALUE Γöé    VALUE   Γöé
  8437. Γöé              Γöé              Γöé LENGTH Γöé NUMBER Γöé   INITIALLY  Γöé
  8438. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8439. Γöé DS_CRIT          Γöé OM_S_BOOLEAN       Γöé   -  Γöé   1  Γöé   OM_FALSE   Γöé
  8440. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8441. Γöé DS_IDENT         Γöé OM_S_INTEGER       Γöé   -  Γöé   1  Γöé     -    Γöé
  8442. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8443. Γöé DS_ITEM_PARAMETERS    Γöé Any            Γöé   -  Γöé   1  Γöé     -    Γöé
  8444. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8445.  
  8446.  DS_CRIT                           This attribute must have one of the 
  8447.                                    following values: 
  8448.  
  8449.                                      o  OM_FALSE, meaning that the originator 
  8450.                                         permits the operation to be performed 
  8451.                                         even if the extension is not available. 
  8452.  
  8453.                                      o  OM_TRUE, meaning that the originator 
  8454.                                         mandates that the extended operation be 
  8455.                                         performed. If the extended operation is 
  8456.                                         not performed, an error is reported. 
  8457.  
  8458.  DS_IDENT                          This attribute identifies the service 
  8459.                                    extension. 
  8460.  
  8461.  DS_ITEM_PARAMETERS                This OM attribute supplies the parameters of 
  8462.                                    the extension. Its syntax is determined by 
  8463.                                    the value of DS_IDENT. 
  8464.  
  8465.  
  8466. ΓòÉΓòÉΓòÉ 11.25. DS_C_FILTER ΓòÉΓòÉΓòÉ
  8467.  
  8468. An instance of OM class DS_C_FILTER is used to select or reject an object on 
  8469. the basis of information in its directory entry. At any point in time, an 
  8470. attribute filter has a value relative to every object. The value is FALSE, 
  8471. TRUE, or undefined. The object is selected if, and only if, the filter's value 
  8472. is TRUE. 
  8473.  
  8474. An instance of this OM class has the OM attributes of its superclass, 
  8475. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  8476.  
  8477. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8478. Γöé Table 25. OM Attributes of DS_C_FILTER                         Γöé
  8479. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8480. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8481. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8482. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8483. Γöé DS_FILTER_ITEMS      Γöé Object(DS_C_FILTER_ITEM)  Γöé   -   Γöé  0 or  Γöé   -   Γöé
  8484. Γöé              Γöé               Γöé     Γöé  more  Γöé      Γöé
  8485. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8486. Γöé DS_FILTERS         Γöé Object(DS_C_FILTER)     Γöé   -   Γöé  0 or  Γöé   -   Γöé
  8487. Γöé              Γöé               Γöé     Γöé  more  Γöé      Γöé
  8488. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8489. Γöé DS_FILTER_TYPE       Γöé Enum(DS_Filter_Type)    Γöé   -   Γöé   1   Γöé  DS_AND  Γöé
  8490. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8491.  
  8492. A filter is a collection of less elaborate filters and elementary 
  8493. DS_FILTER_ITEMS, together with a Boolean operation. The filter value is 
  8494. undefined if, and only if, all the component DS_FILTERS and DS_FILTER_ITEMS are 
  8495. undefined. Otherwise, the filter has a Boolean value with respect to any 
  8496. directory entry. This value can be determined by evaluating each of the nested 
  8497. components and combining their values using the Boolean operation. The 
  8498. components whose values are undefined are ignored. 
  8499.  
  8500.  DS_FILTER_ITEMS              This attribute is a collection of assertions, 
  8501.                               each relating to just one attribute of a 
  8502.                               directory entry. 
  8503.  
  8504.  DS_FILTERS                   This attribute is a collection of simpler 
  8505.                               filters. 
  8506.  
  8507.  DS_FILTER_TYPE               This attribute is the filter's type. It can have 
  8508.                               any of the following values: 
  8509.  
  8510.                                 o  DS_AND, meaning that the filter is the 
  8511.                                    logical conjunction of its components. The 
  8512.                                    filter is TRUE unless any of the nested 
  8513.                                    filters or filter items is FALSE. If there 
  8514.                                    are no nested components, the filter is 
  8515.                                    TRUE. 
  8516.  
  8517.                                 o  DS_OR, meaning that the filter is the 
  8518.                                    logical disjunction of its components. The 
  8519.                                    filter is FALSE unless any of the nested 
  8520.                                    filters or filter items is TRUE. If there 
  8521.                                    are no nested components, the filter is 
  8522.                                    FALSE. 
  8523.  
  8524.                                 o  DS_NOT, meaning that the result of this 
  8525.                                    filter is reversed. There must be exactly 
  8526.                                    one nested filter or filter item. The filter 
  8527.                                    is TRUE if the enclosed filter or filter 
  8528.                                    item is FALSE, and is FALSE if the enclosed 
  8529.                                    filter or filter item is TRUE. 
  8530.  
  8531.  
  8532. ΓòÉΓòÉΓòÉ 11.26. DS_C_FILTER_ITEM ΓòÉΓòÉΓòÉ
  8533.  
  8534. An instance of OM class DS_C_FILTER_ITEM is a component of DS_C_FILTER. It is 
  8535. an assertion about the existence or values of a single attribute type in a 
  8536. directory entry. 
  8537.  
  8538. An instance of this OM class has the OM attributes of its superclasses, 
  8539. OM_C_OBJECT and DS_C_ATTRIBUTE, in addition to the OM attributes listed in the 
  8540. following table. 
  8541.  
  8542. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8543. Γöé Table 26. OM Attributes of DS_C_FILTER_ITEM                       Γöé
  8544. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8545. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8546. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8547. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8548. Γöé DS_FILTER_ITEM_TYPE    Γöé Enum(DS_Filter_Item_Type)  Γöé   -   Γöé   1   Γöé   -   Γöé
  8549. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8550. Γöé DS_FINAL_SUBSTRING     Γöé String(*)          Γöé  1 or  Γöé  0 or 1 Γöé   -   Γöé
  8551. Γöé              Γöé               Γöé  more  Γöé     Γöé      Γöé
  8552. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8553. Γöé DS_INITIAL_SUBSTRING    Γöé String(*)          Γöé  1 or  Γöé  0 or 1 Γöé   -   Γöé
  8554. Γöé              Γöé               Γöé  more  Γöé     Γöé      Γöé
  8555. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8556.  
  8557. Note:  OM attributes DS_ATTRIBUTE_TYPE and DS_ATTRIBUTE_VALUES are inherited 
  8558.        from the superclass DS_C_ATTRIBUTE. 
  8559.  
  8560.  The value of the filter item is undefined in the following cases: 
  8561.  
  8562.    o  The DS_ATTRIBUTE_TYPE is not known. 
  8563.  
  8564.    o  None of the DS_ATTRIBUTE_VALUES conform to the attribute syntax defined 
  8565.       for that attribute type. 
  8566.  
  8567.    o  The DS_FILTER_ITEM_TYPE uses a matching rule that is not defined for the 
  8568.       attribute syntax. 
  8569.  
  8570.  Access control restrictions can also cause the value to be undefined. 
  8571.  
  8572.  DS_FILTER_ITEM_TYPE            This attribute identifies the type of filter 
  8573.                                 item and, therefore, the nature of the filter. 
  8574.                                 The filter item can adopt any of the following 
  8575.                                 values: 
  8576.  
  8577.                                   o  DS_APPROXIMATE_MATCH, meaning that the 
  8578.                                      filter is TRUE if the directory entry 
  8579.                                      contains at least one value of the 
  8580.                                      specified type that is approximately equal 
  8581.                                      to that specified (the meaning of 
  8582.                                      approximately equal is implementation 
  8583.                                      dependent); otherwise, the filter is 
  8584.                                      FALSE. 
  8585.  
  8586.                                      Rules for approximate matching are defined 
  8587.                                      locally. For example, an approximate match 
  8588.                                      may take into account spelling variations 
  8589.                                      or employ phonetic comparison rules. In 
  8590.                                      the absence of any such capabilities, a 
  8591.                                      DSA needs to treat an approximate match as 
  8592.                                      a test for equality. DCE GDS supports 
  8593.                                      phonetic comparisons. There must be 
  8594.                                      exactly one value of the OM attribute 
  8595.                                      DS_ATTRIBUTE_VALUES. 
  8596.  
  8597.                                   o  DS_EQUALITY, meaning that the filter is 
  8598.                                      TRUE if the entry contains at least one 
  8599.                                      value of the specified type that is equal 
  8600.                                      to the value specified, according to the 
  8601.                                      equality matching rule in force; 
  8602.                                      otherwise, the filter is FALSE. There must 
  8603.                                      be exactly one value of the OM attribute 
  8604.                                      DS_ATTRIBUTE_VALUES. 
  8605.  
  8606.                                   o  DS_GREATER_OR_EQUAL, meaning that the 
  8607.                                      filter item is TRUE if, and only if, at 
  8608.                                      least one value of the attribute is 
  8609.                                      greater than or equal to the supplied 
  8610.                                      value. There must be exactly one value of 
  8611.                                      the OM attribute DS_ATTRIBUTE_VALUES. 
  8612.  
  8613.                                   o  DS_LESS_OR_EQUAL, meaning that the filter 
  8614.                                      item is TRUE if, and only if, at least one 
  8615.                                      value of the attribute is less than or 
  8616.                                      equal to the supplied value. There must be 
  8617.                                      exactly one value of the OM attribute 
  8618.                                      DS_ATTRIBUTE_VALUES. 
  8619.  
  8620.                                   o  DS_PRESENT, meaning that the filter is 
  8621.                                      TRUE if the entry contains an attribute of 
  8622.                                      the specified type; otherwise, it is 
  8623.                                      FALSE. 
  8624.  
  8625.                                      Any values of the OM attribute 
  8626.                                      DS_ATTRIBUTE_VALUES are ignored. 
  8627.  
  8628.                                   o  DS_SUBSTRINGS, meaning that the filter is 
  8629.                                      TRUE if the entry contains at least one 
  8630.                                      value of the specified attribute type that 
  8631.                                      contains all of the specified substrings 
  8632.                                      in the given order; otherwise, the filter 
  8633.                                      is FALSE. 
  8634.  
  8635.                                      Any number of substrings can be given as 
  8636.                                      values of the OM attribute 
  8637.                                      DS_ATTRIBUTE_VALUES. Similarly, no 
  8638.                                      substrings can be specified. There can 
  8639.                                      also be a substring in 
  8640.                                      DS_INITIAL_SUBSTRING or 
  8641.                                      DS_FINAL_SUBSTRING, or both. The 
  8642.                                      substrings do not overlap, but they can be 
  8643.                                      separated from each other or from the ends 
  8644.                                      of the attribute value by zero or more 
  8645.                                      string elements. However, at least one 
  8646.                                      attribute of type DS_ATTRIBUTE_VALUES, 
  8647.                                      DS_INITIAL_SUBSTRING, or 
  8648.                                      DS_FINAL_SUBSTRING must exist. 
  8649.  
  8650.  DS_FINAL_SUBSTRING             If present, this attribute is the substring 
  8651.                                 that will match the final part of an attribute 
  8652.                                 value in the entry. This attribute can only 
  8653.                                 exist if the DS_FILTER_ITEM_TYPE is equal to 
  8654.                                 DS_SUBSTRINGS. 
  8655.  
  8656.  DS_INITIAL_SUBSTRING           If present, this attribute is the substring 
  8657.                                 that will match the initial part of an 
  8658.                                 attribute value in the entry. 
  8659.  
  8660.  
  8661. ΓòÉΓòÉΓòÉ 11.27. DS_C_LIBRARY_ERROR ΓòÉΓòÉΓòÉ
  8662.  
  8663. An instance of OM class DS_C_LIBRARY_ERROR reports an error detected by the 
  8664. interface function library. 
  8665.  
  8666. An application is not permitted to create or modify instances of this OM class. 
  8667. An instance of this OM class has the OM attributes of its superclasses, 
  8668. OM_C_OBJECT and DS_C_ERROR, and no additional OM attributes. 
  8669.  
  8670. Each function has several possible errors that can be detected by the library 
  8671. itself and that are returned directly by the subroutine. These errors occur 
  8672. when the library itself is incapable of performing an action, submitting a 
  8673. service request, or deciphering a response from the Directory Service. 
  8674.  
  8675. The OM attribute DS_PROBLEM, which is inherited from the superclass DS_C_ERROR, 
  8676. identifies the particular library error that occurred. (In reference pages, the 
  8677. ERRORS section of each function description lists the errors that the 
  8678. respective function can return.) Its value is one of the following: 
  8679.  
  8680.    o  DS_E_BAD_ARGUMENT 
  8681.    o  DS_E_BAD_CLASS 
  8682.    o  DS_E_BAD_CONTEXT 
  8683.    o  DS_E_BAD_NAME 
  8684.    o  DS_E_BAD_SESSION 
  8685.    o  DS_E_MISCELLANEOUS 
  8686.    o  DS_E_MISSING_TYPE 
  8687.    o  DS_E_MIXED_SYNCHRONOUS 
  8688.    o  DS_E_NOT_SUPPORTED 
  8689.    o  DS_E_TOO_MANY_OPERATIONS 
  8690.    o  DS_E_TOO_MANY_SESSIONS 
  8691.  
  8692.  
  8693. ΓòÉΓòÉΓòÉ 11.28. DS_C_LIST_INFO ΓòÉΓòÉΓòÉ
  8694.  
  8695. An instance of OM class DS_C_LIST_INFO is part of the results of ds_list. 
  8696.  
  8697. An application is not permitted to create or modify instances of this OM class. 
  8698. An instance of this OM class has the OM attributes of its superclasses, 
  8699. OM_C_OBJECT and DS_C_COMMON_RESULTS, in addition to the OM attributes listed in 
  8700. the following table. 
  8701.  
  8702. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8703. Γöé Table 27. OM Attributes of DS_C_LIST_INFO                        Γöé
  8704. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8705. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8706. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8707. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8708. Γöé DS_OBJECT_NAME       Γöé Object(DS_C_NAME)      Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  8709. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8710. Γöé DS_PARTIAL         Γöé Object(DS_C_PARTIAL_    Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  8711. Γöé _OUTCOME_QUAL       Γöé OUTCOME_QUAL)        Γöé     Γöé     Γöé      Γöé
  8712. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8713. Γöé DS_SUBORDINATES      Γöé Object(DS_C_LIST_INFO_ITEM)Γöé   -   Γöé  0 or  Γöé   -   Γöé
  8714. Γöé              Γöé               Γöé     Γöé  more  Γöé      Γöé
  8715. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8716.  
  8717.  DS_OBJECT_NAME                           This attribute is the distinguished 
  8718.                                           name of the target object of the 
  8719.                                           operation. It is present if the OM 
  8720.                                           attribute DS_ALIAS_DEREFERENCED, 
  8721.                                           inherited from the superclass 
  8722.                                           DS_C_COMMON_RESULTS is OM_TRUE. 
  8723.  
  8724.  DS_PARTIAL_OUTCOME_QUAL                  This OM attribute value is present if 
  8725.                                           the list of subordinates is 
  8726.                                           incomplete. The DSA or DSAs that 
  8727.                                           provided this list did not complete 
  8728.                                           the search for some reason. The 
  8729.                                           partial outcome qualifier contains 
  8730.                                           details of why the search is not 
  8731.                                           completed and which areas of the 
  8732.                                           directory have not been searched. 
  8733.  
  8734.  DS_SUBORDINATES                          This attribute contains information 
  8735.                                           about zero or more subordinate 
  8736.                                           objects identified by ds_list. 
  8737.  
  8738.  
  8739. ΓòÉΓòÉΓòÉ 11.29. DS_C_LIST_INFO_ITEM ΓòÉΓòÉΓòÉ
  8740.  
  8741. An instance of OM class DS_C_LIST_INFO_ITEM comprises details returned by 
  8742. ds_list of a single subordinate object. 
  8743.  
  8744. An application is not permitted to create or modify instances of this OM class. 
  8745. An instance of this OM class has the OM attributes of its superclass, 
  8746. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  8747.  
  8748. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8749. Γöé Table 28. OM Attributes of DS_C_LIST_INFO_ITEM                     Γöé
  8750. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8751. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8752. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8753. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8754. Γöé DS_ALIAS_ENTRY       Γöé OM_S_BOOLEAN        Γöé   -   Γöé   1   Γöé   -   Γöé
  8755. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8756. Γöé DS_FROM_ENTRY       Γöé OM_S_BOOLEAN        Γöé   -   Γöé   1   Γöé   -   Γöé
  8757. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8758. Γöé DS_RDN           Γöé Object(DS_C_RELATIVE_NAME) Γöé   -   Γöé   1   Γöé   -   Γöé
  8759. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8760.  
  8761.  DS_ALIAS_ENTRY              This attribute indicates whether the object is an 
  8762.                              alias. 
  8763.  
  8764.  DS_FROM_ENTRY               This attribute indicates whether information about 
  8765.                              the object was obtained directly from its 
  8766.                              directory entry, rather than from a copy of the 
  8767.                              entry. 
  8768.  
  8769.  DS_RDN                      This attribute contains the RDN of the object. If 
  8770.                              this is the name of an alias entry, as indicated 
  8771.                              by DS_ALIAS_ENTRY, it is not dereferenced. 
  8772.  
  8773.  
  8774. ΓòÉΓòÉΓòÉ 11.30. DS_C_LIST_RESULT ΓòÉΓòÉΓòÉ
  8775.  
  8776. An instance of OM class DS_C_LIST_RESULT comprises the results of a successful 
  8777. call to ds_list. 
  8778.  
  8779. An application is not permitted to create or modify instances of this OM class. 
  8780. An instance of this OM class has the OM attributes of its superclass, 
  8781. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  8782.  
  8783. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8784. Γöé Table 29. OM Attributes of DS_C_LIST_RESULT                       Γöé
  8785. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8786. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8787. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8788. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8789. Γöé DS_LIST_INFO        Γöé Object(DS_C_LIST_INFO)   Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  8790. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8791. Γöé DS_UNCORRELATED_LIST    Γöé Object(DS_C_LIST_RESULT)  Γöé   -   Γöé  0 or  Γöé   -   Γöé
  8792. Γöé _INFO           Γöé               Γöé     Γöé  more  Γöé      Γöé
  8793. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8794.  
  8795. Note:  No instance contains values of both OM attributes. 
  8796.  
  8797.  DS_LIST_INFO         This attribute contains the full results of ds_list or 
  8798.                       just part of them. 
  8799.  
  8800.  DS_UNCORRELATED_LIST_INFO When the DUA requests a protection request of 
  8801.                       signed, the information returned can contain a number of 
  8802.                       sets of results originating from, and signed by, 
  8803.                       different components of the directory. Implementations 
  8804.                       can reflect this structure by nesting DS_LIST_RESULT OM 
  8805.                       objects as values of this OM attribute. Alternatively, 
  8806.                       they can collapse all results into a single value of the 
  8807.                       OM attribute DS_LIST_INFO. The DCE Directory Service does 
  8808.                       not support the optional feature of signed results; 
  8809.                       therefore, this OM attribute is never present. 
  8810.  
  8811.  
  8812. ΓòÉΓòÉΓòÉ 11.31. DS_C_NAME ΓòÉΓòÉΓòÉ
  8813.  
  8814. The OM class DS_C_NAME represents a name of an object in the directory or a 
  8815. part of such a name. 
  8816.  
  8817. It is an abstract class, that has the attributes of its superclass, 
  8818. OM_C_OBJECT, and no other OM attributes. 
  8819.  
  8820. A name uniquely distinguishes the object from all other objects whose entries 
  8821. are displayed in the DIT. However, an object can have more than one name (that 
  8822. is, a name need not be unique). A DN is unique. There are no other DNs that 
  8823. identify the same object. An RDN is part of a name and only distinguishes the 
  8824. object from others that are its siblings. 
  8825.  
  8826. Most of the interface functions take a name parameter, where the value must be 
  8827. an instance of one of the subclasses of this OM class. Therefore, this OM class 
  8828. is useful for amalgamating all possible representations of names. 
  8829.  
  8830. The DCE XDS implementation defines one subclass of this OM class and a single 
  8831. representation for names (that is, DS_C_DS_DN, which provides a representation 
  8832. for names, including distinguished names). 
  8833.  
  8834.  
  8835. ΓòÉΓòÉΓòÉ 11.32. DS_C_NAME_ERROR ΓòÉΓòÉΓòÉ
  8836.  
  8837. An instance of OM class DS_C_NAME_ERROR reports a name-related Directory 
  8838. Service error. 
  8839.  
  8840. An application is not permitted to create or modify instances of this OM class. 
  8841. An instance of this OM class has the OM attributes of its superclasses, 
  8842. OM_C_OBJECT and DS_C_ERROR, in addition to the OM attributes listed in the 
  8843. following table. 
  8844.  
  8845. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8846. Γöé Table 30. OM Attributes of DS_C_NAME_ERROR                       Γöé
  8847. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8848. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8849. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8850. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8851. Γöé DS_MATCHED         Γöé Object(DS_C_NAME)      Γöé   -   Γöé   1   Γöé   -   Γöé
  8852. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8853.  
  8854.  DS_MATCHED              This attribute identifies the initial part (up to, but 
  8855.                          excluding, the first RDN that is unrecognized) of the 
  8856.                          name that is supplied, or of the name resulting from 
  8857.                          dereferencing an alias. It names the lowest entry 
  8858.                          (object or alias) in the DIT that is matched. 
  8859.  
  8860.  The OM attribute DS_PROBLEM, which is inherited from the superclass 
  8861.  DS_C_ERROR, identifies the cause of the failure. Its value is one of the 
  8862.  following: 
  8863.  
  8864.    o  DS_E_ALIAS_DEREFERENCING_PROBLEM 
  8865.    o  DS_E_ALIAS_PROBLEM 
  8866.    o  DS_E_INVALID_ATTRIBUTE_VALUE 
  8867.    o  DS_E_NO_SUCH_OBJECT 
  8868.  
  8869.  
  8870. ΓòÉΓòÉΓòÉ 11.33. DS_C_OPERATION_PROGRESS ΓòÉΓòÉΓòÉ
  8871.  
  8872. An instance of OM class DS_C_OPERATION_PROGRESS specifies the progress or 
  8873. processing state of a directory request. 
  8874.  
  8875. An application is not permitted to create or modify instances of this OM class. 
  8876. An instance of this OM class has the OM attributes of its superclass, 
  8877. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  8878.  
  8879. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8880. Γöé Table 31. OM Attributes of DS_C_OPERATION_PROGRESS                   Γöé
  8881. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8882. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8883. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8884. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8885. Γöé DS_NAME_RESOLUTION     Γöé Enum(DS_Name_Resolution   Γöé   -   Γöé   1   Γöé   -   Γöé
  8886. Γöé _PHASE           Γöé _Phase)           Γöé     Γöé     Γöé      Γöé
  8887. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8888. Γöé DS_NEXT_RDN_TO_BE     Γöé OM_S_INTEGER        Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  8889. Γöé _RESOLVED         Γöé               Γöé     Γöé     Γöé      Γöé
  8890. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8891.  
  8892. The target name mentioned as follows is the name upon which processing of the 
  8893. directory request is currently focused. 
  8894.  
  8895.  DS_NAME_RESOLUTION_PHASE                  This attribute indicates what phase 
  8896.                                            is reached in handling the target 
  8897.                                            name. It must have one of the 
  8898.                                            following values: 
  8899.  
  8900.                                              o  DS_COMPLETED, meaning that the 
  8901.                                                 DSA holding the target object 
  8902.                                                 is reached. 
  8903.  
  8904.                                              o  DS_NOT_STARTED, meaning that so 
  8905.                                                 far a DSA is not reached with a 
  8906.                                                 naming context containing the 
  8907.                                                 initial RDNs of the name. 
  8908.  
  8909.                                              o  DS_PROCEEDING, meaning that the 
  8910.                                                 initial part of the name has 
  8911.                                                 been recognized, although the 
  8912.                                                 DSA holding the target object 
  8913.                                                 has not yet been reached. 
  8914.  
  8915.  DS_NEXT_RDN_TO_BE_RESOLVED                This attribute indicates to the DSA 
  8916.                                            which of the RDNs in the target name 
  8917.                                            is next to be resolved. It takes the 
  8918.                                            form of an integer in the range from 
  8919.                                            one to the number of RDNs in the 
  8920.                                            name. This OM attribute only has a 
  8921.                                            value if the value of 
  8922.                                            DS_NAME_RESOLUTION_PHASE is 
  8923.                                            DS_PROCEEDING. 
  8924.  
  8925.  The constant DS_OPERATION_NOT_STARTED can be used in the DS_C_CONTEXT of an 
  8926.  operation instead of an instance of this OM class. 
  8927.  
  8928.  
  8929. ΓòÉΓòÉΓòÉ 11.34. DS_C_PARTIAL_OUTCOME_QUAL ΓòÉΓòÉΓòÉ
  8930.  
  8931. An instance of OM class DS_C_PARTIAL_OUTCOME_QUAL explains to what extent the 
  8932. results of a call to ds_list or ds_search are incomplete and why. 
  8933.  
  8934. An application is not permitted to create or modify instances of this OM class. 
  8935. An instance of this OM class has the OM attributes of its superclass, 
  8936. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  8937.  
  8938. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8939. Γöé Table 32. OM Attribute of DS_C_PARTIAL_OUTCOME_QUAL                   Γöé
  8940. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8941. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  8942. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  8943. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8944. Γöé DS_LIMIT_PROBLEM      Γöé Enum(DS_Limit_Problem)   Γöé   -   Γöé   1   Γöé   -   Γöé
  8945. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8946. Γöé DS_UNAVAILABLE_CRIT_EXT  Γöé OM_S_BOOLEAN        Γöé   -   Γöé   1   Γöé   -   Γöé
  8947. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8948. Γöé DS_UNEXPLORED       Γöé Object(DS_C_CONTINUATION  Γöé   -   Γöé  0 or  Γöé   -   Γöé
  8949. Γöé              Γöé _REF)            Γöé     Γöé  more  Γöé      Γöé
  8950. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8951.  
  8952.  DS_LIMIT_PROBLEM                         This attribute explains fully or 
  8953.                                           partly why the results are 
  8954.                                           incomplete. It can have one of the 
  8955.                                           following values: 
  8956.  
  8957.                                             o  DS_ADMIN_LIMIT_EXCEEDED, meaning 
  8958.                                                that an administrative limit is 
  8959.                                                reached. 
  8960.  
  8961.                                             o  DS_NO_LIMIT_EXCEEDED, meaning 
  8962.                                                there is no limit problem. 
  8963.  
  8964.                                             o  DS_SIZE_LIMIT_EXCEEDED meaning 
  8965.                                                the maximum number of objects 
  8966.                                                specified as a service control 
  8967.                                                is reached. 
  8968.  
  8969.                                             o  DS_TIME_LIMIT_EXCEEDED, meaning 
  8970.                                                the maximum number of seconds 
  8971.                                                specified as a service control 
  8972.                                                is reached. 
  8973.  
  8974.  DS_UNAVAILABLE_CRIT_EXT                  If OM_TRUE, this attribute indicates 
  8975.                                           that some part of the Directory 
  8976.                                           Service cannot provide a requested 
  8977.                                           critical service extension. The user 
  8978.                                           requested one or more standard 
  8979.                                           service extensions by including 
  8980.                                           values of the OM attribute DS_EXT in 
  8981.                                           the DS_C_CONTEXT supplied for the 
  8982.                                           operation. Furthermore, the user 
  8983.                                           indicated that some of these 
  8984.                                           extensions are essential by setting 
  8985.                                           the OM attribute DS_CRIT in the 
  8986.                                           extension to OM_TRUE. Some of the 
  8987.                                           critical extensions cannot be 
  8988.                                           performed by one particular DSA or by 
  8989.                                           a number of DSAs. In general, it is 
  8990.                                           not possible to determine which DSA 
  8991.                                           could not perform which particular 
  8992.                                           extension. 
  8993.  
  8994.  DS_UNEXPLORED                            This attribute identifies any regions 
  8995.                                           of the directory that are left 
  8996.                                           unexplored in such a way that the 
  8997.                                           directory request can be continued. 
  8998.                                           Only continuation references within 
  8999.                                           the scope specified by the 
  9000.                                           DS_SCOPE_OF_REFERRAL service control 
  9001.                                           are included. 
  9002.  
  9003.  
  9004. ΓòÉΓòÉΓòÉ 11.35. DS_C_PRESENTATION_ADDRESS ΓòÉΓòÉΓòÉ
  9005.  
  9006. An instance of OM class DS_C_PRESENTATION_ADDRESS is a presentation address of 
  9007. an OSI application entity, which is used for OSI communications with this 
  9008. instance. 
  9009.  
  9010. An instance of this OM class has the OM attributes of its superclasses, 
  9011. OM_C_OBJECT and DS_C_ADDRESS, in addition to the OM attributes listed in the 
  9012. following table. 
  9013.  
  9014. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9015. Γöé Table 33. OM Attributes of DS_C_PRESENTATION_ADDRESS                  Γöé
  9016. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9017. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  9018. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  9019. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9020. Γöé DS_N_ADDRESSES       Γöé String(OM_S_OCTET_STRING)  Γöé   -   Γöé  1 or  Γöé   -   Γöé
  9021. Γöé              Γöé               Γöé     Γöé  more  Γöé      Γöé
  9022. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9023. Γöé DS_P_SELECTOR       Γöé String(OM_S_OCTET_STRING)  Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  9024. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9025. Γöé DS_S_SELECTOR       Γöé String(OM_S_OCTET_STRING)  Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  9026. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9027. Γöé DS_T_SELECTOR       Γöé String(OM_S_OCTET_STRING)  Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  9028. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9029.  
  9030.  DS_N_ADDRESSES             This attribute is the network address of the 
  9031.                             application entity. 
  9032.  
  9033.  DS_P_SELECTOR              This attribute is the presentation selector. 
  9034.  
  9035.  DS_S_SELECTOR              This attribute is the session selector. 
  9036.  
  9037.  DS_T_SELECTOR              This attribute is the transport selector. 
  9038.  
  9039.  
  9040. ΓòÉΓòÉΓòÉ 11.36. DS_C_READ_RESULT ΓòÉΓòÉΓòÉ
  9041.  
  9042. An instance of OM class DS_C_READ_RESULT contains the result of a successful 
  9043. call to  ds_read. An application is not permitted to create or modify instances 
  9044. of this OM class. An instance of this OM class has the OM attributes of its 
  9045. superclasses, OM_C_OBJECT and DS_C_COMMON_RESULTS, in addition to the OM 
  9046. attribute listed in the following table. 
  9047.  
  9048. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9049. Γöé Table 34. OM Attributes of DS_C_READ_RESULT                       Γöé
  9050. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9051. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  9052. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  9053. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9054. Γöé DS_ENTRY          Γöé Object(DS_C_ENTRY_INFO)   Γöé   -   Γöé   1   Γöé   -   Γöé
  9055. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9056.  
  9057.  DS_ENTRY                   This attribute contains the information extracted 
  9058.                             from the directory entry of the target object. 
  9059.  
  9060.  
  9061. ΓòÉΓòÉΓòÉ 11.37. DS_C_REFERRAL ΓòÉΓòÉΓòÉ
  9062.  
  9063. An instance of OM class DS_C_REFERRAL reports failure to perform an operation 
  9064. and redirects the requestor to one or more access points better equipped to 
  9065. perform the operation. 
  9066.  
  9067. An application is not permitted to create or modify instances of this OM class. 
  9068. An instance of this OM class has the OM attributes of its superclasses, 
  9069. OM_C_OBJECT and DS_C_CONTINUATION_REF, and no additional OM attributes. 
  9070.  
  9071. The referral is a continuation reference by means of which the operation can 
  9072. progress. 
  9073.  
  9074.  
  9075. ΓòÉΓòÉΓòÉ 11.38. DS_C_RELATIVE_NAME ΓòÉΓòÉΓòÉ
  9076.  
  9077. The OM class DS_C_RELATIVE_NAME represents the RDNs of objects in the 
  9078. directory. It is an abstract class, which has the attributes of its superclass, 
  9079. OM_C_OBJECT, and no other OM attributes. 
  9080.  
  9081. An RDN is part of a name and only distinguishes the object from others that are 
  9082. its siblings. This OM class is used to accumulate all possible representations 
  9083. of RDNs. An argument of interface functions that is an RDN (or an OM attribute 
  9084. value that is an RDN) is an instance of one of the subclasses of this OM class. 
  9085.  
  9086. The DCE XDS API defines one subclass of this OM class  and, therefore, a single 
  9087. representation for RDNs (that is, DS_C_DS_RDN, which provides a representation 
  9088. for RDNs). 
  9089.  
  9090.  
  9091. ΓòÉΓòÉΓòÉ 11.39. DS_C_SEARCH_INFO ΓòÉΓòÉΓòÉ
  9092.  
  9093. An instance of OM class DS_C_SEARCH_INFO is part of the result of ds_search. 
  9094.  
  9095. An application is not permitted to create or modify instances of this OM class. 
  9096. An instance of this OM class has the OM attributes of its superclasses, 
  9097. OM_Object and DS_C_COMMON_RESULTS, in addition to the OM attributes listed in 
  9098. the following table. 
  9099.  
  9100. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9101. Γöé Table 35. OM Attributes of DS_C_SEARCH_INFO                       Γöé
  9102. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9103. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  9104. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  9105. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9106. Γöé DS_ENTRIES         Γöé Object(DS_C_ENTRY_INFO)   Γöé   -   Γöé  0 or  Γöé   -   Γöé
  9107. Γöé              Γöé               Γöé     Γöé  more  Γöé      Γöé
  9108. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9109. Γöé DS_OBJECT_NAME       Γöé Object(DS_C_NAME)      Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  9110. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9111. Γöé DS_PARTIAL_OUTCOME_QUAL  Γöé Object(DS_C_PARTIAL     Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  9112. Γöé              Γöé _OUTCOME_QUAL)       Γöé     Γöé     Γöé      Γöé
  9113. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9114.  
  9115.  DS_ENTRIES                                This attribute contains information 
  9116.                                            about zero or more objects found by 
  9117.                                            ds_search that matched the given 
  9118.                                            selection criteria. 
  9119.  
  9120.  DS_OBJECT_NAME                            This attribute contains the 
  9121.                                            distinguished name of the target 
  9122.                                            object of the operation. It is 
  9123.                                            present if the OM attribute 
  9124.                                            DS_ALIAS_DEREFERENCED, inherited 
  9125.                                            from the superclass 
  9126.                                            DS_C_COMMON_RESULTS, is OM_TRUE. 
  9127.  
  9128.  DS_PARTIAL_OUTCOME_QUAL                   This OM attribute value is only 
  9129.                                            present if the list of entries is 
  9130.                                            incomplete. The DSA or DSAs that 
  9131.                                            provided this list did not complete 
  9132.                                            the search for some reason. The 
  9133.                                            partial outcome qualifier contains 
  9134.                                            details of why the search was not 
  9135.                                            completed and which areas of the 
  9136.                                            directory were not searched. 
  9137.  
  9138.  
  9139. ΓòÉΓòÉΓòÉ 11.40. DS_C_SEARCH_RESULT ΓòÉΓòÉΓòÉ
  9140.  
  9141. An instance of OM class DS_C_SEARCH_RESULT contains the result of a successful 
  9142. call to ds_search. 
  9143.  
  9144. An application is not permitted to create or modify instances of this OM class. 
  9145. An instance of this OM class has the OM attributes of its superclass, 
  9146. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  9147.  
  9148. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9149. Γöé Table 36. OM Attributes of DS_C_SEARCH_RESULT                      Γöé
  9150. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9151. Γöé OM ATTRIBUTE        Γöé VALUE SYNTAX        Γöé  VALUE  Γöé  VALUE  Γöé  VALUE  Γöé
  9152. Γöé              Γöé               Γöé  LENGTH Γöé  NUMBER Γöé INITIALLY Γöé
  9153. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9154. Γöé DS_SEARCH_INFO       Γöé Object(DS_C_SEARCH_INFO)  Γöé   -   Γöé  0 or 1 Γöé   -   Γöé
  9155. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9156. Γöé DS_UNCORRELATED _SEARCH  Γöé Object(DS_C_SEARCH_RESULT) Γöé   -   Γöé  0 or  Γöé   -   Γöé
  9157. Γöé _INFO           Γöé               Γöé     Γöé  more  Γöé      Γöé
  9158. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9159.  
  9160. Note:  No instance contains values of both OM attributes. 
  9161.  
  9162.  DS_SEARCH_INFO                            This attribute contains the full 
  9163.                                            result of ds_search or part of the 
  9164.                                            result. 
  9165.  
  9166.  DS_UNCORRELATED_SEARCH_INFO               When the DUA requests a protection 
  9167.                                            request of signed, the information 
  9168.                                            returned can contain a number of 
  9169.                                            sets of results originating from and 
  9170.                                            signed by different components of 
  9171.                                            the Directory Service. 
  9172.                                            Implementations can reflect this 
  9173.                                            structure by nesting 
  9174.                                            DS_C_SEARCH_RESULT OM objects as 
  9175.                                            values of this OM attribute. 
  9176.                                            Alternatively, they can collapse all 
  9177.                                            results into a single value of the 
  9178.                                            OM attribute DS_SEARCH_INFO. The DCE 
  9179.                                            Directory Service does not support 
  9180.                                            the optional feature of signed 
  9181.                                            results; therefore, this OM 
  9182.                                            attribute is never present. 
  9183.  
  9184.  
  9185. ΓòÉΓòÉΓòÉ 11.41. DS_C_SECURITY_ERROR ΓòÉΓòÉΓòÉ
  9186.  
  9187. An instance of OM class DS_C_SECURITY_ERROR reports a security-related 
  9188. Directory Service error. 
  9189.  
  9190. An application is not permitted to create or modify instances of this OM class. 
  9191. An instance of this OM class has the OM attributes of its superclasses, 
  9192. OM_C_OBJECT and DS_C_ERROR, and no additional OM attributes. 
  9193.  
  9194. The OM attribute DS_PROBLEM, which is inherited from the superclass DS_C_ERROR, 
  9195. identifies the cause of this failure. Its value is one of the following: 
  9196.  
  9197.    o  DS_E_INAPPROP_AUTHENTICATION 
  9198.    o  DS_E_INSUFFICIENT_ACCESS_RIGHTS 
  9199.    o  DS_E_INVALID_CREDENTIALS 
  9200.    o  DS_E_INVALID_SIGNATURE 
  9201.    o  DS_E_NO_INFO 
  9202.    o  DS_E_PROTECTION_REQUIRED 
  9203.  
  9204.  
  9205. ΓòÉΓòÉΓòÉ 11.42. DS_C_SERVICE_ERROR ΓòÉΓòÉΓòÉ
  9206.  
  9207. An instance of OM class DS_C_SERVICE_ERROR reports a Directory Service error 
  9208. related to the provision of the service. 
  9209.  
  9210. An application is not permitted to create or modify instances of this OM class. 
  9211. An instance of this OM class has the OM attributes of its superclasses, 
  9212. OM_C_OBJECT and DS_C_ERROR, and no additional OM attributes. 
  9213.  
  9214. The OM attribute DS_PROBLEM, which is inherited from the superclass DS_C_ERROR, 
  9215. identifies the cause of the failure. Its value is one of the following: 
  9216.  
  9217.    o  DS_E_ADMIN_LIMIT_EXCEEDED 
  9218.    o  DS_E_BUSY 
  9219.    o  DS_E_CHAINING_REQUIRED 
  9220.    o  DS_E_DIT_ERROR 
  9221.    o  DS_E_INVALID_REF 
  9222.    o  DS_E_LOOP_DETECTED 
  9223.    o  DS_E_OUT_OF_SCOPE 
  9224.    o  DS_E_TIME_LIMIT_EXCEEDED 
  9225.    o  DS_E_UNABLE_TO_PROCEED 
  9226.    o  DS_E_UNAVAILABLE 
  9227.    o  DS_E_UNAVAILABLE_CRIT_EXT 
  9228.    o  DS_E_UNWILLING_TO_PERFORM 
  9229.  
  9230.  
  9231. ΓòÉΓòÉΓòÉ 11.43. DS_C_SESSION ΓòÉΓòÉΓòÉ
  9232.  
  9233. An instance of OM class DS_C_SESSION identifies a particular link from the 
  9234. application program to a DUA. 
  9235.  
  9236. An instance of this OM class has the OM attributes of its superclass, 
  9237. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  9238.  
  9239. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9240. Γöé Table 37. OM Attributes of DS_C_SESSION                         Γöé
  9241. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9242. Γöé OM ATTRIBUTE       Γöé VALUE SYNTAX       Γöé  VALUE Γöé  VALUE Γöé    VALUE   Γöé
  9243. Γöé              Γöé              Γöé LENGTH Γöé NUMBER Γöé   INITIALLY  Γöé
  9244. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9245. Γöé DS_DSA_ADDRESS      Γöé Object(DS_C_ADDRESS)   Γöé   -  Γöé 0 or 1 Γöé   local(1)   Γöé
  9246. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9247. Γöé DS_DSA_NAME        Γöé Object(DS_C_NAME)     Γöé   -  Γöé 0 or 1 Γöé   local(2)   Γöé
  9248. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9249. Γöé DS_FILE          Γöé OM_S_INTEGER       Γöé   -  Γöé   1  Γöé  See the text  Γöé
  9250. Γöé _DESCRIPTOR        Γöé              Γöé     Γöé     Γöé         Γöé
  9251. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9252. Γöé DS_REQUESTER       Γöé Object(DS_C_NAME)     Γöé   -  Γöé 0 or 1 Γöé    NULL    Γöé
  9253. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9254. Γöé (1) The default value of this OM attribute is set to the address and name of the    Γöé
  9255. Γöé   default DSA entry in the local cache.                        Γöé
  9256. Γöé (2) If this cache entry is not present, then these OM attributes are absent.      Γöé
  9257. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9258.  
  9259. The DS_C_SESSION gathers all the information that describes a particular 
  9260. directory interaction. The parameters that will control such a session are set 
  9261. up in an instance of this OM class, which is then passed as an argument to 
  9262. ds_bind. This sets the OM attributes that describe the actual characteristics 
  9263. of this session and then starts the session. A session started in this way must 
  9264. pass to each interface function as the first argument. The result of modifying 
  9265. an initiated session is unspecified. Finally, ds_unbind is used to terminate 
  9266. the session, after which the parameters can be modified and a new session 
  9267. started using the same instance, if required. Multiple concurrent sessions can 
  9268. run using multiple instances of this OM class. 
  9269.  
  9270. The OM attributes of a session are as follows: 
  9271.  
  9272.  DS_DSA_ADDRESS             This attribute indicates the address of the default 
  9273.                             DSA named by DS_DSA_NAME. 
  9274.  
  9275.  DS_DSA_NAME                This attribute indicates the distinguished name of 
  9276.                             the DSA that is used by default to service 
  9277.                             directory requests. 
  9278.  
  9279.  DS_FILE_DESCRIPTOR (Optional Functionality) This OM attribute is not used by 
  9280.                             DCE XDS and is always set to 
  9281.                             DS_NO_VALID_FILE_DESCRIPTOR. 
  9282.  
  9283.  DS_REQUESTOR               This attribute is the distinguished name of the 
  9284.                             user of this Directory Service session. 
  9285.  
  9286.  Applications can assume that an object of OM class DS_C_SESSION, created with 
  9287.  default values of all its OM attributes, works with all the interface 
  9288.  functions. Local administrators need to ensure that this is the case. Such a 
  9289.  session can be created by passing the constant DS_DEFAULT_SESSION as an 
  9290.  argument to ds_bind. 
  9291.  
  9292.  
  9293. ΓòÉΓòÉΓòÉ 11.44. DS_C_SYSTEM_ERROR ΓòÉΓòÉΓòÉ
  9294.  
  9295. An instance of OM class DS_C_SYSTEM_ERROR reports an error that occurred in the 
  9296. underlying operating system. 
  9297.  
  9298. An application is not permitted to create or modify instances of this OM class. 
  9299. An instance of this OM class has the OM attributes of its superclasses, 
  9300. OM_C_OBJECT and DS_C_ERROR, and no additional OM attributes, although there can 
  9301. be additional implementation-defined OM attributes. 
  9302.  
  9303. The OM attribute DS_PROBLEM, which is inherited from the superclass DS_C_ERROR, 
  9304. identifies the cause of the failure. Its value is the same as that of errno 
  9305. defined in the C language. 
  9306.  
  9307. If such an error persists, a DS_C_LIBRARY_ERROR (DS_E_MISCELLANEOUS) is 
  9308. reported. 
  9309.  
  9310.  
  9311. ΓòÉΓòÉΓòÉ 11.45. DS_C_UPDATE_ERROR ΓòÉΓòÉΓòÉ
  9312.  
  9313. An instance of OM class DS_C_UPDATE_ERROR reports a Directory Service error 
  9314. peculiar to a modification operation. 
  9315.  
  9316. An application is not permitted to create or modify instances of this OM class. 
  9317. An instance of this OM class has the OM attributes of its superclasses, 
  9318. OM_C_OBJECT and DS_C_ERROR, and no additional OM attributes. 
  9319.  
  9320. The OM attribute DS_PROBLEM, which is inherited from the superclass DS_C_ERROR, 
  9321. identifies the cause of the failure. Its value is one of the following: 
  9322.  
  9323.    o  DS_E_AFFECTS_MULTIPLE_DSAS 
  9324.    o  DS_E_ENTRY_EXISTS 
  9325.    o  DS_E_NAMING_VIOLATION 
  9326.    o  DS_E_NOT_ALLOWED_ON_NON_LEAF 
  9327.    o  DS_E_NOT_ALLOWED_ON_RDN 
  9328.    o  DS_E_OBJECT_CLASS_MOD_PROHIB 
  9329.    o  DS_E_OBJECT_CLASS_VIOLATION 
  9330.  
  9331.  
  9332. ΓòÉΓòÉΓòÉ 12. Basic Directory Contents Package ΓòÉΓòÉΓòÉ
  9333.  
  9334. The standards define a number of attribute types (known as the selected 
  9335. attribute types), attribute syntaxes, attribute sets, and object classes (known 
  9336. as the selected object classes). These definitions allow the creation and 
  9337. maintenance of directory entries for a number of common objects so that the 
  9338. representation of all such objects is the same throughout the directory. They 
  9339. include such objects as Country, Person, and Organization.(**) 
  9340.  
  9341. This section outlines names for each of these items, and defines OM classes to 
  9342. represent those that are not represented directly by OM syntaxes. The values of 
  9343. attributes in the directory are not restricted to those discussed in this 
  9344. section, and new attribute types and syntaxes can be created at any time. (For 
  9345. further information on how the values of other syntaxes are represented in the 
  9346. interface, see Attribute and Attribute Value Assertion). 
  9347.  
  9348. The constants and OM classes in this section are defined in addition to those 
  9349. in XDS Class Definitions, because they are not essential to the working of the 
  9350. interface but instead allow directory entries to be utilized. The definitions 
  9351. belong to the Basic Directory Contents Package (BDCP), which is supported by 
  9352. the DCE XDS API following negotiation of its use with ds_version. 
  9353.  
  9354. The object identifier associated with the BDC Package is {iso(1) 
  9355. identified-organization(3) icd-ecma(0012) member-company(2) dec(1011) xopen(28) 
  9356. bdcp(1)} with the following encoding: 
  9357.  
  9358. \x2B\xC\x2\x87\x73\x1C\x1
  9359.  
  9360. This identifier is represented by the constant DS_BASIC_DIR_CONTENTS_PKG. The C 
  9361. constants associated with this package are in the xdsbdcp.h header file (see 
  9362. the DCE for OS/2 Warp: Application Development Reference). 
  9363.  
  9364. The concepts and notation used are introduced in Introduction to OM Classes. A 
  9365. complete explanation of the meaning of the attributes and object classes is not 
  9366. given since this is beyond the scope of this guide. The purpose here is simply 
  9367. to present the representation of these items in the interface. 
  9368.  
  9369. The selected attribute types are presented first, followed by the selected 
  9370. object classes. Next, the OM class hierarchy and OM class definitions required 
  9371. to support the selected attribute types are presented. 
  9372.  
  9373. Note:  This package should only be needed if a cell name is defined using the 
  9374.        X.500 format (for example, C=us/O=ibm/OU=austin). As in XDS Class 
  9375.        Definitions, all definitions for this package are provided for 
  9376.        completeness; however, only those OM objects required for an X.500 cell 
  9377.        name definition should be needed for XDS/XOM over CDS. 
  9378.  
  9379.  
  9380. ΓòÉΓòÉΓòÉ 12.1. Selected Attribute Types ΓòÉΓòÉΓòÉ
  9381.  
  9382. This section presents the attribute types defined in the standards that are to 
  9383. be used in directory entries. Each directory entry is composed of a number of 
  9384. attributes, each of which comprises an attribute type together with one or more 
  9385. attribute values. The form of each value of an attribute is determined by the 
  9386. attribute syntax associated with the attribute's type. 
  9387.  
  9388. In the interface, attributes are displayed as instances of OM class 
  9389. DS_C_ATTRIBUTE with the attribute type represented as the value of the OM 
  9390. attribute DS_ATTRIBUTE_TYPE, and the attribute value (or values) represented as 
  9391. the value (or values) of the OM attribute DS_ATTRIBUTE_VALUES. Each attribute 
  9392. type has an object identifier, assigned in the standards, which is the value of 
  9393. the OM attribute DS_ATTRIBUTE_TYPE These object identifiers are represented in 
  9394. the interface by constants with the same name as the directory attribute, and 
  9395. are prefixed with DS_A_ so that they can be easily identified. 
  9396.  
  9397. "Object Identifiers for Selected Attribute Types" shows the names of the 
  9398. attribute types defined in the standards, together with the Basic Encoding 
  9399. Rules (BERs) for encoding of the object identifiers associated with each of 
  9400. them. "Representation of Values for Selected Attribute Types" shows the names 
  9401. of the attribute types, together with the OM value syntax that is used in the 
  9402. interface to represent values of that attribute type. "Representation of Values 
  9403. for Selected Attribute Types" also includes the range of lengths permitted for 
  9404. the string types. This indicates whether the attribute can be multivalued and 
  9405. which matching rules are provided for the syntax. Following the table is a 
  9406. brief description of each attribute. 
  9407.  
  9408. The standards define matching rules that are used for deciding whether two 
  9409. values are equal (E), for ordering (O) two values, and for identifying one 
  9410. value as a substring (S) of another in Directory Service operations. Specific 
  9411. matching rules are given in this section for certain attributes. In addition, 
  9412. the following general rules apply as indicated: 
  9413.  
  9414.    o  All attribute values whose syntax is String(OM_S_NUMERIC_STRING), 
  9415.       String(OM_S_PRINTABLE_STRING), or String(OM_S_TELETEX_STRING) are 
  9416.       considered insignificant for the following reasons: 
  9417.  
  9418.         -  Differences caused by the presence of spaces preceding the first 
  9419.            printing character; 
  9420.         -  Spaces following the last printing character; and 
  9421.         -  More than one consecutive space anywhere within the value. 
  9422.  
  9423.    o  For all attribute values whose syntax is String(OM_S_TELETEX_STRING), 
  9424.       differences in the case of alphabetical characters are considered 
  9425.       insignificant. 
  9426.  
  9427.  Note:  The third and fourth columns of the following table contain the 
  9428.         contents octets of the BER encoding of the object identifier. All these 
  9429.         object identifiers stem from the root {joint-iso-ccitt(2) ds(5) 
  9430.         attributeType(4)}. 
  9431.  
  9432.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9433.   Γöé Table 38. Object Identifiers for Selected Attribute Types                Γöé
  9434.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9435.   Γöé      Γöé                    Γöé  OBJECT ID Γöé    OBJECT ID BER   Γöé
  9436.   Γöé  PACKAGE  Γöé ATTRIBUTE TYPE            Γöé   BER   Γöé    (HEXADECIMAL)   Γöé
  9437.   Γöé      Γöé                    Γöé  (DECIMAL) Γöé             Γöé
  9438.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9439.   Γöé   BDCP  Γöé DS_A_ALIASED_OBJECT_NAME       Γöé  85, 4, 1  Γöé    \x55\x04\x01    Γöé
  9440.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9441.   Γöé   BDCP  Γöé DS_A_BUSINESS_CATEGORY        Γöé  85, 4, 15 Γöé    \x55\x04\x0F    Γöé
  9442.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9443.   Γöé   BDCP  Γöé DS_A_COMMON_NAME           Γöé  85, 4, 3  Γöé    \x55\x04\x03    Γöé
  9444.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9445.   Γöé   BDCP  Γöé DS_A_COUNTRY_NAME           Γöé  85, 4, 6  Γöé    \x55\x04\x06    Γöé
  9446.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9447.   Γöé   BDCP  Γöé DS_A_DESCRIPTION           Γöé  85, 4, 13 Γöé    \x55\x04\x0D    Γöé
  9448.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9449.   Γöé   BDCP  Γöé DS_A_DEST_INDICATOR          Γöé  85, 4, 27 Γöé    \x55\x04\x1B    Γöé
  9450.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9451.   Γöé   BDCP  Γöé DS_A_FACSIMILE_PHONE_NBR       Γöé  85, 4, 23 Γöé    \x55\x04\x17    Γöé
  9452.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9453.   Γöé   BDCP  Γöé DS_A_INTERNAT_ISDN_NBR        Γöé  85, 4, 25 Γöé    \x55\x04\x19    Γöé
  9454.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9455.   Γöé   BDCP  Γöé DS_A_KNOWLEDGE_INFO          Γöé  85, 4, 2  Γöé    \x55\x04\x02    Γöé
  9456.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9457.   Γöé   BDCP  Γöé DS_A_LOCALITY_NAME          Γöé  85, 4, 7  Γöé    \x55\x04\x07    Γöé
  9458.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9459.   Γöé   BDCP  Γöé DS_A_MEMBER              Γöé  85, 4, 31 Γöé    \x55\x04\x1F    Γöé
  9460.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9461.   Γöé   BDCP  Γöé DS_A_OBJECT_CLASS           Γöé  85, 4, 0  Γöé    \x55\x04\x00    Γöé
  9462.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9463.   Γöé   BDCP  Γöé DS_A_ORG_NAME             Γöé  85, 4, 10 Γöé    \x55\x04\x0A    Γöé
  9464.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9465.   Γöé   BDCP  Γöé DS_A_ORG_UNIT_NAME          Γöé  85, 4, 11 Γöé    \x55\x04\x0B    Γöé
  9466.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9467.   Γöé   BDCP  Γöé DS_A_OWNER              Γöé  85, 4, 32 Γöé    \x55\x04\x20    Γöé
  9468.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9469.   Γöé   BDCP  Γöé DS_A_PHYS_DELIV_OFF_NAME       Γöé  85, 4, 19 Γöé    \x55\x04\x13    Γöé
  9470.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9471.   Γöé   BDCP  Γöé DS_A_POST_OFFICE_BOX         Γöé  85, 4, 18 Γöé    \x55\x04\x12    Γöé
  9472.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9473.   Γöé   BDCP  Γöé DS_A_POSTAL_ADDRESS          Γöé  85, 4, 16 Γöé    \x55\x04\x10    Γöé
  9474.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9475.   Γöé   BDCP  Γöé DS_A_POSTAL_CODE           Γöé  85, 4, 17 Γöé    \x55\x04\x11    Γöé
  9476.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9477.   Γöé   BDCP  Γöé DS_A_PREF_DELIV_METHOD        Γöé  85, 4, 28 Γöé    \x55\x04\x1C    Γöé
  9478.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9479.   Γöé   BDCP  Γöé DS_A_PRESENTATION_ADDRESS       Γöé  85, 4, 29 Γöé    \x55\x04\x1D    Γöé
  9480.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9481.   Γöé   BDCP  Γöé DS_A_REGISTERED_ADDRESS        Γöé  85, 4, 26 Γöé    \x55\x04\x1A    Γöé
  9482.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9483.   Γöé   BDCP  Γöé DS_A_ROLE_OCCUPANT          Γöé  85, 4, 33 Γöé    \x55\x04\x21    Γöé
  9484.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9485.   Γöé   BDCP  Γöé DS_A_SEARCH_GUIDE           Γöé  85, 4, 14 Γöé    \x55\x04\x0E    Γöé
  9486.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9487.   Γöé   BDCP  Γöé DS_A_SEE_ALSO             Γöé  85, 4, 34 Γöé    \x55\x04\x22    Γöé
  9488.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9489.   Γöé   BDCP  Γöé DS_A_SERIAL_NBR            Γöé  85, 4, 5  Γöé    \x55\x04\x05    Γöé
  9490.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9491.   Γöé   BDCP  Γöé DS_A_STATE_OR_PROV_NAME        Γöé  85, 4, 8  Γöé    \x55\x04\x08    Γöé
  9492.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9493.   Γöé   BDCP  Γöé DS_A_STREET_ADDRESS          Γöé  85, 4, 9  Γöé    \x55\x04\x09    Γöé
  9494.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9495.   Γöé   BDCP  Γöé DS_A_SUPPORT_APPLIC_CONTEXT      Γöé  85, 4, 3  Γöé    \x55\x04\x1E    Γöé
  9496.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9497.   Γöé   BDCP  Γöé DS_A_SURNAME             Γöé  85, 4, 4  Γöé    \x55\x04\x04    Γöé
  9498.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9499.   Γöé   BDCP  Γöé DS_A_PHONE_NBR            Γöé  85, 4, 20 Γöé    \x55\x04\x14    Γöé
  9500.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9501.   Γöé   BDCP  Γöé DS_A_TELETEX_TERM_IDENT        Γöé  85, 4, 22 Γöé    \x55\x04\x16    Γöé
  9502.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9503.   Γöé   BDCP  Γöé DS_A_TELEX_NBR            Γöé  85, 4, 21 Γöé    \x55\x04\x15    Γöé
  9504.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9505.   Γöé   BDCP  Γöé DS_A_TITLE              Γöé  85, 4, 12 Γöé    \x55\x04\x0C    Γöé
  9506.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9507.   Γöé   BDCP  Γöé DS_A_USER_PASSWORD          Γöé  85, 4, 35 Γöé    \x55\x04\x23    Γöé
  9508.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9509.   Γöé   BDCP  Γöé DS_A_X121_ADDRESS           Γöé  85, 4, 24 Γöé    \x55\x04\x18    Γöé
  9510.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9511.  
  9512.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9513.   Γöé Table 39. Representation of Values for Selected Attribute Types                Γöé
  9514.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9515.   Γöé ATTRIBUTE TYPE        Γöé OM VALUE SYNTAX       Γöé  VALUE  Γöé  MULTI  Γöé  MATCHING  Γöé
  9516.   Γöé                Γöé               Γöé  LENGTH  Γöé  VALUED  Γöé   RULES   Γöé
  9517.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9518.   Γöé DS_A_ALIASED_OBJECT_NAME   Γöé Object(DS_C_NAME)      Γöé   -   Γöé   No   Γöé    E    Γöé
  9519.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9520.   Γöé DS_A_BUSINESS_CATEGORY    Γöé String(OM_S_TELETEX_STRING)Γöé  1-128  Γöé   Yes  Γöé   E, S   Γöé
  9521.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9522.   Γöé DS_A_COMMON_NAME       Γöé String(OM_S_TELETEX_STRING)Γöé  1-64  Γöé   Yes  Γöé   E, S   Γöé
  9523.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9524.   Γöé DS_A_COUNTRY_NAME       Γöé String(OM_S_        Γöé   2   Γöé   No   Γöé    E    Γöé
  9525.   Γöé                Γöé PRINTABLE_STRING)(1)    Γöé      Γöé      Γöé       Γöé
  9526.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9527.   Γöé DS_A_DESCRIPTION       Γöé String(OM_S_TELETEX_STRING)Γöé  1-1024  Γöé   Yes  Γöé   E, S   Γöé
  9528.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9529.   Γöé DS_A_DEST_INDICATOR      Γöé String(OM_S_        Γöé  1-128  Γöé   Yes  Γöé   E, S   Γöé
  9530.   Γöé                Γöé PRINTABLE_STRING)(2)    Γöé      Γöé      Γöé       Γöé
  9531.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9532.   Γöé DS_A_FACSIMILE_PHONE_NBR   Γöé Object(DS_C_FACSIMILE_PHONEΓöéNBR) -   Γöé   Yes  Γöé    -    Γöé
  9533.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9534.   Γöé DS_A_INTERNAT_ISDN_NBR    Γöé String(OM_S_NUMERIC_STRING)Γöé3) 1-16  Γöé   Yes  Γöé    -    Γöé
  9535.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9536.   Γöé DS_A_KNOWLEDGE_INFO      Γöé String(OM_S_TELETEX_STRING)Γöé   -   Γöé   Yes  Γöé   E, S   Γöé
  9537.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9538.   Γöé DS_A_LOCALITY_NAME      Γöé String(OM_S_TELETEX_STRING)Γöé  1-128  Γöé   Yes  Γöé   E, S   Γöé
  9539.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9540.   Γöé DS_A_MEMBER          Γöé Object(DS_C_NAME)      Γöé   -   Γöé   Yes  Γöé    E    Γöé
  9541.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9542.   Γöé DS_A_OBJECT_CLASS       Γöé String(OM_S_OBJECT_IDENTIFIΓöéR_STR-NG) Γöé   Yes  Γöé    E    Γöé
  9543.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9544.   Γöé DS_A_ORG_NAME         Γöé String(OM_S_TELETEX_STRING)Γöé  1-64  Γöé   Yes  Γöé   E, S   Γöé
  9545.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9546.   Γöé DS_A_ORG_UNIT_NAME      Γöé String(OM_S_TELETEX_STRING)Γöé  1-64  Γöé   Yes  Γöé   E, S   Γöé
  9547.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9548.   Γöé DS_A_OWNER          Γöé Object(DS_C_NAME)      Γöé   -   Γöé   Yes  Γöé    E    Γöé
  9549.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9550.   Γöé DS_A_PHYS_DELIV_OFF_NAME   Γöé String(OM_S_TELETEX_STRING)Γöé  1-128  Γöé   Yes  Γöé   E, S   Γöé
  9551.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9552.   Γöé DS_A_POST_OFFICE_BOX     Γöé String(OM_S_TELETEX_STRING)Γöé  1-40  Γöé   Yes  Γöé   E, S   Γöé
  9553.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9554.   Γöé DS_A_POSTAL_ADDRESS      Γöé Object(DS_C_POSTAL_ADDRESS)Γöé   -   Γöé   Yes  Γöé    E    Γöé
  9555.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9556.   Γöé DS_A_POSTAL_CODE       Γöé String(OM_S_TELETEX_STRING)Γöé  1-40  Γöé   Yes  Γöé   E, S   Γöé
  9557.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9558.   Γöé DS_A_PREF_DELIV_METHOD    Γöé Enum(DS_PREFERRED      Γöé   -   Γöé   Yes  Γöé    -    Γöé
  9559.   Γöé                Γöé DELIVERY_METHOD)      Γöé      Γöé      Γöé       Γöé
  9560.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9561.   Γöé DS_A_PRESENTATION_ADDRESS   Γöé Object(DS_C_PRESENTATION_ADΓöéRESS)-   Γöé   No   Γöé    E    Γöé
  9562.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9563.   Γöé DS_A_REGISTERED-ADDRESS    Γöé Object(DS_C_POSTAL_ADDRESS)Γöé   -   Γöé   Yes  Γöé    -    Γöé
  9564.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9565.   Γöé DS_A_ROLE_OCCUPANT      Γöé Object(DS_C_NAME)      Γöé   -   Γöé   Yes  Γöé    E    Γöé
  9566.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9567.   Γöé DS_A_SEARCH_GUIDE       Γöé Object(DS_C_SEARCH_GUIDE)  Γöé   -   Γöé   Yes  Γöé    -    Γöé
  9568.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9569.   Γöé DS_A_SEE_ALSO         Γöé Object(DS_C_NAME)      Γöé   -   Γöé   Yes  Γöé    E    Γöé
  9570.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9571.   Γöé DS_A_SERIAL_NBR        Γöé String(OM_S_PRINTABLE_STRINΓöé)  1-64  Γöé   Yes  Γöé   E, S   Γöé
  9572.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9573.   Γöé DS_A_STATE_OR_PROV_NAME    Γöé String(OM_S_TELETEX_STRING)Γöé  1-128  Γöé   Yes  Γöé   E, S   Γöé
  9574.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9575.   Γöé DS_A_STREET_ADDRESS      Γöé String(OM_S_TELETEX_STRING)Γöé  1-128  Γöé   Yes  Γöé   E, S   Γöé
  9576.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9577.   Γöé DS_A_SUPPORT_APPLIC_CONTEXT  Γöé String(OM_S_OBJECT_IDENTIFIΓöéR_STR-NG) Γöé   Yes  Γöé    E    Γöé
  9578.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9579.   Γöé DS_A_SURNAME         Γöé String(OM_S_TELETEX_STRING)Γöé  1-64  Γöé   Yes  Γöé   E, S   Γöé
  9580.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9581.   Γöé DS_A_PHONE_NBR        Γöé String(OM_S_PRINTABLE_STRINΓöé)(41-32  Γöé   Yes  Γöé   E, S   Γöé
  9582.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9583.   Γöé DS_A_TELETEX_TERM_IDENT    Γöé Object(DS_C_TELETEX_TERM_IDΓöéNT)  -   Γöé   Yes  Γöé    -    Γöé
  9584.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9585.   Γöé DS_A_TELEX_NBR        Γöé Object(DS_C_TELEX_NBR)   Γöé   -   Γöé   Yes  Γöé    -    Γöé
  9586.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9587.   Γöé DS_A_TITLE          Γöé String(OM_S_TELETEX_STRING)Γöé  1-64  Γöé   Yes  Γöé   E, S   Γöé
  9588.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9589.   Γöé DS_A_USER_PASSWORD      Γöé String(OM_S_OCTET_STRING)  Γöé  0-128  Γöé   Yes  Γöé    -    Γöé
  9590.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9591.   Γöé DS_A_X121_ADDRESS       Γöé String(OM_S_NUMERIC_STRING)Γöé5) 1-15  Γöé   Yes  Γöé   E, S   Γöé
  9592.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9593.   Γöé (1) As permitted by ISO 3166.                                 Γöé
  9594.   Γöé (2) As permitted by Recommendations F.1 and F.31.                       Γöé
  9595.   Γöé (3) As permitted by E164.                                   Γöé
  9596.   Γöé (4) As permitted by E123 (for example, +44 582 10101).                     Γöé
  9597.   Γöé (5) As permitted by X.121.                                   Γöé
  9598.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9599.  
  9600.  Throughout the descriptions that follow, the term object indicates the 
  9601.  directory object whose directory entry contains the corresponding directory 
  9602.  attributes. 
  9603.  
  9604.  DS_A_ALIASED_OBJECT_NAME            This attribute occurs only in alias 
  9605.                                      entries. It assigns the Distinguished Name 
  9606.                                      (DN) of the object provided with an alias 
  9607.                                      using the entry in which this attribute 
  9608.                                      occurs. An alias is an alternative to an 
  9609.                                      object's DN. Any object can (but need not) 
  9610.                                      have one or more aliases. The Directory 
  9611.                                      Service is said to dereference an alias 
  9612.                                      whenever it replaces the alias during name 
  9613.                                      processing with the distinguished name 
  9614.                                      associated with it by means of this 
  9615.                                      attribute. 
  9616.  
  9617.  DS_A_BUSINESS_CATEGORY              This attribute provides descriptions of 
  9618.                                      the businesses in which the object is 
  9619.                                      engaged. 
  9620.  
  9621.  DS_A_COMMON_NAME                    This attribute provides the names by which 
  9622.                                      the object is commonly known in the 
  9623.                                      context defined by its position in the 
  9624.                                      DIT. The names can conform to the naming 
  9625.                                      convention of the country or culture with 
  9626.                                      which the object is associated. They can 
  9627.                                      be ambiguous. 
  9628.  
  9629.  DS_A_COUNTRY_NAME                   This attribute identifies the country in 
  9630.                                      which the object is located or with which 
  9631.                                      it is associated in some other important 
  9632.                                      way. The matching rules require that 
  9633.                                      differences in the case of alphabetical 
  9634.                                      characters be considered insignificant. It 
  9635.                                      has a length of two characters and its 
  9636.                                      values are those listed in ISO 3166. 
  9637.  
  9638.  DS_A_DESCRIPTION                    This attribute gives informative 
  9639.                                      descriptions of the object. 
  9640.  
  9641.  DS_A_DEST_INDICATOR                 This attribute provides the country-city 
  9642.                                      pairs by means of which the object can be 
  9643.                                      reached by way of the public telegram 
  9644.                                      service. The matching rules require that 
  9645.                                      differences in the case of alphabetical 
  9646.                                      characters be considered insignificant. 
  9647.  
  9648.  DS_A_FACSIMILE_PHONE_NBR            This attribute provides the telephone 
  9649.                                      numbers for facsimile terminals (and their 
  9650.                                      parameters, if required) by means of which 
  9651.                                      the object can be reached or with which it 
  9652.                                      is associated in some other important way. 
  9653.  
  9654.  DS_A_INTERNAT_ISDN_NBR              This attribute provides the international 
  9655.                                      ISDN numbers by means of which the object 
  9656.                                      can be reached or with which it is 
  9657.                                      associated in some other important way. 
  9658.                                      The matching rules require that 
  9659.                                      differences caused by the presence of 
  9660.                                      spaces be considered insignificant. 
  9661.  
  9662.  DS_A_KNOWLEDGE_INFO                 This attribute occurs only in entries that 
  9663.                                      describe a DSA. It provides a 
  9664.                                      human-intelligible accumulated description 
  9665.                                      of the directory knowledge possessed by 
  9666.                                      the DSA. 
  9667.  
  9668.  DS_A_LOCALITY_NAME                  This attribute identifies geographical 
  9669.                                      areas or localities. When used as part of 
  9670.                                      a directory name, it specifies the 
  9671.                                      localities in which the object is located 
  9672.                                      or with which it is associated in some 
  9673.                                      other important way. 
  9674.  
  9675.  DS_A_MEMBER                         This attribute gives the names of objects 
  9676.                                      that are considered members of the present 
  9677.                                      object; for example, a distribution list 
  9678.                                      for electronic mail. 
  9679.  
  9680.  DS_A_OBJECT_CLASS                   This attribute identifies the object 
  9681.                                      classes to which the object belongs, and 
  9682.                                      also identifies their superclasses. All 
  9683.                                      such object classes that have object 
  9684.                                      identifiers assigned to them are present, 
  9685.                                      except that object class DS_O_TOP need not 
  9686.                                      (but can) be present provided that some 
  9687.                                      other value is present. This attribute 
  9688.                                      must be present in every entry and cannot 
  9689.                                      be modified. For a further discussion, see 
  9690.                                      OM Class Hierarchy. 
  9691.  
  9692.  DS_A_ORG_NAME                       This attribute identifies organizations. 
  9693.                                      When used as part of a directory name, it 
  9694.                                      specifies an organization with which the 
  9695.                                      object is affiliated. Several values can 
  9696.                                      identify the same organization in 
  9697.                                      different ways. 
  9698.  
  9699.  DS_A_ORG_UNIT_NAME                  This attribute identifies organizational 
  9700.                                      units. When used as part of a directory 
  9701.                                      name, it specifies an organizational unit 
  9702.                                      with which the object is affiliated. The 
  9703.                                      units are understood to be parts of the 
  9704.                                      organization that the DS_A_ORG_NAME 
  9705.                                      attribute indicates. Several values can 
  9706.                                      identify the same unit in different ways. 
  9707.  
  9708.  DS_A_OWNER                          This attribute gives the names of objects 
  9709.                                      that have responsibility for the object. 
  9710.  
  9711.  DS_A_PHYS_DELIV_OFF_NAME            This attribute gives the names of cities, 
  9712.                                      towns, villages, and so on, that contain 
  9713.                                      physical delivery offices through which 
  9714.                                      the object can take delivery of physical 
  9715.                                      mail. 
  9716.  
  9717.  DS_A_POST_OFFICE_BOX                This attribute identifies post office 
  9718.                                      boxes at which the object can take 
  9719.                                      delivery of physical mail. This 
  9720.                                      information is also displayed as part of 
  9721.                                      the DS_A_POSTAL_ADDRESS attribute, if it 
  9722.                                      is present. 
  9723.  
  9724.  DS_A_POSTAL_ADDRESS                 This attribute gives the postal addresses 
  9725.                                      at which the object can take delivery of 
  9726.                                      physical mail. The matching rules require 
  9727.                                      that differences in the case of 
  9728.                                      alphabetical characters be considered 
  9729.                                      insignificant. 
  9730.  
  9731.  DS_A_POSTAL_CODE                    This attribute gives the postal codes that 
  9732.                                      are assigned to areas or buildings through 
  9733.                                      which the object can take delivery of 
  9734.                                      physical mail. This information is also 
  9735.                                      displayed as part of the 
  9736.                                      DS_A_POSTAL_ADDRESS attribute, if it is 
  9737.                                      present. 
  9738.  
  9739.  DS_A_PREF_DELIV_METHOD              This attribute gives the object's 
  9740.                                      preferred methods of communication, in the 
  9741.                                      order of preference. The values are as 
  9742.                                      follows: 
  9743.  
  9744.                                           DS_ANY_DELIV_METHOD             The 
  9745.                                                                           object 
  9746.                                                                           has 
  9747.                                                                           no 
  9748.                                                                           preference. 
  9749.  
  9750.                                           DS_G3_FACSIMILE_DELIV           By 
  9751.                                                                           way 
  9752.                                                                           of 
  9753.                                                                           the 
  9754.                                                                           Group 
  9755.                                                                           3 
  9756.                                                                           facsimile. 
  9757.  
  9758.                                           DS_G4_FACSIMILE_DELIV           By 
  9759.                                                                           way 
  9760.                                                                           of 
  9761.                                                                           the 
  9762.                                                                           Group 
  9763.                                                                           4 
  9764.                                                                           facsimile. 
  9765.  
  9766.                                           DS_IA5_TERMINAL_DELIV           By 
  9767.                                                                           way 
  9768.                                                                           of 
  9769.                                                                           the 
  9770.                                                                           IA5 
  9771.                                                                           text. 
  9772.  
  9773.                                           DS_MHS_DELIV                    By 
  9774.                                                                           way 
  9775.                                                                           of 
  9776.                                                                           X.400. 
  9777.  
  9778.                                           DS_PHYS_DELIV                   By 
  9779.                                                                           way 
  9780.                                                                           of 
  9781.                                                                           the 
  9782.                                                                           postal 
  9783.                                                                           or 
  9784.                                                                           other 
  9785.                                                                           physical 
  9786.                                                                           delivery 
  9787.                                                                           system. 
  9788.  
  9789.                                           DS_PHONE_DELIV                  By 
  9790.                                                                           way 
  9791.                                                                           of 
  9792.                                                                           telephone. 
  9793.  
  9794.                                           DS_TELETEX_DELIV                By 
  9795.                                                                           way 
  9796.                                                                           of 
  9797.                                                                           teletex. 
  9798.  
  9799.                                           DS_TELEX_DELIV                  By 
  9800.                                                                           way 
  9801.                                                                           of 
  9802.                                                                           telex. 
  9803.  
  9804.                                           DS_VIDEOTEX_DELIV               By 
  9805.                                                                           way 
  9806.                                                                           of 
  9807.                                                                           videotex. 
  9808.  
  9809.  DS_A_PRESENTATION_ADDRESS           This attribute contains the OSI 
  9810.                                      presentation address of the object, which 
  9811.                                      is an OSI application entity. The matching 
  9812.                                      rule for a presented value to match a 
  9813.                                      value stored in the directory is that the 
  9814.                                      P-Selector, S-Selector, and T-Selector of 
  9815.                                      the two presentation addresses must be 
  9816.                                      equal, and the addresses of the presented 
  9817.                                      value must be a subset of those of the 
  9818.                                      stored value. 
  9819.  
  9820.  DS_A_REGISTERED_ADDRESS             This attribute contains mnemonics by means 
  9821.                                      of which the object can be reached by way 
  9822.                                      of the public telegram service, according 
  9823.                                      to Recommendation F.1. A mnemonic 
  9824.                                      identifies an object in the context of a 
  9825.                                      particular city, and is registered in the 
  9826.                                      country containing the city. The matching 
  9827.                                      rules require that differences in the case 
  9828.                                      of alphabetical characters be considered 
  9829.                                      insignificant. 
  9830.  
  9831.  DS_A_ROLE_OCCUPANT                  This attribute occurs only in entries that 
  9832.                                      describe an organizational role. It gives 
  9833.                                      the names of objects that fulfill the 
  9834.                                      organizational role. 
  9835.  
  9836.  DS_A_SEARCH_GUIDE                   This attribute contains the criteria that 
  9837.                                      can be used to build filters for 
  9838.                                      conducting searches in which the object is 
  9839.                                      the base object. 
  9840.  
  9841.  DS_A_SEE_ALSO                       This attribute contains the names of 
  9842.                                      objects that represent other aspects of 
  9843.                                      the real world object that the present 
  9844.                                      object represents. 
  9845.  
  9846.  DS_A_SERIAL_NBR                     This attribute contains the serial numbers 
  9847.                                      of a device. 
  9848.  
  9849.  DS_A_STATE_OR_PROV_NAME             This attribute specifies a state or 
  9850.                                      province. When used as part of a directory 
  9851.                                      name, it identifies states, provinces, or 
  9852.                                      other geographical regions in which the 
  9853.                                      object is located or with which it is 
  9854.                                      associated in some other important way. 
  9855.  
  9856.  DS_A_STREET_ADDRESS                 This attribute identifies a site for the 
  9857.                                      local distribution and physical delivery 
  9858.                                      of mail. When used as part of a directory 
  9859.                                      name, it identifies the street address 
  9860.                                      (for example, street name and house 
  9861.                                      number) at which the object is located or 
  9862.                                      with which it is associated in some other 
  9863.                                      important way. 
  9864.  
  9865.  DS_A_SUPPORT_APPLIC_CONTEXT         This attribute occurs only in entries that 
  9866.                                      describe an OSI application entity. It 
  9867.                                      identifies OSI application contexts 
  9868.                                      supported by the object. 
  9869.  
  9870.  DS_A_SURNAME                        This attribute occurs only in entries that 
  9871.                                      describe individuals. The surname by which 
  9872.                                      the individual is commonly known, normally 
  9873.                                      inherited from the individual's parent (or 
  9874.                                      parents) or taken at marriage, as 
  9875.                                      determined by the custom of the country or 
  9876.                                      culture with which the individual is 
  9877.                                      associated. 
  9878.  
  9879.  DS_A_PHONE_NBR                      This attribute identifies telephones by 
  9880.                                      means of which the object can be reached 
  9881.                                      or with which it is associated in some 
  9882.                                      other important way. The matching rules 
  9883.                                      require that differences caused by the 
  9884.                                      presence of spaces and dashes be 
  9885.                                      considered insignificant. 
  9886.  
  9887.  DS_A_TELETEX_TERM_IDENT             This attribute contains descriptions of 
  9888.                                      teletex terminals by means of which the 
  9889.                                      object can be reached or with which it is 
  9890.                                      associated in some other important way. 
  9891.  
  9892.  DS_A_TELEX_NBR                      This attribute contains descriptions of 
  9893.                                      telex terminals by means of which the 
  9894.                                      object can be reached or with which it is 
  9895.                                      associated in some other important way. 
  9896.  
  9897.  DS_A_TITLE                          This attribute identifies positions or 
  9898.                                      functions of the object within its 
  9899.                                      organization. 
  9900.  
  9901.  DS_A_USER_PASSWORD                  This attribute contains the passwords 
  9902.                                      assigned to the object. 
  9903.  
  9904.  DS_A_X121_ADDRESS                   This attribute identifies points on the 
  9905.                                      public data network at which the object 
  9906.                                      can be reached or with which it is 
  9907.                                      associated in some other important way. 
  9908.                                      The matching rules require that 
  9909.                                      differences caused by the presence of 
  9910.                                      spaces be considered insignificant. 
  9911.  
  9912.  
  9913. ΓòÉΓòÉΓòÉ 12.2. Selected Object Classes ΓòÉΓòÉΓòÉ
  9914.  
  9915. This section presents the object classes that are defined in the standards. 
  9916. Object classes are groups of directory entries that share certain 
  9917. characteristics. The object classes are arranged into a lattice, based on the 
  9918. object class DS_O_TOP. In a lattice, each element, except a leaf, has one or 
  9919. more immediate subordinates but also has one or more immediate superiors. This 
  9920. contrasts with a tree, where each element has exactly one immediate superior. 
  9921. Object classes closer to DS_O_TOP are called superclasses, and those further 
  9922. away are called subclasses. This relationship is not connected to any other 
  9923. such relationship in this guide. 
  9924.  
  9925. Each directory entry belongs to an object class, and to all the superclasses of 
  9926. that object class. Each entry has an attribute named DS_A_OBJECT_CLASS, which 
  9927. was discussed in the previous section, and which identifies the object classes 
  9928. to which the entry belongs. The values of this attribute are object 
  9929. identifiers, which are represented in the interface by constants with the same 
  9930. name as the object class, prefixed by DS_O_. 
  9931.  
  9932. Associated with each object class are zero or more mandatory and zero or more 
  9933. optional attributes. Each directory entry must contain all the mandatory 
  9934. attributes and can (but need not) contain the optional attributes associated 
  9935. with the object class and its superclasses. 
  9936.  
  9937. The object classes defined in the standards are shown in the following table, 
  9938. together with their object identifiers. 
  9939.  
  9940. Note:  The third and fourth columns of the following table contain the contents 
  9941.        octets of the BER encoding of the object identifier. All these object 
  9942.        identifiers stem from the root {joint-iso-ccitt(2) ds(5) 
  9943.        objectClass(6)}. 
  9944.  
  9945.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9946.   Γöé Table 40. Object Identifiers for Selected Object Classes                Γöé
  9947.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9948.   Γöé      Γöé                    Γöé  OBJECT ID Γöé    OBJECT ID BER   Γöé
  9949.   Γöé  PACKAGE  Γöé ATTRIBUTE TYPE            Γöé   BER   Γöé    HEXADECIMAL    Γöé
  9950.   Γöé      Γöé                    Γöé  DECIMAL  Γöé             Γöé
  9951.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9952.   Γöé   BDCP  Γöé DS_O_ALIAS              Γöé  85, 6, 1  Γöé    \x55\x06\x01    Γöé
  9953.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9954.   Γöé   BDCP  Γöé DS_O_APPLIC_ENTITY          Γöé  85, 6, 12 Γöé    \x55\x06\x0C    Γöé
  9955.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9956.   Γöé   BDCP  Γöé DS_O_APPLIC_PROCESS          Γöé  85, 6, 11 Γöé    \x55\x06\x0B    Γöé
  9957.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9958.   Γöé   BDCP  Γöé DS_O_COUNTRY             Γöé  85, 6, 2  Γöé    \x55\x06\x02    Γöé
  9959.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9960.   Γöé   BDCP  Γöé DS_O_DEVICE              Γöé  85, 6, 14 Γöé    \x55\x06\x0E    Γöé
  9961.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9962.   Γöé   BDCP  Γöé DS_O_DSA               Γöé  85, 6, 13 Γöé    \x55\x06\x0D    Γöé
  9963.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9964.   Γöé   BDCP  Γöé DS_O_GROUP_OF_NAMES          Γöé  85, 6, 9  Γöé    \x55\x06\x09    Γöé
  9965.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9966.   Γöé   BDCP  Γöé DS_O_LOCALITY             Γöé  85, 6, 3  Γöé    \x55\x06\x03    Γöé
  9967.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9968.   Γöé   BDCP  Γöé DS_O_ORG               Γöé  85, 6, 4  Γöé    \x55\x06\x04    Γöé
  9969.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9970.   Γöé   BDCP  Γöé DS_O_ORG_PERSON            Γöé  85, 6, 7  Γöé    \x55\x06\x07    Γöé
  9971.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9972.   Γöé   BDCP  Γöé DS_O_ORG_ROLE             Γöé  85, 6, 8  Γöé    \x55\x06\x08    Γöé
  9973.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9974.   Γöé   BDCP  Γöé DS_O_ORG_UNIT             Γöé  85, 6, 5  Γöé    \x55\x06\x05    Γöé
  9975.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9976.   Γöé   BDCP  Γöé DS_O_PERSON              Γöé  85, 6, 6  Γöé    \x55\x06\x06    Γöé
  9977.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9978.   Γöé   BDCP  Γöé DS_O_RESIDENTIAL_PERSON        Γöé  85, 6, 10 Γöé    \x55\x06\x0A    Γöé
  9979.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9980.   Γöé   BDCP  Γöé DS_O_TOP               Γöé  85, 6, 0  Γöé    \x55\x06\x00    Γöé
  9981.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9982.  
  9983.  
  9984. ΓòÉΓòÉΓòÉ 12.3. OM Class Hierarchy ΓòÉΓòÉΓòÉ
  9985.  
  9986. The remainder of this section defines the additional OM classes used to 
  9987. represent values of the selected attributes described in Selected Attribute 
  9988. Types. Some of the selected attributes are represented by OM classes that are 
  9989. used in the interface itself, and hence are defined in XDS Class Definitions 
  9990. (for example, DS_C_NAME). As mentioned in the introductory text to this 
  9991. section, an explanation of the purpose of these attributes is beyond the scope 
  9992. of this guide. 
  9993.  
  9994. This section shows the hierarchical organization of the OM classes that are 
  9995. defined in the following sections, and it shows which OM classes inherit 
  9996. additional OM attributes from their OM superclasses. In the following list, 
  9997. subclassification is indicated by indentation, and the names of abstract OM 
  9998. classes are in italics. For example, DS_C_POSTAL_ADDRESS is an immediate 
  9999. subclass of the abstract OM class OM_C_OBJECT. 
  10000.  
  10001. OM_C_OBJECT 
  10002.  
  10003.       DS_C_FACSIMILE_PHONE_NBR 
  10004.       DS_C_POSTAL_ADDRESS 
  10005.       DS_C_SEARCH_CRITERION 
  10006.       DS_C_SEARCH_GUIDE 
  10007.       DS_C_TELETEX_TERM_IDENT 
  10008.       DS_C_TELEX_NBR 
  10009.  
  10010.  None of the OM classes in the preceding list are encodable using om_encode and 
  10011.  om_decode. 
  10012.  
  10013.  
  10014. ΓòÉΓòÉΓòÉ 12.4. DS_C_FACSIMILE_PHONE_NBR ΓòÉΓòÉΓòÉ
  10015.  
  10016. An instance of OM class DS_C_FACSIMILE_PHONE_NBR identifies and describes a 
  10017. facsimile terminal, if required. 
  10018.  
  10019. An instance of this OM class has the OM attributes of its superclass, 
  10020. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  10021.  
  10022. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10023. Γöé Table 41. OM Attributes of DS_C_FACSIMILE_PHONE_NBR                   Γöé
  10024. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10025. Γöé OM ATTRIBUTE      Γöé VALUE SYNTAX       Γöé   VALUE  Γöé   VALUE  Γöé  VALUE  Γöé
  10026. Γöé             Γöé             Γöé  LENGTH  Γöé  NUMBER  Γöé INITIALLY Γöé
  10027. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10028. Γöé DS_PARAMETERS      Γöé Object(MH_C_G3_FAX    Γöé    -   Γöé  0 or 1  Γöé   -   Γöé
  10029. Γöé             Γöé _NBPS)(1)        Γöé       Γöé       Γöé      Γöé
  10030. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10031. Γöé DS_PHONE_NBR      Γöé String(OM_S_PRINTABLE  Γöé   1-32   Γöé    1   Γöé   -   Γöé
  10032. Γöé             Γöé _STRING)(2)       Γöé       Γöé       Γöé      Γöé
  10033. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10034. Γöé (1) As defined in the X.400 API Specifications.                     Γöé
  10035. Γöé (2) As permitted by E.123 (for example, +44 582 10101).                 Γöé
  10036. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10037.  
  10038.  DS_PARAMETERS            If present, this attribute identifies the facsimile 
  10039.                           terminal's advanced capabilities. 
  10040.  
  10041.  DS_PHONE_NBR             This attribute contains a telephone number by means 
  10042.                           of which the facsimile terminal is accessed. 
  10043.  
  10044.  
  10045. ΓòÉΓòÉΓòÉ 12.5. DS_C_POSTAL_ADDRESS ΓòÉΓòÉΓòÉ
  10046.  
  10047. An instance of OM class DS_C_POSTAL_ADDRESS is a postal address. 
  10048.  
  10049. An instance of this OM class has the OM attributes of its superclass, 
  10050. OM_C_OBJECT, in addition to the OM attribute listed in the following table. 
  10051.  
  10052. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10053. Γöé Table 42. OM Attribute of DS_C_POSTAL_ADDRESS                      Γöé
  10054. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10055. Γöé OM ATTRIBUTE      Γöé VALUE SYNTAX       Γöé   VALUE  Γöé   VALUE  Γöé  VALUE  Γöé
  10056. Γöé             Γöé             Γöé  LENGTH  Γöé  NUMBER  Γöé INITIALLY Γöé
  10057. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10058. Γöé DS_POSTAL_ADDRESS    Γöé String(OM_S_TELETEX   Γöé   1-30   Γöé   1-6   Γöé   -   Γöé
  10059. Γöé             Γöé _STRING)         Γöé       Γöé       Γöé      Γöé
  10060. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10061.  
  10062.  DS_POSTAL_ADDRESS          Each value of this OM attribute is one line of the 
  10063.                             postal address. It typically includes a name, 
  10064.                             street address, city name, state or province name, 
  10065.                             postal code, and possibly a country name. 
  10066.  
  10067.  
  10068. ΓòÉΓòÉΓòÉ 12.6. DS_C_SEARCH_CRITERION ΓòÉΓòÉΓòÉ
  10069.  
  10070. An instance of OM class DS_C_SEARCH_CRITERION is a component of a 
  10071. DS_C_SEARCH_GUIDE OM object. 
  10072.  
  10073. An instance of this OM class has the OM attributes of its superclass, 
  10074. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  10075.  
  10076. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10077. Γöé Table 43. OM Attributes of DS_C_SEARCH_CRITERION                    Γöé
  10078. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10079. Γöé OM ATTRIBUTE      Γöé VALUE SYNTAX       Γöé   VALUE  Γöé   VALUE  Γöé  VALUE  Γöé
  10080. Γöé             Γöé             Γöé  LENGTH  Γöé  NUMBER  Γöé INITIALLY Γöé
  10081. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10082. Γöé DS_ATTRIBUTE_TYPE    Γöé String(OM_S_OBJECT    Γöé    -   Γöé  0 or 1  Γöé   -   Γöé
  10083. Γöé             Γöé _IDENTIFIER_STRING)   Γöé       Γöé       Γöé      Γöé
  10084. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10085. Γöé DS_CRITERIA       Γöé Object(DS_C_SEARCH    Γöé    -   Γöé  0 or more Γöé   -   Γöé
  10086. Γöé             Γöé _CRITERION)       Γöé       Γöé       Γöé      Γöé
  10087. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10088. Γöé DS_FILTER_ITEM_TYPE   Γöé Enum(DS_Filter_Item_TypeΓöé    -   Γöé  0 or 1  Γöé   -   Γöé
  10089. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10090. Γöé DS_FILTER_TYPE     Γöé Enum(DS_Filter_Type)   Γöé    -   Γöé    1   Γöé  DS_ITEM  Γöé
  10091. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10092.  
  10093. A DS_C_SEARCH_CRITERION suggests how to build part of a filter to be used when 
  10094. searching the directory. Its meaning depends on the value of its OM attribute 
  10095. DS_FILTER_TYPE. If the value is DS_ITEM, then the criterion suggests building 
  10096. an instance of OM class DS_C_FILTER_ITEM. If DS_FILTER_TYPE has any other 
  10097. value, it suggests building an instance of OM class DS_C_FILTER. 
  10098.  
  10099.  DS_ATTRIBUTE_TYPE          This attribute indicates the attribute type to be 
  10100.                             used in the suggested DS_C_FILTER_ITEM. This OM 
  10101.                             attribute is only present when the value of 
  10102.                             DS_FILTER_TYPE is DS_ITEM. 
  10103.  
  10104.  DS_CRITERIA                This attribute contains nested search criteria. 
  10105.                             This OM attribute is not present when the value of 
  10106.                             DS_FILTER_TYPE is DS_ITEM. 
  10107.  
  10108.  DS_FILTER_ITEM_TYPE        This attribute indicates the type of suggested 
  10109.                             filter item. Its value can be one of the following: 
  10110.  
  10111.                                  DS_APPROXIMATE_MATCH 
  10112.                                  DS_EQUALITY 
  10113.                                  DS_GREATER_OR_EQUAL 
  10114.                                  DS_LESS_OR_EQUAL 
  10115.                                  DS_SUBSTRINGS 
  10116.  
  10117.  However, the filter item cannot have the value DS_PRESENT. This OM attribute 
  10118.  is only present when the value of DS_FILTER_TYPE is DS_ITEM. 
  10119.  
  10120.  DS_FILTER_TYPE             This attribute indicates the type of suggested 
  10121.                             filter. The value DS_ITEM means that the suggested 
  10122.                             component is a filter item, not a filter. The other 
  10123.                             values suggest the corresponding type of filter. 
  10124.                             Its value is one of the following: 
  10125.  
  10126.                                  DS_AND 
  10127.                                  DS_ITEM 
  10128.                                  DS_NOT 
  10129.                                  DS_OR 
  10130.  
  10131.  
  10132. ΓòÉΓòÉΓòÉ 12.7. DS_C_SEARCH_GUIDE ΓòÉΓòÉΓòÉ
  10133.  
  10134. An instance of OM class DS_C_SEARCH_GUIDE suggests a criterion for searching 
  10135. the directory for particular entries. It can be used to build a DS_C_FILTER 
  10136. parameter for ds_search operations that are based on the object in whose entry 
  10137. the search guide occurs. 
  10138.  
  10139. An instance of this OM class has the OM attributes of its superclass, 
  10140. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  10141.  
  10142. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10143. Γöé Table 44. OM Attributes of DS_C_SEARCH_GUIDE                      Γöé
  10144. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10145. Γöé OM ATTRIBUTE      Γöé VALUE SYNTAX       Γöé   VALUE  Γöé   VALUE  Γöé  VALUE  Γöé
  10146. Γöé             Γöé             Γöé  LENGTH  Γöé  NUMBER  Γöé INITIALLY Γöé
  10147. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10148. Γöé DS_OBJECT_CLASS     Γöé String(OM_S_OBJECT    Γöé    -   Γöé  0 or 1  Γöé   -   Γöé
  10149. Γöé             Γöé _IDENTIFIER_ STRING)   Γöé       Γöé       Γöé      Γöé
  10150. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10151. Γöé DS_CRITERIA       Γöé Object(DS_C_SEARCH    Γöé    -   Γöé    1   Γöé   -   Γöé
  10152. Γöé             Γöé _CRITERION)       Γöé       Γöé       Γöé      Γöé
  10153. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10154.  
  10155.  DS_OBJECT_CLASS            This attribute identifies the object class of the 
  10156.                             entries to which the search guide applies. If this 
  10157.                             OM attribute is absent, the search guide applies to 
  10158.                             objects of any class. 
  10159.  
  10160.  DS_CRITERIA                This attribute contains the suggested search 
  10161.                             criteria. 
  10162.  
  10163.  
  10164. ΓòÉΓòÉΓòÉ 12.8. DS_C_TELETEX_TERM_IDENT ΓòÉΓòÉΓòÉ
  10165.  
  10166. An instance of OM class DS_C_TELETEX_TERM_IDENT identifies and describes a 
  10167. teletex terminal. 
  10168.  
  10169. An instance of this OM class has the OM attributes of its superclass, 
  10170. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  10171.  
  10172. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10173. Γöé Table 45. OM Attributes of DS_C_TELETEX_TERM_IDENT                   Γöé
  10174. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10175. Γöé OM ATTRIBUTE      Γöé VALUE SYNTAX       Γöé   VALUE  Γöé   VALUE  Γöé  VALUE  Γöé
  10176. Γöé             Γöé             Γöé  LENGTH  Γöé  NUMBER  Γöé INITIALLY Γöé
  10177. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10178. Γöé DS_PARAMETERS      Γöé Object(MH_C_TELETEX   Γöé    -   Γöé  0 or 1  Γöé   -   Γöé
  10179. Γöé             Γöé _NBPS)(1)        Γöé       Γöé       Γöé      Γöé
  10180. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10181. Γöé DS_TELETEX_TERM     Γöé String(OM_S_PRINTABLE  Γöé  1-1024  Γöé    1   Γöé   -   Γöé
  10182. Γöé             Γöé _STRING)(2)       Γöé       Γöé       Γöé      Γöé
  10183. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10184. Γöé (1) As defined in the X.400 API Specifications.                     Γöé
  10185. Γöé (2) As permitted by F.200.                               Γöé
  10186. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10187.  
  10188.  DS_PARAMETERS              This attribute identifies the teletex terminal's 
  10189.                             advanced capabilities. 
  10190.  
  10191.  DS_TELETEX_TERM            This attribute identifies the teletex terminal. 
  10192.  
  10193.  
  10194. ΓòÉΓòÉΓòÉ 12.9. DS_C_TELEX_NBR ΓòÉΓòÉΓòÉ
  10195.  
  10196. An instance of OM class DS_C_TELEX_NBR identifies and describes a telex 
  10197. terminal. 
  10198.  
  10199. An instance of this OM class has the OM attributes of its superclass, 
  10200. OM_C_OBJECT, in addition to the OM attributes listed in the following table. 
  10201.  
  10202. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10203. Γöé Table 46. OM Attributes of DS_C_TELEX_NBR                        Γöé
  10204. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10205. Γöé OM ATTRIBUTE      Γöé VALUE SYNTAX       Γöé   VALUE  Γöé   VALUE  Γöé  VALUE  Γöé
  10206. Γöé             Γöé             Γöé  LENGTH  Γöé  NUMBER  Γöé INITIALLY Γöé
  10207. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10208. Γöé DS_ANSWERBACK      Γöé String(OM_S_PRINTABLE  Γöé   1-8   Γöé    1   Γöé   -   Γöé
  10209. Γöé             Γöé _STRING)         Γöé       Γöé       Γöé      Γöé
  10210. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10211. Γöé DS_COUNTRY_CODE     Γöé String(OM_S_PRINTABLE  Γöé   1-4   Γöé    1   Γöé   -   Γöé
  10212. Γöé             Γöé _STRING)         Γöé       Γöé       Γöé      Γöé
  10213. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10214. Γöé DS_TELETEX_NBR     Γöé String(OM_S_PRINTABLE  Γöé   1-14   Γöé    1   Γöé   -   Γöé
  10215. Γöé             Γöé _STRING)         Γöé       Γöé       Γöé      Γöé
  10216. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10217.  
  10218.  DS_ANSWERBACK              This attribute contains the code with which the 
  10219.                             telex terminal acknowledges calls placed to it. 
  10220.  
  10221.  DS_COUNTRY_CODE            This attribute contains the identifier of the 
  10222.                             country through which the telex terminal is 
  10223.                             accessed. 
  10224.  
  10225.  DS_TELEX_NBR               This attribute contains the number by means of 
  10226.                             which the telex terminal is addressed. 
  10227.  
  10228.  
  10229. ΓòÉΓòÉΓòÉ 13. Information Syntaxes ΓòÉΓòÉΓòÉ
  10230.  
  10231. This section defines the syntaxes permitted for attribute values. The syntaxes 
  10232. are closely aligned with the types and type constructors of ASN.1. The OM_value 
  10233. data type specifies how a value of each syntax is represented in the C 
  10234. interface (see XOM Service Interface). 
  10235.  
  10236.  
  10237. ΓòÉΓòÉΓòÉ 13.1. Syntax Templates ΓòÉΓòÉΓòÉ
  10238.  
  10239. The names of certain syntaxes are constructed from syntax templates. A syntax 
  10240. template is a lexical construct comprising a primary identifier followed by an 
  10241. asterisk enclosed in parentheses: 
  10242.  
  10243. identifier (*)
  10244.  
  10245. A syntax template encompasses a group of related syntaxes. Any member of the 
  10246. group, without distinction, is indicated by the primary identifier (identifier) 
  10247. alone. A particular member is indicated by the template with the asterisk (*) 
  10248. replaced by one of a set of secondary identifiers associated with the template: 
  10249.  
  10250. identifier1(identifier2)
  10251.  
  10252.  
  10253. ΓòÉΓòÉΓòÉ 13.2. Syntaxes ΓòÉΓòÉΓòÉ
  10254.  
  10255. A variety of syntaxes are defined. Most are functionally equivalent to ASN.1 
  10256. types, as documented in Relationship to ASN.1 Simple Types and ending with 
  10257. Relationship to ASN.1 Type Constructors. 
  10258.  
  10259. The following syntaxes are defined: 
  10260.  
  10261.  OM_S_BOOLEAN            A value of this syntax is a Boolean. That is, it can 
  10262.                          be OM_TRUE or OM_FALSE. 
  10263.  
  10264.  Enum(*)                 A value of any syntax encompassed by this syntax 
  10265.                          template is one of a set of values associated with the 
  10266.                          syntax. The only significant characteristic of the 
  10267.                          values is that they are distinct. 
  10268.  
  10269.                          The group of syntaxes encompassed by this template is 
  10270.                          open-ended. Zero or more members are added to the 
  10271.                          group by each package definition. The secondary 
  10272.                          identifiers that indicate the members are also 
  10273.                          assigned there. 
  10274.  
  10275.  OM_S_INTEGER            A value of this syntax is a positive or negative 
  10276.                          integer. 
  10277.  
  10278.  OM_S_NULL               The one value of this syntax is a valueless place 
  10279.                          holder. 
  10280.  
  10281.  Object(*)               A value of any syntax encompassed by this syntax 
  10282.                          template is an object, which is any instance of a 
  10283.                          class associated with the syntax. 
  10284.  
  10285.                          The group of syntaxes encompassed by this template is 
  10286.                          open-ended. One member is added to the group by each 
  10287.                          class definition. The secondary identifier that 
  10288.                          indicates the member is the name of the class. 
  10289.  
  10290.  String(*)               A value of any syntax encompassed by this syntax 
  10291.                          template is a string (as defined in Strings) whose 
  10292.                          form and meaning are associated with the syntax. 
  10293.  
  10294.                          The group of syntaxes encompassed by this template is 
  10295.                          closed. One syntax is defined for each ASN.1 string 
  10296.                          type. The secondary identifier that indicates the 
  10297.                          member is, in general, the first word of the type's 
  10298.                          name. 
  10299.  
  10300.  
  10301. ΓòÉΓòÉΓòÉ 13.3. Strings ΓòÉΓòÉΓòÉ
  10302.  
  10303. A string is an ordered sequence of zero or more bits, octets, or characters 
  10304. accompanied by the string's length. 
  10305.  
  10306. The value length of a string is the number of bits in a bit string, octets in 
  10307. an octet string, or characters in a character string. Any constraints on the 
  10308. value length of a string are specified in the appropriate class definitions. 
  10309. The length is confined to the range 0 to 2[32]. 
  10310.  
  10311. Note:  The length of a character string does not necessarily equal the number 
  10312.        of characters it comprises because, for example, a single character can 
  10313.        be represented using several octets. 
  10314.  
  10315.  The elements of a string are numbered. The position of the first element is 
  10316.  zero (0). The positions of successive elements are successive positive 
  10317.  integers. 
  10318.  
  10319.  The syntaxes that form the string group are identified in the following table, 
  10320.  which gives the secondary identifier assigned to each such syntax. 
  10321.  
  10322.  Note:  The identifiers in the first, second, and third columns of "String 
  10323.         Syntax Identifiers" indicate the syntaxes of bit, octet, and character 
  10324.         strings, respectively. The String group comprises all syntaxes 
  10325.         identified in the table. 
  10326.  
  10327.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10328.   Γöé Table 47. String Syntax Identifiers                           Γöé
  10329.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10330.   Γöé BIT STRING    Γöé OCTET STRING IDENTIFIER      Γöé CHARACTER STRING IDENTIFIER    Γöé
  10331.   Γöé IDENTIFIER    Γöé                  Γöé                  Γöé
  10332.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10333.   Γöé OM_S_BIT_STRING Γöé OM_S_ENCODING_STRING(1)      Γöé OM_S_GENERAL_STRING(2)      Γöé
  10334.   Γöé         Γöé OM_S_OBJECT_IDENTIFIER_STRING(3)  Γöé OM_S_OCTET_STRING         Γöé
  10335.   Γöé         Γöé OM_S_GENERALISED_TIME_STRING(2)  Γöé OM_S_GRAPHIC_STRING(2)      Γöé
  10336.   Γöé         Γöé                  Γöé OM_S_IA5_STRING(2)        Γöé
  10337.   Γöé         Γöé                  Γöé OM_S_NUMERIC_STRING        Γöé
  10338.   Γöé         Γöé                  Γöé OM_S_OBJECT_DESCRIPTOR_STRING(2) Γöé
  10339.   Γöé         Γöé                  Γöé OM_S_PRINTABLE_STRING(2)     Γöé
  10340.   Γöé         Γöé                  Γöé OM_S_TELETEX_STRING(2)      Γöé
  10341.   Γöé         Γöé                  Γöé OM_S_UTC_TIME_STRING(2)      Γöé
  10342.   Γöé         Γöé                  Γöé OM_S_VIDEOTEX_STRING(2)      Γöé
  10343.   Γöé         Γöé                  Γöé OM_S_VISIBLE_STRING(2)      Γöé
  10344.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10345.   Γöé (1) The octets are those that BER permits for the contents octets of the encoding of a Γöé
  10346.   Γöé   value of any ASN.1 type.                              Γöé
  10347.   Γöé                                             Γöé
  10348.   Γöé (2) The characters are those permitted by ASN.1's type of the corresponding name.    Γöé
  10349.   Γöé   Values of these syntaxes are represented in their BER encoded form.  The octets by Γöé
  10350.   Γöé   means of which they are represented are those that BER permits for the contents   Γöé
  10351.   Γöé   octets of a primitive encoding of a value of that type.               Γöé
  10352.   Γöé                                             Γöé
  10353.   Γöé (3) The octets are those that BER permits for the contents octets of the encoding of a Γöé
  10354.   Γöé   value of ASN.1's object identifier type.                      Γöé
  10355.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10356.  
  10357.  
  10358. ΓòÉΓòÉΓòÉ 13.4. Representation of String Values ΓòÉΓòÉΓòÉ
  10359.  
  10360. In the service interface, a string value is represented by a string data type. 
  10361. This is defined in the previous Strings section. The length of a string is the 
  10362. number of octets by which it is represented at the interface. It is confined to 
  10363. the range 0 to 2[32]. 
  10364.  
  10365. The length of a character does not need to be equal to the number of characters 
  10366. it comprises because, for example, a single character can be represented using 
  10367. several octets. 
  10368.  
  10369. It might be necessary to segment large string values when passing them across 
  10370. the interface. A segment is any zero or more contiguous octets of a string 
  10371. value. Segment boundaries are without semantic significance. 
  10372.  
  10373.  
  10374. ΓòÉΓòÉΓòÉ 13.5. Relationship to ASN.1 Simple Types ΓòÉΓòÉΓòÉ
  10375.  
  10376. As shown in "Syntax for ASN.1 Simple Types", for every ASN.1 simple type, 
  10377. except Real, there is an OM syntax that is functionally equivalent to it. The 
  10378. simple types are listed in the first column of the table; the corresponding 
  10379. syntaxes are listed in the second column. 
  10380.  
  10381. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10382. Γöé Table 48. Syntax for ASN.1 Simple Types                         Γöé
  10383. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10384. Γöé TYPE BIT STRING IDENTIFIER  Γöé SYNTAX OCTET STRING IDENTIFIER              Γöé
  10385. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10386. Γöé Bit String          Γöé String(OM_S_BIT_STRING)                  Γöé
  10387. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10388. Γöé Boolean           Γöé OM_S_BOOLEAN                       Γöé
  10389. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10390. Γöé Integer           Γöé OM_S_INTEGER                       Γöé
  10391. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10392. Γöé Null             Γöé OM_S_NULL                         Γöé
  10393. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10394. Γöé Object Identifier      Γöé String(OM_S_OBJECT_IDENTIFIER_STRING)           Γöé
  10395. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10396. Γöé Octet String         Γöé String(OM_S_OCTET_STRING)                 Γöé
  10397. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10398. Γöé Real             Γöé None(1)                          Γöé
  10399. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10400. Γöé (1) A future edition of XOM might define a syntax corresponding to this type.      Γöé
  10401. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10402.  
  10403.  
  10404. ΓòÉΓòÉΓòÉ 13.6. Relationship to ASN.1 Useful Types ΓòÉΓòÉΓòÉ
  10405.  
  10406. As shown in "Syntax for ASN.1 Types", for every ASN.1 useful type, there is an 
  10407. OM syntax that is functionally equivalent to it. The useful types are listed in 
  10408. the first column of the table; the corresponding syntaxes are listed in the 
  10409. second column. 
  10410.  
  10411. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10412. Γöé Table 49. Syntax for ASN.1 Types                            Γöé
  10413. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10414. Γöé TYPE             Γöé SYNTAX                          Γöé
  10415. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10416. Γöé External           Γöé Object(OM_C_EXTERNAL)                   Γöé
  10417. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10418. Γöé Generalized Time       Γöé String(OM_S_GENERALISED_TIME_STRING)           Γöé
  10419. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10420. Γöé Object Descriptor      Γöé String(OM_S_OBJECT_DESCRIPTOR_STRING)           Γöé
  10421. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10422. Γöé Universal Time        Γöé String(OM_S_UTC_TIME_STRING)               Γöé
  10423. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10424.  
  10425.  
  10426. ΓòÉΓòÉΓòÉ 13.7. Relationship to ASN.1 Character String Types ΓòÉΓòÉΓòÉ
  10427.  
  10428. As shown in "Syntax for ASN.1 Character String Types", for every ASN.1 
  10429. character string type, there is an OM syntax that is functionally equivalent to 
  10430. it. The ASN.1 character string types are listed in the first column of the 
  10431. table; the corresponding syntax is listed in the second column. 
  10432.  
  10433. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10434. Γöé Table 50. Syntax for ASN.1 Character String Types                    Γöé
  10435. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10436. Γöé TYPE             Γöé SYNTAX                          Γöé
  10437. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10438. Γöé General String        Γöé String(OM_S_GENEREL_STRING)                Γöé
  10439. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10440. Γöé Graphic String        Γöé String(OM_S_GRAPHIC_STRING)                Γöé
  10441. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10442. Γöé IA5 String          Γöé String(OM_S_IA5_STRING)                  Γöé
  10443. Γöé               Γöé String(OM_S_LOCAL_STRING)                 Γöé
  10444. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10445. Γöé Numeric String        Γöé String(OM_S_NUMERIC_STRING)                Γöé
  10446. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10447. Γöé Printable String       Γöé String(OM_S_PRINTABLE_STRING)               Γöé
  10448. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10449. Γöé Teletex String        Γöé String(OM_S_TELETEX_STRING)                Γöé
  10450. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10451. Γöé Videotex String       Γöé String(OM_S_VIDEOTEX_STRING)               Γöé
  10452. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10453. Γöé Visible String        Γöé String(OM_S_VISIBLE_STRING)                Γöé
  10454. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10455.  
  10456.  
  10457. ΓòÉΓòÉΓòÉ 13.8. Relationship to ASN.1 Type Constructors ΓòÉΓòÉΓòÉ
  10458.  
  10459. As shown in "Syntax for ASN.1 Type Constructors", there are functionally 
  10460. equivalent OM syntaxes for some (but not all) ASN.1 type constructors. The 
  10461. constructors are listed in the first column of the table; the corresponding 
  10462. syntaxes are listed in the second column. 
  10463.  
  10464. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10465. Γöé Table 51. Syntax for ASN.1 Type Constructors                      Γöé
  10466. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10467. Γöé TYPE CONSTRUCTOR       Γöé SYNTAX                          Γöé
  10468. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10469. Γöé Any             Γöé String(OM_S_ENCODING_STRING)               Γöé
  10470. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10471. Γöé Choice            Γöé OM_S_OBJECT                        Γöé
  10472. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10473. Γöé Enumerated          Γöé OM_S_ENUMERATION                     Γöé
  10474. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10475. Γöé Selection          Γöé None(1)                          Γöé
  10476. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10477. Γöé Sequence           Γöé OM_S_OBJECT                        Γöé
  10478. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10479. Γöé Sequence Of         Γöé OM_S_OBJECT                        Γöé
  10480. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10481. Γöé Set             Γöé OM_S_OBJECT                        Γöé
  10482. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10483. Γöé Set Of            Γöé OM_S_OBJECT                        Γöé
  10484. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10485. Γöé Tagged            Γöé None(2)                          Γöé
  10486. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10487. Γöé (1) This type constructor, a purely specification-time phenomenon, has no corre-    Γöé
  10488. Γöé   sponding syntax.                                  Γöé
  10489. Γöé (2) This type constructor is used to distinguish the alternatives of a choice or the  Γöé
  10490. Γöé   elements of a sequence or set.  This function is performed by attribute types.   Γöé
  10491. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10492.  
  10493. The effects of the principal type constructors can be achieved, in any of a 
  10494. variety of ways, using objects to group attributes, or using attributes to 
  10495. group values. An OM application designer can (but need not) model these 
  10496. constructors as classes of the following kinds: 
  10497.  
  10498.    o  Choice - An attribute type can be defined for each alternative with just 
  10499.       one being permitted in an instance of the class. 
  10500.  
  10501.    o  Sequence or Set - An attribute type can be defined for each sequence or 
  10502.       set element. If an element is optional, then the attribute has zero or 
  10503.       one values. 
  10504.  
  10505.    o  Sequence Of or Set Of - A single multivalued attribute can be defined. 
  10506.  
  10507.  An ASN.1 definition of an Enumerated Type component of a structured type is 
  10508.  generally mapped to an OM attribute with an OM syntax OM_S_ENUMERATION in this 
  10509.  interface. Where the ASN.1 component is optional, this is generally indicated 
  10510.  by an additional member of the enumeration, rather than by the omission of the 
  10511.  OM attribute. This leads to simpler programming in the application. 
  10512.  
  10513.  
  10514. ΓòÉΓòÉΓòÉ 14. XOM Service Interface ΓòÉΓòÉΓòÉ
  10515.  
  10516. This section describes the following aspects of the XOM service interface: 
  10517.  
  10518.    o  The conformance of the DCE X/Open OSI-Abstract-Data Manipulation (XOM) 
  10519.       implementation to the X/Open specification. 
  10520.  
  10521.    o  The data types whose data values are the parameters and results of the 
  10522.       functions that the service makes available to the client. 
  10523.  
  10524.    o  An overview of the functions that the service makes available to the 
  10525.       client. For a complete description of these functions, see the 
  10526.       corresponding reference pages in the DCE for OS/2 Warp: Application 
  10527.       Development Reference. 
  10528.  
  10529.    o  The return codes that indicate the outcomes (in particular, the 
  10530.       exceptions) that the functions can report. 
  10531.  
  10532.  See the \opt\dcelocal\examples\xdsxom directory for examples of using the XOM 
  10533.  interface. 
  10534.  
  10535.  
  10536. ΓòÉΓòÉΓòÉ 14.1. Standards Conformance ΓòÉΓòÉΓòÉ
  10537.  
  10538. The DCE XOM implementation conforms to the following specification: X/Open CAE 
  10539. Specification, OSI-Abstract-Data Manipulation (XOM) (November 1991). 
  10540.  
  10541. The following apply to the DCE XOM implementation: 
  10542.  
  10543.    o  Multiple workspaces for XDS objects are supported. 
  10544.  
  10545.    o  The OM package is supported. 
  10546.  
  10547.    o  The om_encode and om_decode functions are not supported. The transfer of 
  10548.       objects between workspaces is not envisaged within the DCE environment. 
  10549.       The OM classes used by the DCE XDS/XOM API are not encodable. 
  10550.  
  10551.    o  Translation to local character sets is not provided. 
  10552.  
  10553.  
  10554. ΓòÉΓòÉΓòÉ 14.2. XOM Data Types ΓòÉΓòÉΓòÉ
  10555.  
  10556. The data types of the XOM service interface are defined in this section and 
  10557. listed in the following table. These data types are repeated in the XOM 
  10558. reference pages (see xom.h in the DCE for OS/2 Warp: Application Development 
  10559. Reference). 
  10560.  
  10561.  Data Type                  Description 
  10562.  
  10563.  OM_boolean                 Type definition for a Boolean data value. 
  10564.  
  10565.  OM_descriptor              Type definition for describing an attribute type 
  10566.                             and value. 
  10567.  
  10568.  OM_enumeration             Type definition for an Enumerated data value. 
  10569.  
  10570.  OM_exclusions              Type definition for the exclusions parameter for 
  10571.                             om_get. 
  10572.  
  10573.  OM_integer                 Type definition for an Integer data value. 
  10574.  
  10575.  OM_modification            Type definition for the modification parameter for 
  10576.                             om_put. 
  10577.  
  10578.  OM_object                  Type definition for a handle to either a private or 
  10579.                             a public object. 
  10580.  
  10581.  OM_object_identifier       Type definition for an Object Identifier data 
  10582.                             value. 
  10583.  
  10584.  OM_private_object          Type definition for a handle to an object in an 
  10585.                             implementation-defined, or private, representation. 
  10586.  
  10587.  OM_public_object           Type definition for a defined representation of an 
  10588.                             object that can be directly interrogated by a 
  10589.                             programmer. 
  10590.  
  10591.  OM_return_code             Type definition for a value returned from all OM 
  10592.                             functions, indicating either that the function 
  10593.                             succeeded or why it failed. 
  10594.  
  10595.  OM_string                  Type definition for a data value of one of the 
  10596.                             String syntaxes. 
  10597.  
  10598.  OM_syntax                  Type definition for identifying a syntax type. 
  10599.  
  10600.  OM_type                    Type definition for identifying an OM attribute 
  10601.                             type. 
  10602.  
  10603.  OM_type_list               Type definition for enumerating a sequence of OM 
  10604.                             attribute types. 
  10605.  
  10606.  OM_value                   Type definition for representing any data value. 
  10607.  
  10608.  OM_value_length            Type definition for indicating the number of bits, 
  10609.                             octets, or characters in a string. 
  10610.  
  10611.  OM_value_position          Type definition for designating a particular 
  10612.                             location within a String data value. 
  10613.  
  10614.  OM_workspace               Type definition for identifying an 
  10615.                             application-specific API that implements OM, such 
  10616.                             as directory or message handling. 
  10617.  
  10618.  Some data types are defined in terms of the following intermediate data types, 
  10619.  whose precise definitions in C are defined by the system: 
  10620.  
  10621.  OM_sint       The positive and negative integers that can be represented in 16 
  10622.                bits 
  10623.  
  10624.  OM_sint16     The positive and negative integers that can be represented in 16 
  10625.                bits 
  10626.  
  10627.  OM_sint32     The positive and negative integers that can be represented in 32 
  10628.                bits 
  10629.  
  10630.  OM_uint       The non-negative integers that can be represented in 16 bits 
  10631.  
  10632.  OM_uint16     The non-negative integers that can be represented in 16 bits 
  10633.  
  10634.  OM_uint32     The non-negative integers that can be represented in 32 bits 
  10635.  
  10636.  Note:  The OM_sint and OM_uint data types are defined by the range of integers 
  10637.         they must accommodate. As typically declared in the C interface, they 
  10638.         are defined by the range of integers permitted by the host machine's 
  10639.         word size. The latter range, however, always encompasses the former. 
  10640.  
  10641.  The type definitions for these data types are as follows: 
  10642.  
  10643.   typedef int             OM_sint;
  10644.   typedef short           OM_sint16;
  10645.   typedef long int        OM_sint32;
  10646.   typedef unsigned        OM_uint;
  10647.   typedef unsigned short  OM_uint16;
  10648.   typedef long unsigned   OM_uint32;
  10649.  
  10650.  
  10651. ΓòÉΓòÉΓòÉ 14.2.1. OM_boolean ΓòÉΓòÉΓòÉ
  10652.  
  10653. The C declaration for an OM_boolean data value is as follows: 
  10654.  
  10655. typedef OM_uint32 OM_boolean;
  10656.  
  10657. A value of this data type is a Boolean (that is, either FALSE or TRUE). 
  10658.  
  10659. FALSE (OM_FALSE) is indicated by 0 (zero). TRUE is indicated by any other 
  10660. integer, although the symbolic constant OM_TRUE refers to the integer 1 
  10661. specifically. 
  10662.  
  10663.  
  10664. ΓòÉΓòÉΓòÉ 14.2.2. OM_descriptor ΓòÉΓòÉΓòÉ
  10665.  
  10666. The OM_descriptor data type is used to describe an attribute type and value. 
  10667. Its C declaration is as follows: 
  10668.  
  10669. typedef struct OM_descriptor_struct
  10670. {
  10671. OM_type        type;
  10672. OM_syntax      syntax;
  10673. union  OM_value_union value;
  10674. }  OM_descriptor;
  10675.  
  10676. Note:  Other components are encoded in high bits of the syntax member. 
  10677.  
  10678.  See the OM_value data type in OM_value or xom.h in the DCE for OS/2 
  10679.  Warp:Application Development Reference for a description of the OM_value_union 
  10680.  structure. 
  10681.  
  10682.  A value of this type is a descriptor, which embodies an attribute value. An 
  10683.  array of descriptors can represent all the values of all the attributes of an 
  10684.  object, and is the representation called OM_public_object. A descriptor has 
  10685.  the following components: 
  10686.  
  10687.  type                     An OM_type data type identifies the data type of the 
  10688.                           attribute value. 
  10689.  
  10690.  syntax                   An OM_syntax data type identifies the syntax of the 
  10691.                           attribute value. Components 3 to 7 (that is, the 
  10692.                           components long-string through private that follow) 
  10693.                           are encoded in the high-order bits of this structure 
  10694.                           member. Therefore, the syntax always needs to be 
  10695.                           masked with the constant OM_S_SYNTAX. 
  10696.  
  10697.                           For example: 
  10698.  
  10699.                                                     my_syntax = my_public_object[3].syntax &
  10700.                                                                    OM_S_SYNTAX;
  10701.  
  10702.                                                     my_public_object[4].syntax =
  10703.                                                     my_syntax + (my_public_object[4].syntax &
  10704.                                                     ~OM_S_SYNTAX);
  10705.  
  10706.  long-string              An OM_boolean data type is OM_TRUE only if the 
  10707.                           descriptor is a service-generated descriptor and the 
  10708.                           length of the value is greater than an implementation 
  10709.                           defined limit. 
  10710.  
  10711.                           This component occupies bit 15 (0x8000) of the syntax 
  10712.                           and is represented by the constant OM_S_LONG_STRING. 
  10713.  
  10714.  no-value                 An OM_boolean data type is OM_TRUE only if the 
  10715.                           descriptor is a service-generated descriptor and the 
  10716.                           value is not present because OM_EXCLUDE_VALUES or 
  10717.                           OM_EXCLUDE_MULTIPLES is set in om_get. 
  10718.  
  10719.                           This component occupies bit 14 (0x4000) of the syntax 
  10720.                           and is represented by the constant OM_S_NO_VALUE. 
  10721.  
  10722.  local-string             An OM_boolean data type, significant only if the 
  10723.                           syntax is one of the string syntaxes. It is OM_TRUE 
  10724.                           only if the string is represented in an 
  10725.                           implementation-defined local character set. The local 
  10726.                           character set can be more amenable for use as 
  10727.                           keyboard input or display output than the nonlocal 
  10728.                           character set, and can include specific treatment of 
  10729.                           line termination sequences. Certain interface 
  10730.                           functions can convert information in string syntaxes 
  10731.                           to or from the local representation, which can result 
  10732.                           in a loss of information. 
  10733.  
  10734.                           This component occupies bit 13 (0x2000) of the syntax 
  10735.                           and is represented by the constant OM_S_LOCAL_STRING. 
  10736.                           The DCE XOM implementation does not support 
  10737.                           translation of strings to a local character set. 
  10738.  
  10739.  service-generated        An OM_boolean data type is OM_TRUE only if the 
  10740.                           descriptor is a service-generated descriptor and the 
  10741.                           first descriptor of a public object, or the defined 
  10742.                           part of a private object. (See XOM in the DCE for 
  10743.                           OS/2 Warp: Application Development Reference.) This 
  10744.                           component occupies bit 12 (0x1000) of the syntax and 
  10745.                           is represented by the constant 
  10746.                           OM_S_SERVICE_GENERATED. 
  10747.  
  10748.  private                  An OM_boolean data type is OM_TRUE only if the 
  10749.                           descriptor in the service-generated public object 
  10750.                           contains a reference to the handle of a private 
  10751.                           subobject, or in the defined part of a private 
  10752.                           object. 
  10753.  
  10754.                           Note:  This applies only when the descriptor is a 
  10755.                                  service-generated descriptor. The client need 
  10756.                                  not set this bit in a client-generated 
  10757.                                  descriptor that contains a reference to a 
  10758.                                  private object. In the C interface, this 
  10759.                                  component occupies bit 11 (0x0800) of the 
  10760.                                  syntax and is represented by the constant 
  10761.                                  OM_S_PRIVATE. 
  10762.  
  10763.  value                    An OM_value data type identifies the attribute value. 
  10764.  
  10765.  
  10766. ΓòÉΓòÉΓòÉ 14.2.3. OM_enumeration ΓòÉΓòÉΓòÉ
  10767.  
  10768. The OM_enumeration data type is used to indicate an Enumerated data value. Its 
  10769. C declaration is as follows: 
  10770.  
  10771. typedef OM_sint32 OM_enumeration;
  10772.  
  10773. A value of this data type is an attribute value whose syntax is 
  10774. OM_S_ENUMERATION. 
  10775.  
  10776.  
  10777. ΓòÉΓòÉΓòÉ 14.2.4. OM_exclusions ΓòÉΓòÉΓòÉ
  10778.  
  10779. The OM_exclusions data type is used for the exclusions parameter of om_get. Its 
  10780. C declaration is as follows: 
  10781.  
  10782. typedef OM_uint OM_exclusions;
  10783.  
  10784. A value of this data type is an unordered set of one or more values, all of 
  10785. which are distinct. Each value indicates an exclusion, as defined by om_get, 
  10786. and is chosen from the following set: 
  10787.  
  10788.    o  OM_EXCLUDE_ALL_BUT_THESE_TYPES 
  10789.    o  OM_EXCLUDE_MULTIPLES 
  10790.    o  OM_EXCLUDE_ALL_BUT_THESE_VALUES 
  10791.    o  OM_EXCLUDE_VALUES 
  10792.    o  OM_EXCLUDE_SUBOBJECTS 
  10793.    o  OM_EXCLUDE_DESCRIPTORS 
  10794.  
  10795.  Alternatively, the single value OM_NO_EXCLUSIONS can be chosen as this selects 
  10796.  the entire object. Each value except OM_NO_EXCLUSIONS is represented by a 
  10797.  distinct bit. The presence of the value is represented as 1; its absence is 
  10798.  represented as 0 (zero). Thus, multiple exclusions are requested by ORing the 
  10799.  values that indicate the individual exclusions. 
  10800.  
  10801.  
  10802. ΓòÉΓòÉΓòÉ 14.2.5. OM_integer ΓòÉΓòÉΓòÉ
  10803.  
  10804. The OM_integer data type is used to indicate an integer data value. Its C 
  10805. declaration is as follows: 
  10806.  
  10807. typedef OM_sint32 OM_integer;
  10808.  
  10809. A value of this data type is an attribute value whose syntax is OM_S_INTEGER. 
  10810.  
  10811.  
  10812. ΓòÉΓòÉΓòÉ 14.2.6. OM_modification ΓòÉΓòÉΓòÉ
  10813.  
  10814. The OM_modification data type is used for the modification parameter of om_put. 
  10815. Its C declaration is as follows: 
  10816.  
  10817. typedef OM_uint OM_modification;
  10818.  
  10819. A value of this data type indicates a kind of modification, as defined by 
  10820. om_put. It is chosen from the following set: 
  10821.  
  10822.    o  OM_INSERT_AT_BEGINNING 
  10823.    o  OM_INSERT_AT_CERTAIN_POINT 
  10824.    o  OM_INSERT_AT_END 
  10825.    o  OM_REPLACE_ALL 
  10826.    o  OM_REPLACE_CERTAIN_VALUES 
  10827.  
  10828.  
  10829. ΓòÉΓòÉΓòÉ 14.2.7. OM_object ΓòÉΓòÉΓòÉ
  10830.  
  10831. The OM_object data type is used as a handle to either a private or a public 
  10832. object. Its C declaration is as follows: 
  10833.  
  10834. typedef struct OM_descriptor_struct *OM_object;
  10835.  
  10836. A value of this data type represents an object, which can be either public or 
  10837. private. It is an ordered sequence of one or more instances of the 
  10838. OM_descriptor data type. Refer to OM_private_object and OM_public_object data 
  10839. types for restrictions on that sequence. 
  10840.  
  10841.  
  10842. ΓòÉΓòÉΓòÉ 14.2.8. OM_object_identifier ΓòÉΓòÉΓòÉ
  10843.  
  10844. The OM_object_identifier data type is used as an ASN.1 object identifier. Its C 
  10845. declaration is as follows: 
  10846.  
  10847. typedef OM_string OM_object_identifier;
  10848.  
  10849. A value of this data type contains an octet string that comprises the contents 
  10850. octets of the BER encoding of an ASN.1 object identifier. 
  10851.  
  10852.  
  10853. ΓòÉΓòÉΓòÉ 14.2.9. C Declaration of Object Identifiers ΓòÉΓòÉΓòÉ
  10854.  
  10855. Every application program that uses a class or another object identifier must 
  10856. explicitly import it into every compilation unit (C source module) that uses 
  10857. it. Each such class or object identifier name must be explicitly exported from 
  10858. just one compilation module. Most application programs find it convenient to 
  10859. export all the names they use from the same compilation unit. Exporting and 
  10860. importing is performed using the following two macros: 
  10861.  
  10862.    o  The importing macro makes the class or other object identifier constants 
  10863.       available within a compilation unit. 
  10864.  
  10865.         -  OM_IMPORT(class_name) 
  10866.         -  OM_IMPORT(OID_name) 
  10867.  
  10868.    o  The exporting macro allocates memory for the constants that represent the 
  10869.       class or another object identifier. 
  10870.  
  10871.         -  OM_EXPORT(class_name) 
  10872.         -  OM_EXPORT(OID_name) 
  10873.  
  10874.  Object identifiers are defined in the appropriate header files, with the 
  10875.  definition identifier having the prefix OMP_O_ followed by the variable name 
  10876.  for the object identifier. The constant itself provides the hexadecimal value 
  10877.  of the object identifier string. 
  10878.  
  10879.  
  10880. ΓòÉΓòÉΓòÉ 14.2.10. Use of Object Identifiers in C ΓòÉΓòÉΓòÉ
  10881.  
  10882. The OM_OID_DESC(type, OID_name) macro initializes a descriptor. It sets the 
  10883. type component to that given, sets the syntax component to 
  10884. OM_S_OBJECT_IDENTIFIER_STRING, and sets the value component to the specified 
  10885. object identifier. 
  10886.  
  10887. The OM_NULL_DESCRIPTOR macro initializes a descriptor to mark the end of a 
  10888. client-allocated public object. 
  10889.  
  10890. For each class there is a global variable of type OM_STRING with the same name. 
  10891. For example, the External class has a variable called OM_C_EXTERNAL. This is 
  10892. also the case for other object identifiers. For example, the object identifier 
  10893. for BER rules has a variable called OM_BER. This global variable can be 
  10894. supplied as a parameter to functions when required. 
  10895.  
  10896. This variable is valid only when it is exported by an OM_EXPORT macro and 
  10897. imported by an OM_IMPORT macro in the compilation units that use it. This 
  10898. variable cannot form part of a descriptor, but the value of its length and 
  10899. elements components can be used. The following code fragment provides examples 
  10900. of the use of the macros and constants. 
  10901.  
  10902. /* Examples of the use of the macros and constants */
  10903.  
  10904. #include <xom.h>
  10905.  
  10906. OM_IMPORT(OM__C_ENCODING)
  10907. OM_IMPORT(OM_CANONICAL_BER)
  10908.  
  10909. /* The following sequence must appear in just one compilation
  10910. *  unit in place of the above:
  10911. *
  10912. *  #include <xom.h>
  10913. *
  10914. *  OM_EXPORT(OM_C_ENCODING)
  10915. *  OM_EXPORT(OM_CANONICAL_BER)
  10916. */
  10917. main()
  10918. {
  10919. /* Use #1 - Define a public object of class Encoding
  10920. *          (Note: xxxx is a Message Handling class which can be
  10921. *           encoded)
  10922. */
  10923. OM_descriptor my_public_object[] = {
  10924.       OM_OID_DESC(OM_CLASS, OM_C_ENCODING),
  10925.       OM_OID_DESC(OM_OBJECT_CLASS, MA_C_xxxx),
  10926.       { OM_OBJECT_ENCODING, OM_S_ENCODING_STRING, some_BER_value},
  10927.       OM_OID_DESC(OM_RULES, OM_CANONICAL_BER),
  10928.       OM_NULL_DESCRIPTOR
  10929.       };
  10930.  
  10931. /* Use #2 - Pass class Encoding as a parameter to om_instance() */
  10932. return_code = om_instance(my_object, OM_C_ENCODING,
  10933.   &boolean_result);
  10934. }
  10935.  
  10936.  
  10937. ΓòÉΓòÉΓòÉ 14.2.11. OM_private_object ΓòÉΓòÉΓòÉ
  10938.  
  10939. The OM_private_object data type is used as a handle to an object in an 
  10940. implementation-defined or private representation. Its C declaration is as 
  10941. follows: 
  10942.  
  10943. typedef OM_object OM_private_object;
  10944.  
  10945. A value of this data type is the designator or handle to a private object. It 
  10946. comprises a single descriptor whose type component is OM_PRIVATE_OBJECT and 
  10947. whose syntax and value components are unspecified. 
  10948.  
  10949. Note:  The descriptor's syntax and value components are essential to the 
  10950.        service's proper operation with respect to the private object. 
  10951.  
  10952.  
  10953. ΓòÉΓòÉΓòÉ 14.2.12. OM_public_object ΓòÉΓòÉΓòÉ
  10954.  
  10955. The OM_public_object data type is used to define an object that can be directly 
  10956. accessed by a programmer. Its C declaration is as follows: 
  10957.  
  10958. typedef OM_object OM_public_object;
  10959.  
  10960. A value of this data type is a public object which comprises one or more 
  10961. (usually more) descriptors. All but the last of which represent values of 
  10962. attributes of the object. 
  10963.  
  10964. The descriptors for the values of a particular attribute with two or more 
  10965. values are adjacent to one another in the sequence. Their order is that of the 
  10966. values they represent. The order of the resulting groups of descriptors is 
  10967. unspecified. 
  10968.  
  10969. Since the Class attribute specific to the Object class is represented among the 
  10970. descriptors, it must be represented before any other attributes. Regardless of 
  10971. whether or not the Class attribute is present, the syntax field of the first 
  10972. descriptor must have the OM_S_SERVICE_GENERATED bit set or cleared 
  10973. appropriately. 
  10974.  
  10975. The last descriptor signals the end of the sequence of descriptors. The last 
  10976. descriptor's type component is OM_NO_MORE_TYPES and its syntax component is 
  10977. OM_S_NO_MORE_SYNTAXES. The last descriptor's value component is unspecified. 
  10978.  
  10979.  
  10980. ΓòÉΓòÉΓòÉ 14.2.13. OM_return_code ΓòÉΓòÉΓòÉ
  10981.  
  10982. The OM_return_code data type is used for a value that is returned from all OM 
  10983. functions indicating either that the function succeeded or why it failed. Its C 
  10984. declaration is as follows: 
  10985.  
  10986. typedef OM_uint OM_return_code;
  10987.  
  10988. A value of this data type is the integer in the range 0 to 2[16] that indicates 
  10989. an outcome of an interface function. It is chosen from the set specified in XOM 
  10990. Return Codes. 
  10991.  
  10992. Integers in the narrower range 0 to 2[15] are used to indicate the return codes 
  10993. they define. 
  10994.  
  10995.  
  10996. ΓòÉΓòÉΓòÉ 14.2.14. OM_string ΓòÉΓòÉΓòÉ
  10997.  
  10998. The OM_string data type is used for a data value of String syntax. Its C 
  10999. declaration is as follows: 
  11000.  
  11001. typedef OM_uint32 OM_string_length;
  11002. typedef struct {
  11003.       OM_string_length length;
  11004.       void *elements;
  11005. } OM_string;
  11006.  
  11007. #define OM_STRING(string)\
  11008.       { (OM_string_length)(sizeof(string)-1), (string) }
  11009.  
  11010. A value of this data type is a string (that is, an instance of a String 
  11011. syntax). A string is specified either in terms of its length or whether or not 
  11012. it ends with NULL. A string has the following components: 
  11013.  
  11014.  length(OM_string_length)            The number of octets by means of which the 
  11015.                                      string is represented, or the 
  11016.                                      OM_LENGTH_UNSPECIFIED value if the string 
  11017.                                      ends with NULL. 
  11018.  
  11019.  elements                            The string's elements. The bits of a bit 
  11020.                                      string are represented as a sequence of 
  11021.                                      octets (see the following figure). The 
  11022.                                      first octet stores the number of unused 
  11023.                                      bits in the last octet. The bits in the 
  11024.                                      bit string, commencing with the first bit 
  11025.                                      and proceeding to the trailing bit, are 
  11026.                                      placed in bits 7 to 0 of the second octet. 
  11027.                                      These are followed by bits 7 to 0 of the 
  11028.                                      third octet, then by bits 7 to 0 of each 
  11029.                                      octet in turn, followed by as many bits as 
  11030.                                      are required of the final octet, 
  11031.                                      commencing with bit 7. 
  11032.  
  11033.  
  11034.   OM _ StringElements
  11035.  
  11036.  The service supplies a string value with a specified length. The client can 
  11037.  supply a string value to the service in either form, either with a specified 
  11038.  length or ended with NULL. 
  11039.  
  11040.  The characters of a character string are represented as any sequence of octets 
  11041.  permitted as the primitive contents octets of the BER encoding of an ASN.1 
  11042.  type value. The ASN.1 type defines the type of character string. A 0 (zero) 
  11043.  value character follows the characters of the character string, but is not 
  11044.  encompassed by the length component. Thus, depending upon the type of 
  11045.  character string, the 0 (zero) value character can delimit the characters of 
  11046.  the character string. 
  11047.  
  11048.  The OM_STRING macro is provided for creating a data value of this data type, 
  11049.  given only the value of its elements component. The macro, however, applies to 
  11050.  octet strings and character strings, but not to bit strings. 
  11051.  
  11052.  
  11053. ΓòÉΓòÉΓòÉ 14.2.15. OM_syntax ΓòÉΓòÉΓòÉ
  11054.  
  11055. The OM_syntax data type is used to identify a syntax type. Its C declaration is 
  11056. as follows: 
  11057.  
  11058. typedef OM_uint16 OM_syntax;
  11059.  
  11060. A value of this data type is an integer in the range 0 to 2[9], that denotes an 
  11061. individual syntax or a set of syntaxes taken together. 
  11062.  
  11063. The value is chosen from among the following: 
  11064.  
  11065.    o  OM_S_BIT_STRING 
  11066.    o  OM_S_BOOLEAN 
  11067.    o  OM_S_ENCODING_STRING 
  11068.    o  OM_S_ENUMERATION 
  11069.    o  OM_S_GENERAL_STRING 
  11070.    o  OM_S_GENERALISED_TIME_STRING 
  11071.    o  OM_S_GRAPHIC_STRING 
  11072.    o  OM_S_IA5_STRING 
  11073.    o  OM_S_INTEGER 
  11074.    o  OM_S_NULL 
  11075.    o  OM_S_NUMERIC_STRING 
  11076.    o  OM_S_OBJECT 
  11077.    o  OM_S_OBJECT_DESCRIPTOR_STRING 
  11078.    o  OM_S_OBJECT_IDENTIFIER_STRING 
  11079.    o  OM_S_OCTET_STRING 
  11080.    o  OM_S_PRINTABLE_STRING 
  11081.    o  OM_S_TELETEX_STRING 
  11082.    o  OM_S_VIDEOTEX_STRING 
  11083.    o  OM_S_VISIBLE_STRING 
  11084.    o  OM_S_UTC_TIME_STRING 
  11085.  
  11086.  Integers in the narrower range 0 to 2[9] to denote the syntaxes they define. 
  11087.  The integers in the range 2[9] to 2[10] are reserved for vendor extensions. 
  11088.  Wherever possible, the integers used are the same as the corresponding ASN.1 
  11089.  universal class number. 
  11090.  
  11091.  
  11092. ΓòÉΓòÉΓòÉ 14.2.16. OM_type ΓòÉΓòÉΓòÉ
  11093.  
  11094. The OM_type data type is used to identify an OM attribute type. Its C 
  11095. declaration is as follows: 
  11096.  
  11097. typedef OM_uint16 OM_type;
  11098.  
  11099. A value of this data type is an integer in the range 0 to 2[16] that denotes a 
  11100. type in the context of a package. However, the values listed below are assigned 
  11101. meanings by the respective data types. 
  11102.  
  11103.  Value                      Data Type 
  11104.  
  11105.  OM_NO_MORE_TYPES           OM_type_list 
  11106.  
  11107.  OM_PRIVATE_OBJECT          OM_private_object 
  11108.  
  11109.  Integers in the narrower range 0 to 2[9] to indicate the types they define. 
  11110.  
  11111.  
  11112. ΓòÉΓòÉΓòÉ 14.2.17. OM_type_list ΓòÉΓòÉΓòÉ
  11113.  
  11114. The OM_type_list data type is used to enumerate a sequence of OM attribute 
  11115. types. Its C declaration is as follows: 
  11116.  
  11117. typedef OM_type *OM_type_list;
  11118.  
  11119. A value of this data type is an ordered sequence of zero or more type numbers, 
  11120. each of which is an instance of the OM_type data type. 
  11121.  
  11122. An additional data value, OM_NO_MORE_TYPES, follows and thus delimits the 
  11123. sequence. The C representation of the sequence is an array. 
  11124.  
  11125.  
  11126. ΓòÉΓòÉΓòÉ 14.2.18. OM_value ΓòÉΓòÉΓòÉ
  11127.  
  11128. The OM_value data type is used to represent any data value. Its C declaration 
  11129. is as follows: 
  11130.  
  11131. typedef struct {
  11132.       OM_uint32 padding;
  11133.       OM_object object;
  11134. } OM_padded_object;
  11135.  
  11136. typedef union OM_value_union {
  11137.       OM_string            string;
  11138.       OM_boolean           boolean;
  11139.       OM_enumeration       enumeration;
  11140.       OM_integer           integer;
  11141.       OM_padded_object  object;
  11142. } OM_value;
  11143.  
  11144. Note:  The first type definition (in particular, its padding component) aligns 
  11145.        the object component with the elements component of the string component 
  11146.        in the second type definition. This facilitates initialization in C. 
  11147.  
  11148.  The identifier OM_value_union is defined for reasons of compilation order. It 
  11149.  is used in the definition of the OM_descriptor data type. 
  11150.  
  11151.  A value of this data type is an attribute value. It has no components if the 
  11152.  value's syntax is OM_S_NO_MORE_SYNTAXES or OM_S_NO_VALUE. Otherwise, it has 
  11153.  one of the following components: 
  11154.  
  11155.  string           The value if its syntax is a string syntax 
  11156.  
  11157.  boolean          The value if its syntax is OM_S_BOOLEAN 
  11158.  
  11159.  enumeration      The value if its syntax is OM_S_ENUMERATION 
  11160.  
  11161.  integer          The value if its syntax is OM_S_INTEGER 
  11162.  
  11163.  object           The value if its syntax is OM_S_OBJECT 
  11164.  
  11165.  Note:  A value of this data type is only displayed as a component of a 
  11166.         descriptor. Thus, it is always accompanied by indicators of the value's 
  11167.         syntax. The latter indicator reveals which component is present. 
  11168.  
  11169.  
  11170. ΓòÉΓòÉΓòÉ 14.2.19. OM_value_length ΓòÉΓòÉΓòÉ
  11171.  
  11172. The OM_value_length data type is used to indicate the number of bits, octets, 
  11173. or characters in a string. Its C declaration is as follows: 
  11174.  
  11175. typedef OM_uint32 OM_value_length;
  11176.  
  11177. A value of this data type is an integer in the range 0 to 2[32] that represents 
  11178. the number of bits in a bit string, octets in an octet string, or characters in 
  11179. a character string. 
  11180.  
  11181. Note:  This data type is not used in the definition of the interface. It is 
  11182.        provided for use by client programmers for defining attribute 
  11183.        constraints. 
  11184.  
  11185.  
  11186. ΓòÉΓòÉΓòÉ 14.2.20. OM_value_position ΓòÉΓòÉΓòÉ
  11187.  
  11188. The OM_value_position data type is used to indicate an attribute value's 
  11189. position within an attribute. Its C declaration is as follows: 
  11190.  
  11191. typedef OM_uint32 OM_value_position;
  11192.  
  11193. A value of this data type is an integer in the range 0 to 2[32] -1 that 
  11194. indicates the position of a value within an attribute. However, the value 
  11195. OM_ALL_VALUES has the meaning assigned to it by om_get. 
  11196.  
  11197.  
  11198. ΓòÉΓòÉΓòÉ 14.2.21. OM_workspace ΓòÉΓòÉΓòÉ
  11199.  
  11200. The OM_workspace data type is used to identify an application-specific API that 
  11201. implements OM, for example, directory or message handling. Its C declaration is 
  11202. as follows: 
  11203.  
  11204. typedef void *OM_workspace;
  11205.  
  11206. A value of this data type is the designator or handle for a workspace. 
  11207.  
  11208.  
  11209. ΓòÉΓòÉΓòÉ 14.3. XOM Functions ΓòÉΓòÉΓòÉ
  11210.  
  11211. The purpose and range of capabilities of the XOM service interface functions 
  11212. are summarized below. For a full description of these functions, refer to the 
  11213. DCE for OS/2 Warp: Application Development Reference. 
  11214.  
  11215.  om_copy              This function creates an independent copy of an existing 
  11216.                       private object and all its subobjects. The copy is placed 
  11217.                       in the workspace of the original object, or in another 
  11218.                       workspace specified by the DCE client. 
  11219.  
  11220.  om_copy_value        This function replaces an existing attribute value or 
  11221.                       inserts a new value in one private object with a copy of 
  11222.                       an existing attribute value found in another. Both values 
  11223.                       must be strings. 
  11224.  
  11225.  om_create            This function creates a new private object that is an 
  11226.                       instance of a particular class. The object can be 
  11227.                       initialized with the attribute values specified as 
  11228.                       initial in the class definition. 
  11229.  
  11230.                       The service does not permit the client to explicitly 
  11231.                       create instances of all classes, but rather only those 
  11232.                       indicated by a package's definition as having this 
  11233.                       property. 
  11234.  
  11235.  om_decode            This function is note supported by the DCE XOM interface; 
  11236.                       it returns an OM_FUNCTION_DECLINED error. 
  11237.  
  11238.  om_delete            This function deletes a service-generated public object, 
  11239.                       or makes a private object inaccessible. 
  11240.  
  11241.  om_encode            This function is not supported by the DCE XOM interface; 
  11242.                       it returns an OM_FUNCTION_DECLINED error. 
  11243.  
  11244.  om_get               This function creates a new public object that is an 
  11245.                       exact but independent copy of an existing private object. 
  11246.                       The client can request certain exclusions, each of which 
  11247.                       reduces the copy to a part of the original. The client 
  11248.                       can also request that values be converted from one syntax 
  11249.                       to another before they are returned. 
  11250.  
  11251.                       The copy can exclude: 
  11252.  
  11253.                         o  Attributes of types other than those specified, 
  11254.                         o  Values at positions other than those specified 
  11255.                            within an attribute, 
  11256.                         o  Values of multivalued attributes, 
  11257.                         o  Copies of, (not handles for), subobjects, or 
  11258.                         o  All attribute values. 
  11259.  
  11260.                       Excluding all attribute values reveals only an 
  11261.                       attribute's presence. 
  11262.  
  11263.  om_instance          This function determines whether an object is an instance 
  11264.                       of a particular class. The client can determine an 
  11265.                       object's class simply by inspection. This function is 
  11266.                       useful because it reveals that an object is an instance 
  11267.                       of a particular class, even if the object is an instance 
  11268.                       of a subclass of that class. 
  11269.  
  11270.  om_put               This function places or replaces in one private object 
  11271.                       copies of the attribute values of another public or 
  11272.                       private object. 
  11273.  
  11274.                       The source values can be inserted before any existing 
  11275.                       destination values, before the value at a specified 
  11276.                       position in the destination attribute, or after any 
  11277.                       existing destination values. Alternatively, the source 
  11278.                       values can be substituted for any existing destination 
  11279.                       values or for the values at specified positions in the 
  11280.                       destination attribute. 
  11281.  
  11282.  om_read              This function reads a segment of a value of an attribute 
  11283.                       of a private object. The value must be a string. The 
  11284.                       value can first be converted from one syntax to another. 
  11285.                       This function enables the client to read an arbitrarily 
  11286.                       long value without requiring that the service place a 
  11287.                       copy of the entire value in memory. 
  11288.  
  11289.  om_remove            This function removes and discards particular values of 
  11290.                       an attribute of a private object. The attribute itself is 
  11291.                       removed if no values remain. 
  11292.  
  11293.  om_write             This function writes a segment of an attribute value to a 
  11294.                       private object. The value must be a string. The segment 
  11295.                       can first be converted from one syntax to another. The 
  11296.                       written segment becomes the value's last segment because 
  11297.                       any elements beyond it are discarded. The function 
  11298.                       enables the client to write an arbitrarily long value 
  11299.                       without having to place a copy of the entire value in 
  11300.                       memory. 
  11301.  
  11302.  
  11303. ΓòÉΓòÉΓòÉ 14.4. XOM Return Codes ΓòÉΓòÉΓòÉ
  11304.  
  11305. This section defines the return codes of the service interface and thus the 
  11306. exceptions that can prevent the successful completion of an interface function. 
  11307.  
  11308. Refer to the  ERRORS section of the reference pages for a list of the errors 
  11309. that each function can return. 
  11310.  
  11311. The return code values are as follows: 
  11312.  
  11313.  
  11314. ΓòÉΓòÉΓòÉ 14.4.1. 0 ΓòÉΓòÉΓòÉ
  11315.  
  11316.  0         OM_SUCCESS 
  11317.  
  11318.            Explanation: The function completed successfully. 
  11319.  
  11320.  
  11321. ΓòÉΓòÉΓòÉ 14.4.2. 1 ΓòÉΓòÉΓòÉ
  11322.  
  11323.  1         OM_ENCODING_INVALID 
  11324.  
  11325.            Explanation: The octets that constitute the value of an encoding's 
  11326.            Object Encoding attribute are invalid. 
  11327.  
  11328.  
  11329. ΓòÉΓòÉΓòÉ 14.4.3. 2 ΓòÉΓòÉΓòÉ
  11330.  
  11331.  2         OM_FUNCTION_DECLINED 
  11332.  
  11333.            Explanation: The function does not apply to the object to which it 
  11334.            is addressed. 
  11335.  
  11336.  
  11337. ΓòÉΓòÉΓòÉ 14.4.4. 3 ΓòÉΓòÉΓòÉ
  11338.  
  11339.  3         OM_FUNCTION_INTERRUPTED 
  11340.  
  11341.            Explanation: The function is aborted by an external force. For 
  11342.            example, a keystroke designated for this purpose at a user 
  11343.            interface. 
  11344.  
  11345.  
  11346. ΓòÉΓòÉΓòÉ 14.4.5. 4 ΓòÉΓòÉΓòÉ
  11347.  
  11348.  4         OM_MEMORY_INSUFFICIENT 
  11349.  
  11350.            Explanation: The service cannot allocate the main memory it needs to 
  11351.            complete the function. 
  11352.  
  11353.  
  11354. ΓòÉΓòÉΓòÉ 14.4.6. 5 ΓòÉΓòÉΓòÉ
  11355.  
  11356.  5         OM_NETWORK_ERROR 
  11357.  
  11358.            Explanation: The service could not successfully employ the network 
  11359.            upon which its implementation depends. 
  11360.  
  11361.  
  11362. ΓòÉΓòÉΓòÉ 14.4.7. 6 ΓòÉΓòÉΓòÉ
  11363.  
  11364.  6         OM_NO_SUCH_CLASS 
  11365.  
  11366.            Explanation: A purported class identifier is not defined. 
  11367.  
  11368.  
  11369. ΓòÉΓòÉΓòÉ 14.4.8. 7 ΓòÉΓòÉΓòÉ
  11370.  
  11371.  7         OM_NO_SUCH_EXCLUSION 
  11372.  
  11373.            Explanation: A purported exclusion identifier is not defined. 
  11374.  
  11375.  
  11376. ΓòÉΓòÉΓòÉ 14.4.9. 8 ΓòÉΓòÉΓòÉ
  11377.  
  11378.  8         OM_NO_SUCH_MODIFICATION 
  11379.  
  11380.            Explanation: A purported modification identifier is not defined. 
  11381.  
  11382.  
  11383. ΓòÉΓòÉΓòÉ 14.4.10. 9 ΓòÉΓòÉΓòÉ
  11384.  
  11385.  9         OM_NO_SUCH_OBJECT 
  11386.  
  11387.            Explanation: A purported object is nonexistent, or the purported 
  11388.            handle is invalid. 
  11389.  
  11390.  
  11391. ΓòÉΓòÉΓòÉ 14.4.11. 10 ΓòÉΓòÉΓòÉ
  11392.  
  11393.  10        OM_NO_SUCH_RULES 
  11394.  
  11395.            Explanation: A purported rules identifier is not defined. 
  11396.  
  11397.  
  11398. ΓòÉΓòÉΓòÉ 14.4.12. 11 ΓòÉΓòÉΓòÉ
  11399.  
  11400.  11        OM_NO_SUCH_SYNTAX 
  11401.  
  11402.            Explanation: A purported syntax identifier is not defined. 
  11403.  
  11404.  
  11405. ΓòÉΓòÉΓòÉ 14.4.13. 12 ΓòÉΓòÉΓòÉ
  11406.  
  11407.  12        OM_NO_SUCH_TYPE 
  11408.  
  11409.            Explanation: A purported type identifier is not defined. 
  11410.  
  11411.  
  11412. ΓòÉΓòÉΓòÉ 14.4.14. 13 ΓòÉΓòÉΓòÉ
  11413.  
  11414.  13        OM_NO_SUCH_WORKSPACE 
  11415.  
  11416.            Explanation: A purported workspace is nonexistent. 
  11417.  
  11418.  
  11419. ΓòÉΓòÉΓòÉ 14.4.15. 14 ΓòÉΓòÉΓòÉ
  11420.  
  11421.  14        OM_NOT_AN_ENCODING 
  11422.  
  11423.            Explanation: An object is not an instance of the Encoding class. 
  11424.  
  11425.  
  11426. ΓòÉΓòÉΓòÉ 14.4.16. 15 ΓòÉΓòÉΓòÉ
  11427.  
  11428.  15        OM_NOT_CONCRETE 
  11429.  
  11430.            Explanation: A class is abstract, not concrete. 
  11431.  
  11432.  
  11433. ΓòÉΓòÉΓòÉ 14.4.17. 16 ΓòÉΓòÉΓòÉ
  11434.  
  11435.  16        OM_NOT_PRESENT 
  11436.  
  11437.            Explanation: An attribute value is absent, not present. 
  11438.  
  11439.  
  11440. ΓòÉΓòÉΓòÉ 14.4.18. 17 ΓòÉΓòÉΓòÉ
  11441.  
  11442.  17        OM_NOT_PRIVATE 
  11443.  
  11444.            Explanation: An object is public, not private. 
  11445.  
  11446.  
  11447. ΓòÉΓòÉΓòÉ 14.4.19. 18 ΓòÉΓòÉΓòÉ
  11448.  
  11449.  18        OM_NOT_THE_SERVICES 
  11450.  
  11451.            Explanation: An object is a client-generated object, rather than a 
  11452.            service-generated or private object. 
  11453.  
  11454.  
  11455. ΓòÉΓòÉΓòÉ 14.4.20. 19 ΓòÉΓòÉΓòÉ
  11456.  
  11457.  19        OM_PERMANENT_ERROR 
  11458.  
  11459.            Explanation: The service encountered a permanent difficulty other 
  11460.            than those indicated by other return codes. 
  11461.  
  11462.  
  11463. ΓòÉΓòÉΓòÉ 14.4.21. 20 ΓòÉΓòÉΓòÉ
  11464.  
  11465.  20        OM_POINTER_INVALID 
  11466.  
  11467.            Explanation: In the C interface, an invalid pointer is supplied as a 
  11468.            function parameter, or as the receptacle for a function result. 
  11469.  
  11470.  
  11471. ΓòÉΓòÉΓòÉ 14.4.22. 21 ΓòÉΓòÉΓòÉ
  11472.  
  11473.  21        OM_SYSTEM_ERROR 
  11474.  
  11475.            Explanation: The service could not successfully employ the operating 
  11476.            system upon which its implementation depends. 
  11477.  
  11478.  
  11479. ΓòÉΓòÉΓòÉ 14.4.23. 22 ΓòÉΓòÉΓòÉ
  11480.  
  11481.  22        OM_TEMPORARY_ERROR 
  11482.  
  11483.            Explanation: The service encountered a temporary difficulty other 
  11484.            than those indicated by other return codes. 
  11485.  
  11486.  
  11487. ΓòÉΓòÉΓòÉ 14.4.24. 23 ΓòÉΓòÉΓòÉ
  11488.  
  11489.  23        OM_TOO_MANY_VALUES 
  11490.  
  11491.            Explanation: An implementation limit prevents a further attribute 
  11492.            value from being added to an object. This limit is undefined. 
  11493.  
  11494.  
  11495. ΓòÉΓòÉΓòÉ 14.4.25. 24 ΓòÉΓòÉΓòÉ
  11496.  
  11497.  24        OM_VALUES_NOT_ADJACENT 
  11498.  
  11499.            Explanation: The descriptors for the values of a particular 
  11500.            attribute are not adjacent. 
  11501.  
  11502.  
  11503. ΓòÉΓòÉΓòÉ 14.4.26. 25 ΓòÉΓòÉΓòÉ
  11504.  
  11505.  25        OM_WRONG_VALUE_LENGTH 
  11506.  
  11507.            Explanation: An attribute has, or would have, a value that violates 
  11508.            the value length constraints in force. 
  11509.  
  11510.  
  11511. ΓòÉΓòÉΓòÉ 14.4.27. 26 ΓòÉΓòÉΓòÉ
  11512.  
  11513.  26        OM_WRONG_VALUE_MAKEUP 
  11514.  
  11515.            Explanation: An attribute has, or would have, a value that violates 
  11516.            a constraint on the value's syntax. 
  11517.  
  11518.  
  11519. ΓòÉΓòÉΓòÉ 14.4.28. 27 ΓòÉΓòÉΓòÉ
  11520.  
  11521.  27        OM_WRONG_VALUE_NUMBER 
  11522.  
  11523.            Explanation: An attribute has, or would have, a value that violates 
  11524.            the value number constraints in force. 
  11525.  
  11526.  
  11527. ΓòÉΓòÉΓòÉ 14.4.29. 28 ΓòÉΓòÉΓòÉ
  11528.  
  11529.  28        OM_WRONG_VALUE_POSITION 
  11530.  
  11531.            Explanation: The use defined for value position in the parameter or 
  11532.            parameters of a function is invalid. 
  11533.  
  11534.  
  11535. ΓòÉΓòÉΓòÉ 14.4.30. 29 ΓòÉΓòÉΓòÉ
  11536.  
  11537.  29        OM_WRONG_VALUE_SYNTAX 
  11538.  
  11539.            Explanation: An attribute has, or would have, a value whose syntax 
  11540.            is not permitted. 
  11541.  
  11542.  
  11543. ΓòÉΓòÉΓòÉ 14.4.31. 30 ΓòÉΓòÉΓòÉ
  11544.  
  11545.  30        OM_WRONG_VALUE_TYPE 
  11546.  
  11547.            Explanation: An object has, or would have, an attribute whose type 
  11548.            is not permitted. 
  11549.  
  11550.  
  11551. ΓòÉΓòÉΓòÉ 15. Object Management Package ΓòÉΓòÉΓòÉ
  11552.  
  11553. This section defines the Object Management Package (OMP). The object identifier 
  11554. (referred to as om) assigned to the package, as defined by this guide, is the 
  11555. object identifier specified in ASN.1 as {joint-iso-ccitt(2) mhs-motis(6) 
  11556. group(6) white(1) api(2) om(4)}. 
  11557.  
  11558.  
  11559. ΓòÉΓòÉΓòÉ 15.1. Class Hierarchy ΓòÉΓòÉΓòÉ
  11560.  
  11561. This section shows the hierarchical organization of the OM classes. 
  11562. Subclassification is indicated by indentation, and the names of abstract 
  11563. classes are in italics. For example, OM_C_ENCODING is an immediate subclass of 
  11564. OM_C_OBJECT, an abstract class. The names of classes to which om_encode applies 
  11565. are in boldface. (DCE XOM does not support the encoding of any OM classes.) The 
  11566. om_create function applies to all concrete classes. 
  11567.  
  11568.    o  OM_C_OBJECT 
  11569.  
  11570.         -  OM_C_ENCODING 
  11571.         -  OM_C_EXTERNAL 
  11572.  
  11573.  
  11574. ΓòÉΓòÉΓòÉ 15.2. Class Definitions ΓòÉΓòÉΓòÉ
  11575.  
  11576. The following sections define the OM classes. 
  11577.  
  11578.    o  OM_C_ENCODING 
  11579.    o  OM_C_EXTERNAL 
  11580.    o  OM_C_OBJECT 
  11581.  
  11582.  
  11583. ΓòÉΓòÉΓòÉ 15.2.1. OM_C_ENCODING ΓòÉΓòÉΓòÉ
  11584.  
  11585. An instance of class OM_C_ENCODING is an object represented in a form suitable 
  11586. for transmission between workspaces, for transport through a network, or for 
  11587. storage in a file. Encoding can also be a suitable way of indicating to an 
  11588. intermediate service provider (for example, a directory, or message transfer 
  11589. system) an object that it does not recognize. 
  11590.  
  11591. This class has the attributes of its superclass, OM_C_OBJECT, in addition to 
  11592. the specific attributes listed in "Attributes Specific to OM_C_ENCODING". 
  11593.  
  11594. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11595. Γöé Table 52. Attributes Specific to OM_C_ENCODING                     Γöé
  11596. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11597. Γöé              Γöé                  Γöé  VALUE Γöé  VALUE Γöé VALUE Γöé
  11598. Γöé ATTRIBUTE         Γöé VALUE SYNTAX            Γöé LENGTH Γöé NUMBER Γöé  INI- Γöé
  11599. Γöé              Γöé                  Γöé     Γöé     Γöé TIALLYΓöé
  11600. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11601. Γöé OM_OBJECT_CLASS      Γöé String(OM_S_OBJECT         Γöé   -  Γöé   1  Γöé  -  Γöé
  11602. Γöé              Γöé _IDENTIFIER_STRING)        Γöé     Γöé     Γöé    Γöé
  11603. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11604. Γöé OM_OBJECT_ENCODING    Γöé String(1)             Γöé   -  Γöé   1  Γöé  -  Γöé
  11605. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11606. Γöé OM_RULES         Γöé String(OM_S_OBJECT         Γöé   -  Γöé   1  Γöé  ber  Γöé
  11607. Γöé              Γöé _IDENTIFIER_STRING)        Γöé     Γöé     Γöé    Γöé
  11608. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11609. Γöé (1) If the Rules attribute is ber or canonical-ber, the syntax of the present attri-  Γöé
  11610. Γöé   bute must be String (OM_S_ENCODING_STRING).                     Γöé
  11611. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11612.  
  11613.  OM_OBJECT_CLASS                 This attribute identifies the class of the 
  11614.                                  object that the Object Encoding attribute 
  11615.                                  encodes. The class must be concrete. 
  11616.  
  11617.  OM_OBJECT_ENCODING              This attribute is the encoding itself. 
  11618.  
  11619.  OM_RULES                        This attribute identifies the set of rules 
  11620.                                  that are followed to produce the Object 
  11621.                                  Encoding attribute. Among the defined values 
  11622.                                  of this attribute are those represented as 
  11623.                                  follows: 
  11624.  
  11625.                                       OM_BER                   This value is 
  11626.                                                                specified in 
  11627.                                                                ASN.1 as 
  11628.                                                                {joint-iso-ccitt(2) 
  11629.                                                                asn1(1) 
  11630.                                                                basic-encoding(1)}. 
  11631.                                                                This value 
  11632.                                                                indicates the 
  11633.                                                                BER. (See Clause 
  11634.                                                                25.2 of 
  11635.                                                                Recommendation 
  11636.                                                                X.209, 
  11637.                                                                "Specification 
  11638.                                                                of Basic 
  11639.                                                                Encoding Rules 
  11640.                                                                for Abstract 
  11641.                                                                Syntax Notation 
  11642.                                                                1 (ASN.1)," 
  11643.                                                                CCITT Blue Book, 
  11644.                                                                Fascicle VIII.4, 
  11645.                                                                International 
  11646.                                                                Telecommunications 
  11647.                                                                Union, 1988. 
  11648.                                                                Also published 
  11649.                                                                by ISO as ISO 
  11650.                                                                8825.) 
  11651.  
  11652.                                       OM_CANONICAL_BER         This value is 
  11653.                                                                specified in 
  11654.                                                                ASN.1 as 
  11655.                                                                {joint-iso-ccitt(2) 
  11656.                                                                mhs-motis(6) 
  11657.                                                                group(6) 
  11658.                                                                white(1) api(2) 
  11659.                                                                om(4) 
  11660.                                                                canonical-ber(4)}. 
  11661.                                                                This value 
  11662.                                                                indicates the 
  11663.                                                                canonical BER. 
  11664.                                                                (See Clause 8.7 
  11665.                                                                of CCITT Blue 
  11666.                                                                Book, 
  11667.                                                                International 
  11668.                                                                Telecommunications 
  11669.                                                                Union, 1988. 
  11670.                                                                Also published 
  11671.                                                                by ISO as ISO 
  11672.                                                                9594-8.) 
  11673.  
  11674.  Note:  In general, an instance of this class cannot appear as a value whose 
  11675.         syntax is Object (C) if C is not OM_C_ENCODING, even if the class of 
  11676.         the object encoded is C. 
  11677.  
  11678.  
  11679. ΓòÉΓòÉΓòÉ 15.2.2. OM_C_EXTERNAL ΓòÉΓòÉΓòÉ
  11680.  
  11681. An instance of class OM_C_EXTERNAL is a data value and one or more information 
  11682. items that describe the data value and identify its data type. This class 
  11683. corresponds to ASN.1's External type, and thus the class and the attributes 
  11684. specific to it are described indirectly in the specification of ASN.1. (See 
  11685. Clause 34 of Recommendation X.208, "Specification of Abstract Syntax Notation 1 
  11686. (ASN.1)," CCITT Blue Book, Fascicle VIII.4, International Telecommunications 
  11687. Union, 1988. Also published by ISO as ISO 8824.) 
  11688.  
  11689. This class has the attributes of its superclass, OM_C_OBJECT, in addition to 
  11690. the OM attributes specific to this class that are listed in "Attributes 
  11691. Specific to OM_C_EXTERNAL". 
  11692.  
  11693. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11694. Γöé Table 53. Attributes Specific to OM_C_EXTERNAL                     Γöé
  11695. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11696. Γöé              Γöé                  Γöé  VALUE Γöé  VALUE Γöé VALUE Γöé
  11697. Γöé ATTRIBUTE         Γöé VALUE SYNTAX            Γöé LENGTH Γöé NUMBER Γöé  INI- Γöé
  11698. Γöé              Γöé                  Γöé     Γöé     Γöé TIALLYΓöé
  11699. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11700. Γöé OM_ARBITRARY_ENCODING   Γöé String(OM_S_BIT          Γöé   -  Γöé  0 or  Γöé  -  Γöé
  11701. Γöé              Γöé _STRING)              Γöé     Γöé  1(1)  Γöé    Γöé
  11702. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11703. Γöé OM_ASN1_ENCODING     Γöé String(OM_S_ENCODING        Γöé   -  Γöé  0 or  Γöé  -  Γöé
  11704. Γöé              Γöé _STRING)              Γöé     Γöé  1(1)  Γöé    Γöé
  11705. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11706. Γöé OM_DATA_VALUE_DESCRIPTOR Γöé String(OM_S_OBJECT         Γöé   -  Γöé 0 or 1 Γöé  -  Γöé
  11707. Γöé              Γöé _DESCRIPTOR_STRING)        Γöé     Γöé     Γöé    Γöé
  11708. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11709. Γöé OM_DIRECT_REFERENCE    Γöé String(OM_S_OBJECT         Γöé   -  Γöé 0 or 1 Γöé  -  Γöé
  11710. Γöé              Γöé _IDENTIFIER_STRING)        Γöé     Γöé     Γöé    Γöé
  11711. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11712. Γöé OM_INDIRECT_REFERENCE   Γöé OM_S_INTEGER            Γöé   -  Γöé 0 or 1 Γöé  -  Γöé
  11713. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11714. Γöé OM_OCTET_ALIGNED_ENCODINGΓöé String(OM_S_OCTET         Γöé   -  Γöé  0 or  Γöé  -  Γöé
  11715. Γöé              Γöé _STRING)              Γöé     Γöé  1(1)  Γöé    Γöé
  11716. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11717. Γöé (1) Only one of these three attributes is present.                   Γöé
  11718. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11719.  
  11720.  OM_ARBITRARY_ENCODING                     This attribute is a representation 
  11721.                                            of the data value as a bit string. 
  11722.  
  11723.  OM_ASN1_ENCODING                          The data value. This attribute can 
  11724.                                            be present only if the data type is 
  11725.                                            an ASN.1 type. 
  11726.  
  11727.                                            If this attribute value's syntax is 
  11728.                                            an Object syntax, the data value's 
  11729.                                            representation is that produced by 
  11730.                                            om_encode when its Object parameter 
  11731.                                            is the attribute value and its Rules 
  11732.                                            parameter is ber. Thus, the object's 
  11733.                                            class must be one to which om_encode 
  11734.                                            applies. 
  11735.  
  11736.  OM_DATA_VALUE_DESCRIPTOR                  This attribute contains a 
  11737.                                            description of the data value. 
  11738.  
  11739.  OM_DIRECT_REFERENCE                       This attribute contains a direct 
  11740.                                            reference to the data type. 
  11741.  
  11742.  OM_INDIRECT_REFERENCE                     This attribute contains an indirect 
  11743.                                            reference to the data type. 
  11744.  
  11745.  OM_OCTET_ALIGNED_ENCODING                 This attribute contains a 
  11746.                                            representation of the data value as 
  11747.                                            an octet string. 
  11748.  
  11749.  
  11750. ΓòÉΓòÉΓòÉ 15.2.3. OM_C_OBJECT ΓòÉΓòÉΓòÉ
  11751.  
  11752. The class OM_C_OBJECT represents information objects of any variety. This 
  11753. abstract class is distinguished by the fact that it has no superclass and that 
  11754. all other classes are its subclasses. 
  11755.  
  11756. The attribute specific to this class is listed in "Attributes Specific to 
  11757. OM_C_OBJECT". 
  11758.  
  11759. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11760. Γöé Table 54. Attributes Specific to OM_C_OBJECT                      Γöé
  11761. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11762. Γöé              Γöé                  Γöé  VALUE Γöé  VALUE Γöé VALUE Γöé
  11763. Γöé ATTRIBUTE         Γöé VALUE SYNTAX            Γöé LENGTH Γöé NUMBER Γöé  INI- Γöé
  11764. Γöé              Γöé                  Γöé     Γöé     Γöé TIALLYΓöé
  11765. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11766. Γöé OM_CLASS         Γöé String(OM_S_OBJECT_IDENTIFIER   Γöé   -  Γöé   1  Γöé  -  Γöé
  11767. Γöé              Γöé _STRING)              Γöé     Γöé     Γöé    Γöé
  11768. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11769.  
  11770.  OM_CLASS      This attribute identifies the object's class. 
  11771.  
  11772.  
  11773. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  11774.  
  11775. As permitted by ISO 3166.
  11776.  
  11777.  
  11778. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  11779.  
  11780. These definitions are chiefly in The Directory: Selected Attribute Types (ISO 
  11781. 9594-6, CCITT X.520) and The Directory: Selected Object Classes (ISO 9594-7, 
  11782. CCITT X.521) with additional material in The Directory: Overview of Concepts, 
  11783. Models, and Services (ISO 9594-1, CCITT X.500) and The Directory: 
  11784. Authentication Framework (ISO 9594-8, CCITT X.509).