New APL+Win Features

Do you know all APL+Win enhancements since APL+Win v3?
Are you using all the new features available in your APL+Win interpreter?
Check the APL+Win New Features database and become a better APL+Win Developer!
You can now Search on a specific APL+Win version (i.e. enter: 10 or 18.1 for example in the Search Text box)

Category:
Search Text (case insensitive; enter a string and press Enter):

Description

A ⎕lock of an associated function caused abnormal termination in APL+Win 10 and newer versions. More details...

Description

With support for EnableSSE2 enabled, floating point division operation could cause the session to suspend (hang) if the divisor is a vector of two or more elements, the vector contains at least one 0 and any one of the 0s is preceded by a non-zero element.

Example

      (0.2 0.3) ÷ (0.1 0)
More details...

Description

The Enclose operation was updated to avoid a potential crash arising from the following two conditions:
  1. A workspace corruption during a workspace compaction
  2. A memory leak during a report of a WS FULL (workspace full) condition
More details...

Description

Support for EnableSSE2 is production ready starting with APL+Win v19.0.01 and easily controlled in the APLW.INI configuration file setting below (note the section name change from [Experimental] to [Config]):

      [Config]
EnableSSE2=value

When value is set to 0 (still the default value), the previous behaviour of APL+Win will apply.

When value is set to 1, when appropriate, the APL+Win interpreter will use the SSE2 instruction set to optimize array-based arithmetic operations: + - × ÷.
Refer to the DEMO_SSE2.W3 workspace included in this release to test this enhancement.

Why is SSE2 disabled by default?

SSE2 floating point arithmetic operations: + - × ÷ can yield results that are very slightly different than traditional APL+Win result values. In most cases results will be identical. But in some cases very slight rounding differences can cause the low-order bits of the result value to be different. These possible result differences are limited to the last digit of precision in APL+Win and may not be apparent unless ⎕ct is set sufficiently small or ⎕pp is set sufficient high. However, you should be aware that result values may not be exactly the same with and without using the SSE2 optimization, even though you are unlikely to notice this difference with default ⎕ct and ⎕pp settings.

More details...

Description

In APL+Win v19.0.01, the saved workspace version number reported by ⎕sys[20] is the integer value 55.

Example

      )save
C:\USERS\...\ZOBJECTS\ZOBJECTS SAVED 5/25/2020 12:43:28 PM

      ⎕sysver
19.0.01  Apr 16 2019 16:07:57  Win/32

      ⎕sys[20]
55
More details...

Description

The new ⎕tt returns the number of ticks since the start of the current session.

Together with the new ⎕tf System Function, they aid in computing timing information for an APL function. An advantage of using the higher resolution ⎕tt timer rather than ⎕ai to capture timing information, ⎕tt gives a better idea of what's actually happening on really fast execution runs. The ⎕ai timer is only accurate to within about 1/1000 second while the ⎕tt timer has a resolution of 3312526 ticks per second. That makes the accuracy of ⎕tt run more accurate by a factor of about 3312 times more than ⎕ai[2].

Dividing ⎕tt by ⎕tf, the result will be the elapsed time in seconds since the APL+Win session started; basically the same value as ⎕ai[2] but without the added overhead of computing the other elements of ⎕ai and without the need to extract the second element of ⎕ai to access the time information.

      ⎕pp←17

      ⎕tt
32937472496

      ⎕ai[2]
3299.959

      ⎕ai[2] ⋄ ⎕tt÷⎕tf
3323.529
3323.5890974

      ⎕ai[2] ⋄ ⎕tt÷⎕tf
3326.18
3326.2245933

      ⎕ai[2] ⋄ ⎕tt÷⎕tf
3328.163
3328.2074221

      ⎕ai[2] ⋄ ⎕tt÷⎕tf
3330.43
3330.4740437

The following example uses a small utility called XTime to measure the execution time of an APL expression and compares execution time measured by ⎕ai[2] to execution time measures by ⎕tt/⎕tf: the second is much more accurate and more consistent.

.

Example

    ∇ XTime a;b;⎕io
[1]   ⎕io←1
[2]   b←⎕ai[2] ⋄ ←⍎a ⋄ ⎕←⎕ai[2]-b
[3]   b←⎕tt ⋄ ←⍎a ⋄ ⎕←⎕tf÷⍨⎕tt-b
    ∇

      XTime'⌹?30 30⍴10000'
0
0.0002204

      XTime'⌹?30 30⍴10000'
0.001
0.0002073

      XTime'⌹?30 30⍴10000'
0
0.0002024

      XTime'⌹?30 30⍴10000'
0.0009999999997
0.0001948

      XTime'⌹?30 30⍴10000'
0.001
0.0002185

      XTime'⌹?30 30⍴10000'
0.001
0.000208

      XTime'⌹?30 30⍴10000'
0
0.000198

      XTime'⌹?30 30⍴10000'
0.001
0.0001959
More details...

Description

The ⎕tf System Function returns the frequency of the performance counter in terms of ticks.

Together with the new ⎕tt System Function, they aid in computing timing information for an APL function. An advantage of using the higher resolution ⎕tt timer rather than ⎕ai to capture timing information, ⎕tt gives a better idea of what's actually happening on really fast execution runs. The ⎕ai timer is only accurate to within about 1/1000 second while the ⎕tt timer has a resolution of 3312526 ticks per second. That makes the accuracy of ⎕tt run more accurate by a factor of about 3312 times more than ⎕ai[2].

Dividing ⎕tt by ⎕tf, the result will be the elapsed time in seconds since the APL+Win session started; basically the same value as ⎕ai[2] but without the added overhead of computing the other elements of ⎕ai and without the need to extract the second element of ⎕ai to access the time information.

      ⎕tf
10000000

The following example uses a small utility called XTime to measure the execution time of an APL expression and compares execution time measured by ⎕ai[2] to execution time measures by ⎕tt/⎕tf: the second is much more accurate and more consistent.

.

Example

    ∇ XTime a;b;⎕io
[1]   ⎕io←1
[2]   b←⎕ai[2] ⋄ ←⍎a ⋄ ⎕←⎕ai[2]-b
[3]   b←⎕tt ⋄ ←⍎a ⋄ ⎕←⎕tf÷⍨⎕tt-b
    ∇

      XTime'⌹?30 30⍴10000'
0
0.0002204

      XTime'⌹?30 30⍴10000'
0.001
0.0002073

      XTime'⌹?30 30⍴10000'
0
0.0002024

      XTime'⌹?30 30⍴10000'
0.0009999999997
0.0001948

      XTime'⌹?30 30⍴10000'
0.001
0.0002185

      XTime'⌹?30 30⍴10000'
0.001
0.000208

      XTime'⌹?30 30⍴10000'
0
0.000198

      XTime'⌹?30 30⍴10000'
0.001
0.0001959
More details...

Description

zREngine v2.15 is a brand new version of zREngine with a brand new entirely rewritten DLL now called LC.REngine.dll. This version allows you to fully use R from APL+Win applications: its characteristics are: • use all of the R language from APL+Win • programmatically load and use R packages • display any kind of R charts in APL forms (including ggplot2 charts) • execute any R expression or set of R expressions from APL and get the results in APL Additionally, this new version includes only one DLL, is much faster to load, does no longer use the APL CSE system, does no longer create graphics files on disk when displaying R charts in an APL form, creates better vector (Metafile) graphics, can be used to display as many simultaneous APL form with R charts as desired, including in APL MDI applications. See: More details...

Description

The new onXCellDropWindow event handler in the APL Grid control is similar to the onXCellDropDown event except it fires immediately before the dropdown window and includes the window handle that is about to be displayed. In the handler, it is possible to reposition the dropdown window during this event via the ⎕WCALL'MoveWindow' Windows API. Or it can suppress the display of the dropdown window by calling the ⎕WCALL'DestroyWindow' Windows API on the Hwnd argument (⎕WARG[3]). If the window handle is destroyed, the cell does not try displaying a dropdown list. But the application is free to display a surrogate dropdown list if it chooses to do so, in order to get more control over what is displayed. More details...

Description

The new value, 256, added to the gridoptions property in the APL Grid ActiveX control to enable the dropdown window for a combo style cell (xCellType=1) to extend (up and down directions) past the borders of the APL Grid control. More details...

Description

The APL+Win system executable files (APLW.EXE and APLWR.EXE) and system DLLs are signed with the SHA-256 certificate. More details...

Description

The APL+Win Grid has been adapted to display nicely under all resolutions and notably resolutions higher than 1080p (1920x1080 pixels) or DPIs higher than 100.

The APL Grid has been enhanced to always operate with the same DPI awareness as the APL+Win application.

Here is what the example function below when using the APL+Win v17 and its grid:



resulting in unreadable text and too small row heights, column widths, etc.: and here is what the same function would produce using the APL+Win v18 and its grid:



Note that:
  • the APL+Win Grid v17 can be used with all versions of APL+Win
  • the APL+Win Grid v18+ can only be used with APL+Win v18+
It is possible to re-register the APL+Win v17 grid after you have registered the APL+Win v18 grid and vice versa.

Example

    ∇ TestGrid
[1]   ←'ff'⎕wi'Create' 'Form'('scale'5)('size'350 550)
[2]   ←'ff'⎕wi'.gg.Create' 'APL.Grid'('where'0 0,'ff'⎕wi'size')
[3]   ←'ff'⎕wi'.gg.xRows'100
[4]   ←'ff'⎕wi'.gg.xCols'100
[5]   ←'ff'⎕wi'.gg.xValue'(⍳10)(⍳5)(1000×10 5⍴⍳100)
[6]   ←'ff'⎕wi'caption'('APL+Win Grid v',(1↓∊'.',¨⍕¨'ff'⎕wi'.gg.XGridVersion'),' (DPI=200)')
    ∇
More details...

Description

The ⎕userid System Function now returns the name of the user currently logged into Windows.

In previous versions ⎕userid was returning 15 blanks.

Note that it is basically the same as:
      GetUserName
Eric Lescasse

    ∇ r←GetUserName
[1]   ⍝∇ r←GetUserName -- Returns the current default User Name
[2]
[3]   r←(1+⎕io)⊃⎕wcall'WNetGetUser' ''(255⍴⎕tcnul)(82 ⎕dr 255)
[4]   r←(^\r≠⎕tcnul)/r
[5]
    ∇

Example

      ⎕userid
Eric Lescasse
More details...

Description

The APL+Win Grid xImageMetrics read-only property returns the following information about the xImageFile used to display images in cell corners:

  • imagefile image height (in virtual pixels)
  • imagefile image width (in virtual pixels)
  • number of images in imagefile
      100 TestGridImages ⍬
      'ff.gg'⎕wi'*xImageMetrics'
6 6 30
      200 TestGridImages ⍬
      'ff.gg'⎕wi'*xImageMetrics'
3 3 30
See also:
xImageMask
xImageScale

Example

    ∇ imageScale TestGridImages imageMask;images
[1]   ⍝∇ imageScale ←→ value to supply to the xImageScale property (default is 100)
[2]   ⍝∇ imageMask ←→ 256⊥B G R value to supply to the imageMask property (default is 256⊥255 255 255 i.e. white)
[3]   ⍝∇           or ⍬ which means white
[4]
[5]   :if⎕monadic ⋄ imageScale←100 ⋄ :endif
[6]   :if⍬≡imageMask ⋄ imageMask←256⊥255 255 255 ⋄ :endif
[7]
[8]   ⍝ Create the Form and its Grid
[9]   ←'ff'⎕wi'*Create' 'Form'('style'16)('scale'5)('*size'250 400)
[10]  ←'ff'⎕wi'*.gg.Create' 'APL.Grid'('*where'0 0,'ff'⎕wi'*size')
[11]  ←'ff'⎕wi'*.gg.xRows'100
[12]  ←'ff'⎕wi'*.gg.xCols'100
[13]  ←'ff'⎕wi'*caption'('APL+Win Grid v',(1↓∊'.',¨⍕¨'ff'⎕wi'*.gg.XGridVersion'),' (DPI=200)')
[14]
[15]  ⍝ Populate it with Images in corners of cells at rows 3 5 7 and columns 2 4
[16]  images←1 2 3 4∘.+4×3 2⍴0 1 2 3 4 5
[17]  ←'ff'⎕wi'*.gg.Image'(⍳4)(3 5 7)(2 4)images
[18]  ←'ff'⎕wi'*.gg.ImageFile' 'c:\aplwin18\examples\grid66.bmp'
[19]
[20]  ⍝ Test the new xImageScale and xImageMask properties
[21]  ←'ff'⎕wi'*.gg.xImageScale'imageScale
[22]  ←'ff'⎕wi'*.gg.xImageMask'imageMask
[23]  ←'ff'⎕wi'*.gg.XRedraw'
    ∇
More details...

Description

The xImageMask property allows to specify a transparent color for the images displayed in cell corners when using the xImage and xImageFile properties.

The example function below allows to test this new property.
      100 TestGridImages 256⊥255 255 255

      100 TestGridImages 256⊥0 0 255


See also:
xImageMask
xImageMetrics

Example

    ∇ imageScale TestGridImages imageMask;images
[1]   ⍝∇ imageScale ←→ value to supply to the xImageScale property (default is 100)
[2]   ⍝∇ imageMask ←→ 256⊥B G R value to supply to the imageMask property (default is 256⊥255 255 255 i.e. white)
[3]   ⍝∇           or ⍬ which means white
[4]
[5]   :if⎕monadic ⋄ imageScale←100 ⋄ :endif
[6]   :if⍬≡imageMask ⋄ imageMask←256⊥255 255 255 ⋄ :endif
[7]
[8]   ⍝ Create the Form and its Grid
[9]   ←'ff'⎕wi'*Create' 'Form'('style'16)('scale'5)('*size'250 400)
[10]  ←'ff'⎕wi'*.gg.Create' 'APL.Grid'('*where'0 0,'ff'⎕wi'*size')
[11]  ←'ff'⎕wi'*.gg.xRows'100
[12]  ←'ff'⎕wi'*.gg.xCols'100
[13]  ←'ff'⎕wi'*caption'('APL+Win Grid v',(1↓∊'.',¨⍕¨'ff'⎕wi'*.gg.XGridVersion'),' (DPI=200)')
[14]
[15]  ⍝ Populate it with Images in corners of cells at rows 3 5 7 and columns 2 4
[16]  images←1 2 3 4∘.+4×3 2⍴0 1 2 3 4 5
[17]  ←'ff'⎕wi'*.gg.Image'(⍳4)(3 5 7)(2 4)images
[18]  ←'ff'⎕wi'*.gg.ImageFile' 'c:\aplwin18\examples\grid66.bmp'
[19]
[20]  ⍝ Test the new xImageScale and xImageMask properties
[21]  ←'ff'⎕wi'*.gg.xImageScale'imageScale
[22]  ←'ff'⎕wi'*.gg.xImageMask'imageMask
[23]  ←'ff'⎕wi'*.gg.XRedraw'
    ∇
More details...

Description

The xImageScale property allows to scale the images displayed in cell corners when using the xImage and xImageFile properties.

The example function below allows to test this new property. I am using a 200 DPI screen.
      100 TestGridImages ⍬

      200 TestGridImages ⍬


See also:
xImageMask
xImageMetrics

Example

    ∇ imageScale TestGridImages imageMask;images
[1]   ⍝∇ imageScale ←→ value to supply to the xImageScale property (default is 100)
[2]   ⍝∇ imageMask ←→ 256⊥B G R value to supply to the imageMask property (default is 256⊥255 255 255 i.e. white)
[3]   ⍝∇           or ⍬ which means white
[4]
[5]   :if⎕monadic ⋄ imageScale←100 ⋄ :endif
[6]   :if⍬≡imageMask ⋄ imageMask←256⊥255 255 255 ⋄ :endif
[7]
[8]   ⍝ Create the Form and its Grid
[9]   ←'ff'⎕wi'*Create' 'Form'('style'16)('scale'5)('*size'250 400)
[10]  ←'ff'⎕wi'*.gg.Create' 'APL.Grid'('*where'0 0,'ff'⎕wi'*size')
[11]  ←'ff'⎕wi'*.gg.xRows'100
[12]  ←'ff'⎕wi'*.gg.xCols'100
[13]  ←'ff'⎕wi'*caption'('APL+Win Grid v',(1↓∊'.',¨⍕¨'ff'⎕wi'*.gg.XGridVersion'),' (DPI=200)')
[14]
[15]  ⍝ Populate it with Images in corners of cells at rows 3 5 7 and columns 2 4
[16]  images←1 2 3 4∘.+4×3 2⍴0 1 2 3 4 5
[17]  ←'ff'⎕wi'*.gg.Image'(⍳4)(3 5 7)(2 4)images
[18]  ←'ff'⎕wi'*.gg.ImageFile' 'c:\aplwin18\examples\grid66.bmp'
[19]
[20]  ⍝ Test the new xImageScale and xImageMask properties
[21]  ←'ff'⎕wi'*.gg.xImageScale'imageScale
[22]  ←'ff'⎕wi'*.gg.xImageMask'imageMask
[23]  ←'ff'⎕wi'*.gg.XRedraw'
    ∇
More details...

Description

The new EnableSSE2 INI file parameter is set to 0 by default, thus not enabling the SSE2 experimental speedups; you can set it to 1 to enable them.

Example

The EnableSSE2 parameter is in the [Experimental] section of the APLW.INI file:

[Experimental]
EnableSSE2=1
More details...

Description

SSE2 is a computer processor architecture and associated instruction set which provides for a single instruction to process multiple data items. Its application to APL+Win array operations has beneficial effects on performance.

When the EnableSSE2 .INI file parameter is set to 1, the SSE2 instruction set is used to optimize array-based arithmetic operations: + - × ÷. These array operations can run up to twice as fast as without SSE2 enabled depending on the size of the processed array. The DEMO_SSE2.W3 workspace is included in this release to test this enhancement.

The following benchmarks show improved performance gained by using SSE2:









Overall %Improved All Operations & All Array Sizes: 33.93%
Notes:
  • float, int indicate floating point array and integer array respectively
  • Array sizes were varied in the range [10, 100000]
  • fScal, iScal indicate floating point scalar and integer scalar respectively
  • Workstation: Win10 Pro, dual core 2.30Mhz
More details...

Description

The new DEMO_SSE2 workspace in the APL+Win v17.1 Examples folder contains functions to test the SSE2 speedup enhancements.
br/> Be sure to update the lx function if you did not install APL+Win v17.1 in C:\APLWIN17. More details...

Description

A new update to the LC.Charts application by Eric Lescasse that can display your APL data in a variety of charts. More details...

Description

Added support for DPI-awareness in the session manager window and the ⎕WI objects (excluding any ActiveX controls and objects). More details...

Description

Corrected placement of the Find and Replace dialogs when using multiple displays. This means the Find and Replace dialogs appears where they were last positioned instead of the primary display. More details...

Description

The opaque property defines the behaviour of the opaque feature in some APLGUI controls. The opaque property can have a value of 0 or 1. The default value is 1. A value of 0 causes the background of the object to be transparent such that the parent window behind it is visible through the background area of the control. For example, a Check control that's a child of a Picture control will display the image assigned to the Picture control as the background of the Check control. More details...

Description

The new style property value 65536 has been added to the Button and UButton objects to allow their caption to wrap when the width of the caption is wider than the width of these objects.

Example

      ←'ff'⎕wi'Create' 'Form'('scale'5)('size'200 300)
      ←'ff'⎕wi'.bn.Create' 'Button'('style'65536)('where'10 10 40 100)
      ←'ff'⎕wi'.bn.caption' 'Print the Excel Document'
More details...

Description

This enhancement improves the default font selection process for ⎕wi objects when running in DPI aware mode. This dramatically improves the font size versus window layout behaviour when running at high DPI scaling levels.

Example

      '#'⎕wi'defaultFont'
16 8 [MS Shell Dlg] 13 {Label Caption} 65 {WMXwmxiiii} 56
      ]display '#'⎕wi'defaultFont'
.→--------------------------------------------------------.
∣16 8 [MS Shell Dlg] 13 {Label Caption} 65 {WMXwmxiiii} 56∣
'---------------------------------------------------------'
      ⎕dr '#'⎕wi'defaultFont'
82
More details...

Description

The scale property has been extended to support scalemode = 6 to return true pixels.

Example

      ←'ff'⎕wi'*Create' 'Form'
      'ff'⎕wi'scale'
1 0 0 29.03125 92.125
      'ff'⎕wi'scale'6
      'ff'⎕wi'scale'
6
More details...

Description

The scale property scalemode element 5 now returns virtual pixels instead of pixels More details...

Description

Added the read-only system object property dpi that specifies the DPI-Aware state of APL. The four-element nested vector has the following values:
  1. returns 1 if APL+Win is running in DPI aware mode; 0 if DPI un-aware mode.
  2. returns the system-wide DPI scaling percentage of the system (100 by default, 200 for 200% scaling, etc.).
  3. returns the dots per inch of the system-wide DPI scaling (96 at 100% scaling, 192 at 200% scaling, etc.).
  4. returns the pixel height of the default font.

Example

      '#'⎕wi'dpi'
1 200 192 25    
More details...

Description

This version of the CSE implements a dual event channel so that custom event and routed events can be independently handled. This is necessary because APL+Win is a single-threaded application and the current version of the Microsoft SignalR server technology, used to contain the .Net portion of the CSE, now operates fully asynchronously. More details...

Description

The C# exception error message returned by the GetLastError method has been enhanced to include the exception message, exception stack trace, inner exception message, and inner exception stack trace. More details...

Description

This property controls the way that APL+Win sends text array information to the CSE. More details...

Description

Improvements in the CSE documentation have been implemented. Additional CSE examples have been developed. Some examples have been modified from prior versions to properly operate in this version of the CSE. which may be modified in a future version of the CSE. The complete list of modified examples are listed in the APL+Win C# Script Engine Update_v3.0.24.0.pdf. More details...

Description

  • The CSE installer has been updated: “APLNext CSE Components Setup v3.0.24.0.msi”. Before running the CSE installer check the file’s properties to be sure it is not ‘blocked’. The CSE installer registers ActiveX components of the CSE on the target workstation, therefore elevated privileges are required to properly install the CSE.
  • The CSE installer has been updated: “APLNext CSE Components Setup v3.0.24.0.msi”. Before running the CSE installer check the file’s properties to be sure it is not ‘blocked’. The CSE installer registers ActiveX components of the CSE on the target workstation and puts .Net components in the Global Assembly Cache, therefore elevated privileges are required to properly install the CSE.
  • The CSE installer will now install the CSE to a 32-bit or 64-bit version of the Windows operating system.
  • This version of the CSE requires APL+Win v17.0.01.
  • Features of the CSE which rely on accessing large memory spaces are not available when the CSE is installed in a 32-bit Windows operating system environment. Refer to CSE example #192.
More details...

Description

This means UTF-8 will be treated the same as UTF8. More details...

Description

This property controls when the APL+Win carriage return, ⎕TCNL, needs replacing with Windows carriage return in text transferred from APL+Win to a Windows file and vice versa. By default, the value of the usereplstr property is set to 1 to perform the character replacement. More details...

Description

Added [Config]LogCatch set to -1 to APLW.INI configuration file to improve ⎕WCALL and ⎕WI exception handling. More details...

Description

