*
* Component:  IBM* Workstation APL2* Version 2.0
*
* Function:   README for Linux*
*
* Copyright:  (c) Copyright IBM Corp. 2002
*             Licensed Materials - Property of IBM
*             All Rights Reserved.
*
*             US Government Users Restricted Rights -
*             Use, duplication or disclosure restricted by
*             GSA ADP Schedule Contract with IBM Corp.
*
* License:    Installation of this product implies acceptance of
*             the license statement in the LICENSE INFORMATION
*             section of this README file.
*
========================================================================

CONTENTS

     1. Introduction
     2. Pre-requisites
     3. Installation
     4. Invocation
     5. Additional information
     6. Service Information

========================================================================

1. Introduction

   ABOUT THIS MEMO

   The information in this memo consists of hints for configuring the
   system, specific installation and update instructions, last minute
   updates to the documentation, and information on fixes included
   in this level of the system.

   This is the May, 2007 edition of this document, for Service
   Level 10.  See section 6 for detailed information on the fixes and
   other changes in this level.

========================================================================

2. Pre-requisites

   - APL2 for Linux is intended for PC compatible hardware only.

   - APL2 for Linux requires the following software:

     - glibc 2.3.2 (or later)
     - Motif* 2.2 (or later)
     - X Window System X11R6 (or later)

     Note: The pre-requisite for glibc 2.3.2 is new as of Service Level 7.
           You can check your level of glibc with the following command:

             rpm -qa | grep glibc

           If you do not have level 2.3.2 or later,
           DO NOT INSTALL THIS SERVICE LEVEL.  APL2 will not run.

   - The session manager, AP 124 and AP207 use Motif services and have
     a runtime dependancy on Motif shared libraries. Please note
     that Motif libraries do not come with all Linux distributions,
     so it is possible you will have to obtain and install them.

     If Motif is not available as an option on your Linux distribution's
     installation media,

        Lesstif is available for download at:
           http://www.lesstif.org
        Open Motif is available at:
           http://www.openmotif.com

     The affected APL2 components require the Motif shared library files
     to be at level 3 (for example, libXm.so.3).  If you do not have this
     level of the required libraries available, the session manager,
     AP 124 and AP 207 will not start.  Messages stating which Motif
     files are required will be displayed in the APL2 console window.

     Although correct operation of APL2 is not guaranteed, if
     you have a different level of Motif, you may be able to bypass
     the problem by creating links between the files required by APL2
     and the files you have.  For example, if you have level 4, you can
     create links to your level 4 files using the names for level 3:

        ln -s libMrm.so.4 libMrm.so.3
        ln -s libXm.so.4 libXm.so.3

   - Adobe* Acrobat* Reader is required to view the on-line documentation.

   - Some components (AP 119, AP 127, AP 227, the TCL external routine,
     Processor 10, Processor 14 and Calls to APL2 from Java*)
     have additional pre-requisites and/or installation steps.
     Please refer to the APL2 User's Guide for more information.

========================================================================

3. Installation

   APL2 for Linux is distributed on CD or by download in a single
   gzip'd "tar" file.

   1. (Download method only) Download the apl2lv20.tgz and apl2lv20
      files in binary mode to a temporary directory on your Linux machine.

   2. "cd" to the directory where the apl2lv20.tgz and apl2lv20
      files reside.

   3. (Download method only) Make the apl2lv20 file into an executable
      file with the command:

      chmod 755 apl2lv20

   4. Switch to root authority ("su" command)

   5. Run the installation script and follow the prompts:

      ./apl2lv20

   6. Exit from root authority

   Downloaded files can be removed after the installation.
   Copies of the README and install script are saved into the
   APL2 directory for your future reference.

   After the installation is complete, you will need to modify the
   .bash_profile (or appropriate shell profile) on all userid's that
   will be running apl2 to add access to the apl2 fonts:

      xset fp+ /usr/APL2/fonts/X11
      xset fp rehash


   National Language Selection

   When APL2 is started, the apl2 shell script attempts to select
   from the available national languages for APL2 based on the value
   of the system environment variable LANG.   It contains logic to map
   some of the common names for these languages to the names used by
   APL2 (En_US, En_UK, Fr_FR, Gr_GR, and It_IT).

   If LANG is not set, or is not one of the values recognized by the
   shell script, English will be used for system messages, and the
   X resource files used will be those that contain mapping for the
   USA standard keyboard.  Local modification of the apl2 shell
   script may be necessary if another national language setting is
   desired for APL2.


   AP 127 Installation

   This refresh of APL2 contains an updated version of AP 127.
   If you are using AP 127 to access DB2* you must re-bind the APL2
   packages at their new level.  Please refer to the User's Guide for
   instructions on using the apldb2 shell script to do the binds.

========================================================================

