Current issue

Vol.26 No.4

Vol.26 No.4


© 1984-2024
British APL Association
All rights reserved.

Archive articles posted online on request: ask the archivist.


Volume 11, No.3

Conversion from APL2 to APL*PLUS III

by Dieter Dueren

I. Hard- and Software:

Mainframe:     2 IBM/390 under MVS/TSO

PC:     486DX and 486DX2 under DOS 5.06.2/Windows 3.1
Novell Network and Stand-alone PC

APL:     1. IBM Mainframe APL2 Version 2.1.00
2. IBM APL2-PC Version 1.02 (DOS and Windows)
3. Manugistics APL*PLUS III Version 1.2 (Windows)

II. Overview

IIa. User-Departments

APL will be installed in the following sections:

  1. Business Plan
  2. Balance Sheet
  3. Re-insurance
  4. Forward Sales
  5. Proposal
  6. Customer Service

Number of APL programmers:     c. 30 people
Number of End-users:          >120 people

IIb. Applications

  1. Product development (PC), e.g. programs for calculating premiums, surrender values, surpluses, and the analysis of (product) data.
  2. Technical individual calculations [i.e. for individual policyholders] (mf with DB2), e.g. for altering contracts or investigating surrender values.
  3. Supporting the Sales department (mf and PC with interfaces to Word and Excel) , e.g. offering programs for special products [bespoke programs for one-off solutions].
  4. EDP (Electronic Data Processing) compensation applications (mf with DB2, GDDM, DCF, AFP, ISPF/DTL-panels), e.g. documentation programs for special products, or altering proposals.
  5. Draft and testing of the EDP programs for stock control (mf and PC).
  6. Balance sheet and calculating profits (PC, FS-Panel, Word, Excel).
  7. Risk Analysis (PC, Word, Excel).
  8. Calculating premiums, contribution tables [lit: profit/gain share tables] and example calculations.
  9. Managing the system of the Re-insurance department (PC, FS-Panel, Word, Excel).

III. Why are we installing APL?

  1. APL contains powerful functions or, rather, signs/characters which are derived from mathematical logic.
  2. With APL it is possible to portray formulae in a speaking form. Because of this, quick development and changes in the interpreter system are possible.
  3. APL supports many [different] data structures (scalar, vector, matrix) with general functions, which are applicable for all structures.
  4. Quicker building of screen panels through FS-Panel (PC) and ISPF/DTL panels (mf) or internal tools (AP124) is possible.
  5. Complete and easy control of print queues and printers (NEC dot-matrix, HP Laserjet) is possible.
  6. The interpreter allows easy error-tracking through stop-vectors. Stepping through programs, and controlling or altering data in the workspace during execution is possible, leading to shorter development times.
  7. Mainframe and PC APL are almost compatible.
  8. ...

IV. Why have we converted?

