Thursday, September 15, 2005

UniBasic version 8.1 Production Release
All Rights Reserved.  Copyright (c) 1990 - 2005 by:
Dynamic Concepts, Inc. Aliso Viejo, CA 92656 USA

Email address:  techsupport@dynamic.com
Information:    www.unibasic.com
Downloads:      ftp.dynamic.com

Release instructions
====================
o   This release requires an SSN authorized for UniBasic release 8.  
    UniBasic can be used in a single user demo mode if the system lacks 
    an SSN.

o   This release requires Passport version 4.1 or later.  Any earlier
    version of Passport should be upgraded to the current release of
    Passport before installing UniBasic 8.1.

IMPORTANT REMINDERS:  
====================
    UniBasic 8.1 will not run with an SSN issued for UniBasic release
    7 or earlier.  Please acquire and install a UniBasic 7 SSN prior to
    installing UniBasic 8.1.

    UniBasic 8.1 will not run with a release of Passport older than
    release 4.1.  Please install the current release of passport before
    installing UniBasic 8.1.

    Previous versions of UniBasic will run with UniBasic 8 SSNs and the
    current release of Passport.

New in This Release
================================================================================

Sep 15 2005 (Release 8.1)

o   SCO OpenServer 6 is supported by platform 55 which has been renamed as
    "SCO OpenServer 6 / UnixWare 7".  Platform 55 is now ported on UnixWare
    7.1.4 and this may cause compatibility problems on earlier UnixWare
    releases such as 7.1.1.

o   The maximum number of variables can now be increased from 348 to 1113 by 
    setting the MAXVARS environment variable to "extended" when creating 
    uniBasic programs.  The number of variables is only increased in new
    programs; to increase the limit in an existing program, the program must 
    be dumped to a text file and reloaded after a "new" command.  If the 
    MAXVARS environment is not set to "extended", newly created program files 
    will be limited to at most 348 variables and the program files will be 
    executable with older releases of uniBasic.  Program files created with 
    MAXVARS set to "extended" will only be usable in uniBasic 8.1 or later
    (a "Not a loadable program file" error will occur if an extended program
    is loaded in an older version of uniBasic).  Setting MAXVARS to "extended" 
    is only required to create programs - it is not needed during program 
    execution.

o   The PORT environment variable can now set to the value of "any" to force
    autogeneration of a port number.  If this feature is used, the tty name
    will be ignored and the first available port number starting downwards
    from the maximum port number will be selected.  A profile script can
    use this feature to prevent telnet connections from using the port
    numbers assigned to serial ports.

o   Adds support for systems running Apple Mac OS X 10.4 or later (platform 
    id "A4").

o   Adds the ability to read and write standard dL4 Portable Indexed
    Contiguous, Contiguous, or Formatted files.  ANSI characters which are 
    not part of the 7-bit ASCII character set will be ignored when reading 
    from dL4 Portable files.  Mnemonic characters cannot be written to dL4 
    Portable files.

o   Improves compatibility with RedHat Enterprise Linux Version 3.

o   Increases the maximum length of terminal type names from the TERM 
    environment variable from 9 to 80 characters.

o   Adds terminal translation files for "xterm" and "xterm-color" terminals.

o   Improves handling of improperly disconnected telnet sessions.

o   Changes unibasic so that it exits if an end of file is detected when
    reading a command line.

o   Fixes a problem with PSAVEd programs not running when unibasic was started
    with the "-X" or "-P" options.

o   Fixes a problem where using CALL 45 with a bad argument list caused a
    memory violation.

o   Fixes a problem such that CALL 65 sometimes caused memory violations.

o   Fixes a problem in which lpt.iris.sco did not delete lock files correctly 
    on file systems where the inode number exceeded 16 bits.

o   Fixes a problem where email.sendmail looped forever if an unrecognized 
    command line parameter was encountered.  The script will now exit with 
    an "exit 1" statement if a bad parameter is found.

Nov  5 2004 (Release 7.2.5)

o   Fixes a problem in which a spanned record read reported an error 88 if
    a variable size extended beyond the end of the file.  The error should
    not have occurred as long as some data had been successfully read.

o   Fixes a problem in which UniBasic would suddenly exit with an "error -22"
    or "Message queue init: Invalid argument" message.  The problem occurred
    most often on multiprocessor systems with applications that performed a
    large number of SWAP or SPAWN statements.

