Lescasse Consulting
 Home    Company    News    Prices    Download    Buy    Forums   
Read Me
Buy
Forums
Resume
AntiSpam 1.2
wBackup 1.11
NetAccess 2.0
Visual APL 1.0 
APL+Win 8.0 
APL+Win Products 
APL+Win Objects™ 
APL+Win Training 
APL+Web Services
APL+Web Component 
APL+ History
Dyalog.Net Tutorial
Conferences 
Powerpoint
White Papers
Web Hosting
References
Links
 
APL+Win Objects™ 6.0

TADO5
TADO5 Tutorial
TAPLDraw5
TAPLEdit5
TAPLSession5
TAbale5
TAboutBox5
TAccess5
TAgent5
TBlatMail5
TButton5
TCDO5
TCRC5
TCancelButton5
TCheck5
TCheckGroup5
TChildForm5
TChooseColor5
TChooseFont5
TClipBoard5
TClock5
TCodeStats5
TColors5
TCombo5
TComboDrive5
TComboFilter5
TComboList5
TComboTree5
TCommandBar5
TCommandButton5
TControlClass5
TCueCard5
TDHTML5
TDHTMLEditor5
TDateTime5
TDateTimeFr5
TDates5
TDemoHandlers5
TDisplay5
TDOS5
TDualSelect5
TEdit5
TEditAmount5
TEditDir5
TEditEnter5
TEditFile5
TEditGrid5
TEditList5
TEditListview5
TEditMenu5
TEditNum5
TEditSelect5
TEditSpin5
TEmail5
TError5
TExampleForm5
TExcel5
TExcel5 Tutorial
TFindReplace5
TFOne5
TFTP5
TFTP5 Tutorial
TFileCompare5
TFileMenu5
TFileMenuDef5
TFlatButton5
TForm5
TFormClass5
TFormEditor5
TFrame5
TGetDir5
TGif5
TGifForm5
TGifWb5
TGoMenu5
TGraphX5
TGrid5
TGridDisplay5
TGridPrint5
TGUID5
THLine5
THTML5
THTML5 Tutorial
THTTP5
THelp5
THelpMenu5
TImagelist5
TInfo5
TIniFile5
TInstall5
TInternet5
TJpg5
TJpgWb5
TLabel5
TList5
TListview5
TLock5
TLogs5
TMAPI5
TMath5
TMDIForm5
TMSOutlook5
TMaskEdit5
TMedia5
TMenu5
TMessage5
TModalCall5
TMsgBox5
TNavigator5
TNetwork5
TNonVisualClass5
TODBC5
TOKButton5
TObject5
TOpenFile5
TOption5
TOptionGroup5
TOutlook5
TOutlookMail5
TOWCSpread5
TPDF5
TPFKeys5
TPage5
TPassword5
TPicture5
TPing5
TPopupMenu5
TPowerpoint5
TPowerpoint5 Tutorial
TPrinter5
TProgress5
TProgressDlg5
TQuestion5
TRegistry5
TRegistryKey5
TResource5
TRichEdit5
TSPX5
TSQLDMO5
TScheduler5
TScroll5
TSelector5
TSpinner5
TSplitter5
TStatus5
TStopWatch5
TTest5
TTestError5
TTextFile5
TTimer5
TTip5
TTipForm5
TTLI5
TToolBar5
TToolbox5
TToolsMenu5
TTrackbar5
TTranslate5
TTree5
TVLine5
TViewMenu5
TWebBrowser5
TWebServer5
TWebSite5
TWebSiteNet5
TWinMenu5
TWord5
TYesNo5
    Visits:  768 (37 on line) Last Update: Jan 31, 2008  
    APL+Win 7.3    Printer Friendly  


Warning: Starting with APL+Win 6.2, APL+Win Updates are only available through APLDN Subscriptions (2-year Tier-7 Subscriptions).  3-year Tier-8 Subscriptions have been discontinued.  APL2000 will be publishing more APL+Win updates, more often (one per quarter) which will allow you to stay always up to date with the latest version of the product.
 