4. Invocation

   To run APL2, execute the command:

      apl2 [optional invocation parameters]

   To view the on-line documentation, start Adobe Acrobat Reader and
   open one of the documentation files in the directory:
      /usr/APL2/doc

   apl2ug.pdf  -   APL2 User's Guide
   apl2us.pdf  -   APL2 Programming: Using SQL
   apl2gp.pdf  -   APL2 GRAPHPAK: User's Guide and Reference
   apl2ls.pdf  -   APL2 Language Summary
   apl2lrm.pdf  -  APL2 Language Referencee
   apl2web.pdf -   APL2 Programming: Using APL2 with WebSphere*

========================================================================

5. Additional Information

 - KDE 3.0 "kicker" or "klipper" Termination

   On some systems with KDE 3.0, the KDE panel ("kicker") or clipboard
   tool ("klipper") may terminate when APL2 starts.
   This problem has been traced to the apl2 shell script's use
   of the xterm option "-iconic" with a custom icon to create the
   environment required by the apl2 default option "-hostwin icon".
   It has been reproduced outside of APL2.  Until KDE 3.1 can be
   installed, the bypass for APL2 users is to specify apl2 option
   "-hostwin off" or "-hostwin on".

 - Insufficient message queues

   APL2 uses Linux message queues for cross-process communication.
   If the number of message queues allowed is too small, symptoms may
   include auxiliary processors unable to start or shared variable
   offers being refused.

   To query the current settings, issue the following command:

      ipcs -l

   The typical problem is a small number (less than 128) for setting
   "max queues system wide" under "Messages: Limits".  To correct this
   for the current session only issue the following command as root:

      sysctl -w kernel.msgmni=128

   To set the msgmni kernel parameter at boot time, add the following
   lines to /etc/sysctl.conf:

      # Sets maximum number of message queues to 128
      kernel.msgmni = 128

   or, if a line setting kernel.msgmni already exists in the file,
   increase the number specified.

 - Special Key Definitions

   The APL2 User's Guide and the Session Manager on-line help document,
   and the ap120 resource files define, special actions assigned to
   many of the Ctrl-Fkey keystrokes.  On Linux, some of these keystroke
   combinations are intercepted by the system before reaching APL2, so
   their APL2-defined functions are not available.  Users may locally
   modify the ap120 resource file to move these functions to different
   key combinations if desired.

   In addition, on some distributions with some national language
   configurations, the ctrl-pause (break) key combination is also
   intercepted. As a result, its APL2-defined behavior (interrupt) is
   not available.  The ctrl-c key combination or the Session Manager
   menu option "Signals" may be used instead to achieve an interrupt.

   AP 124 and AP 207 key code processing is also affected by these
   restrictions.  When these key combinations are intercepted by the
   system, control is not returned to AP 124 and AP 207, and in turn
   no key codes are returned to the user program from AP 124 and AP 207.

 - AP 124 Keyboard Layouts

   The AP 124 documentation describes two keyboard modes, APL mode and
   national mode.  To switch between APL mode and national Mode,
   AP 124 command 8, or the key combination ctrl-backspace, can be
   used.

   In reality, there is a third keyboard mode, union mode, which is
   defined in the product default resource file for ap 124
   (/usr/APL2/nls/$LANG/ap124).  This keyboard configuration is coded
   to override national mode.  When it is in effect, command 8 or
   ctrl-backspace switches between APL mode and union mode.

   For national mode, the extended function codes defined for
   AP 124 commands (3 1), (3 2) and (3 3) include special codes for
   the alt-alphabetic and alt-numeric key combinations. (See the
   User's Guide for the complete table of Extended Function Codes).

   For union mode, the special alt-alphabetic and alt-numeric extended
   function codes are not returned.   In order to have these codes
   returned to the ap 124 application, the union keyboard definition must
   be removed from the ap 124 resource file.

 - Keyboard modifiers used by AP 124 and AP 207

   AP 124 and AP 207 use a common keyboard mapping scheme.  This scheme
   uses the <Mod3> modifier to determine whether APL mode is on or off,
   and it uses the <Mod5> modifier to determine if NumLock is set.
   On your Linux system, the key modifier usage may be customized -
   NumLock may be assigned to a different modifier, and/or <Mod3> may be
   in use for another function.  The Unix command "xmodmap" may be used
   to query and/or change the assignment of the key modifiers if needed
   to obtain the desired behavior from AP 124 and AP 207.

========================================================================

6. Service Information

================================================================================
 APL2 for Linux -- Service Level 10
================================================================================

================================================================================
 Enhancements Added in Service Level 10
================================================================================

 Invocation
  - Support has been added for the use of a configuration file (.ini)
    to specify APL2 options and settings.  For more information see the
    APL2 User's Guide chapter "Installing and Customizing APL2"

  - New invocation options -p11, -207fl and -prtg correspond to the
    environment variables APLP11, APL207FL and APLPRTG.  For more
    information see the APL2 User's Guide chapter "Invoking APL2"

  - A negative value may be passed to the -id parameter, indicating that
    the first available id number starting with the specified value
    should be used.  For more information see the APL2 User's Guide
    chapter "Invoking APL2"

 Java Interfaces
    Java objects may now be passed directly to APL2, instead of being
    converted to APL2 objects.  For more information, see "Calling APL2
    from Java" in the APL2 User's Guide Chapter "APL2 Programming
    Interface (Calls to APL2}".

================================================================================
 Problems Fixed by Service Level 10
================================================================================

 Interpreter
    KOB0392  Interpreter should discard stack on Interrupt
    KOC1270  DOMAIN ERROR from matrix divide
    KOC1279  SYSTEM ERROR on disclose with fill from scalar
    KOC1283  QuadFX does not blow down single byte character strings

 AP 127/AP 227
    KOC0941  Double colon in SQL statement rejected by AP 227

 Supplied External Routines
    KOC1277  Color customization for EDITOR_2
    KOC1300  OPTION fails for names longer than 11 characters

 Workspaces
  DEMO207
    KOC1266  DEMO207 horse runs too fast

 Documentation
    KOC1231  Update User's Guide TZ information

================================================================================
 Enhancements Added in Previous Service Levels
================================================================================

 Calls to APL2
  - The APL2 interpreter has been re-packaged into a shared library which
    is callable by other programs.  Specific support and documentation
    is provided for calling APL2 from the C and Java environments.

  - A new sample C program demonstrates using the APL2 Programming
    Interface to call APL2 from C.

  - APL2 is added to the list of languages and programs that are
    supported by the APL2 Program Interface.  An external function,
    APL2PIA, provides a synchronous call interface for managing APL2
    sessions. An auxiliary processor, AP 200, provides an asynchronous
    shared variable interface to the same facility.

 Interpreter
  - The following deviations from the APL2 Language Reference
    have been removed:
    - QuadPW is now a session variable
    - The maximum rank of an array has been increased from 63 to 64
    - Comments are now allowed after system commands
    - When displaying nested arrays (default display and monadic format),
      in columns with both numeric and character data, the character data
      is right-justified.  In columns with only non-numeric data,
      character data is left-justified.
    - When results of disclose, expand, replicate and take require the
      use of fill items, the added items will use the prototypes
      for the first element of the correct dimension rather than always
      using the prototype of the first element of the array.
    - The results from partition when one or both arguments are null
      are the correct depth and shape as defined by the language.
    - The depth of the result of monadic format of nested arrays is at
      most two, instead of taking the depth of the argument.

  - 4-byte characters are now allowed in function and operator
    definitions, in both comments and character constants, and will
    be correctly handled by 2 QuadTF, QuadFX, QuadCR, )IN and )OUT.
    4-byte characters are useful in countries such as Japan, that
    have extended character sets.

 AP 119
    The 'SOCKET' command has been enhanced to accept the 'DGRAM' type
    keyword, which allows the use of datagram sockets.

 AP 127/AP 227
  - A new invocation option, -isol, has been added for AP 127 and AP 227.
    This invocation option sets the default isolation level for the
    APL2 session.  Note: isolation level can also be changed dynamically
    using the AP command 'ISOL'.

  - Two new commands have been added to AP 227:
    - ODBC retrieves information about available datasources or drivers.
    - ODBCOPEN sets up an SQL table containing information about
      the tables or supported datatypes of the current database.

  - Support is added for an indicator to be used with value list indices to
    request processing of data with the BLOB (Binary Large Object) SQL type.
    In the following SQL statement
          INSERT INTO TABLE (CHARCOL, BLOBCOL) VALUES (:1, :B2)
    the use of the letter B (:B2) indicates that AP 127 should use
    the BLOB type when passing the associated data to DB2

 AP 207
  - The 'CURSOR' command has been enhanced to support eleven additional
    cursor images.
  - An additional cursor image, the hand, is supported by the CURSOR
    command as cursor number 13.
  - The GRDATA command is implemented for the Unix systems, with the same
    syntax and functionality as the current GRDATA command on Windows.

 EXECUTE_APL Callback Service
    A new callback service is provided for external functions written
    to the :link.FUNCTION protocol.  EXECUTE_APL allows external
    functions to request execution of APL expressions and functions.

 Processor 11
    Support is added for searching more than one names file for an
    external routine's descriptor.  Where a single file name was
    previously provided, multiple file names separated by : (colon)
    may now be provided.

 Processor 12
    A new pattern, 'C1 1 *', is supported when associating a name with a
    text file (type 'F').  This pattern specifies that the view of the
    file in APL2 will be a simple character vector (byte stream).

 Java Interfaces
  - A new associated processor, Processor 14, provides the ability
    to call Java from APL2.

  - A new invocation option to APL2, -javaxmx, allows control of the
    size of the memory heap used by the Java Virtual Machine started by
    the APL2 Java interfaces.

 Supplied External Routines
  - A new set of external functions provides workspace compression
    facilities.  The ZIP and UNZIP functions operate on individual APL
    arrays, and the ZIPWS and UNZIPWS functions operate on the entire
    workspace.  Note: these functions use the APL2 Java interfaces.

  - The TIME function from 1 TIME and the DISPLAY, DISPLAYC and DISPLAYG
    functions from 1 DISPLAY have been placed in a new namespace shipped
    with APL2.  You can access these functions via name association:
         3 11 NA 'TIME'
         3 11 NA 'DISPLAY'

  - The ATR and RTA external functions have been extended to support a
    monadic syntax.  If ATR is called without a left argument, it uses
    Common Data Representation (CDR) format to create its result.  If RTA
    is called without a left argument, it will treat its right argument
    as a CDR.  RTA will support the CDR format of both workstation and
    mainframe APL2.

  - The follow new external functions have been added:

    CHECK_ERROR gets the text associated with a system error number.
                This function is a replacement for the APL function
                in the AIX, LINUX and SOLARIS workspaces, and is
                available for all platforms.

    OPTION      queries and sets APL2 invocation and session options.

  - The following functions from the supplied workspaces have been
    moved into namespaces and are available as external functions.
    The namespace versions of the functions are platform-independent:

    From LINUX:
      DIR         Return a directory listing
      ERASE       Erase a file
      HOST        Execute a operating system command
      LIBS        Return the list of defined APL2 workspace libraries
      MKDIR       Make a directory
      PIPE        Redirect input and output to a command
      RENAME      Rename a file
      RMDIR       Remove a directory
    From EDIT:
      EDITOR_2    Mainframe )EDITOR 2 equivalent editor
    From IDIOMS:
      IDIOMS      Display commonly used APL2 phrases
    From WSCOMP:
      WSCOMP      Workspace comparison tool
      WSCOMP_ANALYZE

  - Three new external routines provide program access to the
    functionality of the APL2 system commands )COPY, )PCOPY and )LIB.
    The COPY, PCOPY and LIB functions are accessed via Processor 11
    and take a character string argument with the same syntax as their
    corresponding system commands.

  - Four new namespaces contain the contents of the public library 2
    workspaces FILE, GRAPHPAK, MATHFNS and SQL.  The namespaces
    are an alternative way to use the objects in these workspaces
    without making local copies of them and without name conflicts.

  - When passed a null right argument, the OPTION external function
    will return the APL2 command line.

  - TIME 4 queries the current state of timing

 Documentation
    A new on-line document has been added to Workstation APL2.
    "APL2 Programming: Using APL2 with WebSphere" gives step-by-step
    instructions, with examples, for creating a WebSphere application
    that uses APL2.

