Current WCSDK/WCBASIC Version Information:
Summary Update Information: v7.0 Build 454.6 (summary since 453.3)
See the installed wcBASIC_Readme.txt in your wcBASIC installed folder for a more detailed history summary.
Summary Update Information: v6.3 Build 452.9
Summary Update Information: v6.3 Build 452.5
Summary Update Information: v6.2 Build 452.4
NEW: New random number generator
          functions were added
          
Randomize(seed) 
Randomize() helps seeds the RND() function. It should be called in the beginning of WCX and only need to be called once. The seed parameter is optional. If no seed is pass, one is created automatically using the current system ticks count.
Example:
    Randomize()  /* Seed Randomizer */
    print "random number 1 to 52: "; rnd()*52+1
GetRandom(min,max)
GetRandom() helps get a random number between two numbers min and max.
Example:
    Randomize()  /* Seed Randomizer */
    print "random number 1 to 52: "; GetRandom(1,52)
Note:
Randomize() was added because it was missing from the WCBASIC language. It is common command in BASIC. It wasn't necessary to have as the RND() could be used to initialize the seed and random number generator. The following would be the default equivalent to calling Randomize():
rnd(-1*timer()/0x7FFFFFF)
3rd party developers may wish to use one or both depending on their target version of Wildcat!
Summary Update Information: v6.1 Build 451.9
NEW: New strlib.wch functions
          
          
          Function JustExtension(byval fn as string) as string
          Function ForceExtension(byval fn as string, byval ext as string) as string.
          
          JustExtension() returns the extension of a file. ForceExtension()
          changes the extension to the given extension. 
NEW: New htmlutil.wch functions:
          
          
          Function GetWctIndex (byval s as string, found as boolean) as string
          Function PrepareURL(byval fn as string, url as string) as boolean
          
          GetWctIndex() is a special function to check for WCT files when given
          a HTM file.  Example.  if s is
          "wc:\http\public\mypage.htm", the function will return
          wc:\http\public\mypage.wct if and only if the wct file exist.
          
          ParseURL() converts a wc:\http file name format to the proper URL
          formation, "/" function.  It also calls
          GetWCTIndex().  Example, if fn is
          "wc:\http\public\mypage.htm", then ParseURL() will return
          "/public/mypage.htrm" or "/public/mypage.wct" if
          the WCT file exist.
          
          These functions try to perform the same logic the web server for
          wcBASIC when it looks for HTM vs WCT file to display and/or
          process.  Rather than checking for both redundantly, the
          functions allows you to specify just one, the htm file, and a WCT will
          be used if it is found. 
Summary Update Information: v6.1 Build 451.8
    smtpfilterhlp.wcc
              msgutil.wcc
              htmlutil.wcc
              strlib.wcc
              main.wcc
              run a door.wcc
              html-create message.wcc
              include\smtpfilterhlp.wch
              include\wcodbc.wch
              include\strlib.wch
          
FIX: Fixed GetParam() and NextParam() functions in HTMLUTIL.WCC library to better handle URL name=value pairs with question marks in the value.
NEW: New TrimEol() function removes leading and training CRLF characters.
NEW: See WCODBC.WCH for new functions and types.
NEW: Added new function odbcClearError(conn) in wcodbc.wch.
FIX: WCRUN.EXE now automatically loads the WCODBC.DLL modules.
A new WCXML.DLL API library was added to help support XML/RSS/ATOM Web Services. New files:
WCBASIC\INCLUDE\WCXML.WCH
          WCXML.DLL
        
Summary Update Information: v6.1 Build 451.6
NEW: New WCC compiler switch, 
          /D:define
          
          This switch allows you to set compiler defines statements to compiler
          condition WCX compilations. For example, you can have a DEBUG blocks
          of code, such as:
          
             #define
          DEBUG  
          
             #ifdef
          DEBUG
             print "debug mode:"
             print information
             #endif
          
          Previously, in order to compile this block you had to add a #define
          DEBUG statement above the block. 
          
          Now you can do this from the command line or via WCDEV project
          properties.
          
             wcc program.wcc /d:DEBUG
          
          This allows you to avoid having to add or remove a #define statement.
          
          Comment:  In the programming world, this concept is known as
          PRODUCTION or RELEASE vs DEBUG code.  You can have a RELEASE
          version versus a DEBUG version. 
FIX: Fixed a few compiler syntax bugs related to using colons in CASE statements and labels.
FIX: XMODEM direct local file without quotes.
          Fixed a bug in function DownloadFile() for handling XMODEM downloads for a direct local file.
          In general, DownloadFile() required quotes around the file name.  However, it wasn't required for protocols other than XMODEM.
          The library PROTUTIL.WCC was fixed to solve this XMODEM direct filename without quotes problem. 
NEW: New functions added to STRLIB.WCX library.
          
          RemoveQuotes(s)   - return unquoted string
          InStrSpan(s,set)  - return index of any character in set in s
          FirstWord(data)   - return first word and the remaining data 
NEW: New functions added to HTMLUTIL.WCX library.
          NextParam(nv,key,data)   - return the next key/data from nv pairs. 