There is a new configuration setting [Config]VirtualPixels that controls whether scalemode=5 units are virtualized for DPI scaling or unscaled pixels;
1 (default) means virtual pixels are scaled to the current DPI level
0 means not scaled. More details...

Description

The APL2000 Draw Control item has been added to the Help menu for opening the APL2000 Draw ActiveX Control; Help file More details...

Description

The new ⎕cm left argument allows to specify the line separator character

Example

      ':'⎕cm'France:Italy:USA:Japan'
France
Italy
USA
Japan
      ':,'⎕cm':France,Italy,,USA:Japan'

France
Italy

USA
Japan
More details...

Description

The new ⎕cn left argument allows to specify the line separator character

Example

      ]display ','⎕cn'APL, is, easy'
.→3---------------.
∣.→3-..→3-..→5---.∣
∣∣APL∣∣ is∣∣ easy∣∣
∣'---''---''-----'∣
'∊----------------'
      ]display ',:'⎕cn'APL  :is,   easy'
.→3------------------.
∣.→5---..→2..→7-----.∣
∣∣APL  ∣∣is∣∣   easy∣∣
∣'-----''--''-------'∣
'∊-------------------'
More details...

Description

The [Session]SearchSelOnly allows to auto-check or not the Find and Replace "Selected Text Only" radio button More details...

Description

These speedups are in the 10 times faster range when using floating point arguments with at least 1000 elements More details...

Description

The shortcut keys for "Match Parens" and "Match and Tag Parens" APL+Win Edit menu options have been changed. More details...

Description

This new menu item in the APL+Win Edit menu has 6 sub menu items with shortcut keys to make it easier and faster to navigate in the editor. More details...

Description

This new menu item in the APL+Win Edit menu has 6 sub menu items with shortcut keys to allow expanding, collapsing and toggling regions in the editor. More details...

Description

The Unique (∪) primitive now supports scalar arguments

Example

      ∪2
2
      ∪⊂'APL'
 APL
      ∪⊂3 3⍴10,(⊂2 2⍴⍳4),20 30 40
    10    1 2   20
          3 4

    30     40   10

   1 2     20   30
   3 4
More details...

Description

The APL+Win Options / Color dialog has been extended with several options corresponding to recently added APL+Win features. More details...

Description

The APL+Win Editor now supports a new syntax color highlighting of matching elements: just select a element like a Control Structure, a variable, a paren, a system variable, ... in the editor and the matching element(s) are automatically highlighted with the same highlight color. More details...

Description

It is now possible to create, collapse and expand regions in the Editor like in most modern editors.

Example

    ∇ Test
[1]   ⍝ All regions are collapsible
[2]   ⍝ and expandable.  The Edit menu
[3]   ⍝ includes options for collapsing
[4]   ⍝ expanding all regions at once, etc.
[5]
[6]   :region
[7]       ⍝ APL Code
[8]       ⍝ here...
[9]   :endregion
[10]
[11]  :region---------RegionName
[12]      ⍝ Regions can have a name
[13]      ⍝ APL code here
[14]  :endregion
[15]
[16]  ⍝ Regions allow to navigate faster
[17]  ⍝ and much more easily in large APL
[18]  ⍝ functions, as well as to
[19]  ⍝ concentrate on the parts of the
[20]  ⍝ functions you are working on!
    ∇
More details...

Description

APL+Win now supports using Hexadecimal numbers (i.e. 0x3FE is the same as 1022, etc.) and Binary numbers (use 0b prefix).

Example

      ⍝ hexadecimal numbers
      0x0
0
      0x000000000
0
      0x01
1
      0xFF
255
      0xff   ⍝ case insensitive
255
      0xfffffff
268435455
      0xffffffff
¯1
      ⍝ can be used with primitives
      ⍝ and system functions
      0xAB 0x45
171 69
      +/0xAB 0x45
240
      +/171 69
240
      ⎕dr'0xA' 
82
      ⎕dr 0xA
323
      ⎕dr 0xfffffffffffffff
645
      ⎕dr ⎕←0xfffffffffffffff
1.152921505E18
645
      ⎕vi'0xff'
1
      ⎕fi'0xff'
255

      ⍝ binary numbers: use 0b prefix
      0b000001
1
      0b000010
2
      0b111111
63
      0b000010×0b111111
126
More details...

Description

The ⎕cn System Function is used to normalize any character argument into a nested vector of character arrays

Example

      ⍝ no left arg = no split
      ⎕cn'APL C# Javascript jQuery'
 APL C# Javascript jQuery
      ]display ⎕cn'APL C# Javascript jQuery'
.→1------------------------.
∣.→24---------------------.∣
∣∣APL C# Javascript jQuery∣∣
∣'------------------------'∣
'∊-------------------------'

      ⍝ left arg required to split right arg
      ' '⎕cn'APL C# Javascript jQuery'
 APL C# Javascript jQuery
      ]display' '⎕cn'APL C# Javascript jQuery'
.→4---------------------------.
∣.→3-..→2..→10-------..→6----.∣
∣∣APL∣∣C#∣∣Javascript∣∣jQuery∣∣
∣'---''--''----------''------'∣
'∊----------------------------'

      ⍝ extra spaces yield extra elements
      ' '⎕cn'APL   C# Javascript  jQuery'
 APL   C# Javascript  jQuery
      ]display ' '⎕cn'APL   C# Javascript  jQuery'
.→7------------------------------------.
∣.→3-..⊖..⊖..→2..→10-------..⊖..→6----.∣
∣∣APL∣∣ ∣∣ ∣∣C#∣∣Javascript∣∣ ∣∣jQuery∣∣
∣'---''-''-''--''----------''-''------'∣
'∊-------------------------------------'

      ⍝ make right arg a nested vector
      ⎕cn (⊃'APL' 'C#') 'Javascript' (2 2 6⍴'Java  PythonF#    HTML  ')
 APL C# Javascript Java Python F# HTML
      ]display ⎕cn (⊃'APL' 'C#') 'Javascript' (2 2 6⍴'Java  PythonF#    HTML  ')
.→7-------------------------------------------.
∣.→3-..→2..→10-------..→4--..→6----..→2..→4--.∣
∣∣APL∣∣C#∣∣Javascript∣∣Java∣∣Python∣∣F#∣∣HTML∣∣
∣'---''--''----------''----''------''--''----'∣
'∊--------------------------------------------'
More details...

Description

The APLW.WS ActiveX Server object now supports being instantiated by a 32-bit non-APL+Win client application. More details...

Description

The updated APLW.EXE Manifest files have been updated to allow the GetVersionEx function to return the correct 6.3 version number for Windows 8.1 and Windows Server 2012 R2. More details...

Description

The ⎕fx System F>unction now accepts a nested vector of character vectors as its argument.

Example

      ⎕fx'a←Square a' 'a←a*2'
Square

      ⎕vr'Square'
    ∇ a←Square a
[1]   a←a*2
    ∇

      ⍝ previously, needed ⊃[2]:
      ⎕fx ⊃[2]'a←Square a' 'a←a*2'
Square

      ⎕vr'Square'
    ∇ a←Square a
[1]   a←a*2
    ∇
More details...

Description

The Random Link System Function has been updated to support several new pseudo-random generation algorithms (Extended Historical Multiplicative Linear Congruential Multiplier, Mersenne Twister, Subtract with Carry).

Example

      )clear
CLEAR WS

      ⍝ Using Mersenne Twister 19937
      ⍝ algorithm (¯1) and the current
      ⍝ hhmmss time to ensure numbers
      ⍝ are not the same in each new
      ⍝ APL Session
      ⎕rl←¯1 ⍬ (100⊥3↑3↓⎕ts)
      ?10⍴10
6 2 7 6 6 1 6 3 8 1
      ?10⍴10
2 1 10 7 4 3 1 10 8 3
      ?10⍴10
4 6 4 3 2 3 1 10 4 2

      )clear
CLEAR WS
      ⎕rl←¯1 ⍬ (100⊥3↑3↓⎕ts)
      ?10⍴10
3 1 10 8 3 4 6 4 3 2
      ?10⍴10
3 1 10 4 2 2 4 10 5 7
      ?10⍴10
8 6 3 6 9 5 5 9 7 1

      ⍝ See the APL+Win documentation
      ⍝ or Help File for more details
More details...

SendInput (v15.0.01)

Description

The SendInput 32-bit API Windows function has been added to the APLWADF.INI and APLW.ADF files.

Example

      ⍝ Here is the definition of the
      ⍝ SendInput 32-bit API function 
      ⍝ in the APLWADF.INI file:

      ⎕wcall'W_Ini' '[Call]SendInput'
U(U nInput, *C pInput, I cbSize) LIB USER32
More details...

New : primitive (v15.0.01)

Description

The colon (:) character followed by a space at the beginning of any statement in a user defined function suppresses any output this line would otherwise produce.

Example

    ∇ Test
[1]   'ff'⎕wi'*Create' 'Form'('scale'5)('size'180 220)
[2]   'ff'⎕wi'.ed.Create' 'Edit'('where'10 10 20 200)
[3]   'ff'⎕wi'.bn.Create' 'Button'('where'35 10 20 100)
[4]   'ff'⎕wi'Wait'
    ∇

    Test
ff
ff.ed
ff.bn
0

    ∇ Test
[1]   : 'ff'⎕wi'*Create' 'Form'('scale'5)('size'180 220)
[2]   : 'ff'⎕wi'.ed.Create' 'Edit'('where'10 10 20 200)
[3]   : 'ff'⎕wi'.bn.Create' 'Button'('where'35 10 20 100)
[4]   : 'ff'⎕wi'Wait'
    ∇

    Test
More details...

Description

The monadic Sink primitive (←) suppresses the output from any instruction in an APL function or in the APL Session.

Example

    ∇ Test
[1]   'ff'⎕wi'*Create' 'Form'('scale'5)('size'180 220)
[2]   'ff'⎕wi'.ed.Create' 'Edit'('where'10 10 20 200)
[3]   'ff'⎕wi'.bn.Create' 'Button'('where'35 10 20 100)
[4]   'ff'⎕wi'Wait'
    ∇

    Test
ff
ff.ed
ff.bn
0

    ∇ Test
[1]   ←'ff'⎕wi'*Create' 'Form'('scale'5)('size'180 220)
[2]   ←'ff'⎕wi'.ed.Create' 'Edit'('where'10 10 20 200)
[3]   ←'ff'⎕wi'.bn.Create' 'Button'('where'35 10 20 100)
[4]   ←'ff'⎕wi'Wait'
    ∇

    Test
More details...

Description

The new ⎕cm Character Matrix System Function can be used to normalize any character argument into a character matrix result.

Example

      ⎕cm'abc'(2 2⍴'DEFG')('hello',⎕tcnl,'world!')
abc
DE
FG
hello
world!
      ':'⎕cm'APL:is:easy'
APL
is
easy
      ':'⎕cm':APL::is:easy'

APL

is
easy
      ':;,'⎕cm':APL;is,easy'

APL
is
easy
More details...

Description

The new ⎕cv Character Vector System Function can be used to normalize any character argument into a character vector result. It is especially useful to create segmented strings.

Example

      ⎕cv'D'⎕nl 3
Div
Divides

      ⍴⎕cv'D'⎕nl 3
11

      ⎕tcnl=⎕cv'D'⎕nl 3
0 0 0 1 0 0 0 0 0 0 0

      ','⎕cv'C'⎕nl 3
CLIPCopy,CLIPFmt,CLIPPaste,CLIPUnfmt

      ' '⎕cv'APL' 'is' 'easy!'
APL is easy!

      ⍴' '⎕cv'APL' 'is' 'easy!'
12

      ':'⎕cv('D'⎕nl 3)'APL' 'easy!'('yes',⎕tcnl,'no')
Div:Divides:APL:easy!:yes:no
More details...

Description

The new ⎕crlf System Function returns ⎕tcnl,⎕tclf and is a possible convenient left argument to the new ⎕cv System Function to produce standard Windows delimited character strings. It is equivalent to the \r\n in C/C++/C#.

Example

      ⎕crlf ⎕cv'apl' 'is' 'easy'
apl

is

easy

      (⎕tcnl,⎕tclf)∘.=⎕crlf ⎕cv'apl' 'is' 'easy'
 0 0 0 1 0 0 0 1 0 0 0 0 0
 0 0 0 0 1 0 0 0 1 0 0 0 0

      ⎕crlf∘.=⎕crlf ⎕cv'apl' 'is' 'easy'
 0 0 0 1 0 0 0 1 0 0 0 0 0
 0 0 0 0 1 0 0 0 1 0 0 0 0
More details...

Description

The new ⎕guid (Globally Unique Identifier) System Function returns a GUID string which is a string having a high degree of certainty to be unique. It can be used for many different purposes like for being table records Primary Keys in databases, etc.

Example

      ⎕guid
{BD5C34AF-81E0-4664-8DEA-C036512FE692}
      ⎕guid
{5EB2BEA2-7687-4EAC-B3CE-5E2451E04EC7}
      ⎕guid
{A14DC64A-B2BD-4EF3-8681-F446EB4A952A}
      ⎕guid
{5DA6BE6A-CC62-4712-99BC-6F9E0F8E4413}
More details...

Description

The handling or error messages produced by the APL+Win ActiveX Server (APLW.WSEngine and APLW.WS) XCall and XSysCall methods has been improved More details...

Description

Using Ctrl+Click instead of Click on an APL+Win MRU (Most Recently Used) file in the File menu now XLOADs the workspace instead of LOADing it and thus does not execute its ⎕lx latent expression. More details...

Description

The ]unames User Command /since option now supports years > 2000 and support case insensitive months.

Example

      ⎕pw←60

      ⍝ display all objects (fns and
      ⍝ vars) updated in the User 
      ⍝ Command file since 1 jan16

      ]znames /since 1 dec 16
Version∇                  zRibbonForm∇
zForm∇                    zzform3∇
zObject∇                  zzlcchart101∇
zRibbonDXForm∇            zzribbondxform∇
More details...

Description

The ]upack User Command now support file names having spaces in their names (long file names). More details...

Description

The support for in-place assignment (i.e. a⍟←b being equivalent to a←a⍟b) has been extended to all dyadic scalar primitives plus, minus, times, divide, maximum, minimum, ..., and, or, ...).

Example

      ⍝ inplace assignment was already 
      ⍝ working with catenation (,)
      html←'<html>'
      html,←'<head/>'
      html,←'<body>'
      html,←'<h1>Hello APL!</h1>'
      html,←'</body>'
      html,←'</html>'

      html
<html><head/><body><h1>Hello APL!</h1></body></html>

      ⍝ it now works with dyadic scalar
      ⍝ primitives
      aaa←10
      ⎕←aaa+←20
30
      ⎕←aaa×←1 2 3
30 60 90
      ⎕←aaa÷←10
3 6 9
      ⎕←aaa⌈←7
7 7 9
      ⎕←aaa*←2
49 49 81
More details...

Description

The ]usave User Command does no longer save ⎕mom and ⎕ucs objects in User Command Files. More details...

Description

The new ⎕nfe System Function supports reading and writing text files using different encoding types. More details...

Description

The maximum number of retainable APL+Win Session lines has been increased from 8000 to 32767. More details...

Description

The ⎕dtr System Function now supports empty prototypes. More details...

Description

The new ]pcfread User Command reads components from n APL*PLUS PC .ASF components file. More details...

Description

The APL+Win ActiveX Server now returns an exit code to its calling batch process. More details...

Description

The APLWin ActiveX Server class has a new apldata property that controls how character data is transmitted by the Server. More details...

Description

The new APLW.WS ActiveX Server class allows to start any APL+Win executable as the APL+Win ActiveX Server with any user specified command options. More details...

Description

The Inline Control Sequences (see v10 enhancements) are no longer experimental and are enabled by default in the Full and Runtime system.

Example

      ∇ r←Test a
[1]   (~a∊⍳3 :then ⎕error'a must be 1,2 or 3')
[2]   (a=2 :then 'a is 2' :else 'a is 1 or 3')
[3]   r←(a :choose 'one' : 'two' : 'three')
    ∇

      Test 3
a is 1 or 3
three

      Test 2
a is 2
two

      Test 5
a must be 1,2 or 3
      Test 5
      ^
More details...

Description

The Enlist (∊) primitive has been optimized for all types of simple vectors enclosed in a nested singleton (or empty) vector. More details...

Description

The new ⎕cse System Function allows to include C# code into APL+Win programs and allows to use the entire Microsoft .Net Framework from APL+Win. More details...

Description

The new XUExec method of the APL+Win ActiveX Server class allows to return a Variant value from a Unicode aware client application. More details...

Description

The Windows Visual Styles (Themes) are now supported in ⎕wi controls and in the APL+Win Session for the APL+Win Full System and Runtime System thanks to the new aplw.exe.manifest and aplwr.exe.manifest files. More details...

Description

There is a new shortcut key (Alt+Shift+W) to produce the Euro (€) symbol. More details...

Description

The WinVersion and GetWinVer utility functions in the WINDOWS.W3 and RELxx.W3 workspace have been enhanced to support Windows 8 and Windows Server 2012. More details...

Description

The new Mismatch (≢) primitive (Alt+Shift+Q) is equivalent to Not Match. More details...

Description

The new Commute (⍨) operator (Alt+Shift+T) allows to reverse the arguments of a primitive before applying it. Therefore, (a+b)-c can be written: c-⍨a+b
The Commute operator often allows to eliminate parenthesis in APL+Win expressions. More details...

Description

The new Commute (⍨) operator (Alt+Shift+T) allows to reverse the arguments of a primitive before applying it. Therefore, (a+b)-c can be written: c-⍨a+b
The Commute operator often allows to eliminate parenthesis in APL+Win expressions.

Example

      ⍝ Expression:     ⍝ Same as:
      ⎕tcnl~⍨⎕vr'Test'  (⎕vr'Test')~⎕tcnl
      10÷⍨9-3           (9-3)÷10
      c⍴⍨a,b            (a,b)⍴c
      10-⍨c⍴⍨a,b        ((a,b)⍴c)-10
More details...

Description

The new Mismatch (≢) primitive (Alt+Shift+Q) is equivalent to Not Match.

Example

      ⎕av⍳'APL'
66 81 77

      'APL'≢⎕av[66 81 77]
0
      'APL'≡⎕av[66 81 77]
1

      ⍳¨⍳3
 1  1 2  1 2 3

      (⍳¨⍳3)≢1,(⊂1 2),⊂1 2 3
1     ⍝ they are not identical!

     ]display 1,(⊂1 2),⊂1 2 3
.→3-------------.
∣   .→2-..→3---.∣
∣ 1 ∣1 2∣∣1 2 3∣∣
∣   '~--''~----'∣
'∊--------------'

      ]display ⍳¨⍳3
.→3-------------.
∣.→..→2-..→3---.∣
∣∣1∣∣1 2∣∣1 2 3∣∣
∣'~''~--''~----'∣
'∊--------------'
More details...

Description

The APL+Win Virtual Keyboard now provides 2 new checkbox options: Virtual Key Regions are Active and Tool Tips are active. More details...

Description

The ⎕pw System Variable now accepts an argument of ¯1 to programmatically force ⎕pw to match the APL+Win Session width.

Example

      ⍝ restrict output to 60 chars width
      ⎕pw←60

      ⍝ restrict output to apl session width
      ⎕pw←¯1 
More details...

Description

The new :foreach Control Structure allows to iterate several items in parallel in a for loop.

Example

    ∇ Test;a;i;j;k;l;w
[1]   a←'dog' 'cat' 'bird' ⍝ animals
[2]   l←12 18 6            ⍝ avg life length
[3]   w←30 16 2            ⍝ avg weight
[4]   :foreach i j k :in a l w
[5]       ⎕←i'can live'j'and weigh'k
[6]   :endfor
    ∇

      Test
 dog can live 12 and weigh 30
 cat can live 18 and weigh 16
 bird can live 6 and weigh 2
More details...

Description

The Open... (Ctrl+O) and Fetch... (Ctrl+G) dialogs now have a Contains check box: when checked typing characters in the Name field reduces the list of objects to only those containing these characters. More details...

Description

The Zip ActiveX Class can now recurse subdirectories
TheZip ActiveX Class can now use pattern matching. More details...

Description

The ⎕dr System Function now supports ⎕mom and ⎕ucs objects.

Example

      mypet←⎕mom'' '' ⍝ create new ⎕mom object
      mypet.Name←'zazou'
      mypet.⎕fx⊃'r←Jumped a' 'r←⎕mself.Name"jumped"((1+a>2)⊃"low" "high")' 
Jumped

      mypet.Jumped 4
 zazou jumped high

      mypet.Jumped 1
 zazou jumped low

      ⎕dr mypet
99999   ⍝ 99999=⎕mom object!

      ⎕dr ⎕ucs 2345 6789
322     ⍝ 322=⎕ucs object
More details...

Description

There now is a new Virtual APL Keyboard GUI control in the session manager available by clicking the View/APL keyboard menu option or pressing Ctrl+B. More details...

Description

There now is a new APL Idioms Manager GUI control in the session manager available by clicking the View/Idioms Manager menu option or pressing Ctrl+I. More details...

Description

Using Ctrl+scrolling mouse wheel now allows to easily change the APL+Win font size. More details...

Description

The grade-up (⍋) and grade-down (⍒) primitive functions now has ⎕AV as their default character grade left argument.

Example

      ⍋4 3⍴'cccaaadddbbb'
 2 4 1 3
      ⍝ previously:
      ⎕av⍋4 3⍴'cccaaadddbbb'
 2 4 1 3 
More details...

Description

The ⎕CMD System Function now supports a command line buffer length of 8192 characters instead of the previous 256 characters. More details...

Description

Unicode characters are now supported in the Draw method Text operations and in the Printer object Print method.

Example

      ⎕wi'Draw'('Text'(⎕ucs 97 98 99))
      ⍝ Same as:
      ⎕wi'Draw'('Text' 'abc')

      ⎕wi'Draw'('Text'(⎕ucs 9076))
      ⍝ Would draw: ⍴
      ⍝ See:
      ⍝ https://unicode¯table.com/en
      ⍝ https://unicode¯table.com/en/#miscellaneous¯technical
      ⍝ for a list of Unicode characters

      ⍝ To convert hexa¯decimal numbers
      ⍝ since v15.1:

      0x2374 ⍝ code in above page for ⍴
9076         ⍝ decimal value for this code

      ⍝ Equivalent instructions:
      'printer'⎕wi'Print' 'abc'
      'printer'⎕wi'Print'(⎕ucs 97 98 99)
      'printer'⎕wi'Print'97 98 99
More details...

Description

The APL+Win Session and the APL+Win Editor now supports multi-level Undo (Ctrl+Z) and/or Redo (Ctrl+Y). More details...

DefaultES (v10.3)

Description

A new INI file setting named [Session]DefaultES=n allows specification of the default Event Stop setting for an APL+Win Session. More details...

Description

The [Session]DefaultES=n setting controls the default state of Event Stops for APL+Win ActiveX Server Sessions. More details...

Description

A new notation (<) has been introduced that allows passing ActiveX objects as arguments to ActiveX Methods in a more convenient and efficient manner.

Example