Note: click on APL+Win Products in this site left menu to see all enhancements brought to previous APL+Win versions, or click on the following version numbers: 3.0, 3.0.15, 3.5, 3.5.03, 3.6, 4.0, 5.0, 5.2, 6.0, 6.2, 6.4, 7.0, 7.2 and 7.3 to see enhancements of the corresponding version.
 

Introducing APL+Win Version 7.3. Visionary yet practical, the single comprehensive development tool for creating the next generation of applications has arrived. Developers can use APL+Win to create powerful applications quickly and effectively.

APL+Win has been continuously developed and advanced for over 30 years, making it the most robust and reliable development environemnt available. It is built to provide both stand alone application development and to enable integration with the Web Browser and Web Services. By allowing applications to share data over the Internet, APL+Win enables developers to assemble applications from new and existing code. Leveraging legacy code, regardless of the development language.

The APL2000 Subscription Program is designed to help customers to successfully develop, deploy, and manage systems built around a broad range of high-quality APL2000 solutions for the server and the desktop. This program provides a comprehensive, annual service contract that covers all APL2000 products at use within the customers enterprise. It also provides a managed support relationship for customers who have made a significant investment in APL2000 technologies. Pricing varies by subscription level.


What's New in APL+Win 7.3?

APL+Win 7.3
Released November, 2007

APL+Win 7.3 represents the continuing support by APL2000 for the APL application development language on the Microsoft Windows operating system platform.

New GetSession method (System Object)

The GetSession method for the system object returns the function vector representation (ŒVR), character array, character vector, or numeric array for an editor session.

Bug Fixes

Interpreter
  • Addressed problem that caused ŒFREAD ¨ arg to return the argument arg instead of the result from the ¨ function.
  • ŒCOPY and ŒPCOPY system functions reported WS ARGUMENT ERROR.
Session
  • Token searches always start at the beginning of the current line when the cursor is set in the middle.
  • The session reported the error flag for the following valid statement: 1 2 3 + .+ 10 20 30
  • "Replace All", after finding the target, began the replace at the next occurrence instead of the current one.
APL GUI
  • Querying the list property for a style 4 (sorted) combo control did not return a sorted list.
APL Grid
  • Pressing the Enter key in a combo style cell started the dropdown list in the combo cell.
  • Typing the first letter of the last item in the combo cell did not make that item appear in the cell.

System Requirements for APL+Win Version 7.3

Requirements vary for different combinations of components within APL+Win Version 7.3. Review the table below to determine the minimum system requirements for running APL+Win Version 7.3.

Processor 450-megahertz (MHz) Pentium II-class processor
(600-MHz Pentium III-class processor recommended)
Operating System APL+Win Version 7.2 can be installed onto any of the following systems:
  • Windows Vista
  • Windows Server 2003
  • Windows XP
  • Windows 2000
Memory
  • Windows Vista: 1 GB of RAM
  • Windows Server 2003: 512 MB of RAM
  • Windows XP: 512 MB of RAM
  • Windows 2000: 512 MB of RAM
Hard Disk 62 MB of available space required on installation drive


What's New in APL+Win 7.2?

APL+Win 7.2
Released August 10, 2007

Introducing APL+Win Version 7.2. Visionary yet practical, the single comprehensive development tool for creating the next generation of applications has arrived. Developers can use APL+Win to create powerful applications quickly and effectively.

APL+Win has been continuously developed and advanced for over 30 years, making it the most robust and reliable development environemnt available. It is built to provide both stand alone application development and to enable integration with the Web Browser and Web Services. By allowing applications to share data over the Internet, APL+Win enables developers to assemble applications from new and existing code. Leveraging legacy code, regardless of the development language.