IVa. Mainframe >> PC

  1. Saves CPU costs
  2. Response times
  3. Independence from mainframe
  4. Individual system configurations
  5. Quick and higher quality printing
  6. Multi-tasking


  1. APL*PLUS runs under Windows 3.x, Windows for Workgroups 3.x and Windows NT. According to Manugistics it also already runs under beta versions of Chicago. APL*PLUS will be developed for a 32-bit operating system. Partly through downgrading it has been adapted to run on the 16-bit Windows versions.
  2. The APL2/2 versions much advertised by IBM were not available for delivery for months for the IBM Standard. The demo version we tested crashed as soon as the Editor was called. It was recognisable that IBM would keep the concept of partner-programs. IBM tried to break into the market with dump-pricing of APL2/2 and also OS/2.
  3. Manugistics has kept to its timely promises concerning updates before.
  4. IBM has kept us waiting more than a year for APL2-PC Version 1.02. The ability to run under Windows was not mentioned in the official documentation. Rumour has it that IBM has reduced the number of APL2 developers.
  5. IBM is holding back on the notification/advertising of an APL2 Windows version.
  6. The market, our customers, use Windows almost exclusively.
  7. The execution speed is c.100% higher with APL*PLUS.
  8. The printing of APL characters is possible on every Windows-capable printer.
  9. [! somebody can't count!]
  10. APL*PLUS is a Windows application, that is, all Windows features (Clipboard, DDE, etc.) are available, and the co-operation with other Windows applications (Word, Excel, etc.) is guaranteed. Multi-sessions (MDI) are possible.
  11. Built-in additional features:
  12. Windows dialog box editor (WED)
  13. Debugger
  14. Online Help
  15. Function calls to external Codes (16- and 32-bit DLL, VBX, etc.)
  16. Lots of service functions and examples are supplied.
  17. The possibility exists of defining one's own user-commands. One can store these outside the workspace.
  18. Instead of APs many system functions are supplied, which can also be called from functions.
  19. Control structures (IF, WHILE, FOR, etc.) quicker and more readable code.
  20. Data handling results from simple but effective system functions.
  21. Two keyboard layouts are available (national and classic APL-keyboards).
  22. Runtime versions can be distributed free.
  23. Limited hardware prerequisites (no co-processor necessary, though recommended).
  24. Qualified support through Dittrich & Partner. Dittrich & Partner themselves now only program in APL*PLUS.
  25. APL*PLUS will be constantly developed.
  26. Manugistics are working on the development of APL*PLUS very closely together with Microsoft.

V. Disadvantages of Conversion

  1. APL*PLUS is not fully compatible with IBM-APL2 (for example Format by Example, Partitioned Enclose, Take and Drop with axis are impossible, Evolution Level; see also Appendix 1).
  2. All programs with interfaces (Input, Output, Data Handling) must be newly installed or revised.
  3. Some programmers have special skills in APL2-PC deeply engrained (e.g. storing data in special APL Data structures) and cannot now change.
  4. Lots of manpower is needed to convert old workspaces.
  5. Old hares [experts in the old techniques] can only be brought round from a text-oriented development environment to the graphically-oriented Windows with great difficulty.
  6. A re-training in Windows and APL*PLUS is necessary.
  7. APL*PLUS is more expensive than APL-PC from IBM.
  8. Without previous knowledge of Windows programming in C and/or C++ one cannot adopt low-level Windows programming in APL*PLUS.
  9. The classic keyboard layout is not completely identical to the German IBM-keyboard. Three keys are differently arranged.
  10. Extra/additional hardware must be bought for the transfer from the mainframe to the PC.

VI. Conversion Procedures

Because of a lot of “old applications” which we must maintain, and because of the introduction of new tariffs/rates from 1/7/94, we could only convert the mathematical core of our new insurance calculations up to now. At the same time we have proceeded as follows:

  1. Analysis of the two APL dialects concerning syntax and functionality.
  2. Installation of search functions, which should localise the difficult statements, and if found alter them. The complex functionality and the abundance of variables in these statements (e.g. Partitioned Enclose, Format by Example, Activate) led us however to throw out this idea.
  3. Should we obtain the complex functionality of these problematic statements?
  4. Because the answer to the previous question is no, we have decided to transfer our new maths core from mainframe to APL*PLUS, and to start work on the main functions by trial and error.
  5. So it turned out that in most cases of the previously found differences only small/limited problems showed up. In c. 90% of cases a syntax can be found which runs on both platforms, that is we used statements from an intersection of both dialects. In other cases we installed platform-dependent functions (see Appendix 2).
  6. New applications, which will only run on the PC, will only be installed with APL*PLUS.
  7. We will progressively convert almost all our old applications, either when the need arises or when we have time. We assume that this conversion will be finished in about 3 years.
  8. In our new applications we are optimising the code for installation of runtime-modules (e.g. control structures), in order to achieve a faster execution speed. Through analysis we use the supplied MFFNS functions of the workspace. In the maths core for insurance calculations, however, we only remove (all) comments and insert Diamonds. This last measure increases the execution time by c. 5%. All measures together give an improvement of c.10%

Our Conclusion

APL*PLUS III will run on the operating system with the largest market acceptance. It offers a development environment that is state of the art. It shortens the development time of powerful applications with standard interfaces, and can be delivered free to customers on demand [using runtime] in the form of Windows applications. The printed output can be sent to standard tools (Word, Excel), and qualitatively higher value results [i.e. better/higher quality results]. In spite of all the disadvantages we believe that the advantages of APL*PLUS outweigh them, and that the future will belong to APL*PLUS.

Appendix 1: Problems of the Evolution Level

APL*PLUS III uses the switch Evolution Level (=0, 1 or 2) so that source code that was written under previous versions should still run. In the course of APL*PLUS development the implementation has changed some APL characters.

If one sets the Evolution Level to 0()evlevel 0), all functions in which this problem appears crash with the error message (EVOLUTION ERROR).

The Evolution Level will not be stored with the respective workspace. On starting APL*PLUS III Default Level 2 is installed.

As model examples of the above problem:

Appendix 2: Some Platform-dependent Functions

(webpage generated: 29 October 2007, 14:23)

script began 7:46:45
caching off
debug mode off
cache time 3600 sec
indmtime not found in cache
cached index is fresh
recompiling index.xml
index compiled in 0.2279 secs
read index
read issues/index.xml
identified 26 volumes, 101 issues
array (
  'id' => '10003000',
regenerated static HTML
article source is 'HTML'
source file encoding is 'UTF-8'
URL: mailto:-*- => mailto:-*-
URL: mailto:-*- => mailto:-*-
completed in 0.2499 secs