'xsl'⎕wi'Create' 'Msxml2.DOMDocument'
'xml'⎕wi'Load' 'c:\temp\contacts.xml'
'xsl'⎕wi'Create' 'Msxml2.DOMDocument'
'xsl'⎕wi'Load' 'c:\temp\contactsStyleSheet.xslt'
'xml'⎕wi'TransformNode' ('xsl'⎕wi'obj')

⍝ The last instuction can now be:
'xml'⎕wi'TransformNode(<xsl)'

⍝ or with named parameters:
'xml'⎕wi'TransformNode (stylesheet:<xsl)'
More details...

Description

The new onComAction event on the System Object only fires in the APL+Win ActiveX Server Session and is useful for debugging and/or tracing error purposes. More details...

Description

Setting of Stop or Trace in an APL+Win function Edit Session now takes effect immediately. More details...

Description

It is now possible to edit a character variable by opening it at a given line number in the APL+Win Editor.

Example

      aaa←⊃(⊂'Item '),¨⍕¨⍳100
      )ed aaa[78]
More details...

Description

The new ⎕dtr System Function performs a deep transpose of any array: it works as the monadic transpose but recurses to each child element and transposes it as well. This System Function is very useful when passing arrays to an ActiveX method as arrays needs to be deeply transposed in that case.

Example

      aaa←?2 2⍴⊂2 2⍴100

      aaa
 14 76   22  5
 46 54   68 68

 94 39    4  6
 52 84   53 68

      ⎕dtr aaa
 14 46   94 52
 76 54   39 84

 22 68    4 53
 5 68     6 68 
More details...

Description

APL+Win now supports arrays with about 10 times more elements than before.

Example

      aaa←2147483647⍴1
      ⍴aaa
 2147483647
      ⍝ 2.147483647 billion elements!
      +/aaa
 2147483647 
More details...

Description

The runtime system (aplwr.exe) no longer restricts the kind of workspace it can load. Now it can load workspaces that were created via either the )SAVE and )RSAVE system commands without any differences in behavior except that runtime workspaces are encrypted. This enhancement only applies to runtime workspaces created in APL+Win v10.0+. More details...

Description

The :for Control Structure statement now supports multiple variables strand notation.

Example

    ∇ Test;i;j;k
[1]   :for i j k :in (1 2 3)(4 5 6)
[2]       ⎕←i j k*2
[3]   :endfor
    ∇

      Test
1 4 9
16 25 36
More details...

Description

The ⎕at and ⎕size System Functions now accept an additional optional scope left argument as follows:

1=local scope (default)
0=global scope

Example

    ∇ Test aaa
[1]   0 0⍴⍙stop⎕stop'Test'
[2]   ⍙stop:
    ∇

      aaa←⍳100000

      Test ⍳10
Test[2]

      ⍝ size of the local aaa variable
      ⎕size'aaa'
64
      1 ⎕size'aaa'
64

      ⍝ size of the global aaa variable
      0 ⎕size'aaa'
400024
More details...

Description

The ⎕dm System Variable may now be localized in function headers and may be assigned.

Example

    ∇ r←a Div b;⎕dm
[1]   :try
[2]       r←a÷b
[3]   :catchif'DOMAIN'≡6↑⎕dm
[4]       ⎕dm←'Division par 0 impossible!'
[5]       ⎕error⎕dm
[6]   :endtry
    ∇

      5 Div 6
0.8333333333

      5 Div 0
Division par 0 impossible!
      5 Div 0
        ^
More details...

Description

The Enable Unicode Clipboard item to the Edit menu (near where it lists Cut, Copy, Paste) when enabled (checked) allows Unicode text containing APL characters to paste into and from APL+Win.
This is bound to the Ctrl+U key for toggling Unicode clipboard mode on/off. There is also a UNI indicator in the status bar when this option is enabled.

This important new feature now allows to copy/paste APL code directly in other applications like Word, Outlook, etc. without having to use an APL font! More details...

Description

Tabs are now treated syntactically the same as SPACEs when not within quotes. Inside quotes they have always been included into the string's value and that behavior remains unchanged. They only cause SYNTAX ERRORs when used to indent code or comments (which often happened as a result of pasting from another application that inserts tabs rather than spaces into the code). More details...

Description

The :debug statement argument is executed only in debug mode without displaying any result to the APL+Win Session.

Example

    ∇ Test
[1]   :debug aaa←⍳10
[2]   :debug aaa   ⍝ no session output
[3]   :debug ⎕←2×aaa  ⍝ session output
[4]   :debug 10+
[5]   :debug ⎕←100
    ∇

      )debug
IS ON

      Test
 2 4 6 8 10 12 14 16 18 20
SYNTAX ERROR
Test[4] :debug 10+
                 ^

      )si
Test[4] *

      )debug off
WAS ON
1 function(s) required reflowing
1 function(s) successfully reflowed

      Test
More details...

Description

The ifdebug statement defines a block of statements that execute in debug mode only. It must end with an :endifdebug, :endif, or :end statement. It can be coded with or without an :else clause, which executes in release mode, with additional conditions, or a combination of both.

Example

    ∇ Test
[1]   :ifdebug
[2]       aaa←⍳10
[3]       aaa      ⍝ session output
[4]       ⎕←2×aaa  ⍝ session output
[5]       10+
[6]       ⎕←100
[7]   :else
[8]       aaa←⌽⍳10
[9]   :end
    ∇

      )debug
IS ON

      Test
 1 2 3 4 5 6 7 8 9 10
 2 4 6 8 10 12 14 16 18 20
SYNTAX ERROR
Test[5]     10+
              ^
      )si
Test[5] *

      )debug off
WAS ON
1 function(s) required reflowing
1 function(s) successfully reflowed

      aaa
 1 2 3 4 5 6 7 8 9 10

      Test

      aaa
 10 9 8 7 6 5 4 3 2 1 
More details...

Description

The :trace Control Structure statement implicitly calls the ⎕log System Function to write its argument's value to the debug log file but the argument expression is not required to return a value (if it does not, nothing is written the debug log file). More details...

Description

The :assert Control Structure statement executes its argument only in debug mode. It evaluates its argument and signals an error if the argument does not return 1 or an empty character vector ('')

Example

    ∇ Test
[1]   ⎕←aaa←?(?10)⍴10
[2]   :assert (⍴aaa)>5
    ∇

      )debug
IS ON

      Test
 3 2 4 9 7 2 7 4 4 5
      Test
 10 6 2 10 5 2
      Test
 1 3
ASSERTION FAILURE: (⍴aaa)>5
Test[2] :assert (⍴aaa)>5
        ^

      ⎕vr'Test'
    ∇ Test
[1]   ⎕←aaa←?(?10)⍴10
[2]   :assert (⍴aaa)>5 :else 'aaa must have at least 6 elements!'
    ∇

      Test
 3 5 5 10 2 2

      Test
 7 2 7 7
ASSERTION FAILURE: aaa must have at least 6 elements!
Test[2] :assert (⍴aaa)>5 :else 'aaa must have at least 6 elements!'
                ^
More details...

Description

The :verify Control Structure statement executes its argument whether debug mode is on or off. It evaluates its argument and signals an error if the argument does not return 1 or an empty character vector ('')

Example

    ∇ Test
[1]   ⎕←aaa←?(?10)⍴10
[2]   :verify (⍴aaa)>5
    ∇

      Test
3 5 4 3 1 10 5 2 10
      Test
2 9 1 2 1
ASSERTION FAILURE: (⍴aaa)>5
Test[2] :verify (⍴aaa)>5
        ^

      ⎕vr'Test'
    ∇ Test
[1]   ⎕←aaa←?(?10)⍴10
[2]   :verify (⍴aaa)>5 :else 'aaa must have at least 6 elements!'
    ∇


      Test
3 2 8 5
ASSERTION FAILURE: aaa must have at least 6 elements!
Test[2] :verify (⍴aaa)>5 :else 'aaa must have at least 6 elements!'
     ^
More details...

Description

The new :nextcase Control Structure allows to continue execution with the next :case in a :select ... :case ... :case ... :endselect structure while otherwise only one :case block would be executed.

Example

    ∇ Test n
[1]   :select n
[2]   :case 3
[3]      ⎕←'case 3'
[4]      :nextcase
[5]   :case 2
[6]      ⎕←'case 2'
[7]      :nextcase
[8]   :case 1
[9]      ⎕←'case 1'
[10]  :else
[11]     ⎕←'else'
[12]  :endselect
    ∇
 
      Test 0
else
      Test 1
case 1
      Test 2
case 2
case 1
      Test 3
case 3
case 2
case 1
More details...

Description

The :ex Control Structure statement is used in cascading decision statements (such as: :and/:or extensions of :if, :while, etc.) statements as a place to compute something before taking the next decision.

Example

    ∇ a Test b;c
[1]   :if a>4
[2]   :and b>5
[3]   :ex c←a×b
[4]   :and c<40
[5]       ⎕←'Success!'
[6]   :else
[7]       ⎕←'Failure!'
[8]   :endif
    ∇

      5 Test 6
Success!

      5 Test 7
Success!

      5 Test 8
Failure!
More details...

Description

The :return Control Structure statement is the same as →0. It can also accept one argument which is the value to be returned by the function: in this case the function must have been declared to have a result.

Example

    ⎕vr'Test'
    ∇ Test a
[1]   :return a
    ∇

      Test 10
NONCE ERROR: Cannot return value without declared result
Test[1] :return a
        ^

    ∇ r←Test a
[1]   :return a
[2]   ⍝ Same as:
[3]   ⍝ r←a
[4]   ⍝ :return
    ∇

      Test ⍳5
1 2 3 4 5
More details...

Description

The :returnif Control Structure statement has the following syntax:

:returnif (condition) :res (result)

It continues execution if (condition) evaluates to 0 and exit the function returning (result) if (condition) evaluates to 1.

Example

    ∇ r←Test a
[1]   :returnif a>10 :res a*2
[2]   :return a*3
    ∇

      Test 12
144
      Test 3
27
More details...

Description

The :leaveif Control Structure statement allows to quit a loop based on a condition with one statement.

Example

    ∇ r←Test;a;i
[1]   ⎕←a←?10⍴10
[2]   :for i :in a
[3]       :leaveif i>7
[4]       ⍝ Alternative:
[5]       ⍝ :if i>7 ⋄ :leave ⋄ :end
[6]       ⎕←i
[7]   :endfor
    ∇

      Test
7 4 1 10 6 1 9 1 4 5
7
4
1
More details...

Description

The :continueif Control Structure statement has the following syntax:

:continueif (condition)

It allows to skip the end of the current loop if (condition) evaluates to 1.

Example

    ∇ r←Test;a;i
[1]   ⎕←a←?10⍴10
[2]   :for i :in a
[3]       :continueif i>5
[4]       ⍝ Alternative:
[5]       ⍝ :if i>5 ⋄ :continue ⋄ :end
[6]       ⎕←i
[7]   :endfor
    ∇

      Test
6 8 7 6 1 2 10 2 4 7
1
2
2
4
More details...

Description

The Inline Control Structures (ICS) allow to express in a single instruction what would require several instructions with regular Control Structures.

ICS must be embedded in parenthesis and may return a result.

The various available ICSs are the following:

(cond :then case1 :else case0)
(cond :then case1)
(cond :else case0)
(cond1 :and cond2)
(cond1 :and cond2 ... :and condN)
(cond1 :and cond2 ... :then case1 :else case0)
(cond1 :and cond2 ... :then case1)
(cond1 :and cond2 ... :else case0)
(index :choose case1 : ... : caseN :else else)
(index :choose case1 : ... : caseN)

Example

    ∇ r←Test a
[1]   (~a∊⍳3 :then ⎕error'a must be 1,2 or 3')
[2]   (a=2 :then 'a is 2' :else 'a is 1 or 3')
[3]   r←(a :choose 'one' : 'two' : 'three')
    ∇

      Test 3
a is 1 or 3
three

      Test 2
a is 2
two

      Test 5
a must be 1,2 or 3
      Test 5
      ^
More details...

Description

System speed and memory capacticy have increased dramatically. Some applications run twice as fast as before.

The maximum workspace has grown from 1.6Gb to 2.6Gb or 3.6Gb (on 64-bits machines). More details...

Description

⎕wgive was enhanced to eliminate a lot of excess and unnecessary overhead when executed. More details...

Description

⎕valence, ⎕monadic, and dyadic indicate how the current function was called. ⎕valence returns 0, 1, or 2 for niladic, monadic, or dyadic invocation or ¯1 if not a function (such as a callback). ⎕monadic is equivalent to (⎕valence=1) and ⎕dyadic is equivalent to (⎕valence=2).

Example

    ∇ r←a Divides b
[1]   :if ⎕monadic
[2]   ⍝ Alternatives:
[3]   ⍝ :if ⎕valence=1
[4]   ⍝ :if 0=⎕nc'a'
[5]    a←1
[6]   :endif
[7]   r←b÷a
    ∇

      Divides 5
5

      2 Divides 5
2.5
More details...

Description

The ⎕log function formats its right argument into a debug log file and/or the Windows Event Log. It may be called during debug or release mode. The log file is automatically created with a timestamp based filename and each entry in it is prefixed by a timestamp. Newline characters are normalized to the Windows CR+LF standard and APL characters are translated to ANSI to make the output viewable with any standard editor. If the EncryptLog option is enabled the log file is encrypted as it is written.

The optional left argument controls where the output is written. D selects the debug log file (default) while I, W, or E selects the Windows Event Log as Information, Warning, or Error events.

Example

      ⍝ Change the Log file
      ⎕wcall'W_Ini' '[Config]DebugLogPath=c:\temp\aplwin.log'

      ⍝ Exit APL and reload APL
      ⎕wcall'W_Ini' '[Config]DebugLogPath'
c:\temp\aplwin.log

    ∇ Test;a;b;i
[1]   a←¯5+?10⍴10
[2]   :trace a  ⍝ write to Log file
[3]   :for i :in⍳⍴a
[4]       :try *
[5]           b←÷i⊃a
[6]       :catchall
[7]           'D'⎕log⎕dm
[8]       :endtry
[9]   :endfor
    ∇

      Test

      'c:\temp\aplwin.log'⎕ntie ¯1
      aaa←⎕nread ¯1 82,2↑⎕nsize ¯1
      aaa←(ANSI2AV aaa)~⎕tclf
      aaa

###2017¯01¯13 15:49:51.457###
2 2 1 3 3 5 0 5 ¯1 0
###2017¯01¯13 15:49:51.457###
DOMAIN ERROR
Test[5]         b←÷i⊃a
                  ^
###2017¯01¯13 15:49:51.457###
DOMAIN ERROR
Test[5]         b←÷i⊃a
                  ^
More details...

Description

The ⎕novalue System Function may only be used with :return or :res. Using ⎕novalue with :return or :res means that the function will retun no value even if the function result variable has already been as signed!

Example

    ∇ r←Test a
[1]   r←a
[2]   :returnif a>4 :res ⎕novalue
    ∇

      ⎕←aaa←Test 3
3

      ⎕←aaa←Test 10
VALUE ERROR
      ⎕←aaa←Test 10
            ^

      ⍝ Even though r←a on line [1]
      ⍝ the function does not return
      ⍝ a value when a>4 because of
      ⍝ ⎕novalue
More details...

Description

The new ⎕throw System Function is similar to ⎕error except it throws the error in the context of the calling function rather than exiting from the function before throwing it. This allows errors thrown in a :try block to be handled locally rather than existing from the function. .

Example

     ∇ Test2
[1]   ⎕←4 Div2 3
[2]   ⎕←4 Div2 2
[3]   ⎕←4 Div2 0
    ∇

     ∇ r←a Div2 b
[1]   ⎕error(b=0)/"Can't divide by 0!"
[2]   r←a÷b
    ∇

      Test2
1.333333333
2
Can't divide by 0!
Test2[3] ⎕←4 Div2 0
             ^
      
      ⍝ Note: it is the Test2 calling
      ⍝ function which is interrupted

     ∇ Test
[1]   ⎕←4 Div 3
[2]   ⎕←4 Div 2
[3]   ⎕←4 Div 0
    ∇

     ∇ a←a Div b
[1]   ⎕throw(b=0)/"Can't divide by 0!"
[2]   a←a÷b
[3]
    ∇

      Test
1.333333333
2
Can't divide by 0!
Div[1] ⎕throw(b=0)/"Can't divide by 0!"
       ^

      ⍝ Note: this time, it is the Div
      ⍝ function which is interrupted

More details...

Bug Fix (v9.2.01)

Description

[APL GUI]: Disabling the parent object containing an ActiveX control resulted in painting problems for the ActiveX control when its parent was disabled then re-enabled with the enabled property

Bug Fix (v9.2.01)

Description

[APL GUI]: In version 9.1, executing the Windows API EM_SetTextEx with an argument containing ⎕TCNL in the RichEdit control caused the selfont property to change to the System font

Bug Fix (v9.2.01)

Description

[APL GUI]: In version 9.1, calling the XEditCopy method in the Formula One ActiveX object gave the error: ⎕WI ERROR: exception 800A4E3B Unable to open clipboard

Bug Fix (v9.2.01)

Description

[APL GUI]: The mouse could become disabled in ActiveX objects like the APL Grid

Bug Fix (v9.2.01)

Description

[Session]: The font selected in the Font for Printer and Font for Screen dialogs retained the selection when cancelling the dialog

Bug Fix (v9.2.01)

Description

[Interpreter]: Executing ⎕TCNL.⎕TCNL crashed APL+Win. A ⎕TCNL. with other things like ⎕AV resulted in a similar crash

Bug Fix (v9.2.01)

Description

[Interpreter]: In versions 9.0 and 9.1, the Wait method on the stack was released when an error occurred in the session. There is a new APLW.INI [Compatibility] switch called BreakWaitOnError to control this behavior. The default value is 0 which gives the behavior seen in versions 6 to 8. This must be set to 1 to get the newer behavior (that releases the wait on error) in prior versions of 9

Bug Fix (v9.2.01)

Description

[Interpreter]: The global value of ⎕WSELF could be changed when running a function with ⎕WSELF localized

Bug Fix (v9.1.01)

Description

[APL Grid]: Assigning the xMissing property value for a cell to 0 cleared the cell of its data and also changed the value for the xMissing property for the cell

Bug Fix (v9.1.01)

Description

[APL Grid]: When executing the content and xml properties for the APL Grid without any rows and columns, the ⎕WI ERROR: 80004005 Unspecified error error message was given

Bug Fix (v9.1.01)

Description

[APL Grid]: The xMissingValue value was not stored in the xml and content properties

Bug Fix (v9.1.01)

Description

[Session]: APL+Win treated obsolete system functions like ⎕POKE as a legitimate Quad Function while syntax coloring was enabled in the session

Bug Fix (v9.1.01)

Description

[APL GUI]: Scrolling the mouse wheel in Trackbar did not fire the onChange event

Bug Fix (v9.1.01)

Description

[APL GUI]: Misplaced // string in the APLWADF.INI and APLW.ADF file

Bug Fix (v9.1.01)

Description

[APL GUI]: The onClick handler fired for a hidden button with an accelerator key in the caption when the button was a child of a frame

Bug Fix (v9.1.01)

Description

[Workspace]: Wrong icon displayed in the REL90 demo workspace dialog and added support for Windows 7

Bug Fix (v9.1.01)

Description

[Interpreter]: The ]IN user command may crash APL+Win when recreating original variable definitions from very large characters arrays stored in an APL2 transfer file Please refer to the variable Describe in CMDIN_FIX.W3 for instructions on applying this fix

Bug Fix (v9.1.01)

Description

[Interpreter]: APL+Win may crash when executing base value and/or inner product. A symptom of the crash was a System Failure in the internal file Sxtabs.c

Bug Fix (v9.1.01)

Description

[Interpreter]: The format primitive function introduced in version 9.0 gave erroneous output

Description

New shortcut accelerator keys were added to the Find and Replace dialogs: - "&Match Substrings" - "Search &All" - "Search to &End"

Description

The name association between the aplw.exe and aplwr.exe and the APLWCo.dll has been improved. The COM Module can be specified via the INI file as before, but if not specified, the name can be much more flexible in that the Co suffix in the module's name is now optional and the APLWCo.dll can match the name of the exectuable (or match the root name minus a trailing "r" suffix) A benefit of this improvement is that the APLWCo.dll module is no longer registered. It gets registered when you execute the /RegServer option on aplw.exe and aplwr.exe

Description

There is no longer an apx20ocx.dll module. It has been incorporated directly into aplw.exe and aplwr.exe

Description

APL2000 can produce for customers runtime distributable files with their own company branding (company name, version number, icon, ProgID etc.). For more information on this service, please contact APL2000 Technical Support at 301-208-7217 or support@apl2000.com

Description

The VeriSign digital certificate authority has been applied to the executables, dynamic link libraries (DLLs) and the installer. With this release, the APL+Win executables, dynamic-link libraries (DLL) and installer contain an authenticode certificate digital signature from the commercial certificate authority Verisign

Description

The string length of the ⎕DM buffer increased to 64k characters

Description

⎕WCALL was enhanced to permit internal routines like W_CreateFilter to work successfully with Data Execution Prevention (DEP) enabled in Windows XP and later

Description

⎕EVAL is monadic and accepts a character vector right argument. It is similar to the execute primitive function, but allows only a limited subset of syntactic features. The argument may only contain the following syntactic elements: numeric constants, character constants, strand notation for nesting, the monadic enclose primitive for nesting, the reshape primitive, and parentheses (for strand notation and grouping) ⎕EVAL is intended to work around an internal stack overflow in APL+Win when long vectors of a specific type (e.g., those generated by ]OUT user command) are passed to the execute primitive function (in the ]IN user command) Note: ⎕EVAL is not a general replacement for the execute primitive function

Bug Fix (v9.0.03)

Description

[APL GUI]: The onMouseDouble event handler was accidentally removed for the Frame and Label controls

Bug Fix (v9.0.01)

Description

[ASMFNS.W3]: The TEXTREPL and WORDREPL functions in the ASMFNS workspace would run in an infinite loop

Bug Fix (v9.0.01)

Description

[APL GRID]: When validation was set for a cell, double clicking the left or right mouse button on a different cell when a cell was being edited caused the invalid cell's value to be discarded

Bug Fix (v9.0.01)

Description

[APL GRID]: In prior versions, the onXKeyMove event handler fired before the onXEditEnd event handler. This gave the appearance that the active cell was changing but then it never did if validation failed during the onXEditEnd event. It was necessary to fix this bug in order to fix the bug reported in the onXEditEnd event handler

Bug Fix (v9.0.01)

Description

[APL GRID]: In versions 7.1 to 8.3, extraneous onXEditEnd events fired with multiple cells selected in the grid

Bug Fix (v9.0.01)

Description

[APL GRID]: In version 8.3, assigning the xMissing property value for a cell to 0 cleared the cell of its data and also changed the value for the xMissing property for the cell

Bug Fix (v9.0.01)

Description

[APL GUI]: In version 8.3, the Unicode text did not appear correctly in a Listview control that was a child of the Frame control

Bug Fix (v9.0.01)

Description

[APL GUI]: In version 8.3, ⎕WARG reported the size of the Form including the size of the Status bar or CommandBar controls during the Form's resize event

Bug Fix (v9.0.01)

Description

[APL GUI]: In versions 6.4 to 8.3, clicking the Option control with the mouse in a Form with an ActiveX control caused APL+Win to become unresponsive