================================================================================
 Problems Fixed by Previous Service Levels
================================================================================

 Interpreter
    KOA0105  Transfer form accepts period after object name
    KOA0128  QuadFX will not accept empty numeric
    KOA0133  QuadFX behavior does not match host
    KOA0145  Reduce with axis fuzz problem
    KOA0274  System fuzz not working for booleans
    KOA0353  No prompt for 1st input with -sm off -quiet on
    KOA0387  Reduce 0-wise (from slash) w/scalar dyadic fns
    KOA0445  Inner product documentation discrepancy
    KOA0489  Called functions do not inherit "Ignore attention" property
    KOB0033  Enclose along axis of empty does not reduce rank
    KOB0111  QuadPR inserted in reply to empty QuoteQuad prompt
    KOB0155  QuoteQuad input reprompts with 6 blanks after ENTRY ERROR
    KOB0470  1 QuadTF ignores non-blank extra characters
    KOB0543  Behaviour of wrapping on error lines
    KOB0548  AP1 does not send system variables always
    KOB0869  AXIS ERROR from some cases of inner/outer product with axis
    KOB1064  Clueless NOT SAVED message
    KOB1140  )EDITOR xxx cannot be qualified name
    KOB1700  Inconsistancy in scalar extension with nulls
    KOB1887  Selective spec works on APL2/PC, fails on new APL2
    KOB1962  Quad Input not allowed under QuadEC
    KOB2472  Checkws errors or hang interrupting output of large array
    KOB2646  )IN cannot find lowercase quad name in transfer file
    KOB2663  Interpreter does not sign off SVP on Ctrl-Break
    KOB2739  Bad format of array with positive and negative floating point
    KOB2790  Workspace does not expand enough during )COPY
    KOB2808  Handle 4-byte character arguments to Quad functions
    KOC0039  Wrong error when function result shared or not a variable
    KOC0206  AP 1 does not handle requests after )HOST
    KOC0218  Can not open object when interpreter runs app
    KOC0268  Invalid SYNTAX ERROR doing outer product each
    KOC0287  EXP while running under an EXP doesn't work
    KOC0301  System Error using QuadEC under EXP
    KOC0302  Interpreter terminates using QuadCR under EXP
    KOC0306  )LOADing PRML workspace crashes interpreter
    KOC0307  QuadEC and QuadEA problems under EXP
    KOC0309  Checkws messages on )SAVE
    KOC0310  Problems in vector specification with external name
    KOC0311  Overbar invalid in )VARS, )FNS, )OPS, )NMS
    KOC0319  Cleanup of external names incomplete on )CLEAR
    KOC0328  APL2 terminates on repeat QuadNA from namespace
    KOC0329  SYSTEM ERROR copying workspace with external name
    KOC0330  SYSTEM ERROR, selective spec of Boolean into float
    KOC0331  Incorrect output from 0 2 format
    KOC0332  Cannot use nameclass to access object in namespace
    KOC0333  Wrong error from QuadES under EXP with numeric event
    KOC0334  QuadET incorrect after reference inside function
    KOC0337  AP 1 reports )SAVEd association to namespace is class 0
    KOC0353  Residue wrong on maximum left arg
    KOC0356  Checkws messages after failed association
    KOC0357  Circle Left Argument fuzz problem
    KOC0358  Interpreter crashs if error in long input
    KOC0360  Checkws messages after PFA of depth 182 array
    KOC0361  Interpreter abends with invalid CONTINUE
    KOC0362  )COPY from a Version 2 workspace corrupts ws
    KOC0363  Checkws messages after MOD1165 test case 365
    KOC0365  Checkws msg after WS FULL doing +/[2]...
    KOC0367  DOMAIN ERROR from decode, residue
    KOC0368  Catenate allows creation of high-rank objects
    KOC0369  Editor 1 Function Display Problems
    KOC0372  Garbage in replicate fill items
    KOC0373  Bad answer, magnitude of largest negative integer
    KOC0386  Checkws messages after using namespace
    KOC0387  Segmentation fault (SIGSEGV) assigning long name
    KOC0401  Interpreter error msgs not wrapped at QuadPW
    KOC0427  Shared variable system function edge conditions
    KOC0428  Garbage in QuadEM after execute with DBCS
    KOC0433  Left operand to expand not fuzzed to Boolean
    KOC0434  System fuzz not used for monadic grade
    KOC0435  QuadDL right argument not fuzzed to float
    KOC0480  Disclose with empty object leads to System Error
    KOC0485  SYSTEM ERROR after using namespaces
    KOC0508  QuadEC returns 4 byte error messages
    KOC0518  QuoteQuad input uses old prompt after ENTRY ERROR
    KOC0524  CHECKWS after catenation of large matrices
    KOC0533  SYSTEM ERROR after WS FULL replacing column of mixed matrix
    KOC0552  NOT COPIED: message from )IN
    KOC0555  QuadTF fails to fix function missing trailing quote
    KOC0562  System Error accessing QuadTF in namespace
    KOC0565  Stop and trace vectors can be set on namespace function
    KOC0567  System Error using object in namespace
    KOC0574  DOMAIN ERROR from Dyadic Format
    KOC0575  RANK ERROR from reduce of empty
    KOC0581  Error behavior wrong in operand across namespace boundary
    KOC0590  Abend after error in defined function
    KOC0592  Abend opening a locked function
    KOC0595  DOMAIN ERROR multiplying float by null
    KOC0604  Assignment to Quad fails under EXP
    KOC0609  Abend after re-association of namespace value
    KOC0610  Abend using TIME inside namespace
    KOC0611  QuadEC of namespace function produces wrong QuadEM
    KOC0612  Bad answer from or-scan of integer argument
    KOC0627  Function display loses data when QuadPW is exceeded
    KOC0643  SYSTEM ERROR trying to display namespace function
    KOC0648  )NMS wrong on QuadNA'ed object in namespace
    KOC0654  EXP allows assignment to primitive functions
    KOC0656  GETENV in namespace causes system error
    KOC0665  Checkws msg after )LOAD w/namespace suspended
    KOC0687  SYSTEM ERROR from 2 QuadAT of function in namespace
    KOC0689  QuadTS returns '' in rare cases
    KOC0693  "Namespace modified" message after )COPY of external object
    KOC0701  Double-click edit of external abends the interpreter
    KOC0707  Prompt written for Quad input under runtime
    KOC0712  QuadES should accept nested vectors of integer scalars
    KOC0726  System Error using external variable on left of compress
    KOC0729  CHECKWS msgs after member/index on Unicode data
    KOC0736  Nested array of scalars not accepted on left of compress
    KOC0737  Handle external variables as arguments to external functions
    KOC0742  Back off KOC0575 fix until KOC0650 fix is available
    KOC0753  )OUT external with long name abends interpreter
    KOC0756  Wrong answer subtracting largest negative integer from 0
    KOC0760  )IN with namelist fails on P12 variable with no surrogate
    KOC0773  QuadNA allows Quadname surrogates
    KOC0782  No INDEX ERROR when index is invalid APV
    KOC0791  Bad data, checkws messages after error during P12 catenate
    KOC0795  Incorrect data for external var indexed assignment
    KOC0799  2 (5 5) return from 2-take-QuadEC
    KOC0806  SYSTEM ERROR modifying copy of simple external var
    KOC0807  Last input line lost if no trailing LF on file
    KOC0808  Inaccurate result from binomial
    KOC0813  Wrong item replaced, selective spec with pick of squad
    KOC0814  Inaccurate result from complex logarithm
    KOC0817  Abend during )IN of mainfame apltf with DBCS
    KOC0824  Storage overwritten during error recovery
    KOC0828  Format produces garbage on Linux
    KOC0830  Branch to bracket indexed assignment fails
    KOC0839  Stops not honored by QuadEA
    KOC0843  Dyadic grade with DCS on left does not sort correctly
    KOC0858  QuadNLT reference returns garbage after CSD 4
    KOC0864  -input "''" causes initialization error
    KOC0868  QuadCR on locked function in namespace yields System Error
    KOC0880  Result of catenate to null matrix has wrong prototype
    KOC0881  Wrong type produced by enlist of null
    KOC0884  Interpreter terminates on second overflow, SuSE* 9.2
    KOC0889  No message after APL error in callback
    KOC0894  Extra spaces in format of nested arrays
    KOC0898  Matrix inverse returns result for singular matrix
    KOC0900  Null result from '' + 'A' has wrong type
    KOC0901  Wrong error with negative left argument to reshape
    KOC0902  Wrong error code from take left arg greater than max rank
    KOC0903  Wrong error from invalid vector specification
    KOC0906  Improve error checking in dyadic format
    KOC0907  Wrong error from pick with numeric left arg
    KOC0919  SAVED ... message not in national language message files
    KOC0926  Wrong message and/or abend after error inside namespace
    KOC0930  SYSTEM ERROR, selective spec of empty with pick
    KOC0935  Fraction lost in result of factorial and binomial
    KOC0937  Dyadic Grade result bad after KOB0033
    KOC0948  System Error after Divide by 0 with Axis
    KOC0952  Incorrect answers from edge cases of floor with fuzz
    KOC0953  Type of result from encode/decode should be reduced
    KOC0954  Match mainframe behavior on Tdelta, Sdelta assigment
    KOC0956  QuadTF accepts large left argument
    KOC0964  SIGSEGV on fpreset() after floating point excecption handled
    KOC0965  Some system variables not allowed in vector specification
    KOC0967  VALUE ERROR referencing QuadNLT after localization
    KOC0968  Cannot associate to session quads
    KOC0969  Cannot ref or spec associated QuadSVE
    KOC0975  Abend on )PCOPY 2 GRAPHPAK with QuadPW at 254
    KOC0986  Termination problems after failing to edit namespace object
    KOC0990  )COPY, )PCOPY do not respect most current PW setting
    KOC0991  Prevent )IN and )OUT of session variables
    KOC0994  Column missing from display of floats after KOB2739
    KOC0997  Interpreter crash after call to external function
    KOC1018  Matrix-Add-Downards fails when packaged
    KOC1025  Storage not freed in one )COPY error path
    KOC1030  QuadDL 0 does not always return 0
    KOC1037  Right caret can be lost if error output wraps
    KOC1038  )SYMBOLS xxxxx output contains garbage
    KOC1043  )COPY changes current directory
    KOC1046  Slow )COPY when many unknown quad names were used
    KOC1047  System Error when using EXP to reference P12 variable
    KOC1048  )IN of nonexistent file with -lx off corrupts workspace
    KOC1056  Nameclass of some associated system variables reported as 3
    KOC1057  1 QuadAT result 0 0 0 for associated quad names
    KOC1062  QuadES suspends at entry to namespace rather than at call
    KOC1064  No result from each with null arg and namespace function
    KOC1065  Imprecise display of floating point numbers in editors, TF
    KOC1069  4 QuadAT thru EXP of shared variable causes interpreter crash
    KOC1097  Disallow association to Quadname without surrogate
    KOC1107  )LOAD fails for ws saved suspended in namespace
    KOC1110  Abend on )COPY of workspace saved suspended in namespace
    KOC1122  Leading blanks not tolerated in APLxxxxx envvar values
    KOC1180  Incorrect shape, display of null nested arrays
    KOC1203  Reassociating names after )COPY makes names useless

 Session Manager
    KOB0977  Session manager ignores input after Ctrl-C
    KOB1628  Default output does not start on new line after QQuad output
    KOC0629  Session Manager problems on Motif 3

 Shared Variable Processor
    KOC0651  SVP does not recover from abend in apserver AP
    KOC0717  getpeername prohibits share through intermediate server
    KOC0833  AP signs on using wrong id with multiple sessions
    KOC0844  Cross-system share fails after KOC0717
    KOC1172  Timing problems on SVP startup

 AP 100
    KOC0896  RC 10 from AP 100, )HOST, even on success

 AP 119
    KOC1072  Integer form of SELECT does not accept APVs

 AP 124
    KOB1024  Alt+Fkey behaviors over-ridden by operating system
    KOC0321  Hang in AP 124 attempting to clear screen before format
    KOC0346  Handle commands 21 and 22 before command 1

 AP 127/AP 227
    KOC0326  'CONNECT' '' invalid for AP 227
    KOC0739  AP 127/227 should not build nested arrays of numeric scalars
    KOC0812  Correct handling of extended characters
    KOC0819  Message 149 issued with wrong token
    KOC0827  AP 127 error 148 on DESCRIBE with BOTH
    KOC0974  PREPARE not completed after internal describe warning
    KOC1034  CONNECT warning codes not returned
    KOC1133  AP 227 FETCH abend after PREP/OPEN of non-SELECT

 AP 207
    KOC0377  PostScript FONT command hangs on Linux with vector font
    KOC1017  No error check for missing DISPLAY environment variable

 AP 210
    KOC0499  AP 210 open returns 1 for filenames with commas

 AP 211
    KOC0755  Timestamps not correctly adjusted for time zone
    KOC1010  Negative numbers corrupted converting DOS AP 211 files

 Processor 11
    KOB1360  P11 passes scalar Char, Short and Float incorrectly
    KOB2709  P11 can return enclosed scalar in result
    KOC0143  Namescan does not validate tag data length
    KOC0772  P11 does not read names file without trailing LF
    KOC0890  Default P11 names file for Unix
    KOC1091  Abend calling C routine using B1 pattern
    KOC1137  Tabs in names files should be ignored

 Processor 12
    KOC0388  Toleration of scalars during P12 association
    KOC0426  P12 expand does not does not allow for replication
    KOC0617  P12 abend after garbage collection
    KOC0738  P12 should not return nested vectors of scalars
    KOC1084  Wrong prototype generated for 4-byte characters

 Java Interfaces
    KOC0769  Use of floatValue makes JVM hang or crash
    KOC0770  Use of invalid instance handle makes JVM crash
    KOC0771  Make Apl2exception constructors public
    KOC0790  Apl2object constructor with arbitrary object hits System Error
    KOC0797  Apl2object native array constructor fails
    KOC0802  Redesign code to prevent illegal callbacks
    KOC0804  Apl2object(String[]) yields array of integers
    KOC0809  Errors during callback result in system error
    KOC0840  Intermittent exception under WebSphere

 Supplied External Routines
    KOC0304  Default TCL library names missing lib prefix
    KOC0354  STA yields DOMAIN ERROR converting mainframe floating point
    KOC0390  FILE/FSTAT do not blow down 4 byte characters
    KOC0467  Variable length pattern with RTA causes System Error
    KOC0644  OPTION 'CHECKWS' terminates APL2
    KOC0710  VALUE ERROR from EDITOR_2 editing variable
    KOC0793  EDITOR_2 suspension importing from variable
    KOC0874  OPTION handling of 4-byte characters
    KOC0888  Change default Tcl/Tk level to 8.4
    KOC0929  ATR and ATS pad bytes contain random data
    KOC0942  Monadic RTA incorrect result with null APV inside nested
    KOC0988  Use GMT timestamps in ZIPWS function
    KOC1059  IN does not handle filenames with blanks or missing CRLFs
    KOC1066  RTA hits protection exception
    KOC1186  ATR does not handle zero and negative numbers with E4
    KOC1208  Improve IN and PIN detection of invalid files

 Workspaces
  DEMOJAVA
    KOC0775  Global QuadIO in DEMOJAVA is 0.
    KOC0788  DEMO_JAVA does not give good error message if Java unavailable
  FILE
    KOC0751  IN/PIN do not handle external vars with namelist
    KOC0761  IN/PIN do not check return code from QuadNA
    KOC0980  OUT should not put timestamp on external objects
    KOC0981  IN, PIN do not respect transfer file timestamps
    KOC0988  Use GMT timestamps in OUT function
    KOC0993  IN and OUT should not process session quadnames
  GRAPHPAK
    KOB2491  USE WIDTH xxx has no effect after OPENGP.
  LINUX
    KOC0522  PIPE in LINUX can branch to EXIT without SO set
  NETTOOLS
    KOC0502  NETTOOLS HTTP_SERVER uses case insensitive MIME type check
    KOC0740  NETTOOLS html link to APL2 site has old address
  PRINT/PRINTWS
    KOC0535  PRINT/PRINTWS fail on objects containing 4-byte characters
  WSCOMP
    KOC0300  WSCOMP fails if external name will not resolve

 Fonts
    KOC0514  Courier APL2 .pfa files not usable

 Invocation
    KOC0743  Avoid multiple svp trace windows on Unix

 Documentation
    KOC0277  Sample AP bat file pipes output preventing multiple instances
    KOC0314  Garbage character in User's Guide Host Workspaces contents entry
    KOC0322  Improve on-line help for -rns
    KOC0453  Bad chars for lamp in AP 144 chapter
    KOC0539  APL2 stops kicker on KDE3
    KOC0539  Cannot start APL2 due to missing .so files
    KOC0605  Errors, Ommisions in cross-system documentation
    KOC0606  Document action for insufficient message queues on Linux
    KOC0607  Typo in writing external function section of User's Guide
    KOC0692  Misc. typos in Writing External Routines section
    KOC0716  AP 124 multiple variable policy not documented
    KOC0803  type and rank spelled with wrong case in UG Java section
    KOC0810  DEMOJAVA missing from workspace table
    KOC0886  SO_LINGER value description incorrect
    KOC0914  SQL manual updates for mainframe PK03134 compatibility
    KOC0931  Parameter errors in APL2 Java Classes Reference
    KOC1121  Typos in Websphere documentation
    KOC1135  -svptrace invocation option not recognized under Calls to Apl2

