Skip to content

Exploring ActiveX Data Objects from a Dyalog-APL Point of View

Vector 16:4, page 116

The text of this article is not yet online. No complete scan of this issue has been found. The only copy found, on vector.org.uk, is damaged: its page images are lost, but the text machine-read from them survives, shown below (help find a scan).

Unedited OCR text, machine-read from a scan now lost: it contains errors, and its APL is wrong. Shown for searching.

VECTOR Vol.16 No.4

Exploring ActiveX Data Objects

from Dyalog APL

by J. Korablev and G. Roche (Gunter.Roche@gmx.de)

Abstract This paper presents a short overview of the ActiveX Data Objects (ADO) model and the main steps for application development in Dyalog APL. ADO was created by Microsoft in order to provide an easy-to-use application level interface to currently known data sources. This interface is based on the underlying system service OLE DB and is used in tools for rapid application development. ADO is easily accessible for users, because it is included with popular Microsoft products such as Internet Explorer 4.0, Internet Information Server 4.0 etc. ADO is also available for download from the Microsoft Web site (the SDK, the Microsoft Data Access Components 2.0, and the Data Access SDK). The implementation of ADO in Dyalog APL is based upon OLE Automation, a mechanism that allows one application to control another, and which provides the ability to mix code written in different programming languages.

Introduction. OLE DB and ADO are the low and high levels of interface that enable Universal Data Access. This is Microsoft strategy for providing access to all types of information from a variety of data sources (relational and non-relational data, mainframe ISAM/VSAM, hierarchical databases, emails and file system, text, graphical, and more). For each kind of the data source there is a specific service component, called a provider. An integral part of OLE DB is the OLE DB Provider for ODBC, which enables OLE DB to communicate with today’s popular ODBC drivers and data sources.

There is a definite difference between ADO and OLE DB from the developers’ point of view, OLE DB enables universal access to any data. ADO facilitates it for developers of programs. Since ADO is located on top of OLE DB, it has a low memory overhead, and a small disk footprint. ADO supports key features for building client/server and Web-based applications, including the following:

* Independently-created objects. This allows the programmer to create and work only with the objects that are required.

116

VECTOR Vol.16 No.4

* Improved performance by updating all data on the server in a single update (Batch Updating). * Support for stored procedures. ¢ Different cursor types.

* Automatic or manual parameters management for better performance and more control.

ADO is implemented as an OLE Automation Server and is accessed from Dyalog APL using the OLEClient object. Note that OLE is very dependent on the Visual Basic programming language and APL syntax is more restricted than Visual Basic. This discussion ADO object model aims to cover the main steps involved in application development with Dyalog APL.

ADO Object Model ADO consists of 7 objects as described following figure:

Connection a

Recordset

\ |

Figure 1. ADO object model and the interaction between objects

The Connection (drives a connection under a definite provider), Command (executes a command, such as a command text, stored procedure, command prepare etc.), and Recordset (a set of records returned by commands) objects are top-level objects that can be created and destroyed independently. They are

117

VECTOR Vol:16 No.4

registered in the Windows registry as ADODB.Connection, ADODB.Command, and ADODB.Recordset, respectively.

In addition to these three top-level objects, there are four other subsidiary objects, that exist only within the context of their parent objects, and cannot be created separately, namely Parameter, Field, Error and Property.

The Parameter (ADODB.Parameter in the Windows registry) object can be created. independently of a Command object. In this case it must be included in a Parameters collection Command before it is used command. Parameter objects can be created from the Parameters collection too, where they are placed automatically result statement syntax setting Command object. Calling its Execute method assigns corresponding Value properties to all Parameter objects in the collection. It provides the facility to use bind variables in SQL expressions. The Field object provides structural information about a single column of data within a Recordset. The Error object supplies extended error information about an error condition generated by the provider. The Property object describes provider-defined characteristics of an ADO object.

Each of the Error, Property, Parameter and Field objects are accumulated in the corresponding collections: Errors, Properties, Parameters, and Fields. (A Collection is a special kind of object that contains a set of other objects; you can think of it as a vector of objects.)

There are two ways to access the properties and methods of ADO objects from Dyalog APL. If, when an instance of an ADO object is created as an OLEClient object, the AutoBrowse  property is set to 1 (the default), the methods and the this object appear as functions and variables in the OLEClient namespace. In principle, with a few exceptions, a method corresponds to an APL function and a property corresponds to an APL variable. This is possible because ADO objects have a type-library file with type information, that includes the name of the methods and properties exported by the object, together with descriptions of the arguments to each method and descriptions of the of each property. An alternative, is to specify AutoBrowse as 0 when creating the OLEClient. This causes Dyalog APL to create an empty namespace whose methods are accessible using 3 UNQ and whose properties may be queried and set using This approach is faster, because APL does not have to read the object’s type-library for the information it needs to establish functions and variables corresponding to the object’s methods and properties. However, in practice it is much better/safer/more maintainable to leave AutoBrowse as 1.

118

VECTOR Vol.16 No.4

Basic ADO Application Steps This section describes the general flow and the for developing ADO applications in Dyalog APL. Most such applications use some variation of the following steps:

* Connect to a data source by means of a Connection object. Optionally, begin an explicit or implicit transaction.

* Optionally, create a Command object to represent an SQL command with or without parameters.

* Optionally, if a parameterized command is involved, specify columns, tables, and values in the SQL command as variable parameters via the Parameter object.

« Execute the command. This can be carried out by the Command, Connection, or Recordset object.

* After executing, a result is returned in a storage object Recordset.

* Optionally, view, sort, filter, and navigate the data in a Recordset.

* Edit, add, delete the data in a Recordset. Work directly with columns or rows Fields collection and Field objects.

* Ifitis all right, update the data source with changes from the object Recordset.

* Ifa transaction was used, commit the changes made during the transaction. This is a function of the Connection object.

* Retrieve the providers’ information about each object via a Properties collection. Each collection contains a set of Property objects specific instance of an object.

* Retrieve the information about errors during connection (Error objects via Errors collection).

The interaction between the ADO objects (methods, properties and objects collections for object creation) was shown in Figure 1.

Open a Connection The first step in any application is the connection to the data source. The data source is described in a connection string. The parameters, specified in a connection string, may differ for each provider and data source.

119

VECTOR Vol.16 No.4

The main way for ADO to open a connection is to call the Connection.Open method with connection string, user id, password, and connection scheme (if undefined -1) as parameters:

4 Create object 'ADODB.Connection' eit#.OWC'OLEClient' 'ADODB.Connection' a Open connection #.C1.Open' Provider=SQLOLEDA ;UserID=sa;Password=;database=pubs' sat ''{-4)

Another way is to invoke the shortcut method, Recordset.Open, to both open a connection and instantiate a command object in one operation:

a Create object ADODB.Recordset' "Ri'#.OWC'OLEClient' 'ADODB.Recordset' 8 Open a connection Con+'Provider=SQLOLEDB;User ID=sa;Password=;database=pubs' #.R4.Open select « from authors' Con a Create namespace for this connection from property "Ct' #.0WC #.R1,ActiveConnection a Create namespace for a command object from property 'Comi’ #.0WC #.R1,ActiveCommand