Bug Fix (v9.0.01)

Description

[APL GUI]: The onMouseDouble event handler was visible but not operational for the DateTime, Label, Frame, MDIForm, Progress, Spinner and Trackbar controls. Research revealed that this event handler was unsupported by these controls so the event handler was removed for these controls

Bug Fix (v9.0.01)

Description

[Session]: In version 8.3 and earlier, high-order character arrays that were items in a nested array did not appear correctly in the session

Bug Fix (v9.0.01)

Description

[Interpreter]: Invoking the Run(Resume)-F5 menu option in Code Walker didn't resume execution of the suspended function and instead gave a SYNTAX ERROR

Bug Fix (v9.0.01)

Description

[Interpreter]: In versions 6.0 to 8.3, executing "⎕error ⎕dm" did not correctly clear the stack after a suspension during the execution of a function

Description

Support for programmatically unloading a multi-threaded DLL or ActiveX control from memory after having been used by ⎕wcall, ⎕na, or ⎕wi To unload a multi-threaded dll or Active control, perform steps 1-4 below. (Only perform steps 1-3 for a single-threaded dll or Active control.) 1. )RESET This will make sure the SI stack is unwound in order that the next command can run to completion Note: You may skip this step when there is no suspension in the stack 2. object ⎕wi 'Delete' This step releases the ActiveX object loaded by APL+Win Note: You may execute to ('#' ⎕wi 'Reset') to relese all ActiveX objects 3. ⎕wcall 'W_Reset' This step will immediately unload a single-threaded dll or ActiveX object and mark for unloading a multi-threaded dll or ActiveX object There is also a new built-in ⎕wcall 'W_ResetUnload' that takes an argument that specifies the delay (in milliseconds). If you call it with a 0 delay then the dll will be unloaded immediately without delay ⎕wcall 'W_ResetUnload' delay Note: If you call W_Reset rather than W_ResetUnload the default delay is 1000 milliseconds 4. ⎕wcall 'W_Reset' This step is necessary when unloading a multi-threaded dll or ActiveX object. This must be called at least 1 second after the first W_Reset call You can forgo this second W_Reset call if (1) all ActiveX objects are single-threaded or (2) you call W_ResetUnload with delay=0 NOTE CAREFULLY: In the above sequence you MUST delete the ActiveX object before ⎕wcall 'W_Reset'. Otherwise the ActiveX dlls will not be available for unloading and will NOT be marked for unloading (so the second W_Reset call will not unload the DLL even if it is done after the specified delay period)

Description

The purpose of this was to improve the support for the VB and X prefixes in properties, methods and event handlers Current options: 0 = (default) uses the X prefix on ActiveX control properties, events and methods. 1 = Uses the VB prefix on ActiveX control properties, events and methods rather than the X-prefix New Options: 2 = Uses the VB or X prefix on ActiveX control with the VB-prefix reported by properties, events and methods 3 = Uses the X or VB prefix on ActiveX control with the X-prefix reported by properties, events and methods

Bug Fix (v8.3.01)

Description

[APL GUI]: The def property gave "⎕WI DEF ERROR: Invalid object definition" error message when the argument was a definition vector that was of type HET

Bug Fix (v8.3.01)

Description

[APL GUI]: The timer object's onTimer handler didn't occur when the DEP (Data Execution Prevention) option was enabled in the operating system

Bug Fix (v8.3.01)

Description

[APL GUI]: The media control's file property was updated when the underlying MCI (Media Control Interface) player failed to open the file

Bug Fix (v8.3.01)

Description

[APL GUI]: Tooltips did not for the controls on form object that had its style property value set to 16 (onTop)

Bug Fix (v8.3.01)

Description

[APL GUI]: The command button control could be a child of another command button. This was wrong behavior

Bug Fix (v8.3.01)

Description

[APL GUI]: Undocking then dragging a floating command bar with a Selector control caused the selector to disappear

Bug Fix (v8.3.01)

Description

[APL GUI]: Undocking and docking a command bar with a Frame and a child Combo control caused APL+Win to hang

Bug Fix (v8.3.01)

Description

[APL GUI]: The onHotChange handler stopped firing fora child Label control after having set any mouse event handler

Bug Fix (v8.3.01)

Description

[APL GUI]: The resize cursors for the mouse appeared when placing the mouse on the edge of a floating command bar with a single child control

Bug Fix (v8.3.01)

Description

[APL GUI]: The children of the frame in a command bar disappeared when the form was disabled and did not reappear when the form was re-enabled

Bug Fix (v8.3.01)

Description

[APL GUI]: When setting the wrap property for a command button, the command bar was not layed out correctly

Bug Fix (v8.3.01)

Description

[APL GUI]: The command buttons were not resizing and painting correctly when shown when created on a closed form

Bug Fix (v8.3.01)

Description

[APL GUI]: There were numerous cases where the caption did not display correctly or at all for a command button

Bug Fix (v8.3.01)

Description

There was a bug in the server property which caused it to return 0 during ⎕LX processing in the APL+Win COM server session in the auto loaded workspace

Description

Two new values for the wrap property for the CommandBar class: -1 = explicitly not wrapped (never wrapped) 2 = explicitly wrapped (always wrapped) The new -1 and 2 values for the wrap property allow you to explicitly specify that a child object of a command bar should be never wrapped (-1) or always wrapped (2) regardless of the command bar's shape or orientation

Description

The barwrap property controls wrapping of any children of the command bar. The values are the same as to those of the wrap property

Description

The dyadic ⎕UCS system function allows you to translate between Unicode code points and various representations, such as APL+Win ⎕AV and UTF-8

Description

The following scalar primitive functions were optimized: addition, subtraction, multiplication, division, maximum, minimum, and identity

Bug Fix (v8.2.01)

Description

[Interpreter]: The inflate argument to ⎕DR for simple vectors gave Zlib Error: Data Error

Bug Fix (v8.2.01)

Description

[Interpreter]: The 'MD5' argument to ⎕DR for a boolean gave inconsistent results

Bug Fix (v8.2.01)

Description

[Interpreter]: The 'MD5' argument to ⎕DR for an empty vector gave LENGTH ERROR error message

Bug Fix (v8.2.01)

Description

[Interpreter]: The 'MD5', 'I64' and 'F64' arguments to ⎕DR could have a workspace compaction occur during execution resulting in a crash or incorrect results

Description

New optional third argument value to ⎕CFREAD. When set to 1 will cause ⎕CFREAD to skip checking of the MD5 sum for the read component. The default value is 0

Description

The omitdir property when set to 1 will not include the directory name for files in the zip file when specified in the 'included' argument. The default value is 0

Bug Fix (v8.1.01)

Description

[GUI]: APL+Win could crash when running two instances of APL+Win andswitching between their Forms with GUI controls with functioning tooltips

Bug Fix (v8.1.01)

Description

[GUI]: APL+Win would crash when querying the list property for a Combo object containing one or more scalar items in the drop-down list

Bug Fix (v8.0.01)

Description

[Grid]: Two CanColSize events fired after the ColSized event when dragging the edges of the corner cell in the Grid

Bug Fix (v8.0.01)

Description

[Grid]: Dragging the vertical and horizontal edges of the corner cell in the Grid did not fire the ColSized and RowSized events

Bug Fix (v8.0.01)

Description

[Grid]: International characters display as question marks in cells after closing and reopening the grid

Bug Fix (v8.0.01)

Description

[Grid]: Two ValueChange events fired when dropping down a combo cell in the grid

Bug Fix (v8.0.01)

Description

[Grid]: Printed output could draw a strange rectangle above and to the right of the Grid

Bug Fix (v8.0.01)

Description

[Grid]: Grid printing echo content in adjacent empty cell when there was a left-justified character cell followed by an adjacent empty cell (or blank) cell, the first cell is partially echoed in the adjacent empty cell

Bug Fix (v8.0.01)

Description

[Grid]: Double clicking the right vertical edge of the first header column in the Grid did not autofit the text in the ellipsis cell (CellTypeEx=4) when the text appeared with ellipsis

Bug Fix (v8.0.01)

Description

[Grid]: Double clicking the vertical edge between the corner cell and the header column header in the Grid did not autofit the text in row cells

Bug Fix (v8.0.01)

Description

[Grid]: Dragging the horizontal scroll bar with the mouse tracked strangely in a very wide Grid

Bug Fix (v8.0.01)

Description

[Grid]: When clicking the header of a cell, the selection rectangle extended beyond the last row cell in the Grid

Bug Fix (v8.0.01)

Description

[Grid]: When the first letter typed matched an item in the list in the combo cell in the Grid, that item appeared in the cell. However, that wasn't the case with the last item in the list. It was ignored until another item appeared in the cell first

Bug Fix (v8.0.01)

Description

[Grid]: The onXSelectionChange handler did not fire in the Grid when the active cell was the same

Bug Fix (v8.0.01)

Description

[Grid]: Change the way cells are stored to better support HUGE virtual Grid

Bug Fix (v8.0.01)

Description

[Grid]: Scrolling the mouse wheel removed the selection block in the Grid

Bug Fix (v8.0.01)

Description

[Grid]: Typing the (lowercase) 'q' key in the combo cell caused the drop-down list to show

Bug Fix (v8.0.01)

Description

[Grid]: The xValue property incorrectly reported a ⎕WI ERROR when the value argument is an empty array. Added a test for an emptyarray. The fix was not specific to xValue and was generalized for all grid properties that set a value

Bug Fix (v8.0.01)

Description

[GUI]: Multiple GetInfoTip events fired for the Tree class when the tooltip appeared

Bug Fix (v8.0.01)

Description

[GUI]: A tooltip didn't appear when the text of an item in the Tree didn't fit within the available display width

Bug Fix (v8.0.01)

Description

[GUI]: The tooltipenabled property did not propagate correctly if sent on the system object after other GUI objects were already opened

Bug Fix (v8.0.01)

Description

[GUI]: The tooltipenabled property was not saved in the state and def properties

Bug Fix (v8.0.01)

Description

[Session]: When multiple monitors were in use, the display of the value tip was constrained to the workarea of the primary monitor

Bug Fix (v8.0.01)

Description

[Session]: The expression "⎕SPLIT⎕SI" was flagged as a SYNTAX ERROR in the session

Bug Fix (v8.0.01)

Description

[Interpreter]: ⎕CFNAMES contained extraneous characters and lines when there were more the 8,192 characters in the name list

Description

Modified XVirtualLoad method to support firing of events and timeout in the middle of loading a row. The old code only fired onXVirtualLoad events and checked for timeout limit at the end of loading a row

Description

Enhance Grid to show selection highlighting to headers cells. This allows emulatation of Excel behavior

Description

Enhanced the XEditStart method to drop down the list in a combo cell

Description

Update to Print and Preview with fixed rows/columns Added new xPrintOptions option to enable fixed rows/columns print: xPrintOptions = 16: show fixed-rows xPrintOptions = 32: show fixed-cols

Description

New xGridOptions property New xGridOptions property to control some grid options. Sum of the following option codes or 0 for defaults: 1 = keep selection rectangle displayed when grid loses focus 2 = use system gui font 4 = add extra pixel to default body xRowSize (rows > 0) 8 = add extra pixel to default header xRowSize (rows < 0) 16 = suppress onXSelectionChange event when active cell changes without changing selection 32 = automatically clear combo cell value when DELETE key is pressed 64 = suppress replication handle on focus rectangle (if xReplMode not enabled) 128 = enable storing of transient properties Setting options 2, 4 and/or 8 causes the default row heights to be recomputed. Changes in these options should ONLY be done when the grid is empty before setting the xRows or xHeadRows properties. Otherwise the default heights will not be put into effect for the existing row or row-headers Setting option 128 results in transient properties listed below to be stored in the content/XML state of grid: xChildWindow xEditWindow xImageList

Description

Automatic clearing of Combo cell text on Delete key Support automatic clearing of Combo cells when Delete key is pressed.This must be enabled via xGridOption=32 property

Description

The xNChanges property returns number of changes (faster than xChanges)

Description

Modified onCanColSize, onColSizing, onColSized, onCanRowSize, onRowSizing and onRowSized events to use -99999 for row/col argument when the corner button is being used to resize. This differentiates it from specific row/col header indexes, -1, -2, etc

Description

New Listview style property values 262144 = when set, label tips are suppressed in the Listview. 525288 = when set, info tips are supporessed in the Listview

Description

New Tree style property value 128 = When set, label tips are suppressed in the Tree control

Description

tooltiptime property specifies the delay time and display time of tooltips in APL GUI controls

Bug Fix (v7.3.03)

Description

[APL Grid]: Typing the first letter of the last item in the combo cell did not make that item appear in the cell

Bug Fix (v7.3.03)

Description

[APL Grid]: Pressing the Enter key in a combo style cell started the dropdown list in the combo cell

Bug Fix (v7.3.03)

Description

[APL GUI]: Querying the list property for a style 4 (sorted) combo control did not return a sorted list

Bug Fix (v7.3.03)

Description

[Session]: "Replace All", after finding the target, began the replace at the next occurrence instead of the current one

Bug Fix (v7.3.03)

Description

[Session]: The session reported the error flag for the following valid statement: 1 2 3 + .+ 10 20 30

Bug Fix (v7.3.03)

Description

[Session]: Token searches always start at the beginning of the current line when the cursor is set in the middle

Bug Fix (v7.3.03)

Description

[Interpreter]: ⎕COPY and ⎕PCOPY system functions reported WS ARGUMENT ERROR

Bug Fix (v7.3.03)

Description

[Interpreter]: Addressed problem that caused ⎕FREAD {each} arg" to return the argument arg instead of the result from the {each} function

Description

New GetSession method for the system object to return a function vector representation (⎕VR), character array, character vector, or numeric array for an editor session

Bug Fix (v7.2.02)

Description

[APL Grid]: The value in a cell wasn't displayed correctly when the xFormat property for the cell was set to ten or more decimal places

Bug Fix (v7.2.02)

Description

[APL Grid]: Setting the xPrintZoom property to a large number caused APL Grid to go into an infinite loop (when executing the XPrintInit method)

Bug Fix (v7.2.02)

Description

[APL Grid]: When calling APL Grid's xPrintWindow property with only a 0 argument, APL+Win incorrectly returned the error message: ⎕WI ERROR: APL.Grid exception 80004005 LENGTH ERROR: You must specify Row Col Rows Cols when non-zero DC specified"

Bug Fix (v7.2.02)

Description

[APL Grid]: The gridlines did not print

Bug Fix (v7.2.02)

Description

[APL Grid]: The top-left corner header cell did not appear in print preview mode

Bug Fix (v7.2.02)

Description

[APL Grid]: In some cases, the active cell would loses its borders when scrolling horizontally

Bug Fix (v7.2.02)

Description

[APL Grid]: Within a selection, pressing Shift+Tab did not move the active cell within the selection in reverse tab order

Bug Fix (v7.2.02)

Description

[APL Grid]: When the active cell was changed to another cell in the same selection, the previous active cell didn't paint correctly, i.e., it did not change colors from white to black

Bug Fix (v7.2.02)

Description

[APL Grid]: The active cell could lose its borders when scrolling horizontally

Bug Fix (v7.2.02)

Description

[APL Grid]: Setting the xActiveCell property did not scroll the active cell into view when a selection was made

Bug Fix (v7.2.02)

Description

[APL Grid]: Setting the xView property deselected the selection in the Grid

Bug Fix (v7.2.02)

Description

[Session]: With the pushpin enabled in the Open Objects dialog, double clicking on a name in the list could result in selecting the wrong named object. This fix reduces that from occurring by repositioning the list as the focus leaves he Open Objects dialog and graying the list to indicate it may no longer be up to date (as names may be added to or deleted from the workspace)

Bug Fix (v7.2.02)

Description

[Session]: When starting the online help with the F1 key, the help window remained on top of the APL+Win session window

Bug Fix (v7.2.02)

Description

[Session]: An extra line separator appeared in the Window menu in the session manager window

Bug Fix (v7.2.02)

Description

[Session]: The "Set Watch Points" hint for the Set Watch Points menu item did not display in the status bar

Bug Fix (v7.2.02)

Description

[APL GUI]: The title bar in a Form reappeared after the Form had been created hidden and without a title bar (caption='' and border=3)

Bug Fix (v7.2.02)

Description

[APL GUI]: When menu options behaved like radio buttons (style 5), changing the caption for the menu that was selected changed the radio button to a check mark

Bug Fix (v7.2.02)

Description

[APL GUI]: Tooltips for CommandButtons were disabled when a style 256 Combo was a child of the CommandBar

Bug Fix (v7.2.02)

Description

[Interpreter]: The execute primitive did not display correctly in ⎕DM

Bug Fix (v7.2.02)

Description

[Interpreter]: The SI stack did not properly reset when invoking the )RESET system command while in a loop executing ⎕DL, ⎕WGIVE or other callback functions

Bug Fix (v7.2.02)

Description

[Interpreter]: APL+Win terminated when the )RESET system command was executed during the execution of ⎕CMD and ⎕DL

Description

Updated the xActiveCell property to support the EnsureVisible option

Description

The new xDragCell property specifies the last cell in a selection

Description

The new XEnsureVisible method ensures that a cell is visible in APL Grid

Description

The maximum number of columns has been increased from 32000 to 2147483647

Description

Updated the XPrintMetrics method to accept a list of page numbers and return an array of row/column ranges corresponding to each page

Description

Updated the onXEditCancel and onXEditComplete events to fire when editing is cancelled or completed, respectively, in the drop-down list for a combo cell

Description

New support for selecting multiple row and column headers by clicking and dragging the mouse pointer across them. Releasing the mouse button completes the selection

Description

Changes to existing properties and events and new methods and properties, all which have been done to improve printing in the APL Grid. See the release notes for details

Description

The CodeWalker Pause menu and toolbar button are now always available (not just when the CodeWalker window is open) during function execution. The Ctrl+Shift+Break keyboard shortcut key has also been added to the CodeWalker Pause menu

Description

The APL2000 Home Page has been added to the Help menu that links to the APL2000 website

Description

This release has a major overhaul and refactoring of how tooltips work in APL GUI objects. The following bugs were fixed and features added: - Fixed bugs in Status, Selector, Page, and CommandBar where tooltipstyle settings were not taking effect - Fixed bugs in various classes that allow multiple tooltips to be displayed at the same time (such as the Tree control) - Fixed bugs that can cause balloon style tooltips to "bounce" on and off and on again when you enter a window - Removed tooltips on keyboard activity until mouse moved again - tooltipstyle property can be changed after windows are open. This allows you to have different style tooltips on different windows - tooltipenabled can now be set on ANY window or system object - Added onGetInfoTip event to Listview to request enhanced tooltip info for items - Add infotipmask property to Listview which controls which places info tips are fired - Add per item info tips to Tree control so that tooltips can be displayed for individual items similar to how this works in the Listview control - Add style 64 to Tree control (noinfotips) to allow suppressing info tips - Add onGetInfoTip event to Tree to request tooltip info for items. This event is fired for nodes unless style 64 is selected - Add infotipmask property to Tree which controls which places info tips are fired. This is the same as the "where" codes for the onGetInfoTip event for Tree - Note that subitem tips on Status bar fields are only displayed if you do not define the tooltip property for the Status control. If you do set tooltip property then it will dominate and prevent the subitem tips from showing

Description

The behavior of setting the caption property and PrintDlg, PageSetup and Setup methods was changed so that they do not automatically open the printer document if the CloseDoc method has been called

Description

An optional numeric left argument has been added to the following system functions to specify the scope at which names are interpreted: ⎕NL ⎕IDLIST ⎕NC ⎕VR ⎕CR ⎕CRL ⎕CRLPC

Improved ⎕NA (v7.2.02)

Description

When editing a ⎕NA function, the new error reported will be Cannot edit associated function

Description

New FormatMessage method on the system object to allow formatting of error codes into message strings

Description

New CloseDoc and OpenDoc methods for the Printer object that changes the way the Printer object opens. See the description on the CloseDoc and OpenDoc methods in the Windows Reference Manual for details

Description

New sessions property for the system object to detect under program control changes in the session manager editor window

Description

New ⎕VGET System Function to access variable values at local or global scope

Bug Fix (v7.0.01)

Description

In Windows Vista or Windows 2000/XP with Internet Explorer 7 installed, HTML topics weren't displayed in the popup windows in the help files

Bug Fix (v7.0.01)

Description

The ]rename user command failed to rename a function when blanks were present immediately before or after the assignment arrow in the header

Bug Fix (v7.0.01)

Description

obj_ref.⎕FX failed when the header line contained a quad-name followed by a (blank) space

Description

Support the Recycle bin for the )Drop ws command. Note that this enhancement is not supported in Microsoft Vista

Description

⎕MOM objects can be a compound name to refer to a member of a MOM Object System object

Bug Fix (v6.4.01)

Description

[Grid]: The merged cell values were not stored in the xml and content properties for the APL Grid object when the APL Grid object had two or more header rows

Bug Fix (v6.4.01)

Description

[Grid]: The APL Grid did not apply the proper formatting for cells with currency values. Refer to the description on the xFormatMode property for the APL Grid under "New xFormatMode property (APL Grid)" in the "What's New in APL+Win version 6.4" document

Bug Fix (v6.4.01)

Description

When editing a variable beginning with delta-underbar, the delta-underbar displayed as the floor primitive in ⎕WARG in the onEditStart handler

Bug Fix (v6.4.01)

Description

The six space indent in the session was not preserved when pasting text

Bug Fix (v6.4.01)

Description

ActiveX control objects didn't repaint correctly after calling thePaint method on the object

Bug Fix (v6.4.01)

Description

Changing the border property reasserted the visible attribute for the Form that resulted in some visual anomalies

Bug Fix (v6.4.01)

Description

Selective assignment on arrays of MOM references or UCS data caused APL+Win to exit

Bug Fix (v6.4.01)

Description

Workspaces containing MOM objects with functions did not copy correctly in other workspaces

Bug Fix (v6.4.01)

Description

APL+Win hung (went into infinite loop) after switching the focus to a .NET ActiveX control Note: The fix for this bug involved the use of a new extended window style for controls created on forms. Under some circumstances and depending on how the form is populated with controls, this fix may contribute to the form hanging in other ways. There have been two reported cases of this. The first one involved the minimizing of the form's window. The second one involved placing the focus on an Option button in a form containing other Option buttons and an ActiveX control If you experience a similar problem, you should suppress the fix (new behavior) with setting the following entry your APLW.INI file: [Compatibility] TrueParents=0

Description

The xPrintOptions property enables the printing of header rows and columns in  APL Grid. 

You can set this property to:

    1 for column headers,
    2 for row headers or
    3 for both column and row headers.

Description

Syntax:     Value ← ⎕WI 'xMissing' Rows Cols
    ⎕WI 'xMissing' Rows Cols Value
    Cell flag; boolean flag indicating whether cell is not loaded (empty)
    or contains a missing value;
    1 = missing;
    0 = not missing;
    Value: boolean matrix of flags (one value per cell)

The xMissing property allows you to query which cells are missing or to make cells  missing.  It specifies a set of rows and columns on the current page to be set or queried  regarding their missing state.   

Querying the xMissing property returns 1 for any cell that is considered missing  (based on the rules outlined above).  Namely this means cells that are not defined  (empty) or has an empty string value stored in them ("").  

