home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / PRINTING / DBFSCR20.ZIP / DBFSCR.TXT < prev    next >
Text File  |  1991-04-10  |  29KB  |  683 lines

  1. DBFSCR version 2.0
  2.  
  3. WHAT IS DBFSCR?
  4.   DBFSCR is a shareware program designed for programmers to help in the
  5.   design of data entry screens.  It uses a screen painter and template
  6.   files to generate code to be included within programs.
  7.  
  8.   DBFSCR uses the SAY..GET metaphor common in all xBASE languages.  The
  9.   templates are not limited xBASE programs.  Any code can be included
  10.   within the templates.  In this way, DBFSCR can be used as a screen
  11.   painter for any data-entry library for any language.    Included with this
  12.   program are templates for Clipper, dBXL, Code Base 3, SkipJack, dBASE 3,
  13.   and Topaz.  SkipJack and Topaz are Pascal libraries that provides access
  14.   dbf files.  They also include screen io functions/procedures similar to
  15.   the @..SAY..GET of xBASE.  Code Base is a C library that provides access
  16.   to dbf files and provides screen io functions similar to @..SAY..GET.
  17.  
  18. USING DBFSCR
  19.   To use DBFSCR, just type DBFSCR at the DOS prompt.  You will be provided
  20.   with a blank screen.    There is a one page help screen available by
  21.   pressing F1.    You can use the cursor keys to move the block around the
  22.   screen.
  23.  
  24.   Design your screen using the ALT key combinations described below.  At
  25.   any time, you can save your file by pressing Alt-F.  The saved file is a
  26.   special format used by DBFSCR.  When you are ready to create your program
  27.   file to be included in your programs, press Alt-T (Template).  Supply the
  28.   template filename and the filename for the program code.  DBFSCR will
  29.   produce the code using the template.    To use the new code, just include
  30.   it in your program.  To modify the screen, load the saved screen and make
  31.   your changes.  It is a good idea to leave the generated code in its own
  32.   file, so that when you make changes, you can just overwrite the old file.
  33.  
  34. LIABILITY
  35.   The author bears no responsibility for any damages or losses caused by
  36.   the use of this program.  The burden of liability is on the user of the
  37.   program.  By using this program, the user relieves the author of all
  38.   liabilities.
  39.  
  40. ACKNOWLDGMENTS
  41.   dBASE and Ashton-Tate are registered trademarks of Ashton-Tate
  42.   Corporation.
  43.  
  44.   Clipper and Nantucket are registered trademarks of Nantucket Corporation.
  45.  
  46.   dBXL and Quicksilver are registered trademarks of WordTech Corp.
  47.  
  48.   Code Base is a C library developed and distributed by Sequiter Software
  49.   Inc.
  50.  
  51.   Skipjack is a Pascal library developed and distributed by Max Software
  52.   Inc.
  53.  
  54.   Topaz is a Pascal library developed and distributed by Software Science
  55.   Inc.
  56.  
  57.  
  58.  
  59. SHAREWARE
  60.   This program is shareware.  You are entitled to use the program for 30
  61.   days to see if you have use for it.
  62.  
  63.   If you find the program of value, please send $15 to:
  64.       Steven Feinstein
  65.       72 Katherine Drive
  66.       Hamden, CT 06514
  67.  
  68. COMMANDS
  69.  
  70. ALT-A CHANGE SCREEN'S COLOR
  71.   Alt-A will change the background color for the entire screen.  The colors
  72.   selected for objects that have already been created will not be affected.
  73.   When a program file is created, a command from the template will be used
  74.   once at the beginning of the program to change the screen's colors.
  75.  
  76. ALT-B CREATE BOX
  77.   Alt-B will create a box object on the screen.  A message will be displayed
  78.   requesting that you move the cursor to the opposite corner for the box.
  79.   The cursor will change from a solid box to a solid box with a blinking
  80.   cursor.  You can use all of the cursor movement keys to set the box
  81.   coordinates.
  82.  
  83. ALT-C CENTER OBJECT
  84.   Alt-C will center the currently selected object horizontally on the
  85.   screen.  The current object is the one the cursor is on.  If no object is
  86.   located at the cursor location, a message will appear informing you of
  87.   this.
  88.  
  89. ALT-D DELETE OBJECT
  90.   Alt-D will delete the currently selected object.  The current object is
  91.   the one the cursor is on.  You will be prompted to make sure that you
  92.   want to delete the object.  There is NO undo capability.
  93.  
  94. ALT-E EDIT OBJECT
  95.   Alt-E will display a data-entry screen (like the one used when creating
  96.   an object- See Alt-G and Alt-S for a description of the fields).  You can
  97.   change any of the information on this screen which describes the object.
  98.   This function will not work on box objects.
  99.  
  100. ALT-F SAVE SCREEN
  101.   Alt-F will save the screen to a data file.  This file can only be used by
  102.   DBFSCR and should not be confused with the converted program files.  You
  103.   will be prompted for a filename.  You must enter an extension if you want
  104.   one.
  105.  
  106. ALT-G CREATE INPUT "GET" OBJECT
  107.   Alt-G will create a "GET" object.  A data-entry screen will be displayed
  108.   allowing you to enter information about the object.  The following is a
  109.   description of the fields:
  110.   1) Field type:  B - byte
  111.           C - character
  112.           D - date
  113.           I - integer
  114.           L - logical
  115.           N - long integer
  116.           R - real
  117.           S - string
  118.   not all templates support all of these types.  If a template does not
  119.   support one of these types, the GET statement will not be printed.
  120.  
  121.   2) Variable/Fieldname:
  122.      enter the variable name used in the program.  Or, if you are using one
  123.      of the xBASE dialects and want to enter a file's fieldname, you can do
  124.      that as well.
  125.  
  126.   3) Picture:
  127.      If your program supports them, enter the picture string used by the
  128.      programs.    Do NOT enter the quotes around the string.  That should be
  129.      handled by the template.
  130.  
  131.   4) Range:
  132.      If your program supports them, enter the range clause for your field.
  133.      Do NOT enter any quotes around the range, this should be handled by
  134.      the template file.
  135.  
  136.   5) Prefield:
  137.      If your program supports prefield or when clauses, enter the function
  138.      to be performed here.  Do NOT enter () or @ in this field.  They
  139.      should be handled by the template file.
  140.  
  141.   6) Valid:
  142.      If your program supports valid clauses enter it here.  Do NOT enter ()
  143.      or @ in this field, it should be handled by the template.
  144.  
  145.   7) Display length:
  146.      Enter the length of the field.  Character and logical fields will be
  147.      limited to 1 character in length.
  148.  
  149.   8) Decimal Places:
  150.      Enter the number of decimal places for the field.    This is only valid
  151.      for real types.  Everything else will have a value of 0.
  152.  
  153. ALT-H CHANGE HOME COORDINATES
  154.   Alt-H will change where on the screen the home location will be.  This
  155.   function was put in for people who use window libraries.  Some libraries
  156.   are set up so that a row is relative to the window borders.  In order to
  157.   show how a screen will look at a screen location, but still keep the
  158.   coordinates relative, use this function.  If you screen output is not
  159.   relative to a window, don't use this function, your coordinates will be off.
  160.  
  161. ALT-I CHANGE COLORS FOR NEW OBJECTS
  162.   Alt-I will set the default colors.  Whenever an object is created, the
  163.   new default colors will be used.  The command works the same as Alt-A.
  164.   This command has no affect on existing objects.
  165.  
  166. ALT-K CHANGE AN OBJECT'S COLORS
  167.   Alt-K will change the color of the currently selected object.  The
  168.   current object is the one the cursor is on.  The command works the same
  169.   as Alt-A, but will only change the current object.
  170.  
  171. ALT-L LOAD SCREEN
  172.   Alt-L will load a saved screen file from disk.  It will first
  173.   reinitialize the screen, so any work that has not been saved will be
  174.   lost.  If the file is a version 1 file, you will be notified that you
  175.   will need to save the file using ALT-X if you want to keep it in version
  176.   1 format.
  177.  
  178.   If you enter a mask (ie. *.dat) or enter a directory ending with '\' (ie.
  179.   c:\ or \data\) a popup window will be displayed of files to choose from.
  180.   If you enter an '*' without an extension .dat will be assumed.  To get
  181.   a popup list of the current direcoty enter an '*' by itself.
  182.  
  183. ALT-M MOVE OBJECT
  184.   Alt-M will move the currently selected object to a new location.  The
  185.   current object is the one the cursor is on.  The cursor will change from
  186.   a solid block, to a solid block with a blinking cursor inside.  You will
  187.   be prompted to choose a new location.
  188.  
  189. ALT-N NEW SCREEN
  190.   Alt-N will clear the screen and reinitialize the objects.  Any work not
  191.   saved will be lost.
  192.  
  193. ALT-O REDORDER GETS
  194.   Alt-O will change the order that GETs are printed in the output file.
  195.   By default, DBFSCR will print the GETs in the order that they are on screen.
  196.   The xBASE language determines data-entry order by first come basis in the
  197.   program.  Instead of forcing screen order, this function will allow you to
  198.   reorder the GETs.  To use the new order, choose 'N' when asked if you want
  199.   to use screen coordinates during template conversions.
  200.  
  201.   A popup window will appear with the GETs listed in their current order.
  202.   The first time, they will be in the order that you have entered them (not
  203.   screen order).  To change the order, hilite the item that you want to move,
  204.   press enter, move to the item that you want to place the first one after,
  205.   and press enter.  It will take two steps to move a GET to first on the list.
  206.   Move it after the first item and then move the first item after it.
  207.  
  208. ALT-Q QUIT
  209.   Alt-Q will quit the program.    All worked not saved will be lost.
  210.  
  211. ALT-R COPY OBJECT
  212.   Alt-R will copy the currently selected object to a new location.  The
  213.   current object is the one the cursor is on.  The cursor will change from
  214.   a solid block, to a solid block with a blinking cursor inside.  You will
  215.   be prompted to choose a new location, and a new variable/fieldname
  216.   (unless the object is a box or it is a text SAY object).  You do not have
  217.   to change the fieldname.
  218.  
  219. ALT-S CREATE "SAY" OBJECT
  220.   Alt-S will create a "SAY" object.  A data-entry screen will be displayed
  221.   allowing you to enter information about the object.  The following is a
  222.   description of the fields:
  223.   1) (S)tring or (V)araible:
  224.   decide whether the object is a literal string (S) or a variable or
  225.   fieldname (V).
  226.  
  227.   If the first field is 'S' then:
  228.     2) Text:
  229.        enter the literal text string
  230.  
  231.   If the first field is 'V' then:
  232.      2) Field type:  B - byte
  233.              C - character
  234.              D - date
  235.              I - integer
  236.              L - logical
  237.              N - long integer
  238.              R - real
  239.              S - string
  240.     not all templates support all of these types.  If a template does
  241.     not support one of these types, the GET statement will not be
  242.     printed.
  243.  
  244.      3) Variable/Fieldname:
  245.     enter the variable name used in the program.  Or, if you are using
  246.     one of the xBASE dialects and want to enter a file's fieldname, you
  247.     can do that as well.
  248.  
  249.      4) Picture:
  250.     If your program supports them, enter the picture string used by the
  251.     programs.  Do NOT enter the quotes around the string.  That should
  252.     be handled by the template.
  253.  
  254.      5) Display length:
  255.     Enter the length of the field.    Character and logical fields will
  256.     be limited to 1 character in length.
  257.  
  258.      6) Decimal Places:
  259.     Enter the number of decimal places for the field.  This is only
  260.     valid for real types.  Everything else will have a value of 0.
  261.  
  262. ALT-T CONVERT USING TEMPLATE
  263.   Alt-T will convert the current screen to a text file of programming
  264.   commands.  The commands used will depend on the template.  See the
  265.   section on templates to learn more about how they work and how to create
  266.   your own.  This is the command that will generate the source code for
  267.   your programs.
  268.  
  269.   You will be prompted if you want to use screen coordinates.  If you answer
  270.   'Y' then the GETs will be written based on the order they appear on the
  271.   screen.  If you answer 'N', the GETs will be written based on the order
  272.   that you set using Alt-O.  This will have no affect on SAYs and Boxes.
  273.  
  274.   You will then be prompted for a template name.  An extension of TEM will
  275.   be assumed if you don't enter one.  You can get a popup list by entering
  276.   a mask (*.tem), entering a directory ending with a '\' (\data\), or by
  277.   entering an '*' with or without a directory.  In that case TEM will be
  278.   assumed.  If the '*' is by itself, the current directory will be displayed.
  279.  
  280.   Next you will be prompted for a filename.  No extension will be assumed.
  281.  
  282. ALT-X SAVE SCREEN AS VERSION 1
  283.   Alt-X will save the current screen as a version 1 file to be used by the
  284.   previous version of DBFSCR.  In order to have some new functions, the file
  285.   format had to change.  Load Screen will load a version 1 file, but to save
  286.   it, you will need to use this function.  The only use for this function, is
  287.   if you need to use the version 1 software.  None of the new features will be
  288.   saved in this format, so any changes to the new feautres will be lost.
  289.  
  290. ALT-Z SET NEW START COORDINATES
  291.   Alt-Z will change the start coordinates.  The xBASE language uses 0,0 as the
  292.   start coordinates.  Pascal uses 1,1.    This function will allow you to change
  293.   the coordinates to anything you like.
  294.  
  295.   NOTE - Veersion 1 had a default start coordinate of 1,1.  Version 2 has been
  296.   changed to 0,0.  This was done to be more compatible with xBASE.  Just use
  297.   this function to change it.
  298.  
  299. F2 VIEW/USE DBF FILE
  300.   F2 will load a .dbf file for viewing of the structure.  You can also use a
  301.   field in the structure to create a GET.  F2 will prompt you for a filename.
  302.   If you enter a directory ending with a '\' (ie. c:\ or c:\data\) a popup list
  303.   of dbf files will appear that you can choose from.  If you enter an '*' by
  304.   itself, a list of the current directory will be displayed.  You can also
  305.   enter a file mask (test*.dbf or *.dat) if you want to limit the list or
  306.   if you have named your database files using a different extension.
  307.  
  308.   Once a file is chosen, the structure will appear in a popup window.  You
  309.   can view the structure and press ESC when finished.  If you press ENTER,
  310.   you will be placed in a GET data entry screen.  The TYPE, WIDTH, and DEC
  311.   will be filled in based on the structure.  The variable/fieldname will be
  312.   filled in using xBASE notation and the filename as the prefix (ie.
  313.   TEST->FIELD1).  You can then change any information and a GET will be
  314.   created.  If there is not enought room for the GET, a message will display
  315.   stating this information.
  316.  
  317. CURSOR KEYS
  318.   The following is a list of cursor keys and their functions.
  319.  
  320.   LEFT ARROW - move 1 space to the left.  The cursor will wraparound the
  321.            screen if you move past the left edge.
  322.  
  323.   RIGHT ARROW - move 1 space to the right.  The cursor will wraparound the
  324.         screen if you move past the right edge.
  325.  
  326.   UP ARROW - move 1 line up.  The cursor will wraparound the screen if you
  327.          move past the top of the screen.
  328.  
  329.   DOWN ARROW - move 1 line down.  The cursor will wraparound the screen if
  330.            you move past the bottom of the screen.
  331.  
  332.   HOME - move to the beginning of the line.
  333.  
  334.   END - move to the end of the line.
  335.  
  336.   PGUP - move to the top of the screen.
  337.  
  338.   PGDN - move to the bottom of the screen.
  339.  
  340.   TAB - move 10 spaces to the right.  The cursor will wraparound the screen
  341.     if you move past the right edge.
  342.  
  343.   BACKTAB (Shift -TAB) - move 10 spaces to the left.  The cursor will
  344.              wraparound the screen if you move past the left
  345.              edge.
  346.  
  347. TEMPLATES
  348.   Templates are the key to the program.  They are used to determine what
  349.   commands to write depending upon the object type.  Included with DBFSCR
  350.   are the following templates:    clipper5.tem, codebas3.tem, dbase3.tem,
  351.   dbxl.tem, skipjack.tem, and topaz.tem.  The templates are just ASCII
  352.   files and can be modified to suit your programming needs.  You can also
  353.   create your own.  It is recommended that you do not change the template
  354.   files.  You should copy them under another name and make changes to the
  355.   copies.
  356.  
  357.   Each line in the template corresponds to commands for each object.  The
  358.   lines in the templates supplied contain comments so you will know which
  359.   lines should contain which commands.    For example, if the comment states
  360.   'SAY DATE', then the command on that line should contain the programming
  361.   command for displaying the date.  It is important to place the commands
  362.   on the correct lines.  DBFSCR does not use the comments to determine
  363.   which command to use.  It uses the line number.  The comments are there
  364.   for your use to see which commands to place on which lines.
  365.  
  366.   The following is a list of symbols that can be used in the template:
  367.  
  368.   \ - used in front of a command to tell DBFSCR that the following command
  369.       is the last for a line and a newline/carriage return should be placed
  370.       after it.
  371.  
  372.   | - everything on the line after this symbol is considered a comment.
  373.  
  374.   # - a command for this line is not used.  Ignore anything that would
  375.       normally create a command for this line.
  376.  
  377.   & - use the alternate picture clause with this command.
  378.  
  379.   <<gfore>> - replace this symbol with the value for the global foreground
  380.           color.
  381.  
  382.   <<gback>> - replace this symbol with the value for the global background
  383.           color.
  384.  
  385.   <<fore>> - replace this symbol with the value for the foreground color.
  386.  
  387.   <<back>> - replace this symbol with the value for the background color.
  388.  
  389.   <<r1>> - replace this symbol with the value for upper row.
  390.  
  391.   <<c1>> - replace this symbol with the value for upper column.
  392.  
  393.   <<r2>> - replace this symbol with the value for lower row.
  394.  
  395.   <<c1>> - replace this symbol with the value for lower column.
  396.  
  397.   <<var>> - replace this symbol with the text for that command.
  398.  
  399.   <<width>> - replace this symbol with the width of the variable.
  400.  
  401.   <<dec>> - replace this value with the decimal of the variable.
  402.  
  403.   <<v1>> - replace this symbol with the text for that command.    Use instead
  404.        of var if the text needs to be split at a comma (see Range in
  405.        the template files).
  406.  
  407.   <<v2>> - replace this symbol with the text for that command.    Same as
  408.        <<v1>>, but gets the text after the comma instead of before the
  409.        comma.
  410.  
  411. The following is a list of the lines that are within the template file.
  412.   line 1 - color type
  413.        the type must be P, D, or N.  They stand for Pascal (using the
  414.        crt values like Black, LightGray, etc.), dBASE (using the xBASE
  415.        commands like N/W etc.), and Number (using the decimal value for
  416.        colors like 7 for white).  This is used internally by DBFSCR.
  417.  
  418.   line 2 - CLS color
  419.        The command used to set the color used by a clear screen
  420.        command.
  421.  
  422.   line 3 - Clear Screen
  423.        The command to clear the screen using the new colors.
  424.  
  425.   line 4 - Box color 1
  426.        The first command used to set the box color.  Most programs do
  427.        not require two commands, but the provision is there if it does
  428.        need two.
  429.  
  430.   line 5 - Box color 2
  431.        The second command used to set the box color.  Since most
  432.        programs do not have a second command, this line usually will
  433.        contain a #.
  434.  
  435.   line 6 - Draw box
  436.        The command used to draw a box.
  437.  
  438.   line 7 - If Double
  439.        If the box is a double lined box, then this command will be used
  440.        to complete the box command.
  441.  
  442.   line 8 - If Single
  443.        If the box is a single lined box, then this command will be used
  444.        to complete the box command.
  445.  
  446.   line 9 - Say color 1
  447.        Command used to set the SAY colors.    A second one is provided if
  448.        necessary.
  449.  
  450.   line 10 - Say color 2
  451.         A second command to set the SAY colors.  This one is not
  452.         usually used, but is provided in case two commands are
  453.         required.
  454.  
  455.   line 11 - Say char
  456.         Command used to display a variable of type char on the screen.
  457.  
  458.   line 12 - Say text
  459.         Command used to display a text string on the screen.
  460.  
  461.   line 13 - Say string
  462.         Command used to display a variable of type string on the
  463.         screen.
  464.  
  465.   line 14 - Say date
  466.         Command used to display a variable of type date on the screen.
  467.  
  468.   line 15 - Say byte
  469.         Command used to display a variable of type byte on the screen.
  470.  
  471.   line 16 - Say integer
  472.         Command used to display a variable of type integer on the
  473.         screen.
  474.  
  475.   line 17 - Say long
  476.         Command used to display a variable of type long integer on the
  477.         screen.
  478.  
  479.   line 18 - Say real
  480.         Command used to display a variable of type real or double on
  481.         the screen.
  482.  
  483.   line 19 - Say logical
  484.         Command used to display a variable of type logical or boolean
  485.         on the screen.
  486.  
  487.   line 20 - with Say picture
  488.         Command to print if the variable has a picture clause.
  489.  
  490.   line 21 - without Say picture
  491.         What to print if there is no picture clause.
  492.  
  493.   line 22 - with Say picture Alt
  494.         Alternate command to use if variable has picture clause.  This
  495.         will be use if the Say command is preceded by an &.
  496.  
  497.   line 23 - without Say picture Alt
  498.         Alternate command to print if there is no picture clause.  This
  499.         will be used if the Say command is preceded by an &.
  500.  
  501.   line 24 - Get color 1
  502.         Command to print to set the color for the next GET.  There are
  503.         two commands if necessary.
  504.  
  505.   line 25 - Get color 2
  506.         Second command for setting the GET color.  Usually this is not
  507.         used.
  508.  
  509.   line 26 - Get char
  510.         Command used to display a GET variable of type char and get it
  511.         ready for a read.
  512.  
  513.   line 27 - Get string
  514.         Command used to display a GET variable of type string and get
  515.         it ready for a read.
  516.  
  517.   line 28 - Get date
  518.         Command used to display a GET variable of type date and get it
  519.         ready for a read.
  520.  
  521.   line 29 - Get byte
  522.         Command used to display a GET variable of type byte and get it
  523.         ready for a read.
  524.  
  525.   line 30 - Get integer
  526.         Command used to display a GET variable of type integer and get
  527.         it ready for a read.
  528.  
  529.   line 31 - Get long
  530.         Command used to display a GET variable of type long int and get
  531.         it ready for a read.
  532.  
  533.   line 32 - Get real
  534.         Command used to display a GET variable of type real or double
  535.         and get it ready for a read.
  536.  
  537.   line 33 - Get logical
  538.         Command used to display a GET variable of type logical or
  539.         boolean and get it ready for a read.
  540.  
  541.   line 34 - with Get picture
  542.         Command to print if the variable has a picture clause.
  543.  
  544.   line 35 - without Get picture
  545.         Command to print if there is no picture clause.
  546.  
  547.   line 36 - with Get picture Alt
  548.         Alternate command to use if variable has picture clause.  This
  549.         will be use if the Get command is preceded by an &.
  550.  
  551.   line 37 - without Get picture Alt
  552.         Alternate command to print if there is no picture clause.  This
  553.         will be used if the Get command is preceded by an &.
  554.  
  555.   line 38 - with Range
  556.         Command to use if the variable has a range clause.
  557.  
  558.   line 39 - without Range
  559.         Command to use if the variable does not have a range clause.
  560.  
  561.   line 40 - with prefield
  562.         Command to use if the variable has a prefield trigger or a when
  563.         clause.
  564.  
  565.   line 41 - without prefield
  566.         Command to use if the variable does not have a prefield trigger
  567.         or a when clause.
  568.  
  569.   line 42 - with valid
  570.         Command to use if the variable has a valid clause.
  571.  
  572.   line 43 - without valid
  573.         Command to use if the variable does not have a valid clause.
  574.  
  575.   line 44 - END-OF-FILE
  576.         Required in file for no reason other than to allow the program
  577.         to have some kind of check to make sure that this is a template
  578.         file.
  579.  
  580. Some descriptions examples:
  581.   You will notice that in most of the lines in a template, the command is
  582.   preceded by \.  If the command for that line is the LAST command possible
  583.   for the line, it should be preceded by \ otherwise it should not.  In
  584.   Skipjack, sj_ClrScr; is the last command to be printed on a line, so it
  585.   is preceded by a \.  sj_Box(...  is not the last command for the line
  586.   (the designation for double or single box comes after it) so it is NOT
  587.   preceded by a \.  sj_DoubleBox); is preceded by a \ since it is the last
  588.   command on the line.    When the two lines are taken together, the output
  589.   will look like sj_Box(5, 5, 10, 15, sj_DoubleBox);.  And the next command
  590.   will start on the next line.
  591.  
  592.   The previous example shows that not all of a single command may be
  593.   located on the same template line.  That is why the \ is used.
  594.  
  595.   Also in Skipjack you will notice on line 13, the say date command looks
  596.   like:  &\sj_SayDate....  instead of like the say string command
  597.   \sj_SayStr...  The reason is that in SkipJack, the Date does not have a
  598.   picture clause.  Because it is not written with the exact same syntax as
  599.   the SayStr command, the Alt picture clause was used.    The template knows
  600.   this because the line was preceded by &.
  601.  
  602.   In the range clause, you will notice that <<v1>> and <<v2>> are used
  603.   instead of <<var>>.  The reason is because, usually the range is entered
  604.   as:  1,11.  In order to separate the string for Skipjack which prints
  605.   them as:  '1','11' the <<v1>> and <<v2>> were used.  Why not just type in
  606.   '1','11' during data entry within DBFSCR?  Because now I can convert the
  607.   screen to dbxl or clipper without having to redefine the object's
  608.   information.
  609.  
  610.   Finally in Skipjack, you will notice that most of the Says and Gets have
  611.   #.  This is because Skipjack has a limited number of variable types that
  612.   can be used.    Obviously a function could be used to convert the variable
  613.   before the Say or Get and then imbed the function in the command.  For
  614.   instance, if I created a function that would convert integers to reals
  615.   and called it IntToReal, I could write the command for Say Int as:
  616.   \sj_SayNum(<<r1>>, <<c1>>, IntToReal(<<var>>), <<width>>, <<dec>>,.  But
  617.   IntToReal was not included with SkipJack, so I chose not to create the
  618.   template that way.
  619.  
  620.   In the dbase3 template, you will notice that the Says and Gets have the
  621.   same commands.  Even though the same command is used by the variables,
  622.   they still must be listed for each variable type.  Because it is the line
  623.   in the file which is used by DBFSCR that determines the command to use.
  624.  
  625.   Also in dbase3, you will notice that the command for single box is:  \
  626.   instead of # (dBASE does not have a SINGLE clause).  The reason is that
  627.   the command to draw the box @..TO was not preceded by a \ (it could not
  628.   be because of the DOUBLE clause).  If single box had a # then the next
  629.   command printed would be on the same line as the @..To command:
  630.     @ 2,5 TO 5,10 SET COLOR TO
  631.   (assuming SET COLOR TO was the next command).  By using the \, SET COLOR
  632.   TO will start on the next line:
  633.     @ 2,5 TO 5,10
  634.     SET COLOR TO ...
  635.  
  636.   Clipper users:  The template is called Clipper5 because I have included
  637.   the WHEN clause for GETs (ie.  prefield trigger).  To make this
  638.   compatible with earlier versions of Clipper, just put a # on the line for
  639.   prefield.
  640.  
  641.   Code Base 3 users:  Code Base 3 does not come with a box command.  I wrote
  642.   a box command using s3 routines and included it in the file CBBOX.C.    You
  643.   can use this file or create your own.  If you use your own box routine,
  644.   change the commands (box, double, single) in the CodeBas3.tem file.  If
  645.   you do not want to use the box commands, replace the respective lines
  646.   with a #.
  647.  
  648.   Code Base 4 users:  You can modify the CodeBas3.tem file easily to work
  649.   with your product.  I do not have a list of function names, otherwise I
  650.   would have done it myself.
  651.  
  652.   Code Base 3 and 4 users:  One final note is required to explain the
  653.   prefield in Codebas3.  I use Code Base (not Code Base 4).  While looking
  654.   around, I noticed that the GET structure allows for a function to be
  655.   assigned to a field called prepare, similar to the way a function can be
  656.   assigned to valid using the g3valid function.  In my Code Base library, I
  657.   wrote a function similar to g3valid called g3prepare.  This function
  658.   assigns a function name to the GET structure under the prepare field.
  659.   While in a read, Code Base looks for a function in prepare every time it
  660.   enters a field.  If that field has a function assigned, then the function
  661.   will be called before the user is allowed to enter information.  Prepare
  662.   acts like a valid, but before hand (ie.  prefield).  This is good for
  663.   things like help prompts and validation routines to determine if the
  664.   field should be entered.  I tested the function and it worked for me
  665.   until I tried to nest reads.    then I ran out of stack space.    I am
  666.   currently working on this problem.  Because your library does not have
  667.   the prepare function, you should put a # at the beginning of that line.
  668.   I left the prepare in so that you would be aware of the capability.
  669.  
  670. FINAL NOTES
  671.   I have tested the software and found no bugs.  But like any software, I
  672.   know that I could not have found them all.  Please alert me to any that
  673.   you find.  I will make any fixes as soon as I can and upload the changes.
  674.  
  675.   If you have any enhancements that you would like to see in the program,
  676.   let me know.    If I agree with the changes, I will add them as soon as
  677.   possible.
  678.  
  679.   If you have any questions or comments, write to me at the address listed
  680.   above, or, you can e-mail me on Compuserve.  My account number is:
  681.   72007,624.  I look forward to hearing from you.
  682.  
  683.