***********************************************************************
*********************** ProTools Demonstation  ***************************
***********************************************************************

Thank you for choosing to review this demonstration sample of ProTools.

The ProTools demonstration is a data-driven application that is designed
to give an overview of a collection of tools from ProTools.  Basically,
you select an option from a list.  That selection is demonstrated - and
you are asked whether you desire to view the test code.  This demo is functional for both FP DOS and Windows.  The demo will function with an appropriate 'key' file for FP Mac without any other changes.

This is a basic demonstration.  Many of the functions that are
demonstrated have many options available to customize them for your
particular use.  In addition, ProTools consists of many additional tools that are not demonstrated or included in this documentation.

To run this demo, include all files for this demonstration in a
subdirectory.  SET DEFAULT to the subdirectory.  Type DO demo.

**********************************************************************


by	Ira D. Wald
	Creative Software Solutions

I can be reached at:

Telephone:	(612) 546-0527
Fax:		(612) 546-0527
Compuserve:	72060,2662

Address:	Ira D. Wald
			Creative Software Solutions
			2740 Quaker Lane
			Plymouth, MN.  55441

Creative Software Solutions creates custom FoxPro applications to meet the special needs of each of our clients.  We are available to assist with any development effort, from individual solutions through commercial applications.  We have extensive network, WAN and telecommunications expertise that can be applied for your benefit.

***********************************************************************

Legal Notices

Copyrighted by Creative Software Solutions (CSS) 1992, 1993, 1994.  
CSS retains all rights to this code.

ProTools comes with no warranties, expressed, implied, or otherwise.  No liability is assumed for any consequences resulting from the use of any ProTools code.

This demonstration may be distributed. No service fees may be collected for it's distribution.  Exceptions may be made with prior written arrangements with Creative Software Solutions.  Any distribution must be made using the original ZIP'ed library in order to ensure complete integrity of the copy.  The ZIP library has a Creative Software Solution PKZIP validation and checksum code embedded.

***********************************************************************

Pricing

If you like this demonstration, you may desire to purchase the ProTools library, with it's extensive capability to help your applications. 

If you DO NOT like this demonstration, we would like to hear from you to learn what is not to your satisfaction.

If you DO like these tools, we would like to hear from you to learn what is useful and how you are planning on using it.  Again, you may be interested in purchasing the entire ProTools library.

The point is, we would like to hear from you.  Let us know what you are doing and how tools of this nature could help you.

ProTools costs $150 (US) for the library with source code.  There is an additional $6 for standard shipping in the USA.  Minnesota address require 6.5% sales tax.  Special and international shipping requirements will be added to the cost.  Periodic updates are available at a reduced price for current ProTools users.

All purchases include extensive printed usage documentation.  Purchase includes license for use with any number of applications for a single developer.  Each developer requires a separate license.  The ProTools library object code may be distributed with applications developed by a license holder (with some minor exceptions).  

Source for functions from ProTools may not be distributed without prior arrangements with Creative Software Solutions.

***********************************************************************

ProTools Overview

ProTools is a library of easily used routines that help to improve the appearance and use of any application - while saving development time in the process.

ProTools costs $150 for the library with source code (plus shipping and tax).  All purchases include printed usage documentation.  Purchase includes license for use with any number of applications for a single developer.  Each developer requires a separate license.  The ProTools library may be distributed with applications developed by a license holder.

Most ProTools functions are completely compatible between Fox/DOS, Fox/WIN, and Fox/Mac.

The following is a sample listing of functions that are included with ProTools:

*
*	User Input Routines
*
PROC ask			Advanced single entry dialog box
PROC ask_mult		Multiple entry dialog box
PROC ask_text		Text display with up to 2 buttons for choices
PROC browser		Advanced incremental browse facility	
PROC brow2			Browser with additional capabilities 
					(sort, application defined keys, etc.)
PROC picklist		Abreviated browser utility for picklists only
PROC edit_fld		Memo field editor window (updates the mem field)
PROC edit_mem		Memo field editor
PROC info_box		Viewer window for large volume of text

PROC chooser		Multiple choice display - parameter based
PROC choose_a		Multiple choice display - array based
PROC choose_1		Single push button display box
PROC choose_2		Two horizontal push button display box
PROC choose_3		Three horizontal push button display box
PROC choose_4		Four horizontal push button display box
PROC choose_h		Two choices - presented as horizontal buttons
PROC choose_p		Choice popup - at current cursor coordinates
PROC choose_q		Choice popup - current cursor - array based
PROC choose_v		Choice popup - present popup list from GET VALID()
PROC choose_w		Choice popup - GET VALID list - array based
PROC chooseV2		Vertical choice of 2 buttons.  Optional text.
PROC chooseV3		Vertical choice of 3 buttons.  Optional text.
PROC chooseVa		Vertical choice of n buttons from an array.  Optional text.
PROC get_skip		Call in GET WHEN() to Skip to VALID().