Number 2 in Open means dynamic cursor without restrictions, 3 means optimistic lock type, 1 interprets the text string in the first parameter as an SQL-command,

Alternatively, it is possible to use the Command object:

a Create object 'ADODB.Command' Comi'#.0WC 'OLEClient' 'ADODB.Command' a Open a connection #.Comi .ActiveConnect ion+' Provider=SQLOLEDB;User ID=sa;Password=;database=pubs' a Create namespace for this property '#,.C1'#.0WC #,.Com1,ActiveConnection

Methods for OLE objects require a set of parameters of which some (or even all) are optional. Typically, the values for missing parameters are supplied by defaults or are allocated instead from properties. For example, the Open method of the Recordset object takes up to five parameters that specify Source, ActiveConnection, CursorType, LockType and Options respectively. Each of these can be specified by an equivalent property and then omitted from the method call itself. For example, from Visual Basic for Applications (VBA):

xstEmployees.CursorType = adOpenKeyset rstEmployees.LockType = adLockOptimistic rstEmployees.Open "employee", cnni, adCmdTable

120

VECTOR Vol.16 No.4

APL does not have any syntax to allow you to omit an element from the argument to In Dyalog APL, this problem is circumvented by naming the appropriate parameters explicity. Only those parameters that follow missing ones need to For example:

rstEmployees.Cursor?ype+ad0penkeyset rstEmployees.LockType+adLock0ptimistic rstEmployees.Open'employee' 'cnni'('OptionstadCmdTable)

Create a Command A query command, typically written in SQL, requires the data source to return a Recordset object, containing rows of requested information, or used to change data in the database. The following steps with the collections, methods, and properties of a Command object will do it:

* Define the executable text of the command (for example, an SQL statement) in the CommandText property.

* Define parameterized queries or a stored procedure. In the command, ? placeholder substrings are replaced with parameters when a command is executed. This is possible only with the Command object.

* Specify the type of command in the CommandType property.

¢ Control whether or not the provider compiled version of the command in the Prepared property to optimize performance.

#.Comi .CommandText+'select * from authors where state=?' #.Com2 ,CommandType+1 #,Com1.Prepared+1

Depending on the the data provider, some Command collections, methods, or properties may generate an error when referenced.

Execute the Command There are three methods that Recordset: Connection.Execute, Command.Execute, and Recordset.Open.

These methods are optimized to provide the each object:

* Both Execute methods return fast but read-only, forward-only Recordset objects.

121

VECTOR Vol.16 No.4

"#,R1'#,.C1. Execute select +» from authors' Connection object a Command object without parameters #,Com\ .CommandText+'select « from authors where state=''CAt'! #.Ri'#,Comi.Fxecute 1 '' 4

The second parameter of the connection object method and the first parameter of the command object method is meaningless in Dyalog APL (any number). Both of the last parameters specify command text interpretation.

* The Command.Execute method allows the use of parameterized commands that can be invoked repeatedly.

a Command object with parameters #,Comit .CommandText+'select » from authors where state=?' '#.R1i'#.Coml.Execute ('CA') 1

* As mentioned above in the example of creating a connection, the Open method allows you to define the strategy and object used to access the data in the CursorType parameter; and the degree of isolation from other users, and whether the cursor should support updates in immediate or batch modes in the LockType parameter.

Manipulate the Data

In ADO almost all processing of data is performed using Recordset objects. All Recordset objects consist of records (rows) and fields (columns) and are used to manipulate data from a provider:

1, Use MoveFirst, MoveLast, MoveNext, and MovePrevious methods, as well as the Move method, and Filter properties to navigate the data. Forward-only Recordset objects support only the MoveNext method.

2. Examine the position in the data set by means of the BOF and EOF properties for a begin and end of file during processing, the edit mode via the property EditMode, the state of the object with State property.

3. Fetch the data using the GetRows method.

4. Edit the data the fields of the current record: insert using the AddNew method, update using the Update methods, delete via the Delete method. If a provider supports batch updating, more than one record can be transmitted in a single call to the database by means of the UpdateBatch method.

"Ri'#.OWC'OLECIient' 'ADODB.Recordset' a Connect to OLEDB Provider for ODBC and open the Recordset object C+' Provider=MSDASQL ;UserID=sa;Password=;Data Source=LocalServer;database=proba' #.R1.0pen select * from table' C231

122

VECTOR Vol.16 No.4

a Fetch 5 records in the variable 'Table’ #.Pable«#.R1,GetRows 5 a Return to first record #,R1.MoveFirst #.R1L.Flds #.OWC #.R1.Fields #.R1.Plds.Fldi'#.R1.Flds.Item 0 #,.RL.Plds.Fld2'#.R1.Flds.Item 1 '#.R1.Flds.Fld3'¢.Ri.Flds,Item 2 #,R1,AddNew © Switch on insert mode 4#.R1.Flds,Fid1,Valueeé Set value of 1.field #.R1.PFlids,Pld2.Value+'description' a Set value of 2.field a Insert large data by means of AppendChunk method of Field object #.Ri.PFlds.Fld3.AppendChunk First part of long data. ' #.R1.Pids.Pld3.AppendChunk Second part of long data.' #.R1.Update @ a Update database Create fields collection Create 1. Field object Create 2. Field object Create 3. Field object

peepoaoe

Control the Transactions

When a set of changes that were made to the data source must be saved or cancelled as a single unit, the following transaction methods of the Connection object are employed:

* BeginTrans begins a new transaction;

* CommitTrans saves any changes and ends the current transaction;

* RollbackTrans cancels any changes made during the current transaction and ends the transaction.

In the above code #.C1.BeginTrans included, for example, after #.R1.MoveFirst and #.C1.Commitfrans or #.C1.RollbackTrans after #.Ri.Update @.

If a provider supports it, the transaction can also be controlled using the Execute method of the Connection object or Command object, with command text for the begin, commit and rollback transaction (for example, BEGIN TRAN', COMMIT TRAN!, ROLLBACK TRAN" of TransactSQL of MS SQL Server).

Not all providers support transactions. The sign that the provider supports transactions is the provider-defined property Transaction DDL’, appearing in the Connection object’s Properties collection. If the provider does not support transactions, calling one of these methods will return an error.

Retrieve the Information from Collections

The main information about the Property, Parameter, and Field objects (from the corresponding collections Properties, Parameters, and Fields) can be retrieved

123

VECTOR Vol.16 No.4

using the Name and Value properties. Name provides the name of an object string value, Value indicates the value assigned to a Property, Parameter, or Field object and has the Variant data type. Only Name properties are uniform for these objects. Other properties are mainly different.

Any operation on the database involving ADO objects can generate one or more data provider warnings and errors. As each error or warning occurs, one or more Error objects are placed in the Errors collection of the Connection object.

An Error object’s properties can be retrieved in order to obtain specific details about each error or warning, including the following:

* The Description property, which describes the situation in detail.

* The Number property, which contains unique identification of an error or a warning.

* The Source property, which identifies the origin of a problem.

* The SQLState is a five-character code for any problem encountered during the Processing of an SQL statement.

* NativeError properties, which describe the provider-specific error or warning code.

The procedure with all these objects is similar:

c1'#.QWC'OLECIient' ADODB.Connection' a Open connection #.C1.Open' Prov ider=SQLOLEDB; UserID=sa;Password=;database=pubs' 'sat ''(-1) '#.Ci.Errs'#,QwWe #.C1,Errors a Create errors collection '#.Ci.Errs.Erri‘#,C1.Frrs.Item 0 a Create 1. Error object DISPLAY #.C1.Errs.Erri.Number a Show error number DISPLAY #.C1.Fres.Erri.Description 8 Show error description #.C1.Errs.Clear 8 Remove all of the objects from a collection

The property Item of the Errors collection (and of other collections too) takes a parameter (an index) and returns an object, so it actually behaves more like a method.

Comparison between Different Approaches to Data Access

Dyalog APL can choose from many of Microsoft's technologies for accessing data sources, These include:

* Open Database Connectivity (ODBC) for relational data via the ODBC API code,

124

VECTOR Vol.16 No.4

* Remote Data Objects (RDO) for ODBC data.

* Data Access Objects (DAC) for local data (Microsoft Jet database engine).

« DAO for ODBC data (ODBCDirect).

* Microsoft ActiveX Data Objects (ADO) for all types of data.

All the above-mentioned object models (RDO, DAO, ODBCDirect, ADO) were invented to give developers the ability to avoid direct programming of the corresponding API. They are an artificial layer over this API, and provide all their functionality in an object model of type easy-to-use , rather than in a collection of function calls ina DLL.

Today, there are features that are not available in ADO, but which are present in one of the alternative object technologies. However, the aim of ADO is to become a superset of DAO and RDO.

One of ADO’s benefits here is the declaration of a simple and understandable language for accessing data. ADO now plays the role of the standard data access language for Microsoft tools and program products. For example, the current versions of Internet Information Server, Internet Explorer, Visual Basic, Visual C++, and Visual J++ ADO as their primary data access and control language. The next release of Microsoft Office promises to do this too.

A list of the major features found in RDO or ODBC API applications, is presented in the following table.

125

VECTOR Vol.16 No.4

ADO, DAO, RDO and ODBC API Feature Comparison

Feature ODBC ADO DAO RDO API 2.0

Type of data source ODBC Any Microsoft ODBC Jet, ISAM, ODBC

Level of programming Low High

Asynchronous connection N Y N Y

Asynchronous running queries N YX

Disconnected Recordsets N- Y N Y

Persistent Recordsets N Y N N

Events N YX N Y

Distributed transactions N Y

Free-Threaded N Y

Independently-created objects N Y

Queries as methods N Y N Y

Microsoft Jet Database Access YX N

The use of ADO from Dyalog APL compared with the base ODBC API DLL shows on the one hand a little more general performance of the DLL-approach, because of the usual benefit of compiled DLLs vs. interpreted Dyalog APL. On the other hand, the performance of the base function calls in the DLL compared to the speed of the methods in ADO for connecting, query preparing, executing, fetching and closing is practically equal. Finally, ADO is more universal than the DLLs in offering functions, data types, and data sources. Additionally, ADO provides full control of all steps for data access in Dyalog APL. The

small differences in performance can be mitigated by optimal organisation of the program structure .

126

VECTOR Vol.16 No.4

Conclusions ADO provides the capability to carry out query and manipulation (SELECT, INSERT, UPDATE, and DELETE statements) of all types of data. To access most popular telational data ADO can use OLE DB directly, or it can use the OLE DB Provider for ODBC. To access other types of data, there are other kinds of data providers.

Not all ADO features were discussed here, for example:

« Free threading, that allows one to build very powerful and scalable Web server applications.

* Asynchronous queries, that return control to the application before the query is completed.

° Remote Recordsets, that allow one to retrieve and manipulate data remotely, then update the source.

* Events, that allow ADO 2.0 to expose a list of events that used to control all aspects of the connection, query, and table access process.

Since ADO is a COM-based component, called using the Automation interface, Dyalog APL can use ADO and combine high-performance access to any data source with its own capabilities of efficient array data processing.

References 1. Microsoft, OLE DB 2.0 Programmer's Reference and Data Access SDK, Microsoft Press, 1998.

2. Dyalog APL for Windows, Interface Guide, Dyadic Systems Ltd., 1999,

127

VECTOR Vol.16 No.4

Index to Volumes 1-16

Author(s) Title Vol, Pg Adams, John Appropriate Use of APL in Af (1988) Vol 5.3, 56 Adams, Martyn Why GKS is Unsuttable ... Vol 2.3, 83 Adams, Martyn APt, Experiences and Visua! Basic for Windows: Vol 9.4, 100 Alfonseca, Manuel APUPC2 with Auniiary Processors Vol 3.2, 112 Alls, David Through IRMA to IMS. Vol 5.1, 61 Alls, David Using a Defined Adverb to Trace Tacit Programs in J Vol 13.3, 136 Ansell, Jake APLIM - Generalized Linear Models. Vol 2.2, Ansell, Jake & Sykes, Alan Beaton’s Recipe for Least Squares Vol 8.1, 36 Ansell, Jake ASL: The Basic Statistics Volume Vol 8.1, 45 Ansell, Jake ASL: A Basie Statistics Volume Tutorial Vol 8.2, 37 Ansell, Jake Reliability Data Analysts Vol 9.2, 37 APL9?2 (St. Petersburg) Conference Reports Vol 9.2, 68 APLS3 (Toronto) Abstracts: Vol 9.4, 13 APL&3 (Toronto) Conference Repats Vol 10.2, 55. APLS4 (Antwerp) Abstracts Vol 11.1, 7 APL94 (Antwerp) Conference Reports: Vol 11.2, 53 APLSS {San Antonio) Abstracts Voi 11.4, 10. APL95 (San Antonio) Conference Reports Vol 12.1, 42 APLS6 (Lancaster) Abstracts: Vol 12.4, 6 APL9? (Toronto) Conference Reports Vol 14.2, 43 APL97 (Toronto) CD Rom (with Abstracts) Vol 14.3, 30 APL98 (Rome) Conference Reports. Vol 15.1, 65 APL9S (Scranton) Abstracts Vol 16.1, 20 APL2000 (Ortando) Abstracts Vol16.2, 7 APLS9 (Scranton) Notes and Pictures (by Ray Cannon) Vel 16.2, 61 Appleton, David Some Questions of Programming Style for the APL Statistical Library Vol 7.1, 90 Appleton, David Stirling Numbers - a Case Study Vol 8.2, 44 Appleton, David Curve Fitting in APL. Vol 8.3, 23 Appleton, David Understanding Statistical Theory through Simulation Vol 11.2, 109 Askoolum, Ajay APL*PLUS Keyboard Configuration Vol 9.3, 107 Askoolum, Ajay To Suffer the Slings and Vectors of the BAA. Vol 11.1, 131 Askoclum, Ajay Hacker's Comer. A Word6 APL. Keyboard. Vol 13.1, 116 Askeoolum, Ajay Editoria!: What Is APL? Vol 14.3, 3 Askoolum, Ajay Book Review It's APL, but not as we know it Vol 15.1, 47 Askoolum, Ajay Hacker's Comer: Context Sensitive Help and COM In APL+Win. Vol 15.2, 96. Askoolum, Ajay DDE in APL+Win Vol 15,3, 111 Askootum, Ajay Purging Name Pollution in APL+Win Vol 16.1, 120 BAA-GUI Workshop: Dyalog APL Sessions Vol 10.3, 51 BAA-GUI Workshop: APL*PLUS II Sessions Vol 10.3, 57 Baker, John & Neitzel, Martin Review: J3- J grows up! Vol 13.1, 48 Balako, Alexander Namespaces: New Getn from Old Roots. Voi 16.1, 92 Balako, Atexander APL+lntemet Explorer Vol 16.2, 1143 Barman, Jonathan APL and Partitioned Data Vol 1.1, 129 Barman, Jonathan The CIPS APL Toolkit (review) Vol 6.1, 51 Barman, Jonathan Namespace Play Vol 7.2, 138 Barman, Jonathan Review. APL*PLUS/PC Release 10 Vol 7.3, 67 Barman, Jonathan Notes on "Panel - is J a dialect of APL?” at APL9t Vol 8.2, 76 Barman, Jonathan Notes on Pane? - APL as an Entrepreneurial Tool at APLOt Vol 8.2, 84 Barman, Jonathan Editorial; Maximising the Re-use of Code Vol9.1,3 Barman, Jonathan Editorial: APL, Windows and GUIs Vol 9.2, 3 Barman, Jonathan Editorial: Commercial APL Vor 9.3, 3 Barman, Jonathan Meeting at Morgan Stanley: Smaittalk and A Vol 9.3, 56 Barman, Jonathan Editorial: What You Know Is What You Love Vol 9.4,3 Barman, Jonathan Review: APLIWIN and JWIN. Vol 9.4, 68

128

VECTOR Vol.16 No.4

Author(s) Barman, Jonathan Barman, Jonathan Barman, Jonathan Barman, Jonathan Barman, Jonathan Barman, Jonathan Barman, Jonathan Bametson, Paul Baronet, Dan Baronet, Dan Baronet, Dan Bassett, Mark van Batenburg & Prins van Batenburg, F.H.D. van Batenburg, et al van Batenburg, F.H.D. van Batenburg, F.2.D.

Bemecky, Bob Biddlecombe, Peter Bittlestone, Robert Bittlestone, Robert Bittlestone, Robert Bittlestone, Robert Bohrer, Douglas Bohrer, Douglas Bohrer, Douglas Booth, Desmond Bowman, Dick Bowman, Dick Bowman, Dick Bowman, Dick Bowman, Dick Bowman, Dick Bowman, Dick Brand, Pauline Branson, Peter Branson, Peter Branson, Peter Brennan, Jerry M Brewster, Christine Brewster, Christine Brisson, Gabriel & Reiter, Cliff Brown, Jim Brown, Robert G. Brown, Richard Budd, Timothy Burke, Chris. Burke, Chris Burke, Chris Burke, Chris Burke, Chris Burke, Chris Burke, Chris Burke, Chris Title Review: SHARP APL Reference Manual Update on APLIWIN Review: Dyalog APL Version 6.3 Hacker's Comer: Flying Windows Inner Products for Range Tests Review: Advanced Windows Programming (Lescasse) Using VideoSoft FlexGrid Pro with APL+Win The Chartton Chase Package SHARP APL vs APL2 Coding Style SHARP APL Operators SHARP APL Tasks APL Trivia - Loopy, Quine & Turing QW/APL - a leap forward or back? How Expensive is APL? ASWI Programming Standards ASWI Programming Standards: Some Whys Font For The Future in J Letter: Strategies for Optimising the AP] Problem Error Trapping Tutorial for PSA APL Why APL? FGL: Fifth Generation Language XPL - an Expert Systems Framework Re-inventing Man Is APL a Team Sport? Titing at New Attack on Nested Arrays Import/Export and the Wealth of Namespaces Are 4GLs killing APL? APL and Graphies Standards The Outside World Coming out of the Closet APL Trivia - Wimbock APL Review: IBM's APL2 on the PC (16-bit) Seize the Time: The APL Programmer's Toolkit Hooking Up to the internet Error Trapping Tutorial in Dyalog APL Workspace Management Managing Multi-currency Accounting Fullscreen Methods with APL2 Printing APL Matrices Large Commerelal Database Whitbread: Large Seale Database Parallel Processing with J Talk: Putting a on Legacy Systems Letter: Leaving the Nest Functional Programming in J for Operations Research Time-space Tradeoffs in Vector Algorithms Locales in J Elegant Programming APL and J (1) - Function Rank The J DLL and Extended Integers APL2 and J (2)- Indexing APL and J (3) Operators - Reduce, Sean, Outer Product OpenGL Graphics and J APL and J (4): Function Application and Axis

129 Vol, Pg Vol 10.1, 53 Vo! 10.1, 55 Vot 10.1, 39 Vol 10.4, 108 Vol 10.4, 133 Vol 13.4, 63 Vol 15.3, 77 Vol 4.1, 70 Vol 16.2, 87 Vol 16.3, 85 Vol 16.4, 75 Vol 3.1, 124 Vol 2.2, 115 Vol 5.3, 91 Vol 8.2, 111 Vol 9.3, 101 Vol 12.3, 64 Vol 42,3, 79 Vol 13.4, 7 Vol 6.3, 102 Vol 1.1, 65 Vol 41.1, 89 Vol 1.2, 65 Vol 1.4, 75 Vol 12.2, 67 Vol 12,2, 135 Vol 13.3, 77 Vol 1.2, 49 Vol 4.2, 75 Vol 3.4, 56 Vol 3.4, 97 Vol 3.4, 114 Vol 6.2, 45 Vol 9.3, 85 Val 9.4, 113 Vol 6.1, 100 Vo! 4.2, 99 Vol 6.3, 73 Vol 7.4, 128 Vol 6.1, 64 Vol 2.3, 61 Vol 2.4, 81 Vol 13.1, 86 Vol 12.3, 61 Vol 13.3, 13 Vol 14.4, 139 Vol 16.2, 101 Vol 11.4, 49 Vol 12.2, 123 Vol 13.1, 96 Vol 13.1, 149 Vol 13.2, 137 Vol 13.3, 118 Vo! 14.1, 58 Vol 13.4, 113

VECTOR Vol.16 No.4

Author(s} Title Vol, Pg APL and J (5): Operators - Inner Product, Each, Commute, Compose Vol 14.1, 129 Burke, Chris J4and OOP Vol 14.4, 103 Burke, Chris Memory Mapped Files in J Vol 15.4, 87 Buzin, Andrei The API Problem as a Particular Recurrence Problem, Vol 14.1, 140 Byers, Bob Review: Dyalog APL/W versions 7.2 & 8.0 Vol 13.1, 54 Byers, Bob Review. NewLeat Page Layout Tools Vol 13.4, 73 Byers, Bob Review: RainPro Publication Graphics Vol 14.4, 33 Camacho, Anthony Public Damain Interpreter (Proposal) Vol 3.2, 127 Camacho, Anthony LAPL: History & Achievernents Vol 4.3, 89 Camacho, Anthony A Demonstration Detn Vol 4.3, 95 Camacho, Anthony The Ideal Screen Editor Vol 7.4, 78 Camacho, Anthony Notes on Panel - a 25-year Perspective” at APLOt Vol 8.2, 81 Camacho, Goodman APL Printing on some Star Printers with FAPL Vo! 8,3, 29 Camacho, Anthony Another Use of Not-Equals-Scan Vo! 10.4, 136 Camacho, Anthony Language for the Elite! Vol 14.1, 3 Camacho, Anthony jal: Monsieur Langlet's Enterprise Vol 14.2, 3 Camacho, Anthony Review: "Making APL Readable" by Christoph von Basum Vol 12.1, 38 Camacho, Anthony Hacker's Comer: Six Megabytes in 640K? Vol 14.4, 112 Camacho, Anthony GUI and Closed Systems Vol 16.1, 86 Camacho, Syivia Sharper Focus on APL Vol 3.1, 79 Camacho, Syivia The Road Vol 3.4, 102 Camacho, SyNia Bell's Inequality Vol 41,73 Camacho, Syivia What's ina Name? Vol 10.4, 78 Camacho, Syvia Here Vol 11.4, 69 Camacho, Syivia Voyages in Dragon Country Vol 12.1, 60 Camacho, Syivia 40 Years On Vol 15.3, 62 Camacho, Sytvia The Dance of the Quirk Vol 16.2, 62 Cannon, Ray Review: the STSC Compiler Vol 7.3, 64 Cannon, Ray Mandelbrot Sets Vot 7.3, 123 Cannon, Ray Mice do the Mat Vot 7.3, 134 Cannon, Ray Mandelbrot Sets (2) Vot 7.4, 410 Cannon, Ray Suggested Standards for a Component File System Vot 8.2, 105 Cannon, Ray How STSC's quad-MF can help in Tasting Workspaces Vol 8.2, 135 Cannon, JHELP Command Vol 9.1, 80 Cannon, Ray Review: APL*PLUS Il interface to Windows Vol 9.3, 44 Cannon, Ray Windows BMP Files and APL Vol 10.1, 80 Cannon, Ray When is Easter? Vol 10.3, 67 Cannon, Ray No SX Please - We're APLers Vol 41.2, 143 Cannon, Ray Letter: Understanding your File Timestamps Vol 41.4, 421 Cannon, Ray Hacker's Comer: Driving MS Daisy-wheet Vol 12.4, 114 Cannon, Ray Hacker's Comer: Gremlins, Pixels and Brownie Points Vol 12.2, 102 Cannon, Ray Vector on the Web Voi 13.2, 16 Cannon, Ray Vector on (progress report) Vol 13.3, 15 Cannon, Ray How to Ride a BiCypher* Vol 13.3, 85 Cannon, Ray APL Characters on the World Wide Web Vol 13.4, 14 Cannon, Ray Hacker's Comer: Dynamic DPW in Dyalog APL Vol 13.4, 411 Cannon, Ray Conference: APL2000 1997 User's Meeting Vol 14.3, 64 Cannon, Ray Letter: Working with Compressed Data Vol 14.4, 117 Cannon, Ray APLSS - Observations Vol 15.1, 74 Cannon, Ray Utilities for the Dyalog Session Vol 15.1, 138 Cannon, Ray More Utiities for the Dyalog Session Voi 15.3, 107 Cannon, Ray Utilities for Dyalog APL Developers: UCMD Take 2 Voi 15.4, 109 Carmichael, Michael Quotition Jottings Vol 1.3, 156 Carmichael, Michael Moving 1-2-3 to APL. Vol 4.4, 130 Chamley, Anne Functional implementation of Moments Based Region Descriptors in 16.3, 99 Chang, Bill Proposed Common APL Coding Vol 12.2.7 Chapman, Paut Plea for Naming Conventions Vol 3.1, 115 Chapman, Paul Diary of an Implementer Vol 3.4, 129

130

VECTOR Vol.16 No.4

Author(s) Title Vol, Pa Chapman, Paul APL: Under the Bonnet Vol 4.3, 48 Chapman, Paul Cross Clocks in J Vol 8.3, 124 Charman-Willams, Andrew Array-based Naive Bayesian Machine Leariing Program: a J Implementation Vol 16.2, 47 Chastney, Phil An APL Unicode Font Vol 16.1, 750 Chastney, Phil Data Domains Vol 16.2, 121 Chastney, Phil Stack Operations Vol 16.4, 84 DiChio, Paolo APL98 Retrospective Vol 15.1, 10 Christensen, Gitte Danish APL Group at Copenhagen Vol 13.3, 74 Graph Platting in LAPLMac 1.2 Vol 8.4, 413 APLomb: The View through Quad-Shaped Spectacles Clark, lan Jot-Dot-Floor: Working with Large Integers Clark, lan Jot-Dot-Floor: Domino Clark, tan Jot-Dot-Floor Vol 11.3, 14 Clark, tan Jot-Dot-Min Vo! 11.4, 24 Clark, fan Jot-DotMin: Steree Vision Vol 42.1, 20 Clark, fan KPS: Beyond the Spreadsheet Jot-Dot-Min: Weaving Pattems and Celivlar Automata DNA Fingerprinting in APL Vol 14.3, 38 Clark, Use Are User Defined Operators? Vol 16.1, 64 Clark, lan Analysing Blackjack with APL (Finnish Forests Seminar) Vol 16.4, 68 van Cleave, Phit APL Lap-sized Computer Vol 2.2, 55 Clough, Eddie Stereograms in J Vol 11.4, 110 Clough, Eddie Letter: Niven Number Computing Speed Vol 14.4, 118 Cocking, Romilly Setting up a Company 1.C. Vol 4.1, 42 Cooking, Romilly DIF-file interface Vo! 1.4, 149 Cooking, Romilly Developing Business Systems Vol 5.1, 86 Cocking, Romilly Interfacing APL to C Cocking, Romilly The Benefits of Function-point Analysis Vol 5.3, 79 Cooper, Tony Computing Environments for OR Vol 3.1, 62 Cox, Nicholas Review: Fractals, Visualization & J by Cliff Reiter Vol 13.1, 64 Cox, Nicholas Letter: A Little Hook for Understanding Vol 14.2, 15 Crossley, David The Importance of being Nested Crossley, David Panel Design: an APL Programmers’ Toolkit Crossley, David Review: APL*PLUS II Version 4 Vol 9.1, 53 Crossley, David APL98 - a Personal View Vol 16.1, 66 Crossley, David Data Conversion Between APL Versions Vol 15.2, 121 Cyriax, Peter Performance of Large APL Systems Vol 10.4, 50 Day, Mike Sharing the Spoils, of Circling the Square Vol 9.4, 123 Day, Mike The MAGIC Goes Away - Opening the Boxes Vol 10.1, 25 Deimotte, Alain Training the Mouse (in APL'PLUS/PC) Vol 8.2, 132 Delmatte, Alain Workspace Listing in LAPL Vol 9.1, 32 Doherty, David SCREENIO: IBM full-screen manager Vol 1.1, 124 Donnelly, Peter Duck a la Carte Vol 1.4, 65 Donnelly, Peter CGI Graphics in Dyalog APL Vol 4.1, 59 Donnelly, Plans for Dyalog APL. Vol 5.4, 78 Donnelly, Peter Programming for Events in Dyalog Vol 8.1, 107 Donnelly, Peter The Use of Namespaces fot Encapsulation Vol 14.3, 66 Donnelly, Peter OLE Automation with Dyalog APL Vol 13,2, 99 Donnetty, Peter APL98 - The Dyalag OCX Workshop Vol 15.1, 8t Douglas, J.B. Polynomial Curve Fitting Vol3.4, 117 Dumontier, Michel French Visitors in Napoleon's Footsteps Vol 9.1, 62 Daren, Dieter Conversion from APL2 to APL*PLUS Il Vot 11.3, 53. Eastwood, David QUAPL - popularising APL. Vol 1.4, 81 Eastwood, David GDDM/ AP126 on APL.68000 Vol 4.1, 59 Eastwood, David Attitudes to APL in Higher Edn Vol 5.1, 34 Eastwood, David Error Trapping Tutorial for APL.68000 Vol 6.1, 96

131

VECTOR Vol.16 No.4

Author(s) Title Vol, Pg Eastwood, David Working with Windows Vol 8.1, 97 Eastwood, David ASL Standards Vol 8.3, 46 Eastwood, David Optimising your APL. Vol 9.3, 60 Eastwood, David APL Club Germany, Schwetzingen Vol 9.3, 79 Eastwood, David Meeting: The Toronto Toolkit Vol 10.4, 48 Emms, Ted Backtracking, Queens and Permutations Vol 10.1, 34 Emms, Ted Cows and Bulls: A Solution Vol 10.2, 25 Emms, Ted A Note on Primes Vol 10,4, 30 Evero, Olle NED: a Nesting Editor for APL*PLUS/PC Vol 7.4, 116 Falkoff, Adin Comments en the APL2741 Typeface Vol 6.4, 116 Fieldsend, Graham My first date with [RMA Val 2.4, 60 Finnish Forests Conference Reports Vol 16.4, 55 Fortar, D.0. APL for Financial Calculations Vol 6.3, 76 Franksen, Ole Mr Sabbage's Secret Vol 1.2, 61 Frey, Robert Object Oriented Extensions to APL and J Vol 9.2, 116 Gay, Allan Dissembling Vol 4.4, 103 Gay, Allan P4127: An Interface from APL to DB2 Vol 5.1, 91 Gay, Allan Missembling Vol 5.2, 105. Gay, Allan Writing Assembly Language Funetions for quad-NA. Vol 7.4, 100 Gay, Allan Migrating Mainframe Applications to APL*PLUS II Vol 10.2, 130 Gay, Allan AGDDM Simulation for APL*PLUS It Vol 10.2, 133 Gay, Allan AVSAM Simulation for APL*PLUS Vol 10.3, 133 Gay, Allan Defined Operator Simulation for APL*PLUS Vol 10.4, 126 Gay, Allan Bracket Axis Simulation for APL*PLUS Vol 14.2, 150 Geller, Martin Review: APLIWIN Beta Release Vo! 9.4, 64 Gfeller, Martin & Kromberg, M_ Standardisation Beyond the Language: Vol 10.4, 58. Gray, Dick APL for the Teacher Vol 2.1, 79 Gray, Dick Do you Dig Keywords? Vol 2.2, 61 Gray, Dick Comparison Tolerance Vol 3.2, 131 Griffiths, Marc APL93 Conference Evaluation Survey Vol 10.3, 37 Griffiths, Mare Meeting: Causeway and NewLeaf in Toronto Vol 42.4, 58 Griffiths, Marc et al Controlling APL Software Releases Vol 13.4, 78 Guervos, Cano et al Use of Multivariate Techniques for the Grouping Together of Districts Vol 14.2, 112 Harvey, Christopher PATTIE: a Practical Expert System(1) Vol 1.3, 101 Harvey, Christopher PATTIE: a Practicat Expert System(2) Voi 1.4, 98 Haussmann, H. Loops in APLZ Vol 10.3, 106 Hawkes, Alan in APL Vol 4.1, 107 Hawkes, Alan Statistical Computing with APL Vol 4.2, 113 Hawkes, Alan Numeric Integration & Probability Vol 4.2, 117 Hayward, lain APL Printing from APL.68000 Vol 6.1, 127 Hayward, lain Review: APL.68000 Level II Vol 7.4, 67 Henriod, Claude Letter: More on Niven Numbers Voi 14.4, 120 Hil, Richard Desk Top Publishing on the Cheap Vol 8.2, 130 Hingley, Peter NonJinear Regression Modelling in APL Vol 9.1, 109 Hoekstra, Bob Review: Dyalog APLIM for Sun Solaris Vol 14,3, 37 Hoekstra, Bob APL98 - New Gems from Oli Reats Vol 15.1, 97 Hoekstra, Bob Filecheck: Another Utility for the Dyalog Session Vol 15.4, 113 Hoekstra, Bob APLs for Linx Vol 16.1, 7 Hoekstra, Bob My SAX Experience - SHARP APL for Linux, Beta version 6.1.0 Vol 16.3, 48 Hoekstra, Bob Unt APL. Power Shootout (Part 1) Vol 16.4, 39 Hoffmann, Joachim (JoHo)  -Hacker s Corer: A Special Locater in Dyalog APLV Vol 16.1, 108 Holmes, Neville Some Basic Functions for Compesite Arithmetic Vol 15.3, 49 Holt, Dick A Beginner's Guide to Low Cost APLs Vol 9.4, 29 Holt, Bick APLO7 Survey Results Vol 14.2, 92 Hui, Roger & Iverson, Ken J Questions Answered Val 8.3, 94

132

VECTOR Vol.16 No.4

Author(s) Hul, Roger Hui, Roger Hui, Roger Hui, Roger Hui, Roger Hui, Roger Hui, Roger Hui, Roger & Iverson, Ken Hui, Roger Hui, Roger Hui, Roger Hui, Roger Huttin & Hager Huttin, Per

Werson, Ken Werson, Ken tverson, Ken Iverson, Ken Werson, Ken Iverson, Ken Werson, Ken J User Conference (1996) Jensen, J.R & Beaty, KA. dizba, Zdenek Jizba, Zdenek Jizba, Zdenek Jizba, Zdenek Jizba, Zdenek Jizba, Zdenek slizba, Zdenek Jones, Wiliam Jordan, Maurice Jordan, Maurice Jordan, Maurice Jordan, Maurice Karman, Jan Karman, Jan Karman, Jan Karman, Jan Kekalainen, Kimmo Kelly & Thomson Keppel & Kropp De Kerf, Joseph De Kerf, Joseph De Kert, Joseph De Kerf, Joseph De Kerf, Joseph De Kerf, Joseph De Kerf, Joseph De Kerf, Joseph De Kerf, Joseph De Kerf, Joseph De Kerf, Joseph De Kerf, Joseph De Kerf, Joseph De Kerf, Joseph Title Verb Tables Three Combinatoric Puzzles Talk: An implementation of 2 An Exchange on Primes Letter: Compositions Letter: The Common Mean The Bali Clock Problem A Note on Programming Style in J Linear Recurrences and Matrix Powers Extended Integers in J New Trace Facilities in J 3.03 Honorary Doctorate for Ken Iverson Power to APL. An APL Banking Application APLS3: Using the ISIAPL GUI The Split in APL A Commentary on APL Development J: an Informal Introduction A Dictionary J Teaching with Executable Notation - Part 1 Letter: ASCI} Representation of APL Characters Teaching with Executable Notation - Part 2: Linear Functions Conference Report An Interface between APL2 and the X Window System Generic Local Objects Problems for APL Buffs (1) Problems for APL Butis (ll) Object Oriented Programming and APL Problems for APL Buffs (Ill) Science Education in California Introducing APL to Teachers, Letter: Heron's Rule and Integer Area Triangles Supporting APL. in a Large Organisation Funetion-point Analysis Airways Thoughtsond « f g ft Differences in Second Generation APLs f itor Leave it in Dyalog APLW A Windows-Driven Menu Driver Experiences with the use of Causeway Bockbinders’ Fun Namespaces: Just another Means to Multiply your Chaos? Weighted Least Squares APL2 or LISP Fast Fibbing Logic & the Algebra of Propositions Punctuation in APL A Note on Quad and Quote-quad A Survey of Quad-NC What's Wrong with Parentheses? A Note the Mateh Function in APL APL-Defined Funotions for the Calculation of Determinants The Common Mean and APL The Complete Elliptic Integrals and APL The incomplete Elliptic Integrals and APL Swinging with APL: the Simple Pendulum Niven Numbers and APL Armstrong Numbers and APL

133 Vol, Pg Vol 8.4, 91 Vol 9.2, 139 Vo! 9.4, 85 Vol 9.4, 130 Vol 11.2, 124

Vol 12.2, 56 Vol 12,3, 117 Vol 12.4, 113 Vol 13,2, 154 Vol 13.3, 52 Vol 15.1, 8 Vot 2.4, 123 Vol 3.1, 65 Vol 40.2, 67 Vol 3.2, 47 Vol 5.1, 78 Vol 7.1, 67 Vol 7.2, 99 Vol 11.4, 76 Vol 14.4, 131 Vol 12.1, 67 Vol 13.2, 48 Vol 8.1, 125 Vol 5.3, 103 Vol 6.3, 109 Vol 6.4, 117 Vol 7.3, 108 Vol 7.3, 140 Vol 8.2, 22 Vol 8.3, 19 Vol 44.2, 14 Vol 5.1, 68 Vol 5.3, 82 Vol 7.4, 419 Vol 8.3, 52 Vol 11.1, 129 Vol 11.1, 139 Vol 12.3, 47 Vol 13.4, 130 Vol 11.3, 92 Vol 4.3, 115 Vol 2.2, 97 Vol 3.4, 120 Vol 5.4, 99 Vot 6.2, 123 Vol 6.3, 122 Vol 7.1, 127 Vol 7.2, 125 Vol 7.4, 133 Vol 10.3, 24 Vol 14,3, 24 Vol 42.1, 102 Vo! 12.2, 95 Vol 13.2, 128 Vol 14.2, 121 Vol 14,3, 138

VECTOR Vol.16 No.4

Author(s) Title Volt, Pg De Kerf, Joseph From Fibonacc! to Horodam Vol 15.3, 122 De Kerf, Joseph From Horadam to Atanosov Voi 16.2, 135 Kertesz, Adam Letter: PROPER Capitats Vol 16.3, 125 Kondrashev, Andrei Internet Programming with the Internet Server Auxiliary Processor Vol 14.4, 74 Korabley, J & Roche, G Exploring ActiveX Data Objects from a Dyalog-APL Paint of View Voi.16.4, 116. Kromberg, Morten APL- A Client-Server Language Voi 10.4, 114 Langlet, Gérard APL "RISC Programming Style” Vol 6.2, 23 Langlet, Gérard The Steam Hammer and the Fly Vol 7.4, 138 Langlet, Gérard Recreation with Transcendental Numbers: Vot 8.2, 25, Langlet, Gérard From the Vital Execute to Fractals and 5-fold Symmetry Vol 9.3, 91 Langlet, Gérard The Fractal MAGIC Universe Vol 10.1, 137 Langlet, Gérard The Ultimate Turing Proof Voi 10.3, 124 Langlet, Gérard APLS94: Binary Algebra Workshop Vol 11.2, 60 Langlet, Gérard Chaotic Behaviour Revisited Vol 11.2, 82 Langlet, Gérard The APL Theory of Human Vision Vol 11.3, 42 Langlet, Gérard The Axiom Waltz - or When 1+1 make Zero Vol 14.3, 101 Langlet, Gérard A Quite Different New Primitive Vol 12.1, 93 Langlet, Gérard Letter: More Thoughts on Dragons: Voi121, 121 Langlet, Gérard Letter: Non-Syliogistic Mathematical Proof Vol 12.1, 123 Langlet, Gérard (retrospective) Obituary: Memories of Gérard Langlet (compiled Camacho) Vol 13.4, 138 Lanzavecchia, Stefano Editorial; Giochiamo col mondo Vol 14.4,3 Lanzavecchia, Stefano Editori PL98 and the Future of APL Voi 15.1, 3 Lanzavecchia, Stefano Editorial: You have performed an illegal operation Vol 15.4, 3 Lanzavecchia, Stefano Meeting: BAA Vendor Forum, May 21st 1999 Vol 16.1, 67 Last, Phil Writing Operators for Dyalog APL, Vol 8.4, 119. Laurmaa, Timo. AP11SMW - First Look Vol 12.4, 38 Laurmaa, Timo An internet Extension to 3D Crosses Vol 12.4, 119 Lee, Chris APLS93: Solving Wicked Problems with APL Voi 10.2, 63 Legrand, Bemard Puzzle: Funny Cube Vol 16.3, 44 Lenthan, Mark Migration to APL2 Vol 2.4, 123 Lescasse, Eric Windows Development in APL*PLUS IIt (Part 1) Vol 11.1, 109 Lescasse, Eric Windows Development in APL"PLUS Il (Part 2) Vol 11.2, 68 Lescasse, Eric Namespaces Vol 11.3, 75 Lescasse, Eric Advanced Windows Programming with APL and Delphi Vol 13,4, 122 Leseasse, Eric APL+Win and VBXs- Vol 13.3, 92 Lescasse, Eric Object Oriented Programming with APL+Win (Part |) Vol 14.1, 106 Lescasse, Erie Object Oriented Programming with APL+Win (Part Il) Voi 14.3, 109 Littlejohn, Gary Visit to APL Centres in Russia Vol 10.4, 44 Livingstone, David Development of APL through Standardization Vol 3.2, 145 Llewellyn-Jones, L. APLpip Vol 1.2, 109 Lochran, Brian APL and Relational Databases: Vol 5.3, 74 tueas, Jim K-Lite: First Impressions Vol 15.1, 38 tucas, Jim A Conference for Winners. Vol 16.3, 75 Luksha, Pavel & Oleg APL on Kronstact Island Voi 9.4, 82 Lyus, Steve Financial Planning at tmperial Vol 2.4, 93 Maenpaa, Janne Setting up a www-server with Dyalog APL and US Vol 16.3, 131 Manktelow, Jonathan: Hacker's Corner: APL Meets MAPI Voi 15,3, 70 Mayer & Sykes: Teaching Stats in Univ. Coll. Swansea Vol 4,3, 74 Mayer, Alan Local Variables and the State Indicator Vol 8,2, 27 Mayer, Alan How Muck Water Under the Bridge? Vol 8.4, 25 Mayer, Alan Pass Me Ancther Diagonal Slice, Please! Vol 8.4, 26 Mayer, Alan Some Notes on Direct Definition Vol 9.2, 27 Mayer, Analysis of Variance Vol 10.1, 27 Mayer, Alan Cows and Bulls Voi 10,1, 39. Mayer, Alan Review: "Introduction to APL*PLUS/PC” by Maurice Dalois Vol 10.2, 19.

134

VECTOR Vol.16 No.4

Author(s) Title Vol, Pg McCree, Christine Membership Survey Vol 4.1, 79 McDonnell, Eugene with J: MIMD Machines Vol 10.2, 128 McDonnell, Eugene Date of Easter in J Vol 40.3, 76 McDonnell, Eugene At Play with J: Tactt Definition Vol 10.3, 190 McDonnell, Eugene At Play with J: The 10,000,000,000th Prime Number Vol 10.4, 110 McDonnell, Eugene At Play with J: Control Structures Vol 14.1, 136 MeDonnell, Eugene At Play with J; Jacob's Method Vol11.3, 114 MeDonnell, Eugene with J: Cribbage 155. Vol 14.4, 135 McDonnell, Eugene with J: Representing a Permutation Vo! 12.1, 125 McDonnell, Eugene At Play with J: The Bauer-Mengelberg Problem Vol 12.2, 115 MeDonnell, Eugene with J: Heron's Rule and Interger-Area Triangles Vo! 12,3, 133 MeDonnell, Eugene with J: Year's Digits for 1996 Vol 12.4, 123 McDonnell, Eugene with J; Riding a Unicycle Vol 13.1, 154 MeDonnell, Eugene with J: Volutes Vol 13.2, 144 MeDonnetl, Eugene At Play With J: Extended Integers Vol 13.3, 127 McDonnell, Eugene At Play With J: Stumping the Rocket Scientist Vol 13.4, 123 McDonnell, Eugene At Play With Oh, No, Not Eigenvalues Againt Vol 14.1, 135 McDonnell, Eugene With 4: A Newer Random Link Generator Vol 14.4, 122 McDonnell, Eugene At Play With J: To Summarise Vol 15.1, 132 McDonnell, Eugene At Play With J: Maximum Infix Sums Vo! 15.2, 100 McDonnell, Eugene At Play With J: Life Vol 15.3, 99 McDonnell, Eugene With 4: New Model Computer Vol 15.4, 106 McDonnell, Eugene At Play With J: New Big Deal Vol 16.1, 113, McDonnell, Eugene At Play With 4: We'll Gross that Bridge when we Come to Vol 16.3, 126 McDonnell, Eugene with J: An Open and Shut Case Vol 16.4, 99 Mcintyre, Donald B. Hooks and Forks and the Teaching of Elementary Arithmetlc Vol 8.3, 104 Mcintyre, Donald B. Using J with External Data Vol 8.4, 97 Mcintyre, Donald B. Using J's Boxed Arrays Vol 9.4, 92 Meintyre, Donald B. Jacob's Method for Eigenvalues Vol 9.3, 125 Mcintyre, Donald B. Amendment: A Change for the Better Vol 9.3, 134 Mcintyre, Donald B. J: A First Lesson Vol 10.4, 18 Mcintyre, Donald B. J: A Second Lesson Vol 11.3, 36 Melntyre, Donald B. Perils of Subtraction Vol 11.4, 93 McLean, Bill Review: APL for the Maths Classroom” by Thomson Vol 6.2, 20 McLean, Bill The MAGIC Puzzle Vo! 9.1, 25 McLean, Bill 8 Emms,Ted AN APL Sorabble Bag Vo! 9.4, 41 McLean, Bill Word-search Squares in /APL Vol 41.3, 23 MacLeod, George GSS Graphics with APL"PLUS/PC Vol 7.4, 78 MacLeod, George Meeting: Vol 10.1, 70 MacLeod, George Drawing the Line Vol 10.4, 83 Meritt, Peter or Not - That Is The Gazodenplatz Vol 14.1, 108 Merritt, Peter Bodyguard Vol 14.3, 119 Miroshnikov, Historical Outline Vol 7.3, 100 Moffat, David One Small Step for APL Vo!3.1, 75 Morgan, Ellis ASLGREG: Predictions with Confidence Limits Vol 40.3, 81 Moss, Jill Membership Questionnaire Vol 6.3, 36 Muller, Antje al Polynomial Interpolation Vol 42.2, 26 Nabavi, Richard Networking APL micros Vol 1.4, 49 Nabavi, Richard GKS - Opportunity for APL Vol 1.2, 78 Nabavi, Richard APL and GKS Vol 1.4, 63 Nabavi, Richard WIMPS and Bach on the Amiga Vol 4.1, 60 Nabavi, Richard Interfacing to the Apple Macintosh -Vol 5.1, 113 Nabavi, Richard The Legacy of the Typewriter Vol 8.2, 99 Nettzel, Martin A Very Simple Structure Compller for J Vol 16.2, 129 Neitzel, Martin Sending MID! Messages to a Sound-card with J Vol 16.3, 136 Neitzel, Martin Literate Programming with J and noweb Vol 16.4, 107 Neiizel, Martin & Baker, John Review: J3 - upt Vol 13.1, 48

135