It returns 0 for cells that  contain non- empty string values (including values for numeric cells that are not valid  numbers and would result in a conversion error).   

Setting the xMissing property clears the string content of any cells you specify as one  (1) to an empty state.  It does not touch cells you specify as zero (0).  

So you can view  this as doing a logical OR operation on the missing state of the cells. 

Description

Syntax:     Value ← ⎕WI 'xMissingValue'
    ⎕WI 'xMissingValue' Value
    Grid value; (default=0);
    Value used to denote missing numeric values;
    Zero (default) means no missing value
    Value: numeric scalar or empty string ("")

The xMissingValue property allows you to control what value is returned when you  reference a cell containing an empty string value using the xNumberxDate or xCurrency properties.  

As with the xConversionErrorValue, the xMissingValue property applies to the whole grid.  This value is also returned when you reference the xValue property for a numeric type cell that is missing.  

However, the xMissingValue is  NOT returned when you reference an empty cell with the xText property.  In that case  an empty string ("") is always returned.  

Similarly, referencing an empty text cell via the  xValue property returns an empty string (""). The xMissingValue property has a default value of zero (0) which means not defined.  

In this case the missing value is not defined and no numeric value is recognized as missing. However, you can still store missing values into cells by setting the xNumberxDate or xCurrency property with empty string values ("").

However, when  such numeric missing cells are referenced via xNumberxDatexCurrency or xValue  they return the xConversionErrorValue when xMissingValue is undefined since they  cannot be represented by a numeric value.   

However, if the xMissingValue is not defined, then a xConversionErrorValue is  returned (as before) for the cases  above that would have returned an xMissingValue

The xConversionErrorValue is never returned by the xText property nor by the xValue property when referencing text type cells. 

This means that unless you set the xMissingValue the behavior is exactly as before with the exception that you can specify empty string argument values with the xNumberxDate and xCurrency properties. 

The xMissingValue property also controls what value is recognized as the missing value when you set a numeric value in the xNumberxDatexCurrency or xValue property. 

However, when you set the xText property with a numeric value it is NOT recognized  as a missing value even if its value matches the xMissingValue setting. 

This is done for  historical reasons since numeric values stored into the xText property have always been  converted into string values representing the number.  

So a 999 is stored as a "999" text  string. Similarly, but with the opposite effect, string values such as "999" have always been accepted as an argument when setting the xNumberxDate or xCurrency  property and converted to a numeric value. 

Therefore string values whose numeric  representation matches the xMissingValue are interpreted as missing when setting the  xNumberxDate, and xCurrency properties. 

Description

This enhancement was inspired by the old behavior of the grid which returned the  conversion error value (controlled by the xConversionErrorValue property: default = ¯2147352572) when a cell containing a non-numeric value were referenced.  

For example, if a cell had been edited to contain a value such as "abc" or "" and you reference it with xNumber property, it would return the conversion error value.

Users requested that they be able to store error values back into the grid by specifying a numeric value matching the conversion error value.

For example, if the conversion  error value was 999.999 and you used the xNumber property to reference a cell containing "abc" then the value 999.999 would be returned.

They wanted to be able to set the xNumber property with 999.999 and have an error value stored back into the cell in its place.

However, since there is no way of knowing from the generic conversion error value what string had actually caused conversion error it is impossible to replace that string back into the grid.

For this reason it did not make sense to use the conversion error value as a signal for storing some error marker back into the grid. Instead we introduced the concept of missing values and introduced the xMissingValue and xMissing properties.

A cell is considered to have a missing value when either of the following conditions is true:

  1. The cell is undefined (no properties ever set for the cell or it has been deleted)
  2. The cell contains an empty string value (i.e., the xText property would return  an empty string value for that cell).
A cell can get into the second missing state (defined with an empty string value) in several ways:

  1. Set the xText property with an empty string value ("")
  2. Set the xNumberxDate, or xCurrency property with an empty string value  ('')
    Note that this used to give an error. However, trying to store a string that is not  empty but contains all blanks is not considered a missing value and still causes an error.
  3. Set the xNumberxDate, or xCurrency property with a numeric value that  matches the xMissingValue state of the grid.
  4. Paste an empty string value into a cell from the clipboard
  5. Edit cell value and store an empty string into cell

Description

The xFormatMode property is used to control how currency values are formatted for display in cells in the APL Grid.

This is the helpstring for the xFormatMode property:

xFormatMode property:
Value ← ⎕WI 'xFormatMode' Rows Cols
⎕WI 'xFormatMode' Rows Cols Value
Cell code; default ¯1;
controls xLocale-based formatting when xFormat not specified
Value: matrix of codes:
    ¯1 = inherit;
     0 = disable
     1 = enable for currency
     2 = enable for currency (with user overrides)

The value 1 gives formatting according to international locale standards.

The value 2 gives formatting that may have been customized by the user on their computer via the  regional settings.

Description

In version 5.0 of APL Grid, the xNumber property was updated to store full precision  numbers without being constrained by limits of text representation.  But this precision  was not represented in XML data as expected.

This was addressed by adding the hex attribute to the value element that stores the numeric value as a hex string if it differs from the formatted value.

This is in addition  to the raw attribute when the formatted representation and/or raw attribute don't accurately represent the full precision of the data.

For example:

      ⎕wself←'form.grid'
      ⎕wi 'xValue' 1 1
(1.23456789012345)
      ⎕wi 'xml'
...   <row index="1">    <cell row="1" col="1">    <value hex="3ff3c0ca428c59e1" type="number">1.23456789012345</value>    </cell>       ...

Description

The Fetch Objects and Open Objects dialogs now have a resize grip in the lower right corner of the window.

Description

In this version, the Recent Lines dialog box is non-modal, resizable and can be made to remain on top (via push-pin).

Figure 9 shows the Recent Lines dialog.


Figure 9 Recent Lines dialog

Description

Setting ⎕WRES[1] set to ¯1 suppresses this message.

  This also restores the previous cursor (rather than leaving the hourglass showing) when editing doesn't restart.   

Description

W_Reset is a built-in function that resets the WCALL sub-system.

This is used to reset the WCALL definition bindings so they can be reloaded without restarting APL+Win.

Description

W_Def is used in the same way as W_Ini except that it lets you create WCALL definitions and other strings in your application that are stored into a local cache (memory) rather than written into the INI file.

These strings should also execute faster than W_Ini because no INI file reading or writing is involved.

This permits setting WCALL definitions in a running application that might have a read-only INI file.

Note: These definitions are cleared with W_Reset.
The order of reading to access strings for WCALL used to be: Look in INI and if not found then look in ADF (unless the [Config]IniFirst=1 is defined in INI file in which case ADF is accessed before INI).

The order of reading to access strings for WCALL always checks the W_Def cache first and then checks the INI and ADF as before.

You can get a list of all strings in a section by calling:

     ⎕WCALL 'W_Def' '[SectionName]'

You can get a list of all strings in all sections by calling:

     ⎕WCALL 'W_Def' '[]'

When you reference a string value with W_Ini it has historically never differentiated between strings defined in the INI file versus those defined in ADF file.

It returned the value found in either INI or ADF file.

That same pattern is followed and referencing a string via W_Ini returns the first definition found in W_Def-cache, INI, or ADF.

Description

The purpose of this property is to control the behavior of a tooltip set for a control on a Form. The tooltipstyle property must be set before creating any controls on a  Form or MDIForm or else the setting might be ignored.

The default value for this property is 0.

The settings currently available are:

    1 = Always display tooltip when mouse is over the control regardless if the form is  not activate.        
    2 = Suppress special handling of ampersands (&) in the tooltip property; without  this value, a single ampersand will appear as an underscore in the tooltip.       
    64 = Display tooltip in a balloon style.

Note: this value is experimental in this  release.

Known issues:
1) The balloon style tooltip on occasion flicker where the  balloon displays, hides, and reappears; 
2) the Page doesn't respect this style value. 

Bug Fix (v6.2.02)

Description

The Tree control didn't display its list when deleting multiple nodes with the DeleteNodes method where the nodes were in ascending order and contained nodes for a parent node and it's child node(s). This bug also caused the result from the DeleteNodes method to be incorrect

Bug Fix (v6.2.02)

Description

APL gave a LENGTH ERROR when the Draw method was used to get the size of an empty string. It now returns 0 0

Bug Fix (v6.2.02)

Description

APL would abend with an APL+Win assertion failure in line 303 of APLstate.cpp

Description

When printing an APL session or an Edit session from the Session Manager, you can  now specify the margins to be used on the printed page. The printer margins can be specified in the Editor Options dialog.

The margins can be specified in inches (default),  points or millimeters by following the number with the desired units; inmm, and pt.

The default margins are 0.75"0.5"0.75" and 0.5" for LeftRightTop and Bottom, respectively.

Figure 8 shows the Printer Margins settings in the Editor Options dialog.


Figure 8 Editor Options dialog

Description

This command locates expressions that generate implicit output, but gives slightly  different behavior. The )OUTPUT ERROR state may produce IMPLICIT OUTPUT  errors on some implicit output that is not visible.

The )OUTPUT STRICT command  produces errors only when visible implicit output is generated.  In addition, this state  produces the IMPLICIT OUTPUT error message after the output has been generated,  so the effect of the output can be seen.

Note: All previous )OUTPUT command behavior remains unchanged.

Description

This works just like the ordinary ⎕FX except that it defines the function inside the  referenced object.

For example: 
      obj_ref← ⎕MOM 'DLB' 'DEB' 'DTB' 'kind'
      obj_ref.⎕NL 2 3
DEB
DLB
DTB
      obj_ref.⎕CR 'DLB'
z←DLB x
z←(∨/x≠' ')\x
      obj_ref.⎕FX ⊃'z← DAB x' 'z←(z≠" ")/x'
DAB
      obj_ref.⎕NL 3
DAB
DEB
DLB
DTB

Description

Delocalization of ⎕WSELF to a non-existent name now sets ⎕WSELF to an empty vector  instead of producing an error message.

Description

The Zip Class is an object programming model that provides facility for building  archives of files and extracting files from those archives.

The Zip class provides an interface to the Info-ZIP dynamic load libraries zip32.dll and unzip32static.dll.

These  DLLs must be in the same directory as your APL interpreter. The Zip class is  manipulated with ⎕WI.

Description

Unique is a monadic function that selects the unique elements of a vector.

Its result is a  compression of its argument with all but the first instance of each distinct element  removed.  Unique is mapped to the ALT+V key.

For example:
      ∪(123 'abc' 'def') ('a b c') ('abc') (1 2 3) ('a b c')
123 abc def  a b c abc  1 2 3

Bug Fix (v6.0.10)

Description

The tooltip property did not fire When the mouse pointer was positioned over the Media control

Bug Fix (v6.0.10)

Description

There was a problem When searching backwards (up) on APL Tokens resulting in incorrect finds in the session manager window

Bug Fix (v6.0.10)

Description

There was a problem where the red syntax error flag in the session manager window failed to clear itself on a line commented with Ctrl+/

Bug Fix (v6.0.10)

Description

There was a problem involving exactly three command bar buttons on a command bar, that when you right clicked and dragged the command bar gripper causing APL to crash

Bug Fix (v6.0.10)

Description

APL was unresponsive when attempting to define or run function with a :REPEAT loop with :LEAVE as the only executed statment

Bug Fix (v6.0.10)

Description

The onMouseUp event fired for a floating CommandBar object when it shouldn't have

Bug Fix (v6.0.10)

Description

When undocking then dragging the CommandBar object, you received two onMove events instead of continuous onMove events

Bug Fix (v6.0.10)

Description

When you had three command bar buttons on a command bar, and you right clicked and dragged the gripper, APL would exit

Bug Fix (v6.0.10)

Description

The correct object is now highlighted in the Open Objects dialog

Bug Fix (v6.0.10)

Description

The "help" and "helpcontext" properties are now saved in "def" object for the CommandButton class

Bug Fix (v6.0.10)

Description

MIX primitive (up-arrow in evlevel 1) now works for post-heterogenous data

Bug Fix (v6.0.10)

Description

If you create a Frame nested within a Frame, ghosts are left when its children are moved. This only occurs of the initial paint event has not yet been handled for the inner Frame when the children are shown

Bug Fix (v6.0.10)

Description

[Grid]: Invoking the XRedraw method did not redraw all the cells in a row when you specified a zero for the starting row; only the cell in the first row and the active cell were redrawn. A similar thing occurred when you specified a zero for the starting column

Bug Fix (v6.0.10)

Description

[Grid]: If you resized the header rows or cols to zero, you could not again grab the resize handles to resize them

Bug Fix (v6.0.10)

Description

[Grid]: Invoking the XFitCol method did not correctly resize the column when the Grid was created and sized in separate commands while the Form was hidden

Bug Fix (v6.0.10)

Description

[Grid]: The XFitCol method failed to resize the leftmost of the header columns when the xHeadCols property was greater than 1

Bug Fix (v6.0.10)

Description

[Grid]: The dropdown style cells didn't function properly with respect to several keys and mouse events: 1. Tab and Shift-Tab did not move when the focus is on cell 2. F2 did not start edit mode (does not drop down list) 3. SPACE key did not select blank row of sheet 4. DOUBLE CLICK on cell did not drop it down. You had to click the dropdown arrow 5. Fixed bug that caused RETURN key to sometimes open and close the dropdown list 6. For xCellTypeEx = 1 (hides drop button when not active) clicking where the button will be (but isn't yet on an inactive cell) caused opening of cell. This was changed so that clicking in the hidden buttom area does not open list; you first must click to make the cell active so that its button is showing (or you can move their via keyboard) 7. When you clicked to open a list near bottom of grid, the list overlayed the cell. It needed to be pushed up higher to avoid mouse capture selection last item when you just clicked

Bug Fix (v6.0.10)

Description

[Grid]: A spinner-like object appeard in place of the normal dropdown box in combo style cell in the APL Grid

Bug Fix (v6.0.10)

Description

[Grid]: The BorderStyle property values 1 and 2 drew segmented lines if gridlines were enabled

Bug Fix (v6.0.10)

Description

[Grid]: The onXColSized and onXRowSizing event handlers did not fire for header column -1. Also, the onXRowSized event handler fired continuously as row header -1 was resized, which was not the correct behavior

Bug Fix (v6.0.10)

Description

[Grid]: The value 1.123456789 incorrectly displayed as 1.123457000% with an xFormat string of "0.000000000'%'" (nine decimal places)

Bug Fix (v6.0.10)

Description

[Grid]: Keyboard and mouse events did not fire on protected cells

Bug Fix (v6.0.10)

Description

[Grid]: The events onXCellClick and onXCellMouseDown did not fire for protected cells

Description

Allow protected cell or near by cells to be deleted. This is done with new values in the protect property

Description

Allow keyboard and mouse events to fire on protected cells in the Grid. This is done via new values in the protect property

Description

Enhanced Grid printing including: 1. Add low-level interface so that ActiveX control can call WSEngine interface that is exposed via the OLE ClientSite 2. Add "Printer" property where you specify the NAME of ⎕WI printer object where you want to print 3. Add "pixelmargin" property (read-only) to Printer class to allow query of margin values in pixels

Description

Changed the xNumber property to store FULL PRECISION without being constrained by limits of text representation. Internally the APLGrid was storing numbers as formatted strings and discarding their original value. Be aware that now APLgrid stores numbers as numbers (double precision floats). If you edit a numeric cell expect to lose that precision because the value is converted from the number entered into text format. But there isn't anything I can imagine doing about this

Description

Enhanced performance when referencing XML properties. This is facilitated by the new XMLMode property

Description

Setting the edge and border properties on a control no longer causes it to be recreated (closed and reopened). This avoids some undesirable side effects. For example, the value of the xConformingResultShape property for the APL Grid object was reset to 0 when previously 1

Description

Changed the behavior of the Colossal files functions ⎕CFCREATE, ⎕CFTIE, ⎕CFSTIE, ⎕CFRENAME and ⎕CFDUP regarding the file name case. All name comparisons for purposes of checking the tied status are now case insensitive. As a result, slippery ties will now work for case mis-matched spellings. You can no longer tie a file multiple times by supplying case mis-matched names. Renaming to a different case will be treated as a rename to the same name. It will have no effect, even on ⎕CFNAMES

Description

  1. Scatter-point indexing has been added to allow you to reach cells in random  locations (non rectangular and non contiguous) in a single ⎕WI call rather than  having to iterate.  
    Rather than specifying a vector of indexes in the Rows and Columns arguments you instead specify a two-column matrix in the first argument  (Rows) and a "missing value" second argument (Columns).  
    This denotes a request for indexing using a scattered rather than rectangular set of cells in the grid.
    This also works in three dimensions for the xImage property (but in that case you specify a three-column matrix of indexes in the first (Places) argument and use a "missing value" in the 2nd and 3rd argument).  
    Scatter-point indexing works for both setting and referencing of properties.
  2. Scatter-point indexing is especially useful in combination with the new xChanges property. It returns a two-column matrix of cell indexes for all cells that have changed due to user input.  
    You can therefore easily find all changed cells when saving the grid and you only have to reference their values (rather than checking the values of all cells).
    You can clear the changed flag of all cells by setting xChanges to an empty numeric matrix or vector. This works nicely if the user does a Save of changes.
    You can clear the changes flags and then continue allowing user to browse and edit the cells.
  3. Grid virtualization allows very large grid sizes (in excess of 10 million cells) to be  handled efficiently.  If works with two new properties (xVirtualMode and  xVirtualParts) and one new event (onVirtualLoad).  
    The event is fired  whenever cell values are needed for display or for printing, clipboard, or XML  operations.  But for cells that are not accessed their values never need to be loaded.
  4. Row defaults have been added. You have always been able to set default values  for the grid page or for specific column.  In this release Row defaults have been added so  that you can specify attributes for all cells in a row.  
    One use for this is to highlight exceptional rows with a change in background color or other attribute.
  5. There is support for the Windows clipboard cutcopy and paste commands.
  6. There is support for Replication Mode which behaves similar to Microsoft Excel's Fill Mode where you drag on the lower-right corner of the selection and can extend it to fill elements.
    We do not provide a default action but instead fire an event (onReplEnd) that you can handle to perform your desired replication action.
  7. Printing has been substantially improved and simplified. You can now make a named association with an APL printer object and the grid will automatically handle printing of all pages.
  8. Printing now supports better scaling options including a xPrintZoom factor that lets you specify relative scaling between the screen and printer sizes (in the past the default was one logical inch on screen was mapped to one logical inch on printer  and there was no override).
  9. Print preview has been refined and properly documented.
  10. During potentially long running operations in large virtual grids (such as printing, cut/copy/paste of huge blocks of cells, and production of XML output) progress tracking events are fired that make it trivial to display progress gauges  including cancel button.
  11. Numeric values stored into cells programmatically sometimes lost precision due to rounding errors.  That's because they were stored internally in formatted text format rather than as numbers.  
    This has been changed so that if you set a numeric value into a cell that will be exactly the value you get back when referencing the cell unless the user edits the cell value (in which case we have to evaluate the user's input which is subject to rounding errors).
  12. The xProtect property has been enhanced to allow more options for controlling how much protection applies to a cell. You can protect a cell but allow mouse and keyboard events to be fired.  
    And you can allow a protected cell to be  part of a selection rectangle when the Delete key is pushed without it preventing other cells from being cleared.

Description

The filter option in the Open and Fetch dialogs controls the contents of the function and variable list.

The filter is in a drop-down at the bottom of the dialog.

The filtering is case insensitive and has a very simple syntax.

Asterisks may be used to denote zero or more characters.

The filter drop-down stores new filters (up to eight) when objects are opened from the dialog.

The drop-down contents are not saved across sessions.

Figures 1 and 2 illustrate filter use.

   
Figure 1 - Empty filter box, all functions listed

Figure 2 - List functions starting with Get

Description

Scrolling speed control has been added to the system for highlighted scrolling.

When using the mouse to highlight text, the scrolling speed is determined by the distance of the mouse from the client area of the session.

The further the mouse is from the client area, the faster the text is scrolled.

The rate of change is inversely dependant on the distance. So slow scrolling changes quickly as the mouse is moved and fast scrolling changes less quickly.

If the mouse is moved all the way to the top or bottom of the screen, control of the scroll speed is released and scrolling speed proceeds at its maximum rate.

Description

This control (AplFileShExt.dll), when registered, adds the Component Summary page to the Properties sheet obtained by selecting Properties from the context menu for a component file (.sf and .cf) in the Windows Explorer.
Figures 4 and 5 illustrates this  use.

   
Figure 4 Component Summary page of an original

Figure 5 Component Summary page of a colossal component file with data in comp 0

Description

New arguments were added to ⎕DR to allow you to compress and expand data in APL arrays. This facility is generally referred to as deflation and inflation.  For most data the  deflated version will occupy less space than the original.

Data may be saved in deflated format in files, or it may be transmitted over a network. It may later be inflated, which  will reconstruct the original data.

This feature provides both a means of conserving space, either in the workspace, or on file, and a way of reducing data transmission time over a network. Deflate and inflate provide lossless compression.

Description

The ⎕DL (delay execution) function now utilizes less CPU when executed.  There are no  changes required to your application.

Figures  6 and 7 illustrates this use.

   
Figure 6 - CPU Usage with '⎕DL 10' in v5.2

Figure 7 - CPU Usage with '⎕DL 10' in v6.0

Description

The ⎕NTIE⎕NTIE⎕FTIE⎕FTIE and ⎕CFTIE functions allow you to reference the file tie state information for a component file.  You reference the file tie state by  calling a function monadically with the tie number as the right argument.

The result is  a two-element integer vector indicating the file tie state.  The value of the first element is  the same as the open mode arguments to the dyadic version of ⎕ntie and indicates  what the current open mode of the file is.

The open mode values are sums of the  following:

Access Requested
    0 = read access
    1 = write access
    2 = read and write access

Access granted to other users
    16 = no access allowed (exclusive)
    32 = read access allowed, write access denied
    48 = write access allowed, read access denied
    64 = read and write access allowed

The second element indicates if the tie was share tie or an exclusive tie.
    0 = share tie
    1 = exclusive tie   

Description

  1. The new ⎕UCS function was added to create Unicode character arrays.
  2. The ⎕TYPE and ⎕DR functions now accept Unicode character arrays.
  3. The following structural primitives currently accept Unicode character arrays as  arguments:

    join and ravel (,⍪) 
    match (≡)
    reshape and shape (⍴)
    pick (⊃)
    enclose (⊂)
    first (↑)

  4. The new unicodebstr property allows for the passing of Unicode character  arrays to and from BSTR string arguments of ActiveX controls and objects.

Description

Code that generates unintended implicit output has always been difficult to find in an APL application. The )OUTPUT command helps to manage implicit output.

This command allows the programmer to turn implicit output off or on. It also provides a means for locating code which performs implicit output.

The command sets a three state switch in the active workspace. This switch is workspace relative. It is saved with the workspace on a )SAVE command and loaded with the workspace on a )LOAD command.

The )CLEAR command resets )OUTPUT to the default value.

Note: Implicit output states only apply to expressions executed within a function or an  event handler. They do not apply to immediate execution statements.

Running )OUTPUT with no argument prints the current implicit output state.

The three commands arguments (ON, OFF and ERROR) print the previous implicit output state.