The APL2000 Subscription Program is designed to help customers to successfully develop, deploy, and manage systems built around a broad range of high-quality APL2000 solutions for the server and the desktop. This program provides a comprehensive, annual service contract that covers all APL2000 products at use within the customers enterprise. It also provides a managed support relationship for customers who have made a significant investment in APL2000 technologies. Pricing varies by subscription level.


What's New in APL+Win 7.2

APL+Win 7.2 represents the continuing support by APL2000 for the APL application development language on the Microsoft Windows operating system platform.

APLWin72 Localization level specific referencing

A number of system functions have been enhanced to provide the ability to reference functions and variables at specified localization levels. This is particularly useful for writing utility functions such as UCMDs. Such utility functions can now see globals (or values at other localization levels between local and global). This means such functions no longer have to play tricks with special names (such as  prefixed names) to attempt to avoid shadowing issues. They can now just reach out and access shadowed values directly.

As a result of this change, an optional numeric left argument that specifies the scope at which names are interpreted has been added to the following system functions:

  • ŒNL
  • ŒIDLIST
  • ŒNC
  • ŒVR
  • ŒCR
  • ŒCRL
  • ŒCRLPC

In addition, there is a new system function: ŒVGET. This system function is used to access variable values at local or global scope. ŒVGET allows you to peek at variable values around the edge of localizations.

APLWin72  New "APL2000 Home Page" option in the Help menu

The "APL2000 Home Page" option when clicked launches your Internet browser to the APL2000 website.

APLWin72  The CodeWalker Pause menu and Toolbar button are active during function execution

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.

APLWin72  Changed error message when editing ŒNA system function

When editing a ŒNA system function, the new error message reported is Cannot edit associated function.

APLWin72  Major overhaul and refactoring of how tooltips work in APL GUI objects

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.
  • The tooltipstyle property can now be changed after windows are open. It reasserts itself to them automatically. Furthermore, you can now set this property on any window or system object. This allows you to have different style tooltips on different windows.
  • The tooltipenabled property can now be set on any window or system object
  • New onGetInfoTip event for Listview control to request enhanced tooltip info for items.
  • New infotipmask property for Listview control to control which places info tips are fired. This is the same as the "where" codes for the onGetInfoTip event for the Listview control.
  • New per item "info tips" for Tree control so that tooltips can be displayed for individual items similar to how this works in the Listview control.
  • New style 64 for Tree control (noinfotips) to allow suppressing of info tips.
  • New onGetInfoTip event for Tree control to request tooltip info for items.
  • New infotipmask property for Tree control to control which places info tips are fired. This is the same as the "where" codes for the onGetInfoTip event for the Tree control.

APLWin72  New sessions property (System Object)

The sessions property was added to the system object to detect under program control changes in the session manager editor window.

APLWin72  New CloseDoc and OpenDoc methods (Printer Object)

The Printer object has always prematurely opened the document causing the printer icon to appear in the system tray even before any output is actually written to the printer. This means you cannot open a printer for reference purposes only (such as for print preview) without having that icon appear. In addition when you click on the icon it shows a document named "No Document Name" in progress even though nothing has yet been drawn to the printer. But more problematic is the fact that printing to print-to-file drivers (such as PDF drivers) causes the user to be prompted to enter a filename. This last undesirable behavior can be suppressed on some print-to-file drivers (such as the Adobe Distiller) by setting the caption property to "" on the Create/New method line when creating the printer object (before the implicit Open operation can take place). The new OpenDoc and CloseDoc methods were added to the Printer object to address these issues.

APLWin72  New FormatMessage method (System object)

The FormatMessage method on the system object allows formatting of error codes into message strings. This can be used to decode any standard error message number (such as returned by the GetLastError Windows function) including the error property for the Printer object.

APLWin72  New error property (Printer Object)

The error property on the Printer object is used to detect printing errors. If an error occurs during or after the print operation, the error property will have a non-zero value.

APLWin72  APL Grid Printing Enhanced

New methods and properties were added or enhanced to allow better control when printing or print previewing the APL Grid.