o   Fixes a problem in which the port number was not correctly extracted
    from a terminal device name.  For example, a user running with
    /dev/pts/123 was given port 23 instead of port 123.

Sep  3 2003 (Release 7.2.4)

o   Compatibility with RedHat 9 Linux has been improved.

May 16 2003 (Release 7.2.3)

o   Huge files (files larger than 2 gigabytes) are now supported on the
    Alpha platform (BB).

o   Fixes a problem in which opening an indexed contiguous file using
    ROPEN sometimes caused recently added or modified keys to be ignored.

Feb 21 2003 (Release 7.2.2)

o   Fixes a problem where the PREALLOCATE 4096 option would sometimes 
    report that a program had written to a deleted record when, in fact,
    no such error had occurred.

o   Huge files (files larger than 2 gigabytes) are now supported on the
    Linux platform (6D).

o   The Linux platform, 6D, is now compiled and linked on a RedHat 7.3
    system rather than on RedHat 6.1.  This platform upgrade matches that
    used by dL4 and was required to support files larger than 2 gigabytes.
    Systems using RedHat 6.x or similar kernels may need to be upgraded
    before using UniBasic 7.2.2.

o   The SCO platform, 99, is now compiled and linked on SCO OpenServer
    5.0.6 rather than SCO Unix 3.2.4.

o   A new CALL, $CALLSTAT, has been added so that programs called by 
    filename can determine the name of the calling program.  The syntax
    of the new CALL is:

        CALL $CALLSTAT,NAME$

    The string variable NAME$ is set to the name of the calling program 
    or to "" if the current program isn't a subprogram.

o   Fixes a problem in which Portable files created by dL4 were opened as
    Universal files even though the numeric and/or string data formats were
    not compatible.  Such files are now opened as Unix text files which is
    the standard open mode for non-UniBasic files.

Dec 26 2001 (Release 7.2.1)

o   Fixes various portation problems for systems that do not support files
    larger than 2 gigabytes.

Oct 16 2001 (Release 7.2)

o   Universal Indexed, Contiguous, or Formatted files larger than 2 gigabytes
    in size can now be created on UnixWare 7 or AIX 4.3 systems.  The maximum 
    size of the index portion of Universal Indexed files is 256 gigabytes on 
    those systems.  The size of the data portion is limited only by the amount 
    of storage space available.  To use this feature a file must be created as 
    a huge file using the "H" attribute:

        Build #1,"<H>[1:40]File"

    All huge files are also Universal files and can be used by both UniBasic 
    and dL4.  Currently, huge files are supported only on UnixWare 7 and 
    AIX 4.3.  They are not supported on SCO OpenServer because OpenServer 
    does not allow user files to be larger than 2 gigabytes.  In order to 
    build huge files on UnixWare 7 or AIX, the file system must be configured 
    to support files larger than 2 gigabytes.  Please see the UnixWare or AIX 
    OS documentation for instructions on how to configure file systems.  To 
    share huge files across a network, both the file server and the client 
    systems must support sharing files larger than 2 gigabytes in size.

    Note: the ISAMSECT environment variable should be set to a value of 8
    on any system using huge indexed files.  The index portion (.idx) of an
    indexed file cannot exceed 2 gigabytes in size if the default ISAMSECT
    value of 4 is used.  Files with very large keys (more than 64 characters)
    may benefit from or even require ISAMSECT values greater than 8.

    Universal files can be converted to Huge Universal files by using the 
    makehuge utility.  Example:

        #makehuge filename

    where "filename" is the name or path of an existing Universal file.
    The makehuge utility cannot change the index node size (ISAMSECT value)
    of a file.  To change the index node size, run the "ubcompress" utility
    on the file with the new ISAMSECT value before converting the file into
    a Huge Universal file.

    Huge files are not supported by the current release (5.x) of IQ for 
    Windows.

o   A new environment variable, ISAMMAXSECT, has been implemented to
    define the maximum index file node size that can be opened.  Like 
    ISAMSECT, the variable is defined as a number of 128 byte blocks.  
    ISAMSECT still controls the node size of newly created index files.
    If ISAMSECT is larger than ISAMMAXSECT, then ISAMMAXSECT will be
    set equal to ISAMSECT.  The default value of ISAMMAXSECT is 8 which
    allows index files with up to 1024 byte nodes to be opened.  This
    default is compatible with the default node size of dL4 index files.
    The default value of ISAMSECT is 4 as in previous UniBasic releases.