================================================================================
 Support
================================================================================

 We'd like to hear from you!

 Please report any comments, suggestions, or problems through one of the
 following channels:

   Email:       apl2@vnet.ibm.com

   Newsgroup:   news.software.ibm.com/ibm.software.apl

   RETAIN:      Queue CAPL2W

   FAX:         1-408-463-4488

   Phone:       1-408-463-APL2  (1-408-463-2752)

   Mail:        APL Products & Services
                IBM Silicon Valley Laboratory, H36/F40
                555 Bailey Ave.
                San Jose, CA 95141

================================================================================
 Trademarks
================================================================================

 Trademarks are denoted by an asterisk (*) when they first appear in
 the text.

   APL2, DB2, IBM and WebSphere are trademarks of the IBM Corporation.
   Adobe and Acrobat are trademarks of Adobe Systems, Inc.
   Java is a trademark of Sun Microsystems, Inc.
   Linux is a trademark of Linus Torvalds.
   Motif is a trademark of The Open Group.
   SuSE is a trademark of SuSE AG.

================================================================================
LICENSE INFORMATION
================================================================================

The Programs listed below are licensed under the following terms and conditions
in addition to those of the International Program License Agreement.


Program Name:  Workstation APL2
Program Number:  5724-B74
Authorization for Use on Home/Portable Computer: You may not copy and use this
Program on another computer without paying additional license fees.