PROC msg			Display a window w/a msg.  Wait for Esc or mouse.
PROC msg_wait		Display a window w/a msg.  
					Timeout or residual display permitted.

PROC pop_mult		Multiple selections from a pop-up
PROC pop_mvr		Reorder selections from a pop-up.
					Results returned by numbering original array.
PROC pop_mvr2		Reorder selections from a pop-up.
					Results returned by reordering an array.
PROC popmovmu		Reorder selections from a pop-up.
					Results returned by reordering an array.
					Multiple selections

PROC secret			 Interprets keyboard w/o typing words to user

PROC sql_sel1		Basic screen that accepts user instructions to
					search for data

PROC sql_sel2		Advanced SQL query screen.  ALL of FoxPro's RQBE functions + more that can be used from within a distributable application.
PROC sql_sel3		Run a saved SQL query session.

PROC yesno			User response: yes or no.  Vertical choices.
PROC yesno2			User response: yes or no.  Horizontal choices.

PROC txt_c			Center proportional string of characters
PROC txt_l			Left justify - pad right - proportioanl string of characters
PROC txt_r			Right justify - pad left - proportional string of characters

*
*	File Functions
*
PROC exclusiv		Gain exclusive access to a file
PROC filename		Divides file name into components and checks if exists
PROC fileroot		Returns base file name w/out extension, path, or drive
PROC f_excl			Wait for exlusive access
PROC f_open			Generalized file open routine
PROC f_mult			Open multiple files concurrently.  
					Success only if all files can be opened.
PROC f_close		Generalized file close routine
PROC f_lock			Wait for file lock
PROC r_lock			Wait for record lock

PROC dir_chr		Total Size of files that match a file specification
PROC del_wild		Wild card delete of files w/optional skip/delete user choice
*
*	Statistical Functions
*
*	The following return statistics from a file as a function.
*	They are easily used in report scripts and other places where
*	procedures are not as handy to use.
*
PROC avg			 Average
PROC cnt			 Count
PROC maximum		 Max
PROC minimum		 Min
PROC std			 Standard Deviation
PROC sum			 Summation
PROC var			 Variance

*	The following are equivalent to the above - but exclude records
*	whose fields are empty or zero.
PROC avg_x			 Average
PROC maximumx		 Max
PROC minimumx		 Min
PROC std_x			 Standard Deviation
PROC var_x			 Variance

*
*	Conversion Functions
*
PROC ainvert		Copy an array, replacing array rows with columns
PROC atf			Locate any character from a string within another string.
PROC ch_filt		Filters a range of characters from a string
PROC ch_filtx		Filter everything except a range of characters.
PROC ctocnumb		Filters all non-numeric characters from a character number.
PROC even_odd		Determines if a number is even or odd
PROC get_word		Extracts words from a string
PROC mem_var		Returns a field as a memory variable

PROC mline_x		Extract range of lines from a memo field
PROC spcredox		Eliminate multiple spaces, replacing with singe spaces.
PROC xlate2c		Translate any field to character
PROC xlate2cx		Converts a character string to a string w/typed delimeters
PROC x2null			Return a typed null value
PROC chr2ctrl		Converts special ascii character combinations into control representations
PROC ctrl2chr		Converts control characters into special ascii character combinations
PROC chr2spec		Converts character text into another format
PROC chr2sub		Converts multiple characters to a substituted value

PROC stripeol		Replaces LF and CR with nulls
PROC str_doll		Converts a number to a long $$ and cents string
PROC str_numb		Converts a number to a long text string
PROC strtrnl		Replace leading characters with another character
PROC strtrnlc		Same as strtrnl but case insensitive
PROC strtrnr		Replace trailing characters with another character
PROC strtrnrc		Same as strtrnr but case insensitive
PROC lst_str		Converts a number into a long text representation
PROC varclear		Clears a list of variables, memvars, arrays, colums, rows
PROC encryptn		Encrypt and reduce bytes of numeric data
PROC decryptn		Decrypt and restore bytes of numeric data
PROC sound_ex		Create an extended SOUNDEX style character string
PROC is_mask		Verify compliance of a string to a general mask

PROC vocabula		Translate via a vocabulary list

* Merge Functions
PROC merge			 Advanced Merge functions

* Date Functions
PROC ctod_x			Extended character to date conversion function
PROC dtoc_x			Extended date to character conversion function
PROC month_f		First day of the month
PROC month_l		Last day of the month
PROC dateWday		Returns the closest date needed to get to a specified day of the week.

* Time Functions
PROC count_dn		Count down timer
PROC time2sec		Converts char time to numeric seconds
PROC sec2time		Converts numeric seconds to char time
PROC timediff		Numeric difference between two character times
PROC timer			Multiple event interval timer

*
*	Data Dictionary 
*
PROC db_size		Projected database size
PROC dd_comp		Compare a database against the data dictionary
PROC dd_creat		Create a database from a data dictionary
PROC dd_upd			Update a database from a data dictionary	

*
*	Event Processing
*
*	List driven event processing.
*	Add functionality by adding records to a table of potential events.
*
PROC action			Add an action to the event list
PROC act_mod		Modify last action in the event list
PROC back			Return to a user selected, previously visited action
PROC back1			Return to a program selected, previously visited action
PROC back2			Return to a program selected, clear redundant previous entries
PROC button			Choose from a subset of actions
PROC pro_main		Standard event loop

*
*	General Utilities
*

* Screen Builder Aids
PROC upd_set		 Preserve current variable from a WHEN clause
PROC upd_test		 Check if the variable changed in a VALID clause

PROC set_push		Push current settings to a stack
PROC set_pop		Pop settings from a stack
PROC set_mod		Change a setting throughout the stack

PROC bell			Custom bell voices

PROC debugger		Mini script to setup windows for debugging code
PROC cur_sel		Determine work areas currently in use

PROC seek_x			SEEK() variant that permits choosing sort order
PROC unique_x		SEEK() variant that determines if a key is unique

PROC multcmnd		 Execute multiple commands from a single function call.

PROC configts		 Verify local configuration

PROC chkState		Check if a valid 2 character state ID

PROC colorSet		User selection of color schemes
PROC colorMac		User selection of pseudo color schemes, usable w/Mac

PROC errbasic		Basic error processing
PROC err_disp		Advanced error processing
PROC errmsg			Initialize the error processor
PROC err_cap		Capture environment info
PROC err_prn		Print environment info
PROC errnote		Display program supplied error message for the user

PROC helpedit		Help file editor
PROC helper			Automatic selection of topics for help editor
PROC id				Check out a sequential number
PROC id_x			Check out a sequential number (for FP 2.6)
PROC id_roll		Return a sequential number for re-use
PROC id_ser			Modify sequence for sequential number
PROC id_ser			Modify sequence for sequential number
PROC nextcode		Generate a sequential code using numbers with upper/lower case alpha

PROC logger			Basic information log

PROC login			Log-in procedure and set user's configurations
PROC logout			Log-out procedure and save user's configurations
PROC logcnt			Count number of currently logged in users
PROC logfix			Fix table of curretnly logged in users
PROC finish			Cleanup and return to FOX or to DOS
PROC get_site		Get current site code.  Used to make unique ID's for cross platform applications.
PROC pro_reg		Register an un-registered product
PROC reg_site		Registration ID for a site
PROC auditkey		Get a unique ID for user.  
					Enter date/time stamp in file.

PROC auditnum		Get unique number.  
					Concatenates session site/user/date/time with uniqueID
PROC audstat		Identify the site/user/date/time from a key stored in the auditkey database
PROC stat_bar		Present a standard status bar message.  Includes record numbers and date/time stamps
PROC parse			Process tokens and separators from a memvar
PROC f_parse		Process tokens and separators from a text file
PROC f_search		Search for a string in a low level file
PROC f_repl			Search for and replace a string in a file
PROC parsenam		Extract portions of names (first, middle, last)

PROC motion			 Forward/Backward File Motion

PROC port_set		 Configure printer setup for user to send output to a port.
PROC prnt_out		 Clean up after printing - turn off printer settings
PROC prnt_por		 User Selected file output name
PROC prnt_set		 Configure printer plus select printer driver

PROC pro_init		Set up color schemes and coordinates
PROC pro_end		Restores selected environmental conditions.

PROC inx_tags		Find set of index tags for a file
PROC inx_gen		Determine indexes for a file - from INDEXES.DBF
PROC pro_indx		Safe database re-index
PROC pro_pack		Safe database pack

PROC db_main		User maintenance display - pack/index/system log

PROC pro_ver		Display configuration information
PROC pro_verd		Write config info to disk
PROC pro_font		Validate font selection for use by Windows and Mac apps

PROC prn_wait		Wait for the current printer to become available

PROC rsrcID			Resource ID
PROC rsrcName		Resource Name
PROC rsrcNAry		Resource Name Array
PROC rsrc_set		Hook up to a user specific resource file
PROC rsrcchng		Change ProTools global parameters when changing in resource file.
PROC rsrclean		Clean POS and WIND entries from the resource file

PROC sys_cfg		System level controls for user access
PROC sys_log		Displays, copies, or prints system log
PROC user_opt		Settings and info re: user options

PROC thermact		Activate a thermometer
PROC thermupd		Update a thermometer
PROC thermdon		Deactivate a thermometer

PROC ther2act		Activate a 2-bar thermometer
PROC ther2upd		Update a 2-bar thermometer
	
**********************************************************************