o   The terminal translation file "term.scoansi" has been modified to be
    compatible with the SCO OpenServer 5.0.6 system console.  Either the
    new term.scoansi or the old term.ansi can be used on pre-5.0.6 system 
    consoles.

o   Fixes a problem in which the ubcompress utility changed the index
    portion of a universal file to a non-portable format.  To fix a 
    universal file that has become non-portable, run the command:

        ubcompress -f filename

    on the system on which the file was created.  The "-f" option will
    not work correctly if a file has been moved to a platform different 
    from that on which the file was created.  When moving to a new 
    platform, the ubcompress utility with the "-f" option should be 
    run on all universal indexed files before the files are moved.  The 
    "-f" option will not change universal files that do not have the 
    non-portability problem.  

o   Fixes a problem in which the value "2^31" was sometimes treated as
    being equal to zero.


May 15 2001 (Release 7.1.1)

o   A new dynamicXport CALL, $DXCOPY, has been added.  This new CALL copies 
    the input table to the output table ('CALL $DXCOPY')

o   Fixes a problem in which the dynamicXport CALL $DXCLOSE would not
    overwrite an existing file even if the filename included a trailing 
    exclamation mark ('CALL $DXCLOSE,"file!").

Apr 26 2001 (Release 7.1)

o   Support for writing DynamicXport applications.  DynamicXport is a
    new middleware product from Dynamic Concepts that makes it easier to
    add web access to existing UniBasic, dL4, or other applications. Five
    new CALLs have been added for use with DynamicXport.  The new CALLs 
    are $DXOPEN, $DXCLOSE, $DXGET, $DXSET, and $DXURL which are described 
    in the DynamicXport programming documentation.  These CALLs cannot be 
    used unless the system SSN includes a DynamicXport license.

o   A new intrinsic CALL, $NCRC32, has been added to calculate 32-bit CRC 
    values of string values.  The CALL has two forms:

        CALL $NCRC32,C,S$

    and

        CALL $NCRC32,C,S$,O

    where "C" is a 3% or 4% numeric variable that receives the calculated
    CRC value, "S$" is the string to be checksummed, and "O" is an optional
    numeric value containing a previously calculated CRC value.  The second
    form is used to calculate the combined CRC value of several strings.  In
    order to support checksums of entire record images, the CRC value is 
    calculated using the DIMmed size of the string and not the current string 
    length.  String subscripts can be used to limit the number of string 
    characters included in the CRC calculation.

o   A new startup option, "-X", has been added to support DynamicXport
    applications.  DynamicXport applications written in UniBasic are
    started with the command "unibasic -X programpath".  This format
    identifies the program as a DynamicXport application and configures
    UniBasic with necessary options.  The "-X" option disables all
    terminal I/O (PRINT statements without a channel number will be 
    ignored).  The "-X" option is otherwise similar to the "-F" option.

o   An alternate form of the "-F programpath" option has been implemented
    to run non-interactive programs.  If UniBasic is started using the
    command line "unibasic -P programpath", then the UniBasic program
    "programpath" will be executed without the normal startup text and
    without terminal translation.  UniBasic will exit when the program
    exits.  

o   A new option, "-i k", has been added to the ubconvert and
    ubconvertfiles utilities to support converting files with IRIS
    style ("k" attribute) keys.  The keys must consist of character
    data, not binary 8-bit data.

May 10 2000 (Release 6.1.5)

o   Fixes a problem in CALL 28 that caused a memory violation if only one
    parameter was used ("CALL 28,A$").

Apr 19 2000 (Release 6.1.4)

o   Fixes a problem that caused the QUERY utility to output no information
    for Universal Indexed-Contiguous files.

o   Fixes a problem in CALL 127 and SEARCH that prevented reporting the 
    number of active records in Universal Indexed-Contiguous files.

o   Fixes a problem in CALL 24 in which no error was reported when a date
    did not include a year.  For example, the string "01/04/**" returned
    the same successful result as "01/04/00".

o   Fixes a problem in lptfilter in which using the "-f" option caused a
    memory violation on some platforms.

Feb  4 2000 (Release 6.1.3)

o   Fixes a problem in the QUERY utility in which incorrect file creation and 
    last access dates were displayed.

o   Changes platform 6D to use RedHat 6.1 as the Linux reference system.  This 
    release may not be compatible with older releases of Linux such as 
    RedHat 5.x or earlier.  The platform update is necessary for compatibility 
    with RedHat 6.x and other current Linux distributions that use glibc 2.1 
    as the C runtime library.

o   Fixes a problem in CALL 127 in which incorrect file creation and last 
    access dates were returned.

o   Fixes a problem in CALLs 24, 25, 27, and 28 in which subscripted string 
    and literal string arguments were processed incorrectly or overwritten.

o   Enhances CALLs 24, 25, 27, and 28 to skip leading spaces in input
    arguments.

o   Fixes a problem in TIM(3) and SPC(3) where an incorrect time was returned
    after the system time was changed or adjusted.

o   Fixes a problem in which OSNs were not available unless the user had
    write access to /etc/DCI/osn.

o   Fixes a problem in $DEVREAD in which fixed length reads returned more than
    the specified number of characters.

o   Adds a terminal translation file, term.linux, for a Linux system console.

June 2 1999 (Release 6.1.2)

o   Change platform 55 from "UnixWare" to "UnixWare 7" to reflect move from
    UnixWare 2x to 7x.

o   Fixes a problem on Motorola SVR4 (platform C3) where Dynamic Window 
    borders were not printed properly.

December 9 1998 (Release 6.1.1.2)

o   Changes native OS of BB platform from OSF/1 V3 to Digital Unix 4.0 (a
    later, renamed release of OSF/1 with year 2000 support).

o   Fixes a problem where "initializing the free list" (unnecessary in
    UniBasic, but supported for compatibility) in a newly created Universal
    Indexed Contiguous file resulted in records being allocated twice if the
    application did not immediately write data to newly allocated records.

o   Fixes a problem in CALL 56 in which a search failed if the target string
    match included the end of the dimensioned length of the source string.
    For example, 'CALL 56,S$,"cd",P' would set P to -1 instead of 3 when S$ 
    was "abcd" if S$ was dimensioned to 4 characters.

August 4 1998 (Release 6.1.1)

o   Fixes a problem where deallocating records that were never allocated in a
    malfunctioning program eventually exhausted system record lock resources.

o   For backwards compatibility, CALL 127 now allows the third parameter, 
    filename, to be dimensioned to 31 bytes.  However, the Universal Data File 
    attribute, (U attribute) will not be reported.  This variable should be 
    dimensioned to 64 for possible future expansion.

o   Fixes a problem with CALL $DATE, where $DATE incorrectly returned an 
    eight (8) digit date for a six (6) digit requested date.

May 18 1998 (Release 6.1)

o   Universal Data files: these file types are hardware independent,  
    can be moved among different Unix platforms and are fully accessible 
    using UniBasic 6 and dL4.  These files are also accessible on 
    IQ for Unix and Windows and dL4.

o   ubconvert is a user-level utility that converts UniBasic BCD files
    to Universal Data files.  A separate ubconvert document is 
    available from www.unibasic.com.

o   ubconvertfiles is a low-level utility that converts UniBasic BCD 
    files to Universal Data files.  The ubconvertfiles utility is 
    fully described in a separate ubconvert document, available
    from www.unibasic.com.

o   New PREALLOCATE value, 8192, selects creation of Universal Data files.

o   New "communication" calls, $DEVOPEN, $DEVREAD, $DEVWRITE, $DEVPRINT, 
    and $DEVCLOSE.

o   New scripts $email.mail and $email.sendmail that allow sending email 
    from a BASIC program.

o   UniBasic no longer incorrectly reports "File is in use and locked" 
    since it now detects if a process died without removing printer 
    lock files.

o   UniBasic port numbers and Unix process ids are written to printer 
    lock files.

o   Supports 132 columns for wyse 50 and wyse 60 terminals.  The default
    distribution files for term.wyse50 and term.wyse60 are set for 
    80 column support.  If you plan to use 132 columns for these 
    emulations, please change max_x:80 to max_x:132 in the appropriate 
    Terminal Translation Files, i.e. term.wyse50 and term.wyse60.

o   Supports 132 columns terminal output.

o   A new ubtestlock diagnostic program to test record locking in 
    a network environment.

o   A new sample printer driver, lpt.iris.sco, corrects a 32-bit
    printer i-node problem for SCO OpenServer users.

o   All date and time related functions are year 2000 compliant.  

o   Calls 24, 26, 27, and 28 can handle 4 digit years.

o   New TIM options, TIM(14), TIM(15), and TIM(16), return 4 digit years.

Installation instructions
=========================
1.  Ensure that you have Passport version 3.1 or greater installed on your
    system.  For common platforms, the latest Passport software can be 
    obtained from www.unibasic.com or ftp.dynamic.com.

2.  Login as 'root'.

3.  Copy the distribution file to any temporary directory on your system, 
    e.g., "/tmp".  Please note that upon successful installation, all files 
    from the current working directory and the current directory will be 
    removed.  

4.  If the distribution file has a ".Z" extension, uncompress the file using 
    the command "uncompress filename.Z".  If the file has an extension of
    ".z", rename the file with an uppercase "Z" before uncompressing the
    file.

5.  Unpack the distribution file using the command "cpio -imcduv <filename".
    If an error message occurs, try using the command "cpio -imduv <filename"
    or "cpio -imduvHodc <filename".

6.  Type "./ubinstall".

Important Files
===============
README                  This file
license.txt             License terms and conditions
unibasic                UniBasic release 7 executable

User Documentation:
===================
A release 7 version of the "UniBasic Reference Guide" is available from 
www.unibasic.com.  In addition to corrections, this manual documents 
in detail all new features.

A separate ubconvert document is available from www.unibasic.com.

Passport:
=========
UniBasic 7 requires Passport 3.1 or later.  Please install Passport 
3.1 or later prior to running UniBasic.  The UniBasic installation 
script does NOT install Passport.  The revision number of Passport 
can be found in /etc/DCI/passport.log or its equivalent error log file.

If you attempt to run UniBasic with a Passport older than 3.1, you 
will see messages such as:

        Waiting for response from security daemon ...

and eventually an exit.

Networking:
===========
Although this product was not specifically tested in a network environment,
it should work in a properly configured NFS system which can properly
handle record locking.  The product itself does not use any system calls 
specific to networking.

Please verify that your system is configured correctly if you are having 
problems using this product in a network environment.  For your convenience, 
this product includes a standalone utility, ubtestlock, to assist you in 
testing your configuration.  

Year 2000:
==========
In addition to date and time related functions, those user calls that 
are documented in the "UniBasic Reference Guide" are year 2000 compliant.  

Effective UniBasic 6, 2 digit years (Y2) are converted by date calls 
to be in the nearest century based on a plus/minus 50 years rule.  A 
two digit year is thus assumed to be within 50 years, plus or minus, 
of the current year as returned by the system.  For example, if the 
system returns 1998 as the current year, then the year 47 will be 
interpreted as year 2047, and year 49 will be interpreted as year 1949.

Although UniBasic 7 is year 2000 compliant, an application program 
itself may have problems with year 2000.  For instance, application 
programs may calculate time incorrectly, compute leap years incorrectly, 
or sort dates incorrectly.  For example, if keys in Indexed Contiguous 
files contain 2 digit years, then a simple sequential search will NOT 
correctly sort dates.

Dynamic Concepts strongly recommends that all two and three digit years 
should be converted to a four digit years to avoid any possible 
misinterpretation.  

Copyright Notices:
==================
UniBasic is a trademark of Dynamic Concepts, Inc.
dL4 is a trademark of Dynamic Concepts, Inc.
IQ is a registered trademark of IQ Software Corporation.
Windows is a registered trademark of Microsoft Corporation.

Platforms
=========
Operating system information for UniBasic 8.1 production:

ID  Platform                "uname -a"
--------------------------------------------------------------------
07  PowerPC 603 AIX         AIX sysname 3 4 0000185B4C00
55  UnixWare 7              UnixWare sysname 5 7.1.4 i386 x86at SCO UNIX_SVR5
6D  Linux x86               Linux sysname 2.4.20-20.7 i686 unknown
99  SCO Unix                SCO_SV sysname 3.2 5.0.6 i386