The three states are set by the following arguments to the system command:

    )OUTPUT ON
        This is the default state.  Implicit output is generated by any APL expression that does  not assign its result.

    )OUTPUT OFF
        In this state Implicit output is not generated.

    )OUTPUT ERROR
        This state is used to locate expressions that generate implicit output.
        In this state execution of any expression that would generate implicit output in the default state causes an 'IMPLICIT OUTPUT ERROR'.  
        An expression beginning with 0 0⍴ by definition generates no output and so does not cause an 'IMPLICIT OUTPUT ERROR'.   

Description

The Try-Catch exception handling extends the APL+Win control structure family to address static exception handling.

It was designed to be compatible with and interact with the existing ⎕ELX handlers and should help facilitate clearer and more reliable code.

Syntax:
    :TRY
        Statements to try
    :CATCHIF first condition expression
        Statements to handle exceptions satisfying the first condition 
    :CATCHIF second condition expression
        Statements to handle exceptions satisfying the second condition
    :CATCHALL
        Statements to handle all other exceptions
    :ENDTRY

The structure always begins with a :TRY clause and ends with a :ENDTRY statement.

As with other control structures, the keywords are case insensitive and :END may be substituted for :ENDTRY.

There must be at least one :CATCHIF or :CATCHALL clause.

There may be no more  than one :CATCHALL clause, which must be the last.

The :CATCHIF statement consists of its keyword followed by an expression that yields 1 or 0.

The other control statements consist of only a keyword.

Each control statement except :ENDTRY is followed by a block of APL statements (which may be empty).

These blocks may contain additional try-catch and other control structures. They must be properly nested.

Description

The [Session]Logging System Info entry in APLW.INI stores additional information in the log file such as the contents of ⎕sysver, the executable's full path and file names, and its modification time and the user and computer names

Including any of the following keywords, separated by commas will display the corresponding information at the beginning of the session:

    sysverthe contents of ⎕sysver
    exethe executable's full path and file names, and its modification time
    userthe user and computer names

With [Session] Logging System Info=sysver,exe,user set in APLW.INI, Figure 3 illustrates this use.


Figure 3 Session logging info

Description

The session manager editor has new events on the system object ('#') that supports dynamic loading of functions and variables when you edit them.

The onEditLoad event fires when you start an edit session or fetch an object into the  edit session.
    ⎕WARG contains the name of the object.

The onEditStart event fires when an edit session is about to start.
    This event fires before onEditLoad and gives you the opportunity to affect the way the edit session starts with setting ⎕WARG and ⎕WRES.

The onEditNL event fires when the functions and variables dialog box is being initialized. 
    You use ⎕WARG and ⎕WRES to control the contents of the dialog box.

The onEditSaved event fires after you save the contents of the edit session.
    ⎕WARG  contains the name of the object.

The onEditEnd event fires after exiting the edit session.
    ⎕WARG contains the name of the object.

Description

Setting the dirty property to 1 will force the Printer object to print a page even when it detects that it has not been printed to or drawn on.

Description

The MOM object system extends APL with simple basic facilities for object based programming, a predominant design and structuring paradigm for modern programming languages.

MOM objects are typeless, classless, and inherently polymorphic.

A MOM object system is a simple container enclosing a set of named APL functions and  variables, where each Mom object is distinct from every other MOM object.  MOM objects themselves are neither named nor directly referred to in programs.

Syntactically, MOM object members are accessed as objref.member where objref is a  variable holding an object reference and member is the name of the member within the  object.

For example:

      array←⍳10
      mom1←⎕mom 'array' ''
      mom1.array
1 2 3 4 5 6 7 8 9 10
  

Bug Fix (v5.2.10)

Description

Fixed the problem with retrieving data from the Listview control with the 'GetCell' method using the disclose operator causing an error in APL

Bug Fix (v5.2.10)

Description

Fixed elements 6 and 7 in WSAStartup to return correct values

Bug Fix (v5.2.10)

Description

Fixed the problem where pressing Shift-Esc in a style 4 Edit or RichEdit control closing the Form object

Bug Fix (v5.2.10)

Description

Fixed the prototype for empty links property

Bug Fix (v5.2.10)

Description

Fixed the problem with the focus leaving APL+Win when starting an APL+Win ActiveX Server

Bug Fix (v5.2.10)

Description

Fixed the problem with deleting the APL+Win ActiveX Server while visible

Bug Fix (v5.2.10)

Description

Fixed the problem with the style property value 524288 not working for the Edit control

Bug Fix (v5.2.10)

Description

Fixed the problem with callback fields not working for the DateTime control for the event handlers onFormatQuery, nFormatString, and onUserKeyDown in Windows 2000 and XP

Bug Fix (v5.2.10)

Description

Fixed the problem with reduction along an empty axis not detecting a LIMIT ERROR and WS FULL causing APL+Win to crash

Bug Fix (v5.2.10)

Description

Fixed the problem with APL+Win 5.2 not starting in Windows 98

Description

Updated Header_InsertItem, Header_GetItem, Header_SetItem API definitions in the [Call] section and HD_NOTIFY in the [Type] section of the ADF file to reference the HDITEM type, which supports Microsoft Internet Explorer 3.0 and later

Description

Added GetForeGroundWindow and AttachThreadInput API definitions to ADF file

Description

Reduced the time it takes APL+Win to shutdown with the Saved Settings on Exit option enabled

Bug Fix (v5.2.08)

Description

Fixed the problem that caused the Popup menu to not display when the Menu was a child of a hidden control

Bug Fix (v5.2.08)

Description

Fixed the problem that caused APL+Win to abort when invoking Code Walker on a function with a line containing more than 16k characters

Bug Fix (v5.2.08)

Description

Fixed translation of European characters (such as e acute) in WS LOAD/SAVE output

Bug Fix (v5.2.08)

Description

Fixed the [Config]ApplicationName INI setting that sets the the caption for the session manager window

Bug Fix (v5.2.08)

Description

Fixed the numeric editor to allow for scrolling vertically when selecting data or pressing the up and down arrows in the vertical scroll bar area

Bug Fix (v5.2.08)

Description

Fixed the problem that caused the interpreter to hang when a WS FULL was detecting during the ⎕FREAD operation

Description

Updated Online Manuals: APLGUI.CHM, APLNI.CHM and SESSMAN.CHM

Description

Increased the classic component file tie quota from 200 to 400

Description

Removed the "Unable to reserve Virtual address space for a xxxx megabyte workspace. Try again approx 10% smaller?" message that appeared when starting APL+Win on machines with 2 GB or more of memory. Instead, the interpreter automatically attempts to allocate a workspace size that is 10% smaller

Description

Changed the default setting for [Config]EnableDDE INI setting to 0

Description

Modified ⎕AI to extend the elapsed time beyond 49.7 days

Description

Added [Config]CoMgrDLL INI setting to name the DLL that is loaded instead of AplwCo.dll, the default DLL

Description

Added [Compatibility]ComboStyle256 INI setting to allow the Combo object to behave the same as it was under versions prior to 4.0. When set to 1, the style value 256 is implicitly set for any non-zero style Combo object

Bug Fix (v5.0.11)

Description

The RichEdit control disappeared when opened with text larger than the default limit

Bug Fix (v5.0.11)

Description

The result for the selection property for a RichEdit control with empty lines was wrong for some translate property values

Bug Fix (v5.0.11)

Description

The WGetOpenLongFileName function in WINDOWS.W3 workspace did not handle multi-selection properly

Bug Fix (v5.0.11)

Description

The UDC_fn example in the online documentation (APLGUI.HLP) for 'Creating a New User-Defined Class' was not correct

Bug Fix (v5.0.11)

Description

The STORAGE user command (in the UCMDS.SF) was not correctly defined

Bug Fix (v5.0.11)

Description

The last parameter in the Windows function ListView_GetItemText was not correctly defined in APLWADF.INI and APLW.ADF

Bug Fix (v5.0.11)

Description

The CLIPPaste function in the RELxx.W3 and WINDOWS.W3 workspaces didn't correctly paste the APL symbols

Bug Fix (v5.0.11)

Description

The function EZWC in the WSCOMP.W3 workspace gave a FILE ARGUMENT ERROR error message when comparing workspaces starting the year 2002

Bug Fix (v5.0.11)

Description

The InsertNodes method returned a result in immediate execution but not under program control

Bug Fix (v5.0.11)

Description

There was an error in the example under "Relative Naming" in the APL+Win Windows Interface online help (APLGUI.HLP): #wi ':.events' should've read ':..events'

Bug Fix (v5.0.11)

Description

The ]FCOPY and ]FERASE user commmands weren't checking for extended file tie numbers

Bug Fix (v5.0.11)

Description

The Popup method did not appear in the list of CommandButton methods in the APL+Win Windows Interface online help (APLGUI.HLP)

Bug Fix (v5.0.11)

Description

The APL+Win Windows Interface online help (APLPLANG.HLP) erroneously contained references to ⎕XNTIE

Bug Fix (v5.0.11)

Description

The Find and Replace programs didn't find the search name when the name immediately followed the colon in the label; i.e., no space between the name from the label

Bug Fix (v5.0.11)

Description

The style property value for an MDIForm wasn't saved in the make function or the def variable

Bug Fix (v5.0.11)

Description

In Windows 9x, there was a problem where the same tied native file had different file tie numbers

Bug Fix (v5.0.11)

Description

There was a problem in the display of the ⎕NI method, InUse. The "U" in InUse was a lowercase u instead of an uppercase U

Bug Fix (v5.0.11)

Description

⎕LIB and ⎕FLIB erroneously returned the LIBRARY NOT FOUND error message when the path specified is the name of a shared network drive only

Description

⎕PCOPY and ⎕COPY of runtime workspaces are supported in runtime interpreter

Description

Support for Universal Naming Conventions (UNC) in ⎕CHDIR. Refer to the documentation for the syntax

Description

The APLW.ADF definition for the function "VerQueryValue" was changed from "B(>C,*C,>C,>U)" to "B(>C,*C,>C,>U) LIB VERSION ALIAS VerQueryValueA"

Bug Fix (v4.0.03)

Description

When running multiple instances of APL+Win in a batch mode or having one instance launch a second instance, the earlier instance(s) did not terminate until the latter ones terminated

Bug Fix (v4.0.03)

Description

Setting the second element for a style 1 Combo control did not correctly define the number of lines that are visible in the list portion of the control

Bug Fix (v4.0.03)

Description

The Listview's onColResize event handler did not fire on machines with Internet Explorer greater than version 4

Bug Fix (v4.0.03)

Description

⎕WCALL did not correctly handle passing floating point arrays to and from DLLs

Bug Fix (v4.0.03)

Description

Tooltips did not display for a CommandButton in a floating CommandBar after having been docked

Bug Fix (v4.0.03)

Description

The tooltip displayed for a Button (not CommandButton) that was a child of the CommandBar while the CommandBar was docked but not when the CommandBar was floating

Bug Fix (v4.0.03)

Description

The Wmsg function, which calls the MessageBox API, in the Windows workspace erroneously stated that the window style value 32768 was supported. This was not correct per Microsoft's knowledgebase article Q87341

Bug Fix (v4.0.03)

Description

]APLLIB user command did not correctly list workspaces and APL component files with lower case file extensions (.sf and .w3)

Bug Fix (v4.0.03)

Description

]LIB user command did not correctly list long file names

Bug Fix (v4.0.03)

Description

]UNDIAM user command did not support double quotes as character constant delimiters

Bug Fix (v4.0.03)

Description

]ORDLOC user command did not correctly handle local variable names ending in numbers

Bug Fix (v4.0.03)

Description

]XREF user command did not support control structures, double quotes, and multiple and selective assignments

Bug Fix (v4.0.03)

Description

The Library definition dialog was too restrictive when checking the path entered for a library. Specifically, it didn't allow paths containing a quote

Bug Fix (v4.0.03)

Description

There was a problem with the Draw method and a negative height scale value

Bug Fix (v4.0.03)

Description

There was a problem with the tagging anchor position after cursor key movement

Bug Fix (v4.0.03)

Description

When pasting a line longer than the buffer, the session manager window hung

Bug Fix (v4.0.03)

Description

The drag-and-drop events (onDragEnter, onDragOver, etc.) did not adjust the cursor position reported in ⎕warg for the virtual client area

Bug Fix (v4.0.03)

Description

The HitTest method on the Selector scaled the argument coordinates correctly based on the scale property, but did not adjust for the virtual client area. The virtual client area did not include the tabs at the top (or side)

Bug Fix (v4.0.03)

Description

The ]control user command was removed from the system

Bug Fix (v4.0.03)

Description

Dropping a workspace from the Drop dialog failed was not functioning

Bug Fix (v4.0.03)

Description

If you highlight some lines in the function editor, then did a shift-tab to outdent them to the left, then did a Ctrl+Q to quit, you didn't get prompted to save the changes

Bug Fix (v4.0.03)

Description

The user commands, ]FLIB and ]WSLIB, returned an empty result, when the folder (library) specified had a file (workspace) whose name was longer than 11 characters

Bug Fix (v4.0.03)

Description

Undoing a paste command with text containing spaces was not handled correctly in the session manager

Bug Fix (v4.0.03)

Description

The description for ⎕XNNUMS in APLGUI.HLP had a reference to ⎕XNUNTIE which doesn't exist

Bug Fix (v4.0.03)

Description

When using the Add method in PowerPoint 2000 to add a custom property to a presentation object, APL+Win gave LENGTH ERROR: Wrong Number of Arguments

Bug Fix (v4.0.03)

Description

A slicing transpose yielded an invalid heterogeneous because the result wasn't correctly demoted

Bug Fix (v4.0.03)

Description

There was a difference between creating an ActiveX object using "Create" and redirection. Redirection created a duplicate of the original object while Create created a new object

Bug Fix (v4.0.03)

Description

For OCXs that exposed a "color" property of type "OLE_COLOR", when Queried, you would get the error: ⎕WI ERROR: 80020008 Bad variable type

Bug Fix (v4.0.03)

Description

An INDEX ERROR changed an array's datatype, prototype, and depth

Bug Fix (v4.0.03)

Description

There was code in the Wtree_ImageFile function that built an unused tie number while looking only at ⎕nnums, rather than at ⎕nnums and ⎕xnnums

Bug Fix (v4.0.03)

Description

A single ampersand (&) appearing in the valuetip was treated as an accelerator character and underlined the character immediately following the ampersand

Bug Fix (v4.0.03)

Description

With Internet Explorer 5 or later, if while the Popup window is open you selected a different node in a Tree, the focus remained on the node where the Popup window appeared

Bug Fix (v4.0.03)

Description

The values set by ]USET were forced to uppercase

Bug Fix (v4.0.03)

Description

When you set the style values for a CommandBar to 32, 128 and 256, APL reported the error: ⎕WI ATTRIBUTE ERROR: Invalid "style" attribute specified

Bug Fix (v4.0.03)

Description

The prototype for an empty nested vector was not preserved when assigned an empty scalar

Bug Fix (v4.0.03)

Description

In Windows 2000, querying the list property for a Tree object returned the pound sign (#) as ì (an accented i) when set to 'symbol'

Bug Fix (v4.0.03)

Description

In ]WSVIEW, APL reported LENGTH ERROR when choosing the File\Save As... menu

Bug Fix (v4.0.03)

Description

When you changed the size of the font for a Status object, the control did not correctly resize (the width) the pane

Bug Fix (v4.0.03)

Description

References to ⎕XCHDIR and ⎕XLIBD in the discussion of ⎕xntie were found in the LANG03.DOC and APLPLANG.HLP

Bug Fix (v4.0.03)

Description

The CTRL+T shortcut that toggles between the current edit window and the session manager window was not listed under "Toolbars and Keyboard Shortcuts" in Session Manager help (SESSMGR.HLP)

Bug Fix (v4.0.03)

Description

The find primitive was not described in the Language (APLPLANG) help file

Bug Fix (v3.6.09)

Description

In APLGUI.HLP, the prefix for class Media was missing from its description

Bug Fix (v3.6.09)

Description

In APLGUI.HLP, the 'width' property for CommandButton objects was incorrectly documented as 'pixel'

Bug Fix (v3.6.09)

Description

In APLGUI.HLP, the ActiveX array properties indexing example has been corrected

Bug Fix (v3.6.09)

Description

The ]NREAD user command did not assign the file contents to {delta_} RESULT

Bug Fix (v3.6.09)

Description

APL+Win did not handle the case when invoking the remote option from the ]WSE user command with APL+Win unregistered as a COM server

Bug Fix (v3.6.09)

Description

The ]DLL /list user command gave the error message: ⎕WCALL CONVERSION ERROR: LENGTH ERROR

Bug Fix (v3.6.09)

Description

The WChooseColor function in the WINDOWS workspace did not initialize the custom color boxes correctly

Bug Fix (v3.6.09)

Description

The MFRESOLUTION function in the MFFNS workspace was using the incorrect constant, .001

Bug Fix (v3.6.09)

Description

APL+Win improperly utilized 100% of the CPU when invoking the Wait method on an APL GUI Form

Bug Fix (v3.6.09)

Description

APL+Win did not handle the case when pressing Alt+any letter in the Formula One grid object when sized so that the grid's vertical scroll bar did not overlap any cells in the grid control and the focus in the grid

Bug Fix (v3.6.09)

Description

APL+Win did not handle the case when reading (⎕NREAD) a native file as 2-byte integer (type 163)

Bug Fix (v3.6.09)

Description

APL+Win did not handle the case when executing the SortChildren method with the recurse option on a Tree node with no children

Bug Fix (v3.6.09)

Description

In APLGUI.HLP, the link for "Label event handlers" displayed the "List Event-Handler properties"

Bug Fix (v3.6.09)

Description

When you tied (⎕FTIE) a component file in a directory where the path was more than 63 characters in length, APL gave the error message: FILE ARGUMENT ERROR

Bug Fix (v3.6.09)

Description

The Status (bar) object did not receive the paint notification

Bug Fix (v3.6.09)

Description

Setting the highlightdrop or the imagelist (only checkboxes style) or turning the checkboxes style on and setting or referencing any of the properties with "highlight" in their names, in the dragover event during a drag-n-drop operation on an empty tree, APL gave the error: ⎕WI ARUMENT ERROR: Duplicate item identifier "node"

Bug Fix (v3.6.09)

Description

Outer product with a scalar primitive function gave incorrect results while allocating the result the interpreter was performing a workspace compaction

Bug Fix (v3.6.09)

Description

Text scrolled more slowly in the session manager and edit windows under Windows 2000 with APL+Win fonts

Bug Fix (v3.6.09)

Description

APL+Win did not handle the case when the Printer object's printername property was set to some network printers under Windows 2000

Bug Fix (v3.6.09)

Description

APL+Win did not handle the case when resuming execution of Code Walker after breaking the Wait method on a Form object

Bug Fix (v3.6.09)

Description

The onPaint event handler did not fire for the MDI form object

Bug Fix (v3.6.09)

Description

The MDI form object's clientwhere property was not initialized to an empty numeric vector

Bug Fix (v3.6.09)

Description

Accented characters did not appear correctly in the title bar for a floating CommandBar object and the caption for a Menu object containing a sub-menu

Bug Fix (v3.6.09)

Description

When calling the Printer object's Setup method after having set the Printer object's font property to a logfont structure, APL gave the error message: ⎕WI LENGTH ERROR: font

Bug Fix (v3.6.09)

Description

APL+Win did not handle the case when assigning the DateTime object's value property to ⎕WRES in the Exec method

Bug Fix (v3.6.09)

Description

APL+Win did not handle the case when typing Ctrl+Shift+{split} in the numeric edit window

Bug Fix (v3.6.09)

Description

The DateTime object's state information was not preserved in the definition vector (def variable)

Bug Fix (v3.6.09)

Description

The onKeyDown event handler did not occur on a Form object when pressing the right and down arrow keys under Windows 95/98 and the right, down, up and left arrow keys under Windows NT/2000

Bug Fix (v3.6.02)

Description

The prefix for class Media was missing from its description in APLGUI.HLP

Bug Fix (v3.6.02)

Description

In the APLGUI.HLP file, the 'width' property for CommandButton objects was incorrectly documented as 'pixel'

Bug Fix (v3.6.02)

Description

The ActiveX array properties indexing example has been corrected in APLGUI.HLP

Bug Fix (v3.6.02)

Description

Valuetips with ⎕TCNULs embedded did not display properly

Bug Fix (v3.6.02)

Description

When [Type] variables were defined as U, L or *C, APL gave the error message "⎕WCALL CONVERSION ERROR: LENGTH ERROR"

Bug Fix (v3.6.02)

Description

When a ⎕WCALL result contained a type U, it was treated like L (signed)

Bug Fix (v3.6.02)

Description

Setting the where property for a hidden maximized Form object made the Form visible

Bug Fix (v3.6.02)

Description

Using ?? to launch the help file topic in an Excel 2000 ActiveX object failed

Bug Fix (v3.6.02)

Description

The CommandBar is not accessible when waiting on a Form while the CommandBar is floating

Bug Fix (v3.6.02)

Description

APL+Win did not handle the case when setting the color property value to "({enclose}0 0 0) {neg}1"

Bug Fix (v3.6.02)

Description

The Draw Bitmap operation incorrectly clipped or didn't clip at all for some combinations of scale and height and width

Bug Fix (v3.6.02)

Description

APL+Win did not handle the case when setting the imagesize property for the Imagelist object to zero (0). The system now reports DOMAIN ERROR when setting the imagesize property to zero (0)

Bug Fix (v3.6.02)

Description

When you changed the Windows default printer after creating a Printer object, the 'default' property on the Printer object did not reflect the change

Bug Fix (v3.6.02)

Description

The two pixels above the status bar on an MDI form were not repainting properly

Bug Fix (v3.6.02)

Description

The WChooseColor function in the WINDOWS workspace did not initialize the custom color boxes correctly

Bug Fix (v3.6.02)

Description

The MFRESOLUTION function in the MFFNS workspace was using the incorrect constant, .001

Bug Fix (v3.6.02)

Description

In APLGUI.HLP, the link for "Label event handlers" displayed the "List Event-Handler properties"

Bug Fix (v3.6.02)

Description

When you referenced the xCharacters collection set for the Microsoft Agent, APL gave an error

Bug Fix (v3.6.02)

Description

When using the Copy... or Pcopy... menus to copy a workspace, APL+Win gave the message, INCORRECT COMMAND, when the workspace was a long file name or had a long directory name with spaces

Bug Fix (v3.6.02)

Description

After setting the margin property for the Printer object, the state and def properties were empty

Bug Fix (v3.6.02)

Description

When searching for a statement containing a quad-name with the name in one case (for example ⎕VR), and you did a token search for it in a different case (for example ⎕vr), it wasn't found

Bug Fix (v3.6.02)

Description

Upon the completion of the Defer method, when the APL COM server notified the ActiveX client, the server would stall or wait until the client handled the onSysNotify event

Bug Fix (v3.6.02)

Description

Fixed several problems involving the undo (ctrl+z) shortcut in the session manager

Bug Fix (v3.6.02)

Description

APL+Win did not handle the case when the Printer object was created and the printername property was set to a printer that returned a null DEVMODE pointer

Bug Fix (v3.6.02)

Description

When calling the Popup method, APL+Win did not return until the message queue was empty which caused some timing problems

