#     Processing Help File
#
#     Copyright 2000, Hudson Valley Computer Associates, Inc.
#     All rights reserved.
#     Version: 1.0
#     Includes filePro v5.0
#     Updated: June-Nov, 2000
#
##label
@@@ 00-Read_Me
                                   \A4f\G7\G0\G0\G0\G0\G0\G0\G0\G0\G0\G9\A-
                             \A4f\G7\G0\G0\G0\G0\G0\G. Laura's \G.\G0\G0\G0\G0\G9\A-
         Order it            \A4f\G.     \G1\G0\G0\G0\G0\G0\G0\G0\G0\G0\G3    \G.\B0  \B1\A-        Sneak
            at:              \A4f\G. filePro Help Files \G.\B0  \B1\A-       Preview!
                             \A4f\G1\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G3\B0  \B1\A-
     www.hvcomputer.com        \B0                      \B1\B-     Includes v5.0!

   This sneak preview file is a replacement for the "dcabe.hlp" file. It 
   should be copied into the fp/lib directory (first move or copy the 
   standard dcabe.hlp file out of the way). This file contains:

     \r Label area \r
        1a-Help_Syntax           3-Show_codes
	2-Prc_labels             4-GraphicsCodes
        ~@CMDLINE[]/~@ARGV[]     @WBRK            @WUK

     \r If/Then area \r
        1a-Help_Syntax  GOSUB_OF         FIELDVAL       LOCKED
        REPEAT          ERRORBOX         LISTBOX        ACCESS          
        PUSHKEY         SCREEN           FORM           RAND

@@@ 0-Copyright
                            \r Copyright Notice \r
             

     This file is an original work created by Laura Brody of Hudson 
     Valley Computer Associates, Inc. in September 2000.  This file
     is not part of the filePro databse program. It was created 
     independently from fP Technologies, Inc.

     The entire contents of this file is copyrighted by Hudson Valley
     Computer Associates, Inc. All rights reserved. It may not be 
     shared, rented, given away. It may only be used by the purchaser. 
     The orginal purchaser may make one copy as a backup.

     This work may not be reproduced in whole or in part without 
     the express written permission of Hudson Valley Computer 
     Associates, Inc.
         


     filePro is a registered trademark of fP Technologies, Inc.