Specified Operating Environment

The Program's specifications and specified operating environment information may
be found in documentation accompanying the Program, if available, such as a
read-me file, or other information published by IBM, such as an announcement
letter.

Excluded Components

The provisions of this paragraph do not apply to the extent they are held to be
invalid or unenforceable under the law that governs this license. The components
listed below are "Excluded Components." Notwithstanding any of the terms in the
Agreement or any other agreement you may have with IBM:

(a) the third party suppliers of such Excluded Components ("Suppliers") provide
    the components WITHOUT WARRANTIES OF ANY KIND and, such Suppliers DISCLAIM
    ANY AND ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS INCLUDING, BUT NOT
    LIMITED TO, THE WARRANTY OF TITLE, NON-INFRINGEMENT OR INTERFERENCE AND THE
    IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY AND FITNESS FOR A
    PARTICULAR PURPOSE, WITH RESPECT TO THE EXCLUDED COMPONENTS;

(b) in no event are the Suppliers liable for any direct, indirect, incidental,
    special, exemplary, punitive or consequential damages, including but not
    limited to lost data, lost savings, and lost profits, with respect to the
    Excluded Components; and,

(c) IBM and the Suppliers are not liable to You, and will not defend, indemnify,
    or hold You harmless for any claims arising from or related to the Excluded
    Components.