FIX: Fixed JustFileName() when passing quoted file names.
FIX: Fixed Download Successful recording of multiple files for XMODEM protocol.
          The library PROTUTIL.WCC was fixed to solve this multiple file download
          XMODEM recording. 
NEW: New intrinsic functions were added
          to delete extended user fields:
          
          For Current User Session:
          
          DeleteUserProfile(key) - delete a key in the
          "profile" section
          DeleteUserVariable(section,key) - delete a key in the specific section
          
          For Other User Record:
          
          DeleteUserProfile(TUser,key) 
          DeleteUserVariable(Tuser,section,key) 
 
Summary Update Information: v6.1 Build 451.5
NEW: New WCSDK Native API Function:
          
       BOOL GetConnectionInfoFromChallenge
                      (
                       
          const char *challenge,  // input
                       
          TConnectionInfo &ci     // output
                      );
          
       Given a Wildcat! challenge string, retrieve the client connection information record for the specific client connected to the server.
          
       This could be any client connected to the server, however, it is most useful for find a specific user that is logged on.  This is
          used by the web server to login and start new web session who who originally logged in via WcNavigator. 
          
          Note: This functions is not needed in WCX application since active
          authenticated WCX sessions already has access to session information. 
New Sysop and User File Manager HTML WCX
          modules added to the default WILDCAT.WCL base image library and the
          WCBASIC Plus Pack Source Code add-on product:
          
          HTML-FM-DELETE.WCC
          HTML-FM-MOVE.WCC
          HTML-FM-EDIT.WCC
          HTML-FM-EDITSAVE.WCC 
Summary Update Information: v6.1 Build 451.4
Added New wcBASIC Function:
          
               Function GetConnectedServer() as String
          
          return the Wildcat! Server computer name. 
Updated WINDOWS.WCH with additional Windows API functions
Add New wcBASIC Hook -
          "xxxPostDownload.wcx"
          
          xxxPostDownload.wcx will be called when a file has been successfully
          downloaded. Depending on the type of connection the following WCX will
          be called:
          
          WEB HttpPostDownload.wcx
          FTP FtpPostDownload.wcx
          CONSOLE PostDownload.wcx
          WCNAV NavPostDownload.wcx
          
          Summary:
          
          Similar to the scanfile.wcx concept, where scanfile is called after a
          successful upload of a file, the postdownload.wcx module (if any) is
          called after a file in the Files Database has been successfully
          downloaded by the currently logged in user.
          
          The first parameter is the name of the file and the GlobalFileRecord
          will contain the current file record downloaded. In addition, the
          GlobalUserRecord is also set for the current logged in user
          downloading the file.
          
          Note: GlobalResult has no meaning in PostDownload.wcx. When
          PostDownload returns, nothing more is done by the calling hosting
          server.
          
          Why?
          
          Well, the original reason for this new hook was based on a customer
          request to be able to log a file download by a user. However, we
          envision other usages such as:
          
          - System notifications
          - Recording
          - Statistics
          - Deleting a personal file once downloaded,
          - other.
 
Summary Update Information: v6.0 Build 451.2, 451.3
The new MakeDirectory() wcBASIC function now also works for Wildcat! Path Names as well.
Important documentation note about the
          wcBASIC MkDir(), Make Directory command.
          
          As documented in the wcBASIC manual,  if the MKDIR() command
          failed, an exception catch error ERR_PATH is signaled. If your code
          did not use a CATCH ERR_PATH statement, then the wcBASIC application
          was aborted.  A CATCH ERR_PATH block of code would trap the error
          so that your application can continue running.
          
          In the current version (actually since 450.9), an catch error is
          thrown for all MkDir() errors except the "DIRECTORY ALREADY
          EXIST" (Windows Error 18).  For example, a bad directory
          name passe to mkdir() will produce an ERR_PATH catch exception error
          which is only detectable by using a CATCH ERR_PATH block of code in
          your application. Otherwise, the application is aborted. 
          
          The key issue with the MkDIR() command is that it is not a
          function.  It does not return an error number or TRUE/FALSE value
          as a functional version of MkDir() would.   This is the
          reason the new MakeDirectory() function was made available.  Use
          MakeDirectory() as a Boolean function to allow you to detect an error
          without using catch exception trapping. 
Summary Update Information: v6.0 Build 451.1
wcBASIC.ZIP (compiler and headers) and wcBASICPP.ZIP (source code) files respectively.
wcSDK, wcBASIC and wcBASIC Plus Pack packages are also available via new v6.0 CD distributions.
For WCSDK and wcBASIC development, the online help files were converted to Windows DHTML help files (CHM).
A listing of wcBASIC library modules and headers are summarized for easy viewing.
The new IDE environment WCDEV.EXE with project management support is now the official IDE for wcBASIC. While the older WCIDE.EXE utility will be made available for customers who still wish to use it, it is now considered obselete and will no longer be updated unless they is a popular need to do so. The wcDEV utility is essentially 100% the same as wcIDE with the addition of project management support similar to Microsoft's Visual Studio.