@@@ 1a-Help_Syntax
                \r Syntax Used in this Help File \r
           
  \r [ ] \r       The parameters between the "[]" are optional.

  \r a|b \r       The parameter "a" OR "b" must be supplied.

  \r f \r         A field that may be a real, associated or dummy.
              Examples: first_name, A2), xx(2,.0,g)

  \r n \r         A number. Could be a field of numeric type or an
              expression which resolves to a valid number.
              Examples: x(10,.2), @RN, "37" + @RN, year - age

  \r d \r         A date. Could be a field with a date type or an 
              expression which resolves to a valid date.
              Examples: @TD, "12/31/2000", month { "-" { day { "-" { year

  \r a \r         A single ASCII character. 
              Examples: "a", "B", "5", "!"
(continued)
@@@
                \r Syntax Used in this Help File \r

  \r str \r       A string of one or more ASCII characters. 
              Examples: "Laura", " - ", "," 

  \r k \r         A keystroke. Printable ASCII characters.
              Examples: y, n, \KY, \KZ 

  \r exp \r       Expression, which can be a string, dummy field,
              real field or conglomeration of any of them.
              Examples: (see previous page)

  \r (r,c) \r     The row and column location on a screen. For popup boxes,
              it is where the upper left corner should appear. The
              parameters may be a field, a literal, or an expression 
              which resolves to an integer. 
              Examples: msgbox(12,"-1") "Done"
                        input("21",x + "5") yn "OK?"

(continued)
@@@
                \r Syntax Used in this Help File \r

  \r array \r     An array name.
              Example: dim clkmenu(9)(25,*)  "clkmenu" is the array name.

  \r lookup \r    A lookup filename or lookup alias name.
              Example: lookup zipc=zipcode r=rn -nx 
              "zipc" is a lookup alias name, "zipcode" is a lookup name.

  \r fname \r     A filename.
              Example: "mydata.txt", "file23.dat"

  \r fPname \r    A filePro data filename.
              Example: "fpcust", "myfile", "zipcode"

  \r scr \r       A filePro screen name.
              Example: "0" - "9", "A", "pop"

(continued)
@@@
                \r Syntax Used in this Help File \r

  \r output \r    A filePro output format name.
              Example: "default", "year_end"

  \r edit,len \r  A filePro edit name and length.

  \r handle \r    An open file handle. Return value of a successful
              CREATE or OPEN command.





@@@ 1b-Variables
@@@ 2-Prc_labels
                           \r Processing Labels \r

    A label may contain from 1 to 7 characters. But to avoid possible
    confusion with dummy fields, you should have labels between 3 to 7
    characters long. Note: Case is not significant.

    Valid characters are: 
			abcdefghijklmnopqrstuvwxyz
			ABCDEFGHIJKLMNOPQRSTUVWXYZ
			0123456789_.@-*

    Invalid characters are:
			`~!#$%^&()+={}[]|\:;"'<>,?/\\

    Exception: the @Key label may use these i.e. @Key!, @Key?, ...

    If you need to run a table from an older version of filePro, with
    invalid label characters, set the environmental variable PFLABEL=OLD.

(continued)
@@@ 
(\r Processing Labels \r continued)


    Labels hold the "true"/"false" result of the adjoining IF, so that
    you can test for a condition once and use the label in other IF lines.

Example:

      then: zc = mid(zip,"1","5")
      then: lookup zip = zipcode k=zc -nx
 failed if: not zipcode             ' zip not found
      then: zc = ""; zip = ""
        if: failed
      then: city = ""; state = ""
        if: not failed              ' zip found, get other info
      then: city = zip("2"); state = zip("3")
        if: ' This command will always be executed.
      then: display    ' Refresh the screen so user sees results.


@@@ 3-Show_codes
                             \r Show Codes \r

      \r \\r \r   - Toggle inverse color
      \r \\C \r   - Display characters only (doesn't effect colors) 
      \r \\I \r   - Toggle high-intensity 
      \r \\Fn \r  - Set Foreground color
      \r \\Bn \r  - Set Background color
      \r \\Ann \r - Set Attributes, the first number is background,
			       the second is foreground.

	To restore the Attributes, Foreground or Backround colors
	to their default values, use \r \\A- \r \r \\F- \r or \r \\B- \r

                          \r Available Colors \r
     [\A00 \Ff0\F- \A-] Black     [\A11 \Ff1\F- \A-] Blue        [\A22 \F02\F- \A-] Green        [\A33 \F03\F- \A-] Cyan       
     [\A44 \Ff4\F- \A-] Red       [\A55 \Ff5\F- \A-] Magenta     [\A66 \F06\F- \A-] Brown/Yellow [\A77 \F07\F- \A-] White    
     [\A88 \Ff8\F- \A-] Lt Black  [\A99 \Ff9\F- \A-] Lt Blue     [\AAA \F0A\F- \A-] Lt Green     [\ABB \F0B\F- \A-] Lt Cyan  
     [\ACC \FfC\F- \A-] Lt Red    [\ADD \FfD\F- \A-] Lt Magenta  [\AEE \F0E\F- \A-] Lt Yellow    [\AFF \F0F\F- \A-] Lt White 


@@@ 4-GraphicsCodes
                            \r Graphic Codes \r

         \r \\G. \r \G.  \r \\G0 \r \G0  \r \\G1 \r \G1  \r \\G2 \r \G2  \r \\G3 \r \G3  \r \\G4 \r \G4

         \r \\G5 \r \G5  \r \\G6 \r \G6  \r \\G7 \r \G7  \r \\G8 \r \G8  \r \\G9 \r \G9  \r \\GZ \r \GZ

    You can also place graphic   \G7\G0\G0\G0\G9  \G7\G8\G9   These were drawn
    codes anywhere on the        \G. \GZ \G.  \G4\G5\G6   using only the above 
    screen or in help files.     \G1\G0\G0\G0\G3  \G1\G2\G3   graphics characters        

    \r \\Xnn \r - Hex codes 20-FE, except 7F (see ASCII chart for values)
     Examples:   \XD6\XC4\XB7        Ni\XA4o
                 \XBA \XBA            Var \X84r du? 
                 \XC8\XCD\XBC                \X80est la vie

    Intricate effects         \A2f\G7\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G9\A-
    can be achieved by        \A2f\G. Kinda cool, huh?  \G.\B0  \B1\A-
    combining colors          \A2f\G1\G0\G0Press \A4f Y \A2f or \A4f N \A2f\A77 \A2f\G3\B0  \B1\A-
    and graphics.               \B0                     \B1

@@@ 5-Key_Labels
@@@ 6-Color_Codes
@@@ 7-ASCII_Chart
@@@ @DONE
@@@ @ENTSEL
@@@ @KEY
@@@ @MENU
@@@ @ONCE
@@@ @UPDATE
@@@ @WBL
@@@ @WBRK
v1.0   \r @WBRKn \r - Subtotal event trigger. Executed when the data
		in the sort key changes at break level n.

Note: filePro allows 8 sort levels, so n may be a number between 1 and 8.
Restriction: Output processing only

Example: This report sorts by state, field 8, and then city name, field 7.

__________________________\r Sort definition \r__________________________
     Sort Field:    8\GZ    7\GZ     \GZ     \GZ     \GZ     \GZ     \GZ     \GZ
         Length:    2\GZ   15\GZ     \GZ     \GZ     \GZ     \GZ     \GZ     \GZ
     Descending?     \GZ     \GZ     \GZ     \GZ     \GZ     \GZ     \GZ     \GZ
 Subtotal Field?    Y\GZ    Y\GZ     \GZ     \GZ     \GZ     \GZ     \GZ     \GZ

 @WBRK1  if:     ' Triggered when the city name (field 7) changes,
       then: end ' after the last record of the sort is printed.
 @WBRK2  if:     ' Triggered when the state name (field 8) changes,
       then: end ' after the last record of the sort is printed.

See also: @WGT, @RS, @SF, @SH, @TS, SORT
@@@ @WEF
@@@ @WGT
@@@ @WHP
@@@ @WLF
@@@ @WUK
v4.1   \r @WUKf \r - User key event trigger. Executed when the user 
	presses the \KH, \KE, \K2, \K3 keys while in field f. 

Restriction: Input processing only
Note: Terminating processing in this label with a SCREEN will trigger @WLF.
Enhanced: v4.5 - uses "*" to mean "any field". @WUK* will only be
 	  executed if the field does not have a @wuk label of its own.
	  v4.8 - The \K2 and \K3 keys also trigger this label.
Example:
 @WUKaa if:               ' Triggered if user is in field aa
      then: end           ' and presses \KH, \KE, \K2 or \K3.
 @WUK*  if: @SK eq "GRAF" ' Typically F9
      then: msgbox "User pressed \\KH key while in field" < @FD; end
        if: @SK eq "RVON" ' Typically F8
      then: msgbox "User pressed \\KE key while in field" < @FD; end
        if: @SK eq "INSL" ' Typically F3
      then: msgbox "User pressed \\K2 key while in field" < @FD; end
        if: @SK eq "DELL" ' Typically F4
      then: msgbox "User pressed \\K3 key while in field" < @FD; end

##condition,action
@@@ 00-Read_Me
                                   \A4f\G7\G0\G0\G0\G0\G0\G0\G0\G0\G0\G9\A-
                             \A4f\G7\G0\G0\G0\G0\G0\G. Laura's \G.\G0\G0\G0\G0\G9\A-
         Order it            \A4f\G.     \G1\G0\G0\G0\G0\G0\G0\G0\G0\G0\G3    \G.\B0  \B1\A-        Sneak
            at:              \A4f\G. filePro Help Files \G.\B0  \B1\A-       Preview!
                             \A4f\G1\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G3\B0  \B1\A-
     www.hvcomputer.com        \B0                      \B1\B-     Includes v5.0!

   This sneak preview file is a replacement for the "dcabe.hlp" file. It 
   should be copied into the fp/lib directory (first move or copy the 
   standard dcabe.hlp file out of the way). This file contains:

     \r Label area \r
        1a-Help_Syntax           3-Show_codes
	2-Prc_labels             4-GraphicsCodes
        ~@CMDLINE[]/~@ARGV[]     @WBRK            @WUK

     \r If/Then area \r
        1a-Help_Syntax  GOSUB_OF         FIELDVAL       LOCKED
        REPEAT          ERRORBOX         LISTBOX        ACCESS          
        PUSHKEY         SCREEN           FORM           RAND
@@@ 0--Copyright
                            \r Copyright Notice \r
             

     This file is an original work created by Laura Brody of Hudson 
     Valley Computer Associates, Inc. in September 2000.  This file
     is not part of the filePro databse program. It was created 
     independently from fP Technologies, Inc.

     The entire contents of this file is copyrighted by Hudson Valley
     Computer Associates, Inc. All rights reserved. It may not be 
     shared, rented, given away. It may only be used by the purchaser. 
     The orginal purchaser may make one copy as a backup.

     This work may not be reproduced in whole or in part without 
     the express written permission of Hudson Valley Computer 
     Associates, Inc.
         


     filePro is a registered trademark of fP Technologies, Inc.
@@@ 1a-Help_Syntax
                \r Syntax Used in this Help File \r
           
  \r [ ] \r       The parameters between the "[]" are optional.

  \r a|b \r       The parameter "a" OR "b" must be supplied.

  \r f \r         A field that may be a real, associated or dummy.
              Examples: first_name, A2), xx(2,.0,g)

  \r n \r         A number. Could be a field of numeric type or an
              expression which resolves to a valid number.
              Examples: x(10,.2), @RN, "37" + @RN, year - age

  \r d \r         A date. Could be a field with a date type or an 
              expression which resolves to a valid date.
              Examples: @TD, "12/31/2000", month { "-" { day { "-" { year

  \r a \r         A single ASCII character. 
              Examples: "a", "B", "5", "!"
(continued)
@@@
                \r Syntax Used in this Help File \r

  \r str \r       A string of one or more ASCII characters. 
              Examples: "Laura", " - ", "," 

  \r k \r         A keystroke. Printable ASCII characters.
              Examples: y, n, \KY, \KZ 

  \r exp \r       Expression, which can be a string, dummy field,
              real field or conglomeration of any of them.
              Examples: (see previous page)

  \r (r,c) \r     The row and column location on a screen. For popup boxes,
              it is where the upper left corner should appear. The
              parameters may be a field, a literal, or an expression 
              which resolves to an integer. 
              Examples: msgbox(12,"-1") "Done"
                        input("21",x + "5") yn "OK?"

(continued)
@@@
                \r Syntax Used in this Help File \r

  \r array \r     An array name.
              Example: dim clkmenu(9)(25,*)  "clkmenu" is the array name.

  \r lookup \r    A lookup filename or lookup alias name.
              Example: lookup zipc=zipcode r=rn -nx 
              "zipc" is a lookup alias name, "zipcode" is a lookup name.

  \r fname \r     A filename.
              Example: "mydata.txt", "file23.dat"

  \r fPname \r    A filePro data filename.
              Example: "fpcust", "myfile", "zipcode"

  \r scr \r       A filePro screen name.
              Example: "0" - "9", "A", "pop"

(continued)
@@@
                \r Syntax Used in this Help File \r

  \r output \r    A filePro output format name.
              Example: "default", "year_end"

  \r edit,len \r  A filePro edit name and length.

  \r handle \r    An open file handle. Return value of a successful
              CREATE or OPEN command.





@@@ 1b-Variables
@@@ 1c-Debugging
@@@ DEBUG
@@@ LOGTEXT
@@@ 1d-Process_Flow
@@@ CALL
@@@ CHAIN
@@@ END
@@@ ESCAPE
@@@ EXIT
@@@ GOSUB
@@@ GOSUB_OF
v4.5   \r GOSUB OF \r - Gosub to a one of several labels based on a numeric
		value. A value of "1" will gosub to the first label, a value 
		of "2" for the second, etc. If the value is less than "1" or
		more than the number of labels, the gosub will be ignored 
		and the next statement will be executed. Any fractions are
		ignored.

Note: You may nest GOSUB and GOSUB OF statements up to 16 levels deep. If an
      additional GOSUB or GOSUB OF is encountered, a runtime error will occur.
Example:
      then: mn(2,.0) = "3"
      then: GOSUB (mn) OF jan, feb, march, april, may, june; end
 jan    if:
      then: return
 feb    if:
      then: return
 march  if: ' This code will be executed.
      then: return

See also: GOSUB, RETURN
@@@ GOTO
@@@ GOTO_OF
@@@ RESTART
@@@ RETURN
@@@ SAVE
@@@ SKIP
@@@ 2--UsrInterface
@@@ BACKGROUND
@@@ BEEP
@@@ BREAK
@@@ CLEARB
@@@ CLEARP
@@@ CLEARS
@@@ CLS
@@@ CURSOR
@@@ DISPLAY
@@@ DLEN()
@@@ ERRORBOX
v4.1   \r ERRORBOX [(r,c)] str1 [, str2 [, k]] \r  - Display a popup 
		box at location (r,c), with the message str1, a prompt 
		in str2 and allow the user to press keys k to respond. 
		If location is omitted, the box will be centered on the
		screen. r or c can take "-1" to center it vertically
		or horizontally. If k is omitted, only \KZ will be 
		accepted. If k is supplied, those characters in addition 
		to \KZ will be accepted (case is insignificant). Unless 
		BREAK is turned off in processing, the user can press 
		\KY (this condition should be tested) to exit the MSGBOX.
		The user's response is returned in @BK. 

		Colors used: ERRORNORMAL and ERRORINVERSE.



Notes: MESGBOX and MSGBOX are functionally identical to ERRORBOX, the
only difference is that they use colors POPUPNORMAL and POPUPINVERSE.

(continued)
@@@
(\r ERRORBOX \r continued)
Example:
      then: m="Deleting the current record.\\n\\n       Are you sure?\\n"
      then: beep; ERRORBOX m,"Press \\r Y \\r or \\r N \\r","YN"
        if: (@BK eq "BRKY") or (@BK eq "N")
      then: end 
        if: @BK eq "Y"
      then: delete; end

With ERRORNORMAL    \A4f\G7\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G9\A-
set to 0x4f and     \A4f\G. Deleting the current record. \G.\B0  \B1\A-
ERRORINVERSE set    \A4f\G.                              \G.\B0  \B1\A-
to 0x70, the        \A4f\G.        Are you sure?         \G.\B0  \B1\A-
above code will     \A4f\G.                              \G.\B0  \B1\A-
generate this       \A4f\G1\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0Press \A70 Y \A4f or \A70 N \A4f\A80 \A4f\G3\B0  \B1\A-
errorbox:             \B0                                \B1\B-<- dropshadow
                                                  ^
                                                  \G1\G0 cursor position
See also: MESGBOX, MSGBOX, BREAK, environmental variables ERRORNORMAL, 
ERRORINVERSE, PFDROPSHADOW and PFSHADOWCOLOR.
@@@ HELP
@@@ FLUSHKEY
@@@ INKEY
@@@ INPUT
@@@ INPUT_POPUP
@@@ INPUTPW
@@@ INPUTPW_POPUP
@@@ LISTBOX()
v4.1   \r n = LISTBOX(array[,beg[,end[,r[,c[,h[,w[,init]]]]]]]) \r - Display
		the elements in an array and allow the user to select one.
		If the user presses \KY, the result will be "0", 
		otherwise the position of the element chosen. 

		Colors used: POPUPNORMAL and POPUPINVERSE.

Enhanced: v5.0 - added 8th parameter to specify initial highlight position,
                 intervening optional parameters can be left off entirely.

Example:
       then: dim nums(5)(8,*); nums("1") = "One"; nums("2") = "Two"
       then: nums("3") = "Three"; nums("4") = "Four"; nums("5") = "Five"
       then: x = LISTBOX(nums,"3","5")  ' Only display elements 3, 4 & 5.
       
             If the user choses the first element in the listbox, "1"
             will be returned even though it is the 3rd element of 
             the array.

(continued)
@@@
( \r LISTBOX \r continued)
Example:
      then: dim gender(3)(7,*); gender("1")="Male"
      then: gender("2") = "Female"; gender("3")="Unknown"
      then: x = LISTBOX(gender,"","","","","","","3")
      then: ' x = LISTBOX(gender,,,,,,,"3") produces the same result.
        if: x eq "0" ' User pressed \KY.
      then: end
      then: sex = gender[x] ' Put choice in "sex" field.

  With POPUPNORMAL           
  set to 0x2f and            \A2f\G7\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G9\A-
  POPUPINVERSE set           \A2f\G.  Male     \G.\B0  \B1\A-
  to 0x4f, the above         \A2f\G.  Female   \G.\B0  \B1\A-
  code will generate         \A2f\G.\A77 \A4f Unknown \A2f \G.\B0  \B1\A-<-cursor, highlight bar
  this listbox               \A2f\G1\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G0\G3\B0  \B1\A- 
  centered on the screen:      \B0             \B1\B-<- dropshadow

See also: MENU, BREAK, environmental variables POPUPNORMAL, POPUPINVERSE, 
PFDROPSHADOW and PFSHADOWCOLOR.
@@@ MESGBOX, MSGBOX
@@@ MENU
@@@ SHOW
@@@ SHOWCTR()
@@@ SHOW_POPUP
@@@ SHOWTOCOL()
@@@ SLEEP()
@@@ SWITCHTO
@@@ POPUP
@@@ POPUP_UPDATE
@@@ PUSHKEY
v4.0   \r PUSHKEY exp \r - Put keystrokes into the *clerk/*report
		keyboard buffer. Allows the developer to create
		macros for an application. Maximum keystrokes 128.
		Special keys count as a single character each.

Note: Special keys such as \KZ, \KY and others need to be treated
      differently than single characters (see 5-Key_Labels page for key
      codes). They must be enclosed in "[" and "]" characters. (See example) 

Example:

 @KEYs  if: ' Clear any pending keystrokes. Turn off screen updates.
      then: flushkey; video off 
        if: ' Exit back to the IUA menu, choose Scan for Records,
            ' then choose Extended Selection, then L-Load the selection
            ' set named "today", press \KZ and \KZ to display
            ' matching records. Turn the screen update back on.
      then: PUSHKEY "X22Ltoday[ENTR][ENTR]"; video on; end

See also: FLUSHKEY, VIDEO
@@@ SCREEN
v1.0   \r SCREEN [scr] [,f [ ,n ] ] \r - On an automatic table, it will 
		switch to that screen without going into update mode. On
		an input table, it will display the screen and go into 
		update mode on it. If all parameters are omitted, the
		user will be placed in update mode on the current screen
		on the first field in the cursor path or the first field
		on the screen if no path was defined. The first parameter
		is the screen name, the second parameter is the field to 
		position the cursor. The third parameter is the position 
		within the field. After the user presses \K4 or \KY,
		processing continues after the SCREEN statement, unless
		the SCREEN was within a "When" processing label (i.e. @WEF,
		@WLF, @WUK, @WHP, and @WBR). In that case, the SCREEN
		statement will terminate the "When" processing as if
		an END statement was encountered.
		When processing ends, the user will be returned to the
		original screen (if command was called from an input table).

Restriction: Input or automatic processing tables of IUA.
(continued)
@@@
( \r SCREEN \r continued)

Enhanced: v4.5 allows you to specify the location in the field to 
          position the cursor. A value of "-1" or a value larger than
          the length of the field will position the cursor at the end 
          of the data, (as if \KD was pressed). A value of "1"
          will position the cursor at the beginning of the field.
Examples:
  @KEYu if: ' Customize U-Update    ' Go into update mode on screen 0 in dummy
      then: SCREEN 0, aa; end       ' field aa. Single character screen names 
                                    ' do not require " characters around them.
  @KEYu if: ' Customize U-Update
      then: aa(8,*) = "23"          ' Go into update mode on screen PAY in
      then: SCREEN "PAY", (aa); end ' the field 23.
                                  
  @WLF* if: fieldval(-,@fd) eq ""
      then: errorbox "You must fill this field"; SCREEN ,(@fd)
      then: end

See also: DISPLAY, SWITCHTO, UPDATE
@@@ UPDATE
@@@ VIDEO
@@@ WAITKEY
@@@ 2b-ShowCodes
@@@ 2c-GraphicCodes
@@@ 2d-Key_Labels
@@@ 2e-Color_Codes
@@@ 3a-Sys_Fields
@@@ _@DT, _@T4, _@TD, _@TM, _@BK, _@BR, _@SK
@@@ _@AF, _@CO, _@CP, _@FD, _@RO, _@SN
@@@ _@FN, _@LC, _@PN, _@RP, _@RS, _@SF, _@SH, _@TS
@@@ _@PM, _@PW, _@PX, _@PY, _@PZ 
@@@ _@PC, _@PD, _@PR, _@PT
@@@ _@B4, _@BD, _@C4, _@CB, _@CD
@@@ _@RN, _@U4, _@UB, _@UD
@@@ _@FI, _@ID, _@LI, _@OS, _@QU, _@VR, _@GU
@@@ 3b-Sys_Arrays
@@@ ~@ALLFILES[]
@@@ ~@CMDLINE[], ~@ARGV[] 
v5.0   \r str = @CMDLINE[] \r - Contains the *clerk/*report command line.

Notes: Can also be referenced as @ARGV[].
       @CMDLINE["0"] will contain the number of entries in the array.
       The contents of CMDLINE["1"] is system dependant. Some systems will
       have it contain the full path to the program, others will have it
       contain exactly what was on the command line.

Example:
     command-line: fp/dclerk fpcust -s0 -xe -h "Process a Customer"  (Unix)
     command-line: fp\\dclerk fpcust -s0 -xe -h "Process a Customer"  (DOS)

      then: x = @CMDLINE["0"]    ' x contains 6
      then: x = @CMDLINE["1"]    ' x contains "c:\\fp\\dclerk.exe" (under DOS)
      then: x = @CMDLINE["1"]    ' x contains "/fp/dclerk" (under UNIX)
      then: x = @CMDLINE["2"]    ' x contains "fpcust"
      then: x = @CMDLINE["3"]    ' x contains "-s0"
      then: x = @CMDLINE["4"]    ' x contains "-xe"
      then: x = @CMDLINE["5"]    ' x contains "-h"
      then: x = @CMDLINE["6"]    ' x contains "Process a Customer"
@@@ ~@DIRLIST[]
@@@ ~@DIRLIST_EXT[]
@@@ ~@DIRLIST_FILENAME[]
@@@ ~@DIRLIST_NAME[]
@@@ ~@FPFILES[]
@@@ ~@FSTAT[]
@@@ ~@SYSFILES[]
@@@ 4--Process_Data
@@@ ASC()
@@@ CHR()
@@@ CLEAR
@@@ COMPARE()
@@@ DECLARE
@@@ DIM()
@@@ DOEDIT()
@@@ INSTR()
@@@ LEN()
@@@ MID()
@@@ REPEAT()
v4.5   \r str = REPEAT(exp,n) \r - Return a string of n characters by
		repeating exp as necessary.
Examples:
        if: ' This will draw a line of 20 "\G0" characters.
      then: show("12","2") REPEAT("\\G0","60")  ' Notice that the second 
						' parameter is "60" not "20".
      Draw a thermometer-like status bar that looks like this:
          [\r                       \r                          ]

      then: ot(8,hms,g)
 top    if: ot eq @tm
      then: goto no_upd
      then: i(2,.0,g) = (@RP/@TS) * "50"
      then: show("17","20") "[\\r" & REPEAT(" ",i) & "\\r" &
              REPEAT(" ","50"-i) & "]"
      then: ot = @tm
 no_upd if:
   ....
      then: goto top

@@@ SELECT
@@@ SET
@@@ SORT
@@@ SOUNDEX()
@@@ STRTOK()
@@@ XLATE()
@@@ 5a-fP_File_IO
@@@ BLOB
@@@ CLOSE
@@@ COPY
@@@ COPYIN
@@@ COPY_TO
@@@ DELETE
@@@ DROP
@@@ DROP_ALL
@@@ EDIT()
@@@ GETNEXT
@@@ GETPREV
@@@ FIELDEDIT()
@@@ FIELDLEN()
@@@ FIELDNAME()
@@@ FIELDVAL()
v4.5 \r str = FIELDVAL(lookup,n) \r - Returns the value in the field.

Examples:
      then: lookup myfile k=ky i=a -nx
        if: not myfile ' Lookup failed.
      then: goto done
      then: y(3,.0) = "1"
      then: x = FIELDVAL(myfile,y)     ' x will contain the value in field 1.
                                       '    of the lookup file "myfile".
      then: y = numfield(myfile)       ' Get number of fields in the file.
      then: x = FIELDVAL(myfile,y)     ' x will contain the value in the last
                                       ' field of the lookup file "myfile".
      then: y = "1"
      then: x = FIELDVAL(-,y)          ' x will contain contents of field 1
                                       '    of the current file.
      then: y = numfield(-)            ' Get number of fields in the file.
      then: x = FIELDVAL(-,y)          ' x will contain contents of the last
                                       ' field of the current file.

See also: FIELDEDIT(), FIELDLEN(), FIELDNAME(), LOOKUP, NUMFIELD()
@@@ LOCKED()
v4.5   \r LOCKED(lookup) \r - Test if a lookup record is currently locked.

Note: Must be used in conjunction with a lookup statement which
	includes both a -w and -p flag.

Example:

 getzip if:
      then: lookup zip=zipcode k=ky i=a -npxw
        if: LOCKED(zip)
      then: goto ziplkd
   ......
 ziplkd if:
      then: p = "Press \\r Y \\r or \\r N \\r"
      then: msgbox "Zipcode \\"" { ky { "\\" is locked.\\nTry again?",p,"YN"
        if: @BK eq "Y"  ' Pause for 5 seconds and try again.
      then: sleep("5000000"); goto getzip


See also: LOOKUP
@@@ LOOKUP
@@@ MEMO
@@@ NUMFIELD()
@@@ NUMRECS()
@@@ RECLEN()
@@@ SYNC
@@@ WRITE
@@@ 5b-Sys_File_IO
@@@ ACCESS()
v4.8   \r n = ACCESS(fname,mode) \r - Test if a given file has read,
		write or execute access. Returns '0' if true, otherwise
		a negated system error code. 
		Possible modes: "r" - read, "w" - write, "x" - execute 

Note: The modes may be combined.
      Under DOS, a file always has read and execute permissions.
      Under DOS, if a drive is write-protected, ACCESS will not
      report that the files on it are read-only unless the files
      themselves are marked as "read-only".

Examples:

      (Assuming "/etc/passwd" has "rw-r--r--" permissions.)
      then: x = access("/etc/passwd","r")   ' x will contain 0
      then: x = access("/etc/passwd","x")   ' x will not contain 0

      then: x = access(".profile","rw")     ' x will contain 0

See also: EXISTS()
@@@ CHDIR()
@@@ CLOSE()
@@@ CLOSEDIR()
@@@ CREATE()
@@@ ERRNAME()
@@@ EXPORT
@@@ EXISTS()
@@@ FILESIZE()
@@@ FREESPACE()
@@@ GETCWD()
@@@ GETENV()
@@@ GUI
@@@ IMPORT
@@@ IXCOMMENT()
@@@ IXSORT()
@@@ READBROWSE()
@@@ READSCREEN()
@@@ READOUTPUT()
@@@ NEXTDIR()
@@@ OPEN()
@@@ OPENDIR()
@@@ OUTS
@@@ PUTENV
@@@ READ()
@@@ READLINE()
@@@ REMOVE()
@@@ SEEK()
@@@ SORTINFO()
@@@ SYSTEM
@@@ TELL()
@@@ USER
@@@ WRITE()
@@@ WRITELINE()
@@@ 6a-Math_Funcs
@@@ ABS()
@@@ AVG()
@@@ BASE()
@@@ CEIL(), FLOOR()
@@@ FRAC(), INT()
@@@ MAX()
@@@ MIN()
@@@ MOD()
@@@ PI()
@@@ RAND()
v4.1   \r n = RAND( [n] ) \r - Generate a psuedo-random number. The result
		will be between 0 and 32,767.

Enhanced v5.0: to allow a negative seed value to seed the generator
	using the current time.

Note: The function should be seeded (given a value for n) on the initial 
      call, not during every call. A good seed is the current time * 3600.

Example:
      then: x(8,.0,g); gosub getx
...
  getx  if: x eq ""   ' Subroutine that puts a random number in x.
      then: y(10,f) = @TM; x = RAND(y * "3600"); return
      then: x = RAND(); return

    If you need values in a range, you need to adjust the return value.
    by multiplying by the highest number plus one and dividing by 32768.

      then: x = int(RAND() * "100"/"32768") ' Will return numbers 0 to 99.
@@@ SIGN()
@@@ SQRT()
@@@ TOT()
@@@ 6b-Trig_Funcs, ACOS(), ACOSH()
@@@ ASIN(), ASINH()
@@@ ATAN()
@@@ ATANH() COS()
@@@ COSH(), DACOS()
@@@ DASIN(), DATAN()
@@@ DCOS()
@@@ DSIN(), DTAN()
@@@ DTOR(), RTOD()
@@@ SIN(), SINH()
@@@ TAN(), TANH()
@@@ 6c-Log_Funcs, LOG(), LOG10(), EXP(), EXP10()
@@@ 6d-Financial
@@@ TVM_N(), TVM_PV(), TVM_PMT(), TVM_FV()
@@@ 7--Date_Funcs
@@@ ADDMONTH()
@@@ BOM(), BOQ(), BOY()
@@@ DOM(), DOQ(), DOY()
@@@ DOW()
@@@ EOM(), EOQ(), EOY()
@@@ ISLEAP()
@@@ MDAY()
@@@ WOM(), WOQ(), WOY()
@@@ 8--Print_Output
@@@ FORM
v1.0   \r FORM [ output ] \r - Print the specified output format to the printer 
		and close the print spooler. When placed on the condition
		line, tests for the success of the most recent FORM/FORMM.

Restriction: Input processing only

Examples:
  @KEYf if: ' Customize the F-Print Form key.
      then: formm "header"; x="0" ' Form with company info,etc.; init counter
  loop  if: x ge item_count
      then: FORM "footer" ; end
      then: gosub get_nxt    ' Fill dummy fields with info from item # x.
      then: formm "item";    ' Print the item info.
      then: x = x + "1"; goto loop
  @KEYh if: ' Customize the H-hardcopy key.
      then: FORM "info"
        if: not FORM
      then: errorbox "Error encountered printing form \\"info\\""; end

See also: FORMM, HARDCOPY
@@@ FORMM
@@@ HARDCOPY
@@@ PAGE
@@@ PRINT
@@@ PRINTER
@@@ PRINTER_FILE
@@@ PRINTER_LOCAL
@@@ PRINTER_NAME
@@@ PRINTER_RESET
@@@ PRINTER_TYPE
@@@ RESET
@@@ 9--HTML
@@@ HTML_Address, HTML_:AD
@@@ HTML_Anchor, HTML_:AN
@@@ HTML_Area, HTML_:AR
@@@ HTML_Base, HTML_:BA
@@@ HTML_Body, HTML_:BO
@@@ HTML_Blockquote, HTML_:BQ
@@@ HTML_Break, HTML_:BR
@@@ HTML_Center, HTML_:CE
@@@ HTML_Close, HTML_:CL
@@@ HTML_Comments, HTML_:CO
@@@ HTML_Create, HTML_:CR
@@@ HTML_Divisions, HTML_:DI
@@@ HTML_Font, HTML_:FN
@@@ HTML_Frame, HTML_:FR
@@@ HTML_Frameset, HTML_:FS
@@@ HTML_Header, HTML_:H1
@@@ HTML_H_Rule, HTML_:HR
@@@ HTML_Def_Data, HTML_:DD
@@@ HTML_Def_List, HTML_:DL
@@@ HTML_Def_Term, HTML_:DT
@@@ HTML_Form, HTML_:FO
@@@ HTML_Input, HTML_:IN
@@@ HTML_Image, HTML_:IM
@@@ HTML_Isindex, HTML_:IS
@@@ HTML_LineItem, HTML_:LI
@@@ HTML_Link, HTML_:LN
@@@ HTML_Map, HTML_:MA
@@@ HTML_Meta, HTML_:ME
@@@ HTML_OrdList, HTML_:OL
@@@ HTML_Option HTML_:OP
@@@ HTML_Paragraph, HTML_:PA
@@@ HTML_PRE, HTML_:PR
@@@ HTML_Script, HTML_:SC
@@@ HTML_Selection, HTML_:SE
@@@ HTML_Span, HTML_:SP
@@@ HTML_Table, HTML_:TA
@@@ HTML_Caption, HTML_:TC
@@@ HTML_Table_Data, HTML_:TD
@@@ HTML_Textarea, HTML_:TE
@@@ HTML_Header, HTML_:TH
@@@ HTML_Table_Row, HTML_:TR
@@@ HTML_Text, HTML_:TX
@@@ HTML_UnordList, HTML_:UL
@@@ HTML_:ZZ     
@@@ HTMLERRNO()
@@@ JSFILE
@@@ TOHTML()
