







Commonwealth   Data   Systems,   Inc

PDC - NJ - Jan. 1993

 CIS   Demonstration   System
 Development
 Notes




















January 17, 1993



Prepared

by:

Larry Bradshaw

CIS Demo System Development Notes
Table of Contents

Overview     .     .      .     .      .     .      .      .     .      .     1
Introduction .     .      .     .      .     .      .      .     .      .     3
Initial Data Load  .      .     .      .     .      .      .     .      .     4
Reports      .     .      .     .      .     .      .      .     .      .     5
Events             .      .     .      .     .      .      .     .      .     7
To - Do            .      .     .      .     .      .      .     .      .     8
3rd Party Utilities       .     .      .     .      .      .     .      .     9
Trademarks & Copyrights         .      .     .      .      .     .      .     9
DEMO SYSTEM - OVERVIEW

This CIS demo system was designed to import,  parse and save CompuServe Information
System (CIS) messages from the PDOXDOS.msg file normally produced by TapCis.
Other message formats can easily be imported and parsed as well,  by making whatever
modifications are required.  Also,  at least one CIS member's name does not parse out
properly;  interested parties may want to refine or redesign the parser.

The CIS demo system is under development.  This is a Draft Development Note set and
is intended to offer background information on the system.  As a Draft Note set,  the
scope of this document is limited to the following topics:
      o      General system overview
      o      Producing a prototype report,  namely:  Message Report
      o      Brief event processing discussion.
      o      To-Do item list.

The demo system is intended to function as an invitation to Paradox developers to work
in Paradox 4.0;  but is not what we consider a complete system.  This document and the
related application assume the audience has a working knowledge and application
development skills at the Paradox 3.5 level at least.  Obvious and not so obvious features
and functions were omitted to encourage developers to modify the system.  All we ask
is that our,  and contributing,  and future authors names be kept intact.   This system is
offered with no warranty,  assurance of reliability or usefulness for any particular
purpose.  The CIS Demo System offers the following functionality:

      o      Import an ascii text file into a Paradox table
             (PdoxDos.msg into t\\Bordb_in).

      o      Parse ascii text into Paradox fields,  load Blob field with text
             of CIS messages.

      o      Production of a report based upon saved query criteria.
             This may be extended to apply any selected criteria set to
             any defined report.

      o      Generation of query criteria sets,  from query criteria
             category picklists in pop-up dialog picklists.

      o      Revision of saved query criteria sets.

      o      Once created,  a report may be printed, previewed or
             viewed in table form (browsed).


Among the Paradox 4.0 Application Language (PAL) constructs included for
demonstration in this system are:

      o      Paradox 4.0 errorproc and error documentation.

      o      Picklist Dialog Boxes.

      o      Ok/Cancel informative message dialog box utility,  autosizing.

      o      Slide-bar percentage complete dialog box.

      o      Table workspace management utility to track all tables on the workspace.

      o      Wait Workspace waitprocs with menu selection and other events.

      o      Nested Waitprocs for saved criteria set selection and edits.

      o      Paradox 3.5 style Wait Table for browsing report answer table.

      o      Global and local dynarrays.

      o      Various PAL commands and syntax new to 4.0CIS Demo SYSTEM - Introduction

The CIS Demo system is not a fully normalized,  Multi-User Paradox 4.0 RDBMS
application.  To simplify the application,  only single table queries and edits are used.
Interested parties may normalize this application as they see fit.

Object Oriented Design (OOD) methodology produced this application,  which is written
in structured,  modular,  proceduralized Paradox Application Language (PAL) modules
and optimized into one library.  Data tables are kept in the "D" subdirectory,  temporary
files and tables in the "T" subdirectory,  source code in the "S" subdirectory and libraries
in the "L" subdirectory.  This exemplifies a directory management approach commonly
known as Relative Directory Addressing (RDA).  An in depth discussion of RDA is
beyond the scope of this document.

Contributing authors are credited with work at the beginning of each program to which
they contributed,  to the best of our ability to do so.  We extend our deepest thanks and
appreciation to these authors and others without whom the Paradox Development
community would be a difficult and trying place.  This application is our way of
attempting to return some small part of the assistance we have received to the Paradox
Development community.


To re-create the main library,  play the "Make.sc" script from the Cis_App subdirectory.
It creates the library and runs the four files which contain all programs in this
application.

CIS Demo System - Initial Data Load

To load the initial,  dummy,  set of CIS messages,  simply select "Import" from the main
menu and the application will load the dummy messages and archive the original file.
To load your messages,  from any CIS forum,  simply copy your TapCis *.msg file into
the \\tap5 directory and rename it "PdoxDos.msg"

