The debugger has been Replaced with Trace statements
IB Enhancements for Comet32
The size of the user buffer (# buffer) has been increased to 8K.
Strings may be declared up to 64K in length.
You may declare a dynamic string that will allocate only the memory required for the current length of the data assigned to it. These strings may be up to 4gb in length. For performance, chunks of memory will be allocated in 64k increments. (Arrays may not be dynamic).
Numbers may include up to 64 digits; 32 integer and 32 fractional.
An extensive math package has been added including trig functions, factorial, logs, and exponents.
Editmasks rules regarding the length of the editmask and the length of the number have been relaxed to reduce runtime errors.
The maximum array size has been increased to 4.2gb.
User-defined procs have been implemented. For more info see User Defined Procs.
New instructions have been implemented:
NoExcp has been added as an option to EXCP= on file system statements.
SetTimer fires an event while the user is in an input from the keyboard.
Collections of data can now be stored in a variety of STL Containers (Standard Template Library in C++) that we have provided. Containers are similar to arrays in that they store sequences of data, but are dynamic (meaning the size of the container will expand and contract as needed) and are optimized for more specific purposes. The following containers are available in Comet32:
Vector -- A dynamic array, with indexable content
Map -- An associative array that uses strings as indexes
New String Functions
Replace -- Replaces names in a string with corresponding values.
Tcase -- Title case. Makes Each Word In The String Have Initial Caps.
XAP support Statements
UrlDecode -- Decodes a string which was URL Encoded by the Browser (for xap).
UrlEncode -- Encodes a string making it suitable for an html server.
MapDecode -- URLDecodes all of the values in a MAP(or xap).
New XAP Controls
Get Header -- Retrieves the whole HTTP Header into a string.
Get Method -- Retrieves the method (GET or POST) from the HTML Header.
Get Cookies -- Gets all of the Cookies returned from the Browser.
Get Remote -- Returns the remote Browser address/name.
Get Query -- Retrieves the whole query from the Header or Post Data.
Get PostData -- Retrieves Post Data.
Known Problems that We Plan to Consider and/or Address
ODBC is not supported. Replaced with SQL interface.
Serial Gateway is not supported.
Functionality that Will Not Be Part of Comet32
Common Variables passed between programs are not treated as a contiguous block of memory as in Comet16. Common is passed variable by variable. If the variables do not agree as to length/precision, common passing ends.
The name of the clock is CL1. Comet16 allowed any name beginning with "CL" to be used.
The Spool driver has not been implemented. -- Not needed, replace with DocMgr
Image file support.
Q-emulation for QICBASIC objects.
The SORT driver will not be implemented. We have modified the Reporter (version 9.02) to work without it.
Invalid character substitution in file names
Inputting a numeric value from the screen works differently under Comet32 than under Comet16. For example if you declare a variable to be 6.2 and you input its value as "5", under Comet16 that would be interpreted as .05 whereas under Comet32 it would be 5.00.
Hallelujah, never could get operators to understand the old way.--badge 18:03, 19 May 2009 (UTC)
Background partitions have been partially implemented.
ACTIVATE and PSTAT have been implemented.
TERMINATE, PCOMM and INTERRUPT have not been implemented.
Some form of inter partition communication has yet to be designed.
LUN 0 is to be used solely for either the screen or the XAP driver depending on the configuration. For normal Comet programs, close of LUN 0 is ignored. The terminal may be opened on a LUN other than 0, but all actions on either LUN will apply to the other.
Differences Between Comet16 Objects and Comet32 Objects
It is our intention that your Comet16 objects will run under Comet32 exactly as they do under Comet16. IB has been enhanced for Comet32 so not only will you be able to do more things easier we also may decide to change the functionality of some of the legacy instructions. We welcome your input on these issues as they come up.
- Eliminated trailing null on pdf filename returned in # buffer following close of archive printer.
- Introduction of new ErrorLog file. UTL 11.06 includes a new  utility for viewing the file.
- Corrected problem in SetTimer so you can reset a timer to a new value and restart it.
- Corrected a problem with WAKEUP that caused it to be late.
- Suppress intial (FF) for text and html printers.
- Use of the (LM) modifier in a FORMAT now places the minus sign next to the first digit. In previous releases it included space place holders after the sign to the size of the field.
- Corrected a problem that could cause a crash if an unhandled Comet error occurred in a proc.
- Corrected a problem that wasn't correctly loading numeric array elements in a Comet32 object READ FORMAT correctly. Values for all but the zeroeth element were set to 0.
- Corrected a problem which could have caused a hang when getting the result from an API call.
- Corrected a problem that could hang Comet if an ENTERed program wrote to a DES-controlled printer and didn't close the printer before EXITing.
- Corrected some problems in COMMON passing from one C32 program to another.
- Corrected a problem in processing editmasks that could have caused a crash.
- Corrected a problem that could cause a crash if a CONTROL was issued on a LUN that wasn't open.
- E46 is now issued if invalid characters are encountered in numeric fields.
- DSTAT of a device whose name begins with "C" acts like dstat("CL1").
- Corrected problem that could have lead to a crash because some system variables were not initialized at startup.
- Corrected a problem in the use of DES programs when the first write included a control.
- Corrected problem that could have caused an invalid path on a busy system which could have resulted in erroneous E61 or E11.
- Fixed a problem in FORMATed READ to an array element. Now the correct element will get the data. Previously the first element would get the data regardless of which element was specified in the FORMAT.
- Enhanced the IB PRINT statement to allow IB expressions in PRINT lists.
- Changes in the way COMMON may be passed between programs:
- Common passing between Comet16 programs and Comet32 programs containing MULTI dimensional arrays won't pass the array.
- If both programs are Comet16 or Comet32, common passing will work fine.
- Single dimension arrays will be passed between Comet16 and Comet32 programs, although the zeroeth element will be lost.
- Use of arrays in programs compiled with Comet32 has changed. Any Comet32 program using arrays should be recompiled with the .435 (or higher) Comet32 compiler. If Comet32 encounters an array reference from an older object you will now be issued an Error 74 which will tell you a recompilation is necessary.
- Variable subscripted array elements are now allowed in a PRINT list.
- Corrected problems doing arithmetic using array elements.
- The (BZ) mnemonic now works properly in Comet32 programs.
- Corrected a problem that could have skipped a (FF) if it was the only item in the FORMAT. This effects Comet32 objects only.
- Corrected a problem in CREATE when using a variable for the record size. The value was getting truncated if the variable was declared as larger than 4.0.
- Corrected a problem in detecting an invalid array index.
- Made formatted read/write using repetition count act the same as Comet16 in that any element with a subscript of 0 will be ignored. If the first element used in the format statement has a subscript of 0 and there is a repetition factor present, Comet will produce an excp=50. If no repetition factor is present in the format item, any element of the array can be used.
- Removed the stack dump code when reporting Comet errors. It is still used in the event of a Comet crash.
- Eliminated a CosW crash which could occur if multiple sessions were started in quick succession.
- A new $(LOGS) alias has been created for a folder which will contain miscellaneous log files produced by Comet.
- Comet Error E09 will now be issued if an invalid character is detected in a filename.
- Corrected a problem for READ into a FORMAT that contained either constants or system variables. The fields were not being pulled from the correct position in the record buffer.
- Corrected a problem that could have skipped a (FF) if there was data before it in the FORMAT.
- If Comet32 crashes it will attempt to create a log and minidump which will help us track down the source of the problem. These files can be found in the $(LOGS) folder.
- If there's no /LOG command line argument, CosC will now save the Comet.log file in the $(LOGS) folder. If you are using /LOG the log remains in the Windows temp folder.
- Corrected a problem that could have created a CATOOLS folder as CAFILECATOOLS (i.e. missing "\" before CATOOLS). This was happening during CopyFile with "create alias".
- Comet.exe has been rewritten for Comet 2011, including improved algorithm for detecting if MS Redistributables are required.
- Corrected a problem with WinSock gateway timing.
- Now allows INPUT into MESSAGE$, DATE$, HELPKEY$, DAY$.
- The key value is now indicated in ErrorLog.csv for Error 32.
- DATE$ is now refreshed when DSTAT of the clock is done.
- Added write functionality to mySQL.
- The /keyfile Comet command line argument now works.
- Corrected a problem with font initialization for pdf printers.
- ACTIVATE corrected to use only partitions configured for background.
- The SUB function will now default to starting position of 1 if the value supplied is less than or equal to zero.
- E50 is now issued for an out of range subscript value for a Comet16 object.
- Corrected a problem preventing hyperlinks from working in some cases.
- Divide by zero errors are no longer logged to ErrorLog.csv.
- New (SessionTimeout) mnemonic will automatically shutdown a session after a specified number of minutes. This requires REL version 11.03 or higher.
- Corrected a problem that could have caused a crashed in the printer event handler.
- WAKEUP and PAUSE can now be interrupted by F3.
- Changed the way the Windows printer selection dialog is displayed so that it will be on top of other windows.
- Corrected a problem in ROUNDing the result of numeric calculations.
- Corrected the implementation of some mnemonics including (CopyFromClipboard) and (CopyToClipboard)
- E50 no longer erroneously reported for array dimension sizes > 255
- CosM32 compiler now allows use of characters with a value greater than @79@ in string constants. Use of these characters elsewhere will be ignored and treated as if blank.
- Each partition now gets is own instance of CosP to eliminate a TCP/IP printer problem.
- Now uses a cache when printing to a CometAnywhere printer to speedup processing. This change requires supporting changes in CosW.
- Corrected a problem calculating the address of an element in a multi-dimension array.
- Corrected a problem that could have caused a crash if an array subscript was out of range.
- Corrected a problem that could have put garbage text in the "User" field of a document archive record. This garbage would be seen in DocMgr.
- The Next User Address and Last System Function fields reported by PSTAT are no longer converted to decimal values.
- Increased the size of a normalized pathname to 259. The previous limit was 60.
- Corrected a problem in the NUM function for result fields with a non-zero precision.
- Corrected a problem in the MOD function.
- Comet would hang after an E16. This has been corrected.
- Now uses the "C/R same as Qantel" cfig setting.
- The user's id field is now set for print jobs destined for an archive. This allows DocMgr to display it.
- Fixed a problem in passing system variables in the following scenario:
- ENTER a Comet16 program
- RUN a Comet32 program that does an EXIT.
- Previously this could have caused a crash.
- Fixed problem in the DOSRW call used to get the device descriptors. Previously you could only get the first 254 devices.
- Changes to FSTAT for compatibility with Comet16.
- When writing a CSV file and the first strings were empty it was not putting out place-holders. Now it will generate one blank character in that place.
- Introduced new date functions.
- Implemented DOSFC for mkdir.
- Corrected a problem that would crash if you attempted to log out of Comet while background programs were running.
- Corrected a problem with the NUM function that was reporting an error if the field contained a trailing blank.
- Enhanced the NUM function so that it accepts special characters such as ,.()-+ in the input string.
- Corrected problems with the INPUT statement that doesn't require transmit marks (ie the new INPUT).
- Now reports E74 if a Comet32 IB object file is corrupted.
- Comet exception reports for CometAnywhere clients now appear on the client instead of the host.
- FSTAT now returns E11 if the file is not found and a directory was not specified. It returns E31 if an invalid directory is specified.
- Corrected a problem with num2date(0,5). It was returning a blank string.
- Background sessions now inherit the activating partition's printers, including # printers.
- Corrected a problem with editing numbers which used (LM) in a FORMAT.
- Corrected a problem with editing numbers which used a length override in a FORMAT compiled for Comet32.
- Corrected a problem with numtodate. Leading zeroes were not preserved.
- Comet.exe will now run the Microsoft Visual Studio 2008 Redistributable installation when required for full Comet clients.
- Corrected a problem that could cause a crash if a printer (or other device) was open in a parent program and the LUN was reused for a file in the subprogram.
- Corrected a problem with numeric editing which caused numbers to sometimes be truncated.
- Corrected a problem that could have caused a crash when launching Comet32 automatically on 64-bit Windows systems.
- Background partitions can now be ACTIVATEd. The X00 device is automatically open on LUN 0 for these partitions. (See item # 2 below for X00 enhancements.)
- The X00 device can now do (CopyFile), (RenameFile), (EraseFile), (FindFirstFile), (FindNextFile), (FileStatus), (GetDirAlias), (SetDirAlias), (OpenClipboard), and (CloseClipboard). Previously these mnemonics could only be used with LUN 0 which excluded background partitions.
- If a configured directory can't be accessed at startup you'll be notified through a messagebox and an error message will be posted in the Comet log.
- The Msgbox IB function and statement can now be used in background partitions.
- The delimiter used for .csv files can now be specified with the FILE (lun) DLM=char$ statement.
- FILE (lun) NORMAL introduced to reset a file's access from CSV or XML back to normal.
- Added new clipboard mnemonics (OpenClipboard), and (CloseClipboard). An error can occur if the clipboard is opened by another user and there is no good way to convey that in IB. Now you can use (OpenClipboard) first and test for that case and try again. The old method will still work but this is more reliable. Use of these mnemonics requires REL 10.08 or higher.
- Added a new mnemonic (ClearBuffer) to clear the X00 buffer between writes. Use of this mnemonic requires REL 10.08 or higher.
- CosC now detects 64-bit Windows and will launch Comet32 automatically.
- FSTAT now returns E11 if the file is not found and a directory was not specified.
- Corrected a problem in the NUM function for Comet32 objects that wasn't returning an error if the last character in the string was invalid.
- Corrected a problem in the STRING function for Comet16 objects that could have resulted in corruption of data in other variables.
- Session colors specified in the configuration file are now used.
- Corrected problems with FPT and BASE64.
- Numeric overflow errors (ERR 1) are now ignored just like Comet16.
- Changes required to get CometExplorer's DirBuild to load.
- Fixed a bug that caused a trigger event when resetting a timer that is not running.
- Prevented the changing of a constant when inputting a list of fields.
Build 419 Comet32:
- Corrected a problem in passing numeric arguments to a proc.
- CONTAINS result was reversing its TRUE / FALSE result. This has been corrected.
- Added a new SetTimer instruction. This causes an event to be fired to the program
- Corrected a problem with CosM32 that could have caused internal error 91 stack over/under flow error. This was introduced in version .415.
- Introduced Cryptographic Support. This is a major enhancement to the encryption features of Comet. You can now encrypt/decrypt using the best methods known today including RC4, AES and 3DES.
- Corrected a problem that was reporting E25 and E99 in some dialogs
- Fixed a problem that was causing some Windows events to be lost
- Corrected a problem that could have caused a crash when printing
- Corrected a problem that could have caused a crash when using the First IB function to retrieve the first key of a file.
- Changed the handling of the clock device to match that of Comet16. DSTAT of any name beginning with "c" will return the status of the clock. If you wish to OPEN the clock, you must use a filename of "CL1".
- New XML file statement introduced to make it easy to output your data in XML format. For more
- A couple of problems were fixed in SetGlobal and GetGlobal:
- The data is now unique for each partition.
- The data persists thru running of programs. Previously a STOP would clear it.
- Corrected a problem that could have caused a crash if an attempt was made to ENTER a program that doesn't exist.
- Local pathnames are now returned in drive letter form even if the folder is configured using a UNC name. This effects PATH and DSTAT.
- Corrected a problem that would have crashed Comet32 if the SQL device was opened.
- Added additional information to the error messagebox for DOS errors.
- Increased the size of the task buffer for mySQL to 64K
- Introduced a spool alias for the spool section of the Comet.ini file:
Spool = SP1,$(lac);
Printer = Lac,p ,x,SPL:adobe ,Adobe PDF;
This makes it possible to configure a printer called SP1. Previously all printer names needed to begin with "L". If your programs open "SP1" this makes it possible for them to be used with DocMgr without needing to recode them.
- Restored the functionality of dynamic ACCESSes which was broken in version .410.
- Corrected a problem handling TERM$ values above T99.
- The NUM function now handles ROUNDed variables correctly.
- Trailing printer controls such as (FF) and (LF) were not getting processed.
- Several printing problems were corrected.
- Correct a problem that could put the object file from a compiled program in the first accessed directory rather than the specified object directory.
- Enhanced LOG and MSGBOX to accept either a string or a numeric expression as its operand.
- Miscellaneous printing problems solved plus the addition of support for slave printers.
- Problems corrected in the handling of editmasks.
- Problem corrected for GetGlobal.
- Problem corrected for formatted writes to CSV files.
- Problems corrected in SetBit and TestBit.
- Eliminated a problem that could cause a Windows event to be dropped for dialog programs.
- Corrected the formatting of the spool name info returned by the DosRw 0xffe6 call (GetDDInfo)
- Added mySQL driver.
- Changes required for (GetSlavePrinterName).
- Corrected a problem using mnemonics on a printer with an associated DES.
- Changed numeric input in Comet16 objects to ignore precision just like Comet16.
- Will now automatically run SYSGEN if no .cfg file is available. No special command line arguments are required for this to happen.
- Corrected a problem in handling the (BZ) mnemonic
- Introduced support for Windows 7 and Server 2008 R2
- Rewrote the editmask processing code.
- Screen mnemonics followed by a comma and positioner now work properly.
- New Comet Error E86 will be issued if an attempt is made to read or write an image file.
- Corrected a problem in the compiler that would cause a crash if many include files were used.
- Constant editmasks are no longer evaluated by the compiler. All checking is done at runtime.
- The LockDabs statement is now supported by the compiler.
- Implemented WinSock driver
- Duplicated the Comet16 positioning and spacing of numeric output. Previously programs run under Comet32 that output numeric values were not aligned properly.
- Compilation errors involving undefined labels are now reported properly thru CAPI when compiling from UltraEdit.
- Implemented a Comet32 error log. errorlog.csv will be created in the COS directory.
- Implemented document archives (for DocMgr).
- Corrected a problem that was causing Windows message events to sometimes be dropped.
- Added a color square on the right side of the status line of the Comet window indicating whether the current program object was compiled with Comet16 or Comet32. The indicator is blue for Comet16 objects and green for Comet32 objects.
- Implemented changes required for DbMgr, ViewMgr, and DBX
- Implemented changes required for server snapshot utility
- Implemented CURPOS.
- Implemented support for contiguous files.
- Implemented NOVA / SNOVA functionality.
- Recoded the str function for Comet32 so it emulates the Comet16 one.
- Implemented the shortpath DOSMS function.
- Implemented the CometAnywhere update mechanism.
- Improved printer functionality including pdf printers.
- Improvements in the functionality of dialog-based programs. Try DlgDemo.
- Improvements in GDI operations such as wallpaper.