APLWin72  Select multiple rows and column headers with the mouse

You can select multiple row and column headers by clicking and dragging the mouse pointer across them.

APLWin72  The onXEditCancel and onXEditComplete events fire for combo cell in the APL Grid

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

APLWin72  The XPrintMetrics method accepts a list of page numbers in the APL Grid

The XPrintMetrics method now accepts a list of page numbers and returns an array of (row column) ranges corresponding to each page.

APLWin72  The maximum number of columns in APL Grid increased to 2147483647

The maximum number of columns in APL Grid has increased from 32000 to 2147483647.

APLWin72  New XEnsureVisible method (APL Grid)

The XEnsureVisible method, when invoked, ensures that a cell is visible in APL Grid

APLWin72  New xDragCell property (APL Grid)

The xDragCell property specifies the last cell in a selection in APL Grid.

APLWin72  EnsureVisible option added to xActiveCell property (APL Grid)

Updated the xActiveCell property with the EnsureVisible option.

APLWin72  Bug Fixes

Interpreter
  • APL+Win terminated when the )RESET system command was executed during the execution of ŒCMD and ŒDL.
  • The SI stack did not properly reset when invoking the )RESET system command while in a loop executing ŒDL, ŒWGIVE or other callback functions.
  • The execute primitive did not display correctly in ŒDM.
Session
  • The "Set Watch Points" hint for the Set Watch Points menu item did not display in the status bar.
  • An extra line separator appeared in the Window menu in the session manager window.
  • When starting the online help with the F1 key, the help window remained on top of the APL+Win session window.
  • 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 the 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).
APL GUI
  • Tooltips for CommandButtons were disabled when a style 256 Combo was a child of the CommandBar.
  • 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.
  • The title bar in a Form appeared after the Form had been created hidden and without a title bar (caption='' and border=3).
APL Grid
  • Setting the xView property deselected the selection in the grid.
  • Setting the xActiveCell property did not scroll the active cell into view when a selection was made.
  • The active cell could lose its borders when scrolling horizontally.
  • 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.
  • Within a selection, pressing Shift+Tab did not move the active cell within the selection in reverse tab order.
  • In some cases, the active cell would loses its borders when scrolling horizontally.
  • The top-left corner header cell did not appear in print preview mode.
  • The gridlines did not print.
  • 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".
  • Setting the xPrintZoom property to a large value caused APL Grid to go into an infinite loop (when executing the XPrintInit method).

System Requirements for APL+Win Version 7.2

Requirements vary for different combinations of components within APL+Win Version 7.2. Review the table below to determine the minimum system requirements for running APL+Win Version 7.2.

Processor 450-megahertz (MHz) Pentium II-class processor
(600-MHz Pentium III-class processor recommended)
Operating System APL+Win Version 7.2 can be installed onto any of the following systems:
  • Windows Vista
  • Windows Server 2003
  • Windows XP
  • Windows 2000
Memory
  • Windows Vista: 1 GB of RAM
  • Windows Server 2003: 512 MB of RAM
  • Windows XP: 512 MB of RAM
  • Windows 2000: 512 MB of RAM
Hard Disk 62 MB of available space required on installation drive


 
What's New in APL+Win 7.0?

 
APL+Win 7.0
Released February 7, 2007

Test ŚMOM Name Trains

A compound name is a syntactic construct used to refer to a member of a MOM Object System object. For example, the following APL expression contains two compound names:


      fuel.weight + wing.tank.weight
 

Prior to this version, all compound names were restricted to just two simple names. Version 7.0 removes that restriction except for compound names that are the target of an assignment.

Version 6.4 would give an error for the second compound name in the example. Now this name would be interpreted as:



      t <- wing.tank
      t.weight
 

where "t" is an otherwise unused temporary variable.

Arbitrarily long compound names, such as:



      headBone.neckBone.backBone.pelvis.thighBone.kneeBone.shinBone
 

are supported.