Bug Fix (v3.6.02)

Description

Creating a Selector with a Page, then doing something to cause it to reopen like changing the style property, positioned the current page incorrectly

Bug Fix (v3.6.02)

Description

The command, 'object' ⎕WI 'Draw' ('?Font' 'MS Sans-Serif'), gave a length error when the font size was not specified

Bug Fix (v3.6.02)

Description

Fixed several problems related to the setting of the where property for a maximized form

Bug Fix (v3.6.02)

Description

APL+Win did not properly perform a disclose with axis on a heterogeneous array containing nulls

Bug Fix (v3.6.02)

Description

APL+Win did not handle the case when a Create statement was executed on an object before the ⎕WSELF object was created in a user-defined class

Bug Fix (v3.6.02)

Description

APL+Win did not handle the case when the printername property for the Printer object was set to a printer driver that did not completely fill in the DEVMODE structure

Bug Fix (v3.6.02)

Description

MDI child forms in the restored state would momentarily appear on the screen when creating or deleting a maximized MDI child form

Bug Fix (v3.5.01)

Description

The GetDOSHandle function found in the UTILITY workspaces gave a DOMAIN ERROR when the tie number was that of a component file with a long file name

Bug Fix (v3.5.01)

Description

Added definition for SetCommTimeouts in APLWADF.INI and APLW.ADF

Bug Fix (v3.5.01)

Description

Corrected the definition for SetCommState in APLWADF.INI and APLW.ADF

Bug Fix (v3.5.01)

Description

The ]RVU user command now enumerates user-defined resources plays WAVE files in DLLs

Bug Fix (v3.5.01)

Description

The 'Calls' and the 'Iters' column headers of the Listview in ]WSTIME user command were reversed

Bug Fix (v3.5.01)

Description

The ]COMP user command incorrectly returned DOMAIN error when comparing similar functions

Bug Fix (v3.5.01)

Description

The 1 in x[1;] on line 42 of CMDFORMS in UCMDSW.SF was wrong

Bug Fix (v3.5.01)

Description

Executing any user command untied files that were tied before issuing the user command

Bug Fix (v3.5.01)

Description

The UCMDS3.SF user command file did not have its file access matrix set

Bug Fix (v3.5.01)

Description

APL crashed when you set the printername property for a Printer object to either the FinePrint or the Acrobat PDFWriter printer drivers

Bug Fix (v3.5.01)

Description

Under Windows NT, when using a two-line tooltip (separated with ⎕TCNL), APL appended a random character at the end of the second line. This occurred only when the total number of characters including the ⎕TCNL in the tooltip was an odd number

Bug Fix (v3.5.01)

Description

Docking more than one CommandBar on the bottom of a Page did not work correctly

Bug Fix (v3.5.01)

Description

While Waiting on a Form object or a MDIForm object, executing either a )reset or )sic did not clear the state indicator (the stack), nor did the cursor return to the 6-space indent

Bug Fix (v3.5.01)

Description

When performing a Find and/or Replace with the APL Token options set to the ` or {delta_} character, all occurrences of the ` and {delta_} were found

Bug Fix (v3.5.01)

Description

After setting a Form object's extent property, the Form's onResize handler no longer fired when the CommandBar object was docked. Also, when the CommandBar was docked on the Form, the Form grew in size by the width or height of the CommandBar, depending on which side the CommandBar was docked

Bug Fix (v3.5.01)

Description

Fixed many bugs involving the CommandBar, the CommandButtons and the showtext property

Bug Fix (v3.5.01)

Description

APL hung when attempting to create an instance of the Microsoft Word 2000 ActiveX server

Bug Fix (v3.5.01)

Description

There was an annoying flickering of the status bar in the session manager window

Bug Fix (v3.5.01)

Description

When you resumed execution from a suspended state, the status bar displayed "Ready" instead of "Executing"

Bug Fix (v3.5.01)

Description

The Draw method's font operation failed for nested specification

Bug Fix (v3.5.01)

Description

For a style 1 Combo box object, the first two list items was inaccessible and clicking on an item in the list selected the item two rows below the item clicked on

Bug Fix (v3.5.01)

Description

There was a behavioral change between version 3.0.00 and 3.5.01 systems with-respect-to how a naked branch was handled inside a function executed in a callback handler

Bug Fix (v3.5.01)

Description

APL gave the error message: APLW caused an invalid page fault in module APX20OCX.DLL, when there was an attempt to create the VBProjects collection with the Excel ActiveX server

Bug Fix (v3.5.01)

Description

When menus were created on a closed MDIForm object, the menu items were duplicated on the MDIForm object when shown

Bug Fix (v3.5.01)

Description

APL would hang when tabbing out of an Edit object that was a child of a CommandBar object

Bug Fix (v3.5.01)

Description

When both the font and text operations were specified in the Draw command, the first text operation at the top of each page did not print with the correct font specification

Bug Fix (v3.5.01)

Description

A ⎕COPY did not return a result when the workspace being copied was an obsolete workspace and the workspace had a suspension in it. Also, when the ⎕COPY was run inside a function, the function would suspend when ⎕COPY returned

Bug Fix (v3.5.01)

Description

⎕SYS[24] consistently reported 0 when referenced immediately after a ⎕WCALL

Bug Fix (v3.5.01)

Description

Setting the edge property for the CommandBar object clipped the CommandButton object when redrawn

Bug Fix (v3.5.01)

Description

APL+Win did not handle the case when pressing the Enter key in a Combo object with style property value of 1 and the onKeyDown event handler set to delete the Form

Bug Fix (v3.5.01)

Description

When deleting the entire contents of the session manger window, the caret was not visible

Bug Fix (v3.5.01)

Description

When Invoking the AddRows method for the Listview object, a blank row was inserted between the inserted data and the header

Bug Fix (v3.5.01)

Description

The ]GLOCALS user command did not recognize the extended file functions and ⎕WI, ⎕CALL and ⌷

Bug Fix (v3.5.01)

Description

Assigning ⎕WRES to 0 in the system object's onClose handler prevented the development system from closing

Bug Fix (v3.5.01)

Description

APL+Win did not handle the case when )RESET was executed in a tool command while the system was in a looping function

Bug Fix (v3.5.01)

Description

Doing "{zilde} {zilde} {disclose}5" resulted in the creation of abnormal objects in the workspace

Bug Fix (v3.5.01)

Description

When the second argument of the RichEdit object's selection property was -1 and the translate property was 0, 1, 6 or 7, the actual selection did not include the hidden carriage return or new line character

Bug Fix (v3.5.01)

Description

When the XCall method failed in the runtime APL ActiveX server, further attempts to load or copy a runtime workspace failed

Bug Fix (v3.5.01)

Description

The EnumPrinters definition in the APLW.ADF file was incorrectly specified

Bug Fix (v3.5.01)

Description

When the number of characters in the "define tools command" edit field exceeded the internal limit, the extraneous characters were truncated

Bug Fix (v3.5.01)

Description

APL+Win did not handle the case when the ⎕NERASE function failed because the file was busy. The file was untied at the Windows level but wasn't removed from ⎕NNUMS

Bug Fix (v3.5.01)

Description

The ]DIR user command with the /F argument incorrectly gave a FILE ARGUMENT ERROR

Bug Fix (v3.5.01)

Description

The IsZoomed and GlobalLock Windows APIs did not work when called from ⎕WCALL if the regional setting in Windows was set to Hungary or Spanish (Traditional Sort)

Bug Fix (v3.5.01)

Description

The ⎕XFRENAME operation led to file corruption under some situations

Bug Fix (v3.5.01)

Description

Selection while dragging in the session manager window, either with the mouse or keyboard, behaved erratically

Bug Fix (v3.5.01)

Description

When APL+Win detects a WS FULL while executing UNWRAPL, a Value Error was reported instead of a WS FULL

Bug Fix (v3.5.01)

Description

APL+Win did not handle the case when performing a compaction (a pack) in the workspace while processing a heterogeneous array

Bug Fix (v3.5.01)

Description

APL+Win did not handle the case when attempting to share-tie a file while the current directory was not valid

Bug Fix (v3.5.01)

Description

When using the extended file functions to tie a file on a different networked Windows 95 machine in a read-only directory, APL+Win incorrectly reported the error message: XFHOST ERROR _sopen 1005 13 65 Network access is denied

Bug Fix (v3.5.01)

Description

When setting the imagesize property on the Picture object, the conversion from current scaling units to pixels (the units used for saving the value internally) was done incorrectly (converted from double to long) due to a truncation error

Bug Fix (v3.5.01)

Description

The utility functions in UCMDUTIL.W3 were updated to support the extended file functions

Bug Fix (v3.5.01)

Description

When assigning ⎕NSELF to a socket number that didn't exist, APL+Win incorrectly displayed a delta symbol instead of a ⎕ in the error message

Bug Fix (v3.5.01)

Description

APL+Win did not handle the cases involving depth primitive function

Bug Fix (v3.5.01)

Description

APL+Win did not handle the case when using a node ID number in a Tree object that is 2*31 or greater

Bug Fix (v3.5.01)

Description

When the system object palette property was set to a custom palette, when it was referenced, an empty matrix was returned

Description

The FileExist function was added to the WINDOWS workspace and the following functions were updated in the WINDOWS workspace to utilize the enhancements to the system function ⎕WCALL introduced in version 3.5: GetDir GetDir95 GetDir_Init GetWinVer LOGFONT_Structure SetSystemTime WChooseColor WChooseFont WGetOpenFileName WGetOpenLongFileName WGetSaveFileName WGetSaveLongFileName WinVersion WPrintDlg

Description

The UCMDUTIL workspace updated to support long file names

Bug Fix (v3.0.15)

Description

There is a circular reference in the Registry on several keys starting with WScript (under Windows 98) that caused APL+Win to hang when the XInfo method was executed for ALL keys (no filter argument) or when 'W', 'WS', 'WSC', etc. filter argument was explicitly used

Bug Fix (v3.0.15)

Description

When a component file was tied using the extended file functions and tie number 1, many of the user commands reported a FILE TIE ERROR when run

Bug Fix (v3.0.15)

Description

Ravel with axis produced an empty PTR result with a NULL prototype causing APL to crash

Bug Fix (v3.0.15)

Description

In Windows 98, calling Setup for a Printer created the printer device context with 0 copies

Bug Fix (v3.0.15)

Description

The runtime interpreter erroneously created a .INI file upon exiting

Bug Fix (v3.0.15)

Description

When the system is run under Windows 98 with VBX interface support, and APL exits, Windows reported "APLW caused an invalid page fault..." The VBX interface is not supported under Windows 98

Bug Fix (v3.0.15)

Description

When ⎕CT was set to zero, both the "match" primitive and the "SELECT/CASE" control failed to match integers to their exact floating point representations

Bug Fix (v3.0.15)

Description

The times-scan function was missing an overflow check

Bug Fix (v3.0.15)

Description

Invoking SetRows wasn't repainting cells beyond the first column in a Listview object

Bug Fix (v3.0.15)

Description

Creating a RichEdit from a def with RichEdit-only style failed with a "⎕WI DOMAIN ERROR: style" error message

Bug Fix (v3.0.15)

Description

The Listview painted twice during operations involving the internal routine "InsertRows"; the sortorder and list properties, and the AddRows, InsertRows, and SetRows methods

Bug Fix (v3.0.15)

Description

When path names contained '.w3' in the name, the commands in the Load, Xload, Copy, PCopy, Save, Save As, and Drop dialogs failed

Bug Fix (v3.0.15)

Description

Outer syntax analysis of some functions with 2*14 or more statements was wrong

Bug Fix (v3.0.15)

Description

The documentation for the user command ]PRINT stated that if no data expression were supplied, it would print any tagged region throughout the session manager. This was removed from the documentation

Bug Fix (v3.0.15)

Description

On Windows NT, a style 1 Listview displayed empty cells using the previous cell's text. We have implemented a workaround in the system to get around this Microsoft bug

Bug Fix (v3.0.15)

Description

Setting the size and visible property to 3 for a Form before opening it used the size information for maximized size

Bug Fix (v3.0.15)

Description

On Windows NT, some APL characters were not displayed correctly in a Listview

Bug Fix (v3.0.15)

Description

The Copy command sometimes introduced an invisible bodiless function into the target workspace

Bug Fix (v3.0.15)

Description

Invoking the ]DLLTREE user command under Windows NT gave a LENGTH ERROR

Bug Fix (v3.0.15)

Description

Invoking )RESET during a pending ⎕NI 'Recv' operation would possibly lead to a damaged workspace and APL crashing

Bug Fix (v3.0.15)

Description

There was a problem in the interpreter whereby a newly cleared workspace was sometimes already corrupted

Bug Fix (v3.0.15)

Description

Error messages from any system command, executed immediately after ⎕SA←'CLEAR' took effect, was repeated in the session

Bug Fix (v3.0.15)

Description

'FindNode' 'child' 0 gave DOMAIN ERROR

Bug Fix (v3.0.15)

Description

N {TAKE}[2] 0 should've reported AXIS ERROR, but reported LENGTH ERROR instead

Bug Fix (v3.0.15)

Description

Setting imagesize when bitmap had invalid file gave MEMORY ERROR

Bug Fix (v3.0.15)

Description

Setting Listview's columndisplay with 5 columns and without Microsoft Internet Explorer 3.0 or later gave DOMAIN ERROR

Bug Fix (v3.0.15)

Description

Setting column order in columndisplay property for Listview gave wrong order

Bug Fix (v3.0.15)

Description

Opening the Listview with no columndisplay sometimes created two blank column headers

Bug Fix (v3.0.15)

Description

In the ADF file, the Windows API ShellExecute was missing the "LIB SHELL32" parameter

Bug Fix (v3.0.15)

Description

APL would crash when invoking 'FindNode' 'child' 0 for a Tree object

Bug Fix (v3.0.15)

Description

There was a problem with the way the items in a style 5 Listview object were highlighted when the Listview object lost the focus

Bug Fix (v3.0.15)

Description

APL crashed when setting ⎕ELX to '⎕ERROR ⎕DM' and invoking a non-existent user command while waiting on a Form

Bug Fix (v3.0.15)

Description

The Listview drag scrolling wasn't working if it had exactly one more row than would fit without a scroll bar

Bug Fix (v3.0.15)

Description

When a function name contained the symbol, delta-underbar, multiple problems were visible in the Debugger and session manager

Bug Fix (v3.0.15)

Description

⎕LX was incorrectly run for an )XLOAD issued IMMEDIATELY after a ⎕SA of 'CLEAR' had taken effect

Bug Fix (v3.0.15)

Description

The OCX Array properties reported "LENGTH ERROR: Wrong number of arguments"

Bug Fix (v3.0.15)

Description

The Listview columndisplay with more than 5 columns were interpreted incorrectly. The system effectively reshaped the argument, using extra columns as the beginning of the next row

Bug Fix (v3.0.15)

Description

The List's value property mishandled 0 and -1 if set when closed

Bug Fix (v3.0.15)

Description

After changing the origin property for a Picture object, its children no longer scrolled

Bug Fix (v3.0.15)

Description

APL did not handle the case when ⎕LIB was a 328 byte argument

Bug Fix (v3.0.15)

Description

A reopened child of a scrolled Picture object was not positioned properly

Bug Fix (v3.0.15)

Description

Version 5 of Formula One failed to fire its StartEdit event handler

Bug Fix (v3.0.15)

Description

Setting the size property on some controls ended up with the wrong size

Bug Fix (v3.0.15)

Description

Drawing a bitmap to PostScript printers caused a General Protection Fault when the clip region was bigger than the bitmap

Bug Fix (v3.0.15)

Description

Problem with restoring the focus to ActiveX control

Bug Fix (v3.0.15)

Description

The Draw method's Clear operation to printer was not incrementing page

Bug Fix (v3.0.15)

Description

The Resize method on OCX was not triggering onResize event

Bug Fix (v3.0.15)

Description

Multiple problems with the user command, ]PCCOPY

Bug Fix (v3.0.15)

Description

The UNLABELVR function in the UTILITY workspace mistook the :FOR control structure statement as a line label

Bug Fix (v3.0.15)

Description

With the WED editor running, invoking the user command, ]FORMS incorrectly gave an error message ("LENGTH ERROR") following the list of forms

Description

Docintro.doc Description of Refv3*.doc, Lang*.doc and Util*.doc
Refv3toc.doc Table of Contents
Refv3c01.doc Introduction
Refv3c02.doc Working in an APL Session
Refv3c03.doc Overview of Windows Programming in APL+Win
Refv3c04.doc Using APL GUI Features
Refv3c05.doc Using Dynamic Data Exchange
Refv3c06.doc Calling Dynamic Link Libraries
Refv3c07.doc GUI: Classes
Refv3c08.doc GUI: Properties
Refv3c09.doc GUI: Event-Handler Properties
Refv3c10.doc GUI: Methods
Refv3c11.doc TCP/IP and Sockets in APL+Win
Refv3apa.doc Appendix: Atomic Vector, ANSI Sequence, and Virtual Key Codes
Lang01.doc Primitive Function and Operator Reference
Lang02.doc System Commands
Lang03.doc System Functions, Variables, and Constants
Util01.doc User Command Descriptions
Util02.doc Programming Tools
Util03.doc Using the APL GUI Wed Form Editor
Prtconvt.doc Converting printing routines from APL+PC/DOS to APL+Win.
APLac.DOT Microsoft Word (version 6 and later) template for insertion of APL characters into documents. Upon loading the template, APL characters are typed using the ALT+CTRL+key keys.
Regsvr32.txt Regsvr32.exe Readme File

Description

Description

Description

A new Media object has been added

Description

onFile, onMouseEnter, onMouseLeave, onReopen, onStart and onStop.

Description

file, mediahwnd, mediatype, poslargeimage, possmallimage, selfontall, selpargall, selstyleall and tooltipwidth.

Description

tooltips are now available for Label controls

Description

Description

CharToLine, Command, GetPos, LineToChar, Play, Seek, SetPos and Stop.

Squad (v3.0)

Description

The APL2 INDEX function is now available. The "SQUAD" character can be entered as ALT+SHIFT+L.

Description

Iota and Epsilon are faster with nested & heterogeneous arguments

Description

Network Interface (including Help File)

Description

]APLLIBS, ]ASMFIX, ]EMSG, ]FINFO, ]INICLEAN, ]TEXTFILE, ]WFDIR, ]WINCALLS, ]WPRINT, ]WSTIME and ]WSVIEW.

SHELLLNK.W3 (v3.0)

Description

Utility for creating Windows 95/NT shortcuts

LOCALDT.W3 (v3.0)

Description

Return local date and time

ITALK.W3 (v3.0)

Description

Personal comunicator (another ⎕NI sample)

NI.W3 (v3.0)

Description

⎕NI (TTCP/IP) samples

Description

A new REL30.W3 workspace has been added

Bug Fix (v2.0.02)

Description

[N-wise reduction] Executing an N-wise reduction using a scalar right argument now returns correct results.

Bug Fix (v2.0.02)

Description

[⎕EX] ⎕EX now returns an empty vector for an empty argument.

Bug Fix (v2.0.02)

Description

[⊤] The (encode) function now returns the correct result when the left argument is a scalar, one of the arguments is a float, ⎕CT is not zero, and the right argument is nearly a multiple of the left argument.

Bug Fix (v2.0.02)

Description

[OCX] Issue involving the FarPoint Spread OCX runtime license key. When you specify the class property at creation time, it no longer checks for the license (.LIC) file.

Bug Fix (v2.0.02)

Description

[OCX] Re-enabled the Popup method on ActiveX (OCX) controls.

Bug Fix (v2.0.02)

Description

[OCX] APL now activates the MDI child form containing a Formula One ActiveX control when the OCX control gets the focus.

Bug Fix (v2.0.02)

Description

[OCX] When the EditEnterAction property for the FarPoint Spread OCX is non-zero, pressing Enter now moves the cell cursor in the direction specified by the property value.

Bug Fix (v2.0.02)

Description

[OCX] Pressing the Enter key in the cell of a FarPoint Spread OCX now toggles in and out of edit mode when EditEnterAction is set to zero.

Bug Fix (v2.0.02)

Description

[zOrder] Changing the tab order property of edit controls inside frames now correctly updates Windows tab (Z) order.

Bug Fix (v2.0.02)

Description

[Drag & Drop] The onMouseDrag event is no longer triggered when the shift or ctrl keys are down without the mouse button down.

Bug Fix (v2.0.02)

Description

[Focus] APL no longer loses the focus on a form after the control with the focus is disabled, hidden, closed, or deleted.

Bug Fix (v2.0.02)

Description

[Selector] The Tab no longer remains on the selector for a failed 'New' 'Page'.

Bug Fix (v2.0.02)

Description

[OCX] Another focus related problem involving the FarPoint's Spread OCX (v2.5.020, not with v2.5.001). When you now invoke the Focus method so that the Spread OCX gets the focus, the focus no longer alternates between the spreadsheet and say, an edit control on the form.
This problem only occurred when the edit control was the first control in the tab order or when you set the Spread OCX to always be in edit mode with EditModePermanent.

Bug Fix (v2.0.02)

Description

[OCX] Focus related problem involving the FarPoint's Spread OCX. The focus now correctly moves to intended control when the form also contains the Spread OCX control.

Bug Fix (v2.0.02)

Description

[OCX] When you disable a form (enabled property set to 0) containing an OCX control, then re-enable the form, the OCX control now redisplays.

Bug Fix (v2.0.02)

Description

[Command Line Parameters] We changed parsing of the APLW.EXE command line parameters so that arguments beginning with a forward-slash character are NOT interpreted as file names.

Bug Fix (v2.0.02)

Description

[Search & Replace] Searching for quad in the session manager or in the editor with the case-insensitive option enabled, now only finds the quad (and not both quad and pick). Searching for pick with case-insensitive now only finds pick.

Bug Fix (v2.0.02)

Description

[Print] The Print "All" option with text selected now prints the line numbers.

Bug Fix (v2.0.02)

Description

[Editor] Using the del as the first character to quad or quote-quad input no longer invokes the editor.

Bug Fix (v2.0.02)

Description

[Syntax Coloring] Displaying a high-minus followed by a decimal point and then a non-number, now displays proper syntax coloring.

Description

Implemented scalar extensions for primitive scalar functions with axis.

Description

We added support for the @ symbol in the ALIAS names option in the definition of a ⎕WCALL function call, so you can access names such as _FooBar@12 that are sometimes generated by the linker for "extern C" without DEF file.

Bug Fix (v2.0)

Description

[Workspace] The WinVersion function in the WINDOWS workspace returns a non-simple vector rather than a simple vector as per previous versions; the strings, '32s', '95', and 'NT' are nested.

Bug Fix (v2.0)

Description

[⎕FDUP/⎕XFDUP] Due to a change in Windows NT Ver. 4 (only), when you ⎕FDUP a file to the same name, you must make sure that you specify the filename argument (with or without a path or library number) so that it is exactly the same as the filename argument used to the tie the file.
Otherwise APL will report a FILE NAME ERROR message when you ⎕FDUP the file. To avoid the issue altogether, consider using the extended file function ⎕XFDUP.
⎕FDUP continues to work as it always has under Windows 3.1, Windows NT 3.51 and Windows 95.

Bug Fix (v2.0)

Description