Messages identified as duplicates by the parser are saved into the d\\Cis_Dup table.

CIS Demo System - REPORTS
The application currently offers a single report as discussed in the Overview.  It is
intended that upon review of this report,  the reader will add additional reports to this
system.  To facilitate later revisions,  all reports are based on the standard Paradox
Report Form layouts.  Some of the features of the current draft reporting subsystem are:

      o      Reproducibility of reports.  This entails the ability to save
             any given report specification and reproduce the report with
             it at a later date.  It is also possible to exercise this feature
             within a greater methodology to yield pattern identification
             and trend analysis;  work on this extraordinarily potent
             aspect of the system is left to the reader.

      o      Selection of report specification criteria from a list of
             existing data set elements.  This ensures that reports actually
             include all of the desired records regardless of data set
             inconsistencies such as misspellings and capitalization
             variations.  It also eliminates the requirement that users
             know how their data behaves.
Report specification criteria is a common data processing term which in this context can
be defined as the criteria that defines the subset of data upon which any given report is
to be produced.  Some reports never use less than the full set of data.  Other reports will
seldom if ever be run against the full set of data.

The report selection criteria menus consist of the following series of events:
      1.     "Settings" is selected from the Report Menu.

      2.     The saved criteria table ("d\\crit_set") appears on the
             screen in formview.

      3.     The criteria set may be edited either by menu selection or
             by double right-clicking the mouse button.  To use a given
             criteria set,  simply move to it either by using the up and
             down arrow keys or by clicking on it with the mouse,  and
             select "Use and Exit" from the drop down menu or double
             left-click the mouse.

             No direct edits are permitted except to the Name field;  all
             other query criteria are produced from dialog box picklists.CIS Demo System - EVENTS

Two approaches to return values within waitprocs are included in this system.  One
defines the variables AcceptEvent,  RejectEvent and RejectEventExit and utilizes them
to control event return values.  The second defines a single variable EventRetval to
which the return values are assigned as desired.  In one case in a nested waitproc,
rejecteventexit is used although eventretval is defined;  this was done to emphasize the
nested nature of the waitproc.

An exhaustive discussion of Paradox 4.0 event driven programming is beyond the scope
of this document.  Efforts to convey the minimal event handling included in this
application ballooned into impossible scope.  We can only direct the reader to the source
code in the file s\\critset3.sc and references such as the Paradox Programmer's Guide
and Paradox 4.0 Developer's Guide.  Also,  excellent training is available although we
only train upon special requests from clients for whom we have developed large scale
applications.

It is our experience that the best way to debug event driven PAL in 4.0 is by strategic
placement of debug statements within the case elements in the eventproc,  whether a
dialog proc or a waitproc.
CIS Demo System - To-Do Item list
The following items are among those left to the developer to do in the interest of
keeping this system as simple as possible:

      o      Normalization of CIS_MSG table.

      o      Addition of Message text criteria category.

      o      Addition of CIS_MSG browse,  edit waitproc.

      o      Addition of context cross references.

      o      Addition of threads as a criteria category.

      o      Addition of cascaded dialog boxes to control query logic; all
             queries are done with "or" between selected criteria.

      o      Refinement of the message parser.

      o      Double columns in picklist dialog boxes so selected criteria
             always appear in a separate column.

      o      Extensions to the d\\crit_set table so that an unlimited
             number of query criteria may be selected.

      o      Revision of first, last and middle initial fields into a single
             name field,  and use of a single name field in the criteria
             selection subsystem.

      o      Integration with external utils;  at present this application is
             only a research tool.

      o      Addition of other reports.  CIS Demo System - 3rd Party Utilities

The following 3rd party utilities were utilized in producing this application:

      Desktop4            Kallista Inc.
                          11 East Adams St.,  Suite 1402
                          Chicago,  Illinois  60603
                          (312)  663-0101

      PlayRight Pro       The Burgiss Group,  Inc.
                          One Newark Street    Suite 5B
                          Hoboken,  New Jersey   07030
                          (201) 795-5144
                          (201) 795-9237  fax

      Ensemble            Tony Goodman
                          (address unavailable)

      WaitPlus Pro        Alan Zenreich
                          (address unavailable)

Also,  sample code generously posted on Compuserve by Dan Paolini formed the
foundation for some of the programs in this system.  Thank you Dan!

If we have omitted anyone in our rush to get this out the door,  our apologies; let us
know and we will include you in revisions to be posted in Paradox forums.



CIS Demo System - Trademarks & Copyrights
Trademarks and copyrights:
   CIS, CompuServe Information Systems
   TapCis,  Support Group Inc.
   Paradox,  Borland International