Note: The inner names must be member variables; otherwise, a VALUE ERROR is given.

 

Test  Support the Recycle bin for the )Drop ws command.

The Preferences dialog box contains a new checkbox labeled 'Use Recycle Bin on DROP'.

Checking this option changes the )DROP command behavior to save the dropped Workspace in the Windows Recycle bin. The user will see a Recycle dialog box in the process. Leaving the box unchecked retains the old behavior of the )DROP command.

Note on Microsoft Vista:

This feature uses a system DLL that is not supported in Vista. Therefore, this feature is currently disabled under Vista and the 'Use Recycle Bin on DROP' checkbox in the Preferences dialog is disabled.

Test  Bug Fixes

  • Bug Fix: obj_ref.[]FX failed when the header line contained a quad-name followed by a (blank) space.
     
  • Bug Fix: 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: 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.

  • This document is an overview of the new features in APL+Win version 6 and covers releases 6.0, 6.2 & 6.4.  Features covered are extensions to the language, improvements and changes to the session manager, additions to the graphical user interface (GUI), system interface and other non-GUI related facilities. Much of this document was originally written for the “What’s New in APL+Win version 6.x” document distributed with their respective releases of APL+Win.

    Contents



    APL+Win 6.4
    Released October 13, 2006

      xPrintOptions Property (APL Grid)

    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.

      ŒWCALL 'W_Def'

    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.  I followed that same pattern and referencing a string via W_Ini returns the first definition found in W_Def-cache, INI, or ADF.

      ŒWCALL'W_Reset'

    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.

      Recent Lines Dialog

    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.

    Test
    Figure 9  Recent Lines dialog

      Resize Grip Added To Fetch Objects and Open Objects Dialogs

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

      Tooltipstyle Property for System Object

    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:&nbsp;
    1) The balloon style tooltip on occasion flicker where the balloon displays, hides, and reappears;
    2) the Page doesn’t respect this style value

      Suppressing the "Unable to edit object" Message in onEditStart Handler

    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.

      Numeric Values with Full Precision (APL Grid)

    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 'xXml'
          ...

      <row index="1">
       <cell row="1" col="1">
       <value hex="3ff3c0ca428c59e1" type="number">1.23456789012345</value>
       </cell>
          ...

      The xFormatMode Poperty (APL Grid)

    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.

      Improved Handling of Missing Values in APL Grid

    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 xNumber, xDate 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 xNumber, xDate 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.

    xMissingValue property:

         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 xNumber, xDate, 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 xNumber, xDate, or xCurrency property with empty string values ("").  However, when such numeric missing cells are referenced via xNumber, xDatexCurrency, 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 xNumber, xDate and xCurrency properties.

    The xMissingValue property also controls what value is recognized as the missing value when you set a numeric value in the xNumber, xDate, xCurrency, 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 xNumber, xDate, 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 xNumber, xDate, and xCurrency properties.

    xMissing property:

         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.


    APL+Win 6.2
    Released July 17, 2006

      The Unique Primitive Function

    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

      Printer Margins for the Session Manager

    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; in, mm, and pt. The default margins are 0.75”, 0.5”, 0.75”, and 0.5” for Left, Right, Top, and Bottom, respectively. Figure 8 shows the Printer Margins settings in the Editor Options dialog.

    Test
    Figure 8  Editor Options dialog

      The )OUTPUT STRICT Command Added

    )OUTPUT STRICT

    This command also 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.

      ŒWSELF localization

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

      Zip and Unzip in APL+Win

    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.  The Zip class is manipulated with ŒWI

      The ŒFX System Function for MOM Object System Objects

    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


    APL+Win 6.0
    Released April 26, 2006

      ŒMOM Object System

    Note:  The MOM object system is evolving and its implementation is not complete.

    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,

    For a more in‑depth description of the MOM object system, refer to Bill Rutiser’s (the designer of the MOM object system) session “The MOM Object System”.

      Try-Catch Exception Handling

    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 :ENDRY 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.

      Filter Option in the Open and Fetch Objects Dialogs

    The filter option in the Open and Fetch dialogs that 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.

    Test Test
        Figure 1  Empty filter box, all functions listed  Figure 2  List functions starting with “Get”

      Session Logging Info in APLW.INI

    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:

    sysver   the contents of Œsysver
    exe   the executable’s full path and file names, and its modification time
    user   the user and computer name

    With

    [Session]
    Logging System Info=sysver,exe,user

    set in APLW.INI, Figure 3 illustrates this use.

    Test
    Figure 3  Session logging info.

      Handling Implicit Output in the Session

    Code that generates unintended implicit output has always been difficult to find in an APL application.  A new command: )OUTPUT 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.


    )OUTPUT
    This command prints the current implicit output state.  The other three commands (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”.

      Highlighted Scrolling Speed Control

    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.

      Session Manager Editor Events

    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 onEditStart 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.

    dirty Property (Printer Object)

    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.

      APL+Win File Shell Extension Control

    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.

    Test Test
        Figure 4:  Component Summary page for an APL+Win file Figure 5:  Same for a colossal component file with data in comp 0.


      Reference the File Tie State Information for a File

    The ŒNTIE, ŒXNTIE, ŒXFTIE, Œ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 Access granted to other users
       
    0 = read access 16 = no access allowed exclusive)
    1 = write access 32 = read access allowed, write access denied
    2 = read and write access 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.  The values are 0 and 1 for a share tie and an exclusive tie, respectively.

      ŒDL Enhanced to Yield CPU to Windows

    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.

    Test Test
    Figure 6:  CPU Usage with “ŒDL 10” in v5.2 Figure 7:  CPU Usage with “ŒDL 10” in v6.0

      ŒDR Enhanced to Deflate and Inflate Data Objects

    New functions 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. 

    For more detailed information on this topic, refer to Mark Osborne’s presentation “Deflation, Inflation & Archives in APL+Win”.

      New Support for Unicode Characters Arrays

  • The new ŒUCS function was added to create Unicode character arrays.
  • The ŒTYPE and ŒDR functions now accept Unicode character arrays.
  • The following structural primitives currently accept Unicode character arrays as arguments:  join and ravel (), match (­), reshape and shape (½), pick (œ), enclose (), first ().
  • The new unicodebstr property allows for the passing of Unicode character arrays to and from BSTR string arguments of ActiveX controls and objects.
  •   New Grid Enhancements

    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 (onXVirtualLoad).  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 we also added Row defaults 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 cut, copy, 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 (onXReplEnd) 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.


    Future Enhancements

    The following enhancements are being considered for future versions of APL+Win:

      Activation in APL+Win

    Incorporate license activation in APL+Win and redistributed runtime applications.  For more detailed information on this topic, refer to Patrick Parks’ presentation “Cover Your Assets Using Application License Activation”.

      APL+Win Bridge to .NET

    This enhancement will allow APL+Win programs to call into .Net application code and use .NET class library facilities.  This may be very useful for those transitioning to .NET.  For more detailed information on this topic, refer to Bill Rutiser’s presentation “Bridge between APL+Win and the .NET Environment”.

      Enhancements to Colossal Files

    1. Develop a client/server version of Colossal files to reduce network related failures that cause damaged files.
    2. Provide tools for analyzing and repairing corrupted colossal files.

      Support for Windows XP Themes and controls

    This enhancement will add support for Windows XP Themes and controls to APL+Win.  This will give APL+Win Windows applications the appearance of a true Windows XP application. Figures 10 and 11 shows forms without and with the Windows XP controls.

    Test Test
    Figure 10  Form without Windows XP controls Figure 11  Form with Windows XP controls

     This entire Web site has been dynamically generated by APL+Win Objects™ 6.0
     For all questions contact:  info@lescasse.com
     Copyright © 2003-2005 Lescasse Consulting. All rights reserved.