home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / gened10.zip / GDSEDMST.INF (.txt) < prev    next >
OS/2 Help File  |  1996-04-03  |  178KB  |  6,365 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Note ΓòÉΓòÉΓòÉ
  3.  
  4. Before using this information and the product it supports, be sure to read the 
  5. general information under Notice 
  6.  
  7. First Edition, December 1993 
  8.  
  9. IBM welcomes your comments.  A form for readers comments may be provided at the 
  10. back of this publication, or you may address your comments to the following 
  11. address: 
  12.  
  13.  
  14. Rome Networking Software Laboratory 
  15. IBM Semea S.p.A. 
  16. P.le Giulio Pastore, 6 
  17. 00144 Rome 
  18. Italy 
  19.  
  20. When you send information to IBM, you grant IBM a nonexclusive right to use or 
  21. distribute the information in any way it believes appropriate without incurring 
  22. any obligation to you. 
  23.  
  24.  
  25. ΓòÉΓòÉΓòÉ 2. Notices ΓòÉΓòÉΓòÉ
  26.  
  27. References in this publication to IBM products, programs, or services do not 
  28. imply that IBM intends to make these available in all countries in which IBM 
  29. operates. Any reference to an IBM product, program, or service is not intended 
  30. to state or imply that only IBM's product, program, or service may be used. Any 
  31. functionally equivalent product, program, or service that does not infringe any 
  32. of IBM's intellectual property rights may be used instead of the IBM product, 
  33. program, or service. Evaluation and verification of operation in conjunction 
  34. with other products, except those expressly designated by IBM, is the user's 
  35. responsibility. 
  36.  
  37. IBM may have patents or pending patent applications covering subject matter in 
  38. this document. The furnishing of this document does not give you any license to 
  39. these patents. You can send license inquiries, in writing, to the IBM Director 
  40. of Commercial Relations, IBM Corporation, Purchase, NY 10577. 
  41.  
  42.  
  43. ΓòÉΓòÉΓòÉ 2.1. Trademarks and Service Marks ΓòÉΓòÉΓòÉ
  44.  
  45. The following terms, denoted by an asterisk (*) in this publication, are 
  46. trademarks of the IBM Corporation in the United States and/or other countries: 
  47.  
  48. AIX 
  49.  
  50. AIX/6000 
  51.  
  52. BookMaster 
  53.  
  54. IBM 
  55.  
  56. OS/2 
  57.  
  58.  
  59. ΓòÉΓòÉΓòÉ 3. Introduction ΓòÉΓòÉΓòÉ
  60.  
  61. The General Data Stream Encoder Decoder (GenE/D) is a software system for 
  62. encoding and decoding communications data streams in both SNA and OSI 
  63. architectures. GenE/D can be used in any situation where two applications have 
  64. to exchange data and they agree on: 
  65.  
  66. o The protocol, describable using the Abstract Syntax Notation One (ASN.1) 
  67.  
  68. o The transfer syntax, prescribed by IBM* General Data Stream Definitions 
  69.   (GDSD) or ISO/OSI Basic Encoding Rules (BER) 
  70. This means that the GenE/D system can be integrated not only in SNA and OSI 
  71. applications, but also in any TCP/IP, LAN, and proprietary protocol 
  72. application. 
  73.  
  74.  
  75. ΓòÉΓòÉΓòÉ 3.1. Related Documentation ΓòÉΓòÉΓòÉ
  76.  
  77.  
  78. ΓòÉΓòÉΓòÉ 3.1.1. ISO/IEC Standards ΓòÉΓòÉΓòÉ
  79.  
  80. ISO/IEC 8824 Information Processing - Open Systems Interconnection - 
  81.           Specification of Abstract Syntax Notation One (ASN.1) (April 1990) 
  82.  
  83. ISO/IEC 8825 Information Processing - Open Systems Interconnection - 
  84.           Specification of Abstract Syntax Specification of Basic Encoding 
  85.           Rules for Abstract Syntax Notation One (ASN.1) (April 1990) 
  86.  
  87.  
  88. ΓòÉΓòÉΓòÉ 3.1.2. SNA Protocols ΓòÉΓòÉΓòÉ
  89.  
  90. SNA Logical Unit Version 6 Reference: Peer Protocols , SC31-6808-01 
  91.  
  92.  
  93. ΓòÉΓòÉΓòÉ 3.2. Terminology ΓòÉΓòÉΓòÉ
  94.  
  95. o A data stream (DS) is a sequence of bytes. In OSI environment it is referred 
  96.   to as a Protocol Data Unit (PDU). 
  97.  
  98. o A byte (eight bits) in the OSI environment is referred to as an octet. 
  99.  
  100. o The terms IDENTIFIER and TYPE are used interchangeably to indicate a specific 
  101.   field of the GDS variable. 
  102.  
  103.  
  104. ΓòÉΓòÉΓòÉ 4. Overview ΓòÉΓòÉΓòÉ
  105.  
  106. The General Data Stream Encoder consists of the following components: 
  107.  
  108. o The Abstract Syntax Notation One (ASN.1) language compiler, used to compile 
  109.   the ASN.1 specification of the data stream structure. The result of the 
  110.   compiling step consists of a TBL file containing a Symbol Table and a 
  111.   Metatable. The TBL file is system independent. 
  112.  
  113. o The TBL file translator, used to transform the TBL file in a system-dependent 
  114.   form usable by the run-time routines library. 
  115.  
  116. o The runtime routines library, containing a set of routines that the User 
  117.   Application Program (UAP) can call to encode or decode the data stream, and 
  118.   to do other useful operations. The data stream can be encoded/decoded 
  119.   following two encoding rules: 
  120.  
  121.    - ISO/IEC 8825 Basic Encoding Rules 
  122.  
  123.    - IBM General Data Stream Definitions 
  124.  
  125. ASN.1 is a format notation for describing syntactic and semantic aspects of 
  126. data. ASN.1 is an abstract representation because it does not specify how data 
  127. is represented in a local computer nor does it specify how data is represented 
  128. when they are communicated between systems. For two applications to 
  129. meaningfully communicate with each other, they must first agree on this level 
  130. of abstraction. 
  131.  
  132. The second requirement is that the two involved applications agree on a way to 
  133. represent information when it is transferred between them. That is, the 
  134. applications must agree on a transfer syntax. 
  135.  
  136. The third form of data representation is the local syntax, in which form each 
  137. application directly manipulates the data. The local syntax depends on the 
  138. application programming language, the compiler for the programming language, 
  139. and the computer architecture on which the application runs. 
  140.  
  141. In general, the relationship between abstract, transfer, and local 
  142. representations is many to many. For data communications specifications, the 
  143. abstract and transfer syntaxes are the only relevant representations. ASN.1 is 
  144. an abstract representation. Basic Encoding Rules (BER) and IBM General Data 
  145. Stream Definitions (GDSD) are two transfer representations. 
  146.  
  147. The following figure gives an overall description of the GenE/D system and of 
  148. its use by the UAP. 
  149.  
  150.  
  151. GenE/D System, overall description
  152.  
  153.  
  154. ΓòÉΓòÉΓòÉ 5. Characteristics Summary ΓòÉΓòÉΓòÉ
  155.  
  156. These section summarizes the characteristics and functions of the GenE/D 
  157. system. 
  158.  
  159.  
  160. ΓòÉΓòÉΓòÉ 5.1. GenE/D System Users ΓòÉΓòÉΓòÉ
  161.  
  162. GenE/D users are networking applications and systems programmers. 
  163.  
  164.  
  165. ΓòÉΓòÉΓòÉ 5.2. High-level protocol definition language ΓòÉΓòÉΓòÉ
  166.  
  167. The protocol used by the communicating applications (that is, the syntax of the 
  168. data streams exchanged) must be defined for the GenE/D system using the ASN.1 
  169. notation. This type of interface offers the following advantages: 
  170.  
  171. o It is system independent. 
  172.  
  173. o It is general enough to cover all types of communication protocols. 
  174.  
  175. o It is an ISO/OSI standard notation, used not only in the OSI architecture, 
  176.   but also in TCP/IP and other proprietary network architectures. 
  177.  
  178. o All the OSI 6 and 7 level protocols are already defined with ASN.1, so for 
  179.   these protocols the coding effort is reduced. 
  180.  
  181.  
  182. ΓòÉΓòÉΓòÉ 5.3. High-level application interface ΓòÉΓòÉΓòÉ
  183.  
  184. A set of C runtime routines are available to the application in order to: 
  185.  
  186. o Initialize or terminate a session 
  187.  
  188. o Search or access the data 
  189.  
  190. o Convert the data 
  191.  
  192. o Encode or decode the data 
  193.  
  194. o Format the data 
  195.  
  196.  
  197. ΓòÉΓòÉΓòÉ 5.4. Product Independence ΓòÉΓòÉΓòÉ
  198.  
  199. GenE/D can be used by different applications. GenE/D is coded in C language. 
  200.  
  201.  
  202. ΓòÉΓòÉΓòÉ 5.5. Portability ΓòÉΓòÉΓòÉ
  203.  
  204. GenE/D runs on OS/2* and AIX/6000* systems. 
  205.  
  206.  
  207. ΓòÉΓòÉΓòÉ 5.6. Protocol independence ΓòÉΓòÉΓòÉ
  208.  
  209. GenE/D can encode and decode any type of data stream. A Metatable and Symbol 
  210. Table must be generated (using the ASN.1 compiler) for each protocol the 
  211. application wants to follow during the encoding and decoding of the data 
  212. streams. 
  213.  
  214.  
  215. ΓòÉΓòÉΓòÉ 5.7. IBM GDS Definitions and BER support ΓòÉΓòÉΓòÉ
  216.  
  217. GenE/D supports two possible transfer syntaxes: 
  218.  
  219. o The transfer syntax prescribed by the IBM General Data Streams Definitions, 
  220.   used in the SNA architecture. 
  221.  
  222. o The transfer syntax prescribed by the OSI Basic Encoding Rules, used in OSI 
  223.   and other architectures. 
  224.  
  225.  
  226. ΓòÉΓòÉΓòÉ 5.8. Unrecognized data management ΓòÉΓòÉΓòÉ
  227.  
  228. GenE/D can pass over unrecognized data. This function could be needed if more 
  229. than one application uses the same Metatable and Symbol Table (the same 
  230. protocol), but a new version of this protocol is not supported by all of them. 
  231.  
  232.  
  233. ΓòÉΓòÉΓòÉ 5.9. Data Stream Segmentation Support ΓòÉΓòÉΓòÉ
  234.  
  235. GenE/D supports the two segmentation algorithms implemented in SNA products for 
  236. GDS data streams (the DIA/SNADS and the LU6.2/LEN segmentation algorithms). 
  237.  
  238.  
  239. ΓòÉΓòÉΓòÉ 5.10. Indefinite Length Data Stream ΓòÉΓòÉΓòÉ
  240.  
  241. The application can pass/get the encoded/decoded data to/from GenE/D routines 
  242. in pieces. In this way the application can easily encode/decode very long data 
  243. streams irrespective of the limits of the input/output buffer length. 
  244.  
  245.  
  246. ΓòÉΓòÉΓòÉ 5.11. Input/Output independence ΓòÉΓòÉΓòÉ
  247.  
  248. The application can choose where read or write the data streams. GenE/D is 
  249. unaware of the data stream source/sink devices. 
  250.  
  251.  
  252. ΓòÉΓòÉΓòÉ 5.12. Common Metatable and Symbol Table for both encode/decode ΓòÉΓòÉΓòÉ
  253.  
  254. The protocol specification is translated by the ASN.1 compiler into a single 
  255. Metatable and Symbol Table, so that one definition can be used for both 
  256. encoding/decoding processes. This reduces coding effort and increases 
  257. integrity. 
  258.  
  259.  
  260. ΓòÉΓòÉΓòÉ 5.13. Read-only Metatable and Symbol Table ΓòÉΓòÉΓòÉ
  261.  
  262. The same copy of the Metatable and Symbol Table can be used by several 
  263. applications running concurrently. 
  264.  
  265.  
  266. ΓòÉΓòÉΓòÉ 5.14. Runtime readable Metatable and Symbol Table ΓòÉΓòÉΓòÉ
  267.  
  268. The Metatable and Symbol Table can be read at runtime. This makes the User 
  269. Application Program independent from the protocol used (it could not be needed 
  270. to recompile and link the application program if the Metatable and Symbol Table 
  271. is changed). It means that general encoders/decoders can be implemented that 
  272. can run with any Metatable and Symbol Table. 
  273.  
  274.  
  275. ΓòÉΓòÉΓòÉ 5.15. Test Tool ΓòÉΓòÉΓòÉ
  276.  
  277. A test tool is part of the GenE/D package. This test tool automatically 
  278. encodes/decodes data streams and checks the results, executing a predefined set 
  279. of scenarios. A scenario contains the ASN.1 specification of the protocol and 
  280. the data that must be encoded. 
  281.  
  282.  
  283. ΓòÉΓòÉΓòÉ 6. Using the GenE/D System ΓòÉΓòÉΓòÉ
  284.  
  285. This chapter gives an example of use of the GenE/D system. 
  286.  
  287. If you have to implement an encoder or decoder that encodes or decodes data 
  288. streams following a specific protocol, the GenE/D system can reduce most of 
  289. your effort. The following are the steps you have to follow using the GenE/D 
  290. system: 
  291.  
  292.  1. Edit the ASN.1 specification of the protocol, using your ordinary text 
  293.     editor (click here for the description of ASN.1 notation). 
  294.  
  295.  2. Compile the ASN.1 source file, edited in the first step, with the GDSASN1 
  296.     compiler (click here for a description of the GDSASN1 compiler). Repeat 
  297.     this step until no errors are found in the ASN.1 source. 
  298.  
  299.  3. Translate the system-independent format of the Symbol Table and Metatable, 
  300.     generated by the GDSASN1 Compiler, into a system-dependent one, using the 
  301.     GDSTABLE translator (click here for a description of the GDSTABLE 
  302.     translator). 
  303.  
  304.  4. Edit the C modules of your encoder/decoder, which include the C headers 
  305.     file of GenE/D and contain the invocation to the GDSEDLIB run-time library 
  306.     routines (click here for the description of these routines). 
  307.  
  308.  5. Compile the C modules with your C compiler. 
  309.  
  310.  6. Link your objects specifying that the GDSEDLIB dynamic library is used. 
  311.  
  312.  
  313. ΓòÉΓòÉΓòÉ 6.1. ASN.1 source file ΓòÉΓòÉΓòÉ
  314.  
  315. The following is an example of ASN.1 source. It contains only one module. The 
  316. ASN.1 keywords used in this example are DEFINITIONS, IMPLICIT, TAGS, BEGIN 
  317. SEQUENCE, PrintableString, SET, OCTET STRING, INTEGER and OPTIONAL. 
  318.  
  319. --**********************************--
  320. --* This is the file myasn1.asn    *--
  321. --**********************************--
  322.  
  323. MyModule DEFINITIONS                       -- module name
  324.     IMPLICIT TAGS ::=          -- default tagging is IMPLICIT
  325. BEGIN                                      -- the module starts here
  326.  
  327.  MyType1 ::= SEQUENCE{    -- definition of Mytype as SEQUENCE
  328.               item1 PrintableString,       -- first component of MyType1
  329.               item2 [2] MyType2 OPTIONAL   -- second component of MyType1
  330.              }                             -- end of the type definition
  331.  
  332.  MyType2 ::= SET{         -- definition of MyType2 as SET
  333.               item3 OCTET STRING,          -- first component of MyType2
  334.               item4 INTEGER                -- second component of MyType2
  335.              }                             -- end of the type definition
  336.  
  337. END                                        -- end of the module
  338.  
  339. To compile the myasn1.asn and produce the myasn1.tbl file, containing the 
  340. Symbol Table and Metatable, use the following command: 
  341.  
  342.  
  343.    GDSASN1 myasn1.asn -tmyasn1.tbl
  344.  
  345.  
  346. ΓòÉΓòÉΓòÉ 6.2. The Symbol Table and Metatable File in System-Independent Format ΓòÉΓòÉΓòÉ
  347.  
  348. The following is the myasn1.tbl text file generated by the GDSASN1 compiler 
  349. after the compilation of the ASN.1 source file. 
  350.  
  351.  
  352. GenE/D version 1.00 - 5648-075
  353. symbol table len: 130
  354. symbol table name: MyModule
  355. GLOBAL-MODULE
  356. MyModule
  357. MyType1
  358. MyType2
  359. PrintableString
  360. item1
  361. DEFAULT IMPLICIT
  362. item2
  363. SEQUENCE
  364. OCTET STRING
  365. item3
  366. INTEGER
  367. item4
  368. SET
  369. module: MyModule
  370. number of elements: 15
  371. -2 type: MyType1
  372. 2 23
  373. 11 84 0 7
  374. 15 4
  375. 25 55 19
  376. 16 7
  377. 0 78 0 2 -1 2 7
  378. 23 31 8
  379. 18
  380. -2 type: MyType2
  381. 2 31
  382. 13 126 2 14
  383. 15 12
  384. 10 106
  385. 15 14
  386. 3 120 14
  387. 18
  388. -1
  389. types/values/tables: 2
  390. 0
  391. 8
  392. imports: 0
  393. exports: 0
  394. Module: MyModule
  395. 14
  396. implicit
  397.  
  398. The myasn1.tbl file is system independent. It can be generated on an OS/2 
  399. workstation and then ported to an AIX/6000 workstation (or viceversa) and 
  400. translated with the GDSTABLE translator. 
  401.  
  402.  
  403. ΓòÉΓòÉΓòÉ 6.3. Translating the .TBL file ΓòÉΓòÉΓòÉ
  404.  
  405. To translate the Symbol Table and Metatable into a format usable by the 
  406. routines of the GDSEDLIB runtime library, use the following command: 
  407.  
  408.  
  409.    GDSTABLE -tmyasn1.tbl -dmyasn1.dat -hmyasn1.h
  410.  
  411. The myasn1.dat file contains the Symbol Table and Metatable and can be loaded 
  412. at runtime by a specific GDSEDLIB routine (click here for a description of this 
  413. routine). 
  414.  
  415. The myasn1.h C header file contains macro definitions of symbol names that can 
  416. be used by your program to refer to the items defined in the Metatable: 
  417.  
  418.  
  419. /* Defined constants for the types and values in module MyModule */
  420.  
  421. /* type: MyType1 of the module: MyModule */
  422. #define MyModule_MyType1 0
  423. #define MyModule_MyType1_SEQUENCE 4
  424. #define MyModule_MyType1_SEQUENCE_item1_CharacterString 16
  425.  
  426. /* type: MyType2 of the module: MyModule */
  427. #define MyModule_MyType2 57
  428. #define MyModule_MyType2_SET 61
  429. #define MyModule_MyType2_SET_item3_OCTET_STRING 73
  430. #define MyModule_MyType2_SET_item4_INTEGER 81
  431.  
  432.  
  433. ΓòÉΓòÉΓòÉ 6.4. The C User Program ΓòÉΓòÉΓòÉ
  434.  
  435. The following is a sample of the user program implementing the BER 
  436. encoder/decoder for the protocol defined in the myasn1.asn ASN.1 source file. 
  437.  
  438.  
  439. /***********************************************************************/
  440. /* encoder/decoder sample program for myasn1 protocol                  */
  441. /***********************************************************************/
  442.  
  443. /*********************************************************************
  444.  * The following header files are needed to compile this program.
  445.  * Note that the order of the header files is important.
  446.  *********************************************************************
  447.  */
  448. #include <stdlib.h>
  449. #include <stdio.h>
  450. #include <ctype.h>
  451. #include <string.h>
  452. #include "gdstypes.h"                /* GDSEDLIB types declarations */
  453. #include "gdsrcods.h"                /* return codes of GDSEDLIB routines */
  454. #include "gdsproto.h"                /* prototypes of the GDSEDLIB routines */
  455. #include "myasn1.h"                  /* definitions generated by GDSTABLE */
  456.  
  457. /*************************
  458.  * PROTOTYPES
  459.  *************************
  460.  */
  461. /* the following is the prototype of the user writing routine */
  462. unsigned long mywrite(char *buf, unsigned long buflen, void *usrparms);
  463.  
  464. /* the following is the prototype of the user reading routine */
  465. unsigned long myread(char *buf, unsigned long buflen, void *usrparms);
  466.  
  467. main(void)
  468. {
  469.    int                   rc;
  470.    void                 *Mod, *env;
  471.    unsigned short        Typ;
  472.    struct gds           *p1;
  473.    unsigned long         EncBytes, DecBytes;
  474.    FILE                 *trace_enc;
  475.    FILE                 *trace_dec;
  476.    FILE                 *EncStream;         /* input-output file */
  477.    static char          *dummy = "dummy";
  478.    unsigned char        *hex_string, *int_cont, *out_buff, *in_buff,
  479.                          alldata;
  480.    long                  lencont;
  481.    struct contents_str  *cont_array_ptr;
  482.    struct gds          **gds_tree_ptr;
  483.  
  484. /*
  485.  * Call the library routine, GDSinitEnvironment, to initialize the environment.
  486.  * Each User Application Program should do this before calling any routine to
  487.  * read .dat files, encode or decode data streams.
  488.  */
  489.    rc = GDSinitEnvironment(&env);   /* initialize environment for modules */
  490.    if (rc != INIT_ENV_OK) {
  491.      printf("GDSinitEnvironment return code: %i\n", rc);
  492.      return rc;
  493.    }
  494.  
  495. /*
  496.  * Call the library routine, GDSreaddatfile, to read the myasn1.dat file
  497.  * containing the Metatable and Symbol Table for the MyModule ASN.1 module.
  498.  */
  499.    rc = GDSreaddatfile("myasn1.dat", env);
  500.    if (rc != READ_DAT_OK) {
  501.      printf("GDSreaddatfile return code: %i\n", rc);
  502.      return rc;
  503.    }
  504.  
  505. /*
  506.  * Call the library routine, GDSresolveallimports, to resolve imports and
  507.  * exports in the myasn1.dat file. Note that if more than one .dat file had
  508.  * been read in with multiple calls to GDSreaddatfile, this call should be
  509.  * deferred as late as possible to maximize performance.  Multiple calls
  510.  * to GDSresolveallimports are allowed, however.
  511.  * In our case no imports or exports are resolved because MyModule doesn't
  512.  * contain imported or exported symbols.
  513.  */
  514.    rc = GDSresolveallimports(env);
  515.    if (rc != RESOLVE_IMPORTS_OK) {
  516.       printf("GDSresolveallimports return code: %i\n", rc);
  517.  
  518. /*
  519.  * Call the library routine, GDSPrintUnresolvedImports, to print the
  520.  * unresolved imports on standard output.
  521.  */
  522.       GDSPrintUnresolvedImports(stdout, env);
  523.       return rc;
  524.    }
  525.  
  526. /*
  527.  * Call the library routine GDSsetUsrWrite, to set the user-exit routine for
  528.  * writing buffer.
  529.  */
  530.    GDSsetUsrWrite(mywrite, env);
  531.  
  532.  
  533. /*
  534.  * Call the library routine GDSsetUsrRead, to set the user-exit routine for
  535.  * reading buffer.
  536.  */
  537.    GDSsetUsrRead(myread, env);
  538.  
  539. /*
  540.  * Call the library routine GDSfindmodule, to find the module structure
  541.  * corresponding to MyModule.
  542.  */
  543.    Mod = GDSfindmodule("MyModule", env);
  544.    if (Mod == NULL) {               /* if module not found */
  545.      printf("\nModule not found\n");
  546.      return(-1);
  547.    }
  548.  
  549. /*
  550.  * Call the library routine GDSallocateContentsArray to allocate
  551.  * the array of contents pointers for the specified module.
  552.  * This function returns a pointer to the first location of the array.
  553.  */
  554.    rc = GDSallocateContentsArray(Mod, &cont_array_ptr);
  555.    if (rc == ALLOCATECONT_NO_ENOUGH_STORAGE) {
  556.      printf("no enough storage for contents pointers array\n");
  557.      return(-1);
  558.    }
  559.  
  560. /*
  561.  * Load the contents data in the contents-array
  562.  */
  563.  
  564. /* fill the content, the content length and the storage class for item1 */
  565.    (cont_array_ptr[MyModule_MyType1_SEQUENCE_item1_CharacterString]).content = "item1";
  566.    (cont_array_ptr[MyModule_MyType1_SEQUENCE_item1_CharacterString]).len = 5;
  567.    (cont_array_ptr[MyModule_MyType1_SEQUENCE_item1_CharacterString]).contstg = allocd;
  568.  
  569. /* inform the encoder that the OPTIONAL item2 field must be encoded */
  570.    (cont_array_ptr[MyModule_MyType2_SET]).content = dummy;
  571.  
  572. /* allocate storage for hexadecimal string */
  573.    hex_string = (unsigned char *) malloc(4*sizeof(unsigned char));
  574.  
  575. /*
  576.  * Call the library routine GDSstr2hex to convert the printable form of
  577.  * the hexadecimal string: '0011AABB'H into an hexadecimal form.
  578.  */
  579.    GDSstr2hex(hex_string, 4, "0011AABB", 8);
  580.  
  581. /* fill the content, the content length and the storage class for item3 */
  582.    (cont_array_ptr[MyModule_MyType2_SET_item3_OCTET_STRING]).content = hex_string;
  583.    (cont_array_ptr[MyModule_MyType2_SET_item3_OCTET_STRING]).len = 4;
  584.    (cont_array_ptr[MyModule_MyType2_SET_item3_OCTET_STRING]).contstg = allocd;
  585.  
  586. /* allocate storage for INTEGER */
  587.    int_cont = (unsigned char *) malloc(sizeof(long));
  588.  
  589. /*
  590.  * Call the library routine GDSlongtoINTEGER to convert the C long constant
  591.  * 1 into a BER encoded INTEGER.
  592.  */
  593.    GDSlongtoINTEGER(1L, int_cont, &lencont);
  594.  
  595. /* fill the content, the content length and the storage class for item4 */
  596.    (cont_array_ptr[MyModule_MyType2_SET_item4_INTEGER]).content = int_cont;
  597.    (cont_array_ptr[MyModule_MyType2_SET_item4_INTEGER]).len = lencont;
  598.    (cont_array_ptr[MyModule_MyType2_SET_item4_INTEGER]).contstg = allocd;
  599.  
  600. /*
  601.  * Call the library routine GDSencode, to create one or more GDS structures
  602.  * that represent a value for MyModule. These GDS structures make a GDS
  603.  * structure tree. Note that the GDSencode function does *not* create the
  604.  * BER encoded data. The GDS structure tree contain the information needed to
  605.  * encode the data, but the actual encoding is a secondary step. This
  606.  * allows other encoding techniques besides BER to be used.
  607.  */
  608.    Typ = MyModule_MyType1;        /* encode MyType1 */
  609.    rc = GDSencode(Mod,            /* module where type occurs */
  610.                   &Typ,           /* metatable index where type occurs */
  611.                   cont_array_ptr, /* pointer to Contents Array */
  612.                   &p1,            /* returned GDS structure */
  613.                   ber,            /* type of encoding */
  614.                   env,            /* environment */
  615.                   NULL            /* user defined parameter,
  616.                                    * not used in this case */
  617.                  );
  618.  
  619.    if (rc != ENCODE_MATCH) {      /* if the encoding failed */
  620.      printf("\nGDSencode return code: %i\n", rc);
  621.      printf("\nMetatable type index where error occurred: %i\n", Typ);
  622.      GDSfreegds(p1, env);         /* reclaim space for the GDS structure tree */
  623.      return(-1);
  624.    }
  625.  
  626. /* open the output file that will contain the encoded data stream */
  627.    EncStream = fopen("stream.out","wb");
  628.    if (EncStream == NULL) {       /* open file failed */
  629.      printf("open output file failed\n");
  630.      exit(-1);
  631.    } /* endif */
  632.  
  633. /*
  634.  * Call the library routine, GDSencber, to encode the GDS structure tree
  635.  * using BER rules.
  636.  */
  637.    rc = GDSencber(&p1,            /* the GDS structure tree to be encoded */
  638.                   150,            /* the length of the output buffer */
  639.                   &out_buff,      /* output buffer */
  640.                   &EncBytes,      /* the number of encoded bytes */
  641.                   0,              /* definite length form */
  642.                   env,            /* environment */
  643.                   (void *) EncStream /* user parameter: it will be passed
  644.                                    * by GDSencber to the writing user-exit */
  645.                   );
  646.  
  647.    if (rc != ENCBER_OK) {         /* if encoding was unsuccessful */
  648.      printf("\nGDSencber return code: %i\n", rc);
  649.      printf("module name: %s\n", p1->modname);
  650.      printf("type name: %s\n", p1->name);
  651.      GDSfreegds(p1, env);         /* reclaim space for the GDS structure tree */
  652.      return(-1);
  653.    }  /* endif */
  654.  
  655.    printf("\nnumber of encoded bytes: %lu\n", EncBytes);
  656.  
  657. /* open the trace file for encoding gds tree */
  658.    trace_enc = fopen("trace1.out","w");
  659.    if (trace_enc == NULL) {       /* open file failed */
  660.      printf("open enc trace file failed\n");
  661.      return(-1);
  662.    } /* endif */
  663.  
  664. /*
  665.  * Call the library routine, GDSprintgds, to print the GDS structure tree
  666.  * in a readable format.
  667.  */
  668.    rc = GDSprintgds(p1,           /* ptr to root GDS structure */
  669.                     0,            /* number of spaces to indent */
  670.                     400,          /* max content length */
  671.                     79,           /* number of characters for row */
  672.                     trace_enc,    /* GDS tree trace file */
  673.                     ber           /* type of encoding */
  674.                    );
  675.  
  676.    if (rc != PRINT_GDS_OK) { /* if the printing failed */
  677.      printf("\nGDSprintgds return code: %i\n", rc);
  678.      GDSfreegds(p1, env);         /* reclaim space for encoded GDS struct */
  679.      return(-1);
  680.    }    /* endif */
  681.  
  682.    fclose(trace_enc);             /* close the trace file */
  683.  
  684.    fclose(EncStream);
  685.  
  686.    fopen("stream.out", "rb");          /* reopen the file for reading */
  687.    if (EncStream == NULL) {       /* open file failed */
  688.      printf("\nopen input file failed\n");
  689.      return(-1);
  690.    } /* endif */
  691.  
  692. /*
  693.  * Call the library routine, GDSfreegds, to reclaim the storage occupied by
  694.  * the GDS structures headed by p1 which are marked as allocated.  Note
  695.  * that some GDSs may be marked as static, which prevents them from
  696.  * being freed.
  697.  */
  698.    GDSfreegds(p1, env);          /* reclaim space for encoded GDS struct */
  699.  
  700.    if (out_buff |= NULL) free(out_buff);
  701.  
  702. /*
  703.  * Call the library routine, GDSdecber, to decode encoded data in the
  704.  * buffer we just built. The result should be a tree of GDS structures
  705.  * topped by p1 which matches the original structure created by the
  706.  * encode library routine.
  707.  */
  708.    alldata = 0;
  709.    in_buff = &alldata;
  710.    rc = GDSdecber(&p1,           /* pointer to the root of the GDS tree */
  711.                   150,           /* the length of the input buffer */
  712.                   &DecBytes,     /* number of decoded bytes */
  713.                   &in_buff,      /* data buffered indicator */
  714.                   env,           /* environment */
  715.                   (void *) EncStream /* user parameter: it will be passed
  716.                                    * by GDSdecber to the reading user-exit */
  717.                   );
  718.  
  719.    if (rc != DECBER_OK) {        /* if decoding failed */
  720.      printf("\nGDSdecber return code: %i\n", rc);
  721.      printf("\nnumber of decoded bytes: %u\n", DecBytes);
  722.      GDSfreegds(p1, env);
  723.      return(-1);
  724.    }
  725.  
  726.    printf("\nnumber of decoded bytes: %u\n", DecBytes);
  727.  
  728. /*
  729.  * Call the library routine, GDSAllocateGdsTreeArray to allocate an
  730.  * array of pointers to GDS structures. This array can be passed to
  731.  * the GDSdecode routine that filles it with the addresses of the
  732.  * GDS structures inside the decoded GDS structure tree. Then the
  733.  * User Application Program can access this array, using as indexes
  734.  * the symbol names defined in the myasn1.h file, to get directly
  735.  * the pointers to the corresponding GDS structures.
  736.  */
  737.    rc = GDSallocateGdsTreeArray(Mod, &gds_tree_ptr);
  738.    if (rc == ALLOCATEGDSTREE_NO_ENOUGH_STORAGE) {
  739.      printf("no enough storage for gds-tree pointers array\n");
  740.      return(-1);
  741.    }
  742.  
  743. /*
  744.  * Call the library routine, GDSdecode, to match the GDS structure tree
  745.  * created by GDSdecber with an ASN.1 type referenced by Mod and Typ.
  746.  * If successful, the GDS structures will have name information set.
  747.  */
  748.  
  749.    rc = GDSdecode(Mod,            /* module where type occurs */
  750.                   &Typ,           /* Metatable index where type occurs */
  751.                   &p1,            /* root of GDS structure tree */
  752.                   gds_tree_ptr,   /* pointer to the GDS tree pointers array */
  753.                   env,            /* environment */
  754.                   NULL            /* user parms, not used in this case */
  755.                   );
  756.  
  757.    if (rc != DECODE_MATCH) {      /* if decoding didn't go ok */
  758.      printf("\nGDSdecode return code: %i\n", rc);
  759.      printf("Metatable type index where error occurred: %i\n", Typ);
  760.      printf("module name: %s\n", p1->modname);
  761.      printf("type name: %s\n", p1->name);
  762.      GDSfreegds(p1, env);
  763.      return(-1);
  764.    }   /* endif */
  765.  
  766. /* open the trace file for decoding gds tree */
  767.    trace_dec = fopen("trace2.out","w");
  768.    if (trace_dec == NULL) {                    /* open file failed */
  769.      printf("open dec trace file failed\n");
  770.      exit(-1);
  771.    } /* endif */
  772.  
  773. /*
  774.  * Call the library routine, GDSprintgds, to print the structure and
  775.  * content of the decoded GDS.
  776.  */
  777.    rc = GDSprintgds(p1,           /* ptr to root GDS structure */
  778.                     0,            /* number of spaces to indent */
  779.                     400,          /* max content length */
  780.                     79,           /* number of characters for row */
  781.                     trace_dec,    /* GDS tree trace file */
  782.                     ber           /* type of encoding */
  783.                    );
  784.  
  785.    if (rc != PRINT_GDS_OK) { /* if the printing failed */
  786.      printf("\nGDSprintgds return code: %i\n", rc);
  787.      GDSfreegds(p1, env);
  788.      return(-1);
  789.    }    /* endif */
  790.  
  791.    fclose(trace_dec);             /* close the trace file */
  792.  
  793. /* as example we print the content of item1 only */
  794.    printf("item1: %s\n",
  795.    (gds_tree_ptr[MyModule_MyType1_SEQUENCE_item1_CharacterString])->contents);
  796.  
  797. /*
  798.  * Call the library routine GDSfreegds to free the GDS structures in
  799.  * the tree rooted by *p1.
  800.  */
  801.    GDSfreegds(p1, env);
  802.  
  803. /*
  804.  * Call the library routine GDSfreeGdsTreeArray to free the storage
  805.  * allocated for the array of GDS structures pointers.
  806.  */
  807.    GDSfreeGdsTreeArray(gds_tree_ptr);
  808.  
  809. /*
  810.  * Clean up the environment by unloading all modules by calling
  811.  * GDSunloadmodule for each module in the environment.  NOTE:
  812.  * the GDSunloadmodule function should only be called for modules which
  813.  * were loaded by the GDSreaddatfile function or which have allocated
  814.  * storage in the heap like the GDSreaddatfile function.
  815.  */
  816.  
  817.    for (GDSfirstmodule(&Mod, &dummy, env); Mod != NULL;
  818.         GDSfirstmodule(&Mod, &dummy, env)) {
  819.       GDSunloadmodule(Mod, env);
  820.    } /* endfor */
  821.  
  822.  /*
  823.   * Call the library routine GDSfreeEnvironment to free the
  824.   * environment storage
  825.   */
  826.    GDSfreeEnvironment(env);
  827.  
  828.    return 0;
  829. }  /* end main */
  830.  
  831. /*
  832.  * User-exit for flushing the output buffer. It writes the content of
  833.  * the buffer in a file.
  834.  */
  835. unsigned long mywrite(char *buf, unsigned long buflen, void *usrparms)
  836. {
  837.   FILE *EncStream;
  838.  
  839.   EncStream = (FILE *) usrparms;
  840.   return (unsigned long) (fwrite(buf,sizeof(unsigned char),buflen,EncStream));
  841. }
  842.  
  843. /*
  844.  * User-exit for loading the input buffer. It reads the content of the
  845.  * buffer from a file.
  846.  */
  847. unsigned long myread(char *buf, unsigned long buflen, void *usrparms)
  848. {
  849.   FILE *EncStream;
  850.  
  851.   EncStream = (FILE *) usrparms;
  852.   return (unsigned long) (fread(buf,sizeof(unsigned char),buflen,EncStream));
  853. }
  854.  
  855.  
  856. ΓòÉΓòÉΓòÉ 7. The GDSASN1 Compiler ΓòÉΓòÉΓòÉ
  857.  
  858. The role of the GDSASN1 compiler is to ensure the correctness of the abstract 
  859. syntax and to optionally translates the ASN.1 specification of the data stream 
  860. syntax in a Metatable and Symbol Table corresponding to the ASN.1 source file. 
  861. The Metatable and Symbol Table are contained in a .TBL file. The ASN.1 compiler 
  862. produces an error file too. This file lists errors and warning and 
  863. informational messages about the ASN.1 compilation. 
  864.  
  865.  
  866. ΓòÉΓòÉΓòÉ 7.1. Invoking the Compiler ΓòÉΓòÉΓòÉ
  867.  
  868. This section describes how to invoke the GDSASN1 compiler on different systems. 
  869.  
  870.  
  871. ΓòÉΓòÉΓòÉ 7.1.1. AIX/6000 Version ΓòÉΓòÉΓòÉ
  872.  
  873. The syntax for invoking the ASN.1 compiler from an AIX* command line is: 
  874.  
  875.  
  876.                      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  877.                                           Γöé
  878.   >>ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ GDSASN1 ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇ><
  879.                         Γöé                Γöé
  880.                         ΓööΓöÇΓöÇΓöÇΓöñ option Γö£ΓöÇΓöÇΓöÇΓöÿ
  881.  
  882.  
  883. ΓòÉΓòÉΓòÉ 7.1.2. GDSASN1 - AIX Options ΓòÉΓòÉΓòÉ
  884.  
  885. The options may appear in any order. The characters in the option keywords are 
  886. case insensitive. An option may be specified more than once, in which case the 
  887. last specification overrides previous specifications. 
  888.  
  889.  
  890.  
  891.   Γö£ΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ ? ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöñ
  892.       Γöé ΓööΓöÇ - ΓöÇΓöÿ                                           Γöé
  893.       Γöé                                                   Γöé
  894.       Γö£ΓöÇ source-file ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  895.       Γöé                                                   Γöé
  896.       Γö£ΓöÇ - ΓöÇΓö¼ΓöÇ E ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  897.       Γöé     ΓööΓöÇ e ΓöÇΓöÿ    ΓööΓöÇ error-file ΓöÇΓöÿ                   Γöé
  898.       Γöé                                                   Γöé
  899.       Γö£ΓöÇ - ΓöÇΓö¼ΓöÇ T ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ tbl-file ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  900.       Γöé     ΓööΓöÇ t ΓöÇΓöÿ                                       Γöé
  901.       Γöé                                                   Γöé
  902.       Γö£ΓöÇ - ΓöÇΓö¼ΓöÇ SCRIPT ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  903.       Γöé     ΓööΓöÇ script ΓöÇΓöÿ                                  Γöé
  904.       Γöé                                                   Γöé
  905.       Γö£ΓöÇ - ΓöÇΓö¼ΓöÇ NOSCRIPT ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  906.       Γöé     ΓööΓöÇ noscript ΓöÇΓöÿ                                Γöé
  907.       Γöé                                                   Γöé
  908.       Γö£ΓöÇ - ΓöÇΓö¼ΓöÇ GDSD ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  909.       Γöé     ΓööΓöÇ gdsd ΓöÇΓöÿ                                    Γöé
  910.       Γöé                                                   Γöé
  911.       Γö£ΓöÇ - ΓöÇΓö¼ΓöÇ NOGDSD ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  912.       Γöé     ΓööΓöÇ nogdsd ΓöÇΓöÿ                                  Γöé
  913.       Γöé                                                   Γöé
  914.       Γö£ΓöÇ - ΓöÇΓö¼ΓöÇ W ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ warn-level ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  915.       Γöé     ΓööΓöÇ w ΓöÇΓöÿ                                       Γöé
  916.       Γöé                                                   Γöé
  917.       ΓööΓöÇ - ΓöÇΓö¼ΓöÇ D ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  918.             ΓööΓöÇ d ΓöÇΓöÿ    ΓööΓöÇ debug-file ΓöÇΓöÿ
  919.  
  920.  
  921. ΓòÉΓòÉΓòÉ 7.1.3. OS/2 Version ΓòÉΓòÉΓòÉ
  922.  
  923. The syntax for invoking the ASN.1 compiler from an OS/2 command line is: 
  924.  
  925.  
  926.                      ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  927.                                           Γöé
  928.   >>ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ GDSASN1 ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇ><
  929.                         Γöé                Γöé
  930.                         ΓööΓöÇΓöÇΓöÇΓöñ option Γö£ΓöÇΓöÇΓöÇΓöÿ
  931.  
  932.  
  933. ΓòÉΓòÉΓòÉ 7.1.4. GDSASN1 - OS/2 Options ΓòÉΓòÉΓòÉ
  934.  
  935. The options may appear in any order. The characters in the option keywords are 
  936. case insensitive. An option may be specified more than once, in which case the 
  937. last specification overrides previous specifications. 
  938.  
  939.  
  940.  
  941.   Γö£ΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ ? ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöñ
  942.       Γöé Γö£ΓöÇ / ΓöÇΓöñ                                             Γöé
  943.       Γöé ΓööΓöÇ - ΓöÇΓöÿ                                             Γöé
  944.       Γöé                                                     Γöé
  945.       Γö£ΓöÇΓöÇ source-file ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  946.       Γöé                                                     Γöé
  947.       Γö£Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ E ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  948.       ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ e ΓöÇΓöÿ    ΓööΓöÇ error-file ΓöÇΓöÿ                   Γöé
  949.       Γöé                                                     Γöé
  950.       Γö£Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ T ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ tbl-file ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  951.       ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ t ΓöÇΓöÿ                                       Γöé
  952.       Γöé                                                     Γöé
  953.       Γö£Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ SCRIPT ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  954.       ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ script ΓöÇΓöÿ                                  Γöé
  955.       Γöé                                                     Γöé
  956.       Γö£Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ NOSCRIPT ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  957.       ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ noscript ΓöÇΓöÿ                                Γöé
  958.       Γöé                                                     Γöé
  959.       Γö£Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ GDSD ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  960.       ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ gdsd ΓöÇΓöÿ                                    Γöé
  961.       Γöé                                                     Γöé
  962.       Γö£Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ NOGDSD ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  963.       ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ nogdsd ΓöÇΓöÿ                                  Γöé
  964.       Γöé                                                     Γöé
  965.       Γö£Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ W ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ warn-level ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  966.       ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ w ΓöÇΓöÿ                                       Γöé
  967.       Γöé                                                     Γöé
  968.       ΓööΓö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ D ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  969.        ΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ d ΓöÇΓöÿ    ΓööΓöÇ debug-file ΓöÇΓöÿ
  970.  
  971.  
  972. ΓòÉΓòÉΓòÉ 7.2. GDSASN1 Compiler Input ΓòÉΓòÉΓòÉ
  973.  
  974. The input of the GDSASN1 compiler is a text file containing the ASN.1 
  975. specification of the data stream structure (for a description of the ASN.1 
  976. notation click here). 
  977.  
  978. If a source file is not specified, the GDSASN1 compiler reads its input from 
  979. standard input, which is normally the console. 
  980.  
  981. To facilitate use of ASN.1 definitions within IBM Script and BookMaster 
  982. documents, the compiler provides the SCRIPT option.  With the SCRIPT option in 
  983. effect: 
  984.  
  985. o The compiler skips all source lines outside of ASN.1 sections. An ASN.1 
  986.   section is introduced with a source line of the form .* asn.1 on". The .* 
  987.   must begin in columns one and two, asn.1 and on are separated by one or more 
  988.   spaces and may be uppercase or lowercase. An ASN.1 section is terminated with 
  989.   a source line of the form .* asn.1 off. Note that these two lines appear as 
  990.   comments to the Script or BookMaster processor. A source file can have 
  991.   multiple ASN.1 sections with no importance placed on where the section breaks 
  992.   occur with respect to the ASN.1 definitions. 
  993.  
  994. o Within an ASN.1 section, the following symbols are allowed, but not required, 
  995.   in place of their single character equivalents: 
  996.  
  997.    - &lbrc. or &lbrace. for { 
  998.  
  999.    - &rbrc. or &rbrace. for } 
  1000.  
  1001.    - &lbrk. or &lbracket. for [ 
  1002.  
  1003.    - &rbrk. or &rbracket. for ] 
  1004.  
  1005.    - &gml. for : 
  1006.  
  1007.    - &colon. for : 
  1008.  
  1009.    - &period. or &dot. for . 
  1010.  
  1011.    - &eq. or &equals. or &eqsym. for = 
  1012.  
  1013.    - &percent. for % 
  1014.  
  1015.    - &tab. or &rbl. for a space 
  1016.  
  1017.    - &us. for _ (underscore) 
  1018.  
  1019. o The above substitutions are made inside character string constants, but are 
  1020.   not made within ASN.1 comments. 
  1021.  
  1022. o Within an ASN.1 section, the compiler will ignore any line that begins with a 
  1023.   period or a colon in column one. If you absolutely need to begin a line with 
  1024.   a period or a colon that is part of an ASN.1 symbol, use &period. or &colon. 
  1025.   to avoid having the compiler ignore the line. 
  1026. Note that the above facilities are only in effect when the SCRIPT option is 
  1027. invoked.  Otherwise, the source file is assumed to contain only valid ASN.1 
  1028. statements without script symbols and ASN.1 sections. 
  1029.  
  1030.  
  1031. ΓòÉΓòÉΓòÉ 7.3. GDSASN1 Compiler Output ΓòÉΓòÉΓòÉ
  1032.  
  1033. The ouput of the GDSASN1 compiler consists of: 
  1034.  
  1035. o GDSASN1 compiler return codes and messages 
  1036.  
  1037. o Symbol table and Metatable file (.TBL file) 
  1038.  
  1039. o GDSASN1 compiler debugging information 
  1040.  
  1041.  
  1042. ΓòÉΓòÉΓòÉ 7.3.1. GDSASN1 Compiler Return Codes and Messages ΓòÉΓòÉΓòÉ
  1043.  
  1044. If the error-file option is not specified, the error output is directed to the 
  1045. standard output file, which is normally the console. 
  1046.  
  1047. The error ouput file is a file containing the errors and warning and 
  1048. informational messages about the ASN.1 compilation. For each message the 
  1049. following information are listed: 
  1050.  
  1051. o The number of line in the source file where the error has been found 
  1052.  
  1053. o The number of column inside the line where there is the item in error 
  1054.  
  1055. o The code of the error and its level of severity 
  1056.  
  1057. o A brief description of the error 
  1058.  
  1059. (Click here for a list of all the messages.). 
  1060.  
  1061. The message severity ranges from 1 to 4: 
  1062.  
  1063. o Level 1 messages are informational in nature 
  1064.  
  1065. o Level 2 messages are warnings that indicate run-time limitations 
  1066.  
  1067. o Level 3 messages are warnings that indicate questionable use of the ASN.1 
  1068.   language 
  1069.  
  1070. o Level 4 messages are errors in the ASN.1 source or internally detected 
  1071.   compiler errors 
  1072.  
  1073.  
  1074. ΓòÉΓòÉΓòÉ 7.3.2. Symbol Table and Metatable File (.TBL file) ΓòÉΓòÉΓòÉ
  1075.  
  1076. This is a text file in a specific format, which from now will be called TBL 
  1077. format (for a detailed description of the format of .TBL file click here). The 
  1078. .TBL file contains a Metatable and Symbol Table definitions corresponding to 
  1079. the compiled ASN.1 source file. The TBL format is character data that is 
  1080. intended to be portable. In fact, machine independence is gained by only using 
  1081. character forms for all data types, including those for decimal numbers and 
  1082. some special types, such as for object identifier values. In this way the TBL 
  1083. format represents an intermediate form: it is more compact and has more 
  1084. embedded information than the original ASN.1 source, but it is still as 
  1085. machine-independent as is possible. This allows the GDSASN1 Compiler to be 
  1086. hosted on one type of computer to generate Metatable and Symbol Table 
  1087. information for use by the user application on a different system. The 
  1088. translation of .TBL file into a format readable by run-time routines is 
  1089. performed by the GDSTABLE program. 
  1090.  
  1091. The Symbol Table contains the names defined in all the modules of the ASN.1 
  1092. source. 
  1093.  
  1094. The Metatable represents the syntactic structure of the ASN.1 definitions. In 
  1095. fact the structure of the Metatable is directly related to the ASN.1 statements 
  1096. from which it is derived. A Metatable is produced for each ASN.1 module defined 
  1097. in the source. 
  1098.  
  1099.  
  1100. ΓòÉΓòÉΓòÉ 7.3.3. GDSASN1 Compiler Debugging Information ΓòÉΓòÉΓòÉ
  1101.  
  1102. If the -d option is specified, the GDSASN1 compiler produces debugging 
  1103. information consisting of a trace of the operation performed during the parsing 
  1104. process. If a debug-file is not specified, the debugging output is directed to 
  1105. the standard output. 
  1106.  
  1107.  
  1108. ΓòÉΓòÉΓòÉ 8. Metatable and Symbol Table Translator ΓòÉΓòÉΓòÉ
  1109.  
  1110. The Metatable and Symbol Table translator (GDSTABLE program) translates the 
  1111. .TBL file (generated by the GDSASN1 Compiler) into two other files, containing 
  1112. the same information as the .TBL file: a .DAT file, a .C file or both. This 
  1113. translation is needed because the .TBL file format is not efficient for the 
  1114. runtime environment. Moreover, this translation provides the bridge between the 
  1115. compilation environment for the ASN.1 syntax and the execution environment of 
  1116. the User Application Program, which must perform encoding and decoding 
  1117. operations per ASN.1 specifications. 
  1118.  
  1119. The .DAT file and .C file contain the same information, structured in the same 
  1120. manner. The difference between .DAT file and .C file consists of their format 
  1121. and of how they are used by the User Application Program. In fact, the UAP can 
  1122. read at runtime the .DAT file, it can include the .C file, or it can be linked 
  1123. together with the compiled .C file. 
  1124.  
  1125. For the details of the .DAT file structure click here 
  1126.  
  1127.  
  1128. ΓòÉΓòÉΓòÉ 8.1. Invoking the Translator ΓòÉΓòÉΓòÉ
  1129.  
  1130. This section describes how to invoke the GDSTABLE translator on different 
  1131. systems. 
  1132.  
  1133.  
  1134. ΓòÉΓòÉΓòÉ 8.1.1. AIX/6000 Version ΓòÉΓòÉΓòÉ
  1135.  
  1136. The syntax for invoking the Metatable and Symbol Table translator from an AIX 
  1137. command line is: 
  1138.  
  1139.  
  1140.  >>ΓöÇΓöÇΓöÇ GDSTABLE ΓöÇΓöÇΓöÇ tblfile ΓöÇΓöÇ datfile ΓöÇΓöÇΓöÇΓöÇ>
  1141.  
  1142.  
  1143.   >ΓöÇΓö¼ΓöÇ / ΓöÇΓö¼ΓöÇΓö¼ΓöÇ C ΓöÇΓö¼ΓöÇΓöÇ c-file ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ>
  1144.     ΓööΓöÇ - ΓöÇΓöÿ ΓööΓöÇ c ΓöÇΓöÿ
  1145.  
  1146.  
  1147.   >ΓöÇΓö¼ΓöÇ / ΓöÇΓö¼ΓöÇΓö¼ΓöÇ H ΓöÇΓö¼ΓöÇΓöÇ h-file ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ>
  1148.     ΓööΓöÇ - ΓöÇΓöÿ ΓööΓöÇ h ΓöÇΓöÿ
  1149.  
  1150.   >ΓöÇΓö¼ΓöÇ / ΓöÇΓö¼ΓöÇΓö¼ΓöÇ E ΓöÇΓö¼ΓöÇΓöÇ error-file ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ>
  1151.     ΓööΓöÇ - ΓöÇΓöÿ ΓööΓöÇ e ΓöÇΓöÿ
  1152.  
  1153.   >ΓöÇΓö¼ΓöÇ / ΓöÇΓö¼ΓöÇΓö¼ΓöÇ S ΓöÇΓö¼ΓöÇΓöÇ test-tool-inp-fileΓöÇΓöÇΓöÇ><
  1154.     ΓööΓöÇ - ΓöÇΓöÿ ΓööΓöÇ s ΓöÇΓöÿ
  1155.  
  1156.  
  1157.  
  1158. ΓòÉΓòÉΓòÉ 8.1.2. OS/2 Version ΓòÉΓòÉΓòÉ
  1159.  
  1160. The syntax for invoking the Metatable and Symbol Table translator from an OS/2 
  1161. command line is: 
  1162.  
  1163.  
  1164.                  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1165.                                                           Γöé
  1166.   >>ΓöÇΓöÇ GDSTABLE ΓöÇΓöÇΓö¼Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ T ΓöÇΓö¼ΓöÇ tblfile ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇ><
  1167.                   ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ t ΓöÇΓöÿ                       Γöé
  1168.                   Γöé                                     Γöé
  1169.                   Γö£Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ D ΓöÇΓö¼ΓöÇ datfile ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1170.                   ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ d ΓöÇΓöÿ                       Γöé
  1171.                   Γöé                                     Γöé
  1172.                   Γö£Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ C ΓöÇΓö¼ΓöÇ c-file ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1173.                   ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ c ΓöÇΓöÿ                       Γöé
  1174.                   Γöé                                     Γöé
  1175.                   Γö£Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ H ΓöÇΓö¼ΓöÇ h-file ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1176.                   ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ h ΓöÇΓöÿ                       Γöé
  1177.                   Γöé                                     Γöé
  1178.                   Γö£Γö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ E ΓöÇΓö¼ΓöÇ error-file ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1179.                   ΓöéΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ e ΓöÇΓöÿ                       Γöé
  1180.                   Γöé                                     Γöé
  1181.                   ΓööΓö¼ΓöÇ / ΓöÇΓö¼Γö¼ΓöÇ S ΓöÇΓö¼ΓöÇ test-tool-inp-file ΓöÇΓöÇΓöÿ
  1182.                    ΓööΓöÇ - ΓöÇΓöÿΓööΓöÇ s ΓöÇΓöÿ
  1183.  
  1184.  
  1185.  
  1186.  
  1187. ΓòÉΓòÉΓòÉ 8.2. GDSTABLE Translator Input ΓòÉΓòÉΓòÉ
  1188.  
  1189. The input of the GDSTABLE translator consists of the .TBL file generated by the 
  1190. GDSASN1 compiler. 
  1191.  
  1192.  
  1193. ΓòÉΓòÉΓòÉ 8.3. GDSTABLE Translator Output ΓòÉΓòÉΓòÉ
  1194.  
  1195. The output of the GDSTABLE translator consists of: 
  1196.  
  1197. o .DAT file 
  1198.  
  1199. o .C file 
  1200.  
  1201. o .H file 
  1202.  
  1203. o Return codes and messages 
  1204.  
  1205. o Test tool preformatted input file 
  1206.  
  1207.  
  1208. ΓòÉΓòÉΓòÉ 8.3.1. .DAT File ΓòÉΓòÉΓòÉ
  1209.  
  1210. The .DAT file is a binary file containing, in a specific format, the Symbol 
  1211. Table and the Metatable defined in the .TBL file. The .DAT file can be read at 
  1212. runtime by the GDSreaddatfile 
  1213.  
  1214.  
  1215. ΓòÉΓòÉΓòÉ 8.3.2. .C File ΓòÉΓòÉΓòÉ
  1216.  
  1217. The .C file is a C language source file containing data structure definitions. 
  1218. These data structures implement the Symbol Table and the Metatable defined in 
  1219. the .TBL file. They are used by the runtime routines of the GDSEDLIB library, 
  1220. or they can be used by ad-hoc user-written functions. The generation of the .C 
  1221. file is regulated by the -c option. 
  1222.  
  1223.  
  1224. ΓòÉΓòÉΓòÉ 8.3.3. .H File ΓòÉΓòÉΓòÉ
  1225.  
  1226. The .H file is a C language header file containing define preprocessor 
  1227. directives for each ASN.1 type or value defined in the compiled ASN.1 source 
  1228. file. These #defines assign a self-describing symbolic name to each Metatable 
  1229. index corresponding to each ASN.1 statement for which the User Application 
  1230. Program has to do encoding/decoding actions. 
  1231.  
  1232. On the other hand, the runtime GDSEDLIB library has search routines 
  1233. (GDSfindtype and GDSfindval) providing the indexes in the Metatable of the 
  1234. ASN.1 types or values corresponding to the symbolic names passed to them, but 
  1235. this approach is more time consuming than using directly the symbolic names 
  1236. defined in the .H file. Note that the .H file can be included by the User 
  1237. Application Program regardless of whether the Metatable is part of the UAP (.C 
  1238. file) or it is loaded at run time (.DAT. file). 
  1239.  
  1240. The generation of the .H file is regulated by the -h option. 
  1241.  
  1242.  
  1243. ΓòÉΓòÉΓòÉ 8.3.4. Return Codes and Messages ΓòÉΓòÉΓòÉ
  1244.  
  1245. Return codes and messages by default are directed to the standard output. Use 
  1246. the -e option to specify a different output file. 
  1247.  
  1248.  
  1249. ΓòÉΓòÉΓòÉ 8.3.5. Test Tool Preformatted Input File ΓòÉΓòÉΓòÉ
  1250.  
  1251. Use the option -s to generate a text file useful for testing. This file 
  1252. contains blocks of tags. It must be filled with an editor and passed to the 
  1253. test tool (for a description of the test tool click here). 
  1254.  
  1255.  
  1256. ΓòÉΓòÉΓòÉ 9. ASN.1 Syntax ΓòÉΓòÉΓòÉ
  1257.  
  1258. For details of the ASN.1 syntax, including the extensions to the syntax and the 
  1259. features supported by the GDSASN1 compiler, see the General Data Stream 
  1260. Encoder/Decoder User's and Programmer's Guide manual. 
  1261.  
  1262. The ASN.1 is defined by the standard ISO/IEC 8824 Information Processing - Open 
  1263. Systems Interconnection - Specification of Abstract Syntax Notation One (ASN.1) 
  1264. (April 1990). 
  1265.  
  1266.  
  1267. ΓòÉΓòÉΓòÉ 10. Encoding Rules ΓòÉΓòÉΓòÉ
  1268.  
  1269. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  1270. manual for the format of the encoded data. 
  1271.  
  1272.  
  1273. ΓòÉΓòÉΓòÉ 10.1. Basic Encoding Rules ΓòÉΓòÉΓòÉ
  1274.  
  1275. Basic Encoding Rules defines the format of the encoded data that the GDSencber 
  1276. routine of the GDSEDLIB runtime library returns to the User Application Program 
  1277. after encoding, and that the User Application Program passes to the GDSdecber 
  1278. routine of the GDSEDLIB runtime library for decoding. This format is defined by 
  1279. the standard ISO/IEC 8825 Information Processing - Open Systems Interconnection 
  1280. - Specifications of Abstract Syntax Specification of Basic Encoding Rules for 
  1281. Abstract Syntax Notation One (ASN.1) (April 1990). 
  1282.  
  1283.  
  1284. ΓòÉΓòÉΓòÉ 10.2. IBM General Data Stream Definition ΓòÉΓòÉΓòÉ
  1285.  
  1286. This section describes the IBM General Data Stream (GDS), which is used in a 
  1287. variety of ways by SNA products. The basic structural unit in GDS is the 
  1288. structured field, a string of bytes beginning with a length and followed by a 
  1289. GDS identifier (ID), also defined TYPE, that defines the structure of the 
  1290. remainder of the field. 
  1291.  
  1292. However the GDSencgdsd encoding routine and the GDSdecgdsd decoding routine of 
  1293. the GDSEDLIB runtime library support a more general form of the GDS variable, 
  1294. whose LENGTH field and IDENTIFIER field can be 0, 1, 2, 3, or 4 bytes long. 
  1295.  
  1296.  
  1297. ΓòÉΓòÉΓòÉ 11. GDSEDLIB Runtime Library ΓòÉΓòÉΓòÉ
  1298.  
  1299. The runtime routines of the GDSEDLIB library are used by the User Application 
  1300. Program to: 
  1301.  
  1302. o Encode and decode the data streams defined with ASN.1 
  1303. o Convert between transfer syntax and local forms 
  1304. o Format data for printing or displaying 
  1305. o Access the Symbol Table and Metatable 
  1306.  
  1307. The GDSEDLIB runtime routines can be grouped into these categories: 
  1308.  
  1309. o Initialization/Termination 
  1310. o Searching/Accessing 
  1311. o Data Conversion 
  1312. o Encoding/Decoding 
  1313. o Data Formatting 
  1314.  
  1315.  
  1316. ΓòÉΓòÉΓòÉ 11.1. Initialization and Termination ΓòÉΓòÉΓòÉ
  1317.  
  1318. GDSaddmodule        Adds an ASN.1 module to the list of modules in the runtime 
  1319.                     environment. 
  1320.  
  1321. GDSallocateContentsArray Allocates an array of structures useful to pass data 
  1322.                     to encoding functions. 
  1323.  
  1324. GDSallocateContListArray Allocates an array of structures useful to pass data 
  1325.                     to encoding functions for SET OF and SEQUENCE OF type. 
  1326.  
  1327. GDSallocateGdsTreeArray Allocates an array useful to access the decoded GDS 
  1328.                     structure tree. 
  1329.  
  1330. GDSfreeContentsArray Frees the contents-array allocated with 
  1331.                     GDSallocateContentsArray. 
  1332.  
  1333. GDSfreeEnvironment  Frees the storage of the environment allocated with 
  1334.                     GDSinitEnvironment routine. 
  1335.  
  1336. GDSfreegds          Frees a GDS structure tree. 
  1337.  
  1338. GDSfreeGdsTreeArray Frees the storage of the array of GDS structures pointers 
  1339.                     allocated by GDSallocateGdsTreeArray routine. 
  1340.  
  1341. GDSnewgds           Creates and initializes a GDS structure tree node. 
  1342.  
  1343. GDSreaddatfile      Reads a DAT file into the runtime environment. 
  1344.  
  1345. GDSresolveallimports Resolves the imported symbols in each of the active 
  1346.                     modules in the runtime environment. 
  1347.  
  1348. GDSresolveimports   Resolves the imported symbols for one module. 
  1349.  
  1350. GDSsetUsrDec        Sets the user decoding function address. 
  1351.  
  1352. GDSsetUsrEnc        Sets the user encoding function address. 
  1353.  
  1354. GDSsetUsrRead       Sets the user reading function address. 
  1355.  
  1356. GDSsetUsrWrite      Sets the user writing function address. 
  1357.  
  1358. GDSunloadmodule     Unloads a module from memory. 
  1359.  
  1360.  
  1361. ΓòÉΓòÉΓòÉ 11.2. Searching and Accessing ΓòÉΓòÉΓòÉ
  1362.  
  1363. GDSbasetype         Determines the base type of an ASN.1 type. 
  1364.  
  1365. GDSfindmodule       Finds a module by name among the active modules. 
  1366.  
  1367. GDSfindtype         Finds a type definition in a module given its type name. 
  1368.  
  1369. GDSfindval          Finds a value definition in a module given its value name. 
  1370.  
  1371. GDSfindtbl          Finds a table definition in a module given its table name. 
  1372.  
  1373. GDSfirstmodule      Returns the first module in the list of active modules in 
  1374.                     the runtime environment. 
  1375.  
  1376.  
  1377. ΓòÉΓòÉΓòÉ 11.3. Data Conversion ΓòÉΓòÉΓòÉ
  1378.  
  1379. GDShex2str          Converts a binary or hexadecimal string into a printable 
  1380.                     character string. 
  1381.  
  1382. GDSINTEGERtolong    Converts an ASN.1 INTEGER into a long int. 
  1383.  
  1384. GDSlngs2OID         Converts an array of longs to an object identifier value. 
  1385.  
  1386. GDSlongtoINTEGER    Converts a long int into an ASN.1 INTEGER. 
  1387.  
  1388. GDSOIDtolngs        Converts an obect identifier to an array of long integers. 
  1389.  
  1390. GDSstr2hex          Converts a printable character string into a binary or 
  1391.                     hexadecimal string. 
  1392.  
  1393.  
  1394. ΓòÉΓòÉΓòÉ 11.4. Encoding/Decoding ΓòÉΓòÉΓòÉ
  1395.  
  1396. GDSdecber           Decodes a BER-formatted data stream into a GDS structure 
  1397.                     tree. 
  1398.  
  1399. GDSdecgdsd          Decodes a GDSD-formatted data stream into a GDS structure 
  1400.                     tree, and decodes the GDS structure tree according to the 
  1401.                     ASN.1 type defining the the data stream syntax. 
  1402.  
  1403. GDSdecode           Decodes a GDS structure tree according to an ASN.1 type. 
  1404.  
  1405. GDSencber           Encodes a BER-formatted data stream from a GDS structure 
  1406.                     tree. 
  1407.  
  1408. GDSencgdsd          Encodes a GDSD-formatted data stream from a GDS structure 
  1409.                     tree. 
  1410.  
  1411. GDSencode           Encodes a GDS structure tree according to an ASN.1 type. 
  1412.  
  1413.  
  1414. ΓòÉΓòÉΓòÉ 11.5. Formatting ΓòÉΓòÉΓòÉ
  1415.  
  1416. GDSprintgds         Prints a formatted version of a GDS structure tree. 
  1417.  
  1418. GDSPrintUnresolvedImports Prints unresolved imported symbols. 
  1419.  
  1420. GDStypestr          Converts an ASN.1 type to a printable string. 
  1421.  
  1422.  
  1423. ΓòÉΓòÉΓòÉ 11.6. Using the GDSEDLIB Library ΓòÉΓòÉΓòÉ
  1424.  
  1425. This section describes how the User Aplication Program can use the GDSEDLIB 
  1426. library. 
  1427.  
  1428.  
  1429. ΓòÉΓòÉΓòÉ 11.6.1. AIX/6000 Version ΓòÉΓòÉΓòÉ
  1430.  
  1431. The GDSEDLIB library consists of a shared library (GDSEDLIB.O). To use this 
  1432. shared library, the User Application Program has to include the following 
  1433. header files: 
  1434.  
  1435. o GDSTYPES.H, containing the type definitions used by the routines of the 
  1436.   GDSEDLIB library. 
  1437.  
  1438. o GDSPROTO.H, containing the prototypes of the routines of the GDSEDLIB 
  1439.   library. 
  1440.  
  1441. o GDSRCODS.H, containing the return codes of the routines of the GDSEDLIB 
  1442.   library. 
  1443.  
  1444. Then the UAP must be compiled and linked passing the information about the 
  1445. shared library (see your  AIX General Programming Concepts manual to see how it 
  1446. can be done). 
  1447.  
  1448.  
  1449. ΓòÉΓòÉΓòÉ 11.6.2. OS/2 Version ΓòÉΓòÉΓòÉ
  1450.  
  1451. The GDSEDLIB library consists of a dynamic link library (GDSEDLIB.DLL). To use 
  1452. this DLL the User Application Program has to include the following header 
  1453. files: 
  1454.  
  1455. o GDSTYPES.H, containing the types definitions used by the routines of the 
  1456.   GDSEDLIB library. 
  1457.  
  1458. o GDSPROTO.H, containing the prototypes of the routines of the GDSEDLIB 
  1459.   library. 
  1460.  
  1461. o GDSRCODS.H, containing the Return Codes of the routines of the GDSEDLIB 
  1462.   library. 
  1463.  
  1464. Then, in the linking phase, there are two ways to communicate to the linker 
  1465. that a DLL is used: 
  1466.  
  1467. o Pass the GDSEDLIB.LIB to the linker (see your C Compiler user's guide to see 
  1468.   how it can be done). 
  1469.  
  1470. o Pass the GDSEDLIB.DEF to the linker (see your C Compiler user's guide to see 
  1471.   how it can be done). 
  1472.  
  1473. Moreover the GDSEDLIB.DLL must be in a directory listed in LIBPATH environment 
  1474. variable. 
  1475.  
  1476.  
  1477. ΓòÉΓòÉΓòÉ 11.7. How the Encoding\Decoding Routines Work ΓòÉΓòÉΓòÉ
  1478.  
  1479. In order to use correctly the routines of the GDSEDLIB library the user has to 
  1480. understand the main steps performed by those during the encoding and decoding 
  1481. processes. 
  1482.  
  1483.  
  1484. ΓòÉΓòÉΓòÉ 11.7.1. Encoding Process ΓòÉΓòÉΓòÉ
  1485.  
  1486. The encoding process is performed in two steps. 
  1487.  
  1488.  1. Invoke the GDSencode function to construct the GDS structure tree. The GDS 
  1489.     structure tree is an internal representation of the structure of the 
  1490.     encoded data stream. Each node of this tree is a GDS structure. 
  1491.  
  1492.     The GDSencode allocates a GDS structure for each ASN.1 type defined in the 
  1493.     Metatable. The UAP passes the content data that must be encoded. The 
  1494.     content data can be passed in two different ways: 
  1495.  
  1496.    o With an encoding user exit that the GDSencode routine calls each time it 
  1497.      encodes a primitive ASN.1 type. 
  1498.  
  1499.    o Setting a specific contents-array before calling the GDSencode routine. 
  1500.  
  1501.  2. The GDSencber or the GDSencgdsd routine must be invoked, depending on the 
  1502.     type of transfer syntax (BER or GDSD) used. These two routines read the GDS 
  1503.     structure tree and produce the encoded data stream in an output buffer. 
  1504.  
  1505.  
  1506. ΓòÉΓòÉΓòÉ 11.7.2. Decoding Process ΓòÉΓòÉΓòÉ
  1507.  
  1508. The transfer syntaxes defined by BER and IBM GDSD are quite different. The BER 
  1509. defines a specific tag value for each built-in ASN.1 type. So the BER-encoded 
  1510. data contains all the information related to the structure of the data itself. 
  1511. It means that in the decoding phase it is possible to construct the GDS 
  1512. structure tree corresponding to the decoded data stream without knowing the 
  1513. corresponding ASN.1 specifications (the Metatable). 
  1514.  
  1515. In the case of GDSD this is not possible. In fact the GDSD does not define 
  1516. specific tag values for each ASN.1 built-in type. All the IDENTIFIERs of the 
  1517. GDS variables must be explicitly specified, and the built-in types defining 
  1518. complex structure (SET, SET OF, SEQUENCE, SEQUENCE OF) do not have 
  1519. corresponding implicit tag values. This means that for decoding a 
  1520. GDSD-formatted data stream it needs to know the data stream structure; that is, 
  1521. it needs the Metatable. 
  1522.  
  1523. Because of this the decoding process consists of two steps (GDSdecber and 
  1524. GDSdecode routines) in case of BER, and one step (GDSdecgdsd routine) in case 
  1525. of GDSD. 
  1526.  
  1527.  
  1528. ΓòÉΓòÉΓòÉ 11.7.3. GDS Structure Tree ΓòÉΓòÉΓòÉ
  1529.  
  1530. The following is the C declaration of the GDS structure: 
  1531.  
  1532.          struct gds {
  1533.             enum tagclass     cls;
  1534.             unsigned long     id;
  1535.             enum frm          form;
  1536.             long              loc;
  1537.             long              log;
  1538.             int               basetype;
  1539.             char             *modname;
  1540.             char             *name;
  1541.             char             *sop;
  1542.             char             *contents;
  1543.             struct gds       *next;
  1544.             struct gds       *contains;
  1545.             struct gds       *parent;
  1546.             enum stg          gdsstg;
  1547.             enum stg          contstg;
  1548.             enum setstat      sstat;
  1549.             unsigned long     id_seg_len;
  1550.             int (*usrcontent) (char **, long *, enum lastflag *)
  1551.             struct segment   *seg_list;
  1552.          };
  1553.  
  1554. To understand the meanings of the GDS structure fields consider the GDS 
  1555. structure tree generated after the encoding of the following ASN.1 
  1556. specifications: 
  1557.  
  1558. MyModule DEFINITIONS
  1559.     IMPLICIT TAGS ::=
  1560. BEGIN
  1561.  
  1562.  
  1563.      MyType1 ::= SEQUENCE{
  1564.                   item1 PrintableString,
  1565.                   item2 [2] IMPLICIT MyType2
  1566.                  }
  1567.  
  1568.      MyType2 ::= SET{
  1569.                   item3 OCTET STRING,
  1570.                   item4 INTEGER
  1571.                  }
  1572.  
  1573. END
  1574.  
  1575. The figure GDS structure tree shows the corresponding GDS structure tree. 
  1576.  
  1577.  
  1578. GDS structure tree
  1579.  
  1580. The GDS structure fields have the following meanings: 
  1581.  
  1582. o cls is the tag class of the type corresponding to this GDS structure. The tag 
  1583.   class is UNIVERSAL if the type is not tagged. Otherwise, it is one of the 
  1584.   GDSD or BER tag classes. In our example the GDS structures: MyType1, item1, 
  1585.   item3, and item4 have the tag class UNIVERSAL, the GDS structure item2 has 
  1586.   tag class CONTEXT-SPECIFIC. 
  1587.  
  1588. o id is the IDENTIFIER value of the type corresponding to this GDS structure. 
  1589.   If the type is not tagged, this value is the one defined by the ISO/IEC 8824 
  1590.   standard. In this case the IDENTIFIER value is encoded only by BER encoding 
  1591.   and ignored by GDSD encoding. If the type is tagged, the IDENTIFIER value is 
  1592.   the tag number. In the example, the GDS structure MyType1, item1, item2, 
  1593.   item3, and item4 have, respectively, IDENTIFIER value 16, 19, 2, 4, and 2. 
  1594.  
  1595. o form indicates the form (primitive or constructed) of the type corresponding 
  1596.   to this GDS structure. Primitive form means that this type does not contain 
  1597.   other subtypes; that is, the GDS structure contains pointer is NULL. 
  1598.   Constructor form means that this type contains other subtypes (for example, 
  1599.   SET and SEQUENCE are always encoded in constructed form), that is the GDS 
  1600.   structure contains pointer is the address of the root of a GDS structure 
  1601.   subtree. In the example, the GDS structure MyType1 and item2 have constructed 
  1602.   form, the others have primitive form. 
  1603.  
  1604. o loc is the length of contents field. 
  1605.  
  1606. o log is the length of the GDS structure; that is,  the length of the contained 
  1607.   GDS structure subtree (if there is one) or the length of contents (if there 
  1608.   is one) plus the length of IDENTIFIER and LENGTH field. 
  1609.  
  1610. o basetype indicates the base type of this GDS structure. The base type is one 
  1611.   of the ASN.1 built-in type. In the example the GDS structure MyType1, item1, 
  1612.   item2, item3, and item4 have, respectively, the base type SEQUENCE, 
  1613.   PrintableString, SET, OCTET STRING and INTEGER. 
  1614.  
  1615. o modname is the name of the ASN.1 module that contains the definitions of the 
  1616.   type corresponding to this GDS structure. In the example, all GDS structures 
  1617.   have the same module name: MyModule. 
  1618.  
  1619. o name is the name of the type corresponding to this GDS structure. 
  1620.  
  1621. o sop is a pointer inside the input/output buffer containing the data stream. 
  1622.   It points to the first byte of the encoded data for the type corresponding to 
  1623.   this GDS structure. This pointer is significant if: 
  1624.  
  1625.    - After encoding, all the encoded data fits in the output buffer (that is 
  1626.      the buffer writing user exit has been called just one time, click here for 
  1627.      details) 
  1628.  
  1629.    - After decoding, all the read data fits in the input buffer (that is, the 
  1630.      buffer reading user exit has been called just one time, click here for 
  1631.      details) 
  1632.  
  1633. o contents is the pointer to the content data, significant if the form is 
  1634.   primitive. 
  1635.  
  1636. o next is the pointer to the next sibling GDS structure. 
  1637.  
  1638. o contains is the pointer to the GDS structure subtree contained in this GDS 
  1639.   structure, significant if the form of the type is constructed. 
  1640.  
  1641. o parent is the pointer to the parent GDS structure. 
  1642.  
  1643. o gdsstg indicates the storage class of the GDS structure, that is if the 
  1644.   structure has been allocated at runtime or statically. The encoding and 
  1645.   decoding routines of the GDSEDLIB library always allocate dynamically the GDS 
  1646.   structures, but an encoding user exit of some User Application Programs could 
  1647.   pass to the GDSencode routine a statically allocated GDS structure. This 
  1648.   information is necessary when the GDS structure tree storage is freed by the 
  1649.   GDSfreegds routine. 
  1650.  
  1651. o contstg indicates the storage class of the contents data; that is, if the 
  1652.   buffer pointed to by contents has been allocated at run time or statically. 
  1653.   This information is necessary when the GDS structure tree storage is freed by 
  1654.   the GDSfreegds routine. 
  1655.  
  1656. o sstat is used by GDSdecode routine to flag the matched GDS structures inside 
  1657.   a SET type. It is not significant from the User Application Program point of 
  1658.   view. 
  1659.  
  1660. o id_seg_len is used by GDSencgdsd routine to find out the IDENTIFIER length or 
  1661.   the segment length. It is not significant from the User Application Program 
  1662.   point of view. 
  1663.  
  1664. o int (*usrcontent) (char **, long *, enum lastflag *) is the pointer to a user 
  1665.   exit called by the GDSencgdsd and GDSencber routines if the contents field, 
  1666.   of the GDS structure with primitive form that is being encoded, is NULL. The 
  1667.   user exit name must be passed to the GDSencode by the User Application 
  1668.   Program. In this way it is possible to avoid the content data being 
  1669.   duplicated in the storage: in the GDS structure tree and in the output 
  1670.   buffer. The content user exit must return in the order: the pointer to the 
  1671.   data buffer, the length of the buffer, and an indication (YES or NO) if it is 
  1672.   the last piece of data or not. For details on data passing to GDSencode click 
  1673.   here. 
  1674.  
  1675. o seg_list is a pointer to a chain of segments. It is filled by the GDSdecgdsd 
  1676.   routine if the User Application Program does  not use a decoding user exit 
  1677.   and a segmented data stream has been decoded. Each segment in the chain 
  1678.   corresponds to a decoded segment. For details on segmentation click here. 
  1679.  
  1680.  
  1681. ΓòÉΓòÉΓòÉ 11.7.4. Segmentation ΓòÉΓòÉΓòÉ
  1682.  
  1683. There are two segmentation algorithms supported by GDSencgdsd and GDSdecgdsd 
  1684. routines: 
  1685. LL algorithm 
  1686.  
  1687. With the LL technique, the high-order bit of a 2-bytes long field (LL) is set 
  1688. on, if the segment is not the last segment. With this technique only the first 
  1689. segment can contain two or three bytes of the IDENTIFIER field, the following 
  1690. segments contain only the LL bytes. 
  1691. LL Segments Encoding 
  1692.  
  1693. The encoding logic is to always generate a segment prefix for the GDSSEGLL 
  1694. tagged types. The segment prefix consists of 2 bytes of the LENGTH field (LL), 
  1695. optionally followed by 2 or 3 bytes of the IDENTIFIER field (ID). When a 
  1696. segment has been encoded, its length equal to the specified maximum segment 
  1697. length, another segment prefix is generated, and reinitialized to begin the 
  1698. next segment. Finally, when GDSencgdsd processes the last piece of data, the 
  1699. not-last bit in the LL field is turned off. 
  1700. LL Segments Decoding 
  1701.  
  1702. The decoding logic consists of discarding the segments prefix before decoding 
  1703. the segment content. If the segmented type (the GDSSEGLL tagged type) is a 
  1704. primitive type, a type with content data, the segment content data can be 
  1705. passed to the User Application Program in two different ways: 
  1706.  
  1707. o Using the decoding user exit, which is called by the GDSdecgdsd routine each 
  1708.   time a new segment has been decoded. 
  1709.  
  1710. o Using the segment chain, which the GDSdecgdsd routine generates during the 
  1711.   decoding of the segmented content data, and that is pointed by the seg_list 
  1712.   field of the GDS structure corresponding to the segmented type. Each element 
  1713.   of the segment chain is a segment structure. The C declaration of the segment 
  1714.   structure is the following: 
  1715.  
  1716.  
  1717.               struct segment {
  1718.                unsigned long   seg_len;      /* length of the segment */
  1719.                char           *seg_content;  /* segment content data */
  1720.                struct segment *next_seg;     /* pointer to the next segment.
  1721.                                               * NULL if it is the last */
  1722.               };
  1723.  
  1724.  
  1725.  
  1726. LLIDFISS algorithm 
  1727.  
  1728. With the LLIDFISS technique, the high-order bit of the F byte is set on if the 
  1729. ISS extension follows, and the third bit, from the left, of the I byte 
  1730. indicates not-last if set (1) or last if reset (0). The SS two bytes contains 
  1731. the segment sequence number. With the LLIDFISS technique all the segments 
  1732. contain the IDFISS bytes. 
  1733. LLIDFISS Segments Encoding 
  1734.  
  1735. The encoding logic is to always generate a segment prefix for the GDSSEGISS 
  1736. tagged types. The segment prefix consists of two bytes of the LENGTH field 
  1737. (LL), followed by three bytes of the IDENTIFIER and F fields (IDF), optionally 
  1738. followed by other three bytes of the ISS field (in this case the high-order bit 
  1739. of F is on). When a segment has been encoded, i.e. its length is equal to the 
  1740. specified maximum segment length, another segment prefix is generated, and 
  1741. reinitialized to begin the next segment. Finally, when GDSencgdsd processes the 
  1742. last piece of data, the "not-last" bit in the I field is turned off. 
  1743. LLIDFISS Segments Decoding 
  1744.  
  1745. The decode processing is essentially the inverse of the encoding logic with one 
  1746. exception. That is, the LLIDF can appear without the ISS following. That is, 
  1747. some User Application Program cannot use segmentation even though it is 
  1748. permitted. In this case GDSdecgdsd discards the LLIDF but saves LL-5 as length 
  1749. of the type. Except this particular case the process is equal to one of LL 
  1750. segmentation. 
  1751.  
  1752. Note:  It is illegal to have more than one level of segmentation at a time. 
  1753. That is, there can be no GDSSEGISS or GDSSEGLL tagged type that is subordinate 
  1754. to another GDSSEGISS or GDSSEGLL tagged type. Furthermore, a GDSSEGISS or 
  1755. GDSSEGLL tagged type cannot occur as a component of any other type with a 
  1756. specified length (types that are tagged with GDSLT, GDSTL, GDSFLEN, GDSLENGTH, 
  1757. GDSUNKNLT (with specified ID)). 
  1758.  
  1759. Note:  When a .primitive type is segmented (tagged with GDSSEGLL or GDSSEGISS), 
  1760. it is possible to postpone the passing of the content data at the second step 
  1761. of the encoding process (the step performed by the GDSencgdsd routine) and to 
  1762. pass the content data in piececes. This operation can be realized using a 
  1763. content user exit. Moreover, because the segmentation is useful also when the 
  1764. length of content data is not known before encoding it, it is possible, if 
  1765. content user exit is used, to set the content length field (loc) of the GDS 
  1766. structure to undefined length value (that is: -1). 
  1767.  
  1768.  
  1769. ΓòÉΓòÉΓòÉ 11.8. GDSEDLIB Routines ΓòÉΓòÉΓòÉ
  1770.  
  1771. The GDSEDLIB runtime library routines are described in the following sections. 
  1772. For each routine the following is specified: 
  1773.  
  1774. o The syntax of the function 
  1775.  
  1776. o The input and output parameters 
  1777.  
  1778. o The results of the function 
  1779.  
  1780. o A description of the function 
  1781.  
  1782.  
  1783. ΓòÉΓòÉΓòÉ 11.8.1. GDSaddmodule ΓòÉΓòÉΓòÉ
  1784.  
  1785. int GDSaddmodule(struct void * module_ptr,
  1786.                  void *environment)
  1787.  
  1788. module_ptr          Address of the module definition to be added to the list of 
  1789.                     active modules in the runtime environment. 
  1790.  
  1791. environment         Address of the runtime environment allocated for the UAP. 
  1792.  
  1793. Results 
  1794.  
  1795. ADDMODULE_OK        The module was successfully added. 
  1796.  
  1797. ADDMODULE_DUP_MODULE Another module with the same name already exists in the 
  1798.                     list of active modules in the runtime environment. 
  1799.  
  1800. Purpose 
  1801.  
  1802. The GDSaddmodule routine is used to add an ASN.1 module to the list of active 
  1803. modules in the runtime environment. It does not resolve external references. 
  1804.  
  1805.  
  1806. ΓòÉΓòÉΓòÉ 11.8.2. GDSallocateContentsArray ΓòÉΓòÉΓòÉ
  1807.  
  1808. int GDSallocateContentsArray(void *module_ptr,
  1809.                              struct contents_str **content_array_ptr);
  1810.  
  1811. module_ptr          Address of the module definition for which the 
  1812.                     contents-array is allocated. 
  1813.  
  1814. content_array_ptr   Address of the allocated contents-array. 
  1815.  
  1816. Results 
  1817.  
  1818. ALLOCATECONT_OK     The contents-array was successfully allocated. 
  1819.  
  1820. ALLOCATECONT_NO_ENOUGH_STORAGE Some problem occurred during storage allocation. 
  1821.  
  1822. ALLOCATECONT_INVALID_MODULE The module is invalid. 
  1823.  
  1824. Purpose 
  1825.  
  1826. The GDSallocateContentsArray routine is used to allocate a contents-array for 
  1827. the module. A contents-array is an array where each entry is a structure so 
  1828. declared: 
  1829.  
  1830.  
  1831.  struct contents_str {
  1832.    char               *content;         /* content data */
  1833.    int (*usrcontent)
  1834.     (char **, long *, enum lastflag *); /* content user exit */
  1835.    struct content_str *contlist;        /* list of contents, used for SET OF
  1836.                                          * and SEQUENCE OF types */
  1837.    enum stg            contstg;         /* storage class */
  1838.    long                len;             /* content length or number of
  1839.                                          * contents structure in contlist */
  1840.  };
  1841.  
  1842. The contents-array must be used if the encoding user exit is not used. The User 
  1843. Application Program can use the contents-array to pass the content data to the 
  1844. GDSencode routine and to do some encoding decisions. 
  1845.  
  1846. There is a one-to-one correspondence between each entry of the array and each 
  1847. metatoken in the Metatable. The User Application Program can index the 
  1848. contents-array entries using the symbol names defined in the .H file generated 
  1849. by the GDSTABLE translator. 
  1850.  
  1851. If the UAP wants to encode a constructed type that is an OPTIONAL or DEFAULT 
  1852. component of a constructed parent type, it has to set the content field with a 
  1853. not NULL value in order to inform the GDSencode routine that the specific 
  1854. component must be encoded. The same operation must be done if the OPTIONAL or 
  1855. DEFAULT component type is a NULL type. In both cases the value in the content 
  1856. field is only checked by GDSencode routine; it is not used at all. 
  1857.  
  1858. The contlist field must be filled in if the contents-array is used to pass the 
  1859. content data for SET OF or SEQUENCE OF elements. In this case the User 
  1860. Application Program has to: 
  1861.  
  1862. o Allocate a contlist-array (calling the GDSAllocateContListArray) 
  1863.  
  1864. o Fill the contlist-array with the content data. Each element of the 
  1865.   contlist-array corresponds to an occurrence of the SET OF or SEQUENCE OF 
  1866.   element 
  1867.  
  1868. o Fill the contlist field with the pointer to the contlist-array 
  1869.  
  1870. o Fill the len field with the number of occurrences of the SET OF or SEQUENCE 
  1871.   OF elements. 
  1872.  
  1873. For example, consider the following ASN.1 specification: 
  1874.  
  1875.  
  1876. MyModule DEFINITIONS
  1877.     IMPLICIT TAGS ::=
  1878. BEGIN
  1879.  
  1880.   Mytype ::= SEQUENCE{
  1881.               item1 PrintableString,
  1882.               item2 SEQUENCE OF PrintableString,
  1883.               item3 Item3 OPTIONAL
  1884.              }
  1885.  
  1886.   Item3 ::= SET{
  1887.              item4 PrintableString,
  1888.              item5 PrintableString
  1889.             }
  1890. END
  1891.  
  1892. The .H file generated by the GDSTABLE translator contains the following macro 
  1893. definitions: 
  1894.  
  1895.  
  1896. #define MyModule_Mytype_SEQUENCE_item1_CharacterString
  1897. #define MyModule_Mytype_SEQUENCE_item2_SEQUENCE_OF_
  1898. #define MyModule_Mytype_SEQUENCE_item2_SEQUENCE_OF_CharacterString
  1899. #define MyModule_Item3_SET_item4_CharacterString
  1900. #define MyModule_Item3_SET_item5_CharacterString
  1901.  
  1902. The User Application Program can use these symbol names to index the 
  1903. contents-array. If cont_array_ptr is the contents-array pointer (allocated with 
  1904. GDSAllocateContentsArray routine) and contlist_array_ptr is the contlist-array 
  1905. pointer (allocated with GDSAllocateContListArray routine): 
  1906.  
  1907.  
  1908. /* fill the content and the content length for item1 */
  1909. (cont_array_ptr[MyModule_Mytype_SEQUENCE_item1_CharacterString]).content
  1910.   = "item1";
  1911. (cont_array_ptr[MyModule_Mytype_SEQUENCE_item1_CharacterString]).len = 5;
  1912.  
  1913. /* we want to encode 2 occurrences of PrintableString of item2 */
  1914. (cont_array_ptr[MyModule_Mytype_SEQUENCE_item2_SEQUENCE_OF]).len = 2;
  1915.  
  1916. /* fill the contlist-array */
  1917. (contlist_array_ptr[0]).content = "occurrence1 of item2 element";
  1918. (contlist_array_ptr[0]).len = 27;
  1919. (contlist_array_ptr[1]).content = "occurrence2 of item2 element";
  1920. (contlist_array_ptr[1]).len = 27;
  1921.  
  1922. /* fill the contlist field for item2*/
  1923. (cont_array_ptr[MyModule_Mytype_SEQUENCE_item2_SEQUENCE_OF_CharacterString])
  1924.  .contlist = contlist_array_ptr;
  1925.  
  1926. /* inform the encoder that the OPTIONAL item3 field must be encoded */
  1927. (cont_array_ptr[MyModule_Item3_SET]).content = "dummy";
  1928.  
  1929. /* pass the content data of the Item3 elements */
  1930. (cont_array_ptr[MyModule_Item3_SET_item4_CharacterString]).content = "item4";
  1931. (cont_array_ptr[MyModule_Item3_SET_item4_CharacterString]).len = 5;
  1932. (cont_array_ptr[MyModule_Item3_SET_item5_CharacterString]).content = "item5";
  1933. (cont_array_ptr[MyModule_Item3_SET_item5_CharacterString]).len = 5;
  1934.  
  1935. Note:  This method of passing the content data to the GDSencode routine has the 
  1936. following limits: 
  1937.  
  1938. o You cannot encode OCTET STRING and character string types in constructed form 
  1939.   as BER allows. 
  1940.  
  1941. o You cannot encode nesting of SET OF and SEQUENCE OF (SET OF or SEQUENCE OF 
  1942.   types nested inside SET OF or SEQUENCE OF types). 
  1943.  
  1944. o If the same type is referred to more than one time, the contents-array can be 
  1945.   used only if each referring type is encoded separately, filling the contents 
  1946.   array before each invocation of the GDSencode routine. 
  1947.  
  1948. In the listed preceding example the encoding user exit can be used. 
  1949.  
  1950. Note:  When an ANY or ANY DEFINED BY type must be encoded, and the 
  1951. contents-array mechanism is used for passing the content data, the Metatable 
  1952. index of the actual type must be passed in the len field of the contents-array 
  1953. element corresponding to the ANY or ANY DEFINED BY type. 
  1954.  
  1955.  
  1956. ΓòÉΓòÉΓòÉ 11.8.3. GDSallocateContListArray ΓòÉΓòÉΓòÉ
  1957.  
  1958. int GDSallocateContListArray(long num_of_items,
  1959.                              struct content_str **cont_list_ptr);
  1960.  
  1961. num_of_items        Number of occurrences of the elements inside the SET OF or 
  1962.                     SEQUENCE OF type. 
  1963.  
  1964. cont_list_ptr       Address of the allocated contlist-array. 
  1965.  
  1966. Results 
  1967.  
  1968. ALLOCATECONTLIST_OK The array was successfully allocated. 
  1969.  
  1970. ALLOCATECONTLIST_NO_ENOUGH_STORAGE Some problem occurred during storage 
  1971.                     allocation. 
  1972.  
  1973. Purpose 
  1974.  
  1975. The GDSallocateContListsArray routine is used to allocate a contlist-array to 
  1976. pass the content data of occurrences of SET OF or SEQUENCE OF elements (click 
  1977. here for an example). A contlist-array is an array where each entry is a 
  1978. structure so declared: 
  1979.  
  1980.  struct content_str {
  1981.    char               *content;            /* content data */
  1982.    int (*usrcontent)
  1983.     (char **, long *, enum lastflag *);    /* content user exit */
  1984.    enum stg            contstg;            /* storage class */
  1985.    long                len;                /* content length */
  1986.  };
  1987.  
  1988.  
  1989. ΓòÉΓòÉΓòÉ 11.8.4. GDSallocateGdsTreeArray ΓòÉΓòÉΓòÉ
  1990.  
  1991. int GDSallocateGdsTreeArray(void *module_ptr,
  1992.                             struct gds ***gds_ptr);
  1993.  
  1994. module_ptr          Address of the module definition for which the array of 
  1995.                     pointers to GDS structures is allocated. 
  1996.  
  1997. gds_ptr             The pointer to the array of GDS structures pointers. 
  1998.  
  1999. Results 
  2000.  
  2001. ALLOCATEGDSTREE_OK  The array was successfully allocated. 
  2002.  
  2003. ALLOCATEGDSTREE_NO_ENOUGH_STORAGE Some problem occurred during storage 
  2004.                     allocation. 
  2005.  
  2006. ALLOCATEGDSTREE_INVALID_MODULE The module is invalid. 
  2007.  
  2008. Purpose 
  2009.  
  2010. The GDSallocateGdsTreeArray routine is used to allocate an array of pointers to 
  2011. the GDS structures inside the tree. This array must be used if the decoding 
  2012. user exit is not used. It is filled in by the GDSdecode routine (in case of 
  2013. BER) or by GDSdecgdsd routine (in case of GDSD) with pointers to the GDS 
  2014. structures inside the decoded GDS tree. 
  2015.  
  2016. There is a one-to-one correspondence between each entry of the array and each 
  2017. metatoken in the Metatable. The User Application Program can index the 
  2018. contents-array entries using the symbol names defined in the .H file generated 
  2019. by the GDSTABLE translator. In this way the User Application Program can 
  2020. address directly the GDS structures of the decoded types. 
  2021.  
  2022. Note:  This method of accessing the GDS structures and its data inside the tree 
  2023. has the following limits: 
  2024.  
  2025. o It can be used if each type is referred to only one time in the ASN.1 
  2026.   specification. In fact, if it is referred to more than one time, the 
  2027.   corresponding entry in the array of pointers to GDS structure will address 
  2028.   the GDS structure corresponding to the last reference. 
  2029.  
  2030. o If the ASN.1 specification contains SEQUENCE OF or SET OF types, the entries 
  2031.   of the array, corresponding to the elements of these types, will point to the 
  2032.   last occurrences. 
  2033.  
  2034.  
  2035. ΓòÉΓòÉΓòÉ 11.8.5. GDSbasetype ΓòÉΓòÉΓòÉ
  2036.  
  2037. int GDSbasetype(void **module_ptr,
  2038.                 unsigned short *table_index,
  2039.                 enum basetypes *base_type);
  2040.  
  2041. module_ptr          Address of a pointer to a module structure.  As an input 
  2042.                     parameter, this points to the module containing the type to 
  2043.                     be resolved. As an output pointer, it is updated to the 
  2044.                     module containing the base type. 
  2045.  
  2046. table_index         Address of a Metatable index. As an input parameter, it 
  2047.                     refers to the type to be resolved. As an output parameter, 
  2048.                     it is updated to refer to the base type specification in 
  2049.                     the Metatable. 
  2050.  
  2051. base_type           The base type of the given type. It is set by this routine. 
  2052.  
  2053. Results 
  2054.  
  2055. BASETYPE_OK         The base type was successfully found. 
  2056.  
  2057. BASETYPE_WRONG_TOKEN In searching for the base type, a metatoken was 
  2058.                     encountered that should not have been there, indicating a 
  2059.                     structural problem with the Metatable. 
  2060.  
  2061. BASETYPE_UNRESOLVED_EXTERN_REF In searching for the base type, an unresolved 
  2062.                     external reference was encountered. 
  2063.  
  2064. Purpose 
  2065.  
  2066. The GDSbasetype routine determines the base type of a given type according to 
  2067. these rules: 
  2068.  
  2069. o base(tagged type) = base(type being tagged) 
  2070.  
  2071. o base(typereference) = base(referenced type) 
  2072.  
  2073. o base(selection type) = base(choice alternative selected) 
  2074.  
  2075. o base(something else) = something else 
  2076.  
  2077.  
  2078. ΓòÉΓòÉΓòÉ 11.8.6. GDSdecber ΓòÉΓòÉΓòÉ
  2079.  
  2080. int GDSdecber(struct gds **gds_tree_ptr,
  2081.               long buflen,
  2082.               long octetsnum,
  2083.               char **alldata,
  2084.               void *environment,
  2085.               void *usrparms);
  2086.  
  2087. gds_tree_ptr        Address of a pointer to the GDS structure tree created by 
  2088.                     decoding the data stream in the buffer; the pointer is set 
  2089.                     by this routine. 
  2090.  
  2091. buflen              The length of the input buffer; it must be longer than 150 
  2092.                     bytes. 
  2093.  
  2094. octetsnum           The number of the decoded octets; the parameter is set by 
  2095.                     this routine. 
  2096.  
  2097. alldata             As input parameter it contains a flag indicating if the 
  2098.                     whole data stream will be loaded in the buffer, significant 
  2099.                     only if the User Application Program has to print the 
  2100.                     generated GDS structure tree. 0 means that the data stream 
  2101.                     will be passed by the reading user exit in pieces; 1 means 
  2102.                     that the whole data stream will be passed by the reading 
  2103.                     user exit in one time. As output parameter, if the input 
  2104.                     value is 1, it contains the pointer to the input buffer 
  2105.                     containing the whole data stream, if the input value is 0, 
  2106.                     it contains NULL. 
  2107.  
  2108. environment         Address of the runtime environment allocated for the UAP. 
  2109.  
  2110. usrparms            Address of a user-defined parameter which is passed to the 
  2111.                     reading user exit routine during the decoding process. 
  2112.  
  2113. Results 
  2114.  
  2115. DECBER_OK           The decoding process was successful. 
  2116.  
  2117. DECBER_SYNTAX_ERROR A syntax error was encountered in the buffer. 
  2118.  
  2119. DECBER_NO_ENOUGH_STORAGE Some problem occurred during storage allocation. 
  2120.  
  2121. DECBER_BUFFER_EMPTY The input buffer is empty. Probably the data stream is not 
  2122.                     complete. 
  2123.  
  2124. DECBER_BUFFER_TOO_SMALL The input buffer is too small. It must be at least 150 
  2125.                     bytes long. 
  2126.  
  2127. Purpose 
  2128.  
  2129. The GDSdecber routine allocates an input buffer with the length specified by 
  2130. the buflen Then it calls the reading user exit routine set by the GDSsetUsrRead 
  2131. routine, passing to it the pointer to the buffer and the length. The reading 
  2132. user exit routine can load in the buffer the whole data stream (in this case 
  2133. the User Application Program should set the alldata parameter on) or a part of 
  2134. it. Then the GDSdecber routine decodes the BER-formatted data contained in the 
  2135. buffer, calling the reading user exit each time all the data in the buffer has 
  2136. been decoded, but the end of the data stream is not reached. The result is a 
  2137. GDS structure tree, a pointer to which is set in gds_tree_ptr. This GDS 
  2138. structure tree cannot be read by the User Application Program, because, even if 
  2139. it contains the whole decoded data stream and reflects its structure, the names 
  2140. of the ASN.1 types and their base types are still missing. The GDSdecode 
  2141. routine must be called in order to match the GDS structure tree with the ASN.1 
  2142. specifications defined in the Metatable. 
  2143.  
  2144. The usrparms is a parameter passed to the reading user exit. It is a 
  2145. user-defined parameter whose contents are not examined by the GDSdecber 
  2146. routine. The User Application Program can use this to pass local parameters to 
  2147. the reading user exit routine. This is useful when the the UAP and the user 
  2148. exit routine must share data. The alternative is to make the shared data 
  2149. global, usually an undesirable programming practice. 
  2150.  
  2151. Note:  If the reading user exit routine loads the whole data stream in the 
  2152. input buffer, the GDSdecber routine does not free the storage allocated for the 
  2153. input buffer because it could be used by the GDSprintgds routine. It is 
  2154. responsibility of the UAP to free this storage. 
  2155.  
  2156.  
  2157. ΓòÉΓòÉΓòÉ 11.8.7. GDSdecgdsd ΓòÉΓòÉΓòÉ
  2158.  
  2159. int GDSdecgdsd(struct gds **gds_tree_ptr,
  2160.                long buflen,
  2161.                long bytesnum,
  2162.                void *module_ptr,
  2163.                unsigned sort *metaindex,
  2164.                struct gds **gds_ptr,
  2165.                struct errdata *err_data
  2166.                void *environment,
  2167.                void *decusrparms,
  2168.                void *usrparms);
  2169.  
  2170. gds_tree_ptr        Address of a pointer to the GDS tree created by decoding 
  2171.                     the data stream in the buffer; the pointer is set by this 
  2172.                     routine. 
  2173.  
  2174. buflen              The length of the input buffer; it must be longer than 300 
  2175.                     bytes. 
  2176.  
  2177. bytesnum            The number of the decoded bytes; the parameter is set by 
  2178.                     this routine. 
  2179.  
  2180. module_ptr          Address of the definition structure of the module 
  2181.                     containing the ASN.1 type to be decoded. 
  2182.  
  2183. metaindex           Metatable index for the ASN.1 type to be decoded. IF an 
  2184.                     error occurs, it contains the index of the type where the 
  2185.                     error occurred. 
  2186.  
  2187. gds_ptr             Pointer to the array of pointers to the GDS structures 
  2188.                     inside the tree. If decoding user exit is used it must be 
  2189.                     NULL. 
  2190.  
  2191. err_data            If an error occurred this parameter contains the following 
  2192.                     information: 
  2193.  
  2194.    o A pointer to the bytes of the item in error 
  2195.  
  2196.    o The length (max 4) of the item in error 
  2197.  
  2198. environment         Address of the runtime environment allocated for the UAP. 
  2199.  
  2200. decusrparms         Address of a user-defined parameter that is passed to the 
  2201.                     decoding user exit routine during the decoding process. 
  2202.  
  2203. usrparms            Address of a user-defined parameter that is passed to the 
  2204.                     reading user exit routine during the decoding process. 
  2205.  
  2206. Results 
  2207.  
  2208. DECGDSD_NO_MATCH    The decoded type does not match the decoded data. 
  2209.  
  2210. DECGDSD_MATCH       The decoded type matches the decoded data. 
  2211.  
  2212. DECGDSD_SYNTAX_ERROR A syntax error was encountered in the data. 
  2213.  
  2214. DECGDSD_INTERNAL_ERROR An internal programming error occurred. Probably 
  2215.                     something is wrong in the Metatable. 
  2216.  
  2217. DECGDSD_UNRESOLVED_REFERENCE An unresolved external reference was encountered. 
  2218.  
  2219. DECGDSD_BUFFER_EMPTY Other data must be decoded but the reading user exit does 
  2220.                     not load other data in the buffer. 
  2221.  
  2222. DECGDSD_INVALID_ID  The decoded IDENTIFIER value does not match the correct 
  2223.                     value. 
  2224.  
  2225. DECGDSD_INVALID_UNIQUE_ITEM The decoded unique item value does not match the 
  2226.                     correct value. 
  2227.  
  2228. DECGDSD_INVALID_LENGTH The length of decoded data does not match the correct 
  2229.                     value. 
  2230.  
  2231. DECGDSD_NO_ENOUGH_STORAGE Some problem occurred during storage allocation. 
  2232.  
  2233. DECGDSD_INVALID_SEG_ID_PREFIX The decoded LL segment prefix does not match the 
  2234.                     correct value. 
  2235.  
  2236. DECGDSD_INVALID_SEG_SEQ_NUM The decoded segment sequence number is not correct. 
  2237.  
  2238. DECGDSD_INVALID_SEG_IDF_PREFIX The decoded LLIDFISS segment prefix does not 
  2239.                     match the correct value. 
  2240.  
  2241. DECGDSD_LAST_SEG_BEFORE_EOD Content data are segmentated and the last segment 
  2242.                     indicator indicates that this is the last segment, but not 
  2243.                     all the content data have been decoded. 
  2244.  
  2245. DECGDSD_MISSING_MANDATORY_ELEMENT A mandatory element of SET or SEQUENCE type 
  2246.                     is missing. 
  2247.  
  2248. DECGDSD_BUFFER_TOO_SMALL The input buffer is too small. It must be at least 300 
  2249.                     bytes long. 
  2250.  
  2251. DECGDSD_USR_DEC_FUN_FAILED The decoding user exit failed. 
  2252.  
  2253. DECGDSD_SUBTYPE_CONSTRNTS_NO_MATCH Decoded content data does not match a 
  2254.                     subtype constraint 
  2255.  
  2256. Purpose 
  2257.  
  2258. The GDSdecgdsd routine allocates an input buffer with the length specified by 
  2259. the buflen Then it calls the reading user exit routine set by the GDSsetUsrRead 
  2260. routine, passing to it the pointer to the buffer and the length. This routine 
  2261. loads in the buffer the whole data stream or a part of it. Then the GDSdecgdsd 
  2262. routine decodes the IBM GDSD-formatted data contained in the buffer, calling 
  2263. the reading user exit each time all the data in the buffer is decoded, but the 
  2264. end of the data stream is not reached. 
  2265.  
  2266. Each time a type has been decoded, the corresponding GDS structure is added to 
  2267. the GDS structure tree and, if the array of GDS structures pointers is used, 
  2268. the entry corresponding to the type is filled with the pointer to the GDS 
  2269. structure. 
  2270.  
  2271. When a primitive type is decoded, and if the decoding user exit is used, the 
  2272. decoding user exit is called passing to it: 
  2273.  
  2274. o The Metatable index of the decoded type 
  2275.  
  2276. o The pointer to the GDS structure corresponding to the type 
  2277.  
  2278. o The content data 
  2279.  
  2280. o The length of content data 
  2281.  
  2282. The decoding user exit is called also when a type definition is decoded. That 
  2283. permits the UAP to make various decoding decisions (for example, changing the 
  2284. current decoding user exit) when a new occurrence of the specific type is 
  2285. decoded. After the specific type has been decoded, the current decoding user 
  2286. exit is restored. 
  2287.  
  2288. At the end of the decoding process, the pointer to the root of the GDS 
  2289. structure tree is returned in the gds_tree_ptr parameter. 
  2290.  
  2291. If segmentation is used, the GDSdecgdsd routine discards the segment header 
  2292. bytes (LLID or LLIDFSS) without allocating any GDS structure for the segments 
  2293. (for the segmentation algorithms click here). 
  2294.  
  2295. The decusrparms is a parameter passed to the decoding user exit. It is a 
  2296. user-defined parameter whose contents are not examined by the GDSdecgdsd 
  2297. routine. User Application Program can use this to pass local parameters to the 
  2298. decoding user exit routine. This is useful when the the UAP and the user exit 
  2299. routine must share data. The alternative is to make the shared data global, 
  2300. usually an undesirable programming practice. 
  2301.  
  2302. The decusrparms and usrparms parameters are passed to the decoding user exit. 
  2303. It is a user defined parameter whose contents are not examined by the 
  2304. GDSdecgdsd routine. The User Application Program can use this routine to pass 
  2305. local parameters to the decoding user exit routine. This is useful when the the 
  2306. UAP and the user exit routine must share data. The alternative is to make the 
  2307. shared data global, usually an undesirable programming practice. 
  2308.  
  2309.  
  2310. ΓòÉΓòÉΓòÉ 11.8.8. GDSdecode ΓòÉΓòÉΓòÉ
  2311.  
  2312. int GDSdecode(void *module_ptr,
  2313.               unsigned short *metaindex,
  2314.               struct gds **gds_tree_ptr,
  2315.               struct gds **gds_ptr,
  2316.               void *environment,
  2317.               void *usrparms);
  2318.  
  2319. module_ptr          Address of the definition structure of the module that 
  2320.                     contains the ASN.1 type to be decoded. 
  2321.  
  2322. metaindex           Metatable index for the ASN.1 type to be decoded. If an 
  2323.                     error occurs, it contains the index of the type where the 
  2324.                     error occurred. 
  2325.  
  2326. gds_tree_ptr        Address of the root of the GDS structure tree that must be 
  2327.                     matched with the ASN.1 type. If an error occurs, this 
  2328.                     parameter contains the pointer to the GDS structure where 
  2329.                     the error has been found. 
  2330.  
  2331. gds_ptr             Pointer to the array of pointers to the GDS structures 
  2332.                     inside the tree. If the decoding user exit is used, it must 
  2333.                     be NULL. 
  2334.  
  2335. environment         Address of the runtime environment allocated for the UAP. 
  2336.  
  2337. usrparms            Address of a user-defined parameter which is passed to the 
  2338.                     decoding user exit routine during the decoding process. 
  2339.  
  2340. Results 
  2341.  
  2342. DECODE_MATCH        The GDS structure tree matches the ASN.1 type. 
  2343.  
  2344. DECODE_NO_MATCH     The GDS structure tree does not match the ASN.1 type. 
  2345.  
  2346. DECODE_SYNTAX_ERROR The GDS structure tree does not match the ASN.1 type and 
  2347.                     furthermore, some syntax error has been detected, such as a 
  2348.                     constructed INTEGER value. 
  2349.  
  2350. DECODE_INTERNAL_ERROR An internal programming error occurred. Probably 
  2351.                     something is wrong in the Metatable. 
  2352.  
  2353. DECODE_UNRESOLVED_REFERENCE An unresolved external reference was encountered. 
  2354.  
  2355. DECODE_USR_DEC_FUN_FAILED The decoding user exit failed. 
  2356.  
  2357. DECODE_SUBTYPE_CONSTRNTS_NO_MATCH Decoded content data do not match a subtype 
  2358.                     constraint 
  2359.  
  2360. Purpose 
  2361.  
  2362. The GDSdecode routine attempts to match an ASN.1 type with a value. The value 
  2363. is represented by a GDS structure tree, and the type is represented by a 
  2364. reference into the Metatable. The GDS structure tree is updated to indicate the 
  2365. features of the matched type, e.g. the name and base type. 
  2366.  
  2367. Each time a type has been matched, the corresponding GDS structure is updated 
  2368. and, if the array of GDS structures pointers is used, the entry corresponding 
  2369. to the type is filled with the pointer to the GDS structure. 
  2370.  
  2371. When a primitive type is decoded, and if the decoding user exit is used, the 
  2372. decoding user exit is called passing to it: 
  2373.  
  2374. o The Metatable index of the decoded type 
  2375.  
  2376. o The pointer to the GDS structure corresponding to the type 
  2377.  
  2378. o The content data 
  2379.  
  2380. o The length of content data 
  2381.  
  2382. Note:  The pointer to the content data, passed to the decoding user exit, is 
  2383. NULL if the type is a PrintableString or an OCTET STRING and it is encoded in 
  2384. constructed form. 
  2385.  
  2386. The decoding user exit is called also when: 
  2387.  
  2388. o A type definition is decoded. That permits the UAP to make various decoding 
  2389.   decisions (for example, changing the current decoding user exit) when a new 
  2390.   occurrence of the specific type is decoded. After the specific type has been 
  2391.   decoded, the current decoding user exit is restored. 
  2392.  
  2393. o An ANY (or ANY DEFINED TYPE) is decoded. That permits the UAP to call 
  2394.   recursively the GDSdecode routine on the GDS structure subtree pointed by the 
  2395.   passed GDS structure pointer, in order to match this subtree with the actual 
  2396.   encoded type. 
  2397.  
  2398. The GDSdecode routine must be called after the GDSdecber routine, in order to 
  2399. fill the GDS structure tree with all the missing information. 
  2400.  
  2401. In the case of GDSD, the GDSdecgdsd 
  2402.  
  2403. The decusrparms is a parameter passed to the decoding user exit. It is a 
  2404. user-defined parameter whose contents are not examined by the GDSdecode 
  2405. routine. The User Application Program can use this routine to pass local 
  2406. parameters to the decoding user exit routine. This is useful when the the UAP 
  2407. and the user exit routine must share data. The alternative is to make the 
  2408. shared data global, usually an undesirable programming practice. 
  2409.  
  2410.  
  2411. ΓòÉΓòÉΓòÉ 11.8.9. GDSencber ΓòÉΓòÉΓòÉ
  2412.  
  2413. int GDSencber(struct gds **gds_tree_ptr,
  2414.               unsigned long buflen,
  2415.               unsigned char **out_buffer,
  2416.               unsigned long *bytesnum,
  2417.               int indef_length,
  2418.               void *environment,
  2419.               void *usrparms);
  2420.  
  2421. gds_tree_ptr        As input parameter it contains the pointer to the root of 
  2422.                     the GDS structure tree. If an error occurs, it is used as 
  2423.                     an output parameter to contain the pointer to the GDS 
  2424.                     structure where the error occurred. 
  2425.  
  2426. buflen              The length of the output buffer. It must be longer than 150 
  2427.                     bytes. 
  2428.  
  2429. out_buffer          If the output buffer can contain the whole encoded data 
  2430.                     stream, this parameter contains the pointer to the buffer. 
  2431.                     Otherwise, if the output buffer length is lower than the 
  2432.                     encoded data stream length, this parameter contains NULL. 
  2433.  
  2434. bytesnum            The number of the encoded bytes; the parameter is set by 
  2435.                     this routine. 
  2436.  
  2437. indef_length        A flag indicating the length form: 0 for definite length 
  2438.                     form, 1 for indefinite length form. 
  2439.  
  2440. environment         Address of the runtime environment allocated for the UAP. 
  2441.  
  2442. usrparms            Address of a user-defined parameter that is passed to the 
  2443.                     writing user exit routine during the encoding process. 
  2444.  
  2445. Results 
  2446.  
  2447. ENCBER_OK           The encoding process was successful. 
  2448.  
  2449. ENCBER_NO_ENOUGH_STORAGE Some problem occurred during storage allocation. 
  2450.  
  2451. ENCBER_GDSUSRWRT_FAILED The writing user exit failed. 
  2452.  
  2453. ENCBER_USER_EXIT_FAILED The content user exit failed 
  2454.  
  2455. ENCBER_PRIM_TYPE_CONTENT_MISSING No content data or incomplete content data has 
  2456.                     been passed for the primitive type. 
  2457.  
  2458. ENCBER_INTERNAL_ERROR An internal programming error occurred. 
  2459.  
  2460. ENCBER_UNDEFLEN_NOT_PERMITTED Indefinite length used for primitive type. 
  2461.  
  2462. ENCBER_BUFFER_TOO_SMALL The output buffer is too small. It must be at least 150 
  2463.                     bytes long. 
  2464.  
  2465. Purpose 
  2466.  
  2467. The GDSencber routine allocates an output buffer with the length specified by 
  2468. the buflen Then it starts to encode in the output buffer the BER-encoded data 
  2469. stream from the GDS structure tree. When the output buffer is full, it calls 
  2470. the writing user exit routine set by GDSsetUsrWrite routine, passing to it the 
  2471. pointer to the buffer and the length. The writing user exit routine has to 
  2472. flush the buffer containing the BER-encoded data. It is called by the GDSencber 
  2473. routine each time the buffer is full, but not all the GDS structure tree has 
  2474. been encoded. If the passing of the content data has been postponed, for 
  2475. example, if a GDS structure with the usrcontent field not NULL is found (for 
  2476. details on the postponing of the content data passing during encoding click 
  2477. here), the GDSencber routine calls the content user exit pointed by the 
  2478. specific field of the GDS structure. This content user exit has to return a 
  2479. pointer to the data buffer, the length of the buffer and an indication if the 
  2480. data are the last or not. The GDSencber makes a call to this user exit until 
  2481. the last indicator is on, or the length of the whole content data (passed by 
  2482. the content user exit) is equal to the specified content length (field loc of 
  2483. the GDS structure). An error is produced if the last indicator is on before the 
  2484. content data has been passed. 
  2485.  
  2486. The usrparms is a parameter passed to the writing user exit. It is a 
  2487. user-defined parameter whose contents are not examined by the GDSencber 
  2488. routine. User Application Program can use this to pass local parameters to the 
  2489. writing user exit routine. This is useful when the the UAP and the user exit 
  2490. routine must share data. The alternative is to make the shared data global, 
  2491. usually an undesirable programming practice. 
  2492.  
  2493. Note:  If the whole encoded data stream fits in the output buffer, the 
  2494. GDSencber routine fills the sop fields of the encoded GDS structures with 
  2495. pointers inside the buffer. 
  2496.  
  2497. Note:  If the output buffer can contain the whole encoded data stream, the 
  2498. GDSencber routine does not free the storage allocated for the buffer because it 
  2499. could be used by the GDSprintgds routine. It is responsibility of the UAP to 
  2500. free this storage. 
  2501.  
  2502.  
  2503. ΓòÉΓòÉΓòÉ 11.8.10. GDSencgdsd ΓòÉΓòÉΓòÉ
  2504.  
  2505. int GDSencgdsd(struct gds **gds_tree_ptr,
  2506.                unsigned long buflen,
  2507.                unsigned long *bytesnum,
  2508.                useLLIDFISS use_segmentation,
  2509.                void *environment,
  2510.                void *usrparms);
  2511.  
  2512. gds_tree_ptr        As an input parameter it contains the pointer to the root 
  2513.                     of the GDS structure tree. If an error occurs, it is used 
  2514.                     as output parameter to contain the pointer to the GDS 
  2515.                     structure where the error occurred. 
  2516.  
  2517. buflen              The length of the output buffer. 
  2518.  
  2519. bytesnum            The number of the encoded bytes; the parameter is set by 
  2520.                     this routine. 
  2521.  
  2522. use_segmentation    A flag indicating if the User Application Program wants to 
  2523.                     use the LLIDFISS segmentation or not (use or nouse). 
  2524.  
  2525. environment         Address of the runtime environment allocated for the UAP. 
  2526.  
  2527. usrparms            Address of a user-defined parameter which is passed to the 
  2528.                     writing user exit routine during the encoding process. 
  2529.  
  2530. Results 
  2531.  
  2532. ENCGDSD_OK          The encoding process was successful. 
  2533.  
  2534. ENCGDSD_INTERNAL_ERROR An internal programming error occurred. Probably 
  2535.                     something is wrong in the GDS structure tree. 
  2536.  
  2537. ENCGDSD_BUFFER_TOO_SMALL The output buffer is too small, it must be at least 9 
  2538.                     bytes long. 
  2539.  
  2540. ENCGDSD_GDSUSRWRT_FAILED The writing user exit failed. 
  2541.  
  2542. ENCGDSD_INVALID_CLASS An invalid GDSD tag class was found in a GDS structure. 
  2543.  
  2544. ENCGDSD_INVALID_FIXED_ITEM_LENGTH An invalid length value was found in the GDS 
  2545.                     structure corresponding to a GDSFLEN tagged type. 
  2546.  
  2547. ENCGDSD_NO_ENOUGH_STORAGE Some problem occurred during storage allocation. 
  2548.  
  2549. ENCGDSD_INVALID_LENGTH An invalid length value was found in the GDS structure 
  2550.                     corresponding to a GDSLENGTH tagged type. 
  2551.  
  2552. ENCGDSD_INVALID_LL_LENGTH An invalid length value of the LENGTH field was found 
  2553.                     in the GDS structure corresponding to a GDSLENGTH type. 
  2554.  
  2555. ENCGDSD_UNDEFLEN_NOT_PERMITTED A GDS structure with undefined length was found, 
  2556.                     but segmentation is not used. 
  2557.  
  2558. ENCGDSD_SEGMENT_TOO_SHORT LLIDFISS segmentation is used with a too short 
  2559.                     segment. 
  2560.  
  2561. ENCGDSD_PRIM_TYPE_CONTENT_MISSING No content data or incomplete content data 
  2562.                     has been passed for the primitive type. 
  2563.  
  2564. ENCGDSD_USER_EXIT_FAILED The content user exit failed 
  2565.  
  2566. ENCGDSD_NESTED_SEGMENT Nesting of segmentated types has been found. 
  2567.  
  2568. Purpose 
  2569.  
  2570. The GDSencgdsd routine allocates an output buffer with the length specified by 
  2571. the buflen Then the GDSencgdsd routine starts to encode in the output buffer 
  2572. the GDSD-encoded data stream from the GDS structure tree. When the output 
  2573. buffer is full, it calls the writing user exit routine set by GDSsetUsrWrite 
  2574. routine, passing to it the pointer to the buffer and the length. This routine 
  2575. has to flush the buffer containing the GDSD-encoded data. It is called by the 
  2576. GDSencgdsd routine each time the buffer is full, but not all the GDS structure 
  2577. tree has been encoded. If the passing of the content data has been postponed, 
  2578. for example, if a GDS structure with the usrcontent field not NULL is found 
  2579. (for details on the postponing of the content data passing during encoding 
  2580. click here), the GDSencgdsd routine calls the content user exit pointed by the 
  2581. specific field of the GDS structure. This content user exit has to return a 
  2582. pointer to the data buffer, the length of the buffer and an indication if the 
  2583. data are the last or not. The GDSencgdsd makes a call to this user exit until 
  2584. the last indicator is on, or, if the content data length is not undefined, the 
  2585. length of the whole content data (passed by the content user exit) is equal to 
  2586. the specified content length (field loc of the GDS structure). An error is 
  2587. produced if the last indicator is on before the whole content data has been 
  2588. passed. 
  2589.  
  2590. The use_segmentation parameter permits the UAP to chooce to use the LLIDFISS 
  2591. segmentation or not. In fact the UAP could not use the LLIDFISS segmentation, 
  2592. even if it is allowed by the ASN.1 specification. 
  2593.  
  2594. The usrparms is a parameter passed to the writing user exit. It is a 
  2595. user-defined parameter whose contents are not examined by the GDSencgdsd 
  2596. routine. User Application Program can use this to pass local parameters to the 
  2597. writing user exit routine. This is useful when the the UAP and the user exit 
  2598. routine must share data. The alternative is to make the shared data global, 
  2599. usually an undesirable programming practice. 
  2600.  
  2601.  
  2602. ΓòÉΓòÉΓòÉ 11.8.11. GDSencode ΓòÉΓòÉΓòÉ
  2603.  
  2604. int GDSencode(void *module_ptr,
  2605.               unsigned short *metaindex,
  2606.               struct contents_str *cont_array_ptr,
  2607.               struct gds **gds_tree_ptr,
  2608.               enum TypOfEnc tenc,
  2609.               void *environment,
  2610.               void *usrparms);
  2611.  
  2612. module_ptr          Address of the definition structure of the module that 
  2613.                     containing the ASN.1 type to be encoded. 
  2614.  
  2615. metaindex           Metatable index of ASN.1 type definition to be encoded. If 
  2616.                     an error occurs, it contains the index of the type where 
  2617.                     the error occurred. 
  2618.  
  2619. cont_array_ptr      Pointer to the contents-array. It must be NULL if the user 
  2620.                     exit is used. 
  2621.  
  2622. gds_tree_ptr        Address of a pointer to the encoded GDS structure tree 
  2623.                     resulting from the encoding process.  This pointer is set 
  2624.                     by this routine. If an error occurs, the pointer points to 
  2625.                     an incomplete GDS structure tree. 
  2626.  
  2627. tenc                Information about the type of encoding the User Application 
  2628.                     Program will use on the generated GDS structure tree. It 
  2629.                     can be ber, gdsd, or none. 
  2630.  
  2631. environment         Address of the runtime environment allocated for the UAP. 
  2632.  
  2633. usrparms            Address of a user-defined parameter which is passed to the 
  2634.                     encoding user exit routine during the encoding process. 
  2635.  
  2636. Results 
  2637.  
  2638. ENCODE_MATCH        The encode operation concluded successfully. 
  2639.  
  2640. ENCODE_NO_MATCH     The encoding operation terminated unsuccessfully due to a 
  2641.                     mismatch in the syntax of the value to be encoded and its 
  2642.                     related type. 
  2643.  
  2644. ENCODE_SYNTAX_ERROR The encoding operation terminated unsuccessfully due to a 
  2645.                     syntax error. 
  2646.  
  2647. ENCODE_INTERNAL_ERROR An internal programming error occurred. Something is 
  2648.                     wrong in the Metatable or the encoding user exit supplies 
  2649.                     an empty subtree. 
  2650.  
  2651. ENCODE_UNRESOLVED_REFERENCE An unresolved external reference was encountered. 
  2652.  
  2653. ENCODE_INVALID_GDSD_FIXED_LENGTH A GDS structure corresponding to a GDSFLEN 
  2654.                     tagged type has an invalid length value. 
  2655.  
  2656. ENCODE_INVALID_ENCODING_TYPE The encoding type specified is not valid (it can 
  2657.                     be: ber, gdsd or none). 
  2658.  
  2659. ENCODE_UNDEFLENGTH_NOT_PERMITTED Undefined length has been passed for types 
  2660.                     tagged with tag class requiring defined length. 
  2661.  
  2662. ENCODE_INVALID_LL_LENGTH A GDSLENGTH tagged type has an invalid length of the 
  2663.                     LENGTH field. 
  2664.  
  2665. ENCODE_INVALID_LENGTH A GDS structure has a length value that cannot be encoded 
  2666.                     in the allowed LENGTH field. 
  2667.  
  2668. ENCODE_INVALID_UNIQUE_ITEM_LENGTH A GDS structure corresponding to a GDSUNIQUE 
  2669.                     tagged type has an invalid length. 
  2670.  
  2671. ENCODE_INVALID_SEGMENT_LENGTH A GDS structure corresponding to a segmented type 
  2672.                     has an invalid segment length. 
  2673.  
  2674. ENCODE_INVALID_NUMBER_OF_SSOF_ITEMS The number of occurrences of the SET OF or 
  2675.                     SEQUENCE OF element, specified in the corresponding entry 
  2676.                     of the contents-array len field, is not valid. 
  2677.  
  2678. ENCODE_DEFAULT_FUNCTION The default encoding user exit has been invoked. 
  2679.  
  2680. ENCODE_MISSING_MANDATORY_ELEMENT A mandatory element of SET or SEQUENCE type 
  2681.                     has been not encoded. 
  2682.  
  2683. ENCODE_NO_ENOUGH_STORAGE A problem occurred during storage allocation. 
  2684.  
  2685. ENCODE_USER_EXIT_FAILED A problem occurred in the encoding user exit or it did 
  2686.                     not returned the correct parameters. 
  2687.  
  2688. Purpose 
  2689.  
  2690. The GDSencode routine is used to create a GDS structure tree that represents a 
  2691. value of the type referenced by the module_ptr and metaindex parameters. The 
  2692. encoding process can call the encoding user exit routine to supply individual 
  2693. values and to make various encoding decisions (such as passing an entire GDS 
  2694. structure subtree). Another mechanism for passing the content data is the use 
  2695. of the contents-array. The user exit mechanism could be more time consuming 
  2696. than the contents-array mechanism but it is more flexible and it does not have 
  2697. the limitation of former. 
  2698.  
  2699. The usrparms is one of the parameters passed to the encoding user exit.  It is 
  2700. a user-defined parameter whose contents are not examined by the GDSencode 
  2701. routine. User Application Program can use this to pass local parameters to the 
  2702. encoding user exit routine. This is useful when the the UAP and the user exit 
  2703. routine must share data. The alternative is to make the shared data global, 
  2704. usually an undesirable programming practice. 
  2705.  
  2706. Note that the encode function does not create the BER or GDSD encoded data. The 
  2707. GDS structure tree generated by the GDSencode routine contains the information 
  2708. needed to encode the data, but the actual encoding is a secondary step, 
  2709. performed by GDSencber or GDSencgdsd routines. 
  2710.  
  2711. The UAP can postpone the passing of the content data of the type it is encoding 
  2712. at the next encoding step (the GDSencgdsd or GDSencber call). To do this, the 
  2713. UAP has to set the usrcontent field of the GDS structure with a pointer to an 
  2714. user-defined content routine. This routine will be called by the GDSencgdsd or 
  2715. GDSencber routines when they encode the GDS structure. This mechanism of 
  2716. postponing the passing of the content data can be useful in case of 
  2717. segmentation or in case the content data is very large and it is not possible 
  2718. to load it in storage. (for the segmentation algorithms click here). 
  2719.  
  2720. Note:  If GDSD encoding is used, the content user exit is used, and the content 
  2721. is segmented, the length of content field (loc) of the GDS structure can be set 
  2722. to undefined length value (this value is -1). If the length of content is set 
  2723. with a defined value and the content user exit is used, both the GDSencber and 
  2724. GDSencgdsd routines encode a number of content bytes equal to the specified 
  2725. length, despite the last indicator value returned by the content user exit. 
  2726.  
  2727.  
  2728. ΓòÉΓòÉΓòÉ 11.8.12. GDSfindmodule ΓòÉΓòÉΓòÉ
  2729.  
  2730. struct moddef *GDSfindmodule(const char *module_name,
  2731.                              void *environment);
  2732.  
  2733. module_name         Null-terminated name of the module to search for. 
  2734.  
  2735. environment         Address of the runtime environment allocated for the UAP. 
  2736.  
  2737. Results 
  2738.  
  2739. The address of the module structure with the specified name, or NULL if no 
  2740. module is found with the specified name. 
  2741. Purpose 
  2742.  
  2743. The GDSfindmodule routine searches the active modules in the runtime 
  2744. environment for one with the name specified by the module_name parameter. 
  2745.  
  2746.  
  2747. ΓòÉΓòÉΓòÉ 11.8.13. GDSfindtbl ΓòÉΓòÉΓòÉ
  2748.  
  2749. int GDSfindtbl(const void *module_ptr,
  2750.                const char *symbol_name,
  2751.                unsigned short *table_metaindex);
  2752.  
  2753. module_ptr          Address of the module structure containing the table to be 
  2754.                     found. 
  2755.  
  2756. symbol_name         Address of the string containing the name of the symbol to 
  2757.                     be found. 
  2758.  
  2759. table_metaindex     Address of a table index variable which will be set to the 
  2760.                     table definition in the Metatable, if the find operation is 
  2761.                     successful.  If the find operation is not successful, the 
  2762.                     variable is unchanged. 
  2763.  
  2764. Results 
  2765.  
  2766. FIND_TABLE_OK       The definition is found. 
  2767.  
  2768. FIND_TABLE_FAIL     No definition is found. 
  2769.  
  2770. Purpose 
  2771.  
  2772. The GDSfindtbl routine is used to look up a table definition in a Metatable and 
  2773. return its index (for the description of TABLE definition click here). If the 
  2774. definition is not found FIND_TABLE_FAIL is returned. 
  2775.  
  2776.  
  2777. ΓòÉΓòÉΓòÉ 11.8.14. GDSfindtype ΓòÉΓòÉΓòÉ
  2778.  
  2779. int GDSfindtype(const void *module_ptr,
  2780.                 const char *symbol_name,
  2781.                 unsigned short *type_metaindex);
  2782.  
  2783. module_ptr          Address of the module structure containing the type to be 
  2784.                     found 
  2785.  
  2786. symbol_name         Address of the string containing the name of the symbol to 
  2787.                     be found 
  2788.  
  2789. type_metaindex      Address of a table index variable which will be set to the 
  2790.                     type definition in the metatable, if the find operation is 
  2791.                     successful.  If the find operation is not successful, the 
  2792.                     variable is unchanged. 
  2793.  
  2794. Results 
  2795.  
  2796. FIND_TYPE_OK        The definition is found. 
  2797.  
  2798. FIND_TYPE_FAIL      No definition is found. 
  2799.  
  2800. Purpose 
  2801.  
  2802. The GDSfindtype routine is used to look up a type definition in a Metatable and 
  2803. return its index.  If the definition is not found, FIND_TYPE_FAIL is returned. 
  2804.  
  2805.  
  2806. ΓòÉΓòÉΓòÉ 11.8.15. GDSfindval ΓòÉΓòÉΓòÉ
  2807.  
  2808. int GDSfindval(const void *module_ptr,
  2809.                const char *symbol_name,
  2810.                unsigned short *value_metaindex);
  2811.  
  2812. module_ptr          Address of the module structure containing the value to be 
  2813.                     found 
  2814.  
  2815. symbol_name         Address of the string containing the name of the symbol to 
  2816.                     be found 
  2817.  
  2818. value_metaindex     Address of a table index variable which will be set to the 
  2819.                     value definition in the Metatable, if the find operation is 
  2820.                     successful.  If the find operation is not successful, the 
  2821.                     variable is unchanged. 
  2822.  
  2823. Results 
  2824.  
  2825. FIND_VALUE_OK       The definition is found. 
  2826.  
  2827. FIND_VALUE_FAIL     if no definition is found. 
  2828.  
  2829. Purpose 
  2830.  
  2831. The GDSfindval routine is used to look up a value definition in a Metatable and 
  2832. return its index.  If the definition is not found, FIND_VALUE_FAIL is returned. 
  2833.  
  2834.  
  2835. ΓòÉΓòÉΓòÉ 11.8.16. GDSfirstmodule ΓòÉΓòÉΓòÉ
  2836.  
  2837. int firstmodule(void **module_ptr,
  2838.                 char **module_name,
  2839.                 void *environment);
  2840.  
  2841. module_ptr          Address of a pointer to the first module definition in the 
  2842.                     active module list. The pointer is set by this routine. If 
  2843.                     the active list is empty, the pointer is set to NULL. 
  2844.  
  2845. module_name         Address of a pointer to the first module name in the active 
  2846.                     module list. The pointer is set by this routine. If the 
  2847.                     active list is empty, the pointer is set to NULL. 
  2848.  
  2849. environment         Address of the runtime environment allocated for the UAP. 
  2850.  
  2851. Results 
  2852.  
  2853. FIRST_MOD_OK        The active module list is not empty and the module_ptr and 
  2854.                     the module_name pointers are not NULL. 
  2855.  
  2856. FIRST_MOD_FAIL      The active module list is empty and the module_ptr and the 
  2857.                     module_name pointers are set to NULL. 
  2858.  
  2859. Purpose 
  2860.  
  2861. The GDSfirstmodule routine returns the first module of the list of active 
  2862. modules in the runtime environment. This function can be used in conjunction 
  2863. with the GDSunloadmodule routine to unload all the modules in the active list. 
  2864.  
  2865.  
  2866. ΓòÉΓòÉΓòÉ 11.8.17. GDSfreeContentsArray ΓòÉΓòÉΓòÉ
  2867.  
  2868. void GDSfreeContentsArray(void *module_ptr,
  2869.                      struct contents_str *contents_array_ptr);
  2870.  
  2871. module_ptr          Address of the module definition for which the 
  2872.                     contents-array has been allocated. 
  2873.  
  2874. contents_array_ptr  Pointer to the contents-array that must be freed. 
  2875.  
  2876. Results 
  2877.  
  2878. None 
  2879. Purpose 
  2880.  
  2881. The GDSfreeContentsArray routine frees the contents-array storage and the 
  2882. storage of contlist-arrays that it points. The storage pointed by the contents 
  2883. field is not freed. 
  2884.  
  2885.  
  2886. ΓòÉΓòÉΓòÉ 11.8.18. GDSfreeEnvironment ΓòÉΓòÉΓòÉ
  2887.  
  2888. void GDSfreeEnvironment(void *environment);
  2889.  
  2890. environment         Address of the runtime environment allocated for the UAP. 
  2891.  
  2892. Results 
  2893.  
  2894. None 
  2895. Purpose 
  2896.  
  2897. The GDSfreeEnvironment routine frees the storage of the runtime environment 
  2898. allocated for the UAP by the GDSinitEnvironment routine. 
  2899.  
  2900.  
  2901. ΓòÉΓòÉΓòÉ 11.8.19. GDSfreegds ΓòÉΓòÉΓòÉ
  2902.  
  2903. void freegds(struct gds *gds_tree_ptr,
  2904.              void *environment);
  2905.  
  2906. gds_tree_ptr        Address of the GDS structure tree to be freed. 
  2907.  
  2908. environment         Address of the runtime environment allocated for the UAP. 
  2909.  
  2910. Results 
  2911.  
  2912. None 
  2913. Purpose 
  2914.  
  2915. The GDSfreegds routine frees an entire GDS structure tree addressed by the 
  2916. gds_tree_ptr parameter.  The contents fields that are marked allocd are freed 
  2917. (returned to the heap). Note that the GDS structures that are freed are chained 
  2918. to the freegds list rather than being returned to the heap. 
  2919.  
  2920.  
  2921. ΓòÉΓòÉΓòÉ 11.8.20. GDSfreeGdsTreeArray ΓòÉΓòÉΓòÉ
  2922.  
  2923. void GDSfreeGdsTreeArray(struct gds **gds_tree_ptr);
  2924.  
  2925. gds_tree_ptr        Address of the array of GDS structures pointers. 
  2926.  
  2927. Results 
  2928.  
  2929. None 
  2930. Purpose 
  2931.  
  2932. The GDSfreeGdsTreeArray routine frees the storage of the array of GDS 
  2933. structures pointers allocated by the GDSallocateGdsTreeArray routine. 
  2934.  
  2935.  
  2936. ΓòÉΓòÉΓòÉ 11.8.21. GDShex2str ΓòÉΓòÉΓòÉ
  2937.  
  2938. void GDShex2str(char *outbuf,
  2939.                 long outlen,
  2940.                 char *inbuf,
  2941.                 long inlen);
  2942.  
  2943. outbuf              Address of the output buffer to contain the hex characters. 
  2944.  
  2945. outlen              Length (in bytes) of the output buffer. 
  2946.  
  2947. inbuf               Address of the input buffer containing the binary version 
  2948.                     of the hexadecimal string. 
  2949.  
  2950. inlen               Length (in bytes) of the input buffer. 
  2951.  
  2952. Results 
  2953.  
  2954. None 
  2955. Purpose 
  2956.  
  2957. The GDShex2str routine converts a binary version of a hexadecimal string into a 
  2958. printable format. 
  2959.  
  2960.  
  2961. ΓòÉΓòÉΓòÉ 11.8.22. GDSinitEnvironment ΓòÉΓòÉΓòÉ
  2962.  
  2963. void GDSinitEnvironment(void **environment);
  2964.  
  2965. environment         Address of the runtime environment allocated for the UAP. 
  2966.  
  2967. Results 
  2968.  
  2969. INIT_ENV_OK         Allocation and initialization of runtime environment has 
  2970.                     been performed. 
  2971.  
  2972. INIT_ENV_FAILED     Allocation and initialization of runtime environment 
  2973.                     failed, probably for some storage allocation problem. 
  2974.  
  2975. Purpose 
  2976.  
  2977. The GDSinitEnvironment routine initializes the runtime environment for 
  2978. processing ASN.1 modules. This routine should be called only once because it 
  2979. resets internal variables, some of which refer to dynamically allocated storage 
  2980. which will not be freed by GDSinitEnvironment. More than one runtime 
  2981. environment could be concurrently active in the same time, one for each UAP 
  2982. using the GDSEDLIB runtime library. 
  2983.  
  2984.  
  2985. ΓòÉΓòÉΓòÉ 11.8.23. GDSINTEGERtolong ΓòÉΓòÉΓòÉ
  2986.  
  2987. int GDSINTEGERtolong(char *buffer,
  2988.                      long loc,
  2989.                      long *l);
  2990.  
  2991. buf                 Address of the buffer containing the BER-formatted INTEGER. 
  2992.  
  2993. loc                 Length (in bytes) of the INTEGER. 
  2994.  
  2995. l                   Address of the long int which will hold the converted 
  2996.                     value. 
  2997.  
  2998. Results 
  2999.  
  3000. INTG2LNG_OK         The conversion was successful. 
  3001.  
  3002. INTG2LNG_ERROR      The conversion was unsuccessful. 
  3003.  
  3004. Purpose 
  3005.  
  3006. The GDSINTEGERtolong routine converts an ASN.1 INTEGER, formatted according to 
  3007. the basic encoding rules, into a long int. The buf parameter points to the 
  3008. contents of the INTEGER; it does not include the ID or length octets. 
  3009.  
  3010.  
  3011. ΓòÉΓòÉΓòÉ 11.8.24. GDSlngs2OID ΓòÉΓòÉΓòÉ
  3012.  
  3013. int GDSlngs2OID(long *a,
  3014.                 unsigned char *buf,
  3015.                 int buflen,
  3016.                 int *loc,
  3017.                 int compress);
  3018.  
  3019. a                   Address of an array of long integers, each element being 
  3020.                     one of the object identifier components.  The array is 
  3021.                     terminated with a -1 value. 
  3022.  
  3023. buf                 Address of a buffer to hold the encoded object identifier 
  3024.                     value. 
  3025.  
  3026. buflen              Length of the buffer in characters. 
  3027.  
  3028. loc                 Address of the integer which will be set to the length of 
  3029.                     the contents of the object identifier value (number of 
  3030.                     bytes used to encode the object identifier value). 
  3031.  
  3032. compress            A flag  to indicate whether the routine is supposed to 
  3033.                     compress the first two components into one subidentifier. 
  3034.                     A non zero value indicates compression. 
  3035.  
  3036. Results 
  3037.  
  3038. LNGS2OID_OK         The conversion was successful. 
  3039.  
  3040. LNGS2OID_ERROR      The conversion was unsuccessful.  Reasons for failure 
  3041.                     include an inadequate output buffer or an invalid 
  3042.                     component. 
  3043.  
  3044. Purpose 
  3045.  
  3046. The GDSlngs2OID routine converts an array of object identifier components into 
  3047. an object identifier value according to the basic encoding rules. The array is 
  3048. terminated with a -1 value. The compress parameter indicates whether the first 
  3049. two components are compressed into a single subidentifier (as the basic 
  3050. encoding rules require). The complete object identifier value may be encoded by 
  3051. repeated calls to this routine; the first call (to build the prefix) would have 
  3052. the compress flag set to a non zero value, and subsequent calls (to build the 
  3053. suffixes) would indicate no compression with a zero value for compress. 
  3054.  
  3055.  
  3056. ΓòÉΓòÉΓòÉ 11.8.25. GDSlongtoINTEGER ΓòÉΓòÉΓòÉ
  3057.  
  3058. int GDSlongtoINTEGER(long l,
  3059.                      unsigned char *buf,
  3060.                      long *loc);
  3061.  
  3062. l                   The long integer that is to be converted. 
  3063.  
  3064. buf                 The buffer into which the converted ASN.1 INTEGER is 
  3065.                     placed. 
  3066.  
  3067. loc                 The length (in bytes) of the output buffer; it must be at 
  3068.                     least 4. As output parameter it contains the length of the 
  3069.                     encoded INTEGER. 
  3070.  
  3071. Results 
  3072.  
  3073. LONG2INTEGER_OK     The conversion was successful. 
  3074.  
  3075. Purpose 
  3076.  
  3077. The GDSlongtoINTEGER routine converts a long int into an ASN.1 INTEGER value 
  3078. according to the basic encoding rules. 
  3079.  
  3080.  
  3081. ΓòÉΓòÉΓòÉ 11.8.26. GDSnewgds ΓòÉΓòÉΓòÉ
  3082.  
  3083. int GDSnewgds(struct gds **gds_ptr,
  3084.               char *module_name,
  3085.               char *symbol_name,
  3086.               struct ietag *it,
  3087.               enum tagclass class,
  3088.               unsigned long id,
  3089.               enum frm form,
  3090.               char *contents,
  3091.               long loc,
  3092.               enum stg contstg,
  3093.               int (*usrcontent) (char **, unsigned long *, enum lastflag *),
  3094.               void *environment);
  3095.  
  3096. gds_ptr             The pointer to the allocated and initialized GDS structure 
  3097.                     tree. 
  3098.  
  3099. module_name         Address of the module name for the type associated with 
  3100.                     this GDS structure. 
  3101.  
  3102. symbol_name         Address of the symbol name for the type associated with 
  3103.                     this GDS structure. 
  3104.  
  3105. it                  Implicit tagging information address or NULL. 
  3106.  
  3107. class               Class of the item being built into the GDS. 
  3108.  
  3109. id                  Identifier number of the item being built into the GDS. 
  3110.  
  3111. form                Form of the item being built into the GDS. 
  3112.  
  3113. contents            Address of the contents field for the GDS. 
  3114.  
  3115. loc                 Length of the contents field. 
  3116.  
  3117. contstg             Storage class for the contents field. 
  3118.  
  3119. usrcontent          The pointer to the content user exit called by GDSencgdsd 
  3120.                     or GDSencber routines to get the data that must be encoded 
  3121.                     inside the type. Its parameter are in the order: 
  3122.  
  3123.    o The buffer containing the data 
  3124.  
  3125.    o The length of the buffer 
  3126.  
  3127.    o A flag indicating if the buffer returned is the last 
  3128.  
  3129. environment         Address of the runtime environment allocated for the UAP. 
  3130.  
  3131. Results 
  3132.  
  3133. NEWGDS_OK           The new GDS structure has been correctly allocated 
  3134.  
  3135. NEWGDS_NO_ENOUGH_STORAGE Some problem occurred during storage allocation. 
  3136.  
  3137. Purpose 
  3138.  
  3139. The GDSnewgds routine creates a new GDS structure and initializes most of its 
  3140. fields. If the it parameter is not NULL, the information addressed by it 
  3141. overides the class and id parameters. The GDSnewgds routine uses an existing 
  3142. structure on the free GDS list, if one is available; otherwise, it will 
  3143. allocate one from the heap. The contstg parameter indicates whether the storage 
  3144. associated with the contents field (pointed to by contents) should be freed 
  3145. when the GDS structure is freed. The structure of the GDS is described here. 
  3146.  
  3147.  
  3148. ΓòÉΓòÉΓòÉ 11.8.27. GDSOIDtolngs ΓòÉΓòÉΓòÉ
  3149.  
  3150. int GDSOIDtolngs(char *buf,
  3151.                  int loc,
  3152.                  long *a,
  3153.                  int asize);
  3154.  
  3155. buf                 Address of buffer containing the object identifier value 
  3156.                     contents. 
  3157.  
  3158. loc                 Length of the contents field. 
  3159.  
  3160. a                   Address of an array of long ints to hold the converted 
  3161.                     object identifier components. 
  3162.  
  3163. asize               Maximum number of elements in the array. 
  3164.  
  3165. Results 
  3166.  
  3167. OID2LNGS_OK         The conversion was successful. 
  3168.  
  3169. OID2LNGS_ERROR      The conversion was unsuccessful. 
  3170.  
  3171. Purpose 
  3172.  
  3173. The GDSOIDtolngs routine converts the contents part of an object identifier 
  3174. value into an array of long ints, one object identifier component per array 
  3175. element.  The array is terminated by an element containing -1. The asize 
  3176. parameter must be large enough to include the terminating -1 element. 
  3177.  
  3178.  
  3179. ΓòÉΓòÉΓòÉ 11.8.28. GDSprintgds ΓòÉΓòÉΓòÉ
  3180.  
  3181. int GDSprintgds(struct gds *gds_tree_ptr,
  3182.                 int indentcol,
  3183.                 long max_content_len,
  3184.                 long rowlen,
  3185.                 FILE *tracefile,
  3186.                 enum TypOfEnc tenc);
  3187.  
  3188. gds_tree_ptr        Address of the GDS structure tree to be printed. 
  3189.  
  3190. indent              The number of spaces to indent each nesting level of the 
  3191.                     embedded GDS structures. 
  3192.  
  3193. max_content_len     The maximum number of content characters that must be 
  3194.                     printed 
  3195.  
  3196. rowlen              The maximum number of content characters that must be 
  3197.                     printed on a line 
  3198.  
  3199. tracefile           The descriptor of the file where the trace must be printed 
  3200.  
  3201. tenc                The type of encoding used during the generation of the GDS 
  3202.                     structure tree (ber or gdsd). 
  3203.  
  3204. Results 
  3205.  
  3206. PRINT_GDS_OK        The print operation was successful. 
  3207.  
  3208. PRINT_GDS_ERROR     The print operation was unsuccessful. 
  3209.  
  3210. PRINT_GDS_NO_ENOUGH_STORAGE Some problem occurred during storage allocation. 
  3211.  
  3212. Purpose 
  3213.  
  3214. The GDSprintgds routine is used to print a formatted representation of a GDS 
  3215. structure tree.  The indent parameter is used to set the number of spaces with 
  3216. which to indent each nesting level of the embedded GDS structures. Other 
  3217. formatting decision can be made using the max_content_len and rowlen 
  3218. parameters. This routine can be called also to print an incomplete GDS 
  3219. structure tree. 
  3220.  
  3221. The tracefile parameter is assumed to be a descriptor for a file that is 
  3222. already open.  This routine neither opens nor closes this file. 
  3223.  
  3224.  
  3225. ΓòÉΓòÉΓòÉ 11.8.29. GDSPrintUnresolvedImports ΓòÉΓòÉΓòÉ
  3226.  
  3227. int GDSPrintUnresolvedImports(FILE *outfile,
  3228.                               void *environment);
  3229.  
  3230. outfile             File descriptor for the report. 
  3231.  
  3232. environment         Address of the runtime environment allocated for the UAP. 
  3233.  
  3234. Results 
  3235.  
  3236. PRTUNRES_OK         The print operation was successful. 
  3237.  
  3238. PRTUNRES_BAD_FILE   The print operation was unsuccessful because of a unusable 
  3239.                     file descriptor. 
  3240.  
  3241. Purpose 
  3242.  
  3243. The GDSPrintUnresolvedImports routine is used to print a formatted listing of 
  3244. the unresolved imported symbols in the current list of ASN.1 modules. 
  3245. Typically, you would use this routine to diagnose the cause of a bad return 
  3246. code from the GDSresolveallimports or the GDSresolveimports routines. 
  3247.  
  3248. The outfile parameter is assumed to be a descriptor for a file that is already 
  3249. open.  This routine neither opens nor closes this file. 
  3250.  
  3251.  
  3252. ΓòÉΓòÉΓòÉ 11.8.30. GDSreaddatfile ΓòÉΓòÉΓòÉ
  3253.  
  3254. int GDSreaddatfile(char *fn,
  3255.                    void *environment);
  3256.  
  3257. fn                  A null terminated string for the file name of the DAT file. 
  3258.  
  3259. environment         Address of the runtime environment allocated for the UAP. 
  3260.  
  3261. Results 
  3262.  
  3263. READ_DAT_OK         The DAT file was successfully read into the runtime 
  3264.                     environment. 
  3265.  
  3266. READ_DAT_OPEN       An error occured in opening the file. 
  3267.  
  3268. READ_DAT_VERSION    The DAT file has version number incompatible with the 
  3269.                     runtime library. 
  3270.  
  3271. ADDMODULE_DUP_MODULE A duplicate module was found already loaded into the 
  3272.                     runtime environment. 
  3273.  
  3274. Purpose 
  3275.  
  3276. The module definitions in the referenced file are read into the runtime 
  3277. environment and added to the list of active ASN.1 modules. Note that external 
  3278. references are not resolved by the GDSreaddatfile routine. 
  3279.  
  3280.  
  3281. ΓòÉΓòÉΓòÉ 11.8.31. GDSresolveallimports ΓòÉΓòÉΓòÉ
  3282.  
  3283. int GDSresolveallimports(void *environment);
  3284.  
  3285. environment         Address of the runtime environment allocated for the UAP. 
  3286.  
  3287. Results 
  3288.  
  3289. RESOLVE_IMPORTS_OK  All imported symbols were resolved. 
  3290.  
  3291. UNRESOLVED_REFERENCE One of the imported symbols could not be resolved amongst 
  3292.                     the active modules. 
  3293.  
  3294. Purpose 
  3295.  
  3296. The GDSresolveallimports routine resolves the imported symbols from each of the 
  3297. active modules in the runtime environment. This operation can be done after a 
  3298. number of modules have been added (with the GDSaddmodule or GDSreaddatfile 
  3299. routines), and it can be done subsequently after other modules have been added. 
  3300.  
  3301.  
  3302. ΓòÉΓòÉΓòÉ 11.8.32. GDSresolveimports ΓòÉΓòÉΓòÉ
  3303.  
  3304. int GDSresolveimports(void *module_ptr,
  3305.                       void *environment);
  3306.  
  3307. module_ptr          Address of the module structure whose imported symbols are 
  3308.                     to be resolved against the list of active modules in the 
  3309.                     runtime environment. 
  3310.  
  3311. environment         Address of the runtime environment allocated for the UAP. 
  3312.  
  3313. Results 
  3314.  
  3315. RESOLVE_IMPORTS_OK  All imported symbols were resolved. 
  3316.  
  3317. UNRESOLVED_REFERENCE One of the imported symbols could not be resolved amongst 
  3318.                     the active modules. 
  3319.  
  3320. Purpose 
  3321.  
  3322. The GDSresolveimports routine is used to resolve the imported symbols from the 
  3323. module addressed by the module_ptr parameter. 
  3324.  
  3325.  
  3326. ΓòÉΓòÉΓòÉ 11.8.33. GDSsetUsrDec ΓòÉΓòÉΓòÉ
  3327.  
  3328. void GDSsetUsrDec(int (*gdsusdec)
  3329.            (unsigned short, struct gds *, char *, unsigned long, void *),
  3330.                   void *environment);
  3331.  
  3332. gdsusdec            The address of an user-defined function with the prototype 
  3333.                     shown above. 
  3334.  
  3335. environment         Address of the runtime environment allocated for the UAP. 
  3336.  
  3337. Results 
  3338.  
  3339. None 
  3340. Purpose 
  3341.  
  3342. The GDSsetUsrDec routine initializes a variable to point to a decoding user 
  3343. exit routine. This decoding routine is invoked during the decoding process by 
  3344. GDSdecode or by GDSdecgdsd routine to pass the decoded content data and to 
  3345. permit the UAP to make various decoding decisions. The parameter of this user 
  3346. decoding function are in the order: 
  3347.  
  3348. o The Metatable index of the decoded type 
  3349.  
  3350. o The pointer to the GDS structure corresponding to the type 
  3351.  
  3352. o The content data 
  3353.  
  3354. o The length of the content data 
  3355.  
  3356. o the user-defined parameter that the GDSdecode or GDSdecgdsd routine will pass 
  3357.   to the decoding user exit during the decoding process. 
  3358. The decoding user exit is called by GDSdecode or by the GDSdecgdsd routine each 
  3359. time a new type definition is decoded (in this case no content data are passed) 
  3360. or an ASN.1 built-in primitive type is decoded (the GDSdecode routine calls it 
  3361. also for ANY or ANY DEFINED BY types, click here for details). 
  3362.  
  3363. The GDSsetUsrDec can be called anytime, even during a decode operation, to set 
  3364. or change the user decoding function. If the GDSsetUsrDec routine is called by 
  3365. the decoding user exit, called by decode routines before decoding a new type 
  3366. definition, to set another decoding user exit for the current type, the current 
  3367. decoding user exit will be active again when the decoding of that type is 
  3368. finished. This mechanism permits the UAP to set different decoding user exits 
  3369. for the different defined types. 
  3370.  
  3371.  
  3372. ΓòÉΓòÉΓòÉ 11.8.34. GDSsetUsrEnc ΓòÉΓòÉΓòÉ
  3373.  
  3374. void  GDSsetUsrEnc(int (*usrencfn) (struct encinh ia,
  3375.         struct encinhsyn *sa,
  3376.         enum tagclass cls, long id,
  3377.         enum frm form, char *encsubs),
  3378.                    void *environment);
  3379.  
  3380. usrencfn            The address of a user-defined function with the prototype 
  3381.                     shown above. 
  3382.  
  3383. environment         Address of the runtime environment allocated for the UAP. 
  3384.  
  3385. Results 
  3386.  
  3387. None 
  3388. Purpose 
  3389.  
  3390. The GDSsetUsrEnc routine initializes a variable to point to an encoding user 
  3391. exit routine.  This user encoding routine is invoked during the encoding 
  3392. process to supply values and make various encoding decisions. The parameters of 
  3393. this user encoding function are in the order: 
  3394.  
  3395. o ia, a pointer to the inherited attributes structure. This structure contains 
  3396.   information about the type that is going to be encoded: 
  3397.  
  3398.      struct encinh {                 /* inherited attributes */
  3399.         struct ietag   *it;          /* points to the structure containing
  3400.                                       * the information of implicit tagging if
  3401.                                       * the type is implicit tagged */
  3402.         char           *symname;     /* name of the current item to encode */
  3403.         char           *modname;     /* current module name */
  3404.         struct moddef  *m;           /* module for type to encode */
  3405.         void           *usrparms;    /* user parms */
  3406.         char            opt;         /* TRUE if item is optional or defaulted,
  3407.                                         FALSE if mandatory */
  3408.      };
  3409.  
  3410.   Note:  ietag contains information about the tagging. 
  3411.  
  3412.   Note:  The usrparms field consists of the user-defined parameter passed by 
  3413.   the UAP to the GDSencode routine. It is passed by the GDSencode routine to 
  3414.   the encoding user exit without examine its content. User Application Program 
  3415.   can use this to pass local parameters to the encoding user exit routine. This 
  3416.   is useful when the the UAP and the user exit routine must share data. The 
  3417.   alternative is to make the shared data global, usually an undesirable 
  3418.   programming practice. 
  3419.  
  3420.   The ia information must be used by the encoding user exit to make its 
  3421.   encoding decisions and to allocate, if necessary, a new GDS structure via the 
  3422.   GDSnewgds routine. 
  3423.  
  3424. o sa, a pointer to the inherited and synthesized attributes structure. This 
  3425.   structure contains information passed by GDSencode to the user exit (ndx, 
  3426.   base) and information passed by the user exit to GDSencode (p). 
  3427.  
  3428.      struct encinhsyn {              /* inherited and synthesized attributes */
  3429.         struct gds     *p;           /* the GDS structure allocated fo the type */
  3430.         tbldex ndx;                  /* the Metatable index of type encoded */
  3431.         enum basetypes base;         /* base type of GDS */
  3432.         long   ssof_items_num;       /* num of items inside a SET OF or SEQ OF */
  3433.      };
  3434.  
  3435.   Note:  ssof_items_num is not used in this context. 
  3436.  
  3437. o tagclass, the tag class of the type to be encoded 
  3438.  
  3439. o id, the IDENTIFIER value of the type to be encoded 
  3440.  
  3441. o form, the form (constructed or primitive) of the type to be encoded. 
  3442.  
  3443. o encsubs, a flag, set by the user exit, indicating if the GDSencode has to 
  3444.   encode the subtypes contained in the current type. In fact the encoding user 
  3445.   exit could supply the entire subtree for the type that is going to be 
  3446.   encoded, and in this case the GDSencode does not have to encode the contained 
  3447.   subtypes. 
  3448.  The encoding user exit is called by GDSencode routine each time a new type 
  3449. definition is encoded or an ASN.1 built-in type is encoded or an EXPLICIT tag 
  3450. is encoded. 
  3451.  
  3452. The GDSsetUsrEnc may be called anytime, even during an encode operation, to set 
  3453. or change the user encoding function. In the case the GDSsetUsrEnc routine is 
  3454. called by the encoding user exit, called by encode routine before encoding a 
  3455. new type definition, to set another encoding user exit for the current type, 
  3456. the current encoding user exit will be active again when the encoding of that 
  3457. type is finished. This mechanism permits the UAP to set different encoding user 
  3458. exits for the different defined types. 
  3459.  
  3460. If the encoding user exit is called for a type that is an OPTIONAL or DEFAULT 
  3461. component of a constructed type, and that particular occurrence of that type 
  3462. must not be encoded, then the encoding user exit has only to return the 
  3463. ENCODE_NO_MATCH return code to inform the GDSencode routine that the specific 
  3464. type must not be encoded. 
  3465.  
  3466. If the encoding user exit is called for an ANY or ANY DEFINED BY type, it has 
  3467. to call the GDSencode routine to encode the selected ASN.1 type. Note that 
  3468. GDSencode routine supports recursion, so it can be called recursively by the 
  3469. encoding user exit. 
  3470.  
  3471. If the encoding user exit is called for constructed types, it can pass the 
  3472. entire subtree to the GDSencode or it can allocate another GDS structure 
  3473. calling the GDSnewgds routine. In both the cases, the pointer to the subtree 
  3474. root or to the GDS structure must be returned in the field p of sa (i.e. 
  3475. sa->p). 
  3476.  
  3477. If the encoding user exit is called for primitive types it has to allocate 
  3478. another GDS structure (using the GDSnewgds routine, passing it the contents, 
  3479. and the other parameters passed by GDSencode), and to return the pointer in the 
  3480. field p of sa (i.e. sa->p). 
  3481.  
  3482.  
  3483. ΓòÉΓòÉΓòÉ 11.8.35. GDSsetUsrRead ΓòÉΓòÉΓòÉ
  3484.  
  3485. void  GDSsetUsrRead(int (*usrread)
  3486.                     (char *buff, unsigned long buflen, void *usrparms),
  3487.                     void *environment);
  3488.  
  3489. usrread             the address of an user-defined function with the prototype 
  3490.                     shown above. 
  3491.  
  3492. environment         Address of the runtime environment allocated for the UAP. 
  3493.  
  3494. Results 
  3495.  
  3496. None 
  3497. Purpose 
  3498.  
  3499. The GDSsetUsrRead routine initializes a variable to point to an user-defined 
  3500. reading routine. This reading routine is invoked by the GDSdecber and 
  3501. GDSdecgdsd routines to load in the buffer the data that must be decoded. It has 
  3502. to load the buffer pointed by buff with buflen data bytes. 
  3503.  
  3504. The GDSsetUsrRead can be called anytime, even inside the reading user exit, to 
  3505. set or change the user reading function. 
  3506.  
  3507. If the UAP does not set the reading user exit, a default one is used. This 
  3508. reads buflen characters from standard input. 
  3509.  
  3510.  
  3511. ΓòÉΓòÉΓòÉ 11.8.36. GDSsetUsrWrite ΓòÉΓòÉΓòÉ
  3512.  
  3513. void  GDssetUsrWrite(int (*usrwrite)
  3514.                      (char *buff, unsigned long buflen, void *usrparms),
  3515.                      void *environment);
  3516.  
  3517. usrwrite            The address of a function with the prototype shown above. 
  3518.  
  3519. environment         Address of the runtime environment allocated for the UAP. 
  3520.  
  3521. Results 
  3522.  
  3523. None 
  3524. Purpose 
  3525.  
  3526. The GDSsetUsrWrite routine initializes a variable to point to a user-defined 
  3527. writing routine.  This writing routine is invoked by the GDSencber and 
  3528. GDSencgdsd routines to flush the buffer containing the encoded data. It has to 
  3529. flush buflen data bytes contained the buffer pointed by buff. 
  3530.  
  3531. The GDSsetUsrWrite can be called anytime, even inside the writing user exit, to 
  3532. set or change the user writing function. 
  3533.  
  3534. If the UAP does not set the writing user exit, a default one is used. This 
  3535. writes buflen characters on standard output. 
  3536.  
  3537.  
  3538. ΓòÉΓòÉΓòÉ 11.8.37. GDSstr2hex ΓòÉΓòÉΓòÉ
  3539.  
  3540. void GDSstr2hex(char *outbuf,
  3541.                 long outlen,
  3542.                 char *inbuf,
  3543.                 long inlen);
  3544.  
  3545. outbuf              Output buffer that will contain the bynary/hexadecimal 
  3546.                     string. 
  3547.  
  3548. outlen              Output buffer length. 
  3549.  
  3550. inbuf               Input buffer that contains the printable form of the 
  3551.                     hexadecimal string. 
  3552.  
  3553. inlen               Input buffer length. 
  3554.  
  3555. Results 
  3556.  
  3557. None 
  3558. Purpose 
  3559.  
  3560. The GDSstr2hex routine converts a printable form of a hexadecimal string (for 
  3561. example: AA00EEFF) into a binary form. 
  3562.  
  3563.  
  3564. ΓòÉΓòÉΓòÉ 11.8.38. GDStypestr ΓòÉΓòÉΓòÉ
  3565.  
  3566. char *GDStypestr(enum basetypes base);
  3567.  
  3568. base                The base that is to be converted. 
  3569.  
  3570. Results 
  3571.  
  3572. Returns a pointer to a character string that is a printable version of the 
  3573. value in base 
  3574. Purpose 
  3575.  
  3576. The GDStypestr routine returns a pointer to a character string that is a 
  3577. printable version of the value in base. 
  3578.  
  3579.  
  3580. ΓòÉΓòÉΓòÉ 11.8.39. GDSunloadmodule ΓòÉΓòÉΓòÉ
  3581.  
  3582. int GDSunloadmodule(void *modptr,
  3583.                     void *environment);
  3584.  
  3585. modptr              Address of the module structure to be unloaded. 
  3586.  
  3587. environment         Address of the runtime environment allocated for the UAP. 
  3588.  
  3589. Results 
  3590.  
  3591. UNLOAD_MOD_OK       The module was successfully unloaded. 
  3592.  
  3593. UNLOAD_MOD_NOT_FOUND The module was not found among the list of active modules. 
  3594.  
  3595. Purpose 
  3596.  
  3597. The GDSunloadmodule routine is used to remove a module from the active list of 
  3598. modules and free up dynamically allocated space associated with it. This 
  3599. routine should only be used for modules that are dynamically loaded by the 
  3600. GDSreaddatfile routine.  Note that a single DAT file can contain many modules; 
  3601. to remove all of them, repeated calls the the GDSunloadmodule function are 
  3602. needed. When the last module of a DAT file is unloaded, the dynamic space for 
  3603. its symbol table is also freed. 
  3604.  
  3605.  
  3606. ΓòÉΓòÉΓòÉ 12. The Structure of the TBL File ΓòÉΓòÉΓòÉ
  3607.  
  3608. The TBL file contains the metatable and symbol table definitions corresponding 
  3609. to the ASN.1 source file. The TBL format is character data that is intended to 
  3610. be portable. Machine independence is gained by using only character forms for 
  3611. all data types, including those for decimal numbers and some special types, 
  3612. such as for object identifier values. In this way the TBL format represents an 
  3613. intermediate form; it is more compact and has more embedded information than 
  3614. the original ASN.1 source, but it is still as machine-independent as is 
  3615. possible. This allows the ASN.1 compiler to be hosted on one type of computer 
  3616. to generate metatable and symbol table information for use by the user 
  3617. application on a different system. 
  3618.  
  3619. The structure of the metatable is directly related to the abstract syntax 
  3620. notation from which it is derived. The metatable represents the syntactic 
  3621. structure of the ASN.1 definitions. The symbol table contains the names defined 
  3622. in the ASN.1 source. Each ASN.1 module in the source file has a corresponding 
  3623. metatable, and one symbol table contains all the names used in all the modules. 
  3624.  
  3625. The following sections provide the details of both the TBL format and how they 
  3626. relate to the C language formats of the application environment. The TBL file 
  3627. contains the following structures, in order: 
  3628.  
  3629.  1. Version identifier 
  3630.  2. Symbol Table length 
  3631.  3. Symbol Table name 
  3632.  4. Symbol Table 
  3633.  5. Module definitions 
  3634.  
  3635. All the examples of the TBL file structures shown here are extracted from the 
  3636. TBL file corresponding to the ASN.1 source file shown in the example ASN.1 
  3637. source file figure. 
  3638.  
  3639. The version identifier is a string, ending with a newline character, that is 
  3640. used to verify that the versions of the ASN1 program, which created the TBL 
  3641. file, and the GDSTABLE program are the same. An example version identifier is: 
  3642.  
  3643. GenE/D version 1.0 - 5684-075
  3644.  
  3645. The symbol table length specifies the number of characters in the symbol table. 
  3646. Its format is a series of characters, ending with a newline character, in the 
  3647. following form: 
  3648.  
  3649. symbol table len: 203
  3650.  
  3651. The symbol table name is used in constructing a name for a data structure in 
  3652. the C file format.  It is not used for the DAT file format. The GDSASN1 
  3653. Compiler uses one of the module reference identifiers for the symbol table 
  3654. name. Its format is a series of characters, ending with a newline character, in 
  3655. the following form: 
  3656.  
  3657. symbol table name: MyModule
  3658.  
  3659. The symbol table contains each symbol needed by the module definitions that 
  3660. follow. Within the TBL file, each symbol is separated from its neighbors by a 
  3661. newline character.  In the C and DAT file formats, the symbols are separated 
  3662. from one another by a null ('\0') character. The example Symbol Table figure 
  3663. shows a sample symbol table, corresponding to the ASN.1 source file shown in 
  3664. example ASN.1 source file figure. 
  3665.  
  3666.  
  3667. Example ASN.1 Source File
  3668.  
  3669. -- This Example ASN.1 source file defines two ASN.1 modules.
  3670.  
  3671. MyModule DEFINITIONS
  3672.          IMPLICIT TAGS ::=
  3673. BEGIN    -- start of MyModule
  3674.  
  3675.  EXPORTS MyType2;
  3676.  IMPORTS PrintStr FROM ExtModule;
  3677.  
  3678.  MyType1 ::= [4] SEQUENCE{
  3679.                   field1 MyType2,
  3680.                   field2 OCTET STRING,
  3681.                   field3 PrintStr
  3682.                  }
  3683.  
  3684.  
  3685.  MyType2 ::= SET{
  3686.               field1A SEQUENCE{
  3687.                        sub-field1 OCTET STRING,
  3688.                        sub-field2 OCTET STRING
  3689.                       } OPTIONAL,
  3690.               field1B [2] IMPLICIT OCTET STRING (SIZE(1..4)) OPTIONAL
  3691.              }
  3692.  
  3693.  
  3694. END      -- end of MyModule
  3695.  
  3696.  
  3697.  
  3698. ExtModule DEFINITIONS
  3699.          IMPLICIT TAGS ::=
  3700. BEGIN    -- start of ExtModule
  3701.  
  3702.  EXPORTS PrintStr;
  3703.  IMPORTS MyType2 FROM MyModule;
  3704.  
  3705.  
  3706.  PrintStr ::= PrintableString
  3707.  
  3708.  XType ::= SEQUENCE OF MyType2
  3709.  
  3710. END      -- end of ExtModule
  3711.  
  3712.  
  3713. ExampleSymbolTable
  3714.  
  3715. GLOBAL-MODULE
  3716. MyModule
  3717. MyType1
  3718. MyType2
  3719. ExtModule
  3720. PrintStr
  3721. XType
  3722. field1
  3723. OCTET STRING
  3724. field2
  3725. field3
  3726. SEQUENCE
  3727. DEFAULT IMPLICIT
  3728. sub-field1
  3729. sub-field2
  3730. field1A
  3731. IMPLICIT
  3732. field1B
  3733. SET
  3734. PrintableString
  3735. SEQUENCE OF
  3736.  
  3737. The module definitions appear after the symbol table and are discussed next. 
  3738.  
  3739.  
  3740. ΓòÉΓòÉΓòÉ 12.1. Structure of Module Definitions ΓòÉΓòÉΓòÉ
  3741.  
  3742. Each module definition in the TBL file is of this format: 
  3743.  
  3744.  1. Module identifier 1 
  3745.  2. Number of elements in the module 
  3746.  3. Type, value and table definitions 
  3747.  4. End of type, value and table definitions 
  3748.  5. Number of types, values, and table definitions 
  3749.  6. List of symbol table references for the types, values and table definitions 
  3750.  7. Number of imported symbols 
  3751.  8. Imported symbol information 
  3752.  9. Number of exported symbols 
  3753. 10. Exported symbol information 
  3754. 11. Module identifier 2 
  3755. 12. Symbol table index for the module name 
  3756. 13. Default tagging 
  3757.  
  3758. The module identifier 1 is a string with this example format: 
  3759.  
  3760. module: MyModule
  3761.  
  3762. The number of elements in the module is specified with this format: 
  3763.  
  3764. number of elements: 26
  3765. An element corresponds to one metatoken structure as specified in the 
  3766.  
  3767. tokstruc.h
  3768. file. 
  3769.  
  3770. The type, value and table definitions occur next. Each type, value, and table 
  3771. definition starts with a line consisting of -2, an indicator of whether the 
  3772. definition is a type, value, or table definition, and the name of the type, 
  3773. value, or table being defined. Then the elements of the definition follow, one 
  3774. line per element. For example, the following fragment shows a type definition: 
  3775.  
  3776. -2 type: MyType1
  3777. 2 23
  3778. 0 107 0 4 -1 4 10
  3779. 11 98 0 9
  3780. 15 5
  3781. 23 64 10
  3782. 15 7
  3783. 10 84
  3784. 15 9
  3785. 24 91 39 49
  3786. 18
  3787.  
  3788. Each element is specified as a series of numbers. The number and the meaning of 
  3789. each number in the element depends on the ASN.1 source used to define the 
  3790. corresponding type, value, or table. Each element corresponds to one of the 
  3791. structures in the 
  3792.  
  3793. tokstruc.h
  3794. file. The GDSTABLE program uses these to create the metatable parts of the C 
  3795. and DAT files. The first number is a token identifier as defined in the file 
  3796.  
  3797. metatoks.h.
  3798.  
  3799. The end of the type, value, and table definitions is indicated by a single line 
  3800. consisting of -1, for example: 
  3801.  
  3802. -1
  3803.  
  3804. The number of type, value, and table definitions is of this format: 
  3805.  
  3806. types/values/tables: 2
  3807.  
  3808. The list of symbol table references for the type, value, and table definitions 
  3809. follow: 
  3810.  
  3811. 0
  3812. 10
  3813.  
  3814. The number of imported symbols is of this example format: 
  3815.  
  3816. imports: 1
  3817.  
  3818. Note:  The number of imported symbols may not be exactly equal to those listed 
  3819. in the ASN.1 source IMPORTS clause. The GDSASN1 Compiler includes external 
  3820. references in the imported symbol list. In fact, a symbol defined in another 
  3821. module may be referenced without appearing in the IMPORT clause if explicit 
  3822. references (modulename.symbolname) are used. However, explicit references 
  3823. should be avoided; ASN.1 allows them for compatibility with an earlier version 
  3824. of the standard (CCITT Rec. X.409-1988). 
  3825.  
  3826. The imported symbol information follows next. Each imported symbol has one line 
  3827. in the TBL file consisting of two numbers. The first number is symbol table 
  3828. reference for the module name of the imported symbol.  The second number is the 
  3829. symbol table reference for the imported identifier. The following example shows 
  3830. one imported symbol: 
  3831.  
  3832. 39 49
  3833.  
  3834. The number of exported symbols is of this example format: 
  3835.  
  3836. exports: 1
  3837.  
  3838. The exported symbol information consists of zero or more lines, one line per 
  3839. exported symbol. Each line consists of two numbers. The first number is the 
  3840. symbol table reference for the name of the exported symbol. The second number 
  3841. is the element number of the corresponding definition in this module. This 
  3842. example shows one exported symbol: 
  3843.  
  3844. 31 10
  3845.  
  3846. The module identifier 2 looks like this: 
  3847.  
  3848. Module: MyModule
  3849.  
  3850. The symbol table reference for the module identifier looks like this: 
  3851.  
  3852. 14
  3853.  
  3854. The default tagging for the module follows next on a single line and consists 
  3855. of the characters, implicit or explicit. For example: 
  3856.  
  3857. implicit
  3858.  
  3859.  
  3860. ΓòÉΓòÉΓòÉ 13. The Structure of a DAT File ΓòÉΓòÉΓòÉ
  3861.  
  3862. The DAT file is created as one of the output files of the GDSTABLE. program. 
  3863. The DAT file is a more compact and efficient form of the TBL file for the 
  3864. runtime application and the encode/decode routines. So, the DAT file contains 
  3865. the same information contained in the TBL file. The application program can 
  3866. read at run time the DAT file invoking a specific GenE/D runtime routine. The 
  3867. DAT file is machine-dependent. Its structure is similar to the TBL structure. 
  3868. It consists of the following components, in order: 
  3869.  
  3870.  1. Version identifier (char [], terminated by '\n') 
  3871.  
  3872.  2. Symbol table length (int) 
  3873.  
  3874.  3. Symbol table (char []) 
  3875.  
  3876.  4. Module definitions 
  3877.  
  3878. The version identifier is a string used to ensure the DAT file is compatible 
  3879. with the version of the runtime library used by the application.  It is 
  3880. terminated by a newline character (not a null character). 
  3881.  
  3882. The symbol table length is an int and its value is the number of characters in 
  3883. the symbol table. 
  3884.  
  3885. The symbol table contains all the symbols needed by the module definitions. 
  3886. Each symbol is terminated by a null ('\0') character. 
  3887.  
  3888. The module definitions follow. Each module definition consists of the following 
  3889. information: 
  3890.  
  3891.  1. Number of bytes in the metatable (int) 
  3892.  
  3893.  2. Metatokens (mtok []) 
  3894.  
  3895.  3. Number of type, value, and table definitions (int) 
  3896.  
  3897.  4. List of type, value, and table definition references (tbldex) 
  3898.  
  3899.  5. Number of imported symbols (int) 
  3900.  
  3901.  6. List of imported symbol information (struct berimp []) 
  3902.  
  3903.  7. Number of exported symbols (int) 
  3904.  
  3905.  8. List of exported symbol information (struct berexp []) 
  3906.  
  3907.  9. Symbol table index for the module name (symdex) 
  3908.  
  3909. 10. Module tagging default (enum tagging) 
  3910.  
  3911. For more information on how the ASN.1 definitions are mapped into the metatable 
  3912. structures and how these metatable structures are mapped into the metatoken 
  3913. sections of the DAT files, see the General Data Stream Encoder/Decoder User's 
  3914. and Programmer's Guide manual. 
  3915.  
  3916.  
  3917. ΓòÉΓòÉΓòÉ 14. List of Abbreviations ΓòÉΓòÉΓòÉ
  3918.  
  3919. Term          Definition 
  3920. ASN.1         Abstract Syntax Notation Number One 
  3921. BER           Basic Encoding Rules 
  3922. CCITT         International Consultative Committee on Telegraph and Telephone 
  3923. GDS           General Data Stream 
  3924. GDSD          General Data Stream Definitions 
  3925. ISO           International Organization of Standardization 
  3926. OSI           Open Systems Interconnection 
  3927. PDU           Protocol Data Unit 
  3928. SNA           Systems Network Architecture 
  3929. TCP/IP        Transmission Control Protocol Internet Protocol 
  3930. UAP           User Application Program 
  3931.  
  3932.  
  3933. ΓòÉΓòÉΓòÉ 15. Appendix A. Utilities ΓòÉΓòÉΓòÉ
  3934.  
  3935. Two utilities are supplied with the GenE/D system. 
  3936.  
  3937.  
  3938. ΓòÉΓòÉΓòÉ 15.1. GDSTDATS Program ΓòÉΓòÉΓòÉ
  3939.  
  3940. The GDSTDATS program can be used to test if some .DAT file has some unresolved 
  3941. reference. To invoke this utility enter the following command on OS/2 or 
  3942. AIX/6000 command line: 
  3943.  
  3944.  
  3945.      GDSTDATS
  3946.  
  3947. and then enter the path and file name of each .DAT file you want to check. 
  3948.  
  3949.  
  3950. ΓòÉΓòÉΓòÉ 15.2. GDSTTOOL Test Tool ΓòÉΓòÉΓòÉ
  3951.  
  3952. GDSTTOOL is a tool for testing GenE/D scenarios. A scenario consists of an 
  3953. ASN.1 source file and a contents data input file (also referred to as the .INP 
  3954. file). 
  3955.  
  3956. The .INP file is read by GDSTTOOL in order to get the data to be encoded. You 
  3957. must edit the .INP file, starting from a preformatted file generated by the 
  3958. GDSTABLE translator, if the -s option is specified. 
  3959.  
  3960. The .INP preformatted file contains a block like the following: 
  3961.  
  3962. *******************************************************************************
  3963. Item: MyModule_MyType1_SEQUENCE_item1_CharacterString
  3964. TableIndex: 16
  3965. BaseType: CharacterString
  3966. NumOfContents:
  3967. ContLength:
  3968. Content:
  3969. UsrContent:
  3970. *******************************************************************************
  3971. For each ASN.1 type that requires data or encoding decisions during encoding 
  3972. process (the types for which the contents-array is accessed by the GDSencode 
  3973. routine. Edit this file opportunely: 
  3974.  
  3975. o Follow NumOfContents tag with the number of occurrences of the SET OF or 
  3976.   SEQUENCE OF component, if the block corresponds to a SET OF or a SEQUENCE OF 
  3977.   type (see GDSallocateContentsArray). Moreover, in this case, after the block 
  3978.   corresponding to a SET OF or a SEQUENCE OF, as many other blocks as the 
  3979.   occurrences of the SEQUENCE OF or SET OF component are (note that they must 
  3980.   be primitive types). The test tool extracts from each of these added blocks 
  3981.   the information related to the specific occurrence corresponding to the 
  3982.   block. 
  3983.  
  3984. o Follow ContLength tag with the length of the content data, if the block 
  3985.   corresponds to a primitive type and the content data is specified. 
  3986.  
  3987. o Follow Content tag with one or more lines of character strings, if the block 
  3988.   corresponds to a primitive type or the block corresponds to a constructed 
  3989.   type that is an OPTIONAL or DEFAULT component of a parent constructed type 
  3990.   (in this case the content data are not encoded; at least one character must 
  3991.   be specified in order to inform the encode routine that the specific 
  3992.   component must be encoded). Each character string cannot go past column 79. 
  3993.   The continuation to the following line must be indicated specifying a not 
  3994.   blank character in column 80. 
  3995.  
  3996. o Follow UsrContent tag with the name of a content user exit, if the Content 
  3997.   tag is not followed by anything and the block corresponds to a primitive 
  3998.   type. The name of the content userexit you can use is content_user_exit. The 
  3999.   content user exit function is predefined. It reads data from the content file 
  4000.   (specified as input parameter of test tool invocation) until EOF is reached, 
  4001.   passing it to the encode routine. No conversion is performed on the content 
  4002.   data. 
  4003.  
  4004. After you have edited the .INP file, you have to invoke the test tool passing 
  4005. to it: 
  4006.  
  4007. o The path and name of the .DAT file generated compiling the ASN.1 source file 
  4008.  
  4009. o The path and name of the .INP file 
  4010.  
  4011. o The path and name of the trace output file, where the GDSTTOOL prints trace 
  4012.   information (the default is stdout) 
  4013.  
  4014. o The path and name of the encoded data stream file, where the GDSTTOOL writes 
  4015.   the encoded data stream 
  4016.  
  4017. o The type of encoding: ber or gdsd 
  4018.  
  4019. o The name of the type that must be encoded/decoded 
  4020.  
  4021. o The name of the content file from which the content_user_exit function gets 
  4022.   the content data 
  4023.  
  4024. GDSTTOOL performs the following operations: 
  4025.  
  4026.  1. Loads the .DAT file. 
  4027.  
  4028.  2. Parses the .IMP file. 
  4029.  
  4030.  3. Allocates a contents-array and loads this with the data extracted from the 
  4031.     .IMP file. 
  4032.  
  4033.  4. Encodes the data stream, saving it in the passed file. 
  4034.  
  4035.  5. Decodes the encoded data stream. 
  4036.  
  4037.  6. Encodes the GDS structure tree generated by decoding, producing another 
  4038.     data stream and saving it in a temporary file. 
  4039.  
  4040.  7. Compares the two generated data streams. 
  4041.  
  4042.  
  4043. ΓòÉΓòÉΓòÉ 16. Appendix B. GDSASN1 Compiler Return Codes and Messages ΓòÉΓòÉΓòÉ
  4044.  
  4045. GDSASN1 compiler messages. 
  4046.  
  4047.  
  4048. ΓòÉΓòÉΓòÉ 16.1. Error Messages ΓòÉΓòÉΓòÉ
  4049.  
  4050.  
  4051. ΓòÉΓòÉΓòÉ 16.1.1. GDSC0401 ΓòÉΓòÉΓòÉ
  4052.  
  4053. "name" has a duplicate definition at line l, column c 
  4054.  
  4055. severity: 4 
  4056.  
  4057. The symbol, name, has been used in another definition at the indicated line and 
  4058. column. ASN.1 allows names to be used more than once in a module (for example, 
  4059. named numbers, named bits, choice alternatives, sequence, and set components). 
  4060. Defined types and defined values and imported symbols cannot be used more than 
  4061. once in any one module. The same module reference cannot be used to name more 
  4062. than one module. 
  4063.  
  4064.  
  4065. ΓòÉΓòÉΓòÉ 16.1.2. GDSC0402 ΓòÉΓòÉΓòÉ
  4066.  
  4067. Internal error: info 
  4068.  
  4069. severity: 4 
  4070.  
  4071. The compiler found an irrecoverable error.  The info is useful to the person 
  4072. who maintains the compiler for localizing and fixing the problem. 
  4073.  
  4074.  
  4075. ΓòÉΓòÉΓòÉ 16.1.3. GDSC0403 ΓòÉΓòÉΓòÉ
  4076.  
  4077. SymbolKind "Symbol" referenced but not defined in module "M" 
  4078.  
  4079. severity: 4 
  4080.  
  4081. A type, value, or table name has been referenced in module M, but it has not 
  4082. been defined or imported into the module. Symbols need not be defined before 
  4083. they can be referenced, but they must be defined or imported in the module in 
  4084. which they are referenced. 
  4085.  
  4086.  
  4087. ΓòÉΓòÉΓòÉ 16.1.4. GDSC0404 ΓòÉΓòÉΓòÉ
  4088.  
  4089. Value range subtype not legal for parent type 
  4090.  
  4091. severity: 4 
  4092.  
  4093. The value range can only be used for INTEGER and REAL data types. An attempt 
  4094. was made to use it with another data type. 
  4095.  
  4096.  
  4097. ΓòÉΓòÉΓòÉ 16.1.5. GDSC0405 ΓòÉΓòÉΓòÉ
  4098.  
  4099. Size constraint subtype not legal for parent type 
  4100.  
  4101. severity: 4 
  4102.  
  4103. The size constraint can only be used for BIT STRING, OCTET STRING, 
  4104. CharacterString, SET OF, and SEQUENCE OF data types. An attempt was made to use 
  4105. it with some other data type. 
  4106.  
  4107.  
  4108. ΓòÉΓòÉΓòÉ 16.1.6. GDSC0406 ΓòÉΓòÉΓòÉ
  4109.  
  4110. ANY DEFINED BY reference "identifier" is undefined 
  4111.  
  4112. severity: 4 
  4113.  
  4114. The identifier in the ANY DEFINED BY identifier must refer to a named type in 
  4115. the SEQUENCE or SET where the ANY DEFINED BY appears. The referenced named type 
  4116. can occur before or after the ANY DEFINED BY. Note that the identifier must 
  4117. begin with a lowercase letter and should not be confused with the identifier 
  4118. for the component's type. Here is a correctly defined example: 
  4119.  
  4120.   A ::= SET{ a ANY DEFINED BY b, b INTEGER}
  4121. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4122. manual for the syntax of ANY DEFINED BY. 
  4123.  
  4124.  
  4125. ΓòÉΓòÉΓòÉ 16.1.7. GDSC0407 ΓòÉΓòÉΓòÉ
  4126.  
  4127. Component "comp" referenced by ANY DEFINED BY must not be OPTIONAL 
  4128.  
  4129. severity: 4 
  4130.  
  4131. The referenced component, comp, in the SEQUENCE or SET is OPTIONAL. ASN.1 
  4132. requires the component upon which the ANY DEFINED BY is referenced be mandatory 
  4133. or have a default value. See the General Data Stream Encoder/Decoder User's and 
  4134. Programmer's Guide manual for the syntax of ANY DEFINED BY. 
  4135.  
  4136.  
  4137. ΓòÉΓòÉΓòÉ 16.1.8. GDSC0408 ΓòÉΓòÉΓòÉ
  4138.  
  4139. Component "comp" referenced by ANY DEFINED BY must be a subtype of INTEGER or 
  4140. OBJECT IDENTIFIER 
  4141.  
  4142. severity: 4 
  4143.  
  4144. The component upon which the ANY DEFINED BY depends, comp, is not a subtype of 
  4145. INTEGER or OBJECT IDENTIFIER. See the General Data Stream Encoder/Decoder 
  4146. User's and Programmer's Guide manual for the syntax of ANY DEFINED BY. 
  4147.  
  4148.  
  4149. ΓòÉΓòÉΓòÉ 16.1.9. GDSC0409 ΓòÉΓòÉΓòÉ
  4150.  
  4151. ANY DEFINED BY cannot be used in a SEQUENCE or SET 
  4152.  
  4153. severity: 4 
  4154.  
  4155. The ANY DEFINED BY construct may not be used within a CHOICE, even though the 
  4156. CHOICE is a component of a SET or SEQUENCE. It cannot be used to define a type 
  4157. that is then referenced in a SET or SEQUENCE.  It cannot be tagged. The 
  4158. following are invalid examples: 
  4159.  
  4160.    A ::= SET{a INTEGER,
  4161.             b CHOICE{ [0] INTEGER,
  4162.                [1] ANY DEFINED BY a -- This is illegal --
  4163.                     }
  4164.             }
  4165.  
  4166.    B ::= SET{a INTEGER, b C}
  4167.  
  4168.    C ::= ANY DEFINED BY a -- This is illegal --
  4169. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4170. manual for the syntax of ANY DEFINED BY. 
  4171.  
  4172.  
  4173. ΓòÉΓòÉΓòÉ 16.1.10. GDSC0410 ΓòÉΓòÉΓòÉ
  4174.  
  4175.  Illegal ANY DEFINED BY syntax 
  4176.  
  4177. severity: 4 
  4178.  
  4179. The incorrect syntax for the ANY DEFINED BY construct is usually caused by 
  4180. misspelling one of the keywords or by failing to use an identifier starting 
  4181. with a lowercase letter after ANY DEFINED BY. The line and column number in the 
  4182. error message identify the source of the error. See the General Data Stream 
  4183. Encoder/Decoder User's and Programmer's Guide manual for the syntax of ANY 
  4184. DEFINED BY. 
  4185.  
  4186.  
  4187. ΓòÉΓòÉΓòÉ 16.1.11. GDSC0411 ΓòÉΓòÉΓòÉ
  4188.  
  4189. Expected '-' or a digit 
  4190.  
  4191. severity: 4 
  4192.  
  4193. The lexical analyzer found a dash and expected to find another dash, signifying 
  4194. a comment, or a digit, signifying a signed number. The character at the line 
  4195. and column number identifies the source of theb error. 
  4196.  
  4197.  
  4198. ΓòÉΓòÉΓòÉ 16.1.12. GDSC0412 ΓòÉΓòÉΓòÉ
  4199.  
  4200. Identifier must not end in a dash - ignored 
  4201.  
  4202. severity: 4 
  4203.  
  4204. An ASN.1 identifier can include dashes, but they must not occur: 
  4205.  
  4206. o at the beginning of the identifier 
  4207.  
  4208. o consecutively 
  4209.  
  4210. o as the last character in the identifier 
  4211. The compiler ignores the trailing dash. 
  4212.  
  4213. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4214. manual for the syntax of ASN.1 identifiers. 
  4215.  
  4216.  
  4217. ΓòÉΓòÉΓòÉ 16.1.13. GDSC0413 ΓòÉΓòÉΓòÉ
  4218.  
  4219. Expected 'char' for an assignment item, "::=" 
  4220.  
  4221. severity: 4 
  4222.  
  4223. The compiler was expecting an assignment item, "::=" but found an invalid 
  4224. character at the indicated line and column number. 
  4225.  
  4226.  
  4227. ΓòÉΓòÉΓòÉ 16.1.14. GDSC0414 ΓòÉΓòÉΓòÉ
  4228.  
  4229. Expected '0' or '1' in binary string item 
  4230.  
  4231. severity: 4 
  4232.  
  4233. The lexical analyzer found an illegal character in a binary string item.  The 
  4234. only allowed characters in a binary string are '0' and '1'. See the General 
  4235. Data Stream Encoder/Decoder User's and Programmer's Guide manual for the syntax 
  4236. of ASN.1 binary strings. 
  4237.  
  4238.  
  4239. ΓòÉΓòÉΓòÉ 16.1.15. GDSC0415 ΓòÉΓòÉΓòÉ
  4240.  
  4241. Expected hexadecimal digit in string item 
  4242.  
  4243. severity: 4 
  4244.  
  4245. The lexical analyzer found an invalid character in a hexadecimal string item. 
  4246. The only allowed characters in a hexadecimal string are '0' through '9' and 'A' 
  4247. through 'F'.  Note that lowercase hexadecimal digits 'a' through 'f' are not 
  4248. allowed. See the General Data Stream Encoder/Decoder User's and Programmer's 
  4249. Guide manual for the syntax of ASN.1 hexadecimal strings. 
  4250.  
  4251.  
  4252. ΓòÉΓòÉΓòÉ 16.1.16. GDSC0416 ΓòÉΓòÉΓòÉ
  4253.  
  4254. Expected 'B' or 'H' 
  4255.  
  4256. severity: 4 
  4257.  
  4258. The lexical analyzer found the terminating single quote for a hexadecimal or 
  4259. binary string item, but did not find the required 'B' (for binary) or 'H' 
  4260. (hexadecimal) letter following the last single quote. Note there must not be 
  4261. any spaces between the single quote and the letter ('B' or 'H') and that the 
  4262. letter must follow, not precede the quoted string. See the General Data Stream 
  4263. Encoder/Decoder User's and Programmer's Guide manual for the syntax of ASN.1 
  4264. hexadecimal and binary strings. 
  4265.  
  4266.  
  4267. ΓòÉΓòÉΓòÉ 16.1.17. GDSC0417 ΓòÉΓòÉΓòÉ
  4268.  
  4269. Too many characters in item, aborting compilation 
  4270.  
  4271. severity: 4 
  4272.  
  4273. The lexical analyzer filled up its internal buffer with characters before 
  4274. completing an ASN.1 item. This can be caused by a missing quotation mark. 
  4275.  
  4276.  
  4277. ΓòÉΓòÉΓòÉ 16.1.18. GDSC0418 ΓòÉΓòÉΓòÉ
  4278.  
  4279. Skipping unrecognized character 'char' 
  4280.  
  4281. severity: 4 
  4282.  
  4283. The lexical analyzer found a character that is not in the ASN.1 repertoire. 
  4284. This can be caused by mismatched quotation marks. 
  4285.  
  4286.  
  4287. ΓòÉΓòÉΓòÉ 16.1.19. GDSC0419 ΓòÉΓòÉΓòÉ
  4288.  
  4289. "identifier" is a recursive type/value definition 
  4290.  
  4291. severity: 4 
  4292.  
  4293. The "identifier" has been used to define itself, perhaps through a chain of 
  4294. indirections. These are illegal definitions: 
  4295.  
  4296.    A ::= B  -- illegal recursion
  4297.    B ::= C  -- illegal recursion
  4298.    C ::= A  -- illegal recursion
  4299. Some forms of recursion are, however, allowed: 
  4300.  
  4301.    Tree ::= CHOICE{ i InternalNode, l LeafNode}
  4302.    InternalNode ::= SEQUENCE{ leftSubtree Tree,
  4303.           rightSubtree Tree}
  4304.    LeafNode ::= INTEGER
  4305.  
  4306.  
  4307. ΓòÉΓòÉΓòÉ 16.1.20. GDSC0420 ΓòÉΓòÉΓòÉ
  4308.  
  4309. Script symbol "sym" is not recognized 
  4310.  
  4311. severity: 4 
  4312.  
  4313. The lexical analyzer either does not support the script substitution symbol sym 
  4314. or it is misinterpreting the source as a containing a script substitution 
  4315. symbol. For this message to occur, the script option must be in effect, and the 
  4316. referenced symbol must occur within an ASN.1 section (for example, between .* 
  4317. asn.1 on and .* asn.1 off), and it must occur in a context where an ASN.1 item 
  4318. is expected (i.e. not in a comment or character string). See the GDSASN1 
  4319. compiler input for the supported script symbols. 
  4320.  
  4321.  
  4322. ΓòÉΓòÉΓòÉ 16.1.21. GDSC0421 ΓòÉΓòÉΓòÉ
  4323.  
  4324. Expected "STRING" following "Keyword" 
  4325.  
  4326. severity: 4 
  4327.  
  4328. The compiler found the keyword "BIT" or "OCTET" and expected the next item to 
  4329. be the keyword "STRING". Note that "BIT STRING" is two separate words, as is 
  4330. "OCTET STRING". They can be on different lines, and even have comments 
  4331. separating them, but there must be no other keywords or punctuation between 
  4332. them. 
  4333.  
  4334.  
  4335. ΓòÉΓòÉΓòÉ 16.1.22. GDSC0422 ΓòÉΓòÉΓòÉ
  4336.  
  4337. Illegal module definition 
  4338.  
  4339. severity: 4 
  4340.  
  4341. The module definition is illegal.  There are probably other error messages in 
  4342. the vicinity that indicate which clauses are incorrect.  The compiler will 
  4343. attempt to recover at the next type or value assignment. An "END" item, if it 
  4344. exists, will probably generate an error message too, since the module 
  4345. definition lines are ignored. 
  4346.  
  4347. Common problems in module definitions are: 
  4348.  
  4349. o Failure to terminate an EXPORTS or IMPORTS clause with a semicolon. 
  4350.  
  4351. o Putting the EXPORTS clause before the IMPORTS clause 
  4352.  
  4353. o Misspelling keywords or using lowercase letters in DEFINITIONS, IMPLICIT, 
  4354.   TAGS, BEGIN, EXPORTS, IMPORTS 
  4355. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4356. manual for the correct syntax. 
  4357.  
  4358.  
  4359. ΓòÉΓòÉΓòÉ 16.1.23. GDSC0423 ΓòÉΓòÉΓòÉ
  4360.  
  4361. Illegal IMPORTS/EXPORTS symbol list, skipping to ';' 
  4362.  
  4363. severity: 4 
  4364.  
  4365. The compiler found an error in an IMPORTS or EXPORTS clause of a module 
  4366. definition. See the General Data Stream Encoder/Decoder User's and Programmer's 
  4367. Guide manual for the correct syntax. 
  4368.  
  4369.  
  4370. ΓòÉΓòÉΓòÉ 16.1.24. GDSC0424 ΓòÉΓòÉΓòÉ
  4371.  
  4372. Expected an assignment 
  4373.  
  4374. severity: 4 
  4375.  
  4376. This message occurs when the compiler expects a type assignment or a value 
  4377. assignment but encounters something different. This message is often 
  4378. accompanied by other messages that are more specific about the syntax in error. 
  4379. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4380. manual for the correct syntax. 
  4381.  
  4382.  
  4383. ΓòÉΓòÉΓòÉ 16.1.25. GDSC0425 ΓòÉΓòÉΓòÉ
  4384.  
  4385. "Identifier" is an illegal type/value assignment 
  4386.  
  4387. severity: 4 
  4388.  
  4389. The parser found the beginning of a valid type or value assignment with the 
  4390. name Identifier, but encountered an error somewhere on the right-hand side of 
  4391. the "::=" item. Usually, other error messages will localize the problem. 
  4392.  
  4393.  
  4394. ΓòÉΓòÉΓòÉ 16.1.26. GDSC0426 ΓòÉΓòÉΓòÉ
  4395.  
  4396. Illegal INTEGER/ENUMERATED named number list 
  4397.  
  4398. severity: 4 
  4399.  
  4400. The compiler found the beginning of a named number list for an INTEGER or 
  4401. ENUMERATED type, but found an error within the list itself. There is usually 
  4402. another error message that more closely pinpoints the error. See the General 
  4403. Data Stream Encoder/Decoder User's and Programmer's Guide manual for the 
  4404. correct syntax of INTEGER and ENUMERATED. 
  4405.  
  4406.  
  4407. ΓòÉΓòÉΓòÉ 16.1.27. GDSC0427 ΓòÉΓòÉΓòÉ
  4408.  
  4409. "identifier" is an illegal named number 
  4410.  
  4411. severity: 4 
  4412.  
  4413. Within the named number list for an INTEGER or ENUMERATED, the compiler 
  4414. encountered a named number, identifier, which was illegal. See the General Data 
  4415. Stream Encoder/Decoder User's and Programmer's Guide manual for the correct 
  4416. syntax of a named number list. 
  4417.  
  4418.  
  4419. ΓòÉΓòÉΓòÉ 16.1.28. GDSC0428 ΓòÉΓòÉΓòÉ
  4420.  
  4421. "identifier" must begin with a lowercase letter 
  4422.  
  4423. severity: 4 
  4424.  
  4425. The identifier begins with an uppercase letter. Named bits (in a BIT STRING) 
  4426. and named numbers (in an INTEGER and ENUMERATED) must begin with lowercase 
  4427. letters. 
  4428.  
  4429.  
  4430. ΓòÉΓòÉΓòÉ 16.1.29. GDSC0429 ΓòÉΓòÉΓòÉ
  4431.  
  4432. Illegal named bit list 
  4433.  
  4434. severity: 4 
  4435.  
  4436. The compiler found the beginning of a named bit list for a BIT STRING type, but 
  4437. found an error within the list itself. There is usually another error message 
  4438. that more closely pinpoints the error. See the General Data Stream 
  4439. Encoder/Decoder User's and Programmer's Guide manual for the correct syntax of 
  4440. BIT STRING. 
  4441.  
  4442.  
  4443. ΓòÉΓòÉΓòÉ 16.1.30. GDSC0430 ΓòÉΓòÉΓòÉ
  4444.  
  4445. Named bit value must be greater than or equal to zero 
  4446.  
  4447. severity: 4 
  4448.  
  4449. The named bit was given a negative value. Bits are numbered starting from zero 
  4450. at the first bit. See the General Data Stream Encoder/Decoder User's and 
  4451. Programmer's Guide manual for the correct syntax of BIT STRING. 
  4452.  
  4453.  
  4454. ΓòÉΓòÉΓòÉ 16.1.31. GDSC0431 ΓòÉΓòÉΓòÉ
  4455.  
  4456. "identifier" illegal named bit 
  4457.  
  4458. severity: 4 
  4459.  
  4460. The compiler found incorrect syntax following the identifier and it expected a 
  4461. named bit. See the General Data Stream Encoder/Decoder User's and Programmer's 
  4462. Guide manual for the correct syntax of BIT STRING. 
  4463.  
  4464.  
  4465. ΓòÉΓòÉΓòÉ 16.1.32. GDSC0432 ΓòÉΓòÉΓòÉ
  4466.  
  4467. Illegal element after comma 
  4468.  
  4469. severity: 4 
  4470.  
  4471. The compiler found an error in the SET or SEQUENCE component following the 
  4472. indicated comma. Usually other error messages will locate the error more 
  4473. closely. A frequent error is the omission of a comma between components or 
  4474. including the comma as part of a comment instead of placing it outside the 
  4475. comment. 
  4476.  
  4477.  
  4478. ΓòÉΓòÉΓòÉ 16.1.33. GDSC0433 ΓòÉΓòÉΓòÉ
  4479.  
  4480. Numeric REAL value base must be 2 or 10 
  4481.  
  4482. severity: 4 
  4483.  
  4484. ASN.1 requires that the REAL data type be of base 2 or base 10 only. See the 
  4485. General Data Stream Encoder/Decoder User's and Programmer's Guide manual for 
  4486. the correct syntax of REAL. 
  4487.  
  4488.  
  4489. ΓòÉΓòÉΓòÉ 16.1.34. GDSC0434 ΓòÉΓòÉΓòÉ
  4490.  
  4491. Illegal subtype specification 
  4492.  
  4493. severity: 4 
  4494.  
  4495. The compiler had found what looks like the beginning of a subtype 
  4496. specification, but encountered an error somewhere inside the specification. 
  4497. Usually, other error messages in the vicinity will localize the problem. 
  4498.  
  4499.  
  4500. ΓòÉΓòÉΓòÉ 16.1.35. GDSC0435 ΓòÉΓòÉΓòÉ
  4501.  
  4502. Expected a '-' to terminate syntactic extension 
  4503.  
  4504. severity: 4 
  4505.  
  4506. The lexical analyzer found what looks like a syntactic extension termination, 
  4507. "%--", but found a wrong character in the indicated position. 
  4508.  
  4509.  
  4510. ΓòÉΓòÉΓòÉ 16.1.36. GDSC0436 ΓòÉΓòÉΓòÉ
  4511.  
  4512. Illegal ANY_TABLE_REF 
  4513.  
  4514. severity: 4 
  4515.  
  4516. The compiler found the keyword, ANY_TABLE_REF, but did not find the correct 
  4517. syntax following it. See the General Data Stream Encoder/Decoder User's and 
  4518. Programmer's Guide manual for the correct syntax of ANY_TABLE_REF. 
  4519.  
  4520.  
  4521. ΓòÉΓòÉΓòÉ 16.1.37. GDSC0437 ΓòÉΓòÉΓòÉ
  4522.  
  4523. ANY_TABLE_REF, "Identifier", does not refer to an ANY_TABLE 
  4524.  
  4525. severity: 4 
  4526.  
  4527. The referenced Identifier was to a definition of other than an ANY_TABLE. See 
  4528. the General Data Stream Encoder/Decoder User's and Programmer's Guide manual 
  4529. for the correct syntax of ANY_TABLE_REF. 
  4530.  
  4531.  
  4532. ΓòÉΓòÉΓòÉ 16.1.38. GDSC0438 ΓòÉΓòÉΓòÉ
  4533.  
  4534. "Identifier" is an illegal ANY_TABLE assignment 
  4535.  
  4536. severity: 4 
  4537.  
  4538. The compiler found what looks like an ANY_TABLE assignment, but encountered 
  4539. syntax errors in the rest of the definition. Usually, other error messages in 
  4540. the vicinity will more closely pinpoint the problem. 
  4541.  
  4542.  
  4543. ΓòÉΓòÉΓòÉ 16.1.39. GDSC0439 ΓòÉΓòÉΓòÉ
  4544.  
  4545.  Illegal tag 
  4546.  
  4547. severity: 4 
  4548.  
  4549. A tag construction was begun with a '[', but was not followed by valid syntax. 
  4550. Common causes are misspelled keywords for UNIVERSAL, etc., and missing ']'. See 
  4551. the General Data Stream Encoder/Decoder User's and Programmer's Guide manual 
  4552. for the correct syntax. 
  4553.  
  4554.  
  4555. ΓòÉΓòÉΓòÉ 16.1.40. GDSC0440 ΓòÉΓòÉΓòÉ
  4556.  
  4557. OBJECT IDENTIFIER value component "identifier" is not defined 
  4558.  
  4559. severity: 4 
  4560.  
  4561. The identifier must be defined or imported into the ASN.1 module somewhere.  It 
  4562. must also be defined as an OBJECT IDENTIFIER value. See the General Data Stream 
  4563. Encoder/Decoder User's and Programmer's Guide manual for the correct syntax. 
  4564.  
  4565.  
  4566. ΓòÉΓòÉΓòÉ 16.1.41. GDSC0441 ΓòÉΓòÉΓòÉ
  4567.  
  4568. OBJECT IDENTIFIER value conversion error -- compiler limitation 
  4569.  
  4570. severity: 4 
  4571.  
  4572. The OBJECT IDENTIFIER has too many components in it for the compiler to handle. 
  4573. Contact the person maintaining the compiler. 
  4574.  
  4575.  
  4576. ΓòÉΓòÉΓòÉ 16.1.42. GDSC0442 ΓòÉΓòÉΓòÉ
  4577.  
  4578. OBJECT IDENTIFIER value reference "identifier is invalid 
  4579.  
  4580. severity: 4 
  4581.  
  4582. The referenced identifier is not a correctly defined OBJECT IDENTIFIER, causing 
  4583. a compilation error at this point. Other error messages should occur where the 
  4584. OBJECT IDENTIFIER identifier is defined. 
  4585.  
  4586.  
  4587. ΓòÉΓòÉΓòÉ 16.1.43. GDSC0443 ΓòÉΓòÉΓòÉ
  4588.  
  4589. Incompatible value for the associated type at line l, column c 
  4590.  
  4591. severity: 4 
  4592.  
  4593. The notations for the referenced type and value do not agree. For example, 
  4594. assigning TRUE to a value whose type is INTEGER causes this error. Check the 
  4595. allowed value notation for the data type in question. 
  4596.  
  4597.  
  4598. ΓòÉΓòÉΓòÉ 16.1.44. GDSC0444 ΓòÉΓòÉΓòÉ
  4599.  
  4600. Implicitly tagging a CHOICE or ANY is illegal 
  4601.  
  4602. severity: 4 
  4603.  
  4604. ASN.1 prohibits implicitly tagging a CHOICE or ANY data type. See the General 
  4605. Data Stream Encoder/Decoder User's and Programmer's Guide manual for the 
  4606. restrictions and requirements for tagging. 
  4607.  
  4608.  
  4609. ΓòÉΓòÉΓòÉ 16.1.45. GDSC0445 ΓòÉΓòÉΓòÉ
  4610.  
  4611. "Identifier" is defined as a type, but it has an incompatible reference 
  4612.  
  4613. severity: 4 
  4614.  
  4615. The type Identifier is defined as a type but it is referenced as something 
  4616. else, probably as an ANY_TABLE. 
  4617.  
  4618.  
  4619. ΓòÉΓòÉΓòÉ 16.1.46. GDSC0446 ΓòÉΓòÉΓòÉ
  4620.  
  4621. "identifier" is already used in line l column c 
  4622.  
  4623. severity: 4 
  4624.  
  4625. The identifier was used more than once in a context where the identifiers must 
  4626. all be unique. Specifically, distinct identifiers must be used within a single 
  4627. instance of: 
  4628.  
  4629. o CHOICE alternatives 
  4630. o INTEGER named numbers 
  4631. o ENUMERATED named numbers 
  4632. o SEQUENCE named component types 
  4633. o SET named component types 
  4634. o BIT STRING named bits 
  4635. o OBJECT IDENTIFIER value component names 
  4636. The same identifier can be used in different instances of the above types. 
  4637.  
  4638.  
  4639. ΓòÉΓòÉΓòÉ 16.1.47. GDSC0447 ΓòÉΓòÉΓòÉ
  4640.  
  4641. The type referenced in the SelectionType is not a CHOICE 
  4642.  
  4643. severity: 4 
  4644.  
  4645. The selection type is used to select one of the CHOICE type alternatives. It 
  4646. cannot be used to select types from other data types. See the General Data 
  4647. Stream Encoder/Decoder User's and Programmer's Guide manual for the correct 
  4648. syntax. 
  4649.  
  4650.  
  4651. ΓòÉΓòÉΓòÉ 16.1.48. GDSC0448 ΓòÉΓòÉΓòÉ
  4652.  
  4653. CHOICE alternative "identifier" is not found 
  4654.  
  4655. severity: 4 
  4656.  
  4657. The identifier in the selection type does not reference a CHOICE alternative. 
  4658. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4659. manual for the correct syntax. 
  4660.  
  4661.  
  4662. ΓòÉΓòÉΓòÉ 16.1.49. GDSC0449 ΓòÉΓòÉΓòÉ
  4663.  
  4664. This tag must be distinct from the tag at line l, column c 
  4665.  
  4666. severity: 4 
  4667.  
  4668. ASN.1 requires that tags be distinct in certain cases.  A tag is the 
  4669. combination of a class (UNIVERSAL, APPLICATION, PRIVATE, or context sensitive) 
  4670. and a number. The data types that have distinct tag requirements are: 
  4671.  
  4672. o CHOICE 
  4673. o SET 
  4674. o SEQUENCE 
  4675. For example, the following are all illegal: 
  4676.  
  4677.   A ::= CHOICE{ a INTEGER, b INTEGER}
  4678.   B ::= SET{ a INTEGER, b INTEGER}
  4679.   C ::= SEQUENCE{ a BOOLEAN, b INTEGER OPTIONAL,
  4680.                   c INTEGER}
  4681.   D ::= CHOICE{ a E, b F}
  4682.   E ::= CHOICE{ e1 INTEGER, e2 BOOLEAN}
  4683.   F ::= CHOICE{ e1 INTEGER, e2 NULL}
  4684. Since decoding a value requires matching the tags, any case where the same tag 
  4685. could be interpreted to refer to more than one type will cause a decoding 
  4686. failure. 
  4687.  
  4688.  
  4689. ΓòÉΓòÉΓòÉ 16.1.50. GDSC0450 ΓòÉΓòÉΓòÉ
  4690.  
  4691. ANY cannot be used where distinct tags are necessary 
  4692.  
  4693. severity: 4 
  4694.  
  4695. ASN.1 requires that tags be distinct in certain cases.  A tag is the 
  4696. combination of a class (UNIVERSAL, APPLICATION, PRIVATE, or context sensitive) 
  4697. and a number. The ANY (and ANY DEFINED BY) data type has an indeterminate tag 
  4698. and so must not be used where distinct tags are required. The data types that 
  4699. require distinct tags are: 
  4700.  
  4701. o CHOICE 
  4702. o SET 
  4703. o SEQUENCE 
  4704. For example, the following are all illegal: 
  4705.  
  4706.   A ::= CHOICE{ a ANY, b INTEGER}
  4707.   B ::= SET{ a ANY, b INTEGER}
  4708.   C ::= SEQUENCE{ a BOOLEAN, b INTEGER OPTIONAL,
  4709.                   c ANY}
  4710. Since decoding a value requires matching the tags, any case where the same tag 
  4711. could be interpreted to refer to more than one type will cause a decoding 
  4712. failure. 
  4713.  
  4714.  
  4715. ΓòÉΓòÉΓòÉ 16.1.51. GDSC0451 ΓòÉΓòÉΓòÉ
  4716.  
  4717. Recursive CHOICE reference is illegal 
  4718.  
  4719. severity: 4 
  4720.  
  4721. A CHOICE definition includes alternatives that eventually refer back to the 
  4722. CHOICE (the recursion) without tagging. This type of recursion cannot be 
  4723. resolved and so is illegal. For example, this is illegal: 
  4724.  
  4725.  
  4726.   A ::= CHOICE{x B, y INTEGER}
  4727.   B ::= CHOICE{s A, t NULL}
  4728.  
  4729. Not all recursions are illegal.  For example, the following is legal: 
  4730.  
  4731.  
  4732.   A ::= CHOICE{x B, y INTEGER} -- legal
  4733.   B ::= CHOICE{s [0] A, t NULL} -- legal
  4734.  
  4735.  
  4736. ΓòÉΓòÉΓòÉ 16.1.52. GDSC0452 ΓòÉΓòÉΓòÉ
  4737.  
  4738. YaccMessage 
  4739.  
  4740. severity: 4 
  4741.  
  4742. The compiler encountered a syntax error, ran out of memory, or experienced some 
  4743. other problem which is indicated by YaccMessage. In the case of a parse error, 
  4744. the line and column number indicate exactly where the compiler detected an 
  4745. error. More explicit error messages should explain the nature of the error. 
  4746.  
  4747.  
  4748. ΓòÉΓòÉΓòÉ 16.1.53. GDSC0453 ΓòÉΓòÉΓòÉ
  4749.  
  4750. This alternative is not found in the CHOICE type at line l, column c 
  4751.  
  4752. severity: 4 
  4753.  
  4754. A CHOICE value was specified that referenced an alternative in a CHOICE defined 
  4755. at line l, column c., which was not found. This is usually caused by 
  4756. misspelling the CHOICE alternative name. 
  4757.  
  4758.  
  4759. ΓòÉΓòÉΓòÉ 16.1.54. GDSC0454 ΓòÉΓòÉΓòÉ
  4760.  
  4761. Missing or illegal tag before "IMPLICIT/EXPLICIT" 
  4762.  
  4763. severity: 4 
  4764.  
  4765. The keywords IMPLICIT and EXPLICIT must be preceded by a valid tag 
  4766. construction; they cannot appear without the tag construction. A tag is 
  4767. constructed with square brackets with one or more characters between them. The 
  4768. following is an illegal example: 
  4769.  
  4770.   A ::= IMPLICIT INTEGER -- illegal
  4771. This is a legal example: 
  4772.  
  4773.   B ::= [0] IMPLICIT INTEGER -- legal
  4774. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4775. manual for the correct syntax. 
  4776.  
  4777.  
  4778. ΓòÉΓòÉΓòÉ 16.1.55. GDSC0455 ΓòÉΓòÉΓòÉ
  4779.  
  4780. This defined value for the named number/bit must refer to a number 
  4781.  
  4782. severity: 4 
  4783.  
  4784. A named number or bit is defined by referencing another value that is not a 
  4785. number.  For example, the following causes this error message: 
  4786.  
  4787.  
  4788.   A ::= INTEGER{a(x), b(3)}
  4789.   x BOOLEAN ::= TRUE
  4790.  
  4791.  
  4792. ΓòÉΓòÉΓòÉ 16.1.56. GDSC0456 ΓòÉΓòÉΓòÉ
  4793.  
  4794. Named number/bit "identifier1" has the same value as "identifier2" 
  4795.  
  4796. severity: 4 
  4797.  
  4798. The named numbers or bits associated with identifier1 and identifier2 have the 
  4799. same value.  ASN.1 requires them to be unique.  For example, the following 
  4800. syntax will cause this error message: 
  4801.  
  4802.  
  4803.   A ::= INTEGER{a(x), b(3)}
  4804.   x INTEGER ::= 3
  4805.  
  4806.  
  4807. ΓòÉΓòÉΓòÉ 16.1.57. GDSC0457 ΓòÉΓòÉΓòÉ
  4808.  
  4809. Imported symbol "symbol" must be exported from module "module" 
  4810.  
  4811. severity: 4 
  4812.  
  4813. The symbol is in an IMPORTS list, but it does not appear in the EXPORTS list of 
  4814. the referenced module. 
  4815.  
  4816. Note that the absence of an EXPORTS clause in a module means everything in that 
  4817. module is considered to be exported. If a module has an EXPORTS clause with no 
  4818. symbols, that module is considered to export nothing. 
  4819.  
  4820.  
  4821. ΓòÉΓòÉΓòÉ 16.1.58. GDSC0458 ΓòÉΓòÉΓòÉ
  4822.  
  4823. Illegal assigned object identifier reference for module "modulename" 
  4824.  
  4825. severity: 4 
  4826.  
  4827. The object identifier value assigned to the module is incorrect. Another error 
  4828. message will more finely pinpoint the errors. 
  4829.  
  4830.  
  4831. ΓòÉΓòÉΓòÉ 16.1.59. GDSC0459 ΓòÉΓòÉΓòÉ
  4832.  
  4833. Illegal numeric real value - extra component(s) 
  4834.  
  4835. severity: 4 
  4836.  
  4837. The REAL numeric value has too many components; exactly three numbers are 
  4838. required. 
  4839.  
  4840. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4841. manual for the correct syntax. 
  4842.  
  4843.  
  4844. ΓòÉΓòÉΓòÉ 16.1.60. GDSC0460 ΓòÉΓòÉΓòÉ
  4845.  
  4846. Illegal numeric real value - missing exponent 
  4847.  
  4848. severity: 4 
  4849.  
  4850. The REAL numeric value has only two components; exactly three numbers are 
  4851. required. The third component is the exponent. 
  4852.  
  4853. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4854. manual for the correct syntax. 
  4855.  
  4856.  
  4857. ΓòÉΓòÉΓòÉ 16.1.61. GDSC0461 ΓòÉΓòÉΓòÉ
  4858.  
  4859. Illegal numeric real value - missing base 
  4860.  
  4861. severity: 4 
  4862.  
  4863. The REAL numeric value has only one component; exactly three numbers are 
  4864. required. The second component is the base. 
  4865.  
  4866. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4867. manual for the correct syntax. 
  4868.  
  4869.  
  4870. ΓòÉΓòÉΓòÉ 16.1.62. GDSC0462 ΓòÉΓòÉΓòÉ
  4871.  
  4872. Illegal numeric real value - missing mantissa 
  4873.  
  4874. severity: 4 
  4875.  
  4876. The REAL numeric value has zero components; exactly three numbers are required. 
  4877. The first component is the mantissa. 
  4878.  
  4879. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4880. manual for the correct syntax. 
  4881.  
  4882.  
  4883. ΓòÉΓòÉΓòÉ 16.1.63. GDSC0463 ΓòÉΓòÉΓòÉ
  4884.  
  4885. Illegal numeric real value - the mantissa must be a signed number 
  4886.  
  4887. severity: 4 
  4888.  
  4889. All three components of the numeric real number must be numbers. A common 
  4890. mistake is to use a reference to a number rather than the number itself. 
  4891.  
  4892.  
  4893.    a REAL ::= {x, 2, 10} -- illegal reference
  4894.  
  4895.    x INTEGER ::= 42
  4896.  
  4897. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4898. manual for the correct syntax. 
  4899.  
  4900.  
  4901. ΓòÉΓòÉΓòÉ 16.1.64. GDSC0464 ΓòÉΓòÉΓòÉ
  4902.  
  4903. Illegal numeric real value - the exponent must be a signed number 
  4904.  
  4905. severity: 4 
  4906.  
  4907. All three components of the numeric real number must be numbers. A common 
  4908. mistake is to use a reference to a number rather than the number itself. 
  4909.  
  4910.  
  4911.    a REAL ::= {12, 2, x} -- illegal reference
  4912.  
  4913.    x INTEGER ::= 42
  4914.  
  4915. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4916. manual for the correct syntax. 
  4917.  
  4918.  
  4919. ΓòÉΓòÉΓòÉ 16.1.65. GDSC0465 ΓòÉΓòÉΓòÉ
  4920.  
  4921. The EXPORT clause must precede the IMPORTS clause 
  4922.  
  4923. severity: 4 
  4924.  
  4925. The order of the IMPORT and EXPORT clauses is fixed by the ASN.1 standard. The 
  4926. IMPORTS clause, if it exists, comes after the EXPORTS clause. 
  4927.  
  4928. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4929. manual for the correct syntax. 
  4930.  
  4931.  
  4932. ΓòÉΓòÉΓòÉ 16.1.66. GDSC0466 ΓòÉΓòÉΓòÉ
  4933.  
  4934. Only one IMPORTS/EXPORTS clause is allowed per module 
  4935.  
  4936. severity: 4 
  4937.  
  4938. The referenced IMPORTS or EXPORTS clause is not the only one of its kind in the 
  4939. module definition. All of the IMPORTED symbols must be collected into one 
  4940. IMPORTS clause, and likewise for EXPORTED symbols. 
  4941.  
  4942. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4943. manual for the correct syntax. 
  4944.  
  4945.  
  4946. ΓòÉΓòÉΓòÉ 16.1.67. GDSC0467 ΓòÉΓòÉΓòÉ
  4947.  
  4948. typename Type not valid for IBM General Data Stream Definitions Encoding 
  4949.  
  4950. severity: 4 
  4951.  
  4952. The specified type is not supported by IBM GDSD. 
  4953.  
  4954. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4955. manual for a list of the GDSD supported ASN.1 built-in types. 
  4956.  
  4957.  
  4958. ΓòÉΓòÉΓòÉ 16.1.68. GDSC0468 ΓòÉΓòÉΓòÉ
  4959.  
  4960. class Illegal Tag Class for IBM General Data Stream Definitions Encoding 
  4961.  
  4962. severity: 4 
  4963.  
  4964. The specified class is not supported by IBM GDSD. 
  4965.  
  4966. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4967. manual for a description of the GDSD supported tag classes. 
  4968.  
  4969.  
  4970. ΓòÉΓòÉΓòÉ 16.1.69. GDSC0469 ΓòÉΓòÉΓòÉ
  4971.  
  4972. valuename Illegal Value for IBM General Data Stream Definitions Encoding 
  4973.  
  4974. severity: 4 
  4975.  
  4976. The specified value is not supported by IBM GDSD. 
  4977.  
  4978. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4979. manual for a list of the GDSD supported ASN.1 values. 
  4980.  
  4981.  
  4982. ΓòÉΓòÉΓòÉ 16.1.70. GDSC0470 ΓòÉΓòÉΓòÉ
  4983.  
  4984. Illegal GDS variable IDENTIFIER length: min '1', max '4' 
  4985.  
  4986. severity: 4 
  4987.  
  4988. The length of the IDENTIFIER field of a GDS variable (the HexadecimalString of 
  4989. the tag specification) must be in the interval 1-4. 
  4990.  
  4991. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  4992. manual for a description of the GDSD tagged types. 
  4993.  
  4994.  
  4995. ΓòÉΓòÉΓòÉ 16.1.71. GDSC0471 ΓòÉΓòÉΓòÉ
  4996.  
  4997. Illegal GDSUNIQUE value length, maximum length is '4' 
  4998.  
  4999. severity: 4 
  5000.  
  5001. The UNIQUE value item cannot be more than 4 bytes long. 
  5002.  
  5003. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  5004. manual for a description of the GDSD tagged types. 
  5005.  
  5006.  
  5007. ΓòÉΓòÉΓòÉ 16.1.72. GDSC0472 ΓòÉΓòÉΓòÉ
  5008.  
  5009. Illegal segment length:min 'minval', max 'maxval' 
  5010.  
  5011. severity: 4 
  5012.  
  5013. The specified segment length is not valid. 
  5014.  
  5015. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  5016. manual for the allowed range of values, depending on the segmentation type. 
  5017.  
  5018.  
  5019. ΓòÉΓòÉΓòÉ 16.1.73. GDSC0473 ΓòÉΓòÉΓòÉ
  5020.  
  5021. Illegal segment prefix length, correct length is 'prfxlen' 
  5022.  
  5023. severity: 4 
  5024.  
  5025. The segment prefix length is not valid. 
  5026.  
  5027. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  5028. manual for the allowed range of values, depending on the segmentation type. 
  5029.  
  5030.  
  5031. ΓòÉΓòÉΓòÉ 16.1.74. GDSC0474 ΓòÉΓòÉΓòÉ
  5032.  
  5033. Illegal classnum Class Number\n"}, 
  5034.  
  5035. severity: 4 
  5036.  
  5037. The specified class number is not valid. 
  5038.  
  5039. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  5040. manual for a description of the GDSD tagged types. 
  5041.  
  5042.  
  5043. ΓòÉΓòÉΓòÉ 16.1.75. GDSC0475 ΓòÉΓòÉΓòÉ
  5044.  
  5045. Illegal GDSLENGTH Class Number, maximum value is '4' 
  5046.  
  5047. severity: 4 
  5048.  
  5049. The GDSLENGTH class number must be in the range 1-4. 
  5050.  
  5051. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  5052. manual for a description of the GDSLENGTH tag. 
  5053.  
  5054.  
  5055. ΓòÉΓòÉΓòÉ 16.1.76. GDSC0476 ΓòÉΓòÉΓòÉ
  5056.  
  5057. If IBM GDS Definitions are used primitive ASN.1 type 'typename' must be tagged 
  5058. with a GDSD Tag Class 
  5059.  
  5060. severity: 4 
  5061.  
  5062. If an ASN.1 built-in type, supported by GDSD, is tagged, the tag class must be 
  5063. one of the GDSD tag classes. 
  5064.  
  5065. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  5066. manual for a description of the allowed GDSD tag classes. 
  5067.  
  5068.  
  5069. ΓòÉΓòÉΓòÉ 16.1.77. GDSC0477 ΓòÉΓòÉΓòÉ
  5070.  
  5071. Illegal GDSD Tag Class for the ASN.1 type "typename" 
  5072.  
  5073. severity: 4 
  5074.  
  5075. There are specific constraints on the possible GDSD tag classes for the GDSD 
  5076. supported built-in types. 
  5077.  
  5078. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  5079. manual for a description of the allowed GDSD tag classes for each ASN.1 
  5080. built-in type. 
  5081.  
  5082.  
  5083. ΓòÉΓòÉΓòÉ 16.1.78. GDSC0478 ΓòÉΓòÉΓòÉ
  5084.  
  5085. The "classname" Tag Class requires the GDS IDENTIFIER value (i.e. the 
  5086. HexadecimalString of the tag specification) if it tags a "typename" element 
  5087.  
  5088. severity: 4 
  5089.  
  5090. Some GDSD tag classes do not require the specification of the IDENTIFIER value 
  5091. (i.e. the HexadecimalString of the tag specification). However, when they tag 
  5092. specific types, the IDENTIFIER value must be specified. 
  5093.  
  5094. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  5095. manual for a description of the constraints on GDSD tagging for each ASN.1 
  5096. built-in type. 
  5097.  
  5098.  
  5099. ΓòÉΓòÉΓòÉ 16.1.79. GDSC0479 ΓòÉΓòÉΓòÉ
  5100.  
  5101. GDSD Lookahead offset outside the range:min 'minval', max 'maxval' 
  5102.  
  5103. severity: 4 
  5104.  
  5105. The range of the look-ahead offset is 0-255. 
  5106.  
  5107.  
  5108. ΓòÉΓòÉΓòÉ 16.1.80. GDSC0480 ΓòÉΓòÉΓòÉ
  5109.  
  5110. Illegal Tag Class "classname" for the "typename" element 
  5111.  
  5112. severity: 4 
  5113.  
  5114. There are specific constraints on the possible GDSD tag classes for the 
  5115. component types of structured ASN.1 types (SET, SEQUENCE, and so on). 
  5116.  
  5117. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  5118. manual for a description of the constraints on GDSD tagging of component types. 
  5119.  
  5120.  
  5121. ΓòÉΓòÉΓòÉ 16.1.81. GDSC0481 ΓòÉΓòÉΓòÉ
  5122.  
  5123. Illegal Tag Class "GDSUNKNLT" for types requiring explicit IDENTIFIER or LENGTH 
  5124.  
  5125. severity: 4 
  5126.  
  5127. GDSUNKNLT tag class do not require the specification of the IDENTIFIER value 
  5128. (the HexadecimalString of the tag specification) and LENGTH length. However, 
  5129. when it tags specific types the IDENTIFIER value and the LENGTH length must be 
  5130. specified. 
  5131.  
  5132. See the General Data Stream Encoder/Decoder User's and Programmer's Guide 
  5133. manual for a description of the constraints on GDSD tagging for each ASN.1 
  5134. built-in type. 
  5135.  
  5136.  
  5137. ΓòÉΓòÉΓòÉ 16.1.82. GDSC0482 ΓòÉΓòÉΓòÉ
  5138.  
  5139. Illegal Tag Class "classname" for the "CHOICE" alternative 
  5140.  
  5141. severity: 4 
  5142.  
  5143. There are specific constraints on the GDSD tagging of the CHOICE alternative 
  5144. types. 
  5145.  
  5146.  
  5147. ΓòÉΓòÉΓòÉ 16.1.83. GDSC0483 ΓòÉΓòÉΓòÉ
  5148.  
  5149. The "classname" Tag Class requires the Class Number if it tags a "CHOICE" 
  5150. alternative 
  5151.  
  5152. severity: 4 
  5153.  
  5154. There are specific constraints on the GDSD tagging of the CHOICE alternative 
  5155. types. 
  5156.  
  5157.  
  5158. ΓòÉΓòÉΓòÉ 16.1.84. GDSC0484 ΓòÉΓòÉΓòÉ
  5159.  
  5160. More than one level of segmentation, or segmentation inside defined length GDS 
  5161. variable 
  5162.  
  5163. severity: 4 
  5164.  
  5165. Only one level of segmentation is possible at a time. Moreover it is not 
  5166. possible define segmentation inside a type with a defined-length. See the 
  5167. General Data Stream Encoder/Decoder User's and Programmer's Guide manual for 
  5168. more details about these constraints. 
  5169.  
  5170.  
  5171. ΓòÉΓòÉΓòÉ 16.1.85. GDSC0485 ΓòÉΓòÉΓòÉ
  5172.  
  5173. If IBM GDS Definitions are used all types cannot be EXPLICIT tagged 
  5174.  
  5175. severity: 4 
  5176.  
  5177. If GDSD is used, all the ASN.1 supported tagged types must be IMPLICIT tagged. 
  5178.  
  5179.  
  5180. ΓòÉΓòÉΓòÉ 16.1.86. GDSC0486 ΓòÉΓòÉΓòÉ
  5181.  
  5182. Illegal look-ahead test-value length, maximum length is 'maxlen' 
  5183.  
  5184. severity: 4 
  5185.  
  5186. The look-ahead test value cannot be longer than 4 bytes. 
  5187.  
  5188.  
  5189. ΓòÉΓòÉΓòÉ 16.1.87. GDSC0487 ΓòÉΓòÉΓòÉ
  5190.  
  5191. Illegal GDS variable IDENTIFIER value: min '00'H, max '7FFFFFFF'H 
  5192.  
  5193. severity: 4 
  5194.  
  5195. The IDENTIFIER value of a GDS variable (the HexadecimalString of the tag 
  5196. specification) can be 1 to 4 bytes long, and its value can be from '00'H to 
  5197. '7FFFFFFF'H. 
  5198.  
  5199.  
  5200. ΓòÉΓòÉΓòÉ 16.1.88. GDSC0488 ΓòÉΓòÉΓòÉ
  5201.  
  5202. Illegal look-ahead test value: min '00'H, max '7FFFFFFF'H 
  5203.  
  5204. severity: 4 
  5205.  
  5206. The look-ahead test value (the HexadecimalString of the tag specification) can 
  5207. be 1 to 4 bytes long, and its value can be from '00'H to '7FFFFFFF'H. 
  5208.  
  5209.  
  5210. ΓòÉΓòÉΓòÉ 16.2. Warning Messages ΓòÉΓòÉΓòÉ
  5211.  
  5212.  
  5213. ΓòÉΓòÉΓòÉ 16.2.1. GDSC0301 ΓòÉΓòÉΓòÉ
  5214.  
  5215. This alternative reference is to a CHOICE type defined in another module 
  5216.  
  5217. severity: 3 
  5218.  
  5219. It is not good practice to refer to a CHOICE alternative that is defined in 
  5220. another module not in this source file. Since the compiler cannot perform the 
  5221. necessary checks to ensure the reference is correct, you should do so. 
  5222.  
  5223.  
  5224. ΓòÉΓòÉΓòÉ 16.2.2. GDSC0302 ΓòÉΓòÉΓòÉ
  5225.  
  5226. External reference "Identifier" should be in IMPORTS list 
  5227.  
  5228. severity: 3 
  5229.  
  5230. It is good practice to identify the imported symbols in the IMPORTS list of the 
  5231. module definition. See the General Data Stream Encoder/Decoder User's and 
  5232. Programmer's Guide manual for the correct syntax. 
  5233.  
  5234.  
  5235. ΓòÉΓòÉΓòÉ 16.2.3. GDSC0303 ΓòÉΓòÉΓòÉ
  5236.  
  5237. Not in a syntactic extension - "%--" is out of context 
  5238.  
  5239. severity: 3 
  5240.  
  5241. A termination of a syntactic extension, "%--" was found outside of a syntactic 
  5242. extension, that is , there is no matching "--%". Check to see that pairs of 
  5243. "--%" and "%--" match correctly. 
  5244.  
  5245.  
  5246. ΓòÉΓòÉΓòÉ 16.2.4. GDSC0304 ΓòÉΓòÉΓòÉ
  5247.  
  5248. This tag is made EXPLICIT because it tags CHOICE/ANY type 
  5249.  
  5250. severity: 3 
  5251.  
  5252. ASN.1 forces this tag to be EXPLICIT even though the default tagging for the 
  5253. module was IMPLICIT. If you intended this to be the case, better practice is to 
  5254. use the EXPLICIT keyword to make this clear. Note that ASN.1 prohibits the 
  5255. IMPLICIT keyword to be applied to CHOICE and ANY types. For example, these are 
  5256. illegal definitions: 
  5257.  
  5258.   A ::= [0] IMPLICIT CHOICE{ a INTEGER, b NULL }
  5259.   B ::= [1] IMPLICIT ANY
  5260.  
  5261.  
  5262. ΓòÉΓòÉΓòÉ 16.2.5. GDSC0305 ΓòÉΓòÉΓòÉ
  5263.  
  5264. A comment inside a syntactic extension is not portable 
  5265.  
  5266. severity: 3 
  5267.  
  5268. This compiler allows comments within a syntactic extension. However, since 
  5269. syntactic extensions are not standard ASN.1 notation, other ASN.1 compilers 
  5270. will interpret the comments incorrectly and will cause error messages. 
  5271. Specifically, standard ASN.1 compilers will interpret the syntactic introducer, 
  5272. "--%", as the start of a comment, and when they encounter a "--", they will 
  5273. terminate the comment.  Then, your commentary will be parsed as though it were 
  5274. not an ASN.1 comment. For example, the following is likely to cause other 
  5275. compilers to interpret Foo as a type reference, which it isn't: 
  5276.  
  5277.   --% -- Foo is a very useless name -- %--
  5278.  
  5279.  
  5280. ΓòÉΓòÉΓòÉ 16.2.6. GDSC0306 ΓòÉΓòÉΓòÉ
  5281.  
  5282. Special character only allowed in syntactic extension 
  5283.  
  5284. severity: 3 
  5285.  
  5286. The character at the line and column number is not a standard ASN.1 character 
  5287. and should only be used within a syntactic extension, for example, between --% 
  5288. and %--. This is a portability warning since other ASN.1 compilers are likely 
  5289. to balk at this character. 
  5290.  
  5291.  
  5292. ΓòÉΓòÉΓòÉ 16.2.7. GDSC0307 ΓòÉΓòÉΓòÉ
  5293.  
  5294. A syntactic guard start, "--%", inside a syntactic extension is not portable 
  5295.  
  5296. severity: 3 
  5297.  
  5298. The syntactic guard start, "--%", was found when another, previous syntactic 
  5299. guard is still in effect. This usually indicates unmatched syntactic guard 
  5300. start/end pairs. In this case, the extraneous syntactic guard start is ignored. 
  5301.  
  5302.  
  5303. ΓòÉΓòÉΓòÉ 16.2.8. GDSC0308 ΓòÉΓòÉΓòÉ
  5304.  
  5305. This NamedType should have an identifier 
  5306.  
  5307. severity: 3 
  5308.  
  5309. The current version of ASN.1 does not require named types to have an 
  5310. identifier, but future versions will. It is good practice to always use 
  5311. identifiers for named types because the some value notations and type notations 
  5312. are made unambiguous if the identifier is used. A named type is a type 
  5313. specification preceded by an optional identifier (which must begin with a 
  5314. lowercase letter). In the following example, foo INTEGER is the named type, 
  5315. "foo" is the identifier, and "INTEGER" is the type being named: 
  5316.  
  5317.    A ::= SET{ foo INTEGER, fum BOOLEAN}
  5318.  
  5319.  
  5320. ΓòÉΓòÉΓòÉ 16.2.9. GDSC0309 ΓòÉΓòÉΓòÉ
  5321.  
  5322. No ".* asn.1 on" introducer was found 
  5323.  
  5324. severity: 3 
  5325.  
  5326. The SCRIPT option was specified and the compiler was not able to find a single 
  5327. ASN.1 section in the source file. Hence no ASN.1 source was parsed. If the file 
  5328. is indeed a mixture of BookMaster/Script and ASN.1 source, you must add the ".* 
  5329. asn.1 on" and ".* asn.1 off" lines in the appropriate places. If the file only 
  5330. contains ASN.1 statements, you should probably not use the SCRIPT option. See 
  5331. GDSASN1 Compiler input for more information on the SCRIPT option. 
  5332.  
  5333.  
  5334. ΓòÉΓòÉΓòÉ 16.2.10. GDSC0310 ΓòÉΓòÉΓòÉ
  5335.  
  5336. External reference "symbolname" should be exported from module "modulename" 
  5337.  
  5338. severity: 3 
  5339.  
  5340. The external reference, symbolname, does not appear in an EXPORTS clause of the 
  5341. referenced module, modulename. Although this is not an error, better practice 
  5342. is to explicitly declare which symbols are imported and exported between 
  5343. modules. 
  5344.  
  5345.  
  5346. ΓòÉΓòÉΓòÉ 16.2.11. GDSC0201 ΓòÉΓòÉΓòÉ
  5347.  
  5348. feature not supported at run-time 
  5349.  
  5350. severity: 2 
  5351.  
  5352. The syntax is valid ASN.1.  However, the information related to the feature is 
  5353. not carried over into the metatable output. This may or may not affect the way 
  5354. your encoding/decoding application works.  You should check to ensure your 
  5355. program does not require this feature in this instance. 
  5356.  
  5357.  
  5358. ΓòÉΓòÉΓòÉ 16.2.12. GDSC0202 ΓòÉΓòÉΓòÉ
  5359.  
  5360. Total length of symbols is symtablength; the maximum is maxsymtablength. 
  5361.  
  5362. severity: 2 
  5363.  
  5364. The symbol table length exceeds the maximum symbol table length defined by the 
  5365. MAXSYMTABLEN (65535). 
  5366.  
  5367.  
  5368. ΓòÉΓòÉΓòÉ 17. Appendix C. GDSTABLE Translator Return Codes and Messages ΓòÉΓòÉΓòÉ
  5369.  
  5370.  
  5371. ΓòÉΓòÉΓòÉ 17.1. GDST0401 ΓòÉΓòÉΓòÉ
  5372.  
  5373. Incorrect table file version. Expected version. Found version. 
  5374.  
  5375. severity: 4 
  5376.  
  5377. The versions of the ASN.1 Compiler and the GDSTABLE programs are not the same. 
  5378.  
  5379.  
  5380. ΓòÉΓòÉΓòÉ 17.2. GDST0402 ΓòÉΓòÉΓòÉ
  5381.  
  5382. Symbol table is symtablength characters long. The maximum allowed is 
  5383. maxsymtablength defined by MAXSYMTABLEN (65535). 
  5384.  
  5385. severity: 4 
  5386.  
  5387. The symbol table length exceeds the maximum symbol table length defined by the 
  5388. MAXSYMTABLEN (65535). 
  5389.  
  5390.  
  5391. ΓòÉΓòÉΓòÉ 17.3. GDST0403 ΓòÉΓòÉΓòÉ
  5392.  
  5393. Metatable size is metatabsize long; the maximum is maxmetatabsize 
  5394.  
  5395. severity: 4 
  5396.  
  5397. The metatable size exceeds the maximum metatable size defined by the 
  5398. MAXTOKTABLEN (65535). 
  5399.  
  5400.  
  5401. ΓòÉΓòÉΓòÉ 17.4. GDST0404 ΓòÉΓòÉΓòÉ
  5402.  
  5403. Argument argument is unknown. 
  5404.  
  5405. severity: 4 
  5406.  
  5407. The specified argument is unknown. 
  5408.  
  5409.  
  5410. ΓòÉΓòÉΓòÉ 17.5. GDST0405 ΓòÉΓòÉΓòÉ
  5411.  
  5412. Error opening error output file, error_file. 
  5413.  
  5414. severity: 4 
  5415.  
  5416. The specified error output file cannot be opened. 
  5417.  
  5418.  
  5419. ΓòÉΓòÉΓòÉ 17.6. GDST0406 ΓòÉΓòÉΓòÉ
  5420.  
  5421. Error opening C output data file, C_data_file. 
  5422.  
  5423. severity: 4 
  5424.  
  5425. The specified C output data file cannot be opened. 
  5426.  
  5427.  
  5428. ΓòÉΓòÉΓòÉ 17.7. GDST0407 ΓòÉΓòÉΓòÉ
  5429.  
  5430. Error opening C output header file, C_header_file. 
  5431.  
  5432. severity: 4 
  5433.  
  5434. The specified C output header file cannot be opened. 
  5435.  
  5436.  
  5437. ΓòÉΓòÉΓòÉ 17.8. GDST0408 ΓòÉΓòÉΓòÉ
  5438.  
  5439. Error opening table input file, TBL_file. 
  5440.  
  5441. severity: 4 
  5442.  
  5443. The specified table input file cannot be opened. 
  5444.  
  5445.  
  5446. ΓòÉΓòÉΓòÉ 17.9. GDST0409 ΓòÉΓòÉΓòÉ
  5447.  
  5448. Error opening data output file, DAT_file. 
  5449.  
  5450. severity: 4 
  5451.  
  5452. The specified data output file cannot be opened. 
  5453.  
  5454.  
  5455. ΓòÉΓòÉΓòÉ 17.10. GDST0410 ΓòÉΓòÉΓòÉ
  5456.  
  5457. Internal error. 
  5458.  
  5459. severity: 4 
  5460.  
  5461. Something is wrong in the TBL file. A not defined token type has been found by 
  5462. GDSTABLE program. Try to recompile the ASN.1 source to generate again the TBL 
  5463. file. 
  5464.  
  5465.  
  5466. ΓòÉΓòÉΓòÉ 17.11. GDST0411 ΓòÉΓòÉΓòÉ
  5467.  
  5468. Error opening TEST TOOL output file, TST_TOOL_file. 
  5469.  
  5470. severity: 4 
  5471.  
  5472. The specified output file that must contain the pre-formatted data for test 
  5473. tool cannot be opened. 
  5474.  
  5475.  
  5476. ΓòÉΓòÉΓòÉ 17.12. GDST0412 ΓòÉΓòÉΓòÉ
  5477.  
  5478. Error allocating storage 
  5479.  
  5480. severity: 4 
  5481.  
  5482. Some internal or system error occurred during the storage allocation. 
  5483.  
  5484.  
  5485. ΓòÉΓòÉΓòÉ 18. Appendix D. GDSEDLIB Runtime Library Return Codes ΓòÉΓòÉΓòÉ
  5486.  
  5487. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5488. ΓöéFunction Name                 ΓöéReturn Code Name                             ΓöéRC   ΓöéMeaning                       Γöé
  5489. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5490. ΓöéGDSaddmodule                  ΓöéADDMODULE_OK                                 Γöé0    ΓöéThe module was successfully   Γöé
  5491. Γöé                              Γöé                                             Γöé     Γöéadded.                        Γöé
  5492. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5493. Γöé                              ΓöéADDMODULE_DUP_MODULE                         Γöé-1   ΓöéAnother module with the same  Γöé
  5494. Γöé                              Γöé                                             Γöé     Γöéname already exists in the    Γöé
  5495. Γöé                              Γöé                                             Γöé     Γöélist of active modules in the Γöé
  5496. Γöé                              Γöé                                             Γöé     Γöérun-time environment.         Γöé
  5497. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5498. ΓöéGDSAllocateContentsArray      ΓöéALLOCATECONT_OK                              Γöé0    ΓöéThe contents-array was        Γöé
  5499. Γöé                              Γöé                                             Γöé     Γöésuccessfully allocated.       Γöé
  5500. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5501. Γöé                              ΓöéALLOCATECONT_NO_ENOUGH_STORAGE               Γöé-1   ΓöéSome problem occurred during  Γöé
  5502. Γöé                              Γöé                                             Γöé     Γöéstorage allocation.           Γöé
  5503. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5504. Γöé                              ΓöéALLOCATECONT_INVALID_MODULE                  Γöé-2   ΓöéThe module is invalid.        Γöé
  5505. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5506. ΓöéGDSAllocateContListArray      ΓöéALLOCATECONTLIST_OK                          Γöé0    ΓöéThe array was successfully    Γöé
  5507. Γöé                              Γöé                                             Γöé     Γöéallocated.                    Γöé
  5508. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5509. Γöé                              ΓöéALLOCATECONTLIST_NO_ENOUGH_STORAGE           Γöé-1   ΓöéSome problem occurred during  Γöé
  5510. Γöé                              Γöé                                             Γöé     Γöéstorage allocation.           Γöé
  5511. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5512. ΓöéGDSAllocateGdsTreeArray       ΓöéALLOCATEGDSTREE_OK                           Γöé0    ΓöéThe array was successfully    Γöé
  5513. Γöé                              Γöé                                             Γöé     Γöéallocated.                    Γöé
  5514. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5515. Γöé                              ΓöéALLOCATEGDSTREE_NO_ENOUGH_STORAGE            Γöé-1   ΓöéSome problem occurred during  Γöé
  5516. Γöé                              Γöé                                             Γöé     Γöéstorage allocation.           Γöé
  5517. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5518. Γöé                              ΓöéALLOCATEGDSTREE_INVALID_MODULE               Γöé-2   ΓöéThe module is invalid.        Γöé
  5519. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5520. Γöébasetype                      ΓöéBASETYPE_OK                                  Γöé0    ΓöéThe base type was successfullyΓöé
  5521. Γöé                              Γöé                                             Γöé     Γöéfound.                        Γöé
  5522. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5523. Γöé                              ΓöéBASETYPE_WRONG_TOKEN                         Γöé1    ΓöéIn searching for the base     Γöé
  5524. Γöé                              Γöé                                             Γöé     Γöétype, a metatoken was         Γöé
  5525. Γöé                              Γöé                                             Γöé     Γöéencountered that shouldn't    Γöé
  5526. Γöé                              Γöé                                             Γöé     Γöéhave been there, indicating a Γöé
  5527. Γöé                              Γöé                                             Γöé     Γöéstructural problem with the   Γöé
  5528. Γöé                              Γöé                                             Γöé     Γöémetatable.                    Γöé
  5529. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5530. Γöé                              ΓöéBASETYPE_UNRESOLVED_EXTERN_REF               Γöé2    ΓöéIn searching for the base     Γöé
  5531. Γöé                              Γöé                                             Γöé     Γöétype, an unresolved external  Γöé
  5532. Γöé                              Γöé                                             Γöé     Γöéreference was encountered.    Γöé
  5533. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5534. ΓöéGDSdecber                     ΓöéDECBER_OK                                    Γöé0    ΓöéThe decoding process was      Γöé
  5535. Γöé                              Γöé                                             Γöé     Γöésuccessful.                   Γöé
  5536. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5537. Γöé                              ΓöéDECBER_SYNTAX_ERROR                          Γöé-1   ΓöéA syntax error was encounteredΓöé
  5538. Γöé                              Γöé                                             Γöé     Γöéin the buffer.                Γöé
  5539. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5540. Γöé                              ΓöéDECBER_NO_ENOUGH_STORAGE                     Γöé-2   ΓöéSome problem occurred during  Γöé
  5541. Γöé                              Γöé                                             Γöé     Γöéstorage allocation.           Γöé
  5542. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5543. Γöé                              ΓöéDECBER_BUFFER_EMPTY                          Γöé-3   ΓöéThe input buffer is empty.    Γöé
  5544. Γöé                              Γöé                                             Γöé     ΓöéProbably the data stream is   Γöé
  5545. Γöé                              Γöé                                             Γöé     Γöénot complete.                 Γöé
  5546. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5547. Γöé                              ΓöéDECBER_BUFFER_TOO_SMALL                      Γöé-4   ΓöéThe input buffer is too small,Γöé
  5548. Γöé                              Γöé                                             Γöé     Γöéit must be at least 150 bytes Γöé
  5549. Γöé                              Γöé                                             Γöé     Γöélong.                         Γöé
  5550. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5551. ΓöéGDSdecgdsd                    ΓöéDECGDSD_NO_MATCH                             Γöé1    ΓöéThe decoded type does not     Γöé
  5552. Γöé                              Γöé                                             Γöé     Γöématch the decoded data.       Γöé
  5553. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5554. Γöé                              ΓöéDECGDSD_MATCH                                Γöé0    ΓöéThe decode type matches the   Γöé
  5555. Γöé                              Γöé                                             Γöé     Γöédecoded data.                 Γöé
  5556. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5557. Γöé                              ΓöéDECGDSD_SYNTAX_ERROR                         Γöé-1   ΓöéA syntax error was encounteredΓöé
  5558. Γöé                              Γöé                                             Γöé     Γöéin the data.                  Γöé
  5559. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5560. Γöé                              ΓöéDECGDSD_INTERNAL_ERROR                       Γöé-2   ΓöéAn internal programming error Γöé
  5561. Γöé                              Γöé                                             Γöé     Γöéoccurred. Probably something  Γöé
  5562. Γöé                              Γöé                                             Γöé     Γöéis wrong in the Metatable.    Γöé
  5563. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5564. Γöé                              ΓöéDECGDSD_UNRESOLVED_REFERENCE                 Γöé-3   ΓöéAn unresolved external        Γöé
  5565. Γöé                              Γöé                                             Γöé     Γöéreference was encountered.    Γöé
  5566. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5567. Γöé                              ΓöéDECGDSD_BUFFER_EMPTY                         Γöé-4   ΓöéOther data must be decoded butΓöé
  5568. Γöé                              Γöé                                             Γöé     Γöéthe reading user-exit does notΓöé
  5569. Γöé                              Γöé                                             Γöé     Γöéload other data in the buffer Γöé
  5570. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5571. Γöé                              ΓöéDECGDSD_INVALID_ID                           Γöé-5   ΓöéThe decoded IDENTIFIER value  Γöé
  5572. Γöé                              Γöé                                             Γöé     Γöédoes not match the correct    Γöé
  5573. Γöé                              Γöé                                             Γöé     Γöévalue.                        Γöé
  5574. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5575. Γöé                              ΓöéDECGDSD_INVALID_UNIQUE_ITEM                  Γöé-6   ΓöéThe decoded unique item value Γöé
  5576. Γöé                              Γöé                                             Γöé     Γöédoes not match the correct    Γöé
  5577. Γöé                              Γöé                                             Γöé     Γöévalue.                        Γöé
  5578. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5579. Γöé                              ΓöéDECGDSD_INVALID_LENGTH                       Γöé-7   ΓöéThe length of decoded data    Γöé
  5580. Γöé                              Γöé                                             Γöé     Γöédoes not match the correct    Γöé
  5581. Γöé                              Γöé                                             Γöé     Γöévalue.                        Γöé
  5582. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5583. Γöé                              ΓöéDECGDSD_NO_ENOUGH_STORAGE                    Γöé-8   ΓöéSome problem occurred during  Γöé
  5584. Γöé                              Γöé                                             Γöé     Γöéstorage allocation.           Γöé
  5585. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5586. Γöé                              ΓöéDECGDSD_INVALID_SEG_ID_PREFIX                Γöé-9   ΓöéThe decoded LL segment prefix Γöé
  5587. Γöé                              Γöé                                             Γöé     Γöédoes not match the correct    Γöé
  5588. Γöé                              Γöé                                             Γöé     Γöévalue.                        Γöé
  5589. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5590. Γöé                              ΓöéDECGDSD_INVALID_SEG_SEQ_NUM                  Γöé-10  ΓöéThe decoded segment sequence  Γöé
  5591. Γöé                              Γöé                                             Γöé     Γöénumber is not correct.        Γöé
  5592. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5593. Γöé                              ΓöéDECGDSD_INVALID_SEG_IDF_PREFIX               Γöé-11  ΓöéThe decoded LLIDFISS segment  Γöé
  5594. Γöé                              Γöé                                             Γöé     Γöéprefix does not match the     Γöé
  5595. Γöé                              Γöé                                             Γöé     Γöécorrect value.                Γöé
  5596. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5597. Γöé                              ΓöéDECGDSD_LAST_SEG_BEFORE_EOD                  Γöé-12  ΓöéContent data are segmentated  Γöé
  5598. Γöé                              Γöé                                             Γöé     Γöéand the last segment indicatorΓöé
  5599. Γöé                              Γöé                                             Γöé     Γöéindicates that this is the    Γöé
  5600. Γöé                              Γöé                                             Γöé     Γöélast segment, but not all the Γöé
  5601. Γöé                              Γöé                                             Γöé     Γöécontent data has been decoded.Γöé
  5602. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5603. Γöé                              Γöé.DECGDSD_MISSING_MANDATORY_ELEMENT           Γöé-13  ΓöéA mandatory element of SET or Γöé
  5604. Γöé                              Γöé                                             Γöé     ΓöéSEQUENCE type is missing.     Γöé
  5605. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5606. Γöé                              ΓöéDECGDSD_BUFFER_TOO_SMALL                     Γöé-14  ΓöéThe input buffer is too small,Γöé
  5607. Γöé                              Γöé                                             Γöé     Γöéit must be at least 300 bytes Γöé
  5608. Γöé                              Γöé                                             Γöé     Γöélong.                         Γöé
  5609. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5610. Γöé                              ΓöéDECGDSD_USR_DEC_FUN_FAILED                   Γöé-15  ΓöéThe decoding user-exit failed.Γöé
  5611. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5612. Γöé                              ΓöéDECGDSD_SUBTYPE_CONSTRNTS_NO_MATCH           Γöé-16  ΓöéDecoded content data do not   Γöé
  5613. Γöé                              Γöé                                             Γöé     Γöématch a sub-type constraint.  Γöé
  5614. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5615. ΓöéGDSdecode                     ΓöéDECODE_MATCH                                 Γöé0    ΓöéThe GDS structure tree matchesΓöé
  5616. Γöé                              Γöé                                             Γöé     Γöéthe ASN.1 type.               Γöé
  5617. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5618. Γöé                              ΓöéDECODE_NO_MATCH                              Γöé1    ΓöéThe GDS structure tree does   Γöé
  5619. Γöé                              Γöé                                             Γöé     Γöénot match the ASN.1 type.     Γöé
  5620. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5621. Γöé                              ΓöéDECODE_SYNTAX_ERROR                          Γöé-1   ΓöéThe GDS tree does not match   Γöé
  5622. Γöé                              Γöé                                             Γöé     Γöéthe ASN.1 type and            Γöé
  5623. Γöé                              Γöé                                             Γöé     Γöéfurthermore, some syntax errorΓöé
  5624. Γöé                              Γöé                                             Γöé     Γöéhas been detected, e.g. a     Γöé
  5625. Γöé                              Γöé                                             Γöé     Γöéconstructed INTEGER value.    Γöé
  5626. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5627. Γöé                              ΓöéDECODE_INTERNAL_ERROR                        Γöé-2   ΓöéAn internal programming error Γöé
  5628. Γöé                              Γöé                                             Γöé     Γöéoccurred. Probably something  Γöé
  5629. Γöé                              Γöé                                             Γöé     Γöéis wrong in the Metatable.    Γöé
  5630. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5631. Γöé                              ΓöéDECODE_UNRESOLVED_REFERENCE                  Γöé-3   ΓöéAn unresolved external        Γöé
  5632. Γöé                              Γöé                                             Γöé     Γöéreference was encountered.    Γöé
  5633. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5634. Γöé                              ΓöéDECODE_USR_DEC_FUN_FAILED                    Γöé-4   ΓöéThe decoding user-exit failed.Γöé
  5635. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5636. Γöé                              ΓöéDECODE_SUBTYPE_CONSTRNTS_NO_MATCH            Γöé-5   ΓöéDecoded content data do not   Γöé
  5637. Γöé                              Γöé                                             Γöé     Γöématch a sub-type constraint.  Γöé
  5638. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5639. ΓöéGDSencber                     ΓöéENCBER_OK                                    Γöé0    ΓöéThe encoding process was      Γöé
  5640. Γöé                              Γöé                                             Γöé     Γöésuccessful.                   Γöé
  5641. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5642. Γöé                              ΓöéENCBER_NO_ENOUGH_STORAGE                     Γöé-1   ΓöéSome problem occurred during  Γöé
  5643. Γöé                              Γöé                                             Γöé     Γöéstorage allocation.           Γöé
  5644. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5645. Γöé                              ΓöéENCBER_GDSUSRWRT_FAILED                      Γöé-2   ΓöéThe writing user-exit failed. Γöé
  5646. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5647. Γöé                              ΓöéENCBER_USER_EXIT_FAILED                      Γöé-3   ΓöéThe content user-exit failed. Γöé
  5648. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5649. Γöé                              ΓöéENCBER_PRIM_TYPE_CONTENT_MISSING             Γöé-4   ΓöéNo content data or incomplete Γöé
  5650. Γöé                              Γöé                                             Γöé     Γöécontent data have been passed Γöé
  5651. Γöé                              Γöé                                             Γöé     Γöéfor the primitive type.       Γöé
  5652. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5653. Γöé                              ΓöéENCBER_INTERNAL_ERROR                        Γöé-5   ΓöéAn internal programming error Γöé
  5654. Γöé                              Γöé                                             Γöé     Γöéoccurred.                     Γöé
  5655. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5656. Γöé                              ΓöéENCBER_UNDEFLEN_NOT_PERMITTED                Γöé-6   ΓöéIndefinite length used for    Γöé
  5657. Γöé                              Γöé                                             Γöé     Γöéprimitive type.               Γöé
  5658. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5659. Γöé                              ΓöéENCBER_BUFFER_TOO_SMALL                      Γöé-7   ΓöéThe output buffer is too      Γöé
  5660. Γöé                              Γöé                                             Γöé     Γöésmall, it must be at least 150Γöé
  5661. Γöé                              Γöé                                             Γöé     Γöébytes long.                   Γöé
  5662. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5663. ΓöéGDSencgdsd                    ΓöéENCGDSD_OK                                   Γöé0    ΓöéThe encoding process was      Γöé
  5664. Γöé                              Γöé                                             Γöé     Γöésuccessful.                   Γöé
  5665. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5666. Γöé                              ΓöéENCGDSD_INTERNAL_ERROR                       Γöé-1   ΓöéAn internal programming error Γöé
  5667. Γöé                              Γöé                                             Γöé     Γöéoccurred. Probably something  Γöé
  5668. Γöé                              Γöé                                             Γöé     Γöéis wrong in the GDS structure Γöé
  5669. Γöé                              Γöé                                             Γöé     Γöétree.                         Γöé
  5670. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5671. Γöé                              ΓöéENCGDSD_BUFFER_TOO_SMALL                     Γöé-2   ΓöéThe output buffer is too      Γöé
  5672. Γöé                              Γöé                                             Γöé     Γöésmall, it must be at least 9  Γöé
  5673. Γöé                              Γöé                                             Γöé     Γöébytes long.                   Γöé
  5674. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5675. Γöé                              ΓöéENCGDSD_GDSUSRWRT_FAILED                     Γöé-3   ΓöéThe writing user-exit failed. Γöé
  5676. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5677. Γöé                              ΓöéENCGDSD_INVALID_CLASS                        Γöé-4   ΓöéAn invalid GDSD tag class was Γöé
  5678. Γöé                              Γöé                                             Γöé     Γöéfound in a GDS structure.     Γöé
  5679. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5680. Γöé                              ΓöéENCGDSD_INVALID_FIXED_ITEM_LENGTH            Γöé-5   ΓöéAn invalid length value was   Γöé
  5681. Γöé                              Γöé                                             Γöé     Γöéfound in the GDS structure    Γöé
  5682. Γöé                              Γöé                                             Γöé     Γöécorresponding to a GDSFLEN    Γöé
  5683. Γöé                              Γöé                                             Γöé     Γöétagged type.                  Γöé
  5684. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5685. Γöé                              ΓöéENCGDSD_NO_ENOUGH_STORAGE                    Γöé-6   ΓöéSome problem occurred during  Γöé
  5686. Γöé                              Γöé                                             Γöé     Γöéstorage allocation.           Γöé
  5687. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5688. Γöé                              ΓöéENCGDSD_INVALID_LENGTH                       Γöé-7   ΓöéAn invalid length value was   Γöé
  5689. Γöé                              Γöé                                             Γöé     Γöéfound in the GDS structure    Γöé
  5690. Γöé                              Γöé                                             Γöé     Γöécorresponding to a GDSLENGTH  Γöé
  5691. Γöé                              Γöé                                             Γöé     Γöétagged type.                  Γöé
  5692. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5693. Γöé                              ΓöéENCGDSD_INVALID_LL_LENGTH                    Γöé-8   ΓöéAn invalid length value of theΓöé
  5694. Γöé                              Γöé                                             Γöé     ΓöéLENGTH field was found in the Γöé
  5695. Γöé                              Γöé                                             Γöé     ΓöéGDS structure corresponding toΓöé
  5696. Γöé                              Γöé                                             Γöé     Γöéa GDSLENGTH type.             Γöé
  5697. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5698. Γöé                              ΓöéENCGDSD_UNDEFLEN_NOT_PERMITTED               Γöé-9   ΓöéA GDS structure with undefinedΓöé
  5699. Γöé                              Γöé                                             Γöé     Γöélength was found, but         Γöé
  5700. Γöé                              Γöé                                             Γöé     Γöésegmentation is not used.     Γöé
  5701. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5702. Γöé                              ΓöéENCGDSD_SEGMENT_TOO_SHORT                    Γöé-10  ΓöéLLIDFISS segmentation is used Γöé
  5703. Γöé                              Γöé                                             Γöé     Γöéwith a too short segment.     Γöé
  5704. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5705. Γöé                              ΓöéENCGDSD_PRIM_TYPE_CONTENT_MISSING            Γöé-11  ΓöéNo content data or incomplete Γöé
  5706. Γöé                              Γöé                                             Γöé     Γöécontent data have been passed Γöé
  5707. Γöé                              Γöé                                             Γöé     Γöéfor the primitive type.       Γöé
  5708. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5709. Γöé                              ΓöéENCGDSD_USER_EXIT_FAILED                     Γöé-12  ΓöéThe content user-exit failed. Γöé
  5710. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5711. Γöé                              ΓöéENCGDSD_NESTED_SEGMENT                       Γöé-13  ΓöéNesting of segmented types hasΓöé
  5712. Γöé                              Γöé                                             Γöé     Γöébeen found.                   Γöé
  5713. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5714. ΓöéGDSencode                     ΓöéENCODE_MATCH                                 Γöé0    ΓöéThe encode operation concludedΓöé
  5715. Γöé                              Γöé                                             Γöé     Γöésuccessfully.                 Γöé
  5716. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5717. Γöé                              ΓöéENCODE_NO_MATCH                              Γöé1    ΓöéThe encoding operation        Γöé
  5718. Γöé                              Γöé                                             Γöé     Γöéterminated unsuccessfully due Γöé
  5719. Γöé                              Γöé                                             Γöé     Γöéto a mismatch in the syntax ofΓöé
  5720. Γöé                              Γöé                                             Γöé     Γöéthe value to be encoded and   Γöé
  5721. Γöé                              Γöé                                             Γöé     Γöéits related type.             Γöé
  5722. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5723. Γöé                              ΓöéENCODE_SYNTAX_ERROR                          Γöé-1   ΓöéThe encoding operation        Γöé
  5724. Γöé                              Γöé                                             Γöé     Γöéterminated unsuccessfully due Γöé
  5725. Γöé                              Γöé                                             Γöé     Γöéto a syntax error.            Γöé
  5726. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5727. Γöé                              ΓöéENCODE_INTERNAL_ERROR                        Γöé-2   ΓöéAn internal programming error Γöé
  5728. Γöé                              Γöé                                             Γöé     Γöéoccurred. Probably something  Γöé
  5729. Γöé                              Γöé                                             Γöé     Γöéis wrong in the Metatabel or  Γöé
  5730. Γöé                              Γöé                                             Γöé     Γöéthe encoding user-exit        Γöé
  5731. Γöé                              Γöé                                             Γöé     Γöésupplies an empty sub-tree.   Γöé
  5732. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5733. Γöé                              ΓöéENCODE_UNRESOLVED_REFERENCE                  Γöé-3   ΓöéAn unresolved external        Γöé
  5734. Γöé                              Γöé                                             Γöé     Γöéreference was encountered.    Γöé
  5735. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5736. Γöé                              ΓöéENCODE_INVALID_GDSD_FIXED_LENGTH             Γöé-4   ΓöéA GDS structure corresponding Γöé
  5737. Γöé                              Γöé                                             Γöé     Γöéto a GDSFLEN tagged type has  Γöé
  5738. Γöé                              Γöé                                             Γöé     Γöéan invalid length value       Γöé
  5739. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5740. Γöé                              ΓöéENCODE_INVALID_ENCODING_TYPE                 Γöé-5   ΓöéThe encoding type specified isΓöé
  5741. Γöé                              Γöé                                             Γöé     Γöénot valid (it can be: ber, or Γöé
  5742. Γöé                              Γöé                                             Γöé     Γöégdsd or none).                Γöé
  5743. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5744. Γöé                              ΓöéENCODE_UNDEFLENGTH_NOT_PERMITTED             Γöé-6   ΓöéUndefined length has been     Γöé
  5745. Γöé                              Γöé                                             Γöé     Γöépassed for types tagged with  Γöé
  5746. Γöé                              Γöé                                             Γöé     Γöétag class requiring defined   Γöé
  5747. Γöé                              Γöé                                             Γöé     Γöélength.                       Γöé
  5748. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5749. Γöé                              ΓöéENCODE_INVALID_LL_LENGTH                     Γöé-7   ΓöéA GDSLENGTH tagged type has anΓöé
  5750. Γöé                              Γöé                                             Γöé     Γöéinvalid length of the LENGTH  Γöé
  5751. Γöé                              Γöé                                             Γöé     Γöéfield.                        Γöé
  5752. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5753. Γöé                              ΓöéENCODE_INVALID_LENGTH                        Γöé-8   ΓöéA GDS structure has a length  Γöé
  5754. Γöé                              Γöé                                             Γöé     Γöévalue that cannot be encoded  Γöé
  5755. Γöé                              Γöé                                             Γöé     Γöéin the allowed LENGTH field.  Γöé
  5756. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5757. Γöé                              ΓöéENCODE_INVALID_UNIQUE_ITEM_LENGTH            Γöé-9   ΓöéA GDS structure corresponding Γöé
  5758. Γöé                              Γöé                                             Γöé     Γöéto a GDSUNIQUE tagged type hasΓöé
  5759. Γöé                              Γöé                                             Γöé     Γöéan invalid length.            Γöé
  5760. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5761. Γöé                              ΓöéENCODE_INVALID_SEGMENT_LENGTH                Γöé-10  ΓöéA GDS structure corresponding Γöé
  5762. Γöé                              Γöé                                             Γöé     Γöéto a segmented type has an    Γöé
  5763. Γöé                              Γöé                                             Γöé     Γöéinvalid segment length.       Γöé
  5764. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5765. Γöé                              ΓöéENCODE_INVALID_NUMBER_OF_SSOF_ITEMS          Γöé-11  ΓöéThe number of occurrences of  Γöé
  5766. Γöé                              Γöé                                             Γöé     Γöéthe SET OF or SEQUENCE OF     Γöé
  5767. Γöé                              Γöé                                             Γöé     Γöéelement, specified in the     Γöé
  5768. Γöé                              Γöé                                             Γöé     Γöécorresponding entry of the    Γöé
  5769. Γöé                              Γöé                                             Γöé     Γöécontents-array len field, is  Γöé
  5770. Γöé                              Γöé                                             Γöé     Γöénot valid.                    Γöé
  5771. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5772. Γöé                              ΓöéENCODE_DEFAULT_FUNCTION                      Γöé-12  ΓöéThe default encoding user-exitΓöé
  5773. Γöé                              Γöé                                             Γöé     Γöéhas been invoked.             Γöé
  5774. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5775. Γöé                              ΓöéENCODE_MISSING_MANDATORY_ELEMENT             Γöé-13  ΓöéA mandatory element of SET or Γöé
  5776. Γöé                              Γöé                                             Γöé     ΓöéSEQUENCE type has been not    Γöé
  5777. Γöé                              Γöé                                             Γöé     Γöéencoded.                      Γöé
  5778. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5779. Γöé                              ΓöéENCODE_NO_ENOUGH_STORAGE                     Γöé-14  ΓöéSome problem occurred during  Γöé
  5780. Γöé                              Γöé                                             Γöé     Γöéstorage allocation.           Γöé
  5781. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5782. Γöé                              ΓöéENCODE_USER_EXIT_FAILED                      Γöé-15  ΓöéSome problem occurred in the  Γöé
  5783. Γöé                              Γöé                                             Γöé     Γöéencoding user-exit or it      Γöé
  5784. Γöé                              Γöé                                             Γöé     Γöédidn't return the correct     Γöé
  5785. Γöé                              Γöé                                             Γöé     Γöéparameters.                   Γöé
  5786. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5787. ΓöéGDSfindtbl                    ΓöéFIND_TABLE_OK                                Γöé0    ΓöéIf the definition is found.   Γöé
  5788. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5789. Γöé                              ΓöéFIND_TABLE_FAIL                              Γöé-1   Γöéif no definition is found.    Γöé
  5790. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5791. ΓöéGDSfindtype                   ΓöéFIND_TYPE_OK                                 Γöé0    ΓöéIf the definition is found.   Γöé
  5792. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5793. Γöé                              ΓöéFIND_TYPE_FAIL                               Γöé-1   Γöéif no definition is found.    Γöé
  5794. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5795. ΓöéGDSfindval                    ΓöéFIND_VALUE_OK                                Γöé0    ΓöéIf the definition is found.   Γöé
  5796. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5797. Γöé                              ΓöéFIND_VALUE_FAIL                              Γöé-1   ΓöéIf no definition is found.    Γöé
  5798. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5799. ΓöéGDSfirstmodule                ΓöéFIRST_MOD_OK                                 Γöé0    ΓöéThe active module list is not Γöé
  5800. Γöé                              Γöé                                             Γöé     Γöéempty and the modptr and the  Γöé
  5801. Γöé                              Γöé                                             Γöé     Γöémodname pointers are not NULL.Γöé
  5802. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5803. Γöé                              ΓöéFIRST_MOD_FAIL                               Γöé-5   ΓöéThe active module list is     Γöé
  5804. Γöé                              Γöé                                             Γöé     Γöéempty and the modptr and the  Γöé
  5805. Γöé                              Γöé                                             Γöé     Γöémodname pointers are set to   Γöé
  5806. Γöé                              Γöé                                             Γöé     ΓöéNULL.                         Γöé
  5807. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5808. ΓöéGDSinitEnvironment            ΓöéINIT_ENV_OK                                  Γöé0    ΓöéAllocation and initialization Γöé
  5809. Γöé                              Γöé                                             Γöé     Γöéof run-time environment has   Γöé
  5810. Γöé                              Γöé                                             Γöé     Γöébeen performed.               Γöé
  5811. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5812. Γöé                              ΓöéINIT_ENV_FAILED                              Γöé-1   ΓöéAllocation and initialization Γöé
  5813. Γöé                              Γöé                                             Γöé     Γöéof run-time environment       Γöé
  5814. Γöé                              Γöé                                             Γöé     Γöéfailed, probably for some     Γöé
  5815. Γöé                              Γöé                                             Γöé     Γöéstorage allocation problem.   Γöé
  5816. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5817. ΓöéGDSINTEGERtolong              ΓöéINTG2LNG_OK                                  Γöé0    ΓöéThe conversion was successful.Γöé
  5818. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5819. Γöé                              ΓöéINTG2LNG_ERROR                               Γöé-1   ΓöéThe conversion was            Γöé
  5820. Γöé                              Γöé                                             Γöé     Γöéunsuccessful.                 Γöé
  5821. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5822. ΓöéGDSlngs2OID                   ΓöéLNGS2OID_OK                                  Γöé0    ΓöéThe conversion was successful.Γöé
  5823. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5824. Γöé                              ΓöéLNGS2OID_ERROR                               Γöé-1   ΓöéThe conversion was            Γöé
  5825. Γöé                              Γöé                                             Γöé     Γöéunsuccessful.  Reasons for    Γöé
  5826. Γöé                              Γöé                                             Γöé     Γöéfailure include an inadequate Γöé
  5827. Γöé                              Γöé                                             Γöé     Γöéoutput buffer or an invalid   Γöé
  5828. Γöé                              Γöé                                             Γöé     Γöécomponent.                    Γöé
  5829. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5830. ΓöéGDSlongtoINTEGER              ΓöéLONG2INTEGER_OK                              Γöé0    ΓöéThe conversion was successful.Γöé
  5831. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5832. ΓöéGDSnewgds                     ΓöéNEWGDS_OK                                    Γöé     ΓöéThe new GDS structure has beenΓöé
  5833. Γöé                              Γöé                                             Γöé     Γöécorrectly allocated           Γöé
  5834. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5835. Γöé                              ΓöéNEWGDS_NO_ENOUGH_STORAGE                     Γöé     ΓöéSome problem occurred during  Γöé
  5836. Γöé                              Γöé                                             Γöé     Γöéstorage allocation.           Γöé
  5837. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5838. ΓöéGDSOIDtolngs                  ΓöéOID2LNGS_OK                                  Γöé0    ΓöéThe conversion was successful.Γöé
  5839. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5840. Γöé                              ΓöéOID2LNGS_ERROR                               Γöé-1   ΓöéThe conversion was            Γöé
  5841. Γöé                              Γöé                                             Γöé     Γöéunsuccessful.                 Γöé
  5842. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5843. ΓöéGDSprintgds                   ΓöéPRINT_GDS_OK                                 Γöé0    ΓöéThe print operation was       Γöé
  5844. Γöé                              Γöé                                             Γöé     Γöésuccessful.                   Γöé
  5845. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5846. Γöé                              ΓöéPRINT_GDS_ERROR                              Γöé-1   ΓöéThe print operation was       Γöé
  5847. Γöé                              Γöé                                             Γöé     Γöéunsuccessful.                 Γöé
  5848. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5849. Γöé                              ΓöéPRINT_GDS_NO_ENOUGH_STORAGE                  Γöé     ΓöéSome problem occurred during  Γöé
  5850. Γöé                              Γöé                                             Γöé     Γöéstorage allocation.           Γöé
  5851. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5852. ΓöéGDSPrintUnresolvedImports     ΓöéPRTUNRES_OK                                  Γöé0    ΓöéThe print operation was       Γöé
  5853. Γöé                              Γöé                                             Γöé     Γöésuccessful.                   Γöé
  5854. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5855. Γöé                              ΓöéPRTUNRES_BAD_FILE                            Γöé-1   ΓöéThe print operation was       Γöé
  5856. Γöé                              Γöé                                             Γöé     Γöéunsuccessful because of a     Γöé
  5857. Γöé                              Γöé                                             Γöé     Γöéunusable file descriptor      Γöé
  5858. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5859. ΓöéGDSreaddatfile                ΓöéREAD_DAT_OK                                  Γöé0    ΓöéThe DAT file was successfully Γöé
  5860. Γöé                              Γöé                                             Γöé     Γöéread into the run-time        Γöé
  5861. Γöé                              Γöé                                             Γöé     Γöéenvironment.                  Γöé
  5862. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5863. Γöé                              ΓöéREAD_DAT_OPEN                                Γöé-3   ΓöéAn error occurred in opening  Γöé
  5864. Γöé                              Γöé                                             Γöé     Γöéthe file.                     Γöé
  5865. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5866. Γöé                              ΓöéREAD_DAT_VERSION                             Γöé-4   ΓöéThe DAT file has version      Γöé
  5867. Γöé                              Γöé                                             Γöé     Γöénumber incompatible with the  Γöé
  5868. Γöé                              Γöé                                             Γöé     Γöérun-time library.             Γöé
  5869. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5870. Γöé                              ΓöéADDMODULE_DUP_MODULE                         Γöé-1   ΓöéA duplicate module was found  Γöé
  5871. Γöé                              Γöé                                             Γöé     Γöéalready loaded into the       Γöé
  5872. Γöé                              Γöé                                             Γöé     Γöérun-time environment.         Γöé
  5873. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5874. ΓöéGDSresolveallimports          ΓöéRESOLVE_IMPORTS_OK                           Γöé0    ΓöéAll imported symbols were     Γöé
  5875. Γöé                              Γöé                                             Γöé     Γöéresolved                      Γöé
  5876. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5877. Γöé                              ΓöéUNRESOLVED_REFERENCE                         Γöé-2   ΓöéOne of the imported symbols   Γöé
  5878. Γöé                              Γöé                                             Γöé     Γöécould not be resolved amongst Γöé
  5879. Γöé                              Γöé                                             Γöé     Γöéthe active modules.           Γöé
  5880. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5881. ΓöéGDSresolveimports             ΓöéRESOLVE_IMPORTS_OK                           Γöé0    ΓöéAll imported symbols were     Γöé
  5882. Γöé                              Γöé                                             Γöé     Γöéresolved.                     Γöé
  5883. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5884. Γöé                              ΓöéUNRESOLVED_REFERENCE                         Γöé-2   ΓöéOne of the imported symbols   Γöé
  5885. Γöé                              Γöé                                             Γöé     Γöécould not be resolved amongst Γöé
  5886. Γöé                              Γöé                                             Γöé     Γöéthe active modules.           Γöé
  5887. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5888. ΓöéGDSunloadmodule               ΓöéUNLOAD_MOD_OK                                Γöé0    ΓöéThe module was successfully   Γöé
  5889. Γöé                              Γöé                                             Γöé     Γöéunloaded.                     Γöé
  5890. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5891. Γöé                              ΓöéUNLOAD_MOD_NOT_FOUND                         Γöé-6   ΓöéThe module was not found amongΓöé
  5892. Γöé                              Γöé                                             Γöé     Γöéthe list of active modules.   Γöé
  5893. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5894.  
  5895.  
  5896. ΓòÉΓòÉΓòÉ 19. Appendix E. Type Declarations ΓòÉΓòÉΓòÉ
  5897.  
  5898. This section lists all the GenE/D type declarations that must be known by the 
  5899. User Agent Program. 
  5900.  
  5901.  
  5902. /*********************************************************************
  5903.  * The following identifies the ASN.1 base types
  5904.  *********************************************************************
  5905.  */
  5906. enum basetypes {
  5907.    bas_unknown,                 /*  0 unknown */
  5908.    bas_integer,                 /*  1 integer */
  5909.    bas_choice,                  /*  2 choice */
  5910.    bas_boolean,                 /*  3 boolean */
  5911.    bas_null,                    /*  4 null */
  5912.    bas_bitstr,                  /*  5 bit string */
  5913.    bas_octstr,                  /*  6 octet string */
  5914.    bas_seqenum,                 /*  7 sequence{...} */
  5915.    bas_seqof,                   /*  8 sequence of ... */
  5916.    bas_setenum,                 /*  9 set{...} */
  5917.    bas_setof,                   /* 10 set of ... */
  5918.    bas_any,                     /* 11 any */
  5919.    bas_objid,                   /* 12 object identifier */
  5920.    bas_real,                    /* 13 real */
  5921.    bas_enum,                    /* 14 enumerated */
  5922.    bas_charstr,                 /* 15 character string type */
  5923.    bas_anytbl,                  /* 16 any defined by table */
  5924.    bas_expltag                  /* 17 explicit encoded type */
  5925. };  /* basetypes */
  5926.  
  5927. /************************************************************************
  5928.  * Tag classes. The ones beginning with "GDS" are not ASN.1 standard,
  5929.  * they can be used if IBM GDS Definition encoding is used.
  5930.  ************************************************************************
  5931.  */
  5932. enum tagclass {
  5933.    cont,                        /* CONTEXT SPECIFIC - only BER */
  5934.    univ,                        /* UNIVERSAL - BER and GDSD */
  5935.    appl,                        /* APPLICATION - only BER */
  5936.    priv,                        /* PRIVATE - only BER */
  5937.    gdstl,                       /* GDSTL - only GDSD */
  5938.    gdslt,                       /* GDSLT - only GDSD */
  5939.    gdssegiss,                   /* GDSSEGISS - only GDSD */
  5940.    gdssegll,                    /* GDSSEGLL - only GDSD */
  5941.    gdslen,                      /* GDSLENGTH - only GDSD */
  5942.    gdsuniq,                     /* GDSUNIQUE - only GDSD */
  5943.    gdsflen,                     /* GDSFLEN - only GDSD */
  5944.    gdsuntil,                    /* GDSOccursUntilLKAHD - only GDSD */
  5945.    gdswhen,                     /* GDSOccursWhenLKAHD - only GDSD */
  5946.    gdswhile,                    /* GDSOccursWhileLKAHD - only GDSD */
  5947.    gdsunkn,                     /* GDSUNKNLT - only GDSD */
  5948.    noclass                      /* class not specified, error situations */
  5949. };   /* tagclass */
  5950.  
  5951. /************************************************************************
  5952.  * Type of encoding. Used by GDSencode routine, in order to do correctly
  5953.  * some encoding decision, and by GDSprintgds routine in order to
  5954.  * print correctly the GDS structure tree.
  5955.  ************************************************************************
  5956.  */
  5957. enum TypOfEnc {
  5958.    ber,                         /* Basic Encoding Rules */
  5959.    gdsd,                        /* IBM General Data Stream Definitions */
  5960.    none                         /* the lengths are not calculated by encode,
  5961.                                  * useful if other encoding rules are used */
  5962. };
  5963.  
  5964. /************************************************************************
  5965.  * Storage class: dynamic or static
  5966.  ************************************************************************
  5967.  */
  5968. enum stg {
  5969.    stat,                        /* static - not subject to reclaimation */
  5970.    allocd                       /* allocated - subject to reclaimation */
  5971. };
  5972.  
  5973. /************************************************************************
  5974.  * Status of GDS, used during BER decoding of SET type
  5975.  ************************************************************************
  5976.  */
  5977. enum setstat {                  /* set element status */
  5978.    matched,                     /* GDS is matched in the set element */
  5979.    unmatched                    /* GDS is unmatched */
  5980. };
  5981.  
  5982. /************************************************************************
  5983.  * Form of type: primitive or constructor
  5984.  ************************************************************************
  5985.  */
  5986. enum frm {
  5987.    prim,                        /* primitive form */
  5988.    constr                       /* constructor form */
  5989. };
  5990.  
  5991. /************************************************************************
  5992.  * Last piece of data indicator, used if the content data is passed
  5993.  * using an user exit.
  5994.  ************************************************************************
  5995.  */
  5996. enum lastflag {
  5997.    NO,                          /* this is not last piece of data */
  5998.    YES                          /* this is last piece of data */
  5999. };
  6000.  
  6001. /************************************************************************
  6002.  * User exit for passing the content data
  6003.  ************************************************************************
  6004.  */
  6005. #define usr_cont_exit\
  6006.  int (*usrcontent) (char **buff, unsigned long *buflen, enum lastflag *lastf)
  6007.  
  6008. /************************************************************************
  6009.  * Segment structure, used in case of IBM GDSD segmentation
  6010.  ************************************************************************
  6011.  */
  6012. struct segment {
  6013.   unsigned long   seg_len;      /* length of the segment */
  6014.   char           *seg_content;  /* segment content data */
  6015.   struct segment *next_seg;     /* pointer to the next segment.
  6016.                                  * NULL if it is the last */
  6017. };
  6018.  
  6019. /************************************************************************
  6020.  * GDS structure
  6021.  ************************************************************************
  6022.  */
  6023. struct gds {
  6024.    enum tagclass   cls;         /* class */
  6025.    unsigned long   id;          /* identifier number */
  6026.    enum frm        form;        /* primitive or constructed */
  6027.    long            loc;         /* length of CONTENTS field */
  6028.    long            log;         /* length of GDS */
  6029.    int             basetype;    /* base type of GDS */
  6030.    char           *modname;     /* module name pointer */
  6031.    char           *name;        /* type/value name pointer */
  6032.    char           *sop;         /* address of start of GDS */
  6033.    char           *contents;    /* address of contents */
  6034.    struct gds     *next;        /* sibling ptr */
  6035.    struct gds     *contains;    /* contained GDSs */
  6036.    struct gds     *parent;      /* parent (containing) GDS */
  6037.    enum stg        gdsstg;      /* storage class for GDS structure */
  6038.    enum stg        contstg;     /* storage class for GDS contents field */
  6039.    enum setstat    sstat;       /* set element matching status */
  6040.    unsigned long   id_seg_len;  /* the maximum length of the segment
  6041.                                  * or the IDENTIFIER length */
  6042.    usr_cont_exit;               /* the pointer to the user exit called by */
  6043.                                 /* GDSencgdsd and GDSencber routines to get */
  6044.                                 /* the data that must be encoded. It could */
  6045.                                 /* be used in case of GDSD segmentation */
  6046.    struct segment *seg_list;    /* pointer to a list of segments. It is set
  6047.                                  * by GDSdecgdsd function if decoding user-exit
  6048.                                  * is not used and content data are segmented
  6049.                                  */
  6050. };
  6051.  
  6052. /************************************************************************
  6053.  * The following are structures to pass during the GDS tree walking
  6054.  * process for encoding.
  6055.  ************************************************************************
  6056.  */
  6057. struct encinh {                 /* inherited attributes */
  6058.    struct ietag   *it;          /* points to the structure containing
  6059.                                  * the information of implicit tagging if
  6060.                                  * the type is implicit tagged */
  6061.    char           *symname;     /* name of the current item to encode */
  6062.    char           *modname;     /* current module name */
  6063.    void           *module_ptr;  /* module for type to encode */
  6064.    void           *usrparms;    /* user parms */
  6065.    char            opt;         /* TRUE if item is optional or defaulted,
  6066.                                    FALSE if mandatory */
  6067. };
  6068.  
  6069. struct encinhsyn {              /* inherited and synthesized attributes */
  6070.    struct gds     *p;           /* the GDS structure allocated fo the type */
  6071.    unsigned short  ndx;         /* Metatable index of the type encoded */
  6072.    enum basetypes  base;        /* base type of GDS */
  6073.    long   ssof_items_num;       /* num of items inside a SET OF or SEQ OF */
  6074. };
  6075.  
  6076. /************************************************************************
  6077.  * Indicates if LLIDFISS segmentation is used. The UAP can decide,
  6078.  * calling GDSencgdsd function, if it wants to use LLIDFISS segmention
  6079.  * or not.
  6080.  ************************************************************************
  6081.  */
  6082. typedef enum {
  6083.     nouse,                      /* segmentation is not used */
  6084.     use                         /* the LLIDFISS segmentation is used */
  6085. } useLLIDFISS;
  6086.  
  6087.  
  6088. /************************************************************************
  6089.  * Used by GDSdecgdsd function to return to the UAP information
  6090.  * about decoding errors.
  6091.  ************************************************************************
  6092.  */
  6093. struct errdata {
  6094.   void *err_item;               /* item in error */
  6095.   int   err_item_len;           /* length of item in error */
  6096. };
  6097.  
  6098. /************************************************************************
  6099.  * contents structures, used by UAP to pass content data to GDSencode
  6100.  * function instead of encoding user-exit mechanism
  6101.  ************************************************************************
  6102.  */
  6103.  struct contents_str {
  6104.    char *content;               /* content data */
  6105.    usr_cont_exit;               /* content user exit */
  6106.    struct content_str *contlist; /* list of contents, used for SET OF and
  6107.                                   * SEQUENCE OF */
  6108.    enum stg contstg;            /* storage class */
  6109.    long                len;     /* content length (number of bytes), or
  6110.                                  * number of contents in contlist */
  6111.  };
  6112.  
  6113.  struct content_str {
  6114.    char *content;               /* content data */
  6115.    usr_cont_exit;               /* content user exit */
  6116.    enum stg contstg;            /* storage class */
  6117.    long                len;     /* content length (number of bytes) */
  6118.  };
  6119.  
  6120.  
  6121.  
  6122.  
  6123.  
  6124.                    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6125.                    Γöé                                            Γöé
  6126.                    Γöé                                            Γöé
  6127.                    Γöé             End of Document                Γöé
  6128.                    Γöé                                            Γöé
  6129.                    Γöé                                            Γöé
  6130.                    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6131.  
  6132.  
  6133. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6134.  
  6135. This edition applies to the Release 1 of General Data Stream Encoder/Decoder, 
  6136. program number 5648-075 and to all subsequent releases and modifications until 
  6137. otherwise indicated in new editions or technical newsletters. 
  6138.  
  6139.  
  6140. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6141.  
  6142. Copyright International Business Machines Corporation 1993. All rigths 
  6143. reserved. 
  6144.  
  6145.  
  6146. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6147.  
  6148. The ? option causes syntax help information to be displayed. 
  6149.  
  6150.  
  6151. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6152.  
  6153. The source-file specifies the path and filename for the ASN.1 input file.  The 
  6154. default is the standard input file, which is normally the console. If input is 
  6155. from the console, remember that you indicate the end of file condition by 
  6156. typing control D 
  6157.  
  6158.  
  6159. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6160.  
  6161. The -e option specifies the output file for error messages. The error-file 
  6162. option, if specified, identifies the path and file name for the output file. 
  6163. The default error output is directed to the standard output file, which is 
  6164. normally the console.  The standard output file is also indicated by the 
  6165. absence of error-file. 
  6166.  
  6167.  
  6168. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6169.  
  6170. The -t option specifies the output file for the metatable data in the TBL 
  6171. format. The tbl-file parameter indicates the path and filename for the output 
  6172. file. The default for this option is to produce no TBL definitions. 
  6173.  
  6174.  
  6175. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6176.  
  6177. The -script option specifies that the input file contains Script or BookMaster* 
  6178. formatting controls. 
  6179.  
  6180.  
  6181. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6182.  
  6183. The -noscript option specifies that the input file does not contain Script or 
  6184. BookMaster formatting controls. Click here for more information about 
  6185. processing the input file. 
  6186.  
  6187.  
  6188. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6189.  
  6190. The -gdsd option specifies that the input ASN.1 file can contain GDSD 
  6191. extensions to the standard ASN.1 language and that the GDSD limitations must be 
  6192. checked. These extensions are useful if IBM GDS Definitions encoding is used. 
  6193. Click here for more information about GDSD extensions of ASN.1. 
  6194.  
  6195.  
  6196. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6197.  
  6198. The -nogdsd option specifies that the input ASN.1 file cannot contain GDSD 
  6199. extensions to the standard ASN.1 language, (this is the default). If the 
  6200. extensions are used syntax errors are issued. Click here for more information 
  6201. about GDSD extensions of ASN.1. 
  6202.  
  6203.  
  6204. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6205.  
  6206. The -w option sets the minimum message warning level. Values range from 1 to 4, 
  6207. and the default is 3. Level 4 messages are considered errors and cannot be 
  6208. suppressed. 
  6209.  
  6210.  
  6211. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6212.  
  6213. The -d option turns on debugging information for the compiler.  The output is 
  6214. sent to the debug-file, if it is specified.  If debug-file is not specified, 
  6215. the output is directed to standard output (stdout). 
  6216.  
  6217.  
  6218. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6219.  
  6220. The ? option causes syntax help information to be displayed. 
  6221.  
  6222.  
  6223. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6224.  
  6225. The source-file specifies the path and filename for the ASN.1 input file.  The 
  6226. default is the standard input file, which is normally the console. If input is 
  6227. from the console, remember that you indicate the end of file condition by 
  6228. typing control Z 
  6229.  
  6230.  
  6231. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6232.  
  6233. The /e option specifies the output file for error messages. The error-file 
  6234. option, if specified, identifies the path and file name for the output file. 
  6235. The default error output is directed to the standard output file, which is 
  6236. normally the console.  The standard output file is also indicated by the 
  6237. absence of error-file. 
  6238.  
  6239.  
  6240. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6241.  
  6242. The /t option specifies the output file for the metatable data in the TBL 
  6243. format. The tbl-file parameter indicates the path and filename for the output 
  6244. file. The default for this option is to produce no TBL definitions. 
  6245.  
  6246.  
  6247. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6248.  
  6249. The /script option specifies that the input file contains Script or BookMaster 
  6250. formatting controls. 
  6251.  
  6252.  
  6253. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6254.  
  6255. The /noscript option specifies that the input file does not contain Script or 
  6256. BookMaster formatting controls. Click here for more information about 
  6257. processing the input file. 
  6258.  
  6259.  
  6260. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6261.  
  6262. The /gdsd option specifies that the input ASN.1 file can contain GDSD 
  6263. extensions to the standard ASN.1 language and that the GDSD limitations must be 
  6264. checked. These extensions are useful if IBM GDS Definitions encoding is used. 
  6265. Click here for more information about GDSD extensions of ASN.1. 
  6266.  
  6267.  
  6268. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6269.  
  6270. The /nogdsd option specifies that the input ASN.1 file cannot contain GDSD 
  6271. extensions to the standard ASN.1 language (this is the default). If the 
  6272. extensions are used syntax errors are issued. Click here for more information 
  6273. about GDSD extensions of ASN.1. 
  6274.  
  6275.  
  6276. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6277.  
  6278. The /w option sets the minimum message warning level. Values range from 1 to 4, 
  6279. and the default is 3. Level 4 messages are considered errors and cannot be 
  6280. suppressed. 
  6281.  
  6282.  
  6283. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6284.  
  6285. The /d option turns on debugging information for the compiler. The output is 
  6286. sent to the debug-file, if it is specified. If debug-file is not specified, the 
  6287. output is directed to standard output (stdout). 
  6288.  
  6289.  
  6290. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6291.  
  6292. The tblfile file is in the TBL. format and serves as input to GDSTABLE.  The 
  6293. tblfile is one of the output files of the GDSASN1 Compiler. 
  6294.  
  6295.  
  6296. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6297.  
  6298. The datfile file is the output of GDSTABLE. and it serves as input to the 
  6299. applications which perform the encoding/decoding functions. 
  6300.  
  6301.  
  6302. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6303.  
  6304. The /c option specifies the output file for the C language Metatable 
  6305. definitions. The c-file parameter indicates the path and filename for the 
  6306. output file. The default for this option is to produce no C language 
  6307. definitions. 
  6308.  
  6309.  
  6310. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6311.  
  6312. The /h option specifies the output file for the C language header definitions. 
  6313. The h-file parameter indicates the path and filename for the output file. The 
  6314. default for this option is to produce no C language header definitions. 
  6315.  
  6316.  
  6317. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6318.  
  6319. The /e option specifies the output file for the error messages. The default is 
  6320. the standard output. 
  6321.  
  6322.  
  6323. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6324.  
  6325. The /s option specifies the output file for the pre-formatted input file for 
  6326. the Test Tool. 
  6327.  
  6328.  
  6329. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6330.  
  6331. The tblfile file is in the TBL. format and serves as input to GDSTABLE..  The 
  6332. tblfile is one of the output files of the GDSASN1 Compiler. 
  6333.  
  6334.  
  6335. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6336.  
  6337. The datfile file is the output of GDSTABLE. and it serves as input to the 
  6338. applications which perform the encoding/decoding functions. 
  6339.  
  6340.  
  6341. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6342.  
  6343. The /c option specifies the output file for the C language Metatable 
  6344. definitions. The c-file parameter indicates the path and filename for the 
  6345. output file. The default for this option is to produce no C language 
  6346. definitions. 
  6347.  
  6348.  
  6349. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6350.  
  6351. The /h option specifies the output file for the C language header definitions. 
  6352. The h-file parameter indicates the path and filename for the output file. The 
  6353. default for this option is to produce no C language header definitions. 
  6354.  
  6355.  
  6356. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6357.  
  6358. The /e otpion specifies the output file for the error messages. The default is 
  6359. the standard output. 
  6360.  
  6361.  
  6362. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  6363.  
  6364. The /s option specifies the output file for the pre-formatted input file for 
  6365. the Test Tool.