# 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()