Notwithstanding these exclusions, in Germany and Austria, IBM's warranty and
liability for the Excluded Components is governed only by the respective terms
applicable for Germany and Austria in the IBM license agreements.

Notices and important information that IBM is required to provide to You with
respect to the Excluded Components, including instructions for obtaining source
code for certain Excluded Components, may be found in the NOTICES file(s) that
accompanies the Program.

Your use of the Excluded Components is governed by the terms of the Agreement
and not by any terms that may be contained in the NOTICES file(s). The terms
contained in the Agreement are offered by IBM and not by any other party. Future
Program updates or fixpacks may contain additional Excluded Components. Such
additional Excluded Components, and related notices and information, if any,
will be listed in another NOTICES file that accompanies the Program update or
fixpack.

The following are Excluded Components:

   RSA Data Security, Inc., MD5 message-digest algorithm
   Unicode Transformation Format routines

Redistribution Information

If You have developed an application that is dependent upon the files or modules
listed below or located in the directory named below, You may distribute these
files or modules, subject to the following terms:

1) The files or modules must be in object code.

2) You will indemnify IBM or third parties that provide IBM products ("Third
   Parties") from and against any third party claim arising out of the use or
   distribution of Your application.

3) You may not use the same path name as the original files/modules.

4) You may not use IBM's or Third Parties' names or trademarks in connection
   with the marketing of Your applications without IBM's or Third Parties' prior
   written consent.

5) IBM or Third Parties provide copies of these files or modules "AS IS," i.e.,
   You are responsible for all technical assistance for Your application.

6) In Your license agreement with the recipient, You will notify the recipient
   that these files or modules may not be 1) used for any purpose other than to
   enable the application, 2) copied (except for backup purposes), 3) further
   distributed, or 4) reverse assembled, reverse compiled, or otherwise
   translated.

   apl2ar20.installp
   apl2lr20
   apl2lr20.tgz
   apl2sr20
   apl2sr20.tarz
   apl2wr20.exe

Your application containing a copy of the above referenced files/modules must be
labeled as follows:

"CONTAINS Runtime Modules of Workstation APL2
(c) Copyright IBM Corporation 1991-2002 All Rights Reserved"


D/N:  L-DLIG-6H5S8X
P/N:  L-DLIG-6H5S8X