[Combo] The onClick event, which occurs when the Combo includes style bit 2, should only fire when a valid choice is selected, and not when the program resets this to an empty selection (no choice has been made, so no onClick occurs). Note that only the program can set the value property to 0 (or the text property to '') when style bit 2 is on.
The onClick event should not fire, and has never fired, when this style bit is off.

Bug Fix (v2.0)

Description

[Combo] The onChange event, which occurs when the Combo does not include style of 2 (drop-down list with no edit field), now behaves like the onChange event for an Edit control; if the program sets the text field to '' (empty), the onChange event fires. The onChange event should not fire and has never fired when this style bit is on.

Description

If you do not have this installed, you can downloaded a free copy from Adobe's Web site at:

http://www.adobe.com/prodindex/acrobat/readstep.html

After installing the Acrobat Reader, in the APL+Win Folder (or Program Group), set up a shortcut (or program item) to launch the Reader with the file, APL2000.PDF.
This file has jumps (hyper-links) to the remaining .PDF files. Here is a list of the .PDF files and the material they cover:
APL2000.PDF Main Page (jump off point)
APL001.PDFPrimitive Function and Operator Reference
APL002.PDFSystems Commands
APL003.PDFSystem Functions, Variables, and Constants
APL004.PDFUser Command Descriptions
APL005.PDFProgramming Tools
APL006.PDFUsing the APL GUI Wed Form Editor

If you don't have access to the Internet, contact our Support Desk and they will assist you in obtaining the software.

Description

32-bit OCX controls can now be used in APL*PLUS III

Description

Added support for right button in onClick and onDblClick events for the Tree control.

Description

The ⎕CMD system function has been updated for Windows 95 so that APL now waits for the DOS session to end before continuing function execution.

Description

⎕WGIVE was changed to accept -1 argument to reset give-rate to zero without doing a GIVE. This allows you to end an implicit GIVE segment without yielding.

Description

Added XInterface parameter to [Config] section. This parameter specifies an alternative name for the file APX20OCX.DLL.

Description

Added WaitForPopupCommand parameter to [Compatibility] section to do an implicit ⎕WGIVE on return from the Popup method on APLGUI objects.
The default, TRUE, causes a Wait and can be disabled for the old behavior by setting the parameter to 0 (FALSE).
TRUE causes popup menu commands to be processed BEFORE returning from Popup method.

Description

Added support for the onClick event for the Listview control. Its ⎕WARG is identical to that for onDblClick.

Description

New workspace, SPREAD.W3, which contains functions to create a spreadsheet-like grid. The workspace is located in the Examples subdirectory.

Description

New workspace, ORIENT.W3, which contains functions for changing the Printer's page orientation under program control. The workspace is located in the Examples subdirectory.

Description

New workspace, REL20.W3, which demonstrates the new feature in Version 2. The workspace is located in the Examples subdirectory.

Bug Fix (v1.3)

Description

[DDE] A DDE server will now accept an APL module name with a period as part of its directory name.

Bug Fix (v1.3)

Description

[VBX] A VBX whose property requires a floating point value will now accept zero or a negative value without returning a DOMAIN ERROR.

Bug Fix (v1.3)

Description

[VBX] The restriction that kept a VBX with only one bitmap state from starting up, and that gave the Unable to load bitmap message, has been fixed. VBXs such as Visual Writer will now operate.

Bug Fix (v1.3)

Description

[VBX] The restriction that kept a VBX with duplicate property names from operating has been relaxed, so no error is reported, and instances of the VBX can be created.

Bug Fix (v1.3)

Description

[Error Messages] Extraneous characters that were sometimes appended to the name of a non existent object in the ⎕WI error text are now suppressed.

Bug Fix (v1.3)

Description

[Printer] A Printer object is now reopened automatically after using the Setup method.

Bug Fix (v1.3)

Description

[Picture] Problems when the imagesize is very large that caused a corrupted display of the image or an internal application error have been corrected.

Bug Fix (v1.3)

Description

[Menu] The Popup Method documented in the version 1.2 update manual erroneously shows using the onMouseDown event handler in combination with the left mouse button. If you do this, Windows allows the control to capture the mouse and you cannot proceed. Use the onMouseUp event handler if you want to use the left mouse button.
Alternatively, and consistent with other Windows applications, you can specify that only the right mouse button triggers the popup menu.
If you specify the right mouse button (⎕warg[3]=2), you can use either the onMouseDown or the onMouseUp event handler.

Bug Fix (v1.3)

Description

[Menu] Standalone (popup) menus are now deleted from Windows memory when they are deleted from APL GUI, thus freeing the resources.

Bug Fix (v1.3)

Description

[Menu] Certain conditions involving large numbers of menus and deeply nested menus that caused display problems and inappropriate interactions with the system menu have been resolved.

Bug Fix (v1.3)

Description

[Menu] Menu items that are changed from simple child menu items to popup menus are now drawn correctly.

Bug Fix (v1.3)

Description

[Menu] The order of menu items is now unchanged when the visible property is set to 0 and reset to 1.

Bug Fix (v1.3)

Description

[Edit] An Edit control that was disabled while closed now displays its text correctly when reopened.

Bug Fix (v1.3)

Description

[Edit] Vector arguments of certain lengths that introduced erroneous output in the list of an Edit control now are handled correctly.

Bug Fix (v1.3)

Description

[Combo] Vector arguments of certain lengths that introduced erroneous output in the list of a Combo box now are handled correctly.

Bug Fix (v1.3)

Description

[Combo] The system no longer reserves memory for the text of a Combo box that has no edit field.

Bug Fix (v1.3)

Description

[Combo] The onClick event handler for a Combo box that has no edit field will now fire when the text Property is changed to a value not in the list.

Bug Fix (v1.3)

Description

[Combo] The onFocus event handler for a Combo box will now fire.

Bug Fix (v1.3)

Description

[Combo] The onPrompt event handler of the system object will now fire for a Combo box.

Bug Fix (v1.3)

Description

[Combo] The onFocus and onUnfocus event handlers for an MDIForm and for forms that are children of an MDIForm will now fire.

Bug Fix (v1.3)

Description

[Ampersand character (&)] In some situations, the ampersand character (&) was being erroneously treated as a signal to underline the character following (as in a menu accelerator). It now prints as the ampersand.

Bug Fix (v1.3)

Description

Several anomalous behaviors with multi-line text that included one or more ⎕TCNL characters have been resolved, including the system ignoring the first blank following the newline character.

Description

The translate tables to accommodate the national characters added to ⎕AV in version 1.2 have been reconciled so that the characters are treated properly in GUI objects as well as in the session window.

Description

The files that are part of Update 1.3.00 are:
APLW.EXE1220608 07-11-95 19:09
APLWR.EXE85504007-11-95 19:34
APVBX100.DLL 12565907-07-95 09:52
WCALL16.DLL9881604-27-95 16:57
WCALL32.DLL768004-27-95 15:50

Description

The onResize event handler for an MDIForm will now fire even if the clientwhere Property has been set.

Draw method (v1.3)

Description

The Draw Method Text Operation has been extended to accept a matrix argument.
The Draw Method has been extended to accept a matrix or nested argument in numerous cases that were previously undefined.
Multiple uses of a Brush, Pen or Font in the same Operation with a user-supplied handle is now supported.
The Font Operation now accepts the 14-element nested Logfont structure.

Description

Using the scale Property to specify proportional scaling with a non-zero origin, which worked in version 1.1, has been restored.
Using the new Scale Operation to specify the same, which already worked on the screen in version 1.2, now also works for a Printer object.
When specifying proportional scaling for the Printer object, the system now accepts (and ignores) extra values following 0 instead of giving an error message.

Bug Fix (v1.2.09)

Description

[Debugger] The messages Debugger inactive and Debugger active, no session now display on the status line when appropriate.

Bug Fix (v1.2.09)

Description

[Debugger] The debugger now displays all information correctly when stopping on a breakpoint immediately upon activation.

Bug Fix (v1.2.09)

Description

[Breakpoints] The function editor is now limited so you can set and display breakpoints only through line 1024 of a user-defined function. You can still set breakpoints on higher-numbered lines using the breakpoint facility.
This limitation has the beneficial effect of eliminating certain errors caused by very long lines in functions or functions with large numbers of lines.

Bug Fix (v1.2.09)

Description

[Debugger] The condition that caused the error message
      APL*PLUS SYSTEM FAILURE ... dbgforstkdepth == cursie->forstkdepth

is now trapped so the system does not fail.
This occurred when the debugger was on, stopping on errors and a value error was encountered in a :FOR statement such as an undefined value for Cmd in the following statement:

      :FOR Loop :IN Cmd

Bug Fix (v1.2.09)

Description

[Debugger] The debugger now allows stepping into very long lines of code (where the code exceeds the displayable length).

Bug Fix (v1.2.09)

Description

[System Failure] The system failure associated with certain 16-bit W_Call uses has been corrected.

Bug Fix (v1.2.09)

Description

[Memory Leaks] Changes to correct certain memory leaks associated with DDE operations, the Put method for Picture objects, 16-bit W_Call, Draw operations, and certain property settings have been inserted.

Bug Fix (v1.2.09)

Description

[System Failure] Additional diagnostic messages have been added to isolate the causes of system failures. Certain errors now provide a message rather than a failure.

Bug Fix (v1.2.09)

Description

[⎕FTIE] The runtime system error generated when attempting to exclusively tie a file that was already share-tied has been corrected.

Bug Fix (v1.2.09)

Description

[⎕FRENAME] The error generated when renaming tied files has been corrected.

Bug Fix (v1.2.09)

Description

[⎕CHDIR] The behavior of ⎕CHDIR is now consistent with previous versions of APL*PLUS in that calling this system function monadically will not change the default drive. This change overrides a corresponding change in the Windows system that caused the new behavior.

Bug Fix (v1.2.09)

Description

[⎕NA] The ⎕NA system function now produces an error message if you attempt to call an associated function dyadically.

Bug Fix (v1.2.09)

Description

[FIND] The Find primitive function no longer returns one too many elements when used with an empty argument.

Inner Product (v1.2.09)

Description

Certain combinations of inner product now accept a heterogeneous matrix as a left argument.

Description

A. The Setup program will notify you if SHARE.EXE has
not been run on your machine. APL*PLUS III will run if
SHARE has not been loaded, but file sharing will not work
safely. It is possible without SHARE for two users to
exclusively open the same file, leading to possible
data loss. We strongly recommend that SHARE be run if
there is the slightest chance that files will be
accessed by more than one application at a time.

B. APL*PLUS III does not support the old APL keyboard
layout. Use ]KB or see Appendix E in the Reference
Manual if you are unfamiliar with the "text" keyboard
layout used by APL*PLUS III.

C. After a fresh installation of APL*PLUS III, user
commands will only work in the default directory. Be
sure to follow the steps outlined on page xii of the
User Manual to customize the user command file to
contain your installation path. Otherwise, ]WED, along
with several other user commands, will fail if you change
directories.

D. For the first release of APL*PLUS III, ⎕USERID
has been set to be all blanks.

E. If you were a Beta tester for APL*PLUS III and have
created some workspaces with one of the Beta versions,
you should clean the workspaces up with the newest
interpreter. To do this, use the WSTOFILE and FILETOWS
functions from the WFCARE workspace.

F. You may want to add Tools to the APL*PLUS III menu
for the ]WED and ]KB user commands. To do this, choose
Options/Tools from the APL*PLUS III menu. For ]WED,
enter "&Wed Ctrl+W" in the Menu Item field and
"]WED" in the Command field. For ]KB, enter
"&Keybd Ctrl+K" in the Menu Item field and "]KB" in the
command field. This will allow you to show a keyboard
template by pressing Ctrl-K.

G. If you are migrating a GUI application from APL*PLUS II,
you should be aware that ⎕WARG has changed for the
KeyDown and KeyUp events. In APL*PLUS II, ⎕WARG returned
a 6 item vector. In APL*PLUS III, ⎕WARG returns a
7 element vector.

H. The functions delta-delta-VR in the UTILITY and WSCOMP
workspaces and delta-underscore-PCVRFMT in the UCMDUTIL
workspace and the UCMDS user command file are written
in APL in this release in order to handle control structure
formats correctly. If you need the faster performance
of an assembler routine, and don't care about the formatting
of control structures, you can replace these functions
with delta-delta-VR found in the ASMFNS workspace.

I. The quad-NA support file referred to in the documentation
as VARINFO.TXT is named VARINFO.WRI. It is in Microsoft Write
format.

J. Under Win32s, there is currently a limit of 5 concurrent
APL*PLUS III sessions.

K. In order to print APL characters when using a Laserjet
printer, you must first switch from the default APLFONT screen
font to the APLPLUS TrueType font via the Options/Fonts menu.
This is not neccessary when printing on a dot-matrix printer.

L. The following are differences in the behavior of )CMD
and ⎕CMD from other APL*PLUS systems:

1. Under Win32s, )CMD and ⎕CMD do not execute in
the current APL directory. They use the startup directory
identified in the _default.pif file located in the \WINDOWS
directory.

2. A )CMD or ⎕CMD session runs asynchronously.
This means that APL*PLUS III is likely to continue
execution of the next statement before the command started
by )CMD or ⎕CMD has completed.

3. Under Win32s, a CMD session will not start
until the next time the APL*PLUS III system is idle unless
you use ⎕WGIVE. For example, you should use ⎕WGIVE
immediately before calling ⎕CMD in a function, or else
⎕CMD may not execute until the function terminates.

M. The Microsoft Visual C++ Development System (32-bit
Edition) compiler, linker, nmake, and resource compiler tools
can be run as DOS commands under Windows 3.1 or DOS.
These tools can be used to build 32-bit dynamic link
libraries without installing Windows-NT. However, Windows-NT
is necessary to use the Visual Workbench integrated
development environment.

See the file \msvc32s\pharlap\read.me on the Visual C++
distribution CDROM for advice on setting up the tools to
run without the integrated environment. Command line options
for the tools are described in the "Build Tools User's Guide"
section of the Visual C++ documentation.


N. The editor in this version of APL*PLUS III supports
a maximum of 1024 characters in a line.

O. If you are migrating to APL*PLUS III from APL*PLUS PC
version 6.0 or earlier, you should use the WSTOFILE function
in the W2FF2W.AWS workspace included in the \TOOLS
subdirectory of this distribution. The WSTOFILE function
included with your original APL*PLUS PC system produces
an incompatible file format.

P. In this release, ⎕NA does not support the X0 datatype.
It will probably be supported in a future release. The
G0 datatype, which points to live arrays in the APL
workspace, can be used in place of the X0 datatype in some
cases. G0 is subject to the following restrictions:

1. The arrays they point to are subject to
relocation during a garbage collection.

2. ⎕NA can return a G0 result, but they are hard
to construct unless the result is a pointer to an array
that already exists in the workspace. The facilities
for creating new arrays inside the workspace are very
limited at the moment, and are intended only for use with
⎕CALL assembler routines. You must not return a pointer
to something that is not in the workspace as a G0 result.

⎕WCALL supports the X0 parameter in this release, both
as arguments and as results. X0 parameters in APL*PLUS III
are arrays that have been copied outside of the workspace,
which means they are not in danger of being moved. Any
pointers that a nested array contains will be addresses,
not offsets. The subarrays therefore do not need to be
contiguous. Your DLL needs to build a nested array result
where each subarray is in a block of memory that has been
obtained by a separate malloc() call. APL assumes this has
been done, and will do a free() for each M-entry that is
part of a nested result.

When you return an X0 result from ⎕WCALL, the interpreter
takes charge of getting it copied into the workspace and
then frees it and its children. The reference count should
be 1 for any array that you have created new in Windows
memory.

The array manipulation routines (avRank, etc.) that were
provided with APL*PLUS II are not currently supplied with
APL*PLUS III. If you do not have these routines, they
are available through the HelpLine. If you recompile the
APL*PLUS II versions, (aplval.c and aplval.h), you must use
#pragma pack(1)
so that the data field in a HET object will not be forced
to an 8-byte alignment. The storage management routines
AplAlloc() and AplFree() should NOT be used in APL*PLUS III.
Instead, use the regular Windows malloc() and free() calls.
Be sure to keep the reference count right in any arrays
that you will return to APL.

Q. There is a difference in the values reported by 'where',
'size', and 'extent' that depend upon whether an object
is open or closed. When an object is closed, these
properties return the most recently specified values. If
an object's size is specified by setting a 4-element
'where' property, then when you reference 'where', it
will return a 4-element vector. If you reference 'size'
or 'extent' they will return empty vectors when the object
is closed and 2-element vectors when the object is open.

However, if you specify the size of an object by setting
its 'size' or 'extent', then when the object is closed
'size and 'extent' will return 2-element vectors. In
this case 'where' will also return a 2-element vector.
The trailing elements of 'where' are missing because the
size is determined by the 'size'/'extent' properties. When
an object is closed, we can't know the trailing 'where'
dimensions, because they depend on border thickness that
can only be determined when the object is open.

R. For drop-down combo boxes, Windows will report different
sizes depending on whether the control is open or closed.
If the combo box is closed, 'where' will return the size
you specified. However, if the combo box is open, the
third element of the 'where' vector will normally be
reported as 1.5, regardless of whether the drop-down list
is extended or hidden. The drop-down list of a combo box
is actually a separate window that may extend either down
or up. Windows only reports the size of the edit-control/
drop-button portion of the combo box.

List boxes exhibit similar differences between the specified
and reported size when the object is open. With the
default style, Windows rounds the list box height to display
a whole number of lines of text. If you reference the 'where'
property, the third element may not be exactly what you
specified. However, when the list object is closed, it
reports the specified dimensions.

S. Forms can be sizable and movable by the user. With a
form, APLGUI remembers the last 'where', 'size', and/or
'extent' you specified. But if the user changes the
position or size of the form while it is open, APLGUI
updates the stored 'where', 'size' and 'extent' properties
as though you had specified new values under program control.

With forms, it is most useful to specify the dimensions of
the object using a two-element 'where' property to control
location and a two-element 'size' or 'extent' property to
specify the internal dimensions of the client area. Forms
can have very thick borders (including the caption and menu
bar line) that make the internal and external dimensions
substantially different. For control objects on a form,
you will ususally want to specify dimensions using a
4-element 'where' property.

The 'state' property always reports specified dimensions
as though you referenced the property while the object is
closed, regardless of whether it is really open or closed.
Similarly, the 'def' property always reflects the
specified dimensions of an object. Both 'state' and 'def'
are designed to allow you to return to the original object
state.

T. The 'range' property is only useful while an object is
open and is NOT saved in the 'def' property or reported by
'state'. If you specify its value to change the number of
lines displayed by an object, that setting is not remembered
when you close the object or save its 'def' property.
Unfortunately, 'range' appears in the ]WED editor as a
property you can set. This is misleading since it is not
saved. Changes to the 'range' property made using ]WED
are forgotten and therefore useless. However, while an object
is open you can use 'range' to change the height of an object.

Using 'range' to change the height of an object may have
an effect on the referenced value of the 'where', 'size' or
'extent' properties, but it does not affect the closed
values of these properties. 'range' is most useful for
changing the height of drop-down combo objects. When you
reference the 'where' property, it will continue to report
the visible size of the non-dropped size of the object,
(usually about 1.5 character units.) You should set 'range'
during an onOpen or onDropDown handler, or when you change
the contents of the list in a combo box.

Description

A. If you get the message 'Bindtime error:
''EXITWINDOWSEXEC'' not found in specified
library' when trying to run the Setup program,
make sure you are not running Windows 3.0. APL*PLUS III
can only be installed and run on machines running
Windows 3.1 or later.

B. If Win32s was installed as part of your setup, a
backup copy of SYSTEM.INI was created in your Windows
directory. The name of the backup is SYSTEM.OLD. The
only change to SYSTEM.INI was the addition of the line

device=(Windows path)\SYSTEM\WIN32S\W32S.386

C. On some systems it may be faster to run the Setup
program from the machine's hard drive. To do this,
create the directories \DISK1, \DISK2 and \DISK3, copy
the files from the appropriate distribution disks to the
new directories, and run \DISK1\SETUP.EXE from the
Windows File/Run menu.

D. If you already have an older version of Win32s
installed, Setup may not update all the files in the
\Windows\System\Win32s directory. The internal versions
of the files are identical with those on the APL*PLUS III
distribution even though the date-stamps are different.
They will function normally.
E. The Setup program will notify you if SHARE.EXE has
not been run on your machine. APL*PLUS III will run if
SHARE has not been loaded, but file sharing will not
work safely. It is possible without SHARE for two users
to exclusively open the same file, leading to possible
data loss. We strongly recommend that SHARE be run if
there is the slightest chance that files will be
accessed by more than one application at a time.

F. For the advance-release version of APL*PLUS III,
the ability to run multiple copies of APL*PLUS III under
Win32s has been disabled. This has been done to avoid a
serious problem caused by an interaction between
APL*PLUS III and Win32s. We intend to work on this and
will provide the capability as soon as we can.

G. The first time you exit APL*PLUS III, the file
\WINDOWS\APLW.INI is created. This file contains many of
the defaults for the system, and can be edited with any
text editor.

H. For the advance-release version of APL*PLUS III,
⎕USERID has been set to be all blanks. We intend to
replace this with something more meaningful for the final
commercial release. In addition the first element of
⎕AI returns a 1. For the final release, ⎕AI[1] will
report the user's id number under WindowsNT. If you
will be creating any component files under WindowsNT
with the advance-release version of APL*PLUS III, you
should set the access matrix for the component files to
0 -1 0 using ⎕FSTAC before installing the final
commercial release. Otherwise you will have to use
the FILEHELPER function to access the files, since the
user number will have changed.

I. You may want to add a Ucmdfile= entry to the
[Config] section of your \WINDOWS\APLW.INI file. (If
the [Config] section does not yet exist, you can add
it.) Ucmdfile= should show the full path to your
UCMDS.SF file, as in
[Config]
Ucmdfile=c:\aplw\ucmds
This will enable you to execute user commands even if
you change the current APL*PLUS III directory.

J. If you were a Beta tester for APL*PLUS III and have
created some workspaces with one of the Beta versions,
you should clean the workspaces up with the newest
interpreter. To do this, use the WSTOFILE and FILETOWS
functions from the WFCARE workspace.

K. You may want to add Tools to the APL*PLUS III menu
for the ]WED and ]KB user commands. To do this, choose
Options/Tools from the APL*PLUS III menu. For ]WED,
enter "&Wed Ctrl+W" in the Menu Item field and
"]WED" in the Command field. For ]KB, enter
"&Keybd Ctrl+K" in the Menu Item field and "]KB" in the
command field. This will allow you to show a keyboard
template by pressing Ctrl-K.

L. The WED.W3 workspace has been included with the
advance-release of APL*PLUS III. This is the workspace
version of ]WED. If any problems should arise with the
]WED user command before the final commercial release,
it may be easier to solve the problem by correcting a
function in the WED workspace than to correct the user
command file. WED.W3 will not be included with the
final commercial release.

M. A runtime version of APL*PLUS III has not been
included with the advance release. It will be
included with the final commercial release.

N. Two highly experimental features are documented
in this release, onDefine and onDelete Event handler
properties of the system object. Prevailing thought
within Manugistics at the time of this release is
to remove these features in the final commercial
release. You should not write any code that depends
on these event handler properties.