home *** CD-ROM | disk | FTP | other *** search
- IMPORTANT NOTICE * IMPORTANT NOTICE * IMPORTANT NOTICE * IMPORTANT NOTICE *
-
- This file contains Notes on using the files on the distribution
- disks and also has Corrections and Additions to the manual for
- Steve Straley's ToolkiT(r) - Release 2.10
-
- THIS RELEASE CONTAINS 3 DISKS.
-
- Technical Support and Service is now available at the following numbers:
-
- 1-212-599-3225 : East Coast Phone Support
- 1-818-342-1616 : West Coast Phone Support
- 1-212-599-3226 : Fax Support
- 1-201-943-5419 : 2400 Baud Support BBS
-
- After the listing of the files contained on the distribution disks and
- installation instructions, this file contains a section covering additions
- and modifications to the manual. IT IS VITALLY IMPORTANT THAT YOU READ THIS.
-
- Please print out the contents of README.SJS (the same as this file)
- which is in Toolkit1.exe on Disk 1 and keep it with your documentation.
- If you don't wish to extract all of the source code (about 670 KB) you can
- extract README.SJS with the following syntax assuming you are logged
- onto drive C:\ and Disk 1 is in drive A:
-
- C:\>A:toolkit1 readme.sjs -o
-
- INSTALLATION INSTRUCTIONS:
-
- The full contents of any of the .exe files may be extracted
- simply by logging onto the drive and directory which you wish to
- contain these files and then, assuming that Disk 1 is in
- drive A:, using the following syntax:
-
- C:\>A:toolkit1 -o
-
- If you wish to extract only specific files, then use this syntax:
-
- C:\>A:toolkit1 <filename> <filename> ... <filename> -o
-
- Wildcards may be used:
-
- C:\>A:toolkit1 sst9??.* -o
-
- CONTENTS OF TOOLKIT1.EXE CONTAINED ON DISK 1
-
- ADDLIB Script file for Microsoft LIB utility which will remake
- Toolkit.lib
- README.SJS The contents of this file in straight ASCII.
- SST*.PRG Source code files for the ToolkiT functions.
-
- CONTENTS OF TOOLKIT2.EXE CONTAINED ON DISK 2
-
- TOOLKIT.LIB The Toolkit Library
- TOOLKIT.OBJ Linked in with Toolkit.Lib to call ALL of the
- pop-up utilities inside TOOLKIT.LIB.
- TCLIP.BAT This batch file is identical to TCLP.BAT except
- the TOOLKIT.OBJ is added to link list as well.
- The contents of the default setting to ToolkiT.obj
- is to call ALL of the pop-up utilities inside
- TOOLKIT.LIB. It will be assumed that
- CLIPPER.LIB and EXTEND.LIB are in a subdirectory
- named CLIPPER, that a DOS path is set to the
- CLIPPER directory, and that there is a TOOLKIT
- subdirectory (off the root) that contains
- ToolkiT.Lib and ToolkiT.obj.
- TCLP.BAT This batch file will compile the passed file
- and the specified Clipper switch. This batch
- file calls TOOLKIT.LIB. It will be assumed that
- CLIPPER.LIB and EXTEND.LIB are in a subdirectory
- named CLIPPER, that a DOS path is set to the
- CLIPPER directory, and that there is a TOOLKIT
- subdirectory (off the root) that contains
- ToolkiT.Lib.
- TOOLKIT This file, with no extention, is the MAKE file
- for MICROSOFT's MAKE utility that will "make"
- the TOOLKIT.LIB. It is will NOT work with
- Nantucket's MAKE utility and it requires
- Microsoft's LIB utility program as well.
- TOOLKIT.PRG This contains the three functions used for the
- pop-up routines. Please refer to the sections
- of the manual regarding this topic or SETKEYON(),
- SETKETSET(), or SETKEYOFF()
-
- ALLDEMO.PRG This should be compiled with TCLP.BAT file. This
- will generate the general demonstration program
- for the ToolkiT. It requires CLIENTS.DBF and PEOPLE.DBF
-
- POPDEMO.PRG This should be compiled with TCLIP.BAT. This program
- demonstrates all the pop-up utilities and Data
- Driven Programming text file functions.
-
- LINE.PRG This program converts .PRG's to text files adding
- line numbers to the front of each line.
-
- CONF0.PRG This makes up the data files for all of the
- program files with a file prefix of CONF*
-
- DEMO1.PRG This program demonstrates the NUMERIC, MATHEMATICAL,
- and FINANCIAL functions within the ToolkiT.
-
- CONTENTS OF TOOLKIT3.EXE CONTAINED ON DISK 3 OF 3
-
- CLIENTS.DBF This is a dummy database to be used by the ALLDEMO program.
-
- PEOPLE.DBF This is a dummy database to be used by the ALLDEMO program.
-
- CONF1.PRG This shows the extended use of the DBEDIT() function,
- working with the ToolkiT
-
- CONF2.PRG This shows how a database can be tagged to prevent
- x number of records from being added to the databases.
-
- CONF3.PRG This shows how variables can be stored to disk.
- It is similiar to VARTEST.PRG
-
- DEMO2.PRG This program demonstrates the TIME and DATE functions.
-
- DEMO3.PRG This program demonstrates the ARRAY functions.
-
- DEMO4.PRG This program demonstrates the PROGRAMMING functions.
-
- DEMO5.PRG This program demonstrates the DISPLAY functions.
-
- DEMO6.PRG This program demonstrates the DATABASE functions.
-
- DEMO7.PRG This program demonstrates the LOW / FILE functions.
-
- DEMO8.PRG This program demonstrates the STRING functions.
-
- DEMO9.PRG This program demonstrates the WINDOWING functions.
-
- DEMO10.PRG This program demonstrates the DATA DRIVEN functions.
-
- BASE1.TXT Text file for Demo10.prg
-
- COLOR.TXT Text file for Demo10.prg
-
- DATAHELP.TXT Text file for Demo10.prg
-
- MASTER.TXT Text file for Demo10.prg
-
- MENU1.TXT Text file for Demo10.prg
-
- MENU2.TXT Text file for Demo10.prg
-
- READ.TXT Text file for Demo10.prg
-
- READ1.TXT Text file for Demo10.prg
-
- READING.TXT Text file for Demo10.prg
-
- SETUP.TXT Text file for Demo10.prg
-
- WIN1.TXT Text file for Demo10.prg
-
- WINDOW.TXT Text file for Demo10.prg
-
- WRITING.TXT Text file for Demo10.prg
-
- SJSDEBUG.PRG This file is a debugging utility that will work in place
- of ERRORSYS.PRG. Pressing TAB will get all of the memory
- variables as seen by Clipper; pressing SHIFT TAB will get
- an on-line note taking utility; ALT G will go to a specific
- line number within the file; ALT F will open a NEW file.
-
- TOOLKIT.TRH This is the compiled help file for Tom Rettig's
- Help system. It is not to be used with any other
- help utility. Source for this file is not available.
- To acquire a copy of Tom Rettig's Help, please
- contact Tom Rettig & Associates at 213-272-3784
-
- TOUCH.PRG This is a utility program that "touches" the date
- and time stamps of the specified files. This is
- handy when attempting to re-make the TOOLKIT.LIB
- file. It should be compiled with the TCLP.BAT file.
-
- VARTEST.PRG This program shows how, with the ToolkiT, variables
- can be initialized outside of the Clipper program.
- It should be compiled with TCLP.BAT It requires
- access to the text file named SCREEN.TXT
-
- SCREEN.TXT Text file for Vartest.prg. It contains the values of
- two variables.
-
-
- WORKING WITH THE DEMO PROGRAMS (from Rel. 2.0) AND OTHER .PRGs
-
- Compiling and linking syntax
-
- Demo1.prg Compile = Clipper Demo1 -m -l
- Link = Plink86 Fi Demo1 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Demo1,,,Clipper ToolkiT Extend
-
- Demo2.prg Compile = Clipper Demo2 -m -l
- Link = Plink86 Fi Demo2 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Demo2,,,Clipper ToolkiT Extend
-
- Demo3.prg Compile = Clipper Demo3 -m -l
- Link = Plink86 Fi Demo3 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Demo9,,,Clipper ToolkiT Extend
-
- Demo4.prg Compile = Clipper Demo4 -m -l
- Link = Plink86 Fi Demo4 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Demo4,,,Clipper ToolkiT Extend
-
- Demo5.prg Compile = Clipper Demo5 -m -l
- Link = Plink86 Fi Demo5 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Demo5,,,Clipper ToolkiT Extend
-
- Demo6.prg Compile = Clipper Demo6 -m -l
- Link = Plink86 Fi Demo6 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Demo6,,,Clipper ToolkiT Extend
-
- Demo7.prg Compile = Clipper Demo7 -m -l
- Link = Plink86 Fi Demo7 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Demo7,,,Clipper ToolkiT Extend
-
- Demo8.prg Compile = Clipper Demo8 -m -l
- Link = Plink86 Fi Demo8 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Demo8,,,Clipper ToolkiT Extend
-
- Demo9.prg Compile = Clipper Demo9 -m -l
- Link = Plink86 Fi Demo9 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Demo9,,,Clipper ToolkiT Extend
-
- Demo10.prg Compile = Clipper Demo10 -m -l
- Link = Plink86 Fi Demo10 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Demo10,,,Clipper ToolkiT Extend
-
- In order for this program to work properly, the following
- files must be present:
-
- DATAHELP.TXT READ.TXT
- MASTER.TXT BASE1.TXT
- COLOR.TXT MENU1.TXT
- READING.TXT MENU2.TXT
- WRITING.TXT READ1.TXT
- WINDOW.TXT WIN1.TXT
-
- The following files were shown at the 1989 Clipper Developers Conference
- and have been included with this package. Please compile, link, and
- execute CONF0.PRG. This will make up the databases for the demos with
- a file prefix of CONF*.
-
- Conf0.prg Compile = Clipper Conf0 -m -l
- Link = Plink86 Fi Conf0 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Conf0,,,Clipper ToolkiT Extend
-
- Conf1.prg Compile = Clipper Conf1 -m -l
- Link = Plink86 Fi Conf1 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Conf1,,,Clipper ToolkiT Extend
-
- Conf2.prg Compile = Clipper Conf2 -m -l
- Link = Plink86 Fi Conf2 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Conf2,,,Clipper ToolkiT Extend
-
- Conf3.prg Compile = Clipper Conf3 -m -l
- Link = Plink86 Fi Conf3 Lib Clipper Lib ToolkiT Lib Extend
- or Mslink /noe /se:1024 Conf3,,,Clipper ToolkiT Extend
-
-
-
-
- CHANGES, ADDITIONS AND MODIFICATIONS SINCE THE MANUAL WAS PRINTED:
-
-
- WARNING: If, when using the Report Writer and/or Word Processor, you
- choose to build a condition (e.g. "RELATE('B/Z', 'pmart')"))
- which calls UDF's inside the ToolkiT, you must use the EXTERNAL
- command in your .PRG. For example, to make the filter in the above
- RELATE clause work, you must have the following code in the .PRG.
-
- EXTERNAL Relate
-
- NOTE: CONF0.PRG has been modified. Previously the system had to be
- set to open 30 files or an error condition was reported and the
- program aborted. Now, it tests the F parameter in SET CLIPPER and
- won't run if it is not correct.
-
- NOTE: Make sure that you DELETE any prior version of SCREEN.SYS.
- There are additonal public variables and any TOOLKIT operation
- based on prior releases of SCREEN.SYS may not work properly.
-
- NOTE: It is imperative that proper programming strucuture is maintained
- while working with functions from the ToolkiT. For example, your
- screen's windowing system will be totally fouled up if you follow
- the following format:
-
- Pushscreen()
- Publics()
- CLEAR
- IF !Chkpass(16,4)
- Badpass(16,4,"Need original password in order",;
- "to alter password. Access denied!")
- ELSE
- Password()
- Savesys()
- ENDIF
- Popscreen()
-
- Since the call to the Publics() function re-sets all of the
- public variables, even those used by the Pushscreen() and Popscreen()
- functions, the windowing system at this point is off. Make sure
- that none of the variables beginning with the letters SCR* are
- reset (i.e., do not make a call to the Publics(), Startup(), or
- Bringitup().
-
- NOTE: The password to get into the modification routine of Demo10
- is the word 'Steve' (quotation marks excluded).
-
-
- NOTE: All references in the manual to REST_ENV() should be changed
- to RESET_ENV().
-
- Any reference to the Hideget() function in Tom Rettig's Help
- file for the ToolkiT should be ignored.
-
- NOTE: The following functions now work with Clipper's extended ()
- operations:
-
- Array_size()
- Blankarray()
- Storarray()
- Replarray()
- Sarray()
- Rarray()
- Mpop()
- Got()
-
- This is an undocumented feature: added at the last second.
- Basically, it allows the extended features of Clipper to work.
- Therefore, what used to be the following:
-
- SELECT B
- USE People
- SELECT A
- USE Clients
- DECLARE thearray[Arraysize("B")]
- Blankarray(thearray, "B")
-
- now can be expressed like this:
-
- SELECT B
- USE People
- SELECT A
- USE Clients
- DECLARE thearray[B->(Arraysize())]
- Op(B->(Blankarray(thearray)))
-
- If additional parameters are needed for any of the functions
- (parameters pass the name of the database/work area alias),
- then pass a NULL byte to the function instead of the work
- area number, alias letter, or database name. This will tell
- the function to work in the current database, which, in the
- case of the extended () feature, will be the designated work
- area.
-
- NOTE: The file called TOOLKIT is to be used by the Microsoft MAKE
- utility. It will check the date and time stamp of
- all of the .PRG files which make up the TOOLKIT.LIB. To activate
- this, use the following syntax:
-
- MAKE Toolkit
-
- This also calls Microsoft's LIB utility and calls the
- script file called ADDLIB. This file will create the
- TOOLKIT.LIB which may be copied to your CLIPPER directory.
-
- TOOLKIT is to be used with Microsoft's MAKE utility, and not
- Nantucket's make utility. We do not support Nantucket's MAKE
- utility and urge people to obtain a copy of Microsoft's MAKE and
- LIB utilities.
-
-
- 1. The Adjustit() function (p. 85) has a default value of a logical
- false (.F.). There is an added parameter to the Adjustit() function
- with a default value of a logical true (.T.). If true,
- then the function will check to see if the record is deleted and
- will display a message if it is. Otherwise, a blank message will
- be displayed.
-
- 2. The Altercolor() function (p. 89) now works as documented. In
- Release 2.0, the Altercolor() function did not adjust the
- various color options: standard, enhanced, foreground, and
- background.
-
- 3. Asizetxt() (p.108) has an error in the example
- section. There is a reference to "Afiletxt()"; the example
- should look like this:
-
- howmany = ASIZETXT(<filename>)
-
- * where <filename> is the name of the file so specified in
- * the text.
-
- 4. Make sure that if the ATSAYGET()(p. 111) or WSAYGET() (p.509)
- functions are used in conjunction with a VALID clause expression,
- that the expression listed in the clause can be resolved.
- For example, the follow VALID expression always returns a
- logical true (.T.):
-
- Wsayget(.T., 2,5,"Enter Sex of Client => ", "sex", "!", ;
- "Inlist(@sex, [Male/Female/Unkown/Yes/No])" )
-
- The trouble is with the INLIST() function. If this function is
- not brought into the system during the linking phase, both the
- WSAYGET() and ATSAYGET() functions will force the VALID clause
- to a logical true and the function will not work properly.
-
- The WSAYGET() and ATSAYGET() functions have also been enhanced
- to accept a variable for a GET statement which does not exist.
- If there is a corresponding SAY expression, then that will be
- processed. If there is none, then the function will simply
- ignore the call to it.
-
- 5. The Backup() function (p. 114) now works as documented with an added
- feature. The "files" parameter (<expC1>) will now accept wildcards.
-
- 6. SHOW_CLO() (p. 118) is out of order. It should appear after page 426.
-
- 7. Dep_rate() (page 133) is out of order. It should appear
- after page 172.
-
- 8. The Copyfile() function (p. 156) now strips leading
- and trailing blank spaces from the passed parameters. Before, the
- value of the parameters had to have all blank spaces removed.
-
- 9. The Delfile() function (p. 168) now strips leading
- and trailing blank spaces from the passed parameters. Before, the
- value of the parameters had to have all blank spaces removed.
-
- 10. The Dispstru() function (p. 175) now allows the ability to EDIT
- a field; namely, the field that is highlighted if the letters
- "E" or "e" are pressed. No networking hooks are provided;
- however, they may be added to the individual function.
-
- 11. Disp_mem() (p. 176) now takes a template parameter (<expC>) so that
- the passed parameter will allow only those variables which match the
- template/parameter format. For example, DISP_MEM("scr") means any
- variable with the letters "scr" contained in it will appear in the
- window.
-
- 12. The Dulling() function (p. 182) now takes a character or numeric
- as a second parameter. This is the attribute to dull with. If no
- parameter is passed to the function, CHR(8) will be used. If a
- character data type is passed as the second parameter, then the
- ASCII value of the first character will be used. Otherwise, the
- numeric parameter is used as the ASCII attribute byte.
-
- 13. The Fill_out() function (p. 204) now can take an array or character
- string as the first parameter; it fills out all of the character
- elements in the array to the specified size.
-
- 14. The Fill_zero() function (p. 205) should note that
- if the numeric expression that is to be converted to a string
- with leading (or trailing) zeros is a negative number, then the
- number of "0" characters that will be appended to the expression
- will be one less than expected. This is to allow for the "-"
- character. To avoid this, pass to it the ABS() of the number
- and add the "-" character sign to the return value from either
- function.
- 15. The Ftypecnt() function (p. 215) now takes a 4th parameter, <expL>.
- If set to a logical true (.T.), it will take the actual field position
- of the database and build the string (<expC3>) accordingly.
- Otherwise, the actual byte position will be put into the
- string. The default value will be a logical false (.F.).
-
- 16. The FV() function (p. 216) has been corrected and now returns the
- proper future value based on (payment, rate per period, # of periods.)
- The period for the annuity could be months, quarters, years, etc.
-
- 17. The header for the Gen_code() function (p. 220) has been changed to
- reflect the appropriate date, company name, and proper
- copyright notice.
-
- 18. The Inc_date() function (p. 235) Description section should have
- the incrementing key as the letter "I" or the "+" key, not the letter
- "N".
-
- 19. Functions SST237 and SST239 both referred to a function named
- ISADBF() while the manual (p. 250) and SST244 referred to ISA_DBF().
- We have altered SST237 and SST239 accordingly.
-
- 20. Make_dbf() function (p. 277): line 392 of the source code
- (SST264.PRG) should not have the additional 2 logical parameters
- associated with it. This has been corrected.
-
- 21. The Make_empty() function (p. 279) now accepts an array and may be
- used to blank out an array with values from a database. For example,
-
- CLEAR SCREEN
- USE Client
- DECLARE names[fcount()]
- AFILL(names, "")
- Op(Client->(Make_empty(names)))
- FOR x = 1 TO FCOUNT()
- ? names[x]
- NEXT
-
- 22. On page 284 of the manual, the less than sign ( < ) in the example
- text is missing. The example should read:
- IF MEMRY() < 100
-
- 23. The Modi_auto() function (p. 290) did not write the AUTOEXEC.BAT file
- to the proper drive due to a "\" character being dropped from the
- file specs. This has been fixed.
-
- 24. The Modi_con() (p. 291) function now works if NEITHER the files nor
- buffers are specified in the file. It also has been modified to
- accept numeric data items as the first two parameters.
-
- 25. O_array() (p. 314) should be spelled O_arrays().
-
- 26. The O_arrays() function (p. 314) now recognizes as comments lines
- in its associated text files beginning with an "*" or "&&" or the
- word NOTE as the first characters. In the prior release, a comment
- would yield a macro expansion error. In addition, you
- can now initialize an array from a text file and
- call Clipper functions (which have already been called in the EXE or
- declared External) from a text file.
-
- 27. The O_asize() function (p. 316) has been modified to allow
- specification of the number of bytes to read in at one time. This is
- passed as the third parameter. The default value is now 1024 instead
- of 1 as it was in the previous release.
-
- 28. The O_file() function (P. 317) has been fixed to now take decimal
- values from the text file.
-
- 29. The O_VARS() function documentation (p. 324) is unclear as to the
- proper format for all character strings. For example, in the
- documentation, the variable SCRPROG is set to C:. The proper
- syntax for this should be the following (similiar to the
- SCRCOLOR variable):
-
- scrprog = "C:"
-
- The O_vars() function now recognizes as comments those lines
- in its associated text files beginning with an "*" or "&&" or the
- word NOTE as the first characters. In the prior release, a comment
- would yield a macro expansion error. In addition, you
- can now initialize an array from a text file and
- call Clipper functions (which have already been called in the EXE or
- declared External) from a text file.
- The O_vars() function now allows the creation of arrays on
- the fly. The text file will have the following in it:
-
- allscreens[20]
-
- The O_vars function will make a PUBLIC array named ALLSCREENS
- and declare it to 20 elements.
-
- The O_vars function will now execute functions which are called
- in the text file. For example:
- allscreens[20]
- AFILL(allscreens, "")
- declares the array to 20, and it is initialized to beginning values.
-
- Make sure that the names of the functions in the text files
- are included in the .EXE file, either via prior calls to the
- function or via the EXTERNAL command.
-
- The O_vars() function has been modified to allow
- specification of the number of bytes to read in at one time. This is
- passed as the second parameter. The default value is now 1024 instead
- of 1 (as it was in the previous release.
-
- 30. Packdbt() function (p. 328) Dependencies should refer to the
- ISA_DBF() function, not the ISADBF() function.
-
- 31. The Palate() function (p. 330) now takes 4 additional parameters,
- <expN3> to <expN6>: the top, left, bottom, right corners of the screen
- area. The default positions are 0,0,24,79. To use these, make the
- call to the Palate() function in the following manner:
-
- Palate(2, "", 2,2,2,20)
-
-
- 32. The Pan() function (p. 331) works within the current window area as
- set by either the Setwindow(), Windowpush(), Pushscreen(), or Wpush()
- functions. It should be noted that text which is left justified
- on the screen will have one character per row remaining as all
- other characters will pan properly. If this is to include window
- borders, thus avoiding this problem, changes will have to be made
- to the source code.
-
- 33. The Parsing() function (p. 338) has been modified to take multiple
- characters as a delimiter or separator string. This is now used by
- the text file processing functions with a prefix of O_.
- On page 338 of the manual, the reference to the Getnum() function
- should be changed to the Parsing() function. The example should read:
-
- ? PARSING(@string)
-
- 34. The Password() function (p. 339) example program
- shows a reference to the Publics() function. This is
- acceptable if working from C: drive. To get the example to
- work properly on any other drive, a call to the Startup(.T.)
- function is needed as replacement of the Publics() call.
-
- 35. The Percent() function (p. 343) Example should read:
-
- USE Chart
- @ 7,0
- @ 7,0 SAY "Percentage Index: "
- GO TOP
- INDEX ON STR(RECNO()) + Percentage(7,10) TO Per
-
- ********************
-
- FUNCTION Percentage
-
- PARAMETERS row, col
-
- @ row, col SAY Percent(RECNO(), LASTREC())
- RETURN("")
-
- 36. The Pop_calc() function (p. 346) now allows the use of the "=" key to
- resolve the equation being worked on by the calculator.
-
- 37. The Pop_phon() function (p. 349) now notifies the user if a file is
- larger than 12K. In the past, an out of memory error was reported.
-
- 38. The Randomize() function (p. 364) now works as documented.
-
- 39. The Renfile() function (p. 380) now strips leading
- and trailing blank spaces from the passed parameters. Before, the
- value of the parameters had to have all blank spaces removed.
-
- 40. The Report Writer (REPORTER(), p. 383) now allows saved .SST files to
- be brought back into the system in their proper order.
-
- If the CODE generation option in the Report Writer is not
- wanted, a variable named NOCODE needs to be initialized to ANY
- value prior to the call to the Report Writer. This will remove
- the option from the menu screen.
-
- If the tag line 'End of Report' is not wanted, a variable
- named NOTAG needs to be initialized to ANY value prior to the
- call to the Report Writer.
-
- 41. The Restoring function (p. 389) now works as documented with an added
- feature. The third parameter (<expC>) states what drive to restore
- from. An added fourth parameter (<expC2>) is the drive
- and/or path to restore to. Please observe that the order of
- the parameters are different from the order in the Backup()
- function. Additionally, the "to drive" expression MUST be a
- valid path; otherwise, the function will not prompt the user and
- will simply return a logical false (.F.) expression.
-
- 42. The RESTSYS() function (p. 390) description section
- of the document should read as follows in the last line of the
- paragraph:
- Once the file is restored and if the operation is successful,
- the return value from the function will be a logical true
- (.T.); otherwise, a logical false (.F.) will be returned.
-
- 43. The STATS() function (p.440) now allows the Up and Down arrow keys
- to be used to SKIP (+/-) a record in the current and selected work
- area.
-
- 44. The SELECTING() function (p. 413) now allows a NULL byte
- as the name of the database. This will tell the function to
- close the database in the appointed work area. In other wrods,
- if a database is opened in the following manner:
-
- Op(A->(Selecting("Notap", "Notap")))
-
- the proper procedure to close that file would be the following:
-
- Op(A->(Selecting("")))
-
- 45. The SJSREAD() function (p. 434) has an added and undocumented
- parameter. If used and if set to a logical true, the function will
- return the status of the UPDATE() function. If not passed, then the
- function will return a logical false (.F.) if the last key pressed
- was the ESC key; otherwise a logical true (.T.) will be returned.
- In the Example section, the letter "m" is missing from in front of
- every variable and the fourth line should read:
- @13, 10 SAY ...
- The function, however, works properly.
-
- 46. The Strz() function (p. 448) Description should note that
- if the numeric expression that is to be converted to a string
- with leading (or trailing) zeros is a negative number, then the
- number of "0" characters that will be appended to the expression
- will be one less than expected. This is to allow for the "-"
- character. To avoid this, pass to it the ABS() of the number
- and add the "-" character sign to the return value from either
- function.
-
- 47. Te Updtable() function (p. 464) is also dependant on Whatcolor().
- The Updtable() function now allows 2 lines of GET information if
- the specified field in the GET list is a memo field. In the 2.0
- release, only 1 line was allowed.
- Also, Updtable() now has two rows opened if the field that is to be
- modified is a MEMO field. In the previous release, this was one row.
-
- 48. The VIEWING() function, page 471, now accepts line numbers
- as well as new file names. There is a 7th parameter in the
- Viewing() function which is the beginning line number. This
- is used by the source-code level debugger. Additionally,
- while in the Viewing() function, the user can press ALT-G to
- go to a specific line number; ALT-F will allow the user to
- type in a new file name. If the file does not exists, a
- message indicating this will appear on the screen.
-
- 49. The Wcenter() function (p. 473) now takes a character expression in
- place of the numeric value. Normally, the Wcenter() function will
- return the actual screen coordinate for the center position for
- the specified window area. The default value is the current
- window. Now, if a character string is passed to the Wcenter()
- function, the function will assume you want to work with the
- current screen, and it will return a numeric value that would
- center the character expression within the current window. For
- example, consider the following:
-
- Wsayget(1, Wcenter("changing system data"), "Changing System Date" )
- Wsayget(2, Wcenter(prompt), prompt )
-
- 50. The Whatcolor() function (p. 479) will now take three additional
- words:
- BOLD
- BLINK
- DULL
-
- 51. The WINDOWPUSH() function (p. 487) now can take a single logical
- parameter. If this is passed to the function, this will tell
- the function to act like PUSHSCREEN() with all of the parameters
- for a full screen save (without a shadow line). The WINDOWPOP()
- function has been adjusted to acknowledge this addition as well
- as the CLEAR_AREA() and WINDOWCLS() functions.
- Also, the Wpush() and Windowpush() now will accept NO
- parameters; this will clear the entire screen, set the
- window parameters to the default values and will NOT draw a
- frame, and NOT draw a shadow line.
- Windowpush() will now take the character numbers as well as
- the worded amount.
-
- 52. The Wpush() function (p. 500) now will accept NO
- parameters; this will clear the entire screen, set the
- window parameters to the default values and will NOT draw a
- frame, and NOT draw a shadow line.
-
-
- 53. The Inhelp() function (P. 238) has been modified to make a call to a
- new function, Putframe() (SST417.PRG). Additionally, the Onhelp()
- function (SST916.PRG) has been added which is identical to INHELP()
- for display purposes only but it uses less overhead.
-
- Onhelp() A smaller version of Inhelp() that only
- displays.
-
- Putframe() Returns a string which may be parsed to
- yield the four coordinates of a boxed area.
-
- 54. There is an added Function called RANGE(). Here is the
- description:
-
- Syntax: Range(<expN1>, <expN2>, <expN3> [, <expN4>
- [, <expN5>]])
-
- Parameters: <value>, <lowest amount>, <highest amount>
- [, <row number for message> [, <column number
- for message>]]
-
- Returns: <logical expression>
-
- Description: This function is used in conjunction with the
- VALID clause but is to replace the functionality
- of the RANGE clause. If the value of <expN1> is
- not within the range of <expN2> and <expN3>, a
- message saying this will appear at row, column
- coordinates of <expN4>, <expN5>. The default
- values for <expN4>, <expN5> will be 24,00. If
- any of the parameters are not of the proper data
- type, a logical false (.F.) will be returned; if
- the proper minimum number of parameters are not
- passed to the function, again, a logical false (.F.)
- will be returned. If <expN1> is within the range
- of <expN2> and <expN3>, a logical true (.T.) will
- be returned; otherwise, a logical false (.F.) will
- be returned.
-
-
- 55. There is a new function called ALLUNDEF()
-
- Syntax: Allundef(<expC>)
-
- Parameters: <array name>
-
- Returns: <logical expression>
-
- Description: This function returns a logical true (.T.) if
- all of the element positions within the array
- <expC> are NOT yet set to a value and are
- undefined. The function will also return a
- logical true (.T.) if the parameter passed to
- the function is NOT of an array type or if no
- parameter is passed.
-
- 56. There is a new function called ANYUNDEF()
-
- Syntax: Anyundef(<expC>)
-
- Parameters: <array name>
-
- Returns: <logical expression>
-
- Description: This function returns a logical true (.T.) if any
- of the element positions within the array <expC>
- are undefined. The function will also return a
- logical true (.T.) if the parameter passed to the
- function is not of an array type or if no parameter
- is passed. If all of the array items in <expC> are
- defined and set to any value, the function will
- return a logical false (.F.)
-
- 57. There is an additional PUBLIC scr* variable named:
-
- SCRPNTNOR
-
- It has a default value of "CHR(18)" and is the printer code
- for the Epson printer that will reset it back to normal
- print mode from condensed mode.
-
- 58. There is a new function called OFFWINDOW()
-
- Syntax: Offwindow()
-
- Parameters: None
-
- Returns: <logical expression>
-
- Description: This function returns a logical true (.T.) if it
- was able to remove the window area created by
- the Setwindow() function. This function should
- only be used with that function and NOT the Wpop()
- NOR the Windowpop(). If the function was unable to
- to remove the window, the function will return a
- logical false (.F.).
-
- 59. The O_vars() function now allows the assignment of a variable
- from a function. For example, consider this line from a text
- file that will be processed by the O_vars() function:
-
- date = Printdate(DATE())
-
- The variable DATE will be assigned to the value from the
- Printdate() function. This function must be avaialble to the
- program before the O_vars() function is called; therefore, an
- EXTERNAL command may be required.
-
- 60. We have changed the macro template character in the word
- processor. Originally, CHR(127) started and terminated a
- mail-merge field. Now, CHR(174) starts the macro and CHR(175)
- terminates the macro. You must alter any saved MERGE files to
- accomodate this change.
-
- 61. We have enhanced the Report Writer to accept a pre-existing filter
- condition. In order to set this up, consider the following code
- fragment:
-
- SELECT D && Journals
-
- IF mpost = "B"
- SET FILTER TO D->ref_num >= mref1 .AND. D->ref_num <=mref2 .AND. ;
- D->entry_date >= mdate1 .AND. D->entry_date <=mdate2
-
- ELSEIF mpost = "P"
- SET FILTER TO D->ref_num >= mref1 .AND. D->ref_num <=mref2 .AND. ;
- D->entry_date >= mdate1 .AND. D->entry_date <=mdate2 .AND. D->posted
-
- ELSE
- SET FILTER TO D->ref_num >= mref1 .AND. D->ref_num <=mref2 .AND. ;
- D->entry_date >= mdate1 .AND. D->entry_date <=mdate2 .AND. !D->posted
-
- ENDIF
-
- addfilter = "D->(" + DBFILTER() + ")"
-
- As long as the character string ADDFILTER is set to an alias pointer
- followed by the filter expression, terminated with the ")" charac-
- ter, then the filter for that area will be SET. In this example,
- based on user input PRIOR to the call to the Report Writer, the
- filter was SET on the D work area. We then build a NEW character
- expression to point to that area and BUILD the filter. This will
- ONLY work in work areas other than the master area for the Report
- Writer.
-
- 62. The Roundit() function now accepts negative numbers, as documented:
-
- Before:
- ? ROUNDIT(5*-1) && Yields 4.99
- Now:
- ? ROUNDIT(5*-1) && Yields 5.0000