home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-386-Vol-2of3.iso / 5 / 52chgs.txt < prev    next >
Text File  |  1993-02-21  |  19KB  |  638 lines

  1.            Changes from CA-Clipper 5.01 to CA-Clipper 5.2
  2.  
  3. This document contains a summary of changes made to CA-Clipper 5.2. A 
  4. more detailed description of all items will be available in the 
  5. Norton Guide file that comes with your CA-Clipper 5.2. If you have 
  6. further questions please post a message on the Clipper forum on 
  7. CompuServe -- we'll be happy to answer your questions.
  8.  
  9. By Luiz Quintela
  10. Product Manager
  11. CA-Clipper, CA-Visual Objects for Clipper, CA-C++, CA-CommonView
  12.  
  13.  
  14. NEW:  Memory Management
  15.  
  16. CA-Clipper 5.2 improves the handling of expanded memory.  Version 
  17. 5.01 applications would hang in certain circumstances on a machine 
  18. using a LIM 4.0 compatible EMS driver with the page frame disabled. 
  19. CA-Clipper 5.2 requires that you enable the EMS page frame.  If the 
  20. EMS page frame is not detected, EMS will not be used.
  21.  
  22. NEW:  LIM 4.0 support 
  23.  
  24. Support for LIM 4.0 has been added.  If CA-Clipper detects a LIM 4.0 
  25. compatible driver, up to 32MB of EMS will be used.
  26.  
  27. NEW:  RSIS support 
  28.  
  29. CA-Clipper is now RSIS (Relocatable Screen Interface Specification) 
  30. compliant.  This produces faster screen updates when a RSIS compliant 
  31. driver is loaded.
  32.  
  33. CHANGED:  Database error handling
  34.  
  35. In CA-Clipper 5.01, using database commands without an open work area 
  36. would not cause an error.  With the following exceptions, CA-Clipper 
  37. 5.2 now produces a "Work area not in use" error.
  38.  
  39.  
  40.    EIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII"
  41.    o Function          Return value             o
  42.    CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP
  43.    o                                            o
  44.    o EOF()        -->  .T.                      o
  45.    o BOF()        -->  .T.                      o
  46.    o FOUND()      -->  .F.                      o
  47.    o DELETED()    -->  .F.                      o
  48.    o RECNO()      -->   0 (zero)                o
  49.    o LASTREC()    -->   0 (zero)                o
  50.    o FIELDNAME(1) -->  ""                       o
  51.    o FCOUNT()     -->   0 (zero)                o
  52.    o INDEXORD()   -->   0 (zero)                o
  53.    o INDEXKEY()   -->  ""                       o
  54.    o DBSTRUCT()   -->  {} (empty array)         o
  55.    o HEADER()     -->   0 (zero)                o
  56.    o RECSIZE()    -->   0 (zero)                o
  57.    o LUPDATE()    -->    /  /   (empty date)    o
  58.    o                                            o
  59.    EIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 
  60.  
  61. CHANGED:  Miscellaneous error handling
  62.  
  63. Improved error handling in many CA-Clipper commands and functions 
  64. traps and reports missing arguments or invalid arguments passed to 
  65. them.
  66.  
  67. CHANGED:  Aliases
  68.  
  69. CA-Clipper now detects illegal characters in the alias and produces 
  70. an EG_BADALIAS error.
  71.  
  72. CA-Clipper now generates an EG_DUPALIAS error if you attempt to 
  73. create an alias identifier that is already in use.
  74.  
  75. CHANGED:  Reserved Word
  76.  
  77. AADD has been added to the Reserved Word list.
  78.  
  79. NEW:  Unrecoverable error messages
  80.  
  81. Unrecoverable errors are runtime errors that for some reason cannot 
  82. make use of the error system.  The following runtime unrecoverable 
  83. error messages are now documented:
  84.  
  85.      24        Write error
  86.      331       String/array memory overflow
  87.      332       String/array memory overflow
  88.      415       Cannot open overlay file
  89.      5302      Conventional memory exhausted
  90.      5304      Conventional memory exhausted
  91.      5306      Conventional memory exhausted
  92.      5312      VM swap file overallocated
  93.  
  94. CHANGED:  Miscellaneous Fixes
  95.  
  96. LABEL FORM now uses the SET DEFAULT setting to locate files when the 
  97. .LBL file is not in the default directory and an absolute path name 
  98. is not specified.  DBEDIT() now accepts memory variables and 
  99. expressions as arguments in the <acColumns> array.
  100.  
  101. When specified, DBEDIT() now properly displays field aliases in 
  102. column headings.  This is consistent with the Summer '87 version of 
  103. CA-Clipper.
  104.  
  105. WAIT now accepts characters in the range 32 through 255 (ASCII).
  106.  
  107. MENU TO no longer repaints the screen with the last prompt when you 
  108. press <Esc> to exit the menu.
  109.  
  110. CHANGED:  COPY FILE
  111.  
  112. The COPY FILE command now allows control characters to be copied to a 
  113. device (printer, serial port, etc.).
  114.  
  115. CHANGED:  CREATE FROM
  116.  
  117. The following clauses have been added.
  118.  
  119. NEW is an optional clause that designates that the newly created 
  120. database should be opened in a new workarea.
  121.  
  122. ALIAS <cAlias> is the alias name to use when opening the database in 
  123. a new work area.
  124.  
  125. VIA <cDriver> is the name of the database driver to use to create the 
  126. database.
  127.  
  128. CHANGED:  INDEX ON
  129.  
  130. FOR <lCondition> specifies the conditional set of records on which to 
  131. index.
  132.  
  133. WHILE <lCondition> specifies another condition that each record 
  134. processed must meet
  135.  
  136. EVAL <lCondition> specifies a condition that is evaluated either for 
  137. each record processed or at the interval specified by the EVERY 
  138. clause
  139.  
  140. EVERY <nRecords> specifies a numeric expression that modifies how 
  141. often EVAL is evaluated.
  142.  
  143. ASCENDING specifies that the index keys be sorted in increasing order 
  144. of value.
  145.  
  146. DESCENDING specifies that the index keys be sorted in decreasing 
  147. order of value.
  148.  
  149. CHANGED:  REINDEX
  150.  
  151. EVAL <lCondition> specifies a condition that is evaluated either for 
  152. each record processed or at the interval specified by the EVERY 
  153. <nRecords> clause.
  154.  
  155. CHANGED:  RESTORE FROM
  156.  
  157. Various bugs  have been fixed.
  158.  
  159. CHANGED:  SET ORDER*
  160.  
  161. SET ORDER* is now classified as a compatibility command.  It is 
  162. recommended that you use the new SET TAG command instead.
  163.  
  164. CHANGED:  BROWSE()*
  165.  
  166. BROWSE()* is now classified as a compatibility function.  It is 
  167. recommended that you use the TBROWSE class instead.
  168.  
  169. NEW:  COLORSELECT()
  170.  
  171. COLORSELECT() activates the specified color pair, it does not alter 
  172. the current SET COLOR setting.
  173.  
  174. CHANGED:  DBCREATE()
  175.  
  176. DBCREATE() now accepts an optional additional parameter <cDriver>.  
  177. <cDriver> is the name of the database driver to use to create the 
  178. database.
  179.  
  180. CHANGED:  DISPCOUNT()
  181.  
  182. DISPCOUNT() determines the current display context.
  183.  
  184. CHANGED:  DISPBEGIN()/DISPEND()
  185.  
  186. Each call to DISPBEGIN() defines a new display context. Output to the 
  187. display context is suppressed until a matching DISPEND() statement is 
  188. executed.
  189.  
  190. CHANGED:  MEMOEDIT()
  191.  
  192. In the previous release of CA-Clipper MEMOEDIT() failed to append a 
  193. NULL character to the end of its return string.
  194.  
  195. CHANGED:  SCROLL()
  196.  
  197. You can now scroll columns horizontally.
  198.  
  199. NEW:  #STDOUT
  200.  
  201. The new directive #STDOUT causes the compiler to output a literal 
  202. text to the standard output device (stdout) during compilation.
  203.  
  204. NEW:  ANNOUNCE
  205.  
  206. ANNOUNCE is a declaration statement that defines a module identifier.
  207.  
  208. NEW:  EXIT PROCEDURE
  209.  
  210. The EXIT PROCEDURE statement declares a procedure that will be 
  211. executed on program termination.
  212.  
  213. CHANGED:  EXTERNAL*
  214.  
  215. EXTERNAL* is now classified as a compatibility statement.  It is 
  216. recommended that you use the new REQUEST statement instead.
  217.  
  218. NEW:  INIT PROCEDURE
  219.  
  220. The INIT PROCEDURE statement declares a procedure that will be 
  221. executed at program startup.
  222.  
  223. NEW:  REQUEST
  224.  
  225. REQUEST is a declaration statement that defines a list of module 
  226. identifiers to the linker.
  227.  
  228. NEW:  Getsys.prg functions
  229.  
  230. Some of the functions in Getsys.prg have been made public so that you 
  231. can use them when implementing customized Get readers.
  232.  
  233. CHANGED:  Getsys.prg
  234.  
  235. Getsys.prg now respects SET BELL ON when SET CONFIRM ON is used.
  236.  
  237. NEW:  READFORMAT()
  238.  
  239. READFORMAT() is a function that accesses the current format file in 
  240. its internal code block representation.
  241.  
  242. NEW:  READKILL()
  243.  
  244. READKILL() is a function that lets you control whether or not to 
  245. terminate the current READ.
  246.  
  247. NEW:  READUPDATED()
  248.  
  249. READUPDATED() is intended primarily for creating new READ Layers.
  250.  
  251. CHANGED:  GET:subscript
  252.  
  253. Get:subscript is now an assignable exported instance variable.
  254.  
  255. CHANGED:  GET:display()
  256.  
  257. The Get:display() exported method now handles delimiters.
  258.  
  259. CHANGED:  ERROR.CH
  260.  
  261. The following generic error codes have been added to ERROR.CH: 
  262. EG_DUPALIAS, EG_BADALIAS, EG_CYCLICAL.
  263.  
  264. NEW:  ERRORNEW() 
  265.  
  266. The ErrorNew() creates a new error object.
  267.  
  268. NEW:  ERRORINHANDLER()
  269.  
  270. ERRORINHANDLER() is a new function that assures a clean and prompt 
  271. exit from within an application.
  272.  
  273. NEW:  TBrowse:forceStable()
  274.  
  275. The new method forceStable() performs a full stabilization of the 
  276. TBrowse.
  277.  
  278. CHANGED:  TBrowse error handling
  279.  
  280. Assigning invalid data to TBrowse and TBColumn instance variables 
  281. would not generate an error in version 5.01. Type checking during 
  282. instance variable assignment has been added in CA-Clipper 5.2 to trap 
  283. invalid values and produce a recoverable runtime error.
  284.  
  285. CHANGED:  Compiler
  286.  
  287. The compiler now requires a minimum of 25 file handles.  This can be 
  288. accomplished by adding the files statement "FILES=25" to the 
  289. CONFIG.SYS.
  290.  
  291. CA-Clipper now required DOS 3.3 or greater.
  292.  
  293. Include files (.ch) may be nested up to a maximum of 15 levels.  This 
  294. limitation was present in previous releases but was not documented.
  295.  
  296. NEW:  COMMAND.CH
  297.  
  298. Common.ch has been added to the CA-Clipper 5.2 release.  Common.ch 
  299. incorporates many common/useful psuedo-functions and commands.  
  300. Std.ch is now reserved for CA-Clipper language implementation ONLY.
  301.  
  302. NEW:  Compiler options
  303.  
  304. The following compiler options have been added to CA-Clipper 5.2:
  305.  
  306. /ES  Exit Severity level 0
  307.      Default exit severity level.
  308.  
  309. /ES0 Exit Severity level 0
  310.      Same as /ES.
  311.  
  312. /ES1 Exit Severity level 1
  313.      Specifies an exit severity level of 1.
  314.  
  315. /ES2 Exit Severity level 2
  316.      Specifies an exit severity level of 2.
  317.  
  318. NEW:  /DEBUG option in Linker
  319.  
  320. The /DEBUG option is now supported in the POSITIONAL syntax.
  321.  
  322. CHANGED:  BASE50.???
  323.  
  324. All the base PLL related files have been changed to reflect the new 
  325. CA-Clipper version 5.2.
  326.  
  327. NEW:  Error Messages
  328.  
  329. The following .RTLink error messages are now documented: ert0166, 
  330. eut0032.
  331.  
  332. CHANGED:  DOS 5.0 PLL problem fixed
  333.  
  334. The fix for the DOS 5.0 PLL problem ("Illegal format in loadable 
  335. file") is included in the version of RTLINK for CA-Clipper.
  336.  
  337. NEW:  General Debugger
  338.  
  339. Instance variable and method names are now displayed when inspecting 
  340. objects instantiated from CA-Clipper's predefined classes (GET, 
  341. TBROWSE, TBCOLUMN, and ERROR).
  342.  
  343. NEW:  Run menu option
  344.  
  345. A "run to next routine" option has been added.
  346.  
  347. NEW:  Monitor menu option
  348.  
  349. "All" has been added to the Monitor menu.
  350.  
  351. CHANGED:  Watchpoint window
  352.  
  353. The delete <del> key can now be used to delete the currently 
  354. highlighted watch point.
  355.  
  356. CHANGED:  View|Workarea screen
  357.  
  358. The default database driver of the selected workarea is now 
  359. displayed. Workarea and Index key are hilighted rather than 
  360. designated by "->". Multiple relations are now displayed in the work 
  361. area outline.
  362.  
  363. CHANGED:  Online Help
  364.  
  365. Online help now appears in a separate file (CLD.HLP).
  366.  
  367. CHANGED:  CLD.LIB
  368.  
  369. CLD.LIB must be linked as an OBJ file and not as a LIB file.
  370.  
  371. CHANGED:  Command line parameters
  372.  
  373. You must place a space between the CA-Clipper application name and 
  374. the first CA-Clipper parameter when calling your routine from the 
  375. CLD.EXE command line.
  376.  
  377. CHANGED:  BP command
  378.  
  379. An additional parameter, <nLineNum> has been added to the BP command.
  380.  
  381. CHANGED:  Open mode in DBU
  382.  
  383. DBU now opens all databases SHARED by default
  384.  
  385. NEW:  /e switch
  386.  
  387. The new optional command line parameter (/e) will cause DBU to open 
  388. file EXCLUSIVE to provide backward compatibility.
  389.  
  390. CHANGED:  RL (Report Label) Utility
  391.  
  392. .FRM file changes
  393.  
  394. RL no longer lets you embed semicolons in report headings.  This is 
  395. consistent with dBASE III+.
  396.  
  397. RL no longer allows the right margin setting to exceed the width of the report.
  398.  
  399. NEW:  DBMCMD Error messages
  400.  
  401. DBCMD error messages occur in the database command set and are 
  402. unrelated to a particular driver.  They occur as a result of command 
  403. usage rather than from a failure of the driver itself.
  404.  
  405. CHANGED:  NTX
  406.  
  407. The NTX driver now allows you to create conditional indexes by 
  408. specifying a FOR condition. Create indexes using a record scope or 
  409. WHILE condition, allowing you to INDEX based on the order of another 
  410. index. Create both ascending and descending order indexes. Specify an 
  411. expression that is evaluated periodically during indexing in order to 
  412. display an index progress indicator.
  413.  
  414. NEW:  MDX
  415.  
  416. The MDX replaceable database drivers is used to access dBASE IV 
  417. compatible index and multiple index (.mdx) file formats.
  418.  
  419. NEW:  CDX
  420.  
  421. The CDX driver replaceable database provides access to FoxPro 
  422. compatible database index file formats (.cdx).
  423.  
  424. NEW:  PDX
  425.  
  426. The PDX replaceable database driver provides access to Paradox tables 
  427. (.pdx).
  428.  
  429. NEW:  NOVTERM
  430.  
  431. The NOVTERM driver provides faster execution when run on some 
  432. non-dedicated network server software.
  433.  
  434. NEW:  PCBIOS
  435.  
  436. The PCBIOS driver provides direct BIOS calls rather than direct 
  437. screen writes for systems requiring this form of I/O.
  438.  
  439. NEW:  ANSITERM
  440.  
  441. The ANSITERM driver provides ANSI terminal support for systems that require it.
  442.  
  443. NEW:  Drivers Reference
  444.  
  445. CA-Clipper 5.2 provides many new and enhanced (changed) commands and 
  446. functions that can be used to access and manipulate databases and get 
  447. specific information about the replaceable database driver (RDD) in 
  448. use.
  449.  
  450. CHANGED:  APPEND FROM command
  451.  
  452. The APPEND FROM command syntax has been changed to include the VIA 
  453. clause.
  454.  
  455. CHANGED:  COPY TO command
  456.  
  457. The COPY TO command syntax has been changed to include the VIA 
  458. clause.
  459.  
  460. CHANGED:  DBAPPEND() function
  461.  
  462. DBAPPEND() has been changed to accept the parameter, lReleaseRecLocks 
  463. which allows you to maintain multiple records locks during an append.
  464.  
  465. CHANGED:  DBGOTO() function
  466.  
  467. DBGOTO() has been modified to accept a parameter other than record 
  468. number.
  469.  
  470. NEW:  DBRLOCK() function
  471.  
  472. DBRLOCK() is a database function that locks the record identified by 
  473. the specified value <xIdentity>.  In Xbase, <xIdentity> is the record 
  474. number.
  475.  
  476. NEW:  DBRLOCKLIST() function
  477.  
  478. DBRLOCKLIST() is a database function that returns a one-dimensional 
  479. array that contains the identities of record locks active in the 
  480. selected work area.
  481.  
  482. NEW:  DBRUNLOCK() function
  483.  
  484. DBRUNLOCK() is a database function that releases the lock on 
  485. <xIdentity> and removes it from the Lock List.  If <xIdentity> is not 
  486. specified, all record locks are released.
  487.  
  488. CHANGED:  DBSETINDEX()* function
  489.  
  490. DBSETINDEX() is a database function that adds the contents of an 
  491. Order Bag into the Order List of the current work area.  DBSETINDEX() 
  492. is a compatibility command and therefore not recommended.  It is 
  493. superseded by the ORDLISTADD() function.
  494.  
  495. NEW:  DELETE TAG command
  496.  
  497. This command removes an Order from an Order Bag in the current or 
  498. specified work area.
  499.  
  500. CHANGED:  GO command
  501.  
  502. The GO command has been enhanced to also work with data format other 
  503. than (.dbf).  In a (.dbf), the parameter, identity, is the record 
  504. number.  In other data formats, identity is the unique primary key 
  505. value.
  506.  
  507. CHANGED:  INDEX command
  508.  
  509. The index on syntax has modified to include new clauses.
  510.  
  511. NEW:  ORDBAGEXT() function
  512.  
  513. ORDBAGEXT() supersedes the INDEXEXT() and is not recommended.
  514.  
  515. NEW:  ORDBAGNAME() function
  516.  
  517. ORDBAGNAME() is an Order management function that lets you access the 
  518. name of the Order Bag in which <cOrderName> resides.
  519.  
  520. NEW:  ORDCREATE() function
  521.  
  522. ORDCREATE() is an Order management function that creates an Order in 
  523. the current work area.
  524.  
  525. NEW:  ORDDESTROY() function
  526.  
  527. ORDDESTROY() is an Order management function that removes a specified 
  528. Order from multiple-Order Bags.
  529.  
  530. NEW:  ORDFOR() function
  531.  
  532. ORDFOR() is an Order management function that returns the character 
  533. string, cForExp, that represents the logical FOR condition of the 
  534. Order.
  535.  
  536. NEW:  ORDKEY() function
  537.  
  538. ORDKEY() is an Order management function that returns a character 
  539. expression that represents the key expression of the specified Order.
  540.  
  541. You may specify the Order by name or with a number that represents 
  542. its position in the Order List.  Using the Order name is the 
  543. preferred method.
  544.  
  545. NEW:  ORDLISTADD() function
  546.  
  547. ORDLISTADD() is an Order management function that adds the contents 
  548. of an Order Bag , or a single Order in an Order Bag, to the Order 
  549. List.
  550.  
  551. NEW:  ORDLISTCLEAR() function
  552.  
  553. ORDLISTCLEAR() is an Order management function that removes all 
  554. Orders from the Order List for the current or aliased work area.  
  555. When you are done, the Order List is empty. This function supersedes 
  556. the function DBCLEARINDEX().
  557.  
  558. NEW:  ORDLISTREBUILD() function
  559.  
  560. ORDLISTREBUILD() is an Order management function that rebuilds all 
  561. the orders in the current or aliased Order List.
  562.  
  563. NEW:  ORDNAME() function
  564.  
  565. ORDNAME() is an Order management function that returns the name of 
  566. the specified Order in the current Order List.
  567.  
  568. NEW:  ORDNUMBER() function
  569.  
  570. ORDNUMBER() is an Order management function that lets you determine 
  571. the position in the current Order List of the specified Order.
  572.  
  573. NEW:  ORDSETFOCUS() function
  574.  
  575. ORDSETFOCUS() is an Order management function that returns the Order 
  576. Name of the previous controlling Order and optionally sets the focus 
  577. to an new Order.
  578.  
  579. NEW:  RDDLIST() function
  580.  
  581. RDDLIST() is an RDD function that returns a one-dimensional array 
  582. that lists the available RDDs.
  583.  
  584. NEW:  RDDNAME() function
  585.  
  586. RDDNAME() is an RDD function that returns a character string, 
  587. cRDDName, the name of the active RDD in the current or specified work 
  588. area.
  589.  
  590. NEW:  RDDSETDEFAULT() function
  591.  
  592. RDDSETDEFAULT() is an RDD function that sets or returns the name of 
  593. the previous default RDD driver and, optionally, sets the current 
  594. driver to the new RDD driver specified by cNewDefaultRDD.
  595.  
  596. CHANGED:  RECNO() function
  597.  
  598. The RECNO() function has been changed to work with other data 
  599. formats.
  600.  
  601. CHANGED:  SEEK command
  602.  
  603. The SEEK command syntax has been changed to include the new clause, 
  604. SOFTSEEK.
  605.  
  606. CHANGED:  SET INDEX command
  607.  
  608. The SET INDEX command syntax has been modified to work with other 
  609. data formats and includes the new clause, ADDITIVE.
  610.  
  611. CHANGED:  SET ORDER command
  612.  
  613. The SET ORDER command has been changed to also work with data formats 
  614. other than the traditional Xbase().
  615.  
  616. CHANGED:  Extend System API
  617.  
  618. The Extend System is now identified as the Extend API.
  619.  
  620. NEW:  GT (General Terminal) API
  621.  
  622. The GT API is the level of system protocols that implements 
  623. CA-Clipper screen and keyboard commands and functions.
  624.  
  625. NEW:  VM API
  626.  
  627. The VM API is a set of functions callable from extend functions that 
  628. allow direct communication with the VMM system.
  629.  
  630. NEW:  RDD API
  631.  
  632. The database driver programming interface (RDD API) can be used by 
  633. third party developers to create new drivers, allowing CA-Clipper 
  634. applications compatibility with any database engine for which a 
  635. driver is created.
  636.  
  637.  
  638.