System Building with APL + WIN

Ajay Askoolum

  • 出版商: Wiley
  • 出版日期: 2006-08-25
  • 售價: $3,180
  • 貴賓價: 9.5$3,021
  • 語言: 英文
  • 頁數: 524
  • 裝訂: Paperback
  • ISBN: 0470030208
  • ISBN-13: 9780470030202
  • 海外代購書籍(需單獨結帳)

商品描述

Description

Software modernisation or re-engineering as a concept lacks universal clarity. System Building with APL + Win seeks to clarify this problem by identifying the solution to the long term survival of the APL application as the elimination of APL specific considerations in the choice of a development tool. The author shows how to deploy mainstream industry standard system components within an APL + Win development environment, enabling the APL application to be just like any application on the Windows platform.

  • Demonstrates the power and agility of APL + Win in today’s approach to system building
  • Features a ‘code intensive’ approach, which overcomes the lack of APL+Win specific documentation of system components
  • Illustrates the potential for multi-language system building from an APL+Win environment
  • Explains how increasing the collaborative nature of APL will enable it to become an even more valuable tool for application development

System Building with APL + Win provides an excellent resource for system developers and training providers using the software, as well as MS Office users who wish to incorporate it into a bespoke application development. It will also be of interest to users of other APL interpreters.

RSP Series in Industrial Control, Computers and Communications

 

Table of Contents

Editorial Foreword.

Acknowledgements.

Preface.

Chapter 1 - System Building Overview.

1.1 Why APL?

1.1.1 APL platforms.

1.1.2 APL isolation.

1.1.3 APL generations.

1.2 Which APL?

1.2.1 APL: a renewed promise.

1.2.2 The nature of APL GUI.

1.2.3 The user interface.

1.2.4 Design architecture.

1.2.5 Component-based software.

1.2.6 Multi-Language programming.

1.3 The n-tier model.

1.3.1 Presentation services tier.

1.3.2 Business services tier.

1.3.3 Data services tier.

1.3.4 Tier demarcation.

1.4 Prevailing design architecture.

1.4.1 Client/Server computing.

1.4.2 The multi-user client/server.

1.4.3 Object Oriented Programming(OOP).

1.4.4 Collaborative processing.

1.5 APL interface to components.

1.5.1 Static (or early) binding.

1.5.2 Dynamic (or late) binding.

1.5.3 Object attributes.

1.5.4 Object prefixes.

1.6 Structured Query Language (SQL).

1.6.1 Relational Database Management System.

1.6.2 SQL origin.

1.6.3 SQL language.

1.7 The Windows Registry.

1.8 Regional settings.

1.8.1 The GetLocaleInfo API call.

1.8.2 API usage.

1.9 Software development.

1.9.1 Absence of design certification.

1.9.2 Quality: the crucial measure.

1.9.3 Version control.

1.9.4 Customisation.

1.10 APL and Windows API.

1.10.1 Verifying API definitions.

1.10.2 Processing API memory pointers.

1.10.3 Processing API call back.

1.10.4 Processing API errors.

1.11 The future challenge.

Chapter 2 - Advanced APL Techniques.

2.1 Removing legacy code clutter.

2.1.1 Boolean scenario (BS) table.

2.1.2 A simple task: copy a file.

2.1.3 An API solution.

2.1.4 An APL solution.

2.1.5 The general BS case.

2.1.6 Auto generating the BS table.

2.1.7 Where to use BS tables?

2.2 Bit-wise Boolean techniques.

2.2.1 BitEQV.

2.2.2 BitIMP.

2.2.3 BitAND.

2.2.4 BitXOR.

2.2.5 BitOR.

2.2.6 BitNAND.

2.2.7 BitNOR.

2.3 Managing workspace variables.

2.3.1 APL is not a relational data source.

2.3.2 Fabricating a record set object.

2.4 Generating test data.

2.4.1 Dates.

2.4.2 Integers.

2.4.3 Floating point.

2.4.4 Codes.

2.4.5 String.

2.4.6 Binary string.

2.4.7 Numeric vector.

2.4.8 Computations on generated data.

2.5 APL+Win as an ActiveX Server.

2.5.1 Dynamic properties and methods.

2.5.2 Which class of APL+Win?

2.6 Debugging applications.

2.6.1 The CSBlocks function.

2.7 Functions with methods.

Chapter 3 - Application Interface.

3.1 Managing the hidden interface.

3.1.1 Forcing a session to terminate.

3.2 The user interface.

3.2.1 Purpose of the user interface.

3.2.2 Hierarchical and sequential.

3.2.3 Invasive interaction.

3.3 The user interface is the application.

3.3.1 Where is the interface?.

3.3.2 Manage user expectations.

3.3.3 The user interface as a tier.

3.4 APL+Win design safeguards.

3.5 Context sensitive help.

3.5.1 Enabling a help facility in APL+Win.

3.5.2 Tooltips and prompts.

3.5.3 What's this help?

3.5.4 Help: WINHELP.

3.5.5 Help: HTML.

3.6 Help format as a user option.

3.7 Application messages.

3.7.1 The language and location of messages.

3.7.2 Communicating runtime messages.

3.8 User-defined properties of the system object.

3.9 The scope of user documentation.

3.9.1 Types of documentation.

3.10 Designing menus.

3.10.1 Auto-generation of the user interface.

3.10.2 Validating an interface tree.

3.10.3 Creating menus.

3.11 Designing forms.

3.11.1 Enumerating an existing interface tree.

3.11.2 Resizing forms.

3.12 Access control.

3.12.1 File-based applications.

3.12.2 Database applications.

3.13 Empower the user.

3.13.1 Prevent rather than trap errors.

3.13.2 Validate user entries.

3.13.3 Intrusive application messages.

3.13.4 Work with platform features.

3.13.5 Tools | Options.

3.13.6 Navigation.

3.13.7 System legacy.

3.13.8 Functionality alone is not enough.

3.14 Sales considerations.

3.15 Application exit.

Chapter 4 - Working with Windows.

4.1 The APL legacy.

4.1.1 Reinventing the wheel.

4.2 Windows resources.

4.3 API calls.

4.3.1 Replacing APL code by API calls.

4.3.2 API calls to simplify code.

4.3.3 Formatting date and time.

4.3.4 Using GetDateFormat and GetTimeFormat APIs.

4.3.5 APL+Win GetDateFormat.

4.3.6 Fail safe date format translation?

4.4 The Windows Script Host (WSH).

4.4.1 Managing the Windows Registry.

4.4.2 Writing using WScript Shell.

4.4.3 Reading using WScript Shell.

4.4.4 Deleting using WScript Shell.

4.4.5 Writing using Registry API.

4.4.6 Special folders.

4.4.7 Environment variables.

4.4.8 Setting/Reading environment variables.

4.4.9 Deleting an environment variable.

4.5 Creating a shortcut.

4.5.1 Starting another application.

4.6 Intelligent file operations with API calls.

4.6.1 DeleteFile API.

4.6.2 PathFileExists API.

4.6.3 _lOpen API.

4.6.4 _lClose API.

4.6.5 Fail safe deletion status.

4.7 Universal Naming Convention (UNC).

4.7.1 APL and UNC names.

4.7.2 API calls for handling UNC.

4.7.3 UNC dynamic mapping.

4.7.4 Library/UNC mapping.

4.8 Application configuration.

4.9 Using INI files with APL.

4.9.1 Location of the INI file.

4.9.2 Name of section.

4.9.3 Name of key.

4.9.4 Limitations of INI files.

4.9.5 Implementing the control mechanism.

4.9.6 INI file: writing a key.

4.9.7 INI file: reading a key.

4.9.8 INI file: writing a section.

4.9.9 INI file : emumerating the names of all sections.

4.9.10 INI file: reading a section.

4.9.11 INI file: enumerate names of all keys in a section.

4.9.12 INI file: enumerate values of all keys in a section.

4.9.13 Two more APIs.

4.10 XML files for application configuration.

4.10.1 The XMLINI function.

4.10.2 Loading/Creating an XML file.

4.10.3 XML file: writing a key.

4.10.4 XML file: reading a key.

4.10.5 XML file: deleting a key.

4.10.6 XML file: writing a section.

4.10.7 XML file: reading a section.

4.10.8 XML file: commenting a section.

4.10.9 XML file: deleting a section.

4.10.10 XML file: enumerate names of all sections.

4.10.11 XML file: enumerate names of all keys in a section.

4.10.12 XML file: enumerate values of all keys in a section.

4.10.13 Saving an XML file.

4.11 INI/XML comparative advantage.

4.11.1 Converting INI to XML.

4.12 The filing system.

4.12.1 Identifying the filing system.

4.12.2 The File System Object.

4.13 Platform enhancements.

Chapter 5 - The Component Object Model.

5.1 Objects are global.

5.2 APL+Win COM event handling.

5.2.1 COM event arguments.

5.2.2 Is RPC Server available?

5.3 The promise of COM development.

5.4 Types of COM components.

5.4.1 Application components.

5.4.2 GUI components.

5.4.3 'Silent' or 'slave' components.

5.4.4 Custom component.

5.4.5 Component visibility.

5.5 Maintaining objects.

5.6 APL+Win and ActiveX components.

5.6.1 Platform components.

5.6.2 Opaque APL syntax.

5.6.3 Anatomy of the APL+Win syntax.

5.6.4 Hierarchy of objects.

5.6.5 Data incompatibilities.

5.6.6 APL index origin.

5.7 APL+Win post version 4.0 ActiveX syntax.

5.7.1 Objects hierarchy using redirection.

5.7.2 Redirection clutter.

5.7.3 Dynamic syntax.

5.7.4 Hierarchical syntax.

5.7.5 Redirection or enumeration?

5.8 ActiveX typed parameters.

5.8.1 Boolean parameters.

5.8.2 Positional parameters.

5.8.3 Passing object pointers.

5.8.4 Typed data parameters.

5.8.5 Passing selective named parameters.

5.8.6 Rogue objects.

5.9 Development environment features.

5.9.1 User-defined properties.

5.10 Using ActiveX asynchronously.

5.10.1 Custom properties.

5.11 Debugging components.

5.11.1 VB for Application code.

5.11.2 VB code.

Chapter 6 - Mixed Language Programming.

6.1 Application extension trade-offs.

6.2 VB ActiveX DLLs.

6.3 A sample ActiveX DLL project.

6.3.1 The DLLFunctionsModule module.

6.3.2 The DLLFunctions class.

6.4 Using VBDLLINAPL.DLL.

6.4.1 Syntax issues.

6.4.2 Querying the events in VBDLLINAPL.

6.4.3 Querying the properties in VBDLLINAPL.

6.4.4 Querying the methods in VBDLLINAPL.

6.4.5 XCurrencySymbol.

6.4.6 XDateCompare.

6.4.7 XDateScalar.

6.4.8 XDateValid.

6.4.9 XDaysOfWeek.

6.4.10 XFindReplace.

6.4.11 XGetAgeAttQ.

6.4.12 XGetDatePart.

6.4.13 XGetDateTime.

6.4.14 XGetLocal.

6.4.15 XGetTimeStamp.

6.4.16 XMonthsOfYear.

6.4.17 XNumberValid.

6.4.18 XSpellDate.

6.4.19 XStringCase.

6.4.20 Getting help on syntax.

6.5 Processing APL+Win arrays.

6.6 Deploying ActiveX DLLs.

6.6.1 Name and location.

6.6.2 General availability.

6.6.3 Updrading/Replacing ActiveX DLLs.

6.6.4 ActiveX DLL coding for APL.

6.7 Building a DLL for APL using C# Express 5.

6.7.1 Using the C# DLL.

6.7.2 Deploying C# DLLs.

Chapter 7 - Application Extension using Scripting.

7.1 The APL/VBScript affinity.

7.1.1 The VBScript built-in functions.

7.1.2 Adding the Script Control.

7.1.3 An algebraic expression evaluator.

7.2 Error trapping.

7.3 Exploring the Script Control.

7.3.1 The Eval method.

7.4 Extending the Script Control.

7.4.1 What is in SampleCode?.

7.5 Multi-language programming.

7.5.1 Sharing an APL+Win object.

7.5.2 Creating own instance of APL+Win object.

7.5.3 Processing simple numeric arrays.

7.5.4 Passing arguments to built-in functions.

7.6 Sharing with the APL Grid object.

7.7 Concurrent sharing with the Script Control.

7.8 APL+Win and HTML.

7.8.1 Creating/Displaying HTML file from APL+Win.

7.8.2 Taking control of HTML content.

7.8.3 APL+Win and XML.

Chapter 8 - Windows Script Components.

8.1 Building a Script Component using JavaScript.

8.1.1 Coding the methods.

8.2 Building a Script Component using VBScript.

8.3 About the VBS file.

8.4 Runtime errors in script components.

8.5 Which Scripting language?

8.5.1 A wise choice?

8.6 Multi-language Script component.

8.7 What is in MULTILANGUAGE.WSC?

8.7.1 Is a property read only or read/write?

8.7.2 Firing an event associated with a property.

8.7.3 Firing an event associated with a method.

8.8 Finally, just because it is possible….

8.8.1 Testing with APL+Win as the server application.

8.8.2 Testing with VBScript as the client application.

8.8.3 JavaScript as the client application.

8.8.4 Comparing VBScript and JavaScript.

8.9 The way forward with script components.

Chapter 9 - Working with Excel.

9.1 Application or automation server.

9.1.1 Using the automation flag.

9.2 The basic structure of Excel.

9.2.1 Orphan Excel sessions.

9.2.2 Excel Data representation.

9.3 APL arrays and Excel ranges.

9.3.1 Writing to multiple sheets.

9.3.2 Excel Worksheet functions.

9.3.3 Excel user-defined functions.

9.3.4 Excel dialogues.

9.3.5 Excel charts.

9.3.6 Excel ad hoc.

9.4 Object syntax.

9.4.1 The FindWindow API.

9.4.2 The GetWindowText API call.

9.4.3 Does the ActiveX server still exist?

9.5 Excel using APL+Win to retrieve APL data.

9.5.1 Usability models.

9.6 The Excel Add-In.

9.6.1 Add-In visiblility.

9.6.2 APL server workbook code.

9.6.3 APL server module code.

9.6.4 CreateVariable.

9.6.5 APLServer class code.

9.6.6 The APL server toolbar.

9.6.7 The initial ActiveX server workspace.

9.7 The EWA model in action.

9.8 Transferring APL+Win data to Excel.

9.9 Automation issues.

9.9.1 APL+Win issues.

9.10 Why use Excel with APL?

Chapter 10 - Working with Word.

10.1 The Word difference.

10.2 Word templates.

10.2.1 Global, user, and workgroup templates.

10.3 Starting Word.

10.4 Word as a report generation component.

10.4.1 Tables.

10.4.2 Building an APL+Win array.

10.4.3 APL+Win array to Word table.

10.4.4 Active document random access.

10.4.5 Formula.

10.4.6 DDE automation.

10.4.7 INCLUDEPICTURE.

10.4.8 INCLUDETEXT.

10.4.9 Form fields.

10.5 Populating form fields.

10.5.1 Error trapping.

10.6 Word vs. Excel for APL+Win automation.

10.7 Automation.

10.7.1 APL+Win automation issues.

Chapter 11 - Working with Access.

11.1 The Access pathways.

11.1.1 Access smoke and mirrors.

11.2 The Access object.

11.2.1 Dynamic query definition.

11.2.2 Queries based on user-defined functions.

11.2.3 Deleting Access objects.

11.3 JET Engine types.

11.4 Access—below the surface.

11.4.1 MDB files.

11.4.2 ADP files.

11.4.3 The MDB/ADP file menu.

11.4.4 Linking tables.

11.5 Working with many data sources.

11.5.1 Troubleshooting databases with linked tables.

11.6 Troubleshooting data projects.

11.6.1 Using an existing MDF file.

11.6.2 Using a new MDF file.

11.6.3 Data project: using the ODBC driver.

11.6.4 Data project: using the JET provider.

11.7 The Jet compromise.

11.8 Unified approach with ADO and SQL.

11.8.1 ADOX:ADO Extension for data definition and security.

11.9 Access SQL.

11.9.1 Access SQL with user-defined function.

11.10 Database filing.

11.10.1 Using an Access database.

11.10.2 Storing variables and functions.

11.10.3 Storing Files.

11.10.4 Deploying database filing.

11.11 Automation issues.

Chapter 12 - Working with ActiveX Data Object (ADO).

12.1 Translating code examples into APL+Win.

12.1.1 Simulating On Error Resume Next.

12.1.2 Simulating On Error Goto.

12.2 The connection object.

12.2.1 Creating an active connection object.

12.2.2 Database connection using a connection string—syntax I.

12.2.3 Database connection using properties—syntax II.

12.3 The record object.

12.3.1 Record object using redirection.

12.3.2 Record object without connection object.

12.3.3 Creating a record object.

12.3.4 Cloning a record object.

12.3.5 Tables in a data source.

12.3.6 Working with record objects.

12.3.7 Navigating record set objects.

12.3.8 Working with complete record objects.

12.4 The data source catalogue.

12.5 Learning ADO.

Chapter 13 - Data Source Connection Strategies.

13.1 The application handle.

13.2 The DSN overhead.

13.2.1 Acquiring a default DSN.

13.2.2 Creating a data source.

13.3 Automating user/system DSN creation.

13.3.1 With an API call.

13.3.2 With the 'Prompt' property of a connection object.

13.4 The ODBC Data Source Administrator.

13.4.1 Enumerating installed drivers.

13.5 System DSN connection.

13.5.1 Creating a SQL Server system DSN.

13.5.2 Creating an Oracle system DSN.

13.5.3 Configuring a system DSN.

13.5.4 Removing a system DSN.

13.6 User DSN Connection.

13.7 DSNManager syntax summary.

13.8 File DSN Connection.

13.8.1 Using a file DSN.

13.8.2 File DSN portability.

13.9 UDL connection.

13.10 DSN-less connection.

13.11 Server data sources.

13.12 Access data sources.

13.13 Excel data sources.

13.14 Text data sources.

13.14.1 The SCHEMA.INI file.

13.14.2 Creating SCHEMA.INI automatically.

13.14.3 Refining content of SCHEMA.INI file.

13.15 Data source issues.

13.16 Inward APL+Win issues.

13.16.1 Data types.

13.16.2 The atomic vector.

13.17 Outward APL issues.

13.17.1 CSV files issue.

13.18 The way forward with the data tier.

Chapter 14 - Structured Query Language.

14.1 SQL statements.

14.2 SQL prime culprits.

14.2.1 Handling NULL values.

14.2.2 SQL convention for column names.

14.2.3 SQL comments.

14.3 APL and SQL.

14.3.1 Coping with SQL variations.

14.3.2 Using DMBS properties.

14.3.3 ANSI SQL.

14.3.4 Date/Time handling in data sources.

14.4 Learning SQL.

14.4.1 The SQL Data Query Language.

14.4.2 The SQL Data Manipulation Language.

14.4.3 The SQL Data Definition Language.

14.4.4 The SQL Data Control Language.

14.4.5 The way forward with SQL.

14.4.6 Debugging SQL.

14.4.7 Optimising SQL.

14.4.8 SQL dialect specialisation.

Chapter 15 - Application Evolution.

15.1 Application deployment.

15.2 The next release.

15.2.1 The schedule of work.

15.2.2 Fault management.

15.2.3 Wish management.

15.2.4 If it works, improve it!

15.2.5 Efficiency management.

15.2.6 Small vs large scale improvements.

15.3 Application workspace.

15.4 APL libraries vs UNC names.

15.5 Readability.

15.5.1 Style.

15.6 Global variables.

15.6.1 Initial values.

15.6.2 Constants.

15.7 Using API calls.

15.7.1 Adding missing API calls.

15.8 Version control.

15.9 Change management.

15.10 Legacy management.

15.10.1 Workspace organisation.

15.10.2 Modernisation.

15.11 Indentation.

15.11.1 Limitations of indentation.

15.12 Documentation.

15.12.1 Context sensitive help and user manuals.

15.12.2 Auditing changes.

15.13 Testing.

15.13.1 Functionality changes.

15.13.2 Automatic migration.

15.14 Release.

15.14.1 What’s new?

15.14.2 Incremental upgrade.

15.14.3 Replacement upgrade.

15.15 Application listings.

15.15.1 Producing the listing.

15.16 Epilogue.

Bibliography.

Index.