See changelog 20000407-06:30

This commit is contained in:
Luiz Rafael Culik
2000-04-07 09:59:24 +00:00
parent c8f115df1c
commit 67525a10ba
41 changed files with 2248 additions and 1407 deletions

View File

@@ -47,12 +47,14 @@
* Return Nil
* $STATUS$
* R
* $SEEALSO$
* AADD(),ADEL(),AFILL(),AINS()
* $COMPLIANCE$
* This function is CA-CLIPPER Compliant in all Cases, except that
* arrays in Harbour can have an unlimited number of dimensions, while
* Clipper has a limit of 4096 array elements.
* Clipper has a limit of 4096 array elements.
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* AADD(),ADEL(),AFILL(),AINS()
* $END$
*/
@@ -87,6 +89,8 @@
* NEXT
* $STATUS$
* R
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* AINS(),ASIZE()
* $END$
@@ -123,11 +127,11 @@
* R
* $COMPLIANCE$
* If HB_COMPAT_C53 is defined, the function generates an Error,
* else it will return the array itself.
* else it will return the array itself.
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* AADD(),ADEL(),AFILL(),AINS()
* $INCLUDE$
*
* $END$
*/
@@ -154,7 +158,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA Clipper compliant
* This function is CA Clipper compliant
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* LEN(),ARRAY(),ASIZE(),AADD()
* $END$
@@ -193,10 +199,10 @@
* R
* $COMPLIANCE$
* This function is CA Clipper compliant
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* AADD(),ACOPY(),ADEL(),AEVAL(),AFILL(),ASIZE()
* $INCLUDE$
*
* $END$
*/
@@ -223,20 +229,19 @@
* will become the fifth subscript position. The length of the array
* <aArray> will remain unchanged,as the last element in the array will
* become a NIL data type.
* $EXAMPLES$
* $EXAMPLES$
* LOCAL aArray
* aArray := { "Harbour","is","Power" } // Result: aArray is
*
* ADEL(aArray, 2) // Result: aArray is
* ADEL(aArray, 2) // Result: aArray is
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA Clipper compliant
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* ACOPY(),AINS(),AFILL()
*
* $END$
*/
@@ -279,6 +284,8 @@
* R
* $COMPLIANCE$
* This function is CA Clipper compliant
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* AADD(),AEVAL(),DBSTRUCT(),DIRECTORY()
* $END$
@@ -329,6 +336,8 @@
* R
* $COMPLIANCE$
* This function is not CA-Clipper compatible. Clipper ASCAN() is affected by the SET EXACT ON/OFF Condition
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* AEVAL()
* $END$
@@ -372,6 +381,8 @@
* R
* $COMPLIANCE$
* This function is CA Clipper compliant
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* EVAL(),DBEVAL()
* $END$
@@ -431,6 +442,8 @@
* R
* $COMPLIANCE$
* This function is CA Clipper compliant
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* ACLONE(),ADEL(),AEVAL(),AFILL(),AINS(),ASORT()
* $END$
@@ -465,6 +478,8 @@
* R
* $COMPLIANCE$
* Clipper will return NIL if the parameter is not an array.
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* ACOPY(),ADEL(),AINS(),ASIZE()
* $END$
@@ -529,6 +544,8 @@
* will be called one more time for the first logical element than
* in Clipper. But this is block calling frequency and order differs
* from Clipper anyway, since they use different sorting algorithm.
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* ASCAN(),EVAL(),SORT
* $END$

View File

@@ -26,23 +26,23 @@
* $ARGUMENTS$
* <cBuffer> is a character string that contain 16 bit encoded unsigned
* short integer (least significant byte first). The first two bytes
* are taken into account, the rest if any are ignored. </par>
* are taken into account, the rest if any are ignored.
* $RETURNS$
* BIN2W() return numeric integer (or 0 if <cBuffer> is not a string). </par>
* BIN2W() return numeric integer (or 0 if <cBuffer> is not a string).
* $DESCRIPTION$
* BIN2W() is one of the low level binary conversion functions, those
* functions convert between Harbour numeric and a character
* representation of numeric value. BIN2W() take two bytes of encoded
* 16 bit unsigned short integer and convert it into standard Harbour
* numeric value. </par>
* numeric value.
* You might ask what is the need for such functions, well, first of
* all it allow you to read/write information from/to a binary file
* (like extracting information from DBF header), it is also a useful
* way to share information from source other than Harbour (C for
* instance). </par>
* instance).
* BIN2W() is the opposite of W2BIN() </par>
* BIN2W() is the opposite of W2BIN()
* $EXAMPLES$
<fixed>
* // Show header length of a DBF
@@ -62,7 +62,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* BIN2W() works exactly like CA-Clipper's BIN2W() </par>
* BIN2W() works exactly like CA-Clipper's BIN2W()
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* BIN2I(),BIN2L(),BIN2U(),I2BIN(),L2BIN(),W2BIN(),WORD(),U2BIN(),FREAD()
* $END$
@@ -80,23 +82,23 @@
* $ARGUMENTS$
* <cBuffer> is a character string that contain 16 bit encoded signed
* short integer (least significant byte first). The first two bytes
* are taken into account, the rest if any are ignored. </par>
* are taken into account, the rest if any are ignored.
* $RETURNS$
* BIN2I() return numeric integer (or 0 if <cBuffer> is not a string). </par>
* BIN2I() return numeric integer (or 0 if <cBuffer> is not a string).
* $DESCRIPTION$
* BIN2I() is one of the low level binary conversion functions, those
* functions convert between Harbour numeric and a character
* representation of numeric value. BIN2I() take two bytes of encoded
* 16 bit signed short integer and convert it into standard Harbour
* numeric value. </par>
* numeric value.
* You might ask what is the need for such functions, well, first of
* all it allow you to read/write information from/to a binary file
* (like extracting information from DBF header), it is also a useful
* way to share information from source other than Harbour (C for
* instance). </par>
* instance).
* BIN2I() is the opposite of I2BIN() </par>
* BIN2I() is the opposite of I2BIN()
* $EXAMPLES$
<fixed>
* // Show DBF last update date
@@ -119,7 +121,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* BIN2I() works exactly like CA-Clipper's BIN2I() </par>
* BIN2I() works exactly like CA-Clipper's BIN2I()
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* BIN2L(),BIN2U(),BIN2W(),I2BIN(),L2BIN(),W2BIN(),WORD(),U2BIN(),FREAD()
* $END$
@@ -137,23 +141,23 @@
* $ARGUMENTS$
* <cBuffer> is a character string that contain 32 bit encoded signed
* long integer (least significant byte first). The first four bytes
* are taken into account, the rest if any are ignored. </par>
* are taken into account, the rest if any are ignored.
* $RETURNS$
* BIN2L() return numeric integer (or 0 if <cBuffer> is not a string). </par>
* BIN2L() return numeric integer (or 0 if <cBuffer> is not a string).
* $DESCRIPTION$
* BIN2L() is one of the low level binary conversion functions, those
* functions convert between Harbour numeric and a character
* representation of numeric value. BIN2L() take four bytes of encoded
* 32 bit signed long integer and convert it into standard Harbour
* numeric value. </par>
* numeric value.
* You might ask what is the need for such functions, well, first of
* all it allow you to read/write information from/to a binary file
* (like extracting information from DBF header), it is also a useful
* way to share information from source other than Harbour (C for
* instance). </par>
* instance).
* BIN2L() is the opposite of L2BIN() </par>
* BIN2L() is the opposite of L2BIN()
* $EXAMPLES$
<fixed>
* // Show number of records in DBF
@@ -173,7 +177,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* BIN2L() works exactly like CA-Clipper's BIN2L() </par>
* BIN2L() works exactly like CA-Clipper's BIN2L()
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* BIN2I(),BIN2U(),BIN2W(),I2BIN(),L2BIN(),W2BIN(),WORD(),U2BIN(),FREAD()
* $END$
@@ -191,23 +197,23 @@
* $ARGUMENTS$
* <cBuffer> is a character string that contain 32 bit encoded unsigned
* long integer (least significant byte first). The first four bytes
* are taken into account, the rest if any are ignored. </par>
* are taken into account, the rest if any are ignored.
* $RETURNS$
* BIN2U() return numeric integer (or 0 if <cBuffer> is not a string). </par>
* BIN2U() return numeric integer (or 0 if <cBuffer> is not a string).
* $DESCRIPTION$
* BIN2U() is one of the low level binary conversion functions, those
* functions convert between Harbour numeric and a character
* representation of numeric value. BIN2U() take four bytes of encoded
* 32 bit unsigned long integer and convert it into standard Harbour
* numeric value. </par>
* numeric value.
* You might ask what is the need for such functions, well, first of
* all it allow you to read/write information from/to a binary file
* (like extracting information from DBF header), it is also a useful
* way to share information from source other than Harbour (C for
* instance). </par>
* instance).
* BIN2U() is the opposite of U2BIN() </par>
* BIN2U() is the opposite of U2BIN()
* $EXAMPLES$
<fixed>
* // Show number of records in DBF
@@ -228,9 +234,11 @@
* R
* $COMPLIANCE$
* BIN2U() is an XBase++ compatibility function and does not exist
* as a standard CA-Clipper 5.x function. </par>
* as a standard CA-Clipper 5.x function.
* This function is only visible if source/rtl/binnum.c was compiled
* with the HB_COMPAT_XPP flag. </par>
* with the HB_COMPAT_XPP flag.
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* BIN2I(),BIN2L(),BIN2W(),I2BIN(),L2BIN(),W2BIN(),WORD(),U2BIN(),FREAD()
* $END$
@@ -246,24 +254,24 @@
* $SYNTAX$
* I2BIN( <nNumber> ) --> cBuffer
* $ARGUMENTS$
* <nNumber> is a numeric value to convert (decimal digits are ignored). </par>
* <nNumber> is a numeric value to convert (decimal digits are ignored).
* $RETURNS$
* I2BIN() return two bytes character string that contain 16 bit
* encoded signed short integer (least significant byte first). </par>
* encoded signed short integer (least significant byte first).
* $DESCRIPTION$
* I2BIN() is one of the low level binary conversion functions, those
* functions convert between Harbour numeric and a character
* representation of numeric value. I2BIN() take a numeric integer
* value and convert it into two bytes of encoded 16 bit signed short
* integer. </par>
* integer.
* You might ask what is the need for such functions, well, first of
* all it allow you to read/write information from/to a binary file
* (like extracting information from DBF header), it is also a useful
* way to share information from source other than Harbour (C for
* instance). </par>
* instance).
* I2BIN() is the opposite of BIN2I() </par>
* I2BIN() is the opposite of BIN2I()
* $EXAMPLES$
<fixed>
* // Update DBF "last update" date
@@ -294,7 +302,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* I2BIN() works exactly like CA-Clipper's I2BIN() </par>
* I2BIN() works exactly like CA-Clipper's I2BIN()
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* BIN2I,BIN2L(),BIN2U(),BIN2W(),L2BIN(),W2BIN(),WORD(),U2BIN(),FWRITE()
* $END$
@@ -310,31 +320,33 @@
* $SYNTAX$
* W2BIN( <nNumber> ) --> cBuffer
* $ARGUMENTS$
* <nNumber> is a numeric value to convert (decimal digits are ignored). </par>
* <nNumber> is a numeric value to convert (decimal digits are ignored).
* $RETURNS$
* W2BIN() return two bytes character string that contain 16 bit
* encoded unsigned short integer (least significant byte first). </par>
* encoded unsigned short integer (least significant byte first).
* $DESCRIPTION$
* W2BIN() is one of the low level binary conversion functions, those
* functions convert between Harbour numeric and a character
* representation of numeric value. W2BIN() take a numeric integer
* value and convert it into two bytes of encoded 16 bit unsigned short
* integer. </par>
* integer.
* You might ask what is the need for such functions, well, first of
* all it allow you to read/write information from/to a binary file
* (like extracting information from DBF header), it is also a useful
* way to share information from source other than Harbour (C for
* instance). </par>
* instance).
* W2BIN() is the opposite of BIN2W() </par>
* W2BIN() is the opposite of BIN2W()
* $STATUS$
* R
* $COMPLIANCE$
* W2BIN() is an XBase++ compatibility function and does not exist
* as a standard CA-Clipper 5.x function. </par>
* as a standard CA-Clipper 5.x function.
* This function is only visible if source/rtl/binnum.c was compiled
* with the HB_COMPAT_XPP flag. </par>
* with the HB_COMPAT_XPP flag.
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* BIN2I,BIN2L(),BIN2U(),BIN2W(),I2BIN(),L2BIN(),WORD(),U2BIN(),FWRITE()
* $END$
@@ -350,28 +362,30 @@
* $SYNTAX$
* L2BIN( <nNumber> ) --> cBuffer
* $ARGUMENTS$
* <nNumber> is a numeric value to convert (decimal digits are ignored). </par>
* <nNumber> is a numeric value to convert (decimal digits are ignored).
* $RETURNS$
* L2BIN() return four bytes character string that contain 32 bit
* encoded signed long integer (least significant byte first). </par>
* encoded signed long integer (least significant byte first).
* $DESCRIPTION$
* L2BIN() is one of the low level binary conversion functions, those
* functions convert between Harbour numeric and a character
* representation of numeric value. L2BIN() take a numeric integer
* value and convert it into four bytes of encoded 32 bit signed long
* integer. </par>
* integer.
* You might ask what is the need for such functions, well, first of
* all it allow you to read/write information from/to a binary file
* (like extracting information from DBF header), it is also a useful
* way to share information from source other than Harbour (C for
* instance). </par>
* instance).
* L2BIN() is the opposite of BIN2L() </par>
* L2BIN() is the opposite of BIN2L()
* $STATUS$
* R
* $COMPLIANCE$
* L2BIN() works exactly like CA-Clipper's L2BIN() </par>
* L2BIN() works exactly like CA-Clipper's L2BIN()
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* BIN2I,BIN2L(),BIN2U(),BIN2W(),I2BIN(),W2BIN(),WORD(),U2BIN(),FWRITE()
* $END$
@@ -387,31 +401,33 @@
* $SYNTAX$
* U2BIN( <nNumber> ) --> cBuffer
* $ARGUMENTS$
* <nNumber> is a numeric value to convert (decimal digits are ignored). </par>
* <nNumber> is a numeric value to convert (decimal digits are ignored).
* $RETURNS$
* U2BIN() return four bytes character string that contain 32 bit
* encoded unsigned long integer (least significant byte first). </par>
* encoded unsigned long integer (least significant byte first).
* $DESCRIPTION$
* U2BIN() is one of the low level binary conversion functions, those
* functions convert between Harbour numeric and a character
* representation of numeric value. U2BIN() take a numeric integer
* value and convert it into four bytes of encoded 32 bit unsigned long
* integer. </par>
* integer.
* You might ask what is the need for such functions, well, first of
* all it allow you to read/write information from/to a binary file
* (like extracting information from DBF header), it is also a useful
* way to share information from source other than Harbour (C for
* instance). </par>
* instance).
* U2BIN() is the opposite of BIN2U() </par>
* U2BIN() is the opposite of BIN2U()
* $STATUS$
* R
* $COMPLIANCE$
* U2BIN() is an XBase++ compatibility function and does not exist
* as a standard CA-Clipper 5.x function. </par>
* as a standard CA-Clipper 5.x function.
* This function is only visible if source/rtl/binnum.c was compiled
* with the HB_COMPAT_XPP flag. </par>
* with the HB_COMPAT_XPP flag.
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* BIN2I,BIN2L(),BIN2U(),BIN2W(),I2BIN(),L2BIN(),W2BIN(),WORD(),FWRITE()
* $END$
@@ -427,18 +443,20 @@
* $SYNTAX$
* WORD( <nDouble> ) --> <nInteger>
* $ARGUMENTS$
* <nDouble> is a numeric double value. </par>
* <nDouble> is a numeric double value.
* $RETURNS$
* WORD() return an integer in the range +-32767 </par>
* WORD() return an integer in the range +-32767
* $DESCRIPTION$
* This function converts double values to integers to use
* within the CALL command </par>
* within the CALL command
* $STATUS$
* R
* $COMPLIANCE$
* The Clipper NG states that WORD() will only work when used in CALL
* commands parameter list, otherwise it will return NIL, in Harbour
* it will work anywhere. </par>
* it will work anywhere.
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* CALL
* $END$

View File

@@ -32,21 +32,21 @@
* DBEDIT( [<nTop>], [<nLeft>], [<nBottom>], [<nRight>], [<acColumns>], [<xUserFunc>], [<xColumnSayPictures>], [<xColumnHeaders>], [<xHeadingSeparators>], [<xColumnSeparators>], [<xFootingSeparators>], [<xColumnFootings>] ) --> lOk
* $ARGUMENTS$
* <nTop> coordinate for top row display. <nTop> could range from 0
* to MAXROW(), default is 0. </par>
* to MAXROW(), default is 0.
*
* <nLeft> coordinate for left column display. <nLeft> could range
* from 0 to MAXCOL(), default is 0. </par>
* from 0 to MAXCOL(), default is 0.
*
* <nBottom> coordinate for bottom row display. <nBottom> could range
* from 0 to MAXROW(), default is MAXROW(). </par>
* from 0 to MAXROW(), default is MAXROW().
*
* <nRight> coordinate for right column display. <nRight> could range
* from 0 to MAXCOL(), default is MAXCOL(). </par>
* from 0 to MAXCOL(), default is MAXCOL().
*
* <acColumns> is an array of character expressions that contain
* database fields names or expressions to display in each column.
* If not specified, the default is to display all fields from the
* database in the current work area. </par>
* database in the current work area.
*
* <xUserFunc> is a name of a user defined function or a code block
* that would be called every time unrecognized key is been pressed or
@@ -56,14 +56,14 @@
* parentheses. Both the user define function or the code block should
* accept two parameters: nMode, nCurrentColumn. Both should return
* a numeric value that correspond to one of the expected return codes
* (see table below for a list of nMode and return codes). </par>
* (see table below for a list of nMode and return codes).
*
* <xColumnSayPictures> is an optional picture. If <xColumnSayPictures>
* is a character string, all columns would used this value as a
* picture string. If <xColumnSayPictures> is an array, each element
* should be a character string that correspond to a picture string
* for the column with the same index. Look at the help for @...SAY
* to get more information about picture values. </par>
* to get more information about picture values.
*
* <xColumnHeaders> contain the header titles for each column, if this
* is a character string, all columns would have that same header, if
@@ -71,70 +71,78 @@
* the header title for one column. Header may be split to more than
* one line by placing semicolon (;) in places where you want to break
* line. If omitted, the default value for each column header is taken
* from <acColumns> or field name if <acColumns> was not specified. </par>
* from <acColumns> or field name if <acColumns> was not specified.
*
* <xHeadingSeparators> is an array that contain characters that draw
* the lines separating the headers and the fields data. Instead of an
* array you can use a character string that would be used to display
* the same line for all fields. Default value is a double line. </par>
* the same line for all fields. Default value is a double line.
*
* <xColumnSeparators> is an array that contain characters that draw
* the lines separating displayed columns. Instead of an array you can
* use a character string that would be used to display the same line
* for all fields. Default value is a single line. </par>
* for all fields. Default value is a single line.
*
* <xFootingSeparators> is an array that contain characters that draw
* the lines separating the fields data area and the footing area.
* Instead of an array you can use a character string that would be
* used to display the same line for all footers. Default is to have to
* no footing separators. </par>
* no footing separators.
*
* <xColumnFootings> contain the footing to be displayed at the bottom
* of each column, if this is a character string, all columns would
* have that same footer, if this is an array, each element is a
* character string that contain the footer for one column. Footer may
* be split to more than one line by placing semicolon (;) in places
* where you want to break line. If omitted, no footer are displayed. </par>
* where you want to break line. If omitted, no footer are displayed.
* $RETURNS$
* DBEDIT() return .F. if there is no database in use or if the number
* of columns to display is zero, else DBEDIT() return .T. </par>
* of columns to display is zero, else DBEDIT() return .T.
* $DESCRIPTION$
* DBEDIT() display and edit records from one or more work areas in
* a grid on screen. Each column is defined by element from <acColumns>
* and is the equivalent of one field. Each row is equivalent of one
* database record. </par>
* database record.
* Following are active keys that handled by DBEDIT():
* ---------------------------------------------------
* Following are active keys that handled by DBEDIT(): </par>
* --------------------------------------------------- </par>
* <table>
* Left - Move one column to the left (previous field)
* Right - Move one column to the right (next field)
* Up - Move up one row (previous record)
* Down - Move down one row (next record)
* Page-Up - Move to the previous screen
* Page-Down - Move to the next screen
* Ctrl Page-Up - Move to the top of the file
* Ctrl Page-Down - Move to the end of the file
* Home - Move to the leftmost visible column
* End - Move to the rightmost visible column
* Ctrl Left - Pan one column to the left
* Ctrl Right - Pan one column to the right
* Ctrl Home - Move to the leftmost column
* Ctrl End - Move to the rightmost column
* Key Meaning
*
* Left Move one column to the left (previous field)
* Right Move one column to the right (next field)
* Up Move up one row (previous record)
* Down Move down one row (next record)
* Page-Up Move to the previous screen
* Page-Down Move to the next screen
* Ctrl Page-Up Move to the top of the file
* Ctrl Page-Down Move to the end of the file
* Home Move to the leftmost visible column
* End Move to the rightmost visible column
* Ctrl Left Pan one column to the left
* Ctrl Right Pan one column to the right
* Ctrl Home Move to the leftmost column
* Ctrl End Move to the rightmost column
* </table>
* When <xUserFunc> is omitted, two more keys are active: </par>
* When <xUserFunc> is omitted, two more keys are active:
* <table>
* Esc - Terminate BROWSE()
* Enter - Terminate BROWSE()
* Esc Terminate BROWSE()
* Enter Terminate BROWSE()
* </table>
* When DBEDIT() execute <xUserFunc> it pass the following arguments:
* nMode and the index of current record in <acColumns>. If <acColumns>
* is omitted, the index number is the FIELD() number of the open
* database structure. </par>
* database structure.
* DBEDIT() nMode could be one of the following:
* ---------------------------------------------
* DBEDIT() nMode could be one of the following: </par>
* --------------------------------------------- </par>
* <table>
* Dbedit.ch Meaning
*
* DE_IDLE DBEDIT() is idle, all movement keys have been handled.
* DE_HITTOP Attempt to cursor past top of file.
* DE_HITBOTTOM Attempt to cursor past bottom of file.
@@ -142,22 +150,25 @@
* DE_EXCEPT Key exception.
* </table>
* The user define function or code block must return a value that tell
* DBEDIT() what to do next. </par>
* DBEDIT() what to do next.
* User function return codes:
* ---------------------------
* User function return codes: </par>
* --------------------------- </par>
* <table>
* DE_ABORT Abort DBEDIT().
* DE_CONT Continue DBEDIT() as is.
* DE_REFRESH Force reread/redisplay of all data rows.
* Dbedit.ch Value Meaning
*
* DE_ABORT 0 Abort DBEDIT().
* DE_CONT 1 Continue DBEDIT() as is.
* DE_REFRESH 2 Force reread/redisplay of all data rows.
* </table>
* The user function is called once in each of the following cases: </par>
* - The database is empty. </par>
* - The user try to move past top of file or past bottom file. </par>
* - Key exception, the uses had pressed a key that is not handled by DBEDIT(). </par>
* - The keyboard buffer is empty or a screen refresh had just occurred </par>
* The user function is called once in each of the following cases:
* - The database is empty.
* - The user try to move past top of file or past bottom file.
* - Key exception, the uses had pressed a key that is not handled by DBEDIT().
* - The keyboard buffer is empty or a screen refresh had just occurred
* DBEDIT() is a compatibility function, it is superseded by the
* TBrowse class and there for not recommended for new applications. </par>
* TBrowse class and there for not recommended for new applications.
* $EXAMPLES$
<fixed>
* // Browse a file using default values
@@ -168,23 +179,25 @@
* S
* $COMPLIANCE$
* <xUserFunc> can take a code block value, this is a Harbour
* extension. </par>
* extension.
* CA-Clipper will throw an error if there's no database open, Harbour
* would return .F. </par>
* would return .F.
* CA-Clipper is buggy and will throw an error if the number of columns
* zero, Harbour would return .F. </par>
* zero, Harbour would return .F.
* The CA-Clipper 5.2 NG state that the return value is NIL, this is
* wrong and should be read logical. </par>
* wrong and should be read logical.
* There is an undocumented result code (3) from the user defined
* function in Clipper (both 87 and 5.x). This is an Append Mode which:
* "split the screen to allow data to be appended in windowed area".
* This mode is not supported by Harbour. </par>
* This mode is not supported by Harbour.
* $FILES$
* Header files are dbedit.ch, inkey.ch </par>
* Header files are dbedit.ch, inkey.ch
* Library is rtl.lib
* $SEEALSO$
* @...SAY,BROWSE(),TBrowse class,TRANSFORM()
* $END$
@@ -200,48 +213,52 @@
* $SYNTAX$
* BROWSE( [<nTop>, <nLeft>, <nBottom>, <nRight>] ) --> lOk
* $ARGUMENTS$
* <nTop> coordinate for top row display. </par>
* <nTop> coordinate for top row display.
*
* <nLeft> coordinate for left column display. </par>
* <nLeft> coordinate for left column display.
*
* <nBottom> coordinate for bottom row display. </par>
* <nBottom> coordinate for bottom row display.
*
* <nRight> coordinate for right column display. </par>
* <nRight> coordinate for right column display.
* $RETURNS$
* BROWSE() return .F. if there is no database open in this work area,
* else it return .T. </par>
* else it return .T.
* $DESCRIPTION$
* BROWSE() is a general purpose database browser, without any
* thinking you can browse a file using the following keys: </par>
* thinking you can browse a file using the following keys:
*
* <table>
* Left - Move one column to the left (previous field)
* Right - Move one column to the right (next field)
* Up - Move up one row (previous record)
* Down - Move down one row (next record)
* Page-Up - Move to the previous screen
* Page-Down - Move to the next screen
* Ctrl Page-Up - Move to the top of the file
* Ctrl Page-Down - Move to the end of the file
* Home - Move to the leftmost visible column
* End - Move to the rightmost visible column
* Ctrl Left - Pan one column to the left
* Ctrl Right - Pan one column to the right
* Ctrl Home - Move to the leftmost column
* Ctrl End - Move to the rightmost column
* Esc - Terminate BROWSE()
* Key Meaning
*
* Left Move one column to the left (previous field)
* Right Move one column to the right (next field)
* Up Move up one row (previous record)
* Down Move down one row (next record)
* Page-Up Move to the previous screen
* Page-Down Move to the next screen
* Ctrl Page-Up Move to the top of the file
* Ctrl Page-Down Move to the end of the file
* Home Move to the leftmost visible column
* End Move to the rightmost visible column
* Ctrl Left Pan one column to the left
* Ctrl Right Pan one column to the right
* Ctrl Home Move to the leftmost column
* Ctrl End Move to the rightmost column
* Esc Terminate BROWSE()
* </table>
* On top of the screen you see a status line with the following
* indication: </par>
<table>
* Record ###/### - Current record number / Total number of records.
* <none> - There are no records, the file is empty.
* <new> - You are in append mode at the bottom of file.
* <Deleted> - Current record is deleted.
* <bof> - You are at the top of file.
* indication:
*
* <table>
* Record ###/### Current record number / Total number of records.
* <none> There are no records, the file is empty.
* <new> You are in append mode at the bottom of file.
* <Deleted> Current record is deleted.
* <bof> You are at the top of file.
* </table>
* You should pass whole four valid coordinate, if less than four
* parameters are passed to BROWSE() the coordinate are default to:
* 1, 0, MAXROW(), MAXCOL(). </par>
* 1, 0, MAXROW(), MAXCOL().
* $EXAMPLES$
<fixed>
* // this one shows you how to browse around
@@ -250,6 +267,8 @@
</fixed>
* $STATUS$
* S
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* DBEDIT()*,TBrowse class
* $END$
@@ -265,22 +284,22 @@
* $SYNTAX$
* TBrowseDB( [<nTop>], [<nLeft>], [<nBottom>], [<nRight>] ) --> oBrowse
* $ARGUMENTS$
* <nTop> coordinate for top row display. </par>
* <nTop> coordinate for top row display.
*
* <nLeft> coordinate for left column display. </par>
* <nLeft> coordinate for left column display.
*
* <nBottom> coordinate for bottom row display. </par>
* <nBottom> coordinate for bottom row display.
*
* <nRight> coordinate for right column display. </par>
* <nRight> coordinate for right column display.
* $RETURNS$
* TBrowseDB() return new TBrowse object with the specified coordinate
* and a default :SkipBlock, :GoTopBlock and :GoBottomBlock to browse
* a database file. </par>
* a database file.
* $DESCRIPTION$
* TBrowseDB() is a quick way to create a TBrowse object along with
* the minimal support needed to browse a database. Note that the
* returned TBrowse object contain no TBColumn objects and you need
* to add column for each field by your self. </par>
* to add column for each field by your self.
* $EXAMPLES$
<fixed>
* for a good example, look at the source code for BROWSE() function
@@ -289,7 +308,9 @@
* $STATUS$
* S
* $COMPLIANCE$
* TBrowseDB() works exactly like CA-Clipper's TBrowseDB(). </par>
* TBrowseDB() works exactly like CA-Clipper's TBrowseDB().
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* BROWSE(),TBColumn class,TBrowse class,TBrowseNew()
* $END$
@@ -308,13 +329,13 @@
* <nRecs> is the number of records to skip relative to current record.
* Positive number would try to move the record pointer forward, while
* a negative number would try to move the record pointer back <nRecs>
* records. </par>
* records.
* $RETURNS$
* dbSkipper() return the number of actual record skipped. </par>
* dbSkipper() return the number of actual record skipped.
* $DESCRIPTION$
* dbSkipper() is a helper function used in browse mechanism to skip
* a number of records while giving the caller indication about the
* actual records skipped. </par>
* actual records skipped.
* $EXAMPLES$
<fixed>
* // open a file and find if we've got enough records in it
@@ -330,10 +351,12 @@
* R
* $COMPLIANCE$
* dbSkipper() is an XBase++ compatibility function and does not exist
* as a standard CA-Clipper 5.x function. </par>
* as a standard CA-Clipper 5.x function.
* This function is only visible if source/rtl/browdb.prg was compiled
* with the HB_COMPAT_XPP flag. </par>
* with the HB_COMPAT_XPP flag.
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* DBSKIP(),SKIP
* $END$

View File

@@ -25,23 +25,24 @@
* $ARGUMENTS$
* <ClassName> Name of the class to define. By tradition, Harbour
* classes start with "T" to avoid collisions with user-
* created classes. </par>
* <SuperClass> The Parent class to use for inheritance </par>
* created classes.
* <SuperClass> The Parent class to use for inheritance
* $DESCRIPTION$
* CLASS creates a class from which you can create objects.
* Each Class is defined in a separate .PRG file dedicated to that
* purpose. You cannot create more than one class in a .PRG.
* After the CLASS command begins the definition, the DATA
* elements (also known as instance variables) and METHODS of the
* class are named. </par>
* class are named.
*
* Classes can inherit from a single <SuperClass>, but the chain of
* inheritance can extend to many levels. </par>
* inheritance can extend to many levels.
*
* A program uses a Class by calling the Class Constructor, the
* New() method, to create an object. That object is usually assigned
* to a variable, which is used to access the DATA elements and
* methods. </par>
* methods.
* $EXAMPLES$
<fixed>
* CLASS TBColumn
@@ -65,9 +66,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* CLASS is a Harbour extension. </par>
* CLASS is a Harbour extension.
* $PLATFORMS$
* All </par>
* All
* $SEEALSO$
* TClass(),Object Oriented Programming,DATA,METHOD
* $END$
@@ -83,23 +84,25 @@
* $SYNTAX$
* DATA <DataName1> [,<DataNameN>] [ AS <type> ] [ INIT <uValue> ]
* $ARGUMENTS$
* <DataName1> Name of the DATA </par>
* <DataName1> Name of the DATA
* <type> Optional data type specification from the following:
* Character, Numeric, Date, Logical, Codeblock, Nil </par>
* <uValue> Optional initial value when creating a new object </par>
* Character, Numeric, Date, Logical, Codeblock, Nil
* <uValue> Optional initial value when creating a new object
* $DESCRIPTION$
* DATA elements can also be thought of as the "properties" of an
* object. They can be of any data type, including codeblock.
* Once an object has been created, the DATA elements are referenced
* with the colon (:) as in MyObject:Heading := "Last name".
* Usually a class also defines methods to manipulate the DATA. </par>
* Usually a class also defines methods to manipulate the DATA.
*
* You can use the "AS <type>" clause to enforce that the DATA is
* maintained as a certain type. Otherwise it will take on the type of
* whatever value is first assigned to it. </par>
* whatever value is first assigned to it.
*
* Use the "INIT <uValue>" clause to initialize that DATA to <uValue>
* whenever a new object is created. </par>
* whenever a new object is created.
* $EXAMPLES$
<fixed>
* CLASS TBColumn
@@ -123,9 +126,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* DATA is a Harbour extension. </par>
* DATA is a Harbour extension.
* $PLATFORMS$
* All </par>
* All
* $SEEALSO$
* Object Oriented Programming,CLASS,METHOD,CLASSDATA
* $END$
@@ -139,24 +142,27 @@
* $ONELINER$
* Define a CLASSDATA variable for a class (NOT for an Object!)
* $SYNTAX$
* CLASSDATA <DataName1> [,<DataNameN>] [ AS <type> ] [ INIT <uValue> ] </par>
* CLASSDATA <DataName1> [,<DataNameN>] [ AS <type> ] [ INIT <uValue> ]
* $ARGUMENTS$
* <DataName1> Name of the DATA </par>
* <DataName1> Name of the DATA
* <type> Optional data type specification from the following:
* Character, Numeric, Date, Logical, Codeblock, Nil </par>
* <uValue> Optional initial value at program startup </par>
* Character, Numeric, Date, Logical, Codeblock, Nil
* <uValue> Optional initial value at program startup
* $DESCRIPTION$
* CLASSDATA variables can also be thought of as the "properties" of an
* entire class. Each CLASSDATA exists only once, no matter how many
* objects are created. A common usage is for a counter that is
* incremented whenever an object is created and decremented when one
* is destroyed, thus monitoring the number of objects in existance
* for this class. </par>
* for this class.
*
* You can use the "AS <type>" clause to enforce that the CLASSDATA is
* maintained as a certain type. Otherwise it will take on the type of
* whatever value is first assigned to it. </par>
* whatever value is first assigned to it.
* Use the "INIT <uValue>" clause to initialize that DATA to <uValue>
* whenever the class is first used. </par>
* whenever the class is first used.
* $EXAMPLES$
<fixed>
* CLASS TWindow
@@ -167,9 +173,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* CLASSDATA is a Harbour extension. </par>
* CLASSDATA is a Harbour extension.
* $PLATFORMS$
* All </par>
* All
* $SEEALSO$
* Object Oriented Programming,CLASS,METHOD,DATA
* $END$
@@ -192,26 +198,27 @@
* METHOD <MethodName>( [<param>] ) OPERATOR <op>
* METHOD <MethodName>( [<params,...>] ) CLASS <ClassName>
* $ARGUMENTS$
* <MethodName> Name of the method to define </par>
* <params,...> Optional parameter list </par>
* <MethodName> Name of the method to define
* <params,...> Optional parameter list
* $DESCRIPTION$
* Methods are "class functions" which do the work of the class.
* All methods must be defined in the class header between the
* CLASS and ENDCLASS commands. If the body of a method is not fully
* defined here, the full body is written below the ENDCLASS command
* using this syntax: </par>
* using this syntax:
*
* METHOD <MethodName>( [<params,...>] ) CLASS <ClassName> </par>
* METHOD <MethodName>( [<params,...>] ) CLASS <ClassName>
*
* Methods can reference the current object with the keyword "Self:" or
* its shorthand version "::". </par>
* its shorthand version "::".
*
* CLAUSES: </par>
* CLAUSES:
*
* CONSTRUCTOR Defines a special method Class Constructor method,
* used to create objects. This is usually the
* New() method. Constructors always return the new
* object. </par>
* object.
*
* INLINE Fast and easy to code, INLINE lets you define the
* code for the method immediately within the definition
@@ -219,31 +226,31 @@
* must be fully defined after the ENDCLASS command.
* The <Code,...> following INLINE receives a parameter
* of Self. If you need to receive more parameters, use
* the BLOCK clause instead. </par>
* the BLOCK clause instead.
*
* BLOCK Use this clause when you want to declare fast 'inline'
* methods that need parameters. The first parameter to
* <CodeBlock> must be Self, as in: </par>
* <CodeBlock> must be Self, as in:
*
* METHOD <MethodName> BLOCK {|Self,<arg1>,<arg2>, ...,<argN>|...} </par>
* METHOD <MethodName> BLOCK {|Self,<arg1>,<arg2>, ...,<argN>|...}
*
* EXTERN If an external function does what the method needs,
* use this clause to make an optimized call to that
* function directly. </par>
* function directly.
*
* SETGET For calculated Data. The name of the method can be
* manipulated like a Data element to Set or Get a value. </par>
* manipulated like a Data element to Set or Get a value.
*
* VIRTUAL Methods that do nothing. Useful for Base classes where
* the child class will define the method's behavior, or
* when you are first creating and testing a Class. </par>
* when you are first creating and testing a Class.
*
* OPERATOR Operator Overloading for classes.
* See example Tests/TestOp.prg for details. </par>
* See example Tests/TestOp.prg for details.
*
* CLASS <ClassName> </par>
* CLASS <ClassName>
* Use this syntax only for defining a full method after
* the ENDCLASS command. </par>
* the ENDCLASS command.
* $EXAMPLES$
<fixed>
* CLASS TWindow
@@ -270,9 +277,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* METHOD is a Harbour extension. </par>
* METHOD is a Harbour extension.
* $PLATFORMS$
* All </par>
* All
* $SEEALSO$
* TClass(),Object Oriented Programming,DATA,CLASS
* $END$
@@ -289,27 +296,29 @@
* MESSAGE <MessageName> METHOD <MethodName>( [<params,...>] )
* MESSAGE <MessageName>() METHOD <MethodName>( [<params,...>] )
* $ARGUMENTS$
* <MessageName> The pseudo-method name to define </par>
* <MessageName> The pseudo-method name to define
* <MethodName> The method to create and call when <MessageName>
* is invoked. </par>
* <params,...> Optional parameter list for the method </par>
* is invoked.
* <params,...> Optional parameter list for the method
* $DESCRIPTION$
* The MESSAGE command is a seldom-used feature that lets you re-route
* a call to a method with a different name. This can be necessary if
* a method name conflicts with a public function that needs to be
* called from within the class methods. </par>
* called from within the class methods.
*
* For example, your app may have a public function called BeginPaint()
* that is used in painting windows. It would also be natural to have a
* Window class method called :BeginPaint() that the application can
* call. But within the class method you would not be able to call the
* public function because internally methods are based on static
* functions (which hide public functions of the same name). </par>
* functions (which hide public functions of the same name).
*
* The MESSAGE command lets you create the true method with a different
* name (::xBeginPaint()), yet still allow the ::BeginPaint() syntax
* to call ::xBeginPaint(). This is then free to call the public
* function BeginPaint(). </par>
* function BeginPaint().
* $EXAMPLES$
<fixed>
* CLASS TWindow
@@ -321,9 +330,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* MESSAGE is a Harbour extension. </par>
* MESSAGE is a Harbour extension.
* $PLATFORMS$
* All </par>
* All
* $SEEALSO$
* METHOD,DATA,CLASS,Object Oriented Programming
* $END$
@@ -339,11 +348,12 @@
* $SYNTAX$
* ERROR HANDLER <MethodName>( [<params,...>] )
* $ARGUMENTS$
* <MethodName> Name of the method to define </par>
* <params,...> Optional parameter list </par>
* <MethodName> Name of the method to define
* <params,...> Optional parameter list
* $DESCRIPTION$
* ERROR HANDLER names the method that should handle errors for the
* class being defined. </par>
* class being defined.
* $EXAMPLES$
<fixed>
* CLASS TWindow
@@ -353,9 +363,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* ERROR HANDLER is a Harbour extension. </par>
* ERROR HANDLER is a Harbour extension.
* $PLATFORMS$
* All </par>
* All
* $SEEALSO$
* Object Oriented Programming,ON ERROR,CLASS,METHOD,DATA
* $END$
@@ -371,12 +381,13 @@
* $SYNTAX$
* ON ERROR <MethodName>( [<params,...>] )
* $ARGUMENTS$
* <MethodName> Name of the method to define </par>
* <params,...> Optional parameter list </par>
* <MethodName> Name of the method to define
* <params,...> Optional parameter list
* $DESCRIPTION$
* ON ERROR is a synonym for ERROR HANDLER.
* It names the method that should handle errors for the
* class being defined. </par>
* class being defined.
* $EXAMPLES$
<fixed>
* CLASS TWindow
@@ -386,9 +397,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* ON ERROR is a Harbour extension. </par>
* ON ERROR is a Harbour extension.
* $PLATFORMS$
* All </par>
* All
* $SEEALSO$
* Object Oriented Programming,ERROR HANDLER,CLASS,METHOD,DATA
* $END$
@@ -404,8 +415,8 @@
* $SYNTAX$
* ENDCLASS
* $DESCRIPTION$
* ENDCLASS marks the end of a class declaration. </par>
* It is usually followed by the class methods that are not INLINE. </par>
* ENDCLASS marks the end of a class declaration.
* It is usually followed by the class methods that are not INLINE.
* $EXAMPLES$
<fixed>
* CLASS TWindow
@@ -415,9 +426,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* ON ERROR is a Harbour extension. </par>
* ON ERROR is a Harbour extension.
* $PLATFORMS$
* All </par>
* All
* $SEEALSO$
* Object Oriented Programming,CLASS,METHOD,DATA
* $END$

View File

@@ -43,6 +43,8 @@
* This function is Ca-Clipper compliant.
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* DAY(),DOW(),DATE(),CMONTH()
* $END$
@@ -77,6 +79,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* CDOW(),DATE(),MONTH(),YEAR(),DOW(),DTOC()
* $END$
@@ -107,6 +111,8 @@
* This function is Ca-Clipper Compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* CTOD(),DTOS(),DTOC(),DAY(),MONTH(),CMONTH()
* $END$
@@ -140,6 +146,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* SET DATE,DATE(),DTOS()
* $END$
@@ -170,6 +178,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* CTOD(),DTOS(),DTOC(),DATE(),MONTH(),CMONTH()
* $END$
@@ -200,6 +210,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* SECONDS(),SECS(),ELAPTIME()
* $END$
@@ -230,6 +242,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* DTOC(),CDOW(),DATE(),DTOS(),DAY()
* $END$
@@ -262,6 +276,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* SET DATE,DATE(),DTOS()
* $END$
@@ -292,6 +308,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* DTOC(),DATE(),DTOS()
* $END$
@@ -329,6 +347,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* SECS(),SECONDS(),TIME(),DAY()
* $END$
@@ -360,6 +380,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* CDOW(),DOW(),YEAR(),CMONTH()
* $END$
@@ -392,6 +414,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* TIME()
* $END$
@@ -422,6 +446,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* SECONDS(),ELAPTIME(),TIME()
* $END$
@@ -451,6 +477,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* DATE(),SECONDS()
* $END$
@@ -485,6 +513,8 @@
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All
* $FILES$
* Library is rtl.lib
* $SEEALSO$
* DAY(),MONTH()
* $END$

View File

@@ -54,13 +54,14 @@
* USE TEST
* aList := { "NAME" }
* __dbCopyStruct( "OnlyName.DBF", aList )
* $TESTS$
* $STATUS$
* R
* $COMPLIANCE$
* __dbCopyStruct() works exactly like CA-Clipper's __dbCopyStruct()
* $PLATFORMS$
* All
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* COPY STRUCTURE,COPY STRUCTURE EXTENDED,DBCREATE(),DBSTRUCT(),__dbCopyXStruct(),__dbCreate(),__dbStructFilter()
* $END$
@@ -101,13 +102,12 @@
* // Create a new file that contain part of the original structure
* USE TEST
* COPY STRUCTURE TO SomePart FIELDS name, address
* $TESTS$
* $STATUS$
* R
* $COMPLIANCE$
* COPY STRUCTURE works exactly as in CA-Clipper
* $PLATFORMS$
* $FILES$
* All
* $SEEALSO$
* COPY STRUCTURE EXTENDED,DBCREATE(),DBSTRUCT(),__dbCopyStruct(),__dbCopyXStruct(),__dbCreate(),__dbStructFilter()
* $END$
@@ -134,7 +134,8 @@
* pre-defined structure (also called "structure extended file"):
*
* <table>
* <color:red>Field name Type Length Decimals </color>
* Field name Type Length Decimals
*
* FIELD_NAME C 10 0
* FIELD_TYPE C 1 0
* FIELD_LEN N 3 0
@@ -179,7 +180,9 @@
* $COMPLIANCE$
* __dbCopyXStruct() works exactly like CA-Clipper's __dbCopyXStruct()
* $PLATFORMS$
* All
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* COPY STRUCTURE,COPY STRUCTURE EXTENDED,CREATE,CREATE FROM,DBCREATE(),DBSTRUCT(),__dbCopyStruct(),__dbCreate()
* $END$
@@ -204,7 +207,8 @@
* a pre-defined structure (also called "structure extended file"):
*
* <table>
* <color:red>Field name Type Length Decimals </color>
* Field name Type Length Decimals
*
* FIELD_NAME C 10 0
* FIELD_TYPE C 1 0
* FIELD_LEN N 3 0
@@ -243,13 +247,12 @@
* COPY STRUCTURE EXTENDED TO TestStru
* USE TestStru
* LIST
* $TESTS$
* $STATUS$
* R
* $COMPLIANCE$
* COPY STRUCTURE EXTENDED works exactly as in CA-Clipper
* $PLATFORMS$
* $FILES$
* All
* $SEEALSO$
* COPY STRUCTURE,CREATE,CREATE FROM,DBCREATE(),DBSTRUCT(),__dbCopyStruct(),__dbCopyXStruct(),__dbCreate()
* $END$
@@ -299,8 +302,9 @@
* then opened in the current work-area (<lNew> is ignored). The new
* file has the following structure:
*
* <table:4>
* <color:red>Field name Type Length Decimals </color>
* <table>
* Field name Type Length Decimals
*
* FIELD_NAME C 10 0
* FIELD_TYPE C 1 0
* FIELD_LEN N 3 0
@@ -352,13 +356,14 @@
* FIELD->FIELD_DEC := 3 // 1000 / 256 = 3
* DBCLOSEAREA()
* __dbCreate( "TV_Guide", "template" )
* $TESTS$
* $STATUS$
* R
* $COMPLIANCE$
* __dbCreate() works exactly as in CA-Clipper
* $PLATFORMS$
* All
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* COPY STRUCTURE,COPY STRUCTURE EXTENDED,CREATE,CREATE FROM,DBCREATE(),DBSTRUCT(),__dbCopyStruct(),__dbCopyXStruct()
* $END$
@@ -390,9 +395,9 @@
* and then open it in the current work-area. The new file has the
* following structure:
*
* <table:4>
* <color:red>Field name Type Length Decimals</color>
*
* <table>
* Field name Type Length Decimals
*
* FIELD_NAME C 10 0
* FIELD_TYPE C 1 0
* FIELD_LEN N 3 0
@@ -423,13 +428,12 @@
* FIELD->FIELD_DEC := 3 // 1000 / 256 = 3
* CLOSE
* CREATE TV_Guide FROM template
* $TESTS$
* $STATUS$
* R
* $COMPLIANCE$
* CREATE works exactly as in CA-Clipper
* $PLATFORMS$
* $FILES$
* All
* $SEEALSO$
* COPY STRUCTURE,COPY STRUCTURE EXTENDED,CREATE FROM,DBCREATE(),DBSTRUCT(),__dbCopyStruct(),__dbCopyXStruct(),__dbCreate()
* $END$
@@ -488,13 +492,12 @@
* during compile time and use this mode.
* $EXAMPLES$
* See example in the CREATE command
* $TESTS$
* $STATUS$
* R
* $COMPLIANCE$
* CREATE FROM works exactly as in CA-Clipper
* $PLATFORMS$
* $FILES$
* All
* $SEEALSO$
* COPY STRUCTURE,COPY STRUCTURE EXTENDED,CREATE,DBCREATE(),DBSTRUCT(),__dbCopyStruct(),__dbCopyXStruct(),__dbCreate()
* $END$
@@ -514,8 +517,9 @@
* structure, which is usually the output from DBSTRUCT(), where each
* array element has the following structure:
*
* <table:3>
* <color:red>Position Description dbstruct.ch </color>
* <table>
* Position Description dbstruct.ch
*
* 1 cFieldName DBS_NAME
* 2 cFieldType DBS_TYPE
* 3 nFieldLength DBS_LEN
@@ -568,7 +572,6 @@
* aStruct := DBSTRUCT()
* aList := { "NAME" }
* DBCREATE( "OnlyName.DBF", __FLEDIT( aStruct, aList ) )
* $TESTS$
* $STATUS$
* R
* $COMPLIANCE$
@@ -581,8 +584,10 @@
* This function is only visible if source/rdd/dbstrux.prg was compiled
* with the HARBOUR_STRICT_CLIPPER_COMPATIBILITY flag.
* $PLATFORMS$
* All
* $FILES$
* Header file is dbstruct.ch
* Library is Rdd.lib
* $SEEALSO$
* DBCREATE(),DBSTRUCT(),__dbCopyStruct(),__dbStructFilter()
* $END$
@@ -602,8 +607,9 @@
* structure, which is usually the output from DBSTRUCT(), where each
* array element has the following structure:
*
* <table:3>
* <color:red>Position Description dbstruct.ch </color>
* <table>
* Position Description dbstruct.ch
*
* 1 cFieldName DBS_NAME
* 2 cFieldType DBS_TYPE
* 3 nFieldLength DBS_LEN
@@ -653,7 +659,6 @@
* aStruct := DBSTRUCT()
* aList := { "NAME" }
* DBCREATE( "OnlyName.DBF", __dbStructFilter( aStruct, aList ) )
* $TESTS$
* $STATUS$
* R
* $COMPLIANCE$
@@ -661,8 +666,10 @@
* undocumented function named __FLEDIT() that does exactly the same.
* The new name give better description of what this function do.
* $PLATFORMS$
* All
* $FILES$
* Header file is dbstruct.ch
* Library is Rdd.lib
* $SEEALSO$
* DBCREATE(),DBSTRUCT(),__dbCopyStruct(),__FLEDIT()*
* $END$

View File

@@ -26,22 +26,22 @@
* <cFileMask> File mask to include in the function return. It could
* contain path and standard wildcard characters as supported by your
* OS (like * and ?). If <cFileMask> contain no path, then SET DEFAULT
* path is used to display files in the mask. </par>
* path is used to display files in the mask.
* $RETURNS$
* __Dir() always returns NIL. </par>
* __Dir() always returns NIL.
* $DESCRIPTION$
* If no <cFileMask> is given, __Dir() display information about all
* *.dbf in the SET DEFAULT path, this information contain: file name,
* number of records, last update date and the size of each file. </par>
* number of records, last update date and the size of each file.
*
* If <cFileMask> is given, __Dir() list all files that match the mask
* with the following details: Name, Extension, Size, Date. </par>
* with the following details: Name, Extension, Size, Date.
*
* DIR command is preprocessed into __Dir() function during compile
* time. </par>
* time.
*
* __Dir() is a compatibility function, it is superseded by DIRECTORY()
* which return all the information in a multidimensional array. </par>
* which return all the information in a multidimensional array.
* $EXAMPLES$
<fixed>
* __Dir() // information for all DBF files in current directory
@@ -59,12 +59,14 @@
* R
* $COMPLIANCE$
* DBF information: CA-Clipper display 8.3 file names, Harbour display
* the first 15 characters of a long file name if available. </par>
* the first 15 characters of a long file name if available.
*
* File listing: To format file names displayed we use something like:
* PadR( Name, 8 ) + " " + PadR( Ext, 3 )
* CA-Clipper use 8.3 file name, with Harbour it would probably cut
* long file names to feet this template. </par>
* long file names to feet this template.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ADIR(),DIRECTORY(),SET DEFAULT,DIR
* $END$
@@ -83,20 +85,20 @@
* <cFileMask> File mask to include in the function return. It could
* contain path and standard wildcard characters as supported by your
* OS (like * and ?). If <cFileMask> contain no path, then SET DEFAULT
* path is used to display files in the mask. </par>
* path is used to display files in the mask.
* $DESCRIPTION$
* If no <cFileMask> is given, __Dir() display information about all
* *.dbf in the SET DEFAULT path, this information contain: file name,
* number of records, last update date and the size of each file. </par>
* number of records, last update date and the size of each file.
*
* If <cFileMask> is given, __Dir() list all files that match the mask
* with the following details: Name, Extension, Size, Date. </par>
* with the following details: Name, Extension, Size, Date.
*
* DIR command is preprocessed into __Dir() function during compile
* time. </par>
* time.
*
* __Dir() is a compatibility function, it is superseded by DIRECTORY()
* which return all the information in a multidimensional array. </par>
* which return all the information in a multidimensional array.
* $EXAMPLES$
<fixed>
* DIR // information for all DBF files in current directory
@@ -114,12 +116,12 @@
* R
* $COMPLIANCE$
* DBF information: CA-Clipper display 8.3 file names, Harbour display
* the first 15 characters of a long file name if available. </par>
* the first 15 characters of a long file name if available.
*
* File listing: To format file names displayed we use something like:
* PadR( Name, 8 ) + " " + PadR( Ext, 3 )
* CA-Clipper use 8.3 file name, with Harbour it would probably cut
* long file names to feet this template. </par>
* long file names to feet this template.
* $SEEALSO$
* ADIR(),DIRECTORY(),SET DEFAULT,__DIR()*
* $END$
@@ -139,42 +141,42 @@
* <cFileMask> File mask to include in the function return. It could
* contain path and standard wildcard characters as supported by your
* OS (like * and ?). If you omit <cFileMask> or if <cFileMask> contain
* no path, then the path from SET DEFAULT is used. </par>
* no path, then the path from SET DEFAULT is used.
*
* <aName> Array to fill with file name of files that meet <cFileMask>.
* Each element is a Character string and include the file name and
* extension without the path. The name is the long file name as
* reported by the OS and not necessarily the 8.3 uppercase name. </par>
* reported by the OS and not necessarily the 8.3 uppercase name.
*
* <aSize> Array to fill with file size of files that meet <cFileMask>.
* Each element is a Numeric integer and include the file size in Bytes.
* Directories are always zero in size. </par>
* Directories are always zero in size.
*
* <aDate> Array to fill with file last modification date of files that
* meet <cFileMask>. Each element is of type Date. </par>
* meet <cFileMask>. Each element is of type Date.
*
* <aTime> Array to fill with file last modification time of files that
* meet <cFileMask>. Each element is a Character string in the format
* HH:mm:ss. </par>
* HH:mm:ss.
*
* <aAttr> Array to fill with attribute of files that meet <cFileMask>.
* Each element is a Character string, see DIRECTORY() for information
* about attribute values. If you pass array to <aAttr>, the function
* is going to return files with normal, hidden, system and directory
* attributes. If <aAttr> is not specified or with type other than
* Array, only files with normal attribute would return. </par>
* Array, only files with normal attribute would return.
* $RETURNS$
* ADIR() return the number of file entries that meet <cFileMask> </par>
* ADIR() return the number of file entries that meet <cFileMask>
* $DESCRIPTION$
* ADIR() return the number of files and/or directories that match
* a specified skeleton, it also fill a series of given arrays with
* the name, size, date, time and attribute of those files. The passed
* arrays should pre-initialized to the proper size, see example below.
* In order to include hidden, system or directories <aAttr> must be
* specified. </par>
* specified.
*
* ADIR() is a compatibility function, it is superseded by DIRECTORY()
* which return all the information in a multidimensional array. </par>
* which return all the information in a multidimensional array.
* $EXAMPLES$
<fixed>
* LOCAL aName, aSize, aDate, aTime, aAttr, nLen, i
@@ -196,7 +198,9 @@
* R
* $COMPLIANCE$
* <aName> is going to be fill with long file name and not necessarily
* the 8.3 uppercase name. </par>
* the 8.3 uppercase name.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ARRAY(),DIRECTORY(),SET DEFAULT
* $END$

View File

@@ -25,31 +25,35 @@
* $ARGUMENTS$
* <nDrive> The number of the drive you are requesting info on where 1 = A,
* 2 = B, etc. For 0 or no parameter, DiskSpace will operate on the current
* drive. The default is 0 </par>
* <nType> The type of space being requested. The default is HB_DISK_AVAIL. </par>
* drive. The default is 0
* <nType> The type of space being requested. The default is HB_DISK_AVAIL.
* $RETURNS$
* <nDiskBytes> The number of bytes on the requested disk that match the
* requested type. </par>
* requested type.
* $DESCRIPTION$
* By default, this function will return the number of bytes of
* free space on the current drive that is available to the user
* requesting the information. </par>
* requesting the information.
*
* There are 4 types of information available: </par>
* There are 4 types of information available:
*
* HB_FS_AVAIL The amount of space available to the user making the
* request. This value could be less than HB_FS_FREE if
* disk quotas are supported by the O/S in use at runtime,
* and disk quotas are in effect. Otherwise, the value
* will be equal to that returned for HB_FS_FREE. </par>
* HB_FS_FREE The actual amount of free diskspace on the drive. </par>
* HB_FS_USED The number of bytes in use on the disk. </par>
* will be equal to that returned for HB_FS_FREE.
* HB_FS_FREE The actual amount of free diskspace on the drive.
* HB_FS_USED The number of bytes in use on the disk.
* HB_FS_TOTAL The total amount of space allocated for the user if
* disk quotas are in effect, otherwise, the actual size
* of the drive. </par>
* of the drive.
*
* If information is requested on a disk that is not available, a runtime
* error 2018 will be raised. </par>
* error 2018 will be raised.
* $EXAMPLES$
* ? "You can use : " +Str( DiskSpace() ) + " bytes " +;
* "Out of a total of " + Str( DiskSpace(0,HB_FS_TOTAL) )
@@ -60,7 +64,10 @@
* CA-Clipper will return an integer value which limits it's usefulness to
* drives less than 2 gigabytes. The Harbour version will return a
* floating point value with 0 decimals if the disk is > 2 gigabytes.
* <nType> is a Harbour extension. </par>
* <nType> is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* Header is Fileio.ch
* $SEEALSO$
* tests\tstdspac.prg
* $END$

View File

@@ -23,17 +23,19 @@
* $SYNTAX$
* ERRORSYS() --> NIL
* $ARGUMENTS$
* None. </par>
* None.
* $RETURNS$
* ERRORSYS() always return NIL. </par>
* ERRORSYS() always return NIL.
* $DESCRIPTION$
* ERRORSYS() is called upon startup by Harbour and install the default
* error handler. Normally you should not call this function directly,
* instead use ERRORBLOCK() to install your own error handler. </par>
* instead use ERRORBLOCK() to install your own error handler.
* $STATUS$
* R
* $COMPLIANCE$
* ERRORSYS() works exactly like CA-Clipper's ERRORSYS(). </par>
* ERRORSYS() works exactly like CA-Clipper's ERRORSYS().
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ERRORBLOCK(),Error class
* $END$

View File

@@ -27,16 +27,20 @@
* $SYNTAX$
* FOPEN( <cFile>, [<nMode>] ) --> nHandle
* $ARGUMENTS$
* <cFile> Name of file to open </par>
* <nMode> Dos file open mode </par>
* <cFile> Name of file to open
* <nMode> Dos file open mode
* $RETURNS$
* <nHandle> a DOS file handle </par>
* <nHandle> a DOS file handle
* $DESCRIPTION$
* This function opens a file expressed as <cFile> and returns a DOS
* file handle to be used with other low-level file functions.The
* value of <nMode> represents the status of the file to be opened;
* the default value is 0. The DOS file open modes are as the follows: </par>
* the default value is 0. The DOS file open modes are as the follows:
* <table>
* nMode Meaning
*
* 0 Read only
* 1 Write only
* 2 Read/write
@@ -57,9 +61,10 @@
* the function.Files handles may be in the range of 0 to 65535. The
* status of the SET DEFAULT TO and SET PATH TO commands has no effect
* on this function.Directory names and paths must be specified along
* with the file that is to be opened. </par>
* with the file that is to be opened.
* If an error has occured, see the returns values from FERROR() for
* possible reasons for the error. </par>
* possible reasons for the error.
* $EXAMPLES$
* IF (nH:=FOPEN('X.TXT',66)<0
@@ -69,7 +74,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant </par>
* This function is CA-Clipper compliant
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* FCREATE(),FERROR(),FCLOSE()
* $END$
@@ -85,11 +92,11 @@
* $SYNTAX$
* FCREATE( <cFile>, [<nAttribute>] ) --> nHandle
* $ARGUMENTS$
* <cFile> is the name of the file to create. </par>
* <cFile> is the name of the file to create.
*
* <nAttribute> Numeric code for the DOS file attribute </par>
* <nAttribute> Numeric code for the DOS file attribute
* $RETURNS$
* <nHandle> Numeric expression </par>
* <nHandle> Numeric expression
* $DESCRIPTION$
* This function creates a new file with a filename of <cFile>. The
* default value of <nAttribute> is 0 and is used to set the DOS
@@ -97,16 +104,18 @@
* The return value will be DOS file handle that is associated
* with the new file. This number will be between zero to 65,535,
* inclusive. If an error occurs, the return value of this function
* will be -1. </par>
* will be -1.
*
* If the file <cFile> already exists, the existing file will be
* truncated to a file lenght of 0 bytes. </par>
* truncated to a file lenght of 0 bytes.
* If specified, the folowing table shows the value for <nAttribute>
* and their related meaning to the file <cFile> being created by
* this Function. </par>
* this Function.
* <table>
* <nAttribute> File Attribute
*
* 0 Normal/Default,Read/Write
* 1 Read-only,Attempting to open for output returns an error
* 2 Hidden,Excluded from normal DIR search
@@ -120,7 +129,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant </par>
* This function is CA-Clipper compliant
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* FCLOSE(),FOPEN(),FWRITE(),FREAD(),FERROR()
* $END$
@@ -136,24 +147,26 @@
* $SYNTAX$
* FREAD( <nHandle>, @<cBuffer>, <nBytes> ) --> nBytes
* $ARGUMENTS$
* <nHandle> Dos file handle </par>
* <cBufferVar> Character expression passed by reference </par>
* <nBytes> Number of bytes to read. </par>
* <nHandle> Dos file handle
* <cBufferVar> Character expression passed by reference
* <nBytes> Number of bytes to read.
* $RETURNS$
* <nBytes> the number of bytes successfyly read from the file
* <nHandle> </par>
* <nHandle>
* $DESCRIPTION$
* This function reads the characters from a DOS file whose file handle
* is <nHandle> into it character memory variable expressed as <cBuffer>.
* The function returns the number of bytes successfully read into
* <cBuffer>. </par>
* <cBuffer>.
* The value of <nHandle> is obtained from either it call to the FOPEN()
* or the FCREATE() function. </par>
* or the FCREATE() function.
* The <cBuffer> expression is passed by reference and must be defined
* before this function is called. It also must be at least the same
* length as <nBytes>. </par>
* length as <nBytes>.
* <nBytes> is the number of bytes to read, starting at the current DOS
* file pointer position. If this function is successful in reading
@@ -163,7 +176,7 @@
* ssive read.The return value is the number of byte successfully read
* from the file <nHandle>. If a 0 is returned, or if the number of
* bytes read matches neither the length of <cBuffer> nor the specified
* value in <nBytes> an end-of-file condition has been reached. </par>
* value in <nBytes> an end-of-file condition has been reached.
* $EXAMPLES$
* cBuffer:=SPACE(500)
* IF (nH:=FOPEN('X.TXT))>0
@@ -176,7 +189,9 @@
* R
* $COMPLIANCE$
* This function is not CA-Clipper compliant since may can read
* strings greather the 65K depending of platform. </par>
* strings greather the 65K depending of platform.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* BIN2I(),BIN2L(),BIN2W(),FERROR(),FWRITE()
* $END$
@@ -192,29 +207,31 @@
* $SYNTAX$
* FWRITE( <nHandle>, <cBuffer>, [<nBytes>] ) --> nBytesWritten
* $ARGUMENTS$
* <nHandle> DOS file handle number. </par>
* <cBuffer> Character expression to be written. </par>
* <nBytes> The number of bytes to write. </par>
* <nHandle> DOS file handle number.
* <cBuffer> Character expression to be written.
* <nBytes> The number of bytes to write.
* $RETURNS$
* <nBytesWritten> the number of bytes successfully written. </par>
* <nBytesWritten> the number of bytes successfully written.
* $DESCRIPTION$
* This function writes the contents of <cBuffer> to the file designated
* by its file handle <nHandle>. If used, <nBytes> is the number of
* bytes in <cBuffer> to write. </par>
* bytes in <cBuffer> to write.
* The returned value is the number of bytes successfully written to the
* DOS file. If the returned value is 0, an error has occurred (unless
* this is intended). A successful write occurs when the number returned
* by FWRITE() is equal to either LEN( <cBuffer>) or <nBytes>. </par>
* by FWRITE() is equal to either LEN( <cBuffer>) or <nBytes>.
* The value of <cBuffer> is the string or variable to be written to the
* open DOS file <nHandle>. </par>
* open DOS file <nHandle>.
* The value of <nBytes> is the number of bytes to write out to the file.
* The disk write begins with the current file position in <nHandle>. If
* this variable is not used, the entire contents of <cBuffer> is written
* to the file. </par>
* To truncate a file. a call of FWRITE( nHandle, "", 0 ) is needed. </par>
* to the file.
* To truncate a file. a call of FWRITE( nHandle, "", 0 ) is needed.
* $EXAMPLES$
* nHandle:=FCREATE('x.txt')
* FOR X:=1 to 10
@@ -226,7 +243,9 @@
* R
* $COMPLIANCE$
* This function is not CA-Clipper compatile since
* it can writes strings greather the 64K </par>
* it can writes strings greather the 64K
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* FCLOSE(),FCREATE(),FERROR(),FOPEN(),I2BIN(),L2BIN()
* $END$
@@ -243,12 +262,13 @@
* FERROR() --> <nErrorCode>
* $RETURNS$
* <nErrorCode> Value of the DOS error last encountered by a
* low-level file function. </par>
* low-level file function.
*
* FERROR() Return Values </par>
* FERROR() Return Values
*
* Error Meaning </par>
* <table>
* Error Meaning
*
* 0 Successful
* 2 File not found
* 3 Path not found
@@ -270,7 +290,7 @@
* a value that provides additional informationon the status of
* the last low-level file functions's performance.If the FERROR()
* function returns a 0, no error was detected.Below is a table
* of possibles values returned by the FERROR() function. </par>
* of possibles values returned by the FERROR() function.
* $EXAMPLES$
* #include "Fileio.ch"
* //
@@ -282,7 +302,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible </par>
* This function is CA-Clipper compatible
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* FCLOSE(),FERASE(),FOPEN(),FWRITE()
* $END$
@@ -298,14 +320,14 @@
* $SYNTAX$
* FCLOSE( <nHandle> ) --> <lSuccess>
* $ARGUMENTS$
* <nHandle> DOS file handle </par>
* <nHandle> DOS file handle
* $RETURNS$
* <lSuccess> Logical TRUE (.T.) or FALSE (.F.) </par>
* <lSuccess> Logical TRUE (.T.) or FALSE (.F.)
* $DESCRIPTION$
* This function closes an open file with a dos file handle
* of <nHandle> and writes the associated DOS buffer to the
* disk. The <nHandle> value is derived from the FCREATE()
* or FOPEN() function. </par>
* or FOPEN() function.
* $EXAMPLES$
* nHandle:=FOPEN('x.txt')
* ? FSEEK(nHandle0,2)
@@ -314,7 +336,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant </par>
* This function is CA-Clipper compliant
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* FOPEN(),FCREATE(),FREAD(),FWRITE(),FERROR()
* $END$
@@ -330,23 +354,23 @@
* $SYNTAX$
* FERASE( <cFile> ) --> nSuccess
* $ARGUMENTS$
* <cFile> Name of file to erase. </par>
* <cFile> Name of file to erase.
* $RETURNS$
* <nSuccess> 0 if successful, -1 if not </par>
* <nSuccess> 0 if successful, -1 if not
* $DESCRIPTION$
* This function deletes the file specified in <cFile> from the disk.
* No extensions are assumed. The drive and path my be included in
* <cFile>; neither the SET DEFAULT not the SET PATH command controls
* the performance of this function.If the drive or path is not used,
* the function will look for the file only on the currently selected
* direcytory on the logged drive. </par>
* direcytory on the logged drive.
*
* If the function is able to successfully delete the file from the
* disk, the value of the function will be 0; otherwise a -1 will
* be returned.If not successfu, aditional information may be
* obtained by calling the FERROR() function. </par>
* obtained by calling the FERROR() function.
*
* Note: Any file to be removed by FERASE() must still be closed. </par>
* Note: Any file to be removed by FERASE() must still be closed.
*
* $EXAMPLES$
* IF (FERASE("TEST.TXT")==0)
@@ -358,7 +382,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper Compatible </par>
* This function is CA-Clipper Compatible
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* FERROR(),FRENAME()
* $END$
@@ -374,32 +400,33 @@
* $SYNTAX$
* FRENAME( <cOldFile>, <cNewFile> ) --> nSuccess
* $ARGUMENTS$
* <cOldFile> Old filenarne to he changed </par>
* <cNewFile> New filename </par>
* <cOldFile> Old filenarne to he changed
* <cNewFile> New filename
* $RETURNS$
* <nSuccess> If sucessful, a 0 will he returned otherwise,
* a -1 will be returned. </par>
* a -1 will be returned.
* $DESCRIPTION$
* This function renames the specified file <cOldFile> to <cNewFile>.
* A filename and/or directory name may be specified for either para-
* meter. However, if a path is supplied as part of <cNewFile> and
* this path is different from either the path specified in <cOldFile>
* or (if none is used) the current drive and directory, the function
* will not execute successfully. </par>
* will not execute successfully.
* Neither parameter is subject to the control of the SET PATH TO or
* SET DEFAULT TO commands. In attempting to locate the file to be
* renamed, this function will search the default drive and directory
* or the drive and path specified in <cOldFile>. It will not search
* directories named by the SET PATH TO and SET DEFAULT TO commands
* or by the DOS PATH statement. </par>
* or by the DOS PATH statement.
* If the file specified in <cNewFile> exists or the file is open,
* the function will be unable to rename the file.If the function
* is unable to complete its operation,it will return a value of -1.
* If it is able to rename the file, the return value for the function
* will be 0.A call to FERROR() function will give additional infor-
* mation about any error found. </par>
* mation about any error found.
* $EXAMPLES$
* nResult:=FRENAME("x.txt","x1.txt")
* IF nResult <0
@@ -409,7 +436,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant </par>
* This function is CA-Clipper compliant
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ERASE,FERASE(),FERROR(),FILE(),RENAME
* $END$
@@ -425,35 +454,39 @@
* $SYNTAX$
* FSEEK( <nHandle>, <nOffset>, [<nOrigin>] ) --> nPosition
* $ARGUMENTS$
* <nHandle> DOS file handle. </par>
* <nOffset> The number of bytes to move. </par>
* <nOrigin> The relative position in the file. </par>
* <nHandle> DOS file handle.
* <nOffset> The number of bytes to move.
* <nOrigin> The relative position in the file.
* $RETURNS$
* <nPosition> the current position relative to begin-of-file </par>
* <nPosition> the current position relative to begin-of-file
* $DESCRIPTION$
* This function sets the file pointer in the file whose DOS file
* handle is <nHandle> and moves the file pointer by <expN2> bytes
* from the file position designated by <nOrigin>. The returned value
* is the relative position of the file pointer to the beginning-of-file
* marker once the operation has been completed. </par>
* marker once the operation has been completed.
* <nHandle> is the file handle number. It is obtained from the FOPEN()
* or FCREATE() function. </par>
* or FCREATE() function.
* The value of <nOffSet> is the number of bytes to move the file pointer
* from the position determined by <nOrigin>.The value of <nOffset> may
* be a negative number, suggesting backward movement. </par>
* be a negative number, suggesting backward movement.
* The value of <nOrigin> designates the starting point from which the
* file pointer should he moved, as shown in the following table: </par>
* file pointer should he moved, as shown in the following table:
* <table>
* <nOrigin> File position
*
* 0 Beginning of file
* 1 Current file pointer position
* 2 End of file
* </table>
* If a value is not provided for <nOrigin>, it defaults to 0 and
* moves the file pointer from the beginning of the file. </par>
* moves the file pointer from the beginning of the file.
* $EXAMPLES$
* // here is a function that read one text line from an open file
*
@@ -479,11 +512,12 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant. </par>
* This function is CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* Header is Fileio.ch
* $SEEALSO$
* FCREATE(),FERROR(),FOPEN(),FREAD(),FREADSTR(),FWRITE()
* $INCLUDE$
* Fileio.ch
* $END$
*/
@@ -497,20 +531,20 @@
* $SYNTAX$
* FILE( <cFileSpec> ) --> lExists
* $ARGUMENTS$
* <cFileSpec> Dos Skeleton or file name to find. </par>
* <cFileSpec> Dos Skeleton or file name to find.
* $RETURNS$
* <lExists> a logical true (.T.) if the file exists or logical
* false (.F.). </par>
* false (.F.).
* $DESCRIPTION$
* This function return a logical true (.T.) if the given filename
* <cFileSpec> exist. </par>
* <cFileSpec> exist.
* Dos skeletons symbols may be used in the filename in <cFileSpec>,
* as may the drive and/or path name. If a drive are not explicity
* specified,FILE() will first search the current drive and directory,
* and will look for the file in the directories specified by SET PATH
* TO and SET DEFAULT TO commands.However, this command does not look
* at the values in the DOS PATH command. </par>
* at the values in the DOS PATH command.
* $EXAMPLES$
* ? file('c:\harbour\doc\compiler.txt")
* ? file('c:/harbour/doc/subcodes.txt")
@@ -518,7 +552,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible. </par>
* This function is CA-Clipper compatible.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* SET PATH,SET DEFAULT,SET()
* $END$
@@ -534,29 +570,29 @@
* $SYNTAX$
* FREADSTR(<nHandle>, <nBytes>) --> cString
* $ARGUMENTS$
* <nHandle> DOS file handle number. </par>
* <nHandle> DOS file handle number.
*
* <nBytes> Number of bytes to read. </par>
* <nBytes> Number of bytes to read.
* $RETURNS$
* <cString> an characted expression </par>
* <cString> an characted expression
* $DESCRIPTION$
* This function returns a character string of <nBytes> bytes from a
* file whose DOS file handle is <nHandle>. </par>
* file whose DOS file handle is <nHandle>.
* The value of the file handle <nHandle> is obtained from either the
* FOPEN() or FCREATE() functions. </par>
* FOPEN() or FCREATE() functions.
* The value of <nBytes> is the number of bytes to read from the file.
* The returned string will be the number of characters specified in
* <nBytes> or the number of bytes read before an end-of-file charac-
* ter (ASCII 26) is found. </par>
* ter (ASCII 26) is found.
* NOTE This function is similar to the FREAD() function, except that
* it will not read binary characters that may he required as part of
* a header of a file construct. Characters Such as CHR(0) and CHR(26)
* may keep this function from performing its intended operation. In this
* event, the FREAD() function should he used in place of the FREADSTR()
* function. </par>
* function.
* $EXAMPLES$
* IF ( nH := FOPEN("x.txt") ) > 0
* cStr := Freadstr(nH,100)
@@ -568,7 +604,9 @@
* R
* $COMPLIANCE$
* This function is not CA-Clipper compliant since may read
* strings greather the 65K depending of platform. </par>
* strings greather the 65K depending of platform.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* BIN2I(),BIN2L(),BIN2W(),FERROR(),FREAD(),FSEEK()
* $END$
@@ -584,26 +622,29 @@
* $ONELINER$
* Changes the name of a specified file
* $SYNTAX$
* RENAME <cOldFile> TO <cNewFile> </par>
* RENAME <cOldFile> TO <cNewFile>
* $ARGUMENTS$
* <cOldFile> Old filename </par>
* <cNewFile> New Filename </par>
* <cOldFile> Old filename
* <cNewFile> New Filename
* $DESCRIPTION$
* This command changes the name of <cOldFile> to <cNewFile>.Both
* <cOldFile> and <cNewFile> must include a file extension.This command
* if not affected by the SET PATH TO or SET DEFAULT TO commands;drive
* and directoy designaters must be specified if either file is in a
* directory other then the default drive and directory. </par>
* directory other then the default drive and directory.
*
* If <cNewFile> id currently open or if it previously exists, this
* command will not perform the desired operation. </par>
* command will not perform the desired operation.
* $EXAMPLES$
* RENAME c:\autoexec.bat to c:\autoexec.old
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This command is CA-Clipper compatible </par>
* This command is CA-Clipper compatible
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* CURDIR(),ERASE,FILE(),FERASE(),FRENAME()
* $END$
@@ -619,15 +660,15 @@
* $SYNTAX$
* ERASE <xcFile>
* $ARGUMENTS$
* <xcFile> Name of file to remove </par>
* <xcFile> Name of file to remove
* $DESCRIPTION$
* This command removes a file from the disk.The use of a drive,directo-
* ry,and wild-card skeleton operator is allowed for the root of the
* filename.The file extension is required.The SET DEFAULT and SET PATH
* commands do not affect this command. </par>
* commands do not affect this command.
* The file must be considered closed by the operating system before it
* may be deleted. </par>
* may be deleted.
* $EXAMPLES$
* Erase c:\autoexec.bat
* Erase c:/temp/read.txt
@@ -635,7 +676,7 @@
* $STATUS$
* R
* $COMPLIANCE$
* This command is CA-Clipper compatible </par>
* This command is CA-Clipper compatible
* $SEEALSO$
* CURDIR(),FILE(),FERASE(),DELETE FILE
* $END$
@@ -651,15 +692,15 @@
* $SYNTAX$
* DELETE FILE <xcFile>
* $ARGUMENTS$
* <xcFile> Name of file to remove </par>
* <xcFile> Name of file to remove
* $DESCRIPTION$
* This command removes a file from the disk.The use of a drive,directo-
* ry,and wild-card skeleton operator is allowed for the root of the
* filename.The file extension is required.The SET DEFAULT and SET PATH
* commands do not affect this command. </par>
* commands do not affect this command.
* The file must be considered closed by the operating system before it
* may be deleted. </par>
* may be deleted.
* $EXAMPLES$
* Erase c:\autoexec.bat
* Erase c:/temp/read.txt
@@ -667,7 +708,7 @@
* $STATUS$
* R
* $COMPLIANCE$
* This command is CA-Clipper compatible </par>
* This command is CA-Clipper compatible
* $SEEALSO$
* CURDIR(),FILE(),FERASE(),ERASE
* $END$
@@ -684,27 +725,27 @@
* __TYPEFILE( <cFile>, [<lPrint>] ) --> NIL
* $ARGUMENTS$
* <cFile> is a name of the file to display. If the file have an
* extension, it must be specified (there is no default value). </par>
* extension, it must be specified (there is no default value).
*
* <lPrint> is an optional logical value that specifies whether the
* output should go only to the screen (.F.) or to both the screen and
* printer (.T.), the default is (.F.). </par>
* printer (.T.), the default is (.F.).
* $RETURNS$
* __TYPEFILE() always return NIL. </par>
* __TYPEFILE() always return NIL.
* $DESCRIPTION$
* __TYPEFILE() function type the content of a text file on the screen
* with an option to send this information also to the printer. The
* file is displayed as is without any headings or formating. </par>
* file is displayed as is without any headings or formating.
*
* If <cFile> contain no path, __TYPEFILE() try to find the file first
* in the SET DEFAULT directory and then in search all of the SET PATH
* directories. If <cFile> can not be found a run-time error occur. </par>
* directories. If <cFile> can not be found a run-time error occur.
*
* Use SET CONSOLE OFF to suppress screen output. </par>
* You can pause the output using Ctrl-S, press any key to resume. </par>
* Use SET CONSOLE OFF to suppress screen output.
* You can pause the output using Ctrl-S, press any key to resume.
*
* __TYPEFILE() function is used in the preprocessing of the TYPE
* command. </par>
* command.
* $EXAMPLES$
* The following examples assume a file name MyText.DAT exist in all
* specified paths, a run-time error would displayed if it does not
@@ -723,7 +764,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __TYPEFILE() works exactly like CA-Clipper's __TYPEFILE() </par>
* __TYPEFILE() works exactly like CA-Clipper's __TYPEFILE()
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* COPY FILE,SET DEFAULT,SET PATH,SET PRINTER,TYPE
* $END$
@@ -742,30 +785,30 @@
* <xcFile> is a name of the file to display. If the file have an
* extension, it must be specified (there is no default value).
* It can be specified as literal file name or as a character
* expression enclosed in parentheses. </par>
* expression enclosed in parentheses.
*
* TO PRINTER is an optional keyword that specifies that the output
* should go to both the screen and printer. </par>
* should go to both the screen and printer.
*
* TO FILE <xcDestFile> copy the source <xcFile> also to a file. If no
* extension is given (.txt) is added to the output file name.
* <xcDestFile> can be specified as literal file name or as a character
* expression enclosed in parentheses. </par>
* expression enclosed in parentheses.
* $DESCRIPTION$
* TYPE command type the content of a text file on the screen
* with an option to send this information also to the printer or to
* an alternate file. The file is displayed as is without any headings
* or formating. </par>
* or formating.
*
* If <xcFile> contain no path, TYPE try to find the file first in the
* SET DEFAULT directory and then in search all of the SET PATH
* directories. If <xcFile> can not be found a run-time error occur. </par>
* directories. If <xcFile> can not be found a run-time error occur.
*
* If <xcDestFile> contain no path it is created in the SET DEFAULT
* directory. </par>
* directory.
*
* Use SET CONSOLE OFF to suppress screen output. </par>
* You can pause the output using Ctrl-S, press any key to resume. </par>
* Use SET CONSOLE OFF to suppress screen output.
* You can pause the output using Ctrl-S, press any key to resume.
* $EXAMPLES$
* The following examples assume a file name MyText.DAT exist in all
* specified paths, a run-time error would displayed if it does not
@@ -787,7 +830,7 @@
* $STATUS$
* R
* $COMPLIANCE$
* TYPE works exactly like CA-Clipper's TYPE </par>
* TYPE works exactly like CA-Clipper's TYPE
* $SEEALSO$
* COPY FILE,SET DEFAULT,SET PATH,SET PRINTER,__TYPEFILE()
* $END$
@@ -803,29 +846,31 @@
* $SYNTAX$
* CURDIR( [<cDrive>] ) --> cPath
* $ARGUMENTS$
* <cDir> OS drive letter </par>
* <cDir> OS drive letter
* $RETURNS$
* <cPath> Name of directory </par>
* <cPath> Name of directory
* $DESCRIPTION$
* This function yields the name of the current OS directory on a
* specified drive.If <cDrive> is not speficied,the currently logged
* drive will be used. </par>
* drive will be used.
* This function should not return the leading and trailing
* (back)slashes. </par>
* (back)slashes.
* If an error has been detected by the function,or the current OS
* directory is the root,the value of the function will be a NULL
* byte. </par>
* byte.
* $EXAMPLES$
* ? Curdir()
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This function is Ca-Clipper Compatible </par>
* This function is Ca-Clipper Compatible
* $PLATFORMS$
* ALL </par>
* ALL
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* FILE()
* $END$

View File

@@ -24,6 +24,7 @@
* oFile := TFileRead():New( <cFileName> [, <nReadSize> ] )
* $ARGUMENTS$
* <cFileName> is the required name of the file to be read. </par>
*
* <nReadSize> is the optional size to use when reading from the file.
* The default value is 4096 and the allowed range is 1 through 65535.
* Any value outside of this range causes the default value to be used. </par>
@@ -33,25 +34,35 @@
* TFileRead() is used to access a file one line at a time. You must
* specify the name of the file when an instance of the class is created. </par>
* The class data should be considered private to the class. </par>
*
* The class methods are as follows: </par>
*
* New() Creates a new instance of the TFileRead class. </par>
*
* Open([<nFlags>]) Opens the file for reading. The optional nFlags
* parameter can use any of the FOPEN() flags from
* fileio.ch. The default is FO_READ + FO_SHARED.
* Calling this method when the file is already
* open causes the next ReadLine() to start over
* from the beginning of the file. </par>
* Close() Closes the file. </par>
*
* ReadLine() Returns one line from the file, stripping the
* newline characters. The following sequences are
* treated as one newline: 1) CR CR LF; 2) CR LF;
* 3) LF; and 4) CR. Note: LF CR is 2 newlines. </par>
* Name() Returns the name of the file. </par>
*
* IsOpen() Returns .T. if the file is open. </par>
*
* MoreToRead() Returns .T. if there are more lines to be read
* (think of it as an inverse EOF function).
*
* Error() Returns .T. if an error has occurred. </par>
*
* ErrorNo() Returns the current error code. </par>
*
* ErrorMsg([<cPre>]) Returns a formatted error message. </par>
* $EXAMPLES$
* #ifdef __HARBOUR__
@@ -83,6 +94,8 @@
* R
* $COMPLIANCE$
* This is a new Harbour Tools class </par>
* $FILES$
* Library is Tools.lib
* $SEEALSO$
* TClass()
* $END$

View File

@@ -23,15 +23,15 @@
* $SYNTAX$
* ISBIN(<cN>) -><cNr>
* $ARGUMENTS$
* <cN> STRING TO BE CHECKED </par>
* <cN> STRING TO BE CHECKED
* $RETURNS$
* <cNr> .T. IF THE STRING IS BYNARY,otherwise .F. </par>
* <cNr> .T. IF THE STRING IS BYNARY,otherwise .F.
* $DESCRIPTION$
* check if the passed string is a bynary number or not </par>
* check if the passed string is a bynary number or not
* $SEEALSO$
* ISOCTAL(),ISDEC(),ISHEXA()
* $INCLUDE$
*
* $Files$
* Library is Tools.lib
* $END$
*/
@@ -45,15 +45,15 @@
* $SYNTAX$
* ISOCTAL(<cN>) -><cNr>
* $ARGUMENTS$
* <cN> STRING TO BE CHECKED </par>
* <cN> STRING TO BE CHECKED
* $RETURNS$
* <cNr> .T. IF THE STRING IS OCTAL;otherwise .F. </par>
* <cNr> .T. IF THE STRING IS OCTAL;otherwise .F.
* $DESCRIPTION$
* check if the passed string is a octal number or not </par>
* check if the passed string is a octal number or not
* $SEEALSO$
* ISBIN(),ISDEC(),ISHEXA()
* $INCLUDE$
*
* $Files$
* Library is Tools.lib
* $END$
*/
@@ -67,15 +67,15 @@
* $SYNTAX$
* ISDEC(<cN>) -><cNr>
* $ARGUMENTS$
* <cN> STRING TO BE CHECKED </par>
* <cN> STRING TO BE CHECKED
* $RETURNS$
* <cNr> .T. IF THE STRING IS DECIMAL;otherwise .F. </par>
* <cNr> .T. IF THE STRING IS DECIMAL;otherwise .F.
* $DESCRIPTION$
* check if the passed string is a decimal number or not </par>
* check if the passed string is a decimal number or not
* $SEEALSO$
* ISOCTAL(),ISBIN(),ISHEXA()
* $INCLUDE$
*
* $Files$
* Library is Tools.lib
* $END$
*/
@@ -89,15 +89,15 @@
* $SYNTAX$
* ISHEXA(<cN>) -><cNr>
* $ARGUMENTS$
* <cN> STRING TO BE CHECKED </par>
* <cN> STRING TO BE CHECKED
* $RETURNS$
* <cNr> .T. IF THE STRING IS HEXA;otherwise .F. </par>
* <cNr> .T. IF THE STRING IS HEXA;otherwise .F.
* $DESCRIPTION$
* check if the passed string is a hexa number or not </par>
* check if the passed string is a hexa number or not
* $SEEALSO$
* ISOCTAL(),ISDEC(),ISBIN()
* $INCLUDE$
*
* $Files$
* Library is Tools.lib
* $END$
*/
@@ -111,16 +111,16 @@
* $SYNTAX$
* DECTOBIN(<cN>) -><cNr>
* $ARGUMENTS$
* <cN> NUMBER TO BE CONVERTED </par>
* <cN> NUMBER TO BE CONVERTED
* $RETURNS$
* <cNr> NUMBER CONVERTED </par>
* <cNr> NUMBER CONVERTED
* $DESCRIPTION$
* This function converts a string <cN> from an decimal value
* to an binary value. </par>
* to an binary value.
* $SEEALSO$
* Dectohexa(),dectooctal()
* $INCLUDE$
*
* $Files$
* Library is Tools.lib
* $END$
*/
@@ -134,16 +134,16 @@
* $SYNTAX$
* DECTOOCTAL(<cN>) -><cNr>
* $ARGUMENTS$
* <cN> NUMBER TO BE CONVERTED </par>
* <cN> NUMBER TO BE CONVERTED
* $RETURNS$
* <cNr> NUMBER CONVERTED </par>
* <cNr> NUMBER CONVERTED
* $DESCRIPTION$
* This function converts a string <cN> from an decimal value
* to an octal value. </par>
* to an octal value.
* $SEEALSO$
* Dectohexa(),dectobin()
* $INCLUDE$
*
* $Files$
* Library is Tools.lib
* $END$
*/
@@ -157,16 +157,16 @@
* $SYNTAX$
* DECTOHEXA(<cN>) -><cNr>
* $ARGUMENTS$
* <cN> NUMBER TO BE CONVERTED </par>
* <cN> NUMBER TO BE CONVERTED
* $RETURNS$
* <cNr> NUMBER CONVERTED </par>
* <cNr> NUMBER CONVERTED
* $DESCRIPTION$
* This function converts a string <cN> from an decimal value
* to an hexadecimal value. </par>
* to an hexadecimal value.
* $SEEALSO$
* Dectobin(),dectooctal()
* $INCLUDE$
*
* $Files$
* Library is Tools.lib
* $END$
*/
@@ -180,16 +180,16 @@
* $SYNTAX$
* BIntODEC(<cN>) -><cNr>
* $ARGUMENTS$
* <cN> NUMBER TO BE CONVERTED </par>
* <cN> NUMBER TO BE CONVERTED
* $RETURNS$
* <cNr> NUMBER CONVERTED </par>
* <cNr> NUMBER CONVERTED
* $DESCRIPTION$
* This function converts a string <cN> from an binary value
* to a numeric decimal value. </par>
* to a numeric decimal value.
* $SEEALSO$
* OctaltoDec(),HexatoDec()
* $INCLUDE$
*
* $Files$
* Library is Tools.lib
* $END$
*/
@@ -203,16 +203,16 @@
* $SYNTAX$
* OCTALTODEC(<cN>) -><cNr>
* $ARGUMENTS$
* <cN> NUMBER TO BE CONVERTED </par>
* <cN> NUMBER TO BE CONVERTED
* $RETURNS$
* <cNr> NUMBER CONVERTED </par>
* <cNr> NUMBER CONVERTED
* $DESCRIPTION$
* This function converts a string <cN> from an octal value
* to a numeric decimal value. </par>
* to a numeric decimal value.
* $SEEALSO$
* BintoDec(),HexatoDec()
* $INCLUDE$
*
* $Files$
* Library is Tools.lib
* $END$
*/
@@ -226,16 +226,16 @@
* $SYNTAX$
* HEXATODEC(<cN>) -><cNr>
* $ARGUMENTS$
* <cN> NUMBER TO BE CONVERTED </par>
* <cN> NUMBER TO BE CONVERTED
* $RETURNS$
* <cNr> NUMBER CONVERTED </par>
* <cNr> NUMBER CONVERTED
* $DESCRIPTION$
* This function converts a string <cN> from an hexadecimal value
* to a numeric decimal value. </par>
* to a numeric decimal value.
* $SEEALSO$
* OctaltoDec(),BintoDec()
* $INCLUDE$
*
* $Files$
* Library is Tools.lib
* $END$
*/

View File

@@ -25,16 +25,20 @@
* $SYNTAX$
* FIELDTYPE(<nFieldNum>) --> cFieldType
* $ARGUMENTS$
* <nFieldNum> Data field , which type need to be determined. </par>
* <nFieldNum> Data field , which type need to be determined.
* $RETURNS$
* FIELDTYPE() returns the character that designates the type of a given field: </par>
* 'C' - character string; </par>
* 'N' - numeric; </par>
* 'L' - logical; </par>
* 'D' - date; </par>
* 'M' - memo. </par>
* FIELDTYPE() returns the character that designates the type of
* a given field:</par>
* <table>
* 'C' character string;
* 'N' numeric;
* 'L' logical;
* 'D' date;
* 'M' memo.
* </table>
* $DESCRIPTION$
* This function determines the type of a field, designated by its number. </par>
* This function determines the type of a field, designated by its
* number.
* $EXAMPLES$
* FUNCTION Main()
* LOCAL i
@@ -48,9 +52,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-CLIPPER TOOLS compatible </par>
* This function is CA-CLIPPER TOOLS compatible
* $FILES$
* Library is Tools.lib
* $SEEALSO$
* FIELDSIZE(),FIELDDECI()
* FIELDSIZE(),FIELDDECI()
* $END$
*/
@@ -64,11 +70,12 @@
* $SYNTAX$
* FIELDSIZE(<nFieldNum>) --> nFieldSize
* $ARGUMENTS$
* <nFieldNum> Data field , which size need to be determined. </par>
* <nFieldNum> Data field , which size need to be determined.
* $RETURNS$
* FIELDSIZE() returns the number that designates the size of a given field. </par>
* FIELDSIZE() returns the number that designates the size of a given
* field.
* $DESCRIPTION$
* This function determines the size of a field, designated by its number. </par>
* This function determines the size of a field, designated by its number.
* $EXAMPLES$
* FUNCTION Main()
* LOCAL i
@@ -82,9 +89,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-CLIPPER TOOLS compatible </par>
* This function is CA-CLIPPER TOOLS compatible
* $FILES$
* Library is Tools.lib
* $SEEALSO$
* FIELDTYPE(),FIELDDECI()
* FIELDTYPE(),FIELDDECI()
* $END$
*/
@@ -99,12 +108,12 @@
* FIELDDECI(<nFieldNum>) --> nFieldDeci
* $ARGUMENTS$
* <nFieldNum> Numeric data field , for which number of decimal
* places need to be determined. </par>
* places need to be determined.
* $RETURNS$
* FIELDDECI() returns the numeric value that designates the number
* of decimal places of a given field. </par>
* of decimal places of a given field.
* $DESCRIPTION$
* This function determines the number of decimal places of a given numeric field. </par>
* This function determines the number of decimal places of a given numeric field.
* $EXAMPLES$
* FUNCTION Main()
* LOCAL i
@@ -118,8 +127,10 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-CLIPPER TOOLS compatible </par>
* This function is CA-CLIPPER TOOLS compatible
* $FILES$
* Library is Tools.lib
* $SEEALSO$
* FIELDTYPE(),FIELDSIZE()
* FIELDTYPE(),FIELDSIZE()
* $END$
*/

View File

@@ -23,10 +23,10 @@
* ELSE
* RETURN(.F.)
* ENDIF
* $FILES$
* Header is Fileio.ch
* $SEEALSO$
* MD(),RD()
* $INCLUDE$
* extend.h dos.h dir.h bios.h
* $END$
*/
@@ -51,6 +51,8 @@
* ELSE
* RETURN(.F.)
* ENDIF
* $FILES$
* Header is Fileio.ch
* $SEEALSO$
* CD(),MD()
* $END$
@@ -77,6 +79,8 @@
* ELSE
* RETURN(.F.)
* ENDIF
* $FILES$
* Header is Fileio.ch
* $SEEALSO$
* CD(),MD()
* $END$

View File

@@ -42,6 +42,8 @@
* I process contain embedded NULs.
* $EXAMPLES$
* ? gt_ascpos("the cat sat on the mat", 3) // prints e
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -63,6 +65,8 @@
* Sum the ascii value of every character in the passed string
* and return the result.
* $EXAMPLES$
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -92,7 +96,8 @@
* $EXAMPLES$
* ? gt_atDiff("the cat", "the rat") // prints 5
* ? gt_atDiff("the cat", "the ") // prints 0
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -119,7 +124,8 @@
* $EXAMPLES$
*
* ? gt_CharEven("abcdefghijklm") // prints "bdfhjl"
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -150,7 +156,8 @@
* ? gt_CharMix("abc", "123") // prints "a1b2c3"
* ? gt_CharMix("abcde", "123") // prints "a1b2c3de"
* ? gt_CharMix("abc", "12345") // prints "a1b2c345"
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -177,7 +184,8 @@
* $EXAMPLES$
*
* ? gt_CharOdd("abcdefghijklm") // prints "acegikm"
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -205,7 +213,8 @@
* $EXAMPLES$
*
* ? GT_ChrCount("t", "the cat sat on the mat") // prints 4
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -232,7 +241,8 @@
*
* ? chr(GT_ChrFirst("sa ", "This is a test")) // prints "s"
* ? chr(GT_ChrFirst("et", "This is a test")) // prints "t"
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -265,6 +275,8 @@
*
* ? GT_ChrTotal("tae", cStr1) // prints 10
* ? GT_ChrTotal("zqw", cStr1) // prints 0
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -296,7 +308,8 @@
* $EXAMPLES$
*
* ? GT_StrCount("the", "the cat sat on the mat") // prints 2
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -322,7 +335,8 @@
*
* ? GT_strcspn("this is a test", "as ") // prints 3
* ? GT_strcspn("this is a test", "elnjpq") // prints 11
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -353,7 +367,8 @@
* $EXAMPLES$
* ? gt_strDiff("the cat", "the rat") // prints "rat"
* ? gt_strDiff("the cat", "the ") // prints ""
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -384,7 +399,8 @@
* ? gt_strexpand("abc") // prints "a b c"
* ? gt_strexpand("abc", 2) // prints "a b c"
* ? gt_strexpand("abc", 2, 'þ') // prints "aþþbþþc"
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -415,7 +431,8 @@
* ? GT_StrLeft("this is a test", "hsit ") // prints 8
* ? GT_StrLeft("this is a test", "hit a") // prints 3
* ? GT_StrLeft("this is a test", "zxy") // prints 0
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -442,7 +459,8 @@
*
* ? GT_Strpbrk("This is a test", "sa ") // prints "s is a test"
* ? GT_Strpbrk("This is a test", "et") // prints "test"
*
* $FILES$
* Library is Tools.lib
* $END$
*/
@@ -473,7 +491,8 @@
* ? GT_StrRight("this is a test", "teas ") // prints 8
* ? GT_StrRight("this is a test", "tes h") // prints 5
* ? GT_StrRight("this is a test", "zxy") // prints 0
*
* $FILES$
* Library is Tools.lib
* $END$
*/

View File

@@ -56,6 +56,8 @@
* Done
* $COMPLIANCE$
* All platforms </par>
* $FILES$
* Library is Tools.lib
* $END$
*/

View File

@@ -50,6 +50,8 @@
* R
* $COMPLIANCE$
* PROCNAME() is fully CA-Clipper compliant. </par>
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* PROCLINE(),PROCFILE()
* $END$
@@ -86,6 +88,8 @@
* R
* $COMPLIANCE$
* PROCLINE() is fully CA-Clipper compliant. </par>
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* PROCNAME(),PROCFILE()
* $END$
@@ -121,6 +125,8 @@
* R
* $COMPLIANCE$
* PROCFILE() is fully CA-Clipper compliant. </par>
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* PROCNAME(),PROCLINE()
* $END$
@@ -156,6 +162,8 @@
* R
* $COMPLIANCE$
* HB_PVALUE() is a new function and hence not CA-Clipper compliant. </par>
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* PCOUNT()
* $END$
@@ -169,7 +177,7 @@
* $ONELINER$
* Retrieves the number of arguments passed to a function.
* $SYNTAX$
* PCOUNT() --> <nArgs> </par>
* PCOUNT() --> <nArgs>
* $ARGUMENTS$
* None </par>
* $RETURNS$
@@ -194,6 +202,8 @@
* R
* $COMPLIANCE$
* PCOUNT() is fully CA-Clipper compliant. </par>
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* HB_PVALUE()
* $END$
@@ -229,6 +239,8 @@
* R
* $COMPLIANCE$
* __QUIT() is fully CA-Clipper compliant. </par>
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* QUIT
* $END$
@@ -285,6 +297,8 @@
* R
* $COMPLIANCE$
* __SetHelpK() works exactly like CA-Clipper's __SetHelpK() </par>
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* __XHelp(),SET KEY,SETKEY()
* $END$
@@ -314,6 +328,8 @@
* R
* $COMPLIANCE$
* BREAK() is fully CA-Clipper compliant. </par>
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* BEGIN SEQUENCE
* $END$
@@ -354,6 +370,8 @@
* Old style (slower):
* DO &cFunction WITH 3
* </fixed>
* $FILES$
* Library is Rtl.lib
* $END$
*/
@@ -375,5 +393,7 @@
* The containts of a specific local variable </par>
* $DESCRIPTION$
* This function is used from the debugger </par>
* $FILES$
* Library is Vm.lib
* $END$
*/

View File

@@ -30,23 +30,28 @@
* the timeout period has elapsed. If only this parameter is specified
* and it is not numeric, it will be treated as if it were 0. But if both
* parameters are specified and this parameter is not numeric, it will be
* treated as if it were not present. </par>
* treated as if it were not present.
*
* <nEvents> is an optional mask of input events that are to be enabled. </par>
* <nEvents> is an optional mask of input events that are to be enabled.
* If omitted, defaults to hb_set.HB_SET_EVENTMASK. Valid input maks are
* in inkey.ch and are explained below. It is recommended that the mask
* names be used rather than their numeric values, in case the numeric
* values change in future releases of Harbour. To allow more than one
* type of input event, simply add the various mask names together. </par>
* INKEY_MOVE = Mouse motion events are allowed </par>
* INKEY_LDOWN = The mouse left click down event is allowed </par>
* INKEY_LUP = The mouse left click up event is allowed </par>
* INKEY_RDOWN = The mouse right click down event is allowed </par>
* INKEY_RUP = The mouse right click up event is allowed </par>
* INKEY_KEYBOARD = All keyboard events are allowed </par>
* INKEY_ALL = All mouse and keyboard events are allowed </par>
* type of input event, simply add the various mask names together.
*
* <table>
* inkey.ch Meaning
*
* INKEY_MOVE Mouse motion events are allowed
* INKEY_LDOWN The mouse left click down event is allowed
* INKEY_LUP The mouse left click up event is allowed
* INKEY_RDOWN The mouse right click down event is allowed
* INKEY_RUP The mouse right click up event is allowed
* INKEY_KEYBOARD All keyboard events are allowed
* INKEY_ALL All mouse and keyboard events are allowed
* </table>
* If the parameter is not numeric, it will be treated as if it were set
* to hb_set.HB_SET_EVENTMASK. </par>
* to hb_set.HB_SET_EVENTMASK.
* $RETURNS$
* 0 in case of timeout with no input event, otherwise returns a value
* in the range -39 to 386 for keyboard events or the range 1001 to 1007
@@ -55,7 +60,7 @@
* event return codes in the range 32 through 127 are equivalent to the
* printable ASCII character set. Keyboard event return codes in the
* range 128 through 255 are assumed to be printable, but results may
* vary based on hardware and nationality. </par>
* vary based on hardware and nationality.
* $DESCRIPTION$
* INKEY() can be used to detect input events, such as keypress, mouse
* movement, or mouse key clicks (up and/or down).
@@ -76,7 +81,9 @@
* if the first parameter is less than or equal to 0 and the second
* parameter (or the default mask) is not valid, because otherwise INKEY
* would never return, because it was, in effect, asked to wait forever
* for no events (Note: In Clipper, this also blocks SET KEY events). </par>
* for no events (Note: In Clipper, this also blocks SET KEY events).
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* inkey.ch
* $END$
@@ -96,12 +103,12 @@
* $ARGUMENTS$
* <cString> is the optional string to stuff into the Harbour keyboard
* buffer after clearing it first. Note: The character ";" is converted
* to CHR(13) (this is an undocumented CA-Clipper feature). </par>
* to CHR(13) (this is an undocumented CA-Clipper feature).
* $RETURNS$
* There is no return value </par>
* There is no return value
* $DESCRIPTION$
* Clears the Harbour keyboard typeahead buffer and then inserts an
* optional string into it. </par>
* optional string into it.
* $EXAMPLES$
* // Stuff an Enter key into the keyboard buffer
* KEYBOARD CHR(13)
@@ -116,7 +123,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __KEYBOARD() is compliant with CA-Clipper 5.3 </par>
* __KEYBOARD() is compliant with CA-Clipper 5.3
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* CLEAR TYPEAHEAD,KEYBOARD
* $END$
@@ -130,18 +139,18 @@
* $ONELINER$
* Put an inkey code to the keyboard buffer
* $SYNTAX$
* HB_keyPut( <nInkeyCode> )
* HB_KEYPUT( <nInkeyCode> )
* $ARGUMENTS$
* <nInkeyCode> is the inkey code, which should be inserted into the
* keyboard buffer. </par>
* keyboard buffer.
* $RETURNS$
* There is no return value </par>
* There is no return value
* $DESCRIPTION$
* Inserts an inkey code to the string buffer. The buffer is *not*
* cleared in this operation. This function allows to insert such
* inkey codes which are not in the range of 0 to 255. To insert more
* than one code, call the function repeatedly. The zero code cannot
* be inserted. </par>
* be inserted.
* $EXAMPLES$
* // Stuff an Alt+PgDn key into the keyboard buffer
* HB_KEYPUT( K_ALT_PGDN )
@@ -153,7 +162,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* Was not part of Clipper </par>
* Was not part of Clipper
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* KEYBOARD,CLEAR TYPEAHEAD,INKEY()
* $END$
@@ -169,12 +180,12 @@
* $SYNTAX$
* NEXTKEY() --> nKey
* $ARGUMENTS$
* None </par>
* None
* $RETURNS$
* <nKey> There is no return value </par>
* <nKey> There is no return value
* $DESCRIPTION$
* Returns the value of the next key in the Harbour keyboard buffer
* without extracting it. </par>
* without extracting it.
* $EXAMPLES$
* // Use NEXTKEY() with INKEY() to change display character or by
* // itself to exit the loop, so that the caller can detect the Esc.
@@ -197,7 +208,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* NEXTKEY() is compliant with CA-Clipper 5.3 </par>
* NEXTKEY() is compliant with CA-Clipper 5.3
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* INKEY(),LASTKEY()
* $END$
@@ -213,12 +226,12 @@
* $SYNTAX$
* LASTKEY() --> nKey
* $ARGUMENTS$
* None </par>
* None
* $RETURNS$
* <nKey> There is no return value </par>
* <nKey> There is no return value
* $DESCRIPTION$
* Returns the value of the last key exttracted from the Harbour
* keyboard buffer </par>
* keyboard buffer
* $EXAMPLES$
* // Continue looping unless the ESC key was pressed in MainFunc()
* WHILE TRUE
@@ -234,7 +247,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* LASTKEY() is compliant with CA-Clipper 5.3 </par>
* LASTKEY() is compliant with CA-Clipper 5.3
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* INKEY(),LASTKEY()
* $END$
@@ -249,18 +264,18 @@
* $ONELINER$
* Stuffs the keyboard with a string
* $SYNTAX$
* KEYBOARD <cString> </par>
* KEYBOARD <cString>
* $ARGUMENTS$
* <cString> String to be processed, one character at a time,
* by the Harbour keyboard processor </par>
* by the Harbour keyboard processor
* $DESCRIPTION$
* This command stuff the input buffer with <cString>. The
* number of character that can be stuffed into the keyboard
* buffer is controled by SET TYPEAHEAD command and may range
* from 0 to 32,622, with each character appearing in the ASCII
* range of 0 to 255. None of the extended keys may be stuffed
* in the keyboard buffer. </par>
* Issuing a KEYBOARD " " will clear the keyboard buffer. </par>
* in the keyboard buffer.
* Issuing a KEYBOARD " " will clear the keyboard buffer.
* $EXAMPLES$
* // Stuff an Enter key into the keyboard buffer
* KEYBOARD CHR(13)
@@ -274,7 +289,7 @@
* $STATUS$
* R
* $COMPLIANCE$
* __KEYBOARD() is compliant with CA-Clipper 5.3 </par>
* __KEYBOARD() is compliant with CA-Clipper 5.3
* $SEEALSO$
* CLEAR TYPEAHEAD,__KEYBOARD()
* $END$
@@ -290,39 +305,41 @@
* $SYNTAX$
* READKEY() --> nKeyCode
* $ARGUMENTS$
* none. </par>
* none.
* $RETURNS$
* READKEY() return a numeric code representing the key that cause READ
* to terminate. </par>
* to terminate.
* $DESCRIPTION$
* READKEY() is used after a READ was terminated to determine the exit
* key pressed. If the get buffer was updated during READ, 256 is added
* to the return code. </par>
*
* Exit key Return code Return code </par>
* (not updated) (updated) </par>
* -------------- ------------- ----------- </par>
* Up 4 260 </par>
* Down 5 261 </par>
* Page-Up 6 262 </par>
* Page-Down 7 263 </par>
* Ctrl Page-Up 34 290 </par>
* Ctrl Page-Down 35 291 </par>
* Esc 12 268 </par>
* Ctrl End 14 270 </par>
* Enter 15 271 </par>
*
* Key >= 32 15 271 </par>
* otherwise 0 0 </par>
* to the return code.
*
* <table>
* Exit Return code Return code
* Key (not updated) (updated)
* Up 4 260
* Down 5 261
* Page-Up 6 262
* Page-Down 7 263
* Ctrl Page-Up 34 290
* Ctrl Page-Down 35 291
* Esc 12 268
* Ctrl End 14 270
* Enter 15 271
* Key >= 32 15 271
* otherwise 0 0
* </table>
* READKEY() is a compatibility function so try not use it. READKEY()
* is superseded by LASTKEY() which return INKEY() code for that key,
* UPDATED() could be use to find if the get buffer was changed during
* READ. </par>
* READ.
* $STATUS$
* R
* $COMPLIANCE$
* READKEY() works exactly like CA-Clipper's READKEY(). </par>
* READKEY() works exactly like CA-Clipper's READKEY().
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* @...GET,INKEY(),LASTKEY(),READ,READEXIT(),UPDATED()
* $END$
@@ -338,10 +355,11 @@
* $SYNTAX$
* MRow() --> nMouseRow
* $ARGUMENTS$
* None </par>
* None
* $RETURNS$
* <nMouseRow> The mouse cursor row position </par>
* <nMouseRow> The mouse cursor row position
* $DESCRIPTION$
* This function returns the current mouse row cursor position
* $EXAMPLES$
* local nKey
* nKey = InKey( 0 )
@@ -351,9 +369,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour Specific </par>
* This function is a Harbour Specific
* $PLATFORMS$
* This function is Windows Specific </par>
* This function is Windows Specific
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* MCOL()
* $END$
@@ -369,10 +389,11 @@
* $SYNTAX$
* MCol() --> nMouseColumn
* $ARGUMENTS$
* None </par>
* None
* $RETURNS$
* <nMouseColumn> The mouse cursor column position </par>
* <nMouseColumn> The mouse cursor column position
* $DESCRIPTION$
* This function returns the current mouse col cursor position
* $EXAMPLES$
* local nKey
* nKey = InKey( 0 )
@@ -382,9 +403,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour Specific </par>
* This function is a Harbour Specific
* $PLATFORMS$
* This function is Windows Specific </par>
* This function is Windows Specific
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* MROW()
* $END$

View File

@@ -23,12 +23,12 @@
* $SYNTAX$
* ABS(<nNumber>) --> <nAbsNumber>
* $ARGUMENTS$
* <nNumber> Any number </par>
* <nNumber> Any number
* $RETURNS$
* <nAbsNumber> The absolute numeric value </par>
* <nAbsNumber> The absolute numeric value
* $DESCRIPTION$
* This function yeilds the absolute value of the numeric value or
* expression <nNumber> </par>
* expression <nNumber>
* $EXAMPLES$
* Proc Main()
*
@@ -45,11 +45,13 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant </par>
* This function is CA-Clipper compliant
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
*
* EXP()
* $END$
*/
@@ -63,21 +65,23 @@
* $SYNTAX$
* EXP( <nNumber> ) --> <nExpoent>
* $ARGUMENTS$
* <nNumber> Any real number </par>
* <nNumber> Any real number
* $RETURNS$
* <nExpoent> The expoent number of <nNumber> </par>
* <nExpoent> The expoent number of <nNumber>
* $DESCRIPTION$
* This function returns the exponential of any given real number
* <nNumber> </par>
* <nNumber>
* $EXAMPLES$
* ? EXP(632512)
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant. </par>
* This function is CA-Clipper compliant.
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* LOG()
* $END$
@@ -93,13 +97,13 @@
* $SYNTAX$
* INT( <nNumber> ) --> <nIntNumber>
* $ARGUMENTS$
* <nNumber> Any numeric value </par>
* <nNumber> Any numeric value
* $RETURNS$
* <nIntNumber> The integer portion of the numeric value </par>
* <nIntNumber> The integer portion of the numeric value
* $DESCRIPTION$
* This function convert a numeric expression to an integer. all decimals
* digit are truncated.This function does not round a value upward or
* downward;it merely truncated a numeric expression. </par>
* downward;it merely truncated a numeric expression.
* $EXAMPLES$
* SET Decimal to 5
* ? INT(632512.62541)
@@ -108,9 +112,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant. </par>
* This function is CA-Clipper compliant.
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ROUND(),STRZERO()
* $END$
@@ -126,23 +132,25 @@
* $SYNTAX$
* LOG( <nNumber> ) --> <nLog>
* $ARGUMENTS$
* <nNumber> Any numeric expression </par>
* <nNumber> Any numeric expression
* $RETURNS$
* <nExpoent> The natural logaritmh of <nNumber> </par>
* <nExpoent> The natural logaritmh of <nNumber>
* $DESCRIPTION$
* This function will return the natural logarithm of the number <nNumber>. </par>
* This function will return the natural logarithm of the number <nNumber>.
* If <nNumber> is 0 or is less them 0,a numeric overflow condition exist,
* witch is depicted on the display device as a series of asterisks. </par>
* This functions is the inverse of EXP() function. </par>
* witch is depicted on the display device as a series of asterisks.
* This functions is the inverse of EXP() function.
* $EXAMPLES$
* ? LOG(632512)
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant. </par>
* This function is CA-Clipper compliant.
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* EXP()
* $END$
@@ -159,17 +167,18 @@
* $SYNTAX$
* MAX(<xValue>,<xValue1>) --> <xMax>
* $ARGUMENTS$
* <xValue> Any date or numeric value. </par>
* <xValue1> Any date or numeric value. </par>
* <xValue> Any date or numeric value.
*
* <xValue1> Any date or numeric value.
* $RETURNS$
* <xMax> Eighter a numeric or date value </par>
* <xMax> Eighter a numeric or date value
* $DESCRIPTION$
* This function returns the larger of the two passed espressions. If
* <xValue> and <xValue1> are numeric data types,the value returned by
* this function will be a numeric data type as well and will be the
* larger of the two numbers passed to it.If <xValue> and <xValue1> are
* date data types,the return value for this function will be a date
* data type as well;it will be the latest of the two dates passed to it. </par>
* data type as well;it will be the latest of the two dates passed to it.
* $EXAMPLES$
* ? MAX(214514214,6251242142)
* ? MAX(CTOD('11/11/2000'),CTOD('21/06/2014')
@@ -177,9 +186,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is Ca-Clipper compliant </par>
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* Min()
* $END$
@@ -195,15 +206,16 @@
* $SYNTAX$
* MIN(<xValue>,<xValue1>) --> <xMin>
* $ARGUMENTS$
* <xValue> Any date or numeric value. </par>
* <xValue1> Any date or numeric value. </par>
* <xValue> Any date or numeric value.
*
* <xValue1> Any date or numeric value.
* $RETURNS$
* <xMin> Eighter a numeric or date value </par>
* <xMin> Eighter a numeric or date value
* $DESCRIPTION$
* This function returns the smaller of the two passed espressions. The
* value of this function will be the result of this comparasion.If <xValue>
* is a numeric data type,<xValue1> must so be a numeric data type.The
* same may be said if <xValue> is a date data type. </par>
* same may be said if <xValue> is a date data type.
* $EXAMPLES$
* ? MIN(214514214,6251242142)
* ? MIN(CTOD('11/11/2000'),CTOD('21/06/2014')
@@ -211,9 +223,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is Ca-Clipper compliant </par>
* This function is Ca-Clipper compliant
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* MAX()
* $END$
@@ -229,13 +243,14 @@
* $SYNTAX$
* MOD( <nNumber>,<nNumber1>) --> <nReturn>
* $ARGUMENTS$
* <nNumber> Numerator in a divisional expression </par>
* <nNumber1> Denominator in a divisional expression </par>
* <nNumber> Numerator in a divisional expression
*
* <nNumber1> Denominator in a divisional expression
* $RETURNS$
* <nReturn> Remind from the division </par>
* <nReturn> Remind from the division
* $DESCRIPTION$
* This functuion will return a value that is correspondent to the
* reminder of one number divided by another </par>
* reminder of one number divided by another
* $EXAMPLES$
* ? MOD(12,8.521)
* ? Mod(12,0)
@@ -244,9 +259,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This Function is Ca-Clipper compliant </par>
* This Function is Ca-Clipper compliant
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* %
* $END$
@@ -279,6 +296,8 @@
* This function is CA-Clipper compliant.
* $PLATFORMS$
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ROUND()
* $END$

View File

@@ -24,16 +24,18 @@
* $SYNTAX$
* MEMOTRAN( <cString>, <cHard>, <cSoft> ) --> <cConvertedString>
* $ARGUMENTS$
* <cString> is a string of chars to convert. </par>
* <cString> is a string of chars to convert.
* <cHard> is the character to replace hard carriages with. If not
* specified defaults to semicolon. </par>
* specified defaults to semicolon.
* <cSoft> is the character to replace soft carriages with. If not
* specified defaults to single space. </par>
* specified defaults to single space.
* $RETURNS$
* <cConvertedString> Trasformed string. </par>
* <cConvertedString> Trasformed string.
* $DESCRIPTION$
* Returns a string/memo with carriage chars converted to specified
* chars. </par>
* chars.
* $EXAMPLES$
* ? MEMOTRAN( DATA->CNOTES )
* </fixed>
@@ -45,7 +47,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* MEMOTRAN() is fully CA-Clipper compliant. </par>
* MEMOTRAN() is fully CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* HARDCR(),STRTRAN()
* $END$
@@ -61,12 +65,12 @@
* $SYNTAX$
* HARDCR( <cString> ) --> <cConvertedString>
* $ARGUMENTS$
* <cString> is a string of chars to convert. </par>
* <cString> is a string of chars to convert.
* $RETURNS$
* <cConvertedString> Trasformed string. </par>
* <cConvertedString> Trasformed string.
* $DESCRIPTION$
* Returns a string/memo with soft carriages chars converted to
* hard carraige char. </par>
* hard carraige char.
* $EXAMPLES$
* ? HARDCR( Data->CNOTES )
* </fixed>
@@ -78,7 +82,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* HARDCR() is fully CA-Clipper compliant. </par>
* HARDCR() is fully CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* MEMOTRAN(),STRTRAN()
* $END$

View File

@@ -23,47 +23,57 @@
* $SYNTAX$
* ACHOICE(<nTop>, <nLeft>, <nBottom>, <nRight>, <acMenuItems>, [<alSelableItems> | <lSelableItems>], [<cUserFunction> | <bUserBlock>], [<nInitialItem>], [<nWindowRow>]) --> nPosition
* $ARGUMENTS$
* <nTop> - topmost row used to display array (default 0) </par>
* <nLeft> - leftmost row used to display array (default 0) </par>
* <nBottom> - bottommost row used to display array (default MAXROW()) </par>
* <nRight> - rightmost row used to display array (default MAXCOL()) </par>
* <acMenuItems> - the character array of items from which to select </par>
* <nTop> - topmost row used to display array (default 0)
*
* <nLeft> - leftmost row used to display array (default 0)
*
* <nBottom> - bottommost row used to display array (default MAXROW())
*
* <nRight> - rightmost row used to display array (default MAXCOL())
*
* <acMenuItems> - the character array of items from which to select
*
* <alSelableItems> - an array of items, either logical or character,
* which is used to determine if a particular item
* may be selected. If the type of a given item is
* character, it is macro evaluated, and the result
* is expected to be a logical. A value of .T. means
* that the item may be selected, .F. that it may not.
* (See next argument: lSelectableItems) </par>
* (See next argument: lSelectableItems)
*
* <lSelableItems> - a logical value which is used to apply to all
* items in acMenuItems. If .T., all items may be
* selected; if .F., none may be selected.
* (See previous argument: alSelectableItems)
* Default .T. </par>
* Default .T.
*
* <cUserFunction> - the name of a function to be called which may
* affect special processing of keystrokes. It is
* specified without parentheses or parameters.
* When it is called, it will be supplied with the
* parameters: nMode, nCurElement, and nRowPos.
* Default NIL. </par>
* Default NIL.
*
* <bUserBlock> - a codeblock to be called which may
* affect special processing of keystrokes. It
* should be specified in the form
* {|nMode, nCurElemenet, nRowPos| ;
* MyFunc(nMode, nCurElemenet, nRowPos) }.
* Default NIL. </par>
* Default NIL.
*
* <nInitialItem> - the number of the element to be highlighted as
* the current item when the array is initially
* displayed. 1 origin. Default 1. </par>
* displayed. 1 origin. Default 1.
*
* <nWindowRow> - the number of the window row on which the initial
* item is to be displayed. 0 origin. Default 0. </par>
* item is to be displayed. 0 origin. Default 0.
* $RETURNS$
* <nPosition> - the number of the item to be selected, or 0 if the
* selection was aborted. </par>
* selection was aborted.
* $DESCRIPTION$
* Allows selection of an element from an array. </par>
* Allows selection of an element from an array.
* Please see standard Clipper documentation for ACHOICE for
* additional detail. </par>
* additional detail.
* $EXAMPLES$
* aItems := { "One", "Two", "Three" }
* nChoice := ACHOICE( 10, 10, 20, 20, aItems )
@@ -74,6 +84,8 @@
* ?? " which has a value of " + aItems[ nChoice ]
* ENDIF
* </fixed>
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* MENU TO
* $END$
@@ -90,19 +102,19 @@
* __AtPrompt( <nRow>, <nCol>, <cPrompt>, [<xMsg>] ) --> .F.
* $ARGUMENTS$
* <nRow> is the row number to display the menu <cPrompt>. Value could
* range from zero to MAXROW(). </par>
* range from zero to MAXROW().
*
* <nCol> is the column number to display the menu <cPrompt>. Value
* could range from zero to MAXCOL(). </par>
* could range from zero to MAXCOL().
*
* <cPrompt> is the menu item character string to display. </par>
* <cPrompt> is the menu item character string to display.
*
* <xMsg> define a message to display each time this menu item is
* highlighted. <xMsg> could be a character string or code block that
* is evaluated to a character string. If <xMsg> is not specified or
* got the wrong type, an empty string ("") would be used. </par>
* got the wrong type, an empty string ("") would be used.
* $RETURNS$
* __AtPrompt() always return .F. </par>
* __AtPrompt() always return .F.
* $DESCRIPTION$
* With __AtPrompt() you define and display a menu item, each call to
* __AtPrompt() add another item to the menu, to start the menu itself
@@ -110,10 +122,10 @@
* define any row and column combination and they will be displayed at
* the order of definition. After each call to __AtPrompt(), the cursor
* is placed one column to the right of the last text displayed, and
* ROW() and COL() are updated. </par>
* ROW() and COL() are updated.
*
* @...PROMPT command is preprocessed into __AtPrompt() function during
* compile time. </par>
* compile time.
* $EXAMPLES$
* // display a two line menu with status line at the bottom
* // let the user select favorite day
@@ -135,7 +147,9 @@
* $COMPLIANCE$
* CA-Clipper array is limited to 4096 items, and therefor 4096 menu
* items are the maximum that could be defined per one menu, Harbour
* does not have this limit (not that you'll ever need that). </par>
* does not have this limit (not that you'll ever need that).
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ACHOICE(),MENU TO,SET MESSAGE,SET INTENSITY,SET WRAP,__MENUTO()
* $END$
@@ -152,19 +166,19 @@
* @ <nRow>, <nCol> PROMPT <cPrompt> [MESSAGE <xMsg>]
* $ARGUMENTS$
* <nRow> is the row number to display the menu <cPrompt>. Value could
* range from zero to MAXROW(). </par>
* range from zero to MAXROW().
*
* <nCol> is the column number to display the menu <cPrompt>. Value
* could range from zero to MAXCOL(). </par>
* could range from zero to MAXCOL().
*
* <cPrompt> is the menu item character string to display. </par>
* <cPrompt> is the menu item character string to display.
*
* <xMsg> define a message to display each time this menu item is
* highlighted. <xMsg> could be a character string or code block that
* is evaluated to a character string. If <xMsg> is not specified or
* got the wrong type, an empty string ("") would be used. </par>
* got the wrong type, an empty string ("") would be used.
* $RETURNS$
* @...Prompt always return .F. </par>
* @...Prompt always return .F.
* $DESCRIPTION$
* With @...Prompt you define and display a menu item, each call to
* @...Prompt add another item to the menu, to start the menu itself
@@ -172,10 +186,10 @@
* define any row and column combination and they will be displayed at
* the order of definition. After each call to @...Prompt, the cursor
* is placed one column to the right of the last text displayed, and
* ROW() and COL() are updated. </par>
* ROW() and COL() are updated.
*
* @...PROMPT command is preprocessed into __AtPrompt() function during
* compile time. </par>
* compile time.
* $EXAMPLES$
* // display a two line menu with status line at the bottom
* // let the user select favorite day
@@ -197,7 +211,7 @@
* $COMPLIANCE$
* CA-Clipper array is limited to 4096 items, and therefor 4096 menu
* items are the maximum that could be defined per one menu, Harbour
* does not have this limit (not that you'll ever need that). </par>
* does not have this limit (not that you'll ever need that).
* $SEEALSO$
* ACHOICE(),MENU TO,SET MESSAGE,SET INTENSITY,SET WRAP,__MENUTO()
* $END$
@@ -213,36 +227,39 @@
* $SYNTAX$
* __MenuTo( <bBlock>, <cVariable> ) --> nChoice
* $ARGUMENTS$
* <bBlock> is a set/get code block for variable named <cVariable>. </par>
* <bBlock> is a set/get code block for variable named <cVariable>.
*
* <cVariable> is a character string that contain the name of the
* variable to hold the menu choices, if this variable does not exist
* a PRIVATE variable with the name <cVariable> would be created to
* hold the result. </par>
* hold the result.
* $RETURNS$
* __MenuTo() return the number of select menu item, or 0 if there was
* no item to select from or if the user pressed the Esc key. </par>
* no item to select from or if the user pressed the Esc key.
* $DESCRIPTION$
* __MenuTo() invoked the menu define by previous __AtPrompt() call
* and display a highlight bar that the user can move to select an
* option from the menu. If <cVariable> does not exist or not visible,
* a PRIVATE variable named <cVariable> is created and hold the current
* menu selection. If there is a variable named <cVariable>, its value
* is used to select the first highlighted item. </par>
* is used to select the first highlighted item.
*
* Menu prompts and messages are displayed in current Standard color,
* highlighted bar is displayed using current Enhanced color. </par>
* highlighted bar is displayed using current Enhanced color.
*
* Pressing the arrow keys move the highlighted bar. When a menu item
* is highlighted the message associated with it is displayed on the
* line specified with SET MESSAGE. If SET WRAP is ON and the user
* press UP arrow while on the first selection the last menu item is
* highlighted, if the user press Down arrow while on the last item,
* the first item is highlighted. </par>
* the first item is highlighted.
*
* Following are active keys that handled by __MenuTo():
* -----------------------------------------------------
*
* Following are active keys that handled by __MenuTo(): </par>
* ----------------------------------------------------- </par>
* <table>
* key Meaning
*
* Up Move to previous item
* Down Move to next item
* Left Move to previous item
@@ -257,10 +274,10 @@
* | return this item position.
* </table>
* upon exit the cursor is placed at MAXROW()-1, 0
* __MenuTo() can be nested without loosing the previous prompts. </par>
* __MenuTo() can be nested without loosing the previous prompts.
*
* MENU TO command is preprocessed into __MenuTo() function during
* compile time. </par>
* compile time.
* $EXAMPLES$
* // display menu item on each screen corner and let user select one
* CLS
@@ -281,7 +298,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This command is CA-Clipper compliant </par>
* This command is CA-Clipper compliant
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* @...PROMPT,ACHOICE(),SET MESSAGE,SET INTENSITY,SET WRAP,__ATPROMPT()
* $END$
@@ -300,31 +319,34 @@
* <cVariable> is a character string that contain the name of the
* variable to hold the menu choices, if this variable does not exist
* a PRIVATE variable with the name <cVariable> would be created to
* hold the result. </par>
* hold the result.
* $RETURNS$
* Menu To return the number of select menu item, or 0 if there was
* no item to select from or if the user pressed the Esc key. </par>
* no item to select from or if the user pressed the Esc key.
* $DESCRIPTION$
* Menu To() invoked the menu define by previous __AtPrompt() call
* and display a highlight bar that the user can move to select an
* option from the menu. If <cVariable> does not exist or not visible,
* a PRIVATE variable named <cVariable> is created and hold the current
* menu selection. If there is a variable named <cVariable>, its value
* is used to select the first highlighted item. </par>
* is used to select the first highlighted item.
*
* Menu prompts and messages are displayed in current Standard color,
* highlighted bar is displayed using current Enhanced color. </par>
* highlighted bar is displayed using current Enhanced color.
*
* Pressing the arrow keys move the highlighted bar. When a menu item
* is highlighted the message associated with it is displayed on the
* line specified with SET MESSAGE. If SET WRAP is ON and the user
* press UP arrow while on the first selection the last menu item is
* highlighted, if the user press Down arrow while on the last item,
* the first item is highlighted. </par>
* the first item is highlighted.
*
* Following are active keys that handled by Menu To:
* -----------------------------------------------------
*
* Following are active keys that handled by Menu To: </par>
* ----------------------------------------------------- </par>
* <table>
* key Meaning
*
* Up - Move to previous item
* Down - Move to next item
* Left - Move to previous item
@@ -339,10 +361,10 @@
* | return this item position.
* </table>
* upon exit the cursor is placed at MAXROW()-1, 0
* Menu To can be nested without loosing the previous prompts. </par>
* Menu To can be nested without loosing the previous prompts.
*
* MENU TO command is preprocessed into __MenuTo() function during
* compile time. </par>
* compile time.
* $EXAMPLES$
* // display menu item on each screen corner and let user select one
* CLS
@@ -363,7 +385,7 @@
* $STATUS$
* R
* $COMPLIANCE$
* This command is CA Clipper compliant </par>
* This command is CA Clipper compliant
* $SEEALSO$
* @...PROMPT,ACHOICE(),SET MESSAGE,SET INTENSITY,SET WRAP,__ATPROMPT()
* $END$

View File

@@ -30,7 +30,7 @@
* ? OS()
* </fixed>
* $FILES$
* source/rtl/environ.c </par>
* source/rtl/version.c </par>
* $END$
*/
@@ -53,28 +53,29 @@
* This function returns the HARBOUR Version or the Harbour Version+C
* compiler Version used to create the Harbour runtime library </par>
* $EXAMPLES$
* ? QOUT(VERSION()) // Displays Harbour version only
* ? QOUT(VERSION(NIL)) // Displays Harbour and C Compiler versions
* ? QOUT(VERSION()) // Displays Harbour version only
* ? QOUT(VERSION(NIL)) // Displays Harbour and C Compiler versions
* </fixed>
* $STATUS$
* S
* S
* $COMPLIANCE$
* This function is an enhanced version of the CA-Clipper VERSION function.
* The CA-Clipper version does not have a parameter and it only returns
* the Version of the CA-Clipper Compiler. The Harbour version returns
* only the Harbour Version if called without the <nMode> parameter, but
* returns both the Harbour Version and the Version of the C compiler used
* to build Harbour when the <nMode> parameter is present. </par>
* This function is an enhanced version of the CA-Clipper VERSION function.
* The CA-Clipper version does not have a parameter and it only returns
* the Version of the CA-Clipper Compiler. The Harbour version returns
* only the Harbour Version if called without the <nMode> parameter, but
* returns both the Harbour Version and the Version of the C compiler used
* to build Harbour when the <nMode> parameter is present. </par>
* $FILES$
* source/rtl/environ.c </par>
* source/rtl/version.c </par>
* Library is Rtl.lib
* $SEEALSO$
* OS()
* OS()
* $END$
*/
/* $DOC$
* $FUNCNAME$
* GETENV()
* GETENV()
* $CATEGORY$
* Environment
* $ONELINER$
@@ -83,6 +84,7 @@
* GETENV(<cEnviroment>, <cDefaultValue> ) --> <cReturn>
* $ARGUMENTS$
* <cEnviroment> Enviromental variable to obtain </par>
*
* <cDefaultValue> Optional value to return if <cEnvironment> is not found </par>
* $RETURNS$
* <cReturn> Value of the Variable </par>
@@ -101,7 +103,8 @@
* $COMPLIANCE$
* This functions is CA-CLIPPER compliant </par>
* $FILES$
* source/rtl/environ.c </par>
* source/rtl/gete.c </par>
* Library is Rtl.lib
* $END$
*/
@@ -130,7 +133,8 @@
* __Run( "command" ) // Gives a DOS shell (DOS only)
* </fixed>
* $FILES$
* source/rtl/environ.c </par>
* source/rtl/run.c </par>
* Library is Rtl.lib
* $SEEALSO$
* RUN
* $END$
@@ -148,6 +152,7 @@
* $ARGUMENTS$
* <nFrequency> is a non-negative numeric value that specifies the
* frequency of the tone in hertz. </par>
* <nDuration> is a positive numeric value which specifies the duration
* of the tone in 1/18 of a second units. </par>
* $RETURNS$
@@ -181,6 +186,8 @@
* S
* $COMPLIANCE$
* TONE() works exactly like CA-Clipper's TONE(). </par>
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* CHR(),SET BELL
* $END$

View File

@@ -42,6 +42,8 @@
* R
* $COMPLIANCE$
* ISAFFIRM() is fully CA-Clipper compliant. </par>
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ISNEGATIVE(),NATIONMSG()
* $END$
@@ -74,6 +76,8 @@
* R
* $COMPLIANCE$
* ISNEGATIVE() is fully CA-Clipper compliant. </par>
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ISAFFIRM(),NATIONMSG()
* $END$
@@ -107,6 +111,8 @@
* C
* $COMPLIANCE$
* NATIONMSG() is fully CA-Clipper compliant. </par>
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ISAFFIRM(),ISNEGATIVE()
* $END$

View File

@@ -28,15 +28,15 @@
* $SYNTAX$
* __objHasData( <oObject>, <cSymbol> ) --> lExist
* $ARGUMENTS$
* <oObject> is an object to scan. </par>
* <oObject> is an object to scan.
*
* <cSymbol> is the name of the symbol to look for. </par>
* <cSymbol> is the name of the symbol to look for.
* $RETURNS$
* __objHasData() return .T. if the given <cSymbol> exist as DATA
* (instance variable) in object <oObject), .F. if it does not exist. </par>
* (instance variable) in object <oObject), .F. if it does not exist.
* $DESCRIPTION$
* __objHasData() is a low level class support function that let you
* find out if a symbol is an instance variable in a given object. </par>
* find out if a symbol is an instance variable in a given object.
* $EXAMPLES$
* oB := TBrowseNew( 0, 0, 24, 79 )
* ? __objHasData( oB, "nLeft" ) // this should return .T.
@@ -46,7 +46,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objHasData() is a Harbour extension. </par>
* __objHasData() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __ObjGetMethodList(),__objGetMsgList(),__objHasMethod()
* $END$
@@ -62,15 +64,15 @@
* $SYNTAX$
* __objHasMethod( <oObject>, <cSymbol> ) --> lExist
* $ARGUMENTS$
* <oObject> is an object to scan. </par>
* <oObject> is an object to scan.
*
* <cSymbol> is the name of the symbol to look for. </par>
* <cSymbol> is the name of the symbol to look for.
* $RETURNS$
* __objHasMethod() return .T. if the given <cSymbol> exist as METHOD
* (class function) in object <oObject), .F. if it does not exist. </par>
* (class function) in object <oObject), .F. if it does not exist.
* $DESCRIPTION$
* __objHasMethod() is a low level class support function that let you
* find out if a symbol is a class function in a given object. </par>
* find out if a symbol is a class function in a given object.
* $EXAMPLES$
* oB := TBrowseNew( 0, 0, 24, 79 )
* ? __objHasMethod( oB, "nLeft" ) // .F. since this is a DATA
@@ -80,7 +82,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objHasMethod() is a Harbour extension. </par>
* __objHasMethod() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __ObjGetMethodList(),__objGetMsgList(),__objHasData()
* $END$
@@ -96,21 +100,21 @@
* $SYNTAX$
* __objGetMsgList( <oObject>, [<lData>] ) --> aNames
* $ARGUMENTS$
* <oObject> is an object to scan. </par>
* <oObject> is an object to scan.
*
* <lData> is an optional logical value that specifies the information
* to return. A value of .T. instruct the function to return list of
* all DATA names, .F. return list of all METHOD names. Default value
* is .T. </par>
* is .T.
* $RETURNS$
* __objGetMsgList() return an array of character stings with all DATA
* names or all METHOD names for a given object. __objGetMsgList()
* would return an empty array {} if the given object does not contain
* the requested information. </par>
* the requested information.
* $DESCRIPTION$
* __objGetMsgList() is a low level class support function that let you
* find all instance variable or class functions names for a given
* object. </par>
* object.
* $EXAMPLES$
* // show information about TBrowse class
* oB := TBrowseNew( 0, 0, 24, 79 )
@@ -126,7 +130,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objGetMsgList() is a Harbour extension. </par>
* __objGetMsgList() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __ObjGetMethodList(),__ObjGetValueList(),__objHasData(),__objHasMethod()
* $END$
@@ -142,15 +148,15 @@
* $SYNTAX$
* __objGetMethodList( <oObject> ) --> aMethodNames
* $ARGUMENTS$
* <oObject> is an object to scan. </par>
* <oObject> is an object to scan.
* $RETURNS$
* __objGetMethodList() return an array of character stings with all
* METHOD names for a given object. __objGetMethodList() would return
* an empty array {} if the given object does not contain any METHOD. </par>
* an empty array {} if the given object does not contain any METHOD.
* $DESCRIPTION$
* __objGetMethodList() is a low level class support function that let
* you find all class functions names for a given object. </par>
* It is equivalent to __objGetMsgList( oObject, .F. ). </par>
* you find all class functions names for a given object.
* It is equivalent to __objGetMsgList( oObject, .F. ).
* $EXAMPLES$
* // show information about TBrowse class
* oB := TBrowseNew( 0, 0, 24, 79 )
@@ -162,7 +168,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objGetMethodList() is a Harbour extension. </par>
* __objGetMethodList() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __objGetMsgList(),__ObjGetValueList(),__objHasData(),__objHasMethod()
* $END$
@@ -178,20 +186,20 @@
* $SYNTAX$
* __objGetValueList( <oObject>, [<aExcept>] ) --> aData
* $ARGUMENTS$
* <oObject> is an object to scan. </par>
* <oObject> is an object to scan.
*
* <aExcept> is an optional array with DATA names you want to exclude
* from the scan. </par>
* from the scan.
* $RETURNS$
* __objGetValueList() return a 2D array that contain pairs of a DATA
* symbol name and the value of DATA. __objGetValueList() would return
* an empty array {} if the given object does not contain the requested
* information. </par>
* information.
* $DESCRIPTION$
* __objGetValueList() is a low level class support function that
* return an array with DATA names and value, each array element is a
* pair of: aData[ i, HB_OO_DATA_SYMBOL ] contain the symbol name </par>
* aData[ i, HB_OO_DATA_VALUE ] contain the value of DATA </par>
* pair of: aData[ i, HB_OO_DATA_SYMBOL ] contain the symbol name
* aData[ i, HB_OO_DATA_VALUE ] contain the value of DATA
* $EXAMPLES$
* // show information about TBrowse class
* oB := TBrowseNew( 0, 0, 24, 79 )
@@ -204,9 +212,10 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objGetValueList() is a Harbour extension. </par>
* __objGetValueList() is a Harbour extension.
* $FILES$
* Header file is hboo.ch </par>
* Header file is hboo.ch
* Library is Rtl.lib
* $SEEALSO$
* __objGetMethodList(),__objGetMsgList(),__objHasData(),__objHasMethod(),__ObjSetValueList()
* $END$
@@ -222,18 +231,18 @@
* $SYNTAX$
* __ObjSetValueList( <oObject>, <aData> ) --> oObject
* $ARGUMENTS$
* <oObject> is an object to set. </par>
* <oObject> is an object to set.
*
* <aData> is a 2D array with a pair of instance variables and values
* for setting those variable. </par>
* for setting those variable.
* $RETURNS$
* __ObjSetValueList() return a reference to <oObject>. </par>
* __ObjSetValueList() return a reference to <oObject>.
* $DESCRIPTION$
* __ObjSetValueList() is a low level class support function that let
* you set a group of instance variables with values. each array
* element in <aData> is a pair of: </par>
* aData[ i, HB_OO_DATA_SYMBOL ] which contain the variable name to set </par>
* aData[ i, HB_OO_DATA_VALUE ] contain the new variable value. </par>
* element in <aData> is a pair of:
* aData[ i, HB_OO_DATA_SYMBOL ] which contain the variable name to set
* aData[ i, HB_OO_DATA_VALUE ] contain the new variable value.
* $EXAMPLES$
* // set some TBrowse instance variable
* oB := TBrowse():New()
@@ -255,9 +264,10 @@
* $STATUS$
* R
* $COMPLIANCE$
* __ObjSetValueList() is a Harbour extension. </par>
* __ObjSetValueList() is a Harbour extension.
* $FILES$
* Header file is hboo.ch </par>
* Header file is hboo.ch
* Library is Rtl.lib
* $SEEALSO$
* __ObjGetValueList()
* $END$
@@ -273,20 +283,20 @@
* $SYNTAX$
* __objAddMethod( <oObject>, <cMethodName>, <nFuncPtr> ) --> oObject
* $ARGUMENTS$
* <oObject> is the object to work on. </par>
* <oObject> is the object to work on.
*
* <cMethodName> is the symbol name of the new METHOD to add. </par>
* <cMethodName> is the symbol name of the new METHOD to add.
*
* <nFuncPtr> is a pointer to a function to associate with the method. </par>
* <nFuncPtr> is a pointer to a function to associate with the method.
* $RETURNS$
* __objAddMethod() return a reference to <oObject>. </par>
* __objAddMethod() return a reference to <oObject>.
* $DESCRIPTION$
* __objAddMethod() is a low level class support function that add a
* new METHOD to an object. <oObject> is unchanged if a symbol with the
* name <cMethodName> already exist in <oObject>. </par>
* name <cMethodName> already exist in <oObject>.
*
* Note that <nFuncPtr> is a special pointer to a function that was
* created using the @ operator, see example below. </par>
* created using the @ operator, see example below.
* $EXAMPLES$
* // create a new THappy class and add a Smile method
* oHappy := TClass():New( "THappy" )
@@ -310,7 +320,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objAddMethod() is a Harbour extension. </par>
* __objAddMethod() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __objAddInline(),__objAddData(),__objDelMethod(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod(),__objModMethod()
* $END$
@@ -326,17 +338,17 @@
* $SYNTAX$
* __objAddInline( <oObject>, <cInlineName>, <bInline> ) --> oObject
* $ARGUMENTS$
* <oObject> is the object to work on. </par>
* <oObject> is the object to work on.
*
* <cInlineName> is the symbol name of the new INLINE to add. </par>
* <cInlineName> is the symbol name of the new INLINE to add.
*
* <bInline> is a code block to associate with the INLINE method. </par>
* <bInline> is a code block to associate with the INLINE method.
* $RETURNS$
* __objAddInline() return a reference to <oObject>. </par>
* __objAddInline() return a reference to <oObject>.
* $DESCRIPTION$
* __objAddInline() is a low level class support function that add a
* new INLINE method to an object. <oObject> is unchanged if a symbol
* with the name <cInlineName> already exist in <oObject>. </par>
* with the name <cInlineName> already exist in <oObject>.
* $EXAMPLES$
* // create a new THappy class and add a Smile INLINE method
* oHappy := TClass():New( "THappy" )
@@ -349,7 +361,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objAddInline() is a Harbour extension. </par>
* __objAddInline() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __objAddData(),__objAddMethod(),__objDelInline(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod() ,__objModInline()
* $END$
@@ -365,15 +379,15 @@
* $SYNTAX$
* __objAddData( <oObject>, <cDataName> ) --> oObject
* $ARGUMENTS$
* <oObject> is the object to work on. </par>
* <oObject> is the object to work on.
*
* <cDataName> is the symbol name of the new DATA to add. </par>
* <cDataName> is the symbol name of the new DATA to add.
* $RETURNS$
* __objAddData() return a reference to <oObject>. </par>
* __objAddData() return a reference to <oObject>.
* $DESCRIPTION$
* __objAddData() is a low level class support function that add a new
* DATA to an object. <oObject> is unchanged if a symbol with the name
* <cDataName> already exist in <oObject>. </par>
* <cDataName> already exist in <oObject>.
* $EXAMPLES$
* // create a new THappy class and add a lHappy DATA
* oHappy := TClass():New( "THappy" )
@@ -388,7 +402,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objAddData() is a Harbour extension. </par>
* __objAddData() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __objAddInline(),__objAddMethod(),__objDelData(),__objGetMsgList(),__ObjGetValueList(),__objHasData(),__ObjSetValueList()
* $END$
@@ -404,22 +420,22 @@
* $SYNTAX$
* __objModMethod( <oObject>, <cMethodName>, <nFuncPtr> ) --> oObject
* $ARGUMENTS$
* <oObject> is the object to work on. </par>
* <oObject> is the object to work on.
*
* <cMethodName> is the symbol name of the METHOD to modify. </par>
* <cMethodName> is the symbol name of the METHOD to modify.
*
* <nFuncPtr> is a pointer to a new function to associate with the
* method. </par>
* method.
* $RETURNS$
* __objModMethod() return a reference to <oObject>. </par>
* __objModMethod() return a reference to <oObject>.
* $DESCRIPTION$
* __objModMethod() is a low level class support function that modify
* a METHOD in an object and replace it with a new function. <oObject>
* is unchanged if a symbol with the name <cMethodName> does not exist
* in <oObject>. __objModMethod() is used in inheritance mechanism. </par>
* in <oObject>. __objModMethod() is used in inheritance mechanism.
*
* Note that <nFuncPtr> is a special pointer to a function that was
* created using the @ operator, see example below. </par>
* created using the @ operator, see example below.
* $EXAMPLES$
* // create a new THappy class and add a Smile method
* oHappy := TClass():New( "THappy" )
@@ -454,7 +470,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objModMethod() is a Harbour extension. </par>
* __objModMethod() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __objAddMethod(),__objDelMethod(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod()
* $END$
@@ -470,19 +488,19 @@
* $SYNTAX$
* __objModInline( <oObject>, <cInlineName>, <bInline> ) --> oObject
* $ARGUMENTS$
* <oObject> is the object to work on. </par>
* <oObject> is the object to work on.
*
* <cInlineName> is the symbol name of the INLINE method to modify. </par>
* <cInlineName> is the symbol name of the INLINE method to modify.
*
* <bInline> is a new code block to associate with the INLINE method. </par>
* <bInline> is a new code block to associate with the INLINE method.
* $RETURNS$
* __objModInline() return a reference to <oObject>. </par>
* __objModInline() return a reference to <oObject>.
* $DESCRIPTION$
* __objModInline() is a low level class support function that modify
* an INLINE method in an object and replace it with a new code block.
* <oObject> is unchanged if a symbol with the name <cInlineName> does
* not exist in <oObject>. __objModInline() is used in inheritance
* mechanism. </par>
* mechanism.
* $EXAMPLES$
* // create a new THappy class and add a Smile INLINE method
* oHappy := TClass():New( "THappy" )
@@ -499,7 +517,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objModInline() is a Harbour extension. </par>
* __objModInline() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __objAddInline(),__objDelInline(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod()
* $END$
@@ -515,19 +535,19 @@
* $SYNTAX$
* __objDelMethod( <oObject>, <cSymbol> ) --> oObject
* $ARGUMENTS$
* <oObject> is the object to work on. </par>
* <oObject> is the object to work on.
*
* <cSymbol> is the symbol name of METHOD or INLINE method to be
* deleted (removed) from the object. </par>
* deleted (removed) from the object.
* $RETURNS$
* __objDelMethod() return a reference to <oObject>. </par>
* __objDelMethod() return a reference to <oObject>.
* $DESCRIPTION$
* __objDelMethod() is a low level class support function that delete
* (remove) a METHOD or an INLINE method from an object. <oObject> is
* unchanged if a symbol with the name <cSymbol> does not exist in
* <oObject>. </par>
* <oObject>.
*
* __objDelInline() is exactly the same as __objDelMethod(). </par>
* __objDelInline() is exactly the same as __objDelMethod().
* $EXAMPLES$
* // create a new THappy class and add a Smile method
* oHappy := TClass():New( "THappy" )
@@ -550,7 +570,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objDelMethod() is a Harbour extension. </par>
* __objDelMethod() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __objAddInline(),__objAddMethod(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod(),__objModInline(),__objModMethod()
* $END$
@@ -566,17 +588,17 @@
* $SYNTAX$
* __objDelInline( <oObject>, <cSymbol> ) --> oObject
* $ARGUMENTS$
* <oObject> is the object to work on. </par>
* <oObject> is the object to work on.
*
* <cSymbol> is the symbol name of METHOD or INLINE method to be
* deleted (removed) from the object. </par>
* deleted (removed) from the object.
* $RETURNS$
* __objDelInMethod() return a reference to <oObject>. </par>
* __objDelInMethod() return a reference to <oObject>.
* $DESCRIPTION$
* __objDelInMethod() is a low level class support function that delete
* (remove) a METHOD or an INLINE method from an object. <oObject> is
* unchanged if a symbol with the name <cSymbol> does not exist in
* <oObject>. </par>
* <oObject>.
* $EXAMPLES$
* // create a new THappy class and add a Smile method
* oHappy := TClass():New( "THappy" )
@@ -599,7 +621,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objDelMethod() is a Harbour extension. </par>
* __objDelMethod() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __objAddInline(),__objAddMethod(),__ObjGetMethodList(),__objGetMsgList(),__objHasMethod(),__objModInline(),__objModMethod()
* $END$
@@ -615,16 +639,16 @@
* $SYNTAX$
* __objDelMethod( <oObject>, <cDataName> ) --> oObject
* $ARGUMENTS$
* <oObject> is the object to work on. </par>
* <oObject> is the object to work on.
*
* <cDataName> is the symbol name of DATA to be deleted (removed) from
* the object. </par>
* the object.
* $RETURNS$
* __objDelData() return a reference to <oObject>. </par>
* __objDelData() return a reference to <oObject>.
* $DESCRIPTION$
* __objDelData() is a low level class support function that delete
* (remove) a DATA from an object. <oObject> is unchanged if a symbol
* with the name <cDataName> does not exist in <oObject>. </par>
* with the name <cDataName> does not exist in <oObject>.
* $EXAMPLES$
* // create a new THappy class and add a lHappy DATA
* oHappy := TClass():New( "THappy" )
@@ -637,7 +661,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __objDelData() is a Harbour extension. </par>
* __objDelData() is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __objAddData(),__objGetMsgList(),__ObjGetValueList(),__objHasData(),__ObjSetValueList()
* $END$

View File

@@ -62,7 +62,9 @@
* R
* $COMPLIANCE$
* AFIELDS() is fully CA-Clipper compliant.
* $END$
* $FILES$
* Library is Rdd.lib
* $END$
*/
/* $DOC$
@@ -96,7 +98,10 @@
* R
* $COMPLIANCE$
* ALIAS() is fully CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBF()
* $END$
*/
@@ -146,7 +151,10 @@
* S
* $COMPLIANCE$
* DBEVAL is fully CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* EVAL()
* $END$
*/
@@ -179,7 +187,10 @@
* R
* $COMPLIANCE$
* DBF() is fully CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* ALIAS()
* $END$
*/
@@ -213,6 +224,8 @@
* R
* $COMPLIANCE$
* BOF() is fully CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* EOF(),FOUND(),LASTREC()
* $END$
@@ -240,12 +253,14 @@
* with NULL bytes.The header of the database is not updated until
* the record is flushed from the buffer and the contents are
* written to the disk.
*
* Under a networking enviroment, DBAPPEND() performs an additional
* operation: It attrmps to lock the newly added record. If
* the database file is currently locked or if a locking assignment
* if made to LASTREC()+1,NETERR() will return a logical true (.T.)
* immediately after the DBAPPEND() function. This function does
* not unlock the locked records.
*
* If <lLock> is passed a logical true (.T.) value, it will
* release the record locks, which allows the application to main-
* tain multiple record locks during an appending operation. The
@@ -263,6 +278,8 @@
* R
* $COMPLIANCE$
* DBAPPEND() is fully CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBUNLOCK(0,DBUNLOCKALL()
* $END$
@@ -300,6 +317,8 @@
* R
* $COMPLIANCE$
* DBCLEARFILTER() is fully CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBSETFILTER(),DBFILTER()
* $END$
@@ -340,6 +359,8 @@
* R
* $COMPLIANCE$
* DBCLOSEALL() is fully CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBUSEAREA(),DBCLOSEAREA()
* $END$
@@ -375,6 +396,8 @@
* R
* $COMPLIANCE$
* DBCLOSEAREA() is fully CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBUSEAREA(),DBCLOSEALL()
* $END$
@@ -417,6 +440,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBCLOSEALL(),DBCOMMITALL(),DBUNLOCK()
* $END$
@@ -463,6 +488,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBCLOSEALL(),DBCOMMIT(),DBUNLOCK()
* $END$
@@ -531,6 +558,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* EOF(),FOUND()
* $END$
@@ -548,14 +577,14 @@
* [<cAlias>]) --> NIL
* $ARGUMENTS$
* <cDatabase> Name of database to be create
*
* <aStruct> Name of a multidimensional array that contains the a database
* structure
*
* <cDriver> Name of the RDD
*
* <lOpen> Toggle to Open the create File
*
* <cAlias> Name of database Alias
* $RETURNS$
* DBCREATE() always returns NIL.
@@ -609,10 +638,11 @@
* R
* $COMPLIANCE$
* This function is Not CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* Header is Dbstruct.ch
* $SEEALSO$
* AFIELDS(),DBSTRUCT()
* $INCLUDE$
* "Dbstruct.ch"
* $END$
*/
@@ -632,6 +662,7 @@
* or aliased work area.If the DELETED setting is on, the record
* will still be visible until the record pointer in that work area
* is moved to another record.
*
* In a networking situation, this function requires that the record
* be locked prior to issuing the DBDELETE() function.
* $EXAMPLES$
@@ -647,6 +678,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBRECALL()
* $END$
@@ -680,6 +713,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBRELATION(),DBRSELECT()
* $END$
@@ -713,6 +748,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* BOF(),EOF(),DBSKIP(),DBSEEK(),DBGOTOP()
* $END$
@@ -736,6 +773,7 @@
* in selected or aliased work area at the record number specified by
* <xRecordNumber>.The position if not affected by an active index or
* by any enviromental SET condiction.
*
* Issuing a DBGOTO(RECNO()) call in a network enviroment will refresh
* the database and index buffers.This is the same as a DBSKIP(0) call.
* The parameter <xRecordNumber> may be something other than a record
@@ -759,6 +797,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* BOF(),EOF(),DBGOTOP(),DBGOBOTTOM(),DBSEEK(),DBSKIP()
* $END$
@@ -792,6 +832,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* BOF(),EOF(),DBSKIP(),DBSEEK(),DBGOBOTTOM()
* $END$
@@ -827,6 +869,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBDELETE()
* $END$
@@ -865,6 +909,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBUNLOCK(),DBUNLOCKALL(),FLOCK(),RLOCK()
* $END$
@@ -905,6 +951,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* RLOCK(),DBRLOCK(),DBRUNLOCK()
* $END$
@@ -942,6 +990,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* RLOCK(),DBRLOCK(),DBRLOCKLIST()
* $END$
@@ -958,9 +1008,9 @@
* DBSEEK(<expKey>, [<lSoftSeek>],[<lFindLast>]) --> lFound
* $ARGUMENTS$
* <expKey> Any expression
*
* <lSoftSeek> Toggle SOFTSEEK condition
*
* <lFindLast> is an optional logical value that set the current
* record position to the last record if successful
* $RETURNS$
@@ -972,8 +1022,10 @@
* EOF() wilI be a logical false (.F.). If no item is found. then the function will
* return a logical false, the value of FOUND( ) will be a logical false (.F.), and
* the value of EOF( ) will be a logical true (.T.).
*
* This function always "rewinds" the database pointer and starts the search from
* the top of the file.
*
* If the SOFTSEEK flag is on or if <lSoftSeek> is set to a logical true (.T.)
* the value of FOUND() wilI be a logical false and EOF() will he a logical
* false if there is an item in the index key with a greater value than the key
@@ -982,7 +1034,6 @@
* logical true (.T.) value. If <lSoftSeek> is not passed, the function will look
* to the internal status of SOFTSEEK before performing the operation. The default
* of <lSoftSeek> is a logical false (.F.)
*
* $EXAMPLES$
* FUNCTION Main()
* USE Tests New INDEX Tests
@@ -1008,6 +1059,8 @@
* S
* $COMPLIANCE$
* DBSEEK() is Compatible with CA-Clipper 5.3
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBGOBOTTOM(),DBGOTOP(),DBSKIP(),EOF(),BOF(),FOUND()
* $END$
@@ -1031,6 +1084,7 @@
* area designated by <xArea>. If <xArea> is numeric, them it will
* select the numeric work area;if <xArea> is character,then it will
* select the work area with the alias name.
*
* DBSELECTAREA(0) will select the next avaliable and unused work area.
* Up to 255 work areas are supported.Each work area has its own alias
* and record pointer, as well as its own FOUND(),DBFILTER(),DBRSELECT(),
@@ -1052,6 +1106,8 @@
* R
* $COMPLIANCE$
* This function is CA-CLIPPER compatible.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBUSEAREA(),SELECT()
* $END$
@@ -1082,6 +1138,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBUSEAREA()
* $END$
@@ -1120,6 +1178,8 @@
* R
* $COMPLIANCE$
* This function is CA-CLIPPER compatible
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* BOF(),DBGOBOTTOM(),DBGOTOP(),DBSEEK(),EOF()
* $END$
@@ -1136,7 +1196,7 @@
* DBSETFILTER(<bCondition>, [<cCondition>]) --> NIL
* $ARGUMENTS$
* <bCondition> Code block expression for filtered evaluation.
*
* <cCondition> Optional character expression of code block.
* $RETURNS$
* DBSETFILTER() always returns NIL.
@@ -1157,6 +1217,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBFILTER(),DBCLEARFILTER()
* $END$
@@ -1194,10 +1256,11 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* Header is DbStruct.ch
* $SEEALSO$
* AFIELDS()
* $INCLUDE$
* DbStruct.ch
* $END$
*/
@@ -1231,6 +1294,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBUNLOCKALL(),FLOCK(),RLOCK()
* $END$
@@ -1267,6 +1332,8 @@
* R
* $COMPLIANCE$
* This function is CA Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBUNLOCK(),FLOCK(),RLOCK()
* $END$
@@ -1284,15 +1351,15 @@
* [<lShared>], [<lReadonly>]) --> NIL
* $ARGUMENTS$
* <lNewArea> A optional logical expression for the new work area
*
* <cDriver> Database driver name
*
* <cName> File Name
*
* <xcAlias> Alias name
*
* <lShared> Shared/exclusive status flag
*
* <lReadonly> Read-write status flag.
* $RETURNS$
* DBUSEAREA() always returns NIL.
@@ -1304,15 +1371,18 @@
* If used, <cDriver> is the name of the database driver associated with
* the file <cName> that is opened. The default for this will be the value
* of DBSETDRlVER().
*
* IF used, <xcAlias> contains the alias name for that work area, If not
* specified, the root name of the database specified in <cName> will be
* used.
*
* If <lShared> is set to a logical true (.T.) value, the database that
* is specified in <cName> will be opened by the user EXCLUSIVELY. Thus
* locking it from all other nodes or users on the network. If <lShared> is
* set to a logical false (.F.) value, then the database will be in SHARED
* mode. If <lShared> is not passed, then the function will turn to the
* internal setting of SET EXCLUSIVE to determine a setting.
*
* If <lReadOnly> is specified, the file will be set to READ ONLY mode.
* If it is not specified, the file will he opened in normal read-write
* mode.
@@ -1322,6 +1392,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBCLOSEAREA(),DBSETDRIVER(),SELECT(),SET()
* $END$
@@ -1366,6 +1438,8 @@
* R
* $COMPLIANCE$
* This function is CA Clipper compliant
* $FILES$
* Library is Rdd.lib
* $END$
*/
@@ -1426,6 +1500,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBDELETE()
* $END$
@@ -1459,6 +1535,8 @@
* R
* $COMPLIANCE$
* EOF() is fully CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* BOF(),FOUND(),LASTREC()
* $END$
@@ -1489,6 +1567,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* FIELDNAME(),TYPE()
* $END$
@@ -1522,6 +1602,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper Compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* FIELDPUT()
* $END$
@@ -1558,6 +1640,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DBSTRUCT(),FCOUNT(),LEN(),VALTYPE()
* $END$
@@ -1591,6 +1675,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* FIELDGET(),FIELDPUT()
* $END$
@@ -1625,6 +1711,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible.
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* FIELDGET()
* $END$
@@ -1657,6 +1745,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* RLOCK()
* $END$
@@ -1692,6 +1782,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* EOF()
* $END$
@@ -1722,6 +1814,8 @@
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* DISKSPACE(),LASTREC(),RECSIZE()
* $END$
@@ -1773,6 +1867,8 @@
* S
* $COMPLIANCE$
* This function is CA Clipper compliant
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* INDEXKEY()
* $END$
@@ -1821,6 +1917,8 @@
* R
* $COMPLIANCE$
* This function is CA Clipper compatible
* $FILES$
* Library is Rdd.lib
* $SEEALSO$
* EOF()
* $END$

View File

@@ -40,11 +40,13 @@
* $SYNTAX$
* __SETCENTURY([<lFlag> | <cOnOff> ] ) --> lPreviousValue
* $ARGUMENTS$
* optional <lFlag> or <cOnOff> (not case sensitive) </par>
* .T. or "ON" to enable the century setting (4-digit years) </par>
* .F. or "OFF" to disable the century setting (2-digit years) </par>
* optional <lFlag> or <cOnOff> (not case sensitive)
* .T. or "ON" to enable the century setting (4-digit years)
* .F. or "OFF" to disable the century setting (2-digit years)
* $RETURNS$
* Either the current or previous century setting as a logical value </par>
* Either the current or previous century setting as a logical value
* $FILES$
* Library is Rtl.lib
* $END$
*/
@@ -58,19 +60,24 @@
* $SYNTAX$
* Set(<nSet> [, <xNewSetting> [, <xOption> ] ] ) --> xPreviousSetting
* $ARGUMENTS$
* <nSet> Set Number </par>
* <xNewSetting> Any expression to assing a value to the seting </par>
* <xOption> Logical expression </par>
* <nSet> Set Number
*
* <nSet> <xNewSetting> <xOption> </par>
* <xNewSetting> Any expression to assing a value to the seting
*
* <xOption> Logical expression
*
* <nSet> <xNewSetting> <xOption>
*
* _SET_ALTERNATE <lFlag> | <cOnOff>
*
* _SET_ALTERNATE <lFlag> | <cOnOff> </par>
* If enabled, QOUT() and QQOUT() write to the screen and to
* a file, provided that a file has been opened or created
* with _SET_ALTFILE. If disabled, which is the default,
* QOUT() and QQOUT() only write to the screen (and/or to
* the PRINTFILE). Defaults to disabled. </par>
* _SET_ALTFILE <cFileName> <lAdditive> </par>
* the PRINTFILE). Defaults to disabled.
*
* _SET_ALTFILE <cFileName> <lAdditive>
*
* When set, creates or opens file to write QOUT() and
* QQOUT() output to. If <lAdditive> is TRUE and the file
* already exists, the file is opened and positioned at end
@@ -78,23 +85,35 @@
* already opened, it is closed before the new file is
* opened or created (even if it is the same file). The
* default file extension is ".txt". There is no default
* file name. Call with an empty string to close the file. </par>
* _SET_AUTOPEN <lFlag> | <cOnOff> </par>
* TODO: Document </par>
* _SET_AUTORDER <lFlag> | <cOnOff> </par>
* TODO: Document </par>
* _SET_AUTOSHARE <lFlag> | <cOnOff> </par>
* TODO: Document </par>
* _SET_BELL <lFlag> | <cOnOff> </par>
* file name. Call with an empty string to close the file.
*
* _SET_AUTOPEN <lFlag> | <cOnOff>
*
* TODO: Document
*
* _SET_AUTORDER <lFlag> | <cOnOff>
*
* TODO: Document
*
* _SET_AUTOSHARE <lFlag> | <cOnOff>
*
* TODO: Document
*
* _SET_BELL <lFlag> | <cOnOff>
*
* When enabled, the bell sounds when the last position of
* a GET is reached and/or when a GET validation fails.
* Disabled by default. </par>
* _SET_CANCEL <lFlag> | <cOnOff> </par>
* Disabled by default.
*
* _SET_CANCEL <lFlag> | <cOnOff>
*
* When enabled, which is the default, pressing Alt+C or
* Ctrl+Break terminates the program. When disabled, both
* keystrokes can be read by INKEY(). Note: SET KEY has
* precedence over SET CANCEL. </par>
* _SET_COLOR <cColorSet> </par>
* precedence over SET CANCEL.
*
* _SET_COLOR <cColorSet>
*
* Sets the current color scheme, using color pairs in the
* sequence "<standard>,<enhanced>,<border>,<background>,
* <unselected>". Each color pair uses the format
@@ -107,19 +126,27 @@
* bright white. Special codes are "I" for inverse video,
* "U" for underline on a monochrome monitor (blue on a
* color monitor), and "X" for blank. The default color is
* "W/N,N/W,N,N,N/W". </par>
* _SET_CONFIRM <lFlag> | <cOnOff> </par>
* "W/N,N/W,N,N,N/W".
*
* _SET_CONFIRM <lFlag> | <cOnOff>
*
* If enabled, an exit key must be pressed to leave a GET.
* If disabled, which is the default, typing past the end
* will leave a GET. </par>
* _SET_CONSOLE <lFlag> | <cOnOff> </par>
* will leave a GET.
*
* _SET_CONSOLE <lFlag> | <cOnOff>
*
* If enabled, which is the default, all screen output goes
* to the screen. When disabled, screen output is suppressed
* (Note: This setting does not affect OUTSTD() or OUTERR()). </par>
* _SET_CURSOR <nCursorType> </par>
* (Note: This setting does not affect OUTSTD() or OUTERR()).
*
* _SET_CURSOR <nCursorType>
*
* If enabled, which is the default, the cursor is displayed
* on screen. If disabled, the screen cursor is hidden. </par>
* _SET_DATEFORMAT <cDateFormat> </par>
* on screen. If disabled, the screen cursor is hidden.
*
* _SET_DATEFORMAT <cDateFormat>
*
* Sets the default date format for display, date input, and
* date conversion. Defaults to American ("mm/dd/yy"). Other
* formats include ANSI ("yy.mm.dd"), British ("dd/mm/yy"),
@@ -127,12 +154,16 @@
* ("dd-mm-yy"), Japan ("yy/mm/dd"), and USA ("mm-dd-yy").
* SET CENTURY modifies the date format. SET CENTURY ON
* replaces the "y"s with "YYYY". SET CENTURY OFF replaces
* the "y"s with "YY". </par>
* _SET_DEBUG <lStatus> </par>
* the "y"s with "YY".
*
* _SET_DEBUG <lStatus>
*
* When set to .t., pressing Alt+D activates the debugger.
* When set to .f., which is the default, Alt+D can be read
* by INKEY(). (Also affected by AltD(1) and AltD(0)) </par>
* _SET_DECIMALS <nNumberOfDecimals> </par>
* by INKEY(). (Also affected by AltD(1) and AltD(0))
* _SET_DECIMALS <nNumberOfDecimals>
*
* Sets the number of decimal digits to use when displaying
* printing numeric values when SET FIXED is ON. Defaults to
* 2. If SET FIXED is OFF, then SET DECIMALS is only used to
@@ -140,25 +171,37 @@
* EXP(), LOG(), SQRT(), or division. Other math operations
* may adjust the number of decimal digits that the result
* will display. Note: This never affects the precision of
* a number. Only the display format is affected. </par>
* _SET_DEFAULT <cDefaultDirectory> </par>
* a number. Only the display format is affected.
*
* _SET_DEFAULT <cDefaultDirectory>
*
* Sets the default directory in which to open, create and
* check for files. Defaults to current directory (blank). </par>
* _SET_DELETED <lFlag> | <cOnOff> </par>
* check for files. Defaults to current directory (blank).
*
* _SET_DELETED <lFlag> | <cOnOff>
*
* If enabled, deleted records will be processed. If
* disabled, which is the default, deleted records will
* be ignored. </par>
* _SET_DELIMCHARS <cDelimiters> </par>
* Sets the GET delimiter characters. Defaults to "::". </par>
* _SET_DELIMITERS <lFlag> | <cOnOff> </par>
* be ignored.
*
* _SET_DELIMCHARS <cDelimiters>
*
* Sets the GET delimiter characters. Defaults to "::".
*
* _SET_DELIMITERS <lFlag> | <cOnOff>
*
* If enabled, GETs are delimited on screen. If disabled,
* which is the default, no GET delimiters are used. </par>
* _SET_DEVICE <cDeviceName> </par>
* which is the default, no GET delimiters are used.
*
* _SET_DEVICE <cDeviceName>
*
* Selects the output device for DEVOUT(). When set to
* "PRINTER", all output is sent to the printer device or
* file set by _SET_PRINTFILE. When set to anything else,
* all output is sent to the screen. Defaults to "SCREEN". </par>
* _SET_EPOCH <nYear> </par>
* all output is sent to the screen. Defaults to "SCREEN".
*
* _SET_EPOCH <nYear>
*
* Determines how to handle the conversion of 2-digit years
* to 4 digit years. When a 2-digit year is greater than or
* equal to the year part of the epoch, the century part of
@@ -169,13 +212,17 @@
* to 19xx. Example: If the epoch is set to 1950, 2-digit
* years in the range from 50 to 99 get converted to 19xx
* and 2-digit years in the range 00 to 49 get converted
* to 20xx. </par>
* _SET_ESCAPE <lFlag> | <cOnOff> </par>
* to 20xx.
*
* _SET_ESCAPE <lFlag> | <cOnOff> *
* When enabled, which is the default, pressing Esc will
* exit a READ. When disabled, pressing Esc during a READ
* is ignored, unless the Esc key has been assigned to a
* function using SET KEY. </par>
* _SET_EVENTMASK <nEventCodes> </par>
* function using SET KEY.
*
* _SET_EVENTMASK <nEventCodes>
*
* Determines which events INKEY() will respond to.
* INKEY_MOVE allows mouse movement events. INKEY_LDOWN
* allows the left mouse button down click. INKEY_LUP
@@ -186,8 +233,10 @@
* preceding events. Events may be combined (e.g., using
* INKEY_LDOWN + INKEY_RUP will allow left mouse button
* down clicks and right mouse button up clicks). The
* default is INKEY_KEYBOARD. </par>
* _SET_EXACT <lFlag> | <cOnOff> </par>
* default is INKEY_KEYBOARD.
*
* _SET_EXACT <lFlag> | <cOnOff>
*
* When enabled, all string comparisons other than "=="
* exclude trailing spaces when checking for equality.
* When disabled, which is the default, all string
@@ -196,22 +245,30 @@
* hand string is shorter than or the same length as the
* left hand string and all of the characters in the right
* hand string match the corresponding characters in the
* left hand string. </par>
* _SET_EXCLUSIVE <lFlag> | <cOnOff> </par>
* left hand string.
*
* _SET_EXCLUSIVE <lFlag> | <cOnOff>
*
* When enabled, which is the default, all database files
* are opened in exclusive mode. When disabled, all
* database files are opened in shared mode. Note: The
* EXCLUSIVE and SHARED clauses of the USE command can be
* used to override this setting. </par>
* _SET_EXIT <lFlag> | <cOnOff> </par>
* used to override this setting.
*
* _SET_EXIT <lFlag> | <cOnOff>
*
* Toggles the use of Uparrow and Dnarrow as READ exit keys.
* Specifying true (.T.) enables them as exit keys, and
* false (.F.) disables them. Used internally by the
* ReadExit() function. </par>
* _SET_EXTRA <lFlag> | <cOnOff> </par>
* QUESTION: What is this for? </par>
* It does not affect _SET_EXTRAFILE in Clipper! </par>
* _SET_EXTRAFILE <cFileName> <lAdditive> </par>
* ReadExit() function.
*
* _SET_EXTRA <lFlag> | <cOnOff>
*
* QUESTION: What is this for?
* It does not affect _SET_EXTRAFILE in Clipper!
*
* _SET_EXTRAFILE <cFileName> <lAdditive>
*
* When set, creates or opens file to write QOUT() and
* QQOUT() output to. If <lAdditive> is TRUE and the file
* already exists, the file is opened and positioned at end
@@ -219,58 +276,82 @@
* already opened, it is closed before the new file is
* opened or created (even if it is the same file). The
* default file extension is ".prn". There is no default
* file name. Call with an empty string to close the file. </par>
* _SET_FIXED <lFlag> | <cOnOff> </par>
* file name. Call with an empty string to close the file.
*
* _SET_FIXED <lFlag> | <cOnOff>
*
* When enabled, all numeric values will be displayed
* and printed with the number of decimal digits set
* by SET DECIMALS, unless a PICTURE clause is used.
* When disabled, which is the default, the number
* of decimal digits that are displayed depends upon
* a variety of factors. See _SET_DECIMALS for more. </par>
* _SET_INSERT <lFlag> | <cOnOff> </par>
* a variety of factors. See _SET_DECIMALS for more.
*
* _SET_INSERT <lFlag> | <cOnOff>
*
* When enabled, characters typed in a GET or MEMOEDIT
* are inserted. When disabled, which is the default,
* characters typed in a GET or MEMOEDIT overwrite.
* Note: This setting can also be toggled between on and
* off by pressing the Insert key during a GET or MEMOEDIT. </par>
* _SET_INTENSITY <lFlag> | <cOnOff> </par>
* off by pressing the Insert key during a GET or MEMOEDIT.
*
* _SET_INTENSITY <lFlag> | <cOnOff>
*
* When enabled, which is the default, GETs and PROMPTs
* are displayed using the enhanced color setting. When
* disabled, GETs and PROMPTs are displayed using the
* standard color setting. </par>
* _SET_MARGIN <nColumns> </par>
* standard color setting.
*
* _SET_MARGIN <nColumns>
*
* Sets the left margin for all printed output. The default
* value is 0. Note: PCOL() reflects the printer's column
* position including the margin (e.g., SET MARGIN TO 5
* followed by DEVPOS(5, 10) makes PCOL() return 15).
* _SET_MBLOCKSIZE <nMemoBlockSize> </par>
* TODO: Document </par>
* _SET_MCENTER <lFlag> | <cOnOff> </par>
*
* _SET_MBLOCKSIZE <nMemoBlockSize>
*
* TODO: Document
*
* _SET_MCENTER <lFlag> | <cOnOff>
*
* If enabled, display PROMPTs centered on the MESSAGE row.
* If disabled, which is the default, display PROMPTS at
* column position 0 on the MESSAGE row. </par>
* _SET_MESSAGE <nRow> </par>
* column position 0 on the MESSAGE row.
*
* _SET_MESSAGE <nRow>
*
* If set to 0, which is the default, PROMPTs are always
* suppressed. Otherwise, PROMPTs are displayed on the
* set row. Note: It is not possible to display prompts
* on the top-most screen row, because row 0 is reserved
* for the SCOREBOARD, if enabled. </par>
* _SET_MFILEEXT <cMemoFileExt> </par>
* TODO: Document </par>
* _SET_OPTIMIZE <lFlag> | <cOnOff> </par>
* TODO: Document </par>
* _SET_PATH <cDirectories> </par>
* for the SCOREBOARD, if enabled.
*
* _SET_MFILEEXT <cMemoFileExt>
*
* TODO: Document
*
* _SET_OPTIMIZE <lFlag> | <cOnOff>
*
* TODO: Document
*
* _SET_PATH <cDirectories>
*
* Specifies a path of directories to search through to
* locate a file that can't be located in the DEFAULT
* directory. Defaults to no path (""). Directories must
* be separated by a semicolon (e.g., "C:\DATA;C:\MORE"). </par>
* _SET_PRINTER <lFlag> | <cOnOff> </par>
* be separated by a semicolon (e.g., "C:\DATA;C:\MORE").
*
* _SET_PRINTER <lFlag> | <cOnOff>
*
* If enabled, QOUT() and QQOUT() write to the screen and to
* a file, provided that a file has been opened or created
* with _SET_ALTFILE. If disabled, which is the default,
* QOUT() and QQOUT() only write to the screen (and/or to
* the ALTFILE). </par>
* _SET_PRINTFILE <cFileName> <lAdditive> </par>
* the ALTFILE).
*
* _SET_PRINTFILE <cFileName> <lAdditive>
*
* When set, creates or opens file to write QOUT(), QQOUT()
* and DEVOUT() output to. If <lAdditive> is TRUE and the
* file already exists, the file is opened and positioned
@@ -279,36 +360,55 @@
* is opened or created (even if it is the same file). The
* default file extension is ".prn". The default file name
* is "PRN", which maps to the default printer device. Call
* with an empty string to close the file. </par>
* _SET_SCOREBOARD <lFlag> | <cOnOff> </par>
* with an empty string to close the file.
*
* _SET_SCOREBOARD <lFlag> | <cOnOff>
*
* When enabled, which is the default, READ and MEMOEDIT
* display status messages on screen row 0. When disabled,
* READ and MEMOEDIT status messages are suppressed. </par>
* _SET_SCROLLBREAK <lFlag> | <cOnOff> </par>
* QUESTION: What is this flag for? </par>
* _SET_SOFTSEEK <lFlag> | <cOnOff> </par>
* READ and MEMOEDIT status messages are suppressed.
*
* _SET_SCROLLBREAK <lFlag> | <cOnOff>
*
* QUESTION: What is this flag for?
*
* _SET_SOFTSEEK <lFlag> | <cOnOff>
*
* When enabled, a SEEK that fails will position the record
* pointer to the first key that is higher than the sought
* after key or to LASTREC() + 1 if there is no higher key.
* When disabled, which is the default, a SEEK that fails
* will position the record pointer to LASTREC()+1. </par>
* _SET_STRICTREAD <lFlag> | <cOnOff> </par>
* TODO: Document </par>
* _SET_TYPEAHEAD <nKeyStrokes> </par>
* will position the record pointer to LASTREC()+1.
*
* _SET_STRICTREAD <lFlag> | <cOnOff>
*
* TODO: Document
*
* _SET_TYPEAHEAD <nKeyStrokes>
*
* Sets the size of the keyboard typeahead buffer. Defaults
* to 50. The minimum is 16 and the maximum is 4096. </par>
* _SET_UNIQUE <lFlag> | <cOnOff> </par>
* to 50. The minimum is 16 and the maximum is 4096.
*
* _SET_UNIQUE <lFlag> | <cOnOff>
*
* When enabled, indexes are not allowed to have duplicate
* keys. When disabled, indexes are allowed duplicate keys. </par>
* _SET_VIDEOMODE <nValue> </par>
* TODO: Document </par>
* _SET_WRAP <lFlag> | <cOnOff> </par>
* keys. When disabled, indexes are allowed duplicate keys.
*
* _SET_VIDEOMODE <nValue>
*
* TODO: Document
*
* _SET_WRAP <lFlag> | <cOnOff>
*
* When enabled, lightbar menus can be navigated from the
* last position to the first and from the first position
* to the last. When disabled, which is the default, there
* is a hard stop at the first and last positions. </par>
* is a hard stop at the first and last positions.
* $RETURNS$
* The current or previous setting </par>
* SET() The current or previous setting
* $FILES$
* Library is Rtl.lib
* $END$
*/
@@ -323,28 +423,29 @@
* __SetFunction( <nFunctionKey>, [<cString>] ) --> NIL
* $ARGUMENTS$
* <nFunctionKey> is a number in the range 1..40 that represent the
* function key to be assigned. </par>
* function key to be assigned.
*
* <cString> is a character string to set. If <cString> is not
* specified, the function key is going to be set to NIL releasing by
* that any previous __SetFunction() or SETKEY() for that function. </par>
* that any previous __SetFunction() or SETKEY() for that function.
* $RETURNS$
* __SetFunction() always return NIL. </par>
* __SetFunction() always return NIL.
* $DESCRIPTION$
* __SetFunction() assign a character string with a function key, when
* this function key is pressed, the keyboard is stuffed with this
* character string. __SetFunction() has the effect of clearing any
* SETKEY() previously set to the same function number and vice versa. </par>
* SETKEY() previously set to the same function number and vice versa.
*
* nFunctionKey Key to be set </par>
* ------------ ------------- </par>
* 1 .. 12 F1 .. F12 </par>
* 13 .. 20 Shift-F3 .. Shift-F10 </par>
* 21 .. 30 Ctrl-F1 .. Ctrl-F10 </par>
* 31 .. 40 Alt-F1 .. Alt-F10 </par>
* <table>
* nFunctionKey Key to be set
*
* 1 .. 12 F1 .. F12
* 13 .. 20 Shift-F3 .. Shift-F10
* 21 .. 30 Ctrl-F1 .. Ctrl-F10
* 31 .. 40 Alt-F1 .. Alt-F10
* </table>
* SET FUNCTION command is preprocessed into __SetFunction() function
* during compile time. </par>
* during compile time.
* $EXAMPLES$
* // Set F1 with a string
* CLS
@@ -358,9 +459,11 @@
* R
* $COMPLIANCE$
* Harbour use 11 and 12 to represent F11 and F12, while CA-Clipper use
* 11 and 12 to represent Shift-F1 and Shift-F2. </par>
* 11 and 12 to represent Shift-F1 and Shift-F2.
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* INKEY(),SETKEY(),__Keyboard(),SET KEY
* $END$
@@ -377,26 +480,27 @@
* SET FUNCTION <nFunctionKey> TO [<cString>]
* $ARGUMENTS$
* <nFunctionKey> is a number in the range 1..40 that represent the
* function key to be assigned. </par>
* function key to be assigned.
*
* <cString> is a character string to set. If <cString> is not
* specified, the function key is going to be set to NIL releasing by
* that any previous Set Function or SETKEY() for that function. </par>
* that any previous Set Function or SETKEY() for that function.
* $DESCRIPTION$
* Set Function assign a character string with a function key, when
* this function key is pressed, the keyboard is stuffed with this
* character string. Set Function has the effect of clearing any
* SETKEY() previously set to the same function number and vice versa. </par>
* SETKEY() previously set to the same function number and vice versa.
*
* nFunctionKey Key to be set </par>
* ------------ ------------- </par>
* 1 .. 12 F1 .. F12 </par>
* 13 .. 20 Shift-F3 .. Shift-F10 </par>
* 21 .. 30 Ctrl-F1 .. Ctrl-F10 </par>
* 31 .. 40 Alt-F1 .. Alt-F10 </par>
* <table>
* nFunctionKey Key to be set
*
* 1 .. 12 F1 .. F12
* 13 .. 20 Shift-F3 .. Shift-F10
* 21 .. 30 Ctrl-F1 .. Ctrl-F10
* 31 .. 40 Alt-F1 .. Alt-F10
* </table>
* SET FUNCTION command is preprocessed into __SetFunction() function
* during compile time. </par>
* during compile time.
* $EXAMPLES$
* // Set F1 with a string
* CLS
@@ -410,9 +514,9 @@
* R
* $COMPLIANCE$
* Harbour use 11 and 12 to represent F11 and F12, while CA-Clipper use
* 11 and 12 to represent Shift-F1 and Shift-F2. </par>
* 11 and 12 to represent Shift-F1 and Shift-F2.
* $PLATFORMS$
* All </par>
* All
* $SEEALSO$
* INKEY(),SETKEY(),__Keyboard()
* $END$
@@ -428,18 +532,20 @@
* $SYNTAX$
* SETKEY( <anKey> [, <bAction> [, <bCondition> ] ] )
* $ARGUMENTS$
* <anKey> is either a numeric key value, or an array of such values </par>
* <bAction> is an optional code-block to be assigned </par>
* <bCondition> is an optional condition code-block </par>
* <anKey> is either a numeric key value, or an array of such values
* <bAction> is an optional code-block to be assigned
* <bCondition> is an optional condition code-block
* $RETURNS$
* Current assigned action-block </par>
* Current assigned action-block
* $DESCRIPTION$
* The SetKey() function returns the current code-block assigned to a
* key when called with only the key value. If the action block (and
* optionally the condition block) are passed, the current block is
* returned, and the new code block and condition block are stored.
* A group of keys may be assigned the same code block/condition block
* by using an array of key values in place on the first parameter. </par>
* by using an array of key values in place on the first parameter.
* $EXAMPLES$
* local bOldF10 := setKey( K_F10, {|| Yahoo() } )
* ... // some other processing
@@ -462,7 +568,9 @@
* SETKEY() is mostly CA-Clipper compliant. The only difference is the
* addition of the condition code-block parameter, allowing set-keys to
* be conditionally turned off or on. This condition-block cannot be
* returned once set - see SetKeyGet() </par>
* returned once set - see SetKeyGet()
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* HB_SETKEYSAVE()
* $END$
@@ -478,14 +586,15 @@
* $SYNTAX$
* HB_SETKEYGET( <nKey> [, <bConditionByRef> ] )
* $ARGUMENTS$
* <anKey> is an numeric key value </par>
* <bConditionByRef> is an optional return-parameter </par>
* <anKey> is an numeric key value
* <bConditionByRef> is an optional return-parameter
* $RETURNS$
* Current assigned action-block </par>
* Current assigned action-block
* $DESCRIPTION$
* The HB_SetKeyGet() function returns the current code-block assigned to
* a key, and optionally assignes the condition-block to the
* return-parameter </par>
* return-parameter
* $EXAMPLES$
* local bOldF10, bOldF10Cond
* bOldF10 := HB_SetKeyGet( K_F10, @bOldF10Cond )
@@ -498,7 +607,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* HB_SETKEYGET() is a new function and hence not CA-Clipper compliant. </par>
* HB_SETKEYGET() is a new function and hence not CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* SETKEY(),HB_SETKEYSAVE(),HB_SETKEYCHECK()
* $END$
@@ -515,16 +626,16 @@
* HB_SETKEYSAVE( [ <OldKeys> ] )
* $ARGUMENTS$
* <OldKeys> is an optional set-key list from a previous call to
* HB_SetKeySave(), or NIL to clear current set-key list </par>
* HB_SetKeySave(), or NIL to clear current set-key list
* $RETURNS$
* Current set-key list </par>
* Current set-key list
* $DESCRIPTION$
* HB_SetKeySave() is designed to act like the set() function which
* returns the current state of an environment setting, and optionally
* assigning a new value. In this case, the "environment setting" is the
* internal set-key list, and the optional new value is either a value
* returned from a previous call to SetKeySave() - to restore that list,
* or the value of NIL to clear the current list. </par>
* or the value of NIL to clear the current list.
* $EXAMPLES$
* local aKeys := HB_SetKeySave( NIL ) // removes all current set=keys
* ... // some other processing
@@ -536,7 +647,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* HB_SETKEYSAVE() is new. </par>
* HB_SETKEYSAVE() is new.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* SETKEY()
* $END$
@@ -552,22 +665,22 @@
* $SYNTAX$
* HB_SetKeyCheck( <nKey> [, <p1> ][, <p2> ][, <p3> ] )
* $ARGUMENTS$
* <nKey> is a numeric key value to be tested
* code-block, if executed </par>
* <p1>..<p3> are optional parameters that will be passed to the code-block </par>
* <nKey> is a numeric key value to be tested code-block, if executed
* <p1>..<p3> are optional parameters that will be passed to the code-block
* $RETURNS$
* True if there is a hot-key associated with <nKey> and it was executed;
* otherwise False </par>
* If there is a hot-key association (before checking any condition): </par>
* - if there is a condition-block, it is passed one parameter - <nKey> </par>
* otherwise False
* If there is a hot-key association (before checking any condition):
* - if there is a condition-block, it is passed one parameter - <nKey>
* - when the hot-key code-block is called, it is passed 1 to 4 parameters,
* depending on the parameters passed to HB_SetKeyCheck(). Any
* parameters so passed are directly passed to the code-block, with an
* additional parameter being <nKey> </par>
* additional parameter being <nKey>
* $DESCRIPTION$
* HB_SetKeyCheck() is intended as a common interface to the SetKey()
* functionality for such functions as ACHOICE(), DBEDIT(), MEMOEDIT(),
* ACCEPT, INPUT, READ, and WAIT </par>
* ACCEPT, INPUT, READ, and WAIT
* $EXAMPLES$
* // within ReadModal()
* if HB_SetKeyCheck( K_ALT_X, GetActive() )
@@ -585,7 +698,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* HB_SETKEYCHECK() is new. </par>
* HB_SETKEYCHECK() is new.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* SETKEY(),HB_SETKEYSAVE()
* $END$
@@ -601,9 +716,11 @@
* $SYNTAX$
* SET KEY <anKey> to p<bAction>] [when <bCondition> ] )
* $ARGUMENTS$
* <anKey> is either a numeric key value, or an array of such values </par>
* <bAction> is an optional code-block to be assigned </par>
* <bCondition> is an optional condition code-block </par>
* <anKey> is either a numeric key value, or an array of such values
* <bAction> is an optional code-block to be assigned
* <bCondition> is an optional condition code-block
* $DESCRIPTION$
* The Set Key Command function is translated to the SetKey() function
* witch returns the current code-block assigned to a
@@ -611,7 +728,7 @@
* optionally the condition block) are passed, the current block is
* returned, and the new code block and condition block are stored.
* A group of keys may be assigned the same code block/condition block
* by using an array of key values in place on the first parameter. </par>
* by using an array of key values in place on the first parameter.
* $EXAMPLES$
* local bOldF10 := setKey( K_F10, {|| Yahoo() } )
* ... // some other processing
@@ -634,7 +751,7 @@
* SET KEY is mostly CA-Clipper compliant. The only difference is the
* addition of the condition code-block parameter, allowing set-keys to
* be conditionally turned off or on. This condition-block cannot be
* returned once set - see SetKeyGet() </par>
* returned once set - see SetKeyGet()
* $SEEALSO$
* HB_SETKEYSAVE()
* $END$
@@ -650,12 +767,12 @@
* $SYNTAX$
* SETTYPEAHEAD( <nSize> ) --> <nPreviousSize>
* $ARGUMENTS$
* <nSize> is a valid typeahead size. </par>
* <nSize> is a valid typeahead size.
* $RETURNS$
* <nPreviousSize> The previous state of _SET_TYPEAHEAD </par>
* <nPreviousSize> The previous state of _SET_TYPEAHEAD
* $DESCRIPTION$
* This function sets the typeahead buffer to a valid given size as is
* Set( _SET_TYPEAHEAD ) where used. </par>
* Set( _SET_TYPEAHEAD ) where used.
* $EXAMPLES$
* // Sets typeahead to 12
* SetTypeahead( 12 )
@@ -663,7 +780,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* SETTYPEAHEAD() is fully CA-Clipper compliant. </par>
* SETTYPEAHEAD() is fully CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __ACCEPT(),__INPUT()
* $END$
@@ -679,18 +798,20 @@
* $SYNTAX$
* __XHELP() --> <xValue>
* $ARGUMENTS$
* None </par>
* None
* $RETURNS$
* This function returns aleatory values. </par>
* This function returns aleatory values.
* $DESCRIPTION$
* This is an internal undocumented Clipper function, which will
* try to call the user defined function HELP() if it's defined
* in the current application. This is the default SetKey() handler
* for the F1 key. </par>
* for the F1 key.
* $STATUS$
* R
* $COMPLIANCE$
* __XHELP() is fully CA-Clipper compliant. </par>
* __XHELP() is fully CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* $END$
*/
@@ -704,19 +825,19 @@
* $SYNTAX$
* SET DEFAULT TO [<cPath>]
* $ARGUMENTS$
* <cPath> Drive and/or path. </par>
* <cPath> Drive and/or path.
* $DESCRIPTION$
* This command changes the drive and directory used for reading and
* writting database,index,memory, and alternate files.Specifying no
* parameters with this command will default the operation to the
* current logged drive and directory. </par>
* current logged drive and directory.
* $EXAMPLES$
* SET DEFAULT to c:\TEMP
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This command is Ca-Clipper Compliant. </par>
* This command is Ca-Clipper Compliant.
* $SEEALSO$
* SET PATH,CURDIR(),SET()
* $END$
@@ -733,19 +854,19 @@
* SET WRAP ON/OFF
* SET WRAP (<lWrap>)
* $ARGUMENTS$
* <lWrap> Logical expression for toggle </par>
* <lWrap> Logical expression for toggle
* $DESCRIPTION$
* This command toggles the highlighted bars in a @...PROMPT command
* to wrap around in a bottom-to-top and top-to-bottom manner.If the
* value of the logical expression <lWrap> is a logical false (.F.),
* the wrapping mode is set OFF;otherwise,it is set ON. </par>
* the wrapping mode is set OFF;otherwise,it is set ON.
* $EXAMPLES$
* See Tests/menutest.prg
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This command is Ca-Clipper Compliant. </par>
* This command is Ca-Clipper Compliant.
* $SEEALSO$
* @...PROMPT,MENU TO
* $END$
@@ -759,14 +880,14 @@
* $ONELINER$
* Extablishes a message row for @...PROMPT command
* $SYNTAX$
* SET MESSAGE TO [<nRow> [CENTER]] </par>
* SET MESSAGE TO [<nRow> [CENTER]]
* $ARGUMENTS$
* <nRow> Row number to display the message </par>
* <nRow> Row number to display the message
* $DESCRIPTION$
* This command is designed to work in conjuntion with the MENU TO and
* @...PROMPT commands.With this command, a row number between 0 and
* MAXROW() may be specified in <nRow>.This establishes the row on
* witch any message associated with an @...PROMPT command will apear. </par>
* witch any message associated with an @...PROMPT command will apear.
* If the value of <nRow> is 0,all messages will be supressed.
* All messaged will be left-justifies unless the CENTER clause is
@@ -774,18 +895,18 @@
* will be centered at the designated row (unless <nRow> is 0).All
* messages are independent;therefor,the screen area is cleared out
* by the centered message will vary based on the length of each
* individual message. </par>
* individual message.
* Specifying no parameters with this command set the row value to 0,
* witch suppresses all messages output. </par>
* The British spelling of CENTRE is also supported. </par>
* witch suppresses all messages output.
* The British spelling of CENTRE is also supported.
* $EXAMPLES$
* See Tests/menutest.prg
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This command is Ca-Clipper Compliant. </par>
* This command is Ca-Clipper Compliant.
* $SEEALSO$
* SET(),SET WRAP,@...PROMPT,MENU TO
* $END$
@@ -799,23 +920,23 @@
* $ONELINER$
* Specifies a search path for opening files
* $SYNTAX$
* SET PATH TO [<cPath>] </par>
* SET PATH TO [<cPath>]
* $ARGUMENTS$
* <cPath> Search path for files </par>
* <cPath> Search path for files
* $DESCRIPTION$
* This command specifies the search path for files required by most
* commands and functions not found in the current drive and directory.
* This pertains primarily,but not exclusively, to databases,indexes,
* and memo files,as well as to memory,labels,and reports files. The
* search hirarchy is: 1 Current drive and directory,2 The SET DEFAULT
* path;3 The SET PATH path. </par>
* path;3 The SET PATH path.
* $EXAMPLES$
* SET PATH TO c:\Harbour\Test
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This command is Ca-Clipper Compliant. </par>
* This command is Ca-Clipper Compliant.
* $SEEALSO$
* SET DEFAULT,CURDIR(),SET()
* $END$
@@ -841,7 +962,7 @@
* $STATUS$
* R
* $COMPLIANCE$
* This command is Ca-Clipper Compliant. </par>
* This command is Ca-Clipper Compliant.
* $SEEALSO$
* @...GET,@...PROMPT,@...SAY,SET()
* $END$
@@ -860,7 +981,7 @@
* $ARGUMENTS$
* <cFile> Name of alternate file.
*
* <lAlter> Logical expression for toggle </par>
* <lAlter> Logical expression for toggle
* $DESCRIPTION$
* This command toggles and output console information to the alternate
* file <cFile>,provided that the command is toggled on or the condition
@@ -887,7 +1008,7 @@
* $STATUS$
* R
* $COMPLIANCE$
* This command is Ca-Clipper Compliant. </par>
* This command is Ca-Clipper Compliant.
* $SEEALSO$
* CLOSE,SET PRINTER,SET CONSOLE,SET()
* $END$
@@ -903,7 +1024,7 @@
* $SYNTAX$
* SET CENTURY [ON / OFF] [(<lCent>)]
* $ARGUMENTS$
* <lCent> Logical expression for toggle </par>
* <lCent> Logical expression for toggle
* $DESCRIPTION$
* This command allows the input and display of dates with the century
* prefix.It will be in the standart MM/DD/YYYY format unless specified
@@ -932,8 +1053,8 @@
* Assings a date format or chooses a predefined date data set.
* $SYNTAX$
* SET DATE FORMAT [TO] <cFormat>
* SET DATE [TO] [ ANSI / BRITISH / FRENCH / GERMAN / ITALIAN / JAPAN /
* USA / AMERICAN]
* SET DATE [TO] [ ANSI / BRITISH / FRENCH / GERMAN / ITALIAN / JAPAN
* / USA / AMERICAN]
* $ARGUMENTS$
* <cFormat> Keyword for date format
* $DESCRIPTION$

View File

@@ -39,13 +39,13 @@
* $SYNTAX$
* ISALPHA(<cString>) --> lAlpha
* $ARGUMENTS$
* <cString> Any character string </par>
* <cString> Any character string
* $RETURNS$
* lAlpha Logical true (.T.) or false (.F.). </par>
* lAlpha Logical true (.T.) or false (.F.).
* $DESCRIPTION$
* This function return a logical true (.T.) if the first character
* in <cString> is an alphabetic character.If not, the function will
* return a logical false (.F.). </par>
* return a logical false (.F.).
* $EXAMPLES$
* QOUT( "isalpha( 'hello' ) = ", isalpha( 'hello' ) )
* QOUT( "isalpha( '12345' ) = ", isalpha( '12345' ) )
@@ -53,9 +53,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant </par>
* This function is CA-Clipper compliant
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ISDIGIT(),ISLOWER(),ISUPPER(),LOWER(),UPPER()
* $END$
@@ -71,14 +73,14 @@
* $SYNTAX$
* ISDIGIT(<cString>) --> lDigit
* $ARGUMENTS$
* <cString> Any character string </par>
* <cString> Any character string
* $RETURNS$
* lDigit Logical true (.T.) or false (.F.). </par>
* lDigit Logical true (.T.) or false (.F.).
* $DESCRIPTION$
* This function takes the caracter string <cString> and checks to
* see if the leftmost character is a digit,from 1 to 9.If so, the
* function will return a logical true (.T.);otherwise, it will
* return a logical false (.F.). </par>
* return a logical false (.F.).
* $EXAMPLES$
* QOUT( "isdigit( '12345' ) = ", isdigit( '12345' ) )
* QOUT( "isdigit( 'abcde' ) = ", isdigit( 'abcde' ) )
@@ -86,9 +88,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant </par>
* This function is CA-Clipper compliant
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ISALPHA(),ISLOWER(),ISUPPER(),LOWER(),UPPER()
* $END$
@@ -104,14 +108,14 @@
* $SYNTAX$
* ISUPPER(<cString>) --> lUpper
* $ARGUMENTS$
* <cString> Any character string </par>
* <cString> Any character string
* $RETURNS$
* lUpper Logical true (.T.) or false (.F.). </par>
* lUpper Logical true (.T.) or false (.F.).
* $DESCRIPTION$
* This function takes the caracter string <cString> and checks to
* see if the leftmost character is a uppercased letter.If so, the
* function will return a logical true (.T.);otherwise, it will
* return a logical false (.F.). </par>
* return a logical false (.F.).
* $EXAMPLES$
* QOUT( "isupper( 'Abcde' ) = ", isupper( 'Abcde' ) )
* QOUT( "isupper( 'abcde' ) = ", isupper( 'abcde' ) )
@@ -119,9 +123,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant </par>
* This function is CA-Clipper compliant
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ISALPHA(),ISLOWER(),ISDIGIT(),LOWER(),UPPER()
* $END$
@@ -137,14 +143,14 @@
* $SYNTAX$
* ISLOWER(<cString>) --> lLower
* $ARGUMENTS$
* <cString> Any character string </par>
* <cString> Any character string
* $RETURNS$
* lLower Logical true (.T.) or false (.F.). </par>
* lLower Logical true (.T.) or false (.F.).
* $DESCRIPTION$
* This function takes the caracter string <cString> and checks to
* see if the leftmost character is a lowercased letter.If so, the
* function will return a logical true (.T.);otherwise, it will
* return a logical false (.F.). </par>
* return a logical false (.F.).
* $EXAMPLES$
* QOUT( "islower( 'Abcde' ) = ", islower( 'Abcde' ) )
* QOUT( "islower( 'abcde' ) = ", islower( 'abcde' ) )
@@ -152,9 +158,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compliant </par>
* This function is CA-Clipper compliant
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ISALPHA(),ISDIGIT(),ISUPPER(),LOWER(),UPPER()
* $END$
@@ -170,20 +178,22 @@
* $SYNTAX$
* LTRIM(<cString>) --> <cReturn>
* $ARGUMENTS$
* <cString> Character expression with leading spaces </par>
* <cString> Character expression with leading spaces
* $RETURNS$
* <cReturn> The same character expression with leading spaces removed </par>
* <cReturn> The same character expression with leading spaces removed
* $DESCRIPTION$
* This function trims the leading space blank </par>
* This function trims the leading space blank
* $EXAMPLES$
* ? QOUT( LTRIM("HELLO "))
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This functions is CA-CLIPPER compatible </par>
* This functions is CA-CLIPPER compatible
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* TRIM(),RTRIM(),ALLTRIM()
* $END$
@@ -199,15 +209,16 @@
* $SYNTAX$
* AT(<cSearch>,<cString>) --> nPos
* $ARGUMENTS$
* <cSearch> Substring to search for </par>
* <cString> Main string </par>
* <cSearch> Substring to search for
*
* <cString> Main string
* $RETURNS$
* AT() return the starting position of the first occurrence of the
* substring in the main string </par>
* substring in the main string
* $DESCRIPTION$
* This function searches the string <cString> for the characters in
* the first string <cSearch>. If the substring is not contained within
* the second expression,the function will return 0. </par>
* the second expression,the function will return 0.
* $EXAMPLES$
* QOUT( "at( 'cde', 'abcdefgfedcba' ) = '" +;
* at( 'cde', 'abcsefgfedcba' ) + "'" )
@@ -215,9 +226,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible. </par>
* This function is CA-Clipper compatible.
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* RAT()
* $END$
@@ -231,17 +244,18 @@
* $ONELINER$
* Searches for a substring from the right side of a string.
* $SYNTAX$
* RAT(<cSearch>,<cString>) --> nPos </par>
* RAT(<cSearch>,<cString>) --> nPos
* $ARGUMENTS$
* <cSearch> Substring to search for </par>
* <cString> Main string </par>
* <cSearch> Substring to search for
*
* <cString> Main string
* $RETURNS$
* RAT() return the location of beginnig position. </par>
* RAT() return the location of beginnig position.
* $DESCRIPTION$
* This function searches througt <cString> for the first existence
* of <cSearch>.The search operation is performed from the right side
* of <cString> to the left. If the function is unable to find any
* occurence of <cSearch> in <cString>,the value of the function will be 0. </par>
* occurence of <cSearch> in <cString>,the value of the function will be 0.
* $EXAMPLES$
* QOUT( "rat( 'cde', 'abcdefgfedcba' ) = '" +;
* rat( 'cde', 'abcsefgfedcba' ) + "'" )
@@ -249,9 +263,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* Will not work with a search string > 64 KB on some platforms </par>
* Will not work with a search string > 64 KB on some platforms
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* AT(),SUBSTR(),RIGHT()
* $END$
@@ -267,23 +283,26 @@
* $SYNTAX$
* LEFT(<cString>,<nPos>) --> <cReturn>
* $ARGUMENTS$
* <cString> Main character to be parsed </par>
* <nPos> Number of bytes to return beggining at the leftmost position </par>
* <cString> Main character to be parsed
*
* <nPos> Number of bytes to return beggining at the leftmost position
* $RETURNS$
* <cReturn> Substring of evaluation </par>
* <cReturn> Substring of evaluation
* $DESCRIPTION$
* This functions returns the leftmost <nPos> characters of <cString>. </par>
* This functions returns the leftmost <nPos> characters of <cString>.
* It is equivalent to the following programing expression:
* SUBSTR(<cString>,1,<nPos> </par>
* SUBSTR(<cString>,1,<nPos>
* $EXAMPLES$
* ? QOUT(LEFT('HELLO HARBOUR',5))
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This functions is CA CLIPPER compatible </par>
* This functions is CA CLIPPER compatible
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* SUBSTR(),RIGHT(),AT(),RAT()
* $END$
@@ -299,21 +318,24 @@
* $SYNTAX$
* SUBSTR(<cString>,<nPos>) --> <cReturn>
* $ARGUMENTS$
* <cString> Character expression to be parsed </par>
* <nPos> Number of bytes to return beggining at the rightmost position </par>
* <cString> Character expression to be parsed
*
* <nPos> Number of bytes to return beggining at the rightmost position
* $RETURNS$
* <cReturn> Substring of evaluation </par>
* <cReturn> Substring of evaluation
* $DESCRIPTION$
* This functions returns the rightmost <nPos> characters of <cString>. </par>
* This functions returns the rightmost <nPos> characters of <cString>.
* $EXAMPLES$
* ? QOUT(RIGHT('HELLO HARBOUR',5))
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This functions is CA CLIPPER compatible </par>
* This functions is CA CLIPPER compatible
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* SUBSTR(),LEFT(),AT(),RAT()
* $END$
@@ -329,20 +351,22 @@
* $SYNTAX$
* SUBSTR(<cString>,<nStart>[,<nLen>)] --> <cReturn>
* $ARGUMENTS$
* <cString> Character expression to be parsed </par>
* <nStart> Start position </par>
* <nLen> Number of characters to return </par>
* <cString> Character expression to be parsed
*
* <nStart> Start position
*
* <nLen> Number of characters to return
* $RETURNS$
* <cReturn> Substring of evaluation </par>
* <cReturn> Substring of evaluation
* $DESCRIPTION$
* This functions returns a character string formed from <cString>,
* starting at the position of <nStart> and continuing on for a
* lenght of <nLen> characters. If <nLen> is not specified, the value
* will be all remaining characters from the position of <nStart>. </par>
* will be all remaining characters from the position of <nStart>.
* The value of <nStart> may be negative. If it is, the direction of
* operation is reversed from a default of left-to-right to right-to-left
* for the number of characters specified in <nStart>. </par>
* for the number of characters specified in <nStart>.
* $EXAMPLES$
* FUNCTION MAIN()
* LOCAL X:=REPLICATE('ABCD',70000)
@@ -359,9 +383,11 @@
* $COMPLIANCE$
* This functions is CA CLIPPER compatible with the execption that
* CA CLIPPER will generate an error if the passed string is >65519 bytes
* and Harbour depends of plataform. </par>
* and Harbour depends of plataform.
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* LEFT(),AT(),RIGHT()
* $END$
@@ -378,48 +404,51 @@
* STR(<nNumber>, [<nLength>], [<nDecimals>]) --> cNumber
* $ARGUMENTS$
* <nNumber> is the numeric expression to be converted to a character
* string. </par>
* string.
*
* <nLength> is the length of the character string to return, including
* decimal digits, decimal point, and sign. </par>
* <nDecimals> is the number of decimal places to return. </par>
* decimal digits, decimal point, and sign.
*
* <nDecimals> is the number of decimal places to return.
* $RETURNS$
* STR() returns <nNumber> formatted as a character string. If the
* optional length and decimal arguments are not specified, STR()
* returns the character string according to the following rules: </par>
* returns the character string according to the following rules:
*
* Results of STR() with No Optional Arguments </par>
* --------------------------------------------------------------- </par>
* Expression Return Value Length </par>
* --------------------------------------------------------------- </par>
* Field Variable Field length plus decimals </par>
* Expressions/constants Minimum of 10 digits plus decimals </par>
* VAL() Minimum of 3 digits </par>
* MONTH()/DAY() 3 digits </par>
* YEAR() 5 digits </par>
* RECNO() 7 digits </par>
* --------------------------------------------------------------- </par>
* Results of STR() with No Optional Arguments
* <table>
* Expression Return Value Length
*
* Field Variable Field length plus decimals
* Expressions/constants Minimum of 10 digits plus decimals
* VAL() Minimum of 3 digits
* MONTH()/DAY() 3 digits
* YEAR() 5 digits
* RECNO() 7 digits
* </table>
* $DESCRIPTION$
* STR() is a numeric conversion function that converts numeric values
* to character strings. It is commonly used to concatenate numeric values
* to character strings. STR() has applications displaying numbers,
* creating codes such as part numbers from numeric values, and creating
* index keys that combine numeric and character data. </par>
* index keys that combine numeric and character data.
*
* STR() is like TRANSFORM(), which formats numeric values as character
* strings using a mask instead of length and decimal specifications. </par>
* strings using a mask instead of length and decimal specifications.
*
* The inverse of STR() is VAL(), which converts character numbers to
* numerics. </par>
* numerics.
*
* * If <nLength> is less than the number of whole number digits in
* <nNumber>, STR() returns asterisks instead of the number. </par>
* <nNumber>, STR() returns asterisks instead of the number.
*
* * If <nLength> is less than the number of decimal digits
* required for the decimal portion of the returned string, Harbour
* rounds the number to the available number of decimal places. </par>
* rounds the number to the available number of decimal places.
*
* * If <nLength> is specified but <nDecimals> is omitted (no
* decimal places), the return value is rounded to an integer. </par>
* decimal places), the return value is rounded to an integer.
* $EXAMPLES$
* ? STR( 10, 6, 2 ) // " 10.00"
* ? STR( -10, 8, 2 ) // " -10.00"
@@ -430,7 +459,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* CA-Clipper compatible. </par>
* CA-Clipper compatible.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* STRZERO(),VAL()
* $END$
@@ -447,48 +478,51 @@
* STRZERO(<nNumber>, [<nLength>], [<nDecimals>]) --> cNumber
* $ARGUMENTS$
* <nNumber> is the numeric expression to be converted to a character
* string. </par>
* string.
*
* <nLength> is the length of the character string to return, including
* decimal digits, decimal point, and sign. </par>
* <nDecimals> is the number of decimal places to return. </par>
* decimal digits, decimal point, and sign.
*
* <nDecimals> is the number of decimal places to return.
* $RETURNS$
* STRZERO() returns <nNumber> formatted as a character string. If the
* optional length and decimal arguments are not specified, STRZERO()
* returns the character string according to the following rules: </par>
* returns the character string according to the following rules:
*
* Results of STRZERO() with No Optional Arguments </par>
* --------------------------------------------------------------- </par>
* Expression Return Value Length </par>
* --------------------------------------------------------------- </par>
* Field Variable Field length plus decimals </par>
* Expressions/constants Minimum of 10 digits plus decimals </par>
* VAL() Minimum of 3 digits </par>
* MONTH()/DAY() 3 digits </par>
* YEAR() 5 digits </par>
* RECNO() 7 digits </par>
* --------------------------------------------------------------- </par>
* Results of STRZERO() with No Optional Arguments
*
* <table>
* Expression Return Value Length
*
* Field Variable Field length plus decimals
* Expressions/constants Minimum of 10 digits plus decimals
* VAL() Minimum of 3 digits
* MONTH()/DAY() 3 digits
* YEAR() 5 digits
* RECNO() 7 digits
* </table>
* $DESCRIPTION$
* STRZERO() is a numeric conversion function that converts numeric values
* to character strings. It is commonly used to concatenate numeric values
* to character strings. STRZERO() has applications displaying numbers,
* creating codes such as part numbers from numeric values, and creating
* index keys that combine numeric and character data. </par>
* index keys that combine numeric and character data.
*
* STRZERO() is like TRANSFORM(), which formats numeric values as character
* strings using a mask instead of length and decimal specifications. </par>
* strings using a mask instead of length and decimal specifications.
*
* The inverse of STRZERO() is VAL(), which converts character numbers to
* numerics. </par>
* numerics.
*
* * If <nLength> is less than the number of whole number digits in
* <nNumber>, STR() returns asterisks instead of the number. </par>
* <nNumber>, STR() returns asterisks instead of the number.
*
* * If <nLength> is less than the number of decimal digits
* required for the decimal portion of the returned string, Harbour
* rounds the number to the available number of decimal places. </par>
* rounds the number to the available number of decimal places.
*
* * If <nLength> is specified but <nDecimals> is omitted (no
* decimal places), the return value is rounded to an integer. </par>
* decimal places), the return value is rounded to an integer.
* $EXAMPLES$
* ? STRZERO( 10, 6, 2 ) // "010.00"
* ? STRZERO( -10, 8, 2 ) // "-0010.00"
@@ -499,7 +533,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* CA-Clipper compatible (it was not mentioned in the docs though). </par>
* CA-Clipper compatible (it was not mentioned in the docs though).
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* STR(),VAL()
* $END$
@@ -515,11 +551,11 @@
* $SYNTAX$
* HB_VALTOSTR( <xValue> ) --> cString
* $ARGUMENTS$
* <xValue> is any scalar argument. </par>
* <xValue> is any scalar argument.
* $RETURNS$
* <cString> A string representation of <xValue> using default conversions. </par>
* <cString> A string representation of <xValue> using default conversions.
* $DESCRIPTION$
* HB_VALTOSTR can be used to convert any scalar value to a string. </par>
* HB_VALTOSTR can be used to convert any scalar value to a string.
* $EXAMPLES$
* ? HB_VALTOSTR( 4 )
* ? HB_VALTOSTR( "String" )
@@ -536,7 +572,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* HB_VALTOSTR() is a Harbour enhancement. </par>
* HB_VALTOSTR() is a Harbour enhancement.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* STR(),VAL()
* $END$
@@ -552,14 +590,14 @@
* $SYNTAX$
* LEN( <cString> | <aArray> ) --> <nLength>
* $ARGUMENTS$
* <acString> is a character string or the array to check. </par>
* <acString> is a character string or the array to check.
* $RETURNS$
* The length of the string or the number of elements that contains
* an array. </par>
* an array.
* $DESCRIPTION$
* This function returns the string length or the size of an array. If
* it is used with a multidimensional array it returns the size of the
* first dimension. </par>
* first dimension.
* $EXAMPLES$
* ? Len( "Harbour" ) --> 7
* ? Len( { "One", "Two" } ) --> 2
@@ -574,7 +612,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* LEN() is fully CA-Clipper compliant. </par>
* LEN() is fully CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* EMPTY(),RTRIM(),LTRIM(),AADD(),ASIZE()
* $END$
@@ -590,13 +630,13 @@
* $SYNTAX$
* EMPTY( <xExp> ) --> <lIsEmpty>
* $ARGUMENTS$
* <xExp> is any valid expression. </par>
* <xExp> is any valid expression.
* $RETURNS$
* A logical value. It is true (.T.) if the passed argument is empty
* otherwise it is false (.F.). </par>
* otherwise it is false (.F.).
* $DESCRIPTION$
* This function checks if an expression has empty value and returns a
* logical indicating whether it the expression is empty or not. </par>
* logical indicating whether it the expression is empty or not.
* $EXAMPLES$
* ? Empty( "I'm not empty" )
* </fixed>
@@ -610,7 +650,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* EMPTY() is fully CA-Clipper compliant. </par>
* EMPTY() is fully CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* LEN()
* $END$
@@ -626,12 +668,12 @@
* $SYNTAX$
* DESCEND( <xExp> ) --> <xExpInverted>
* $ARGUMENTS$
* <xExp> is any valid expression. </par>
* <xExp> is any valid expression.
* $RETURNS$
* Inverted value of the same type as passed. </par>
* Inverted value of the same type as passed.
* $DESCRIPTION$
* This function converts an expression in his inverted form. It is
* useful to build descending indexes. </par>
* useful to build descending indexes.
* $EXAMPLES$
* // Seek for Smith in a descending index
* SEEK DESCEND( "SMITH" )
@@ -643,7 +685,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* DESCEND() is fully CA-Clipper compliant. </par>
* DESCEND() is fully CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* INDEX,SEEK
* $END$
@@ -659,24 +703,26 @@
* $SYNTAX$
* HB_ANSITOOEM(<cString>) -> cDosString
* $ARGUMENTS$
* <cString> Windows ansi string to convert to DOS oem String </par>
* <cString> Windows ansi string to convert to DOS oem String
* $RETURNS$
* <cDosString> Dos based string </par>
* <cDosString> Dos based string
* $DESCRIPTION$
* This function converts each character in <cString> to the corresponding
* character in the MS-DOS (OEM) character set.The character expression
* <cString> should contain characters from the ANSI character set.
* If a character in <cString> doesn't have a MS-DOS equivalent, the
* character is converted to a similar MS-DOS character. </par>
* character is converted to a similar MS-DOS character.
* $EXAMPLES$
* ? HB_OEMTOANSI("Harbour")
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour extension </par>
* This function is a Harbour extension
* $PLATFORMS$
* This functions work only on Windows Plataform </par>
* This functions work only on Windows Plataform
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* HB_OEMTOANSI()
* $END$
@@ -692,24 +738,26 @@
* $SYNTAX$
* HB_OEMTOANSI(<cString>) -> cDosString
* $ARGUMENTS$
* <cString> DOS (OEM) string to convert to WINDOWS (ANSI) String </par>
* <cString> DOS (OEM) string to convert to WINDOWS (ANSI) String
* $RETURNS$
* <cDosString> WINDOWS based string </par>
* <cDosString> WINDOWS based string
* $DESCRIPTION$
* This function converts each character in <cString> to the corresponding
* character in the Windows (ANSI) character set.The character expression
* <cString> should contain characters from the OEM character set.
* If a character in <cString> doesn't have a ANSI equivalent, the
* character is remais the same. </par>
* character is remais the same.
* $EXAMPLES$
* ? HB_OEMTOANSI("Harbour")
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour extension </par>
* This function is a Harbour extension
* $PLATFORMS$
* This functions work only on Windows Plataform </par>
* This functions work only on Windows Plataform
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* HB_ANSITOOEM()
* $END$
@@ -726,13 +774,13 @@
* $SYNTAX$
* LOWER( <cString> ) --> cLowerString
* $ARGUMENTS$
* <cString> Any character expression. </par>
* <cString> Any character expression.
* $RETURNS$
* <cLowerString> Lowercased value of <cString> </par>
* <cLowerString> Lowercased value of <cString>
* $DESCRIPTION$
* This function converts any character expression passes as <cString>
* to its lowercased representation.Any nonalphabetic character withing
* <cString> will remain unchanged. </par>
* <cString> will remain unchanged.
* $EXAMPLES$
* ? Lower("HARBOUR")
* ? Lower("Hello All")
@@ -740,9 +788,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible </par>
* This function is CA-Clipper compatible
* $PLATFORMS$
* ALL </par>
* ALL
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* UPPER(),ISLOWER(),ISUPPER()
* $END$
@@ -758,12 +808,12 @@
* $SYNTAX$
* UPPER( <cString> ) --> cUpperString
* $ARGUMENTS$
* <cString> Any character expression. </par>
* <cString> Any character expression.
* $RETURNS$
* <cUpperString> Uppercased value of <cString> </par>
* <cUpperString> Uppercased value of <cString>
* $DESCRIPTION$
* This function converts all alpha characters in <cString> to upper
* case values and returns that formatted character expression. </par>
* case values and returns that formatted character expression.
* $EXAMPLES$
* ? UPPER("harbour")
* ? UPPER("Harbour")
@@ -771,9 +821,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is CA-Clipper compatible </par>
* This function is CA-Clipper compatible
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* LOWER(),ISUPPER(),ISLOWER()
* $END$

View File

@@ -15,50 +15,53 @@
/* $DOC$
* $FUNCNAME$
* TClass()
* TClass()
* $CATEGORY$
* Classes
* Classes
* $ONELINER$
* TClass() is used in the creation of all classes
* TClass() is used in the creation of all classes
* $SYNTAX$
* oClass := TClass():New("TMyClass") </par>
* -or- </par>
* TClass() is usually accessed by defining a class with the commands
* defined in hbclass.h: </par>
* CLASS TGetList // Calls TClass() to create the TGetList class </par>
* ... </par>
* ENDCLASS </par>
* oClass := TClass():New("TMyClass")
* -or-
* TClass() is usually accessed by defining a class with the commands
* defined in hbclass.h:
* CLASS TGetList // Calls TClass() to create the TGetList class
* ...
* ENDCLASS
* $ARGUMENTS$
*
* $RETURNS$
* An instance of the TClass Class. This special object's :New()
* method can then create the classes you define. </par>
* An instance of the TClass Class. This special object's :New()
* method can then create the classes you define.
* $DESCRIPTION$
* TClass is a class that ... </par>
* The class methods are as follows: </par>
* New() Create a new instance of the class </par>
* $EXAMPLES$
* FUNCTION TestObject()
* local oObject
* TClass is a class that ...
* The class methods are as follows:
*
* oObject := TClass():New("TMyClass")
* oObject:End()
* New() Create a new instance of the class
* $EXAMPLES$
* FUNCTION TestObject()
* local oObject
*
* oObject := TClass():New("TMyClass")
* oObject:End()
*
* RETURN Nil
* </fixed>
* $STATUS$
* R
* R
* $COMPLIANCE$
* Object Oriented syntax in Harbour is compatible with CA-CLIPPER.
* But Clipper only allowed creation of objects from a few standard
* classes, and did not let the programmer create new classes.
* In Harbour, you can create your own classes--complete with
* Methods, Instance Variables, Class Variables and Inheritance.
* Entire applications can be designed and coded in Object Oriented
* style. </par>
* Object Oriented syntax in Harbour is compatible with CA-CLIPPER.
* But Clipper only allowed creation of objects from a few standard
* classes, and did not let the programmer create new classes.
* In Harbour, you can create your own classes--complete with
* Methods, Instance Variables, Class Variables and Inheritance.
* Entire applications can be designed and coded in Object Oriented
* style.
* $PLATFORMS$
* All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __objHasData(),Object Oriented Programming,CLASS
* __objHasData(),Object Oriented Programming,CLASS
* $END$
*/

View File

@@ -34,22 +34,22 @@
* $SYNTAX$
* __XSaveScreen() --> NIL
* $ARGUMENTS$
* none. </par>
* none.
* $RETURNS$
* __XSaveScreen() always return NIL. </par>
* __XSaveScreen() always return NIL.
* $DESCRIPTION$
* __XSaveScreen() save the image of the whole screen into an internal
* buffer, it also save current cursor position. The information could
* later be restored by __XRestScreen(). Each call to __XSaveScreen()
* overwrite the internal buffer. </par>
* overwrite the internal buffer.
*
* SAVE SCREEN command is preprocessed into __XSaveScreen() function
* during compile time. Note that SAVE SCREEN TO is preprocessed into
* SAVESCREEN() function. </par>
* SAVESCREEN() function.
*
* __XSaveScreen() is a compatibility function, it is superseded by
* SAVESCREEN() which allow you to save part or all the screen into a
* variable. </par>
* variable.
* $EXAMPLES$
* // save the screen, display list of files than restore the screen
* SAVE SCREEN
@@ -60,10 +60,12 @@
* $STATUS$
* R
* $COMPLIANCE$
* __XSaveScreen() works exactly like CA-Clipper's __XSaveScreen() </par>
* __XSaveScreen() works exactly like CA-Clipper's __XSaveScreen()
* $PLATFORMS$
* __XSaveScreen() is part of the GT API, and supported only by some
* platforms. </par>
* platforms.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* RESTORE SCREEN,RESTSCREEN(),SAVESCREEN()
* $END$
@@ -79,18 +81,18 @@
* $SYNTAX$
* SAVE SCREEN
* $ARGUMENTS$
* none. </par>
* none.
* $RETURNS$
* SAVE SCREEN always return NIL. </par>
* SAVE SCREEN always return NIL.
* $DESCRIPTION$
* SAVE SCREEN save the image of the whole screen into an internal
* buffer, it also save current cursor position. The information could
* later be restored by REST SCREEN. Each call to SAVE SCREEN
* overwrite the internal buffer. </par>
* overwrite the internal buffer.
*
* SAVE SCREEN command is preprocessed into __XSaveScreen() function
* during compile time. Note that SAVE SCREEN TO is preprocessed into
* SAVESCREEN() function. </par>
* SAVESCREEN() function.
*
* $EXAMPLES$
* // save the screen, display list of files than restore the screen
@@ -102,10 +104,10 @@
* $STATUS$
* R
* $COMPLIANCE$
* __XSaveScreen() works exactly like CA-Clipper's __XSaveScreen() </par>
* __XSaveScreen() works exactly like CA-Clipper's __XSaveScreen()
* $PLATFORMS$
* __XSaveScreen() is part of the GT API, and supported only by some
* platforms. </par>
* platforms.
* $SEEALSO$
* RESTORE SCREEN,__XRESTSCREEN(),__XSAVESCREEN()
* $END$
@@ -123,19 +125,19 @@
* $ARGUMENTS$
* none.
* $RETURNS$
* __XRestScreen() always return NIL. </par>
* __XRestScreen() always return NIL.
* $DESCRIPTION$
* __XRestScreen() restore saved image of the whole screen from an
* internal buffer that was saved by __XSaveScreen(), it also restore
* cursor position. After a call to __XRestScreen() the internal buffer
* is cleared. </par>
* is cleared.
*
* RESTORE SCREEN command is preprocessed into __XRestScreen() function
* during compile time. Note that RESTORE SCREEN FROM is preprocessed
* into RESTSCREEN() function. </par>
* into RESTSCREEN() function.
*
* __XRestScreen() is a compatibility function, it is superseded by
* RESTSCREEN() which allow you to restore the screen from a variable. </par>
* RESTSCREEN() which allow you to restore the screen from a variable.
* $EXAMPLES$
* // save the screen, display list of files than restore the screen
* SAVE SCREEN
@@ -146,10 +148,12 @@
* $STATUS$
* R
* $COMPLIANCE$
* __XRestScreen() works exactly like CA-Clipper's __XRestScreen() </par>
* __XRestScreen() works exactly like CA-Clipper's __XRestScreen()
* $PLATFORMS$
* __XRestScreen() is part of the GT API, and supported only by some
* platforms. </par>
* platforms.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __XRESTSCREEN(),SAVE SCREEN,__XSAVESCREEN()
* $END$
@@ -165,18 +169,18 @@
* $SYNTAX$
* RESTORE SCREEN
* $ARGUMENTS$
* none. </par>
* none.
* $RETURNS$
* REST SCREEN always return NIL. </par>
* REST SCREEN always return NIL.
* $DESCRIPTION$
* Rest Screen restore saved image of the whole screen from an
* internal buffer that was saved by Save Screen, it also restore
* cursor position. After a call to Rest Screen the internal buffer
* is cleared. </par>
* is cleared.
*
* RESTORE SCREEN command is preprocessed into __XRestScreen() function
* during compile time. Note that RESTORE SCREEN FROM is preprocessed
* into RESTSCREEN() function. </par>
* into RESTSCREEN() function.
*
* $EXAMPLES$
* // save the screen, display list of files than restore the screen
@@ -188,10 +192,10 @@
* $STATUS$
* R
* $COMPLIANCE$
* Rest Screen() works exactly like CA-Clipper's Rest Screen </par>
* Rest Screen() works exactly like CA-Clipper's Rest Screen
* $PLATFORMS$
* Rest Screen is part of the GT API, and supported only by some
* platforms. </par>
* platforms.
* $SEEALSO$
* __XRESTSCREEN(),SAVE SCREEN,__XSAVESCREEN()
* $END$
@@ -208,40 +212,40 @@
* ALERT( <xMessage>, [<aOptions>], [<cColorNorm>], [<nDelay>] ) --> nChoice or NIL
* $ARGUMENTS$
* <xMessage> Message to display in the dialog box. <xMessage> can be
* of any Harbour type. </par>
* of any Harbour type.
* If <xMessage> is an array of Character strings, each element would
* be displayed in a new line. If <xMessage> is a Character
* string, you could split the message to several lines by placing
* a semicolon (;) in the desired places. </par>
* a semicolon (;) in the desired places.
*
* <aOptions> Array with available response. Each element should be
* Character string. If omitted, default is { "Ok" }. </par>
* Character string. If omitted, default is { "Ok" }.
*
* <cColorNorm> Color string to paint the dialog box with.
* If omitted, default color is "W+/R". </par>
* If omitted, default color is "W+/R".
*
* <nDelay> Number of seconds to wait to user response before abort.
* Default value is 0, that wait forever. </par>
* Default value is 0, that wait forever.
* $RETURNS$
* ALERT() return Numeric value representing option number chosen.
* If ESC was pressed, return value is zero. The return value is NIL
* if ALERT() is called with no parameters, or if <xMessage> type is
* not Character and HARBOUR_STRICT_CLIPPER_COMPATIBILITY option was
* used. If <nDelay> seconds had passed without user response, the
* return value is 1. </par>
* return value is 1.
* $DESCRIPTION$
* ALERT() display simple dialog box on screen and let the user select
* one option. The user can move the highlight bar using arrow keys or
* TAB key. To select an option the user can press ENTER, SPACE or the
* first letter of the option. </par>
* first letter of the option.
*
* If the program is executed with the //NOALERT command line switch,
* nothing is displayed and it simply returns NIL. This switch could
* be overridden with __NONOALERT(). </par>
* be overridden with __NONOALERT().
*
* If the GT system is linked in, ALERT() display the message using
* the full screen I/O system, if not, the information is printed to
* the standard output using OUTSTD(). </par>
* the standard output using OUTSTD().
* $EXAMPLES$
* LOCAL cMessage, aOptions, nChoice
*
@@ -270,21 +274,23 @@
* R
* $COMPLIANCE$
* This function is sensitive to HARBOUR_STRICT_CLIPPER_COMPATIBILITY
* settings. </par>
* settings.
*
* ON: <xMessage> accept Character values only and return NIL if other
* types are passed, </par>
* types are passed,
* OFF: <xMessage> could be any type, and internally converted to
* Character string. If type is Array, multi-line message is
* displayed. </par>
* displayed.
*
* ON: Only the first four valid <aOptions> are taken. </par>
* ON: Only the first four valid <aOptions> are taken.
* OFF: <aOptions> could contain as many as needed options.
*
* <cColorNorm> is a Harbour extension, or at least un-documented
* in Clipper 5.2 NG.
*
* <nDelay> is a Harbour extension.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* @...PROMPT,MENU TO,STDOUT(),__NONOALERT()
* $END$
@@ -300,21 +306,23 @@
* $SYNTAX$
* __NONOALERT() --> NIL
* $ARGUMENTS$
* This function takes no arguments. </par>
* This function takes no arguments.
* $RETURNS$
* __NONOALERT() always return NIL. </par>
* __NONOALERT() always return NIL.
* $DESCRIPTION$
* The //NOALERT command line switch cause Clipper to ignore calls to
* the ALERT() function, this function override this behavior
* and always display ALERT() dialog box. </par>
* and always display ALERT() dialog box.
* $EXAMPLES$
* // make sure alert are been displayed
* __NONOALERT()
* </fixed>
* $STATUS$
* R
* $FILES$
* Library is Rtl.lib
* $COMPLIANCE$
* __NONOALERT() is an undocumented CA-Clipper function </par>
* __NONOALERT() is an undocumented CA-Clipper function
* $END$
*/
@@ -330,12 +338,12 @@
* $RETURNS$
* <cString> A character string containing the character or characters required
* to move the screen cursor or print head to the start of a new line.
* The string will hold either CHR( 10 ) or CHR( 13 ) + CHR( 10 ). </par>
* The string will hold either CHR( 10 ) or CHR( 13 ) + CHR( 10 ).
* $DESCRIPTION$
* Returns a character string containing the character or characters
* required to move the screen cursor or print head to the start of a
* new line for the operating system that the program is running on
* (or thinks it is running on, if an OS emulator is being used). </par>
* (or thinks it is running on, if an OS emulator is being used).
* $EXAMPLES$
* // Get the newline character(s) for the current OS using defaults.
* STATIC s_cNewLine
@@ -352,7 +360,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This is an add-on Operating System Tool function. </par>
* This is an add-on Operating System Tool function.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* OS(),OUTSTD(),OUTERR()
* $END$
@@ -368,17 +378,18 @@
* $SYNTAX$
* hb_ColorIndex( <cColorSpec>, <nIndex> )
* $ARGUMENTS$
* <cColorSpec> is a Clipper color list </par>
* <cColorSpec> is a Clipper color list
*
* <nIndex> is the position of the color item to be extracted, the first
* position is the zero. </par>
* position is the zero.
* $RETURNS$
* The selected color string, or if anything goes wrong, and empty
* string </par>
* string
* $DESCRIPTION$
* Clipper has a color spec string, which has more than one
* color in it, separated with commas. This function is able to extract
* a given item from this list. You may use the manifest constants
* defined in color.ch to extract common Clipper colors. </par>
* defined in color.ch to extract common Clipper colors.
* $EXAMPLES$
* ? hb_ColorIndex( "W/N, N/W", CLR_ENHANCED ) // "N/W"
* </fixed>
@@ -388,7 +399,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* Was not part of CA-Clipper. </par>
* Was not part of CA-Clipper.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* ColorSelect()
* $END$
@@ -404,15 +417,17 @@
* $SYNTAX$
* DEVOUTPICT(<xExp>,<cPicture>[,<cColorString>]) --> NIL
* $ARGUMENTS$
* <xExp> is any valid expression. </par>
* <cPicture> is any picture transformation that TRANSFORM() can use. </par>
* <xExp> is any valid expression.
*
* <cPicture> is any picture transformation that TRANSFORM() can use.
*
* <cColorString> is an optional string that specifies a screen color to
* use in place of the default color when the output goes to the screen. </par>
* use in place of the default color when the output goes to the screen.
* $RETURNS$
* NIL </par>
* NIL
* $DESCRIPTION$
* Outputs any expression using a picture transformation instead of
* using the default transformation for the type of expression. </par>
* using the default transformation for the type of expression.
* $EXAMPLES$
* // Output a negative dollar amount using debit notation.
* DEVOUTPICT( -1.25, "@D$ 99,999.99 )
@@ -426,7 +441,9 @@
* R
* $COMPLIANCE$
* DEVOUTPICT() is mostly CA-Clipper compliant. Any differences are due
* to enhancements in the Harbour TRANSFORM() over CA-Clipper. </par>
* to enhancements in the Harbour TRANSFORM() over CA-Clipper.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* DEVOUT(),TRANSFORM()
* $END$
@@ -442,16 +459,18 @@
* $SYNTAX$
* __INPUT( <cMessage> ) --> <cString>
* $ARGUMENTS$
* <cMessage> is any valid expression. </par>
* <cMessage> is any valid expression.
* $RETURNS$
* Macroed <cString> </par>
* Macroed <cString>
* $DESCRIPTION$
* This function waits for a console input and returns macroed
* expression entered. </par>
* expression entered.
* $STATUS$
* S
* $COMPLIANCE$
* __INPUT() is fully CA-Clipper compliant. </par>
* __INPUT() is fully CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __WAIT(),__ACCEPT()
* $END$
@@ -469,19 +488,21 @@
* $ARGUMENTS$
* <cFile> is either "PRINTER" (note the uppercase) in which console
* output is SET to PRINTER, or a name of a text file with a default
* ".txt" extension, that is used to redirect console output. </par>
* ".txt" extension, that is used to redirect console output.
* $RETURNS$
* __TextSave() always return NIL. </par>
* __TextSave() always return NIL.
* $DESCRIPTION$
* __TextSave() is used in the preprocessing of the TEXT TO command to
* redirect the console output while saving old settings that can be
* restored later by __TextRestore(). </par>
* restored later by __TextRestore().
* $STATUS$
* R
* $COMPLIANCE$
* __TextSave() is an Undocumented CA-Clipper function </par>
* __TextSave() is an Undocumented CA-Clipper function
* $PLATFORMS$
* ALL </par>
* ALL
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* SET(),SET ALTERNATE,SET PRINTER,TEXT,__TextRestore()
* $END$
@@ -497,19 +518,21 @@
* $SYNTAX$
* __TextRestore() --> NIL
* $ARGUMENTS$
* none. </par>
* none.
* $RETURNS$
* __TextRestore() always return NIL. </par>
* __TextRestore() always return NIL.
* $DESCRIPTION$
* __TextRestore() is used in the preprocessing of the TEXT TO command
* to restore console output settings that were previously saved by
* __TextSave(). </par>
* __TextSave().
* $STATUS$
R
* R
* $COMPLIANCE$
* __TextRestore() is an Undocumented CA-Clipper function </par>
* __TextRestore() is an Undocumented CA-Clipper function
* $PLATFORMS$
All </par>
* All
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* SET(),SET ALTERNATE,SET PRINTER,TEXT,__TextSave()
* $END$
@@ -525,12 +548,12 @@
* $SYNTAX$
* __WAIT( <cMessage> ) --> <cKey>
* $ARGUMENTS$
* <cMessage> is a string. </par>
* <cMessage> is a string.
* $RETURNS$
* Pressed key. </par>
* Pressed key.
* $DESCRIPTION$
* This function stops the application until a key is pressed. The key
* must be in the range 32..255. Control keys are not processed. </par>
* must be in the range 32..255. Control keys are not processed.
* $EXAMPLES$
* // Wait for a key stroke
* __Wait( "Press a key to continue" )
@@ -543,7 +566,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* __WAIT() is fully CA-Clipper compliant. </par>
* __WAIT() is fully CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* __ACCEPT(),__INPUT()
* $END$

View File

@@ -57,6 +57,7 @@
* $PLATFORMS$
* All </par>
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* @...GET,@...PROMPT,MENU TO,READ,SET KEY,__AtPrompt(),__MenuTo()
* $END$

View File

@@ -24,9 +24,13 @@
* LABEL FORM <cLabelName> [TO PRINTER] [TO FILE <cFile>] [<cScope>] [WHILE <bWhile> ] [FOR <bFor> ] [SAMPLE] [NOCONSOLE]
* $ARGUMENTS$
* <cLabelName> Name of label file </par>
*
* <cFile> Name of an alternate file </par>
*
* <cScope> Expression of a scoping condition </par>
*
* <bWhile> WHILE condition </par>
*
* <bFor> FOR condition </par>
* $DESCRIPTION$
* This command allows labels to be printed based on the format outlined in
@@ -65,11 +69,15 @@
* USE
* RETURN NIL
*
* </fixed>
*
* $STATUS$
* R
* $COMPLIANCE$
* This command is CA-Clipper compliant. </par>
* $PLATFORMS$
* ALL </par>
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* REPORT FORM
* $END$

View File

@@ -23,24 +23,29 @@
* $SYNTAX$
* REPORT FORM <cReportName> [TO PRINTER] [TO FILE <cFile>] [<cScope>] [WHILE <bWhile> ] [FOR <bFor> ] [PLAIN |HEADING <cHeading>] [NOEJECT] [SUMMARY] [NOCONSOLE]
* $ARGUMENTS$
* <cReportName> Name of report file </par>
* <cFile> Name of alternate file </par>
* <cScope> Scope. </par>
* <bWhile> Logical expression of WHILE condition . </par>
* <bFor> Logical expression of FOR condition. </par>
* <cHeading> Report heading </par>
* <cReportName> Name of report file
*
* <cFile> Name of alternate file
*
* <cScope> Scope.
*
* <bWhile> Logical expression of WHILE condition .
*
* <bFor> Logical expression of FOR condition.
*
* <cHeading> Report heading
* $RETURNS$
* NIL </par>
* NIL
* $DESCRIPTION$
* This command prints out the report named <cReportName>, which is a standard
* FRM file. The file extension is not required because FRM will be assumed.
* The SET PATH TO and SET DEFAULT TO commands affect the search for the file
* <cReportName>; unless a drive and path are specified in <cReportName>, REPORT
* will search the path specified in the SET PATH command if it cannot find the
* report form in the current directory. </par>
* report form in the current directory.
* The output of the report will be offset based on the setting of the SET MARGIN
* TO value. </par>
* TO value.
* By default, output will go to the console; however, it may be controlled via
* either the TO PRINTER or TO FILE clause. If the output is to go to the file,
@@ -49,49 +54,45 @@
* <cScope> is the scope for this command. Valid scopes include NEXT <expN> (where
* <expN> is tile number of records), RECORD <expN> (a specific record to be
* displayed), REST (all records from the current record position), and ALL
* (all records). The default is ALL. </par>
* (all records). The default is ALL.
* Both logical expressions may work in conjuntion with one another, where <bFor>
* is the logical expression for the FOR condition (for records to be displayed
* within a given range) and <bWhile> for the WHILE condition (for records to be
* displayed until the condition fails). </par>
* displayed until the condition fails).
* If the PLAIN clause is specified, date and page numbers are suppressed. In
* addition, there is no automatic page breaking, and the report title and
* column headings appear only once at the top of the form. </par>
* column headings appear only once at the top of the form.
* If the HEADING clause is used, <cHeading> is displayed on the first title
* of each report page. The value of <cHeading> is evaluated only once before
* executing the report; varying the values of <cHeading> is not allowed. The
* PLAIN clause will take precedence over the HEADING clause if both are included. </par>
* PLAIN clause will take precedence over the HEADING clause if both are included.
* If the NOEJECT clause is used, the initial page eject on the report will not be
* issued when the output clause TO PRINTER is specified. Otherwise, this clause has
* no effect. </par>
* no effect.
* If the SUMMARY Clause is specified, the report will contain only groups, subgroups,
* and grand total information. The detailed title item information will be ignored. </par>
* and grand total information. The detailed title item information will be ignored.
* If the NOCONSOLE clause is specified,output to the console will be turned off
* while this command is being executed. </par>
* while this command is being executed.
* $EXAMPLES$
* FUNCTION() MAIN
*
* USE Test New
*
* Report FORM EE
*
* USE
*
* RETURN NIL
</fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This Command is CA-Clipper compliant. </par>
* This Command is CA-Clipper compliant.
* $PLATFORMS$
* ALL </par>
* ALL
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* LABEL FORM
* $END$

View File

@@ -31,24 +31,26 @@
* $ARGUMENTS$
* <variable_name> = either a string that contains the variable's name or
* an one-dimensional array of strings with variable names
* No skeleton are allowed here. </par>
* No skeleton are allowed here.
* $RETURNS$
* Nothing </par>
* Nothing
* $DESCRIPTION$
* This function can be called either by the harbour compiler or by user.
* The compiler always passes the item of IT_SYMBOL type that stores the
* name of variable. </par>
* name of variable.
* If a variable with the same name exists already then the new
* variable is not created - the previous value remains unchanged. </par>
* variable is not created - the previous value remains unchanged.
* If it is first variable with this name then the variable is
* initialized with .T. value. </par>
* initialized with .T. value.
* $EXAMPLES$
* None Avaliable
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour extension </par>
* This function is a Harbour extension
* $FILES$
* Library is Vm.lib
* $SEEALSO$
*
* $END$
@@ -66,23 +68,25 @@
* $ARGUMENTS$
* <variable_name> = either a string that contains the variable's name or
* an one-dimensional array of strings with variable names
* No skeleton are allowed here. </par>
* No skeleton are allowed here.
* $RETURNS$
* Nothing </par>
* Nothing
* $DESCRIPTION$
* This function can be called either by the harbour compiler or by user.
* The compiler always passes the item of IT_SYMBOL type that stores the
* name of variable. </par>
* name of variable.
* If a variable with the same name exists already then the value of old
* variable is hidden until the new variable is released. The new variable
* is always initialized to NIL value. </par>
* is always initialized to NIL value.
* $EXAMPLES$
* None Avaliable
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour extension </par>
* This function is a Harbour extension
* $FILES$
* Library is Vm.lib
* $END$
*/
@@ -98,21 +102,21 @@
* $ARGUMENTS$
* <variable_name> = either a string that contains the variable's name or
* an one-dimensional array of strings with variable names
* No skeleton are allowed here. </par>
* No skeleton are allowed here.
* $RETURNS$
* Nothing </par>
* Nothing
* $DESCRIPTION$
* This function releases values stored in memory variable. It shouldn't
* be called directly, rather it should be placed into RELEASE command. </par>
* be called directly, rather it should be placed into RELEASE command.
* If the released variable is a PRIVATE variable then previously hidden
* variable with the same name becomes visible after exit from the
* procedure where released variable was created. If you access
* the released variable in the same function/procedure where it
* was created the the NIL value is returned. You can however assign
* a new value to released variable without any side effects. </par>
* a new value to released variable without any side effects.
*
* It releases variable even if this variable was created in different
* procedure </par>
* procedure
* $EXAMPLES$
*
* PROCEDURE MAIN()
@@ -139,8 +143,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour extension </par>
* $SEEALSO$
* This function is a Harbour extension
* $FILES$
* Library is Vm.lib
*
* $END$
*/
@@ -156,31 +161,31 @@
* __MVRELEASE( <skeleton>, <include_exclude_flag> )
* $ARGUMENTS$
* <skeleton> = string that contains the wildcard mask for variables' names
* that will be released. Supported wildcards: '*' and '?' </par>
* that will be released. Supported wildcards: '*' and '?'
* <include_exclude_flag> = logical value that specifies if variables
* that match passed skeleton should be either included in deletion
* (if .T.) or excluded from deletion (if .F.) </par>
* (if .T.) or excluded from deletion (if .F.)
* $RETURNS$
* Nothing </par>
* Nothing
* $DESCRIPTION$
* This function releases values stored in memory variables. It shouldn't
* be called directly, it should be placed into RELEASE ALL command. </par>
* be called directly, it should be placed into RELEASE ALL command.
* If the released variable is a PRIVATE variable then previously hidden
* variable with the same name becomes visible after exit from the
* procedure where released variable was created. If you access
* the released variable in the same function/procedure where it
* was created the the NIL value is returned. You can however assign
* a new value to released variable without any side effects.
* PUBLIC variables are not changed by this function. </par>
* PUBLIC variables are not changed by this function.
* $EXAMPLES$
* None Avaliable
* </fixed>
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour extension </par>
* $SEEALSO$
*
* This function is a Harbour extension
* $FILES$
* Library is Vm.lib
* $END$
*/
@@ -194,18 +199,18 @@
* $SYNTAX$
* __MVSCOPE( <cVarName> )
* $ARGUMENTS$
* <cVarName> = a string with a variable name to check </par>
* <cVarName> = a string with a variable name to check
* $RETURNS$
* The symbolic values are defined in include/hbmemvar.ch </par>
* HB_MV_NOT_FOUND =variable is not declared (not found in symbol table) </par>
* HB_MV_UNKNOWN =if variable doesn't exist (but found in symbol table) </par>
* The symbolic values are defined in include/hbmemvar.ch
* HB_MV_NOT_FOUND =variable is not declared (not found in symbol table)
* HB_MV_UNKNOWN =if variable doesn't exist (but found in symbol table)
* HB_MV_ERROR =if information cannot be obtained (memory error
* or argument error) </par>
* HB_MV_PUBLIC =for public variables </par>
* or argument error)
* HB_MV_PUBLIC =for public variables
* HB_MV_PRIVATE_GLOBAL =for private variables declared outside of current
* function/procedure </par>
* function/procedure
* HB_MV_PRIVATE_LOCAL =for private variables declared in current
* function/procedure </par>
* function/procedure
* $EXAMPLES$
*
* PROCEDURE MAIN()
@@ -237,7 +242,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour Extension </par>
* This function is a Harbour Extension
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* include/hbmemvar.ch
* $END$
@@ -253,20 +260,24 @@
* $SYNTAX$
* __MVCLEAR()
* $ARGUMENTS$
* None </par>
* None
* $RETURNS$
* Nothing </par>
* Nothing
* $DESCRIPTION$
* This function releases all PRIVATE and PUBLIC variables. </par>
* It is used to implement CLEAR MEMORY statement. </par>
* This function releases all PRIVATE and PUBLIC variables.
* It is used to implement CLEAR MEMORY statement.
* The memory occupied by all visible variables are released - any
* attempt to access the variable will result in a runtime error.
* You have to reuse PRIVATE or PUBLIC statement to create again
* the variable that was cleared by this function. </par>
* the variable that was cleared by this function.
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour extension </par>
* This function is a Harbour extension
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* __MVPUBLIC()
* $END$
*/
@@ -281,35 +292,35 @@
* __MVDBGINFO( <nScope> [, <nPosition> [, @<cVarName>] ] )
* $ARGUMENTS$
* <nScope> = the scope of variables for which an information is asked
* Supported values (defined in hbmemvar.ch) </par>
* HB_MV_PUBLIC </par>
* HB_MV_PRIVATE (or any other value) </par>
* Supported values (defined in hbmemvar.ch)
* HB_MV_PUBLIC
* HB_MV_PRIVATE (or any other value)
* <nPosition> = the position of asked variable on the list of variables
* with specified scope - it should start from position 1 </par>
* with specified scope - it should start from position 1
* <cVarName> = the value is filled with a variable name if passed by
* reference and <nPosition> is specified </par>
* reference and <nPosition> is specified
* $RETURNS$
* The return value depends on the number of arguments passed </par>
* The return value depends on the number of arguments passed
* $DESCRIPTION$
* This function retrieves the information about memvar variables. </par>
* This function retrieves the information about memvar variables.
* It returns either the number of variables with given scope (when the
* first argument is passed only) or a value of variable identified by its
* position in the variables' list (when second argument is passed). </par>
* position in the variables' list (when second argument is passed).
* It also returns the name of a variable if optional third argument
* is passed by reference. </par>
* is passed by reference.
*
* If requested variable doesn't exist (requested position is
* greater then the number of defined variables) then NIL value is
* returned and variable name is set to "?" </par>
* returned and variable name is set to "?"
*
* The dynamic symbols table is used to find a PUBLIC variable then
* the PUBLIC variables are always sorted alphabetically. The PRIVATE
* variables are sorted in the creation order. </par>
* variables are sorted in the creation order.
*
* Note: </par>
* Note:
* Due to dynamic nature of memvar variables there is no guarantee that
* successive calls to retrieve the value of <Nth> PUBLIC variable will
* return the value of the same variable. </par>
* return the value of the same variable.
* $EXAMPLES$
*
* #include <hbmemvar.ch>
@@ -379,7 +390,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function should be called from the debugger only. </par>
* This function should be called from the debugger only.
* $FILES$
* Library is Vm.lib
* $END$
*/
@@ -393,13 +406,13 @@
* $SYNTAX$
* __MVGET( <cVarName> ) --> <xVar>
* $ARGUMENTS$
* <cVarName> - string that specifies the name of variable </par>
* <cVarName> - string that specifies the name of variable
* $RETURNS$
* <xVar> The value of variable </par>
* <xVar> The value of variable
* $DESCRIPTION$
* This function returns the value of PRIVATE or PUBLIC variable if
* this variable exists otherwise it generates a runtime error. </par>
* The variable is specified by its name passed as the function parameter. </par>
* this variable exists otherwise it generates a runtime error.
* The variable is specified by its name passed as the function parameter.
* $EXAMPLES$
* FUNCTION MEMVARBLOCK( cMemvar )
* RETURN {|x| IIF( PCOUNT()==0, __MVGET( cMemvar ),;
@@ -408,9 +421,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour extension </par>
* This function is a Harbour extension
* $SEEALSO$
* __MVPUT()
* $FILES$
* Library is Vm.lib
* $END$
*/
@@ -424,17 +439,17 @@
* $SYNTAX$
* __MVGET( <cVarName> [, <xValue>] ) --> <xValue>
* $ARGUMENTS$
* <cVarName> - string that specifies the name of variable </par>
* <cVarName> - string that specifies the name of variable
* <xValue> - a value of any type that will be set - if it is not
* specified then NIL is assumed </par>
* specified then NIL is assumed
* $RETURNS$
* <xValue> A value assigned to the given variable. </par>
* <xValue> A value assigned to the given variable.
* $DESCRIPTION$
* This function sets the value of PRIVATE or PUBLIC variable if
* this variable exists otherwise it generates a runtime error.
* The variable is specified by its name passed as the function
* parameter. </par>
* If a value is not specified then the NIL is assumed </par>
* parameter.
* If a value is not specified then the NIL is assumed
* $EXAMPLES$
* FUNCTION MEMVARBLOCK( cMemvar )
* RETURN {|x| IIF( PCOUNT()==0, __MVGET( cMemvar ),;
@@ -443,7 +458,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is a Harbour extension </par>
* This function is a Harbour extension
* $FILES$
* Library is Vm.lib
* $SEEALSO$
* __MVPUT()
* $END$
@@ -459,9 +476,9 @@
* $SYNTAX$
* MEMVARBLOCK( <cMemvarName> ) --> <bBlock>
* $ARGUMENTS$
* <cMemvarName> - a string that contains the name of variable </par>
* <cMemvarName> - a string that contains the name of variable
* $RETURNS$
* <bBlock> a codeblock that sets/get the value of variable </par>
* <bBlock> a codeblock that sets/get the value of variable
* $DESCRIPTION$
* This function returns a codeblock that sets/gets the value of
* PRIVATE or PUBLIC variable. When this codeblock is evaluated
@@ -469,7 +486,7 @@
* of given variable. If the second parameter is passed for
* the codeblock evaluation then its value is used to set the new
* value of given variable - the passed value is also returned
* as a value of the codeblock evaluation. </par>
* as a value of the codeblock evaluation.
* $EXAMPLES$
* PROCEDURE MAIN()
* LOCAL cbSetGet
@@ -484,9 +501,11 @@
* $STATUS$
* R
* $COMPLIANCE$
* This function is Ca-Clipper compatible </par>
* This function is Ca-Clipper compatible
* $SEEALSO$
* __MVGET(),__MVPUT()
* $FILES$
* Library is Rtl.lib
* $END$
*/
@@ -500,12 +519,12 @@
* $SYNTAX$
* FIELDBLOCK( <cFieldName> ) --> bFieldBlock
* $ARGUMENTS$
* <cFieldName> is a string that contain the field name. </par>
* <cFieldName> is a string that contain the field name.
* $RETURNS$
* FIELDBLOCK() return a code block that when evaluate could retrieve
* field value or assigning a new value to the field. If <cFieldName>
* is not specified or from type other than character, FIELDBLOCK()
* return NIL. </par>
* return NIL.
* $DESCRIPTION$
* FIELDBLOCK() return a code block that sets/gets the value of field.
* When this code block is evaluated without any parameters passed then
@@ -513,10 +532,10 @@
* is evaluated with a parameter, than its value is used to set a new
* value to the field, this value is also return by the block. If the
* block is evaluate and there is no field with the name <cFieldName>
* in the current work area, the code block return NIL. </par>
* in the current work area, the code block return NIL.
*
* Note that FIELDBLOCK() works on the current work area, if you need
* a specific work area code block use FIELDWBLOCK() instead. </par>
* a specific work area code block use FIELDWBLOCK() instead.
* $EXAMPLES$
* // open a file named Test that have a field named "name"
* LOCAL bField
@@ -530,9 +549,11 @@
* R
* $COMPLIANCE$
* If the block is evaluate and there is no field with the name
* <cFieldName> in the current work area, the code block return NIL. </par>
* <cFieldName> in the current work area, the code block return NIL.
*
* CA-Clipper would raise BASE/1003 error if the field does not exist. </par>
* CA-Clipper would raise BASE/1003 error if the field does not exist.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* EVAL(),FIELDWBLOCK(),MEMVARBLOCK()
* $END$
@@ -548,15 +569,15 @@
* $SYNTAX$
* FIELDWBLOCK( <cFieldName>, <nWorkArea> ) --> bFieldBlock
* $ARGUMENTS$
* <cFieldName> is a string that contain the field name. </par>
* <cFieldName> is a string that contain the field name.
*
* <nWorkArea> is the work area number in which <cFieldName> exist. </par>
* <nWorkArea> is the work area number in which <cFieldName> exist.
* $RETURNS$
* FIELDWBLOCK() return a code block that when evaluate could retrieve
* field value or assigning a new value for a field in a given work
* area. If <cFieldName> is not specified or from type other than
* character, or if <nWorkArea> is not specified or is not numeric
* FIELDWBLOCK() return NIL. </par>
* FIELDWBLOCK() return NIL.
* $DESCRIPTION$
* FIELDWBLOCK() return a code block that sets/gets the value of field
* from a given work area. When this code block is evaluated without
@@ -565,7 +586,7 @@
* value is used to set a new value to the field, this value is also
* return by the block. If the block is evaluate and there is no field
* with the name <cFieldName> in work area number <nWorkArea>, the code
* block return NIL. </par>
* block return NIL.
* $EXAMPLES$
* LOCAL bField
* // this block work on the field "name" that exist on work area 2
@@ -588,9 +609,11 @@
* R
* $COMPLIANCE$
* If the block is evaluate and there is no field with the name
* <cFieldName> in the given work area, the code block return NIL. </par>
* <cFieldName> in the given work area, the code block return NIL.
*
* CA-Clipper would raise BASE/1003 error if the field does not exist. </par>
* CA-Clipper would raise BASE/1003 error if the field does not exist.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* EVAL(),FIELDBLOCK(),MEMVARBLOCK()
* $END$
@@ -604,23 +627,27 @@
* $ONELINER$
* Retrieves the type of an expression
* $SYNTAX$
* TYPE( <cExp> ) --> <cReturnType>
* TYPE( <cExp> ) --> <cRetType>
* $ARGUMENTS$
* <cExp> must be a character expression. </par>
* <cExp> must be a character expression.
* $RETURNS$
* <cReturnType> a string indicating the type of the passed expression. </par>
* <cRetType> a string indicating the type of the passed expression.
*
* "A" - array </par>
* "B" - block </par>
* "C" - string </par>
* "D" - date </par>
* "L" - logical </par>
* "M" - memo </par>
* "N" - numeric </par>
* "O" - object </par>
* "U" - NIL, local, or static variable, or not linked-in function </par>
* "UE" - syntax error in the expression or invalid arguments </par>
* "UI" - function with non-reserved name was requested </par>
* <table>
* <cRetType> Meaning
*
* "A" array
* "B" block
* "C" string
* "D" date
* "L" logical
* "M" memo
* "N" numeric
* "O" object
* "U" NIL, local, or static variable, or not linked-in function
* "UE" syntax error in the expression or invalid arguments
* "UI" function with non-reserved name was requested
* </table>
* $DESCRIPTION$
* This function returns a string which represents the data type
* of the argument. The argument can be any valid Harbour expression.
@@ -629,18 +656,18 @@
* is returned (in other words there is no call for passed UDF function
* during a data type determination - this is Clipper compatible
* behavior). Additionally if requested user defined function is not
* linked into executable then "U" is returned. </par>
* linked into executable then "U" is returned.
*
* The data type of expression is checked by invoking a macro compiler
* and by evaluation of generated code (if there is no syntax errors).
* This causes that TYPE() cannot determine a type of local or static
* variables - only symbols visible at runtime can be checked. </par>
* variables - only symbols visible at runtime can be checked.
*
* Notice the subtle difference between TYPE and VALTYPE functions.
* VALTYPE() function doesn't call a macro compiler - it simply checks
* the type of passed argument of any type. TYPE() requires a string
* argument with a valid Harbour expression - the data type of this
* expression is returned. </par>
* expression is returned.
* $EXAMPLES$
* ? TYPE( "{ 1, 2 }" ) //prints "A"
* ? TYPE( "IIF(.T., SUBSTR('TYPE',2,1), .F.)" ) //prints "C"
@@ -667,18 +694,20 @@
* R
* $COMPLIANCE$
*
* - Incompatibility with Clipper: </par>
* In the following code: </par>
* - Incompatibility with Clipper:
* In the following code:
*
* PRIVATE lCond := 0 </par>
* ? TYPE( "IIF( lCond, 'true', MyUDF() )" ) </par>
* PRIVATE lCond := 0
* ? TYPE( "IIF( lCond, 'true', MyUDF() )" )
*
* Clipper will print "UE" - in Harbour the output will be "UI" </par>
* Clipper will print "UE" - in Harbour the output will be "UI"
*
* - if "UI" is returned then the syntax of the expression is
* correct. However invalid arguments can be passed to
* function/procedure that will cause runtime errors during
* evaluation of expression. </par>
* evaluation of expression.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* VALTYPE()
* $END$
@@ -694,12 +723,12 @@
* $SYNTAX$
* VALTYPE( <xExp> ) --> <cReturnType>
* $ARGUMENTS$
* <xExp> is any valid expression. </par>
* <xExp> is any valid expression.
* $RETURNS$
* <cReturnType> a character indicating the type of the passed expression. </par>
* <cReturnType> a character indicating the type of the passed expression.
* $DESCRIPTION$
* This function returns one character which represents the date type
* of the argument. </par>
* of the argument.
* $EXAMPLES$
* See Test
* </fixed>
@@ -718,7 +747,9 @@
* $STATUS$
* R
* $COMPLIANCE$
* VALTYPE() is fully CA-Clipper compliant. </par>
* VALTYPE() is fully CA-Clipper compliant.
* $FILES$
* Library is Rtl.lib
* $SEEALSO$
* TYPE()
* $END$

View File

@@ -462,7 +462,7 @@ FUNCTION ProcessWww()
* oHtm:WritePar( "" )
ENDIF
oHtm:WriteParBold( " Examples" )
oHtm:WriteText("<DD><PRE>")
oHtm:WriteText("<PRE>")
nMode := D_EXAMPLE
lAddBlank := .T.
lAddEndPreTag:=.T.
@@ -835,6 +835,8 @@ local npos,nposend
cOldLine := LEFT( cReturn, nPos - 1 )
cReturn := STRTRAN( cReturn, cOldLine, "" )
IF AT( "@", cOldLine ) > 0 .OR. AT( "()", cOldLine ) > 0 .OR. AT( "<", cOldLine ) > 0 .OR. AT( "_", cOldLine ) > 0
cOldLine:=STRTRAN(cOldLine,"<","&lt;")
cOldLine:=STRTRAN(cOldLine,">","&gt;")
lArgBold := .T.
ENDIF
ENDIF
@@ -918,7 +920,7 @@ if at('<par>',cBuffer)==0 .and. !empty(cBuffer) .and. cstyle<>"Example"
endif
if empty(cBuffer)
oHtm:WriteText("<br>")
oHtm:WriteText("<dd><br></dd>")
endif
if cStyle<>"Example" .and. at("<table>",cBuffer)==0 .and. AT("<fixed>",cBuffer)=0
@@ -937,6 +939,10 @@ if cStyle<>"Example" .and. at("<table>",cBuffer)==0 .and. AT("<fixed>",cBuffer)=
cReturn:=STRTRAN(cReturn,cOldLine,"")
IF AT( "@", cOldLine ) > 0 .OR. AT( "()", cOldLine ) > 0 .OR. AT( "<", cOldLine ) > 0 .OR. AT( "_", cOldLine ) > 0
lArgBold := .T.
cOldLine:=STRTRAN(cOldLine,"<","&lt;")
cOldLine:=STRTRAN(cOldLine,">","&gt;")
ENDIF
if lArgBold
cReturn:=' <par><b>'+cOldLine+'</b> '+cReturn+' </par>'
@@ -1011,7 +1017,8 @@ If AT('<fixed>',cBuffer)>0 .or. cStyle="Example"
IF AT( '<fixed>', cBuffer ) = 0 .OR. !EMPTY( cBuffer )
cBuffer := STRTRAN( cBuffer, "<par>", "" )
cBuffer := STRTRAN( cBuffer, "<fixed>", "" )
oHtm:WriteText("<br>")
oHtm:WritePar( cBuffer )
ENDIF
DO WHILE !lendFixed
@@ -1032,7 +1039,7 @@ If AT('<fixed>',cBuffer)>0 .or. cStyle="Example"
oHtm:WritePar( cOldLine )
ENDIF
ENDDO
oHtm:WriteText( "</pre><br>")
end
if AT('<table>',cBuffer)>0
do while !lendTable
@@ -1074,6 +1081,16 @@ Local nPos,cItem,cItem2,cItem3,nColorpos,cColor,cItem4
nColorpos:=ASCAn(aColorTable,{|x,y| upper(x)==upper(ccolor)})
cColor:=aColortable[nColorPos]
Endif
if empty(cBuffer)
citem:=''
citem2:=''
citem3:=''
citem4:=''
else
cBuffer:=STRTRAN(cBuffer,"<","&lt;")
cBuffer:=STRTRAN(cBuffer,">","&gt;")
cItem := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ) )
if nNum==2
@@ -1090,7 +1107,7 @@ Local nPos,cItem,cItem2,cItem3,nColorpos,cColor,cItem4
cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem3, "" ) )
cItem4 := SUBSTR( cBuffer, 1 )
ENDIF
endif
if cColor<>NIL
AADD(afiTable,"<Font color="+ccolor+">"+rtrim(ltrim(cItem))+'</font>')
AADD(asiTable,"<Font color="+ccolor+">"+cItem2+'</font>')
@@ -1099,21 +1116,19 @@ Local nPos,cItem,cItem2,cItem3,nColorpos,cColor,cItem4
AADD(asiTable,cItem2)
endif
IF !EMPTY( cItem3 )
if cColor <>NIL
AADD(atiTable,"<Font color="+ccolor+">"+cItem3+'</font>')
ELSE
AADD( atiTable, cItem3 )
Endif
ENDIF
IF !EMPTY( cItem4 )
if cColor <>NIL
AADD(afoiTable,"<Font color="+ccolor+">"+cItem4+'</font>')
ELSE
AADD( afoiTable, cItem4 )
Endif
ENDIF
Return Nil
Function GenhtmTable(oHtm)
@@ -1123,13 +1138,17 @@ LOCAL x
oHtm:WriteText('<table border=1>') //-4
FOR x:=1 to len(asitable)
if nNumTableItems ==2
oHtm:WriteText('<tr><td><pre>'+afitable[x]+'</td><td><pre>' +asitable[x]+'</td></tr> ')
elseif nNumTableItems ==3
oHtm:WriteText('<tr><td><pre>'+afitable[x]+'</td><td><pre>' +asitable[x]+'</td><td><pre>'+atitable[x]+'</td></tr> ')
elseif nNumTableItems ==4
oHtm:WriteText('<tr><td><pre>'+afitable[x]+'</td><td><pre>' +asitable[x]+'</td><td><pre>'+atitable[x]+'</td><td><pre>'+afoitable[x]+'</td></tr> ')
Endif
If !empty(asitable[x])
if nNumTableItems ==2
oHtm:WriteText('<tr><td>'+afitable[x]+'</td><td>' +asitable[x]+'</td></tr> ')
elseif nNumTableItems ==3
oHtm:WriteText('<tr><td>'+afitable[x]+'</td><td>' +asitable[x]+'</td><td>'+atitable[x]+'</td></tr> ')
elseif nNumTableItems ==4
oHtm:WriteText('<tr><td>'+afitable[x]+'</td><td>' +asitable[x]+'</td><td>'+atitable[x]+'</td><td>'+afoitable[x]+'</td></tr> ')
Endif
Else
oHtm:WriteText('<tr><td></td></tr> ')
endif
Next
oHtm:Writetext("</table>")
@@ -1137,6 +1156,9 @@ Next
oHtm:WriteText("<br>")
afiTable:={}
asitable:={}
atitable := {}
afoitable := {}
Return Nil

View File

@@ -897,6 +897,7 @@ FUNCTION GenNgTable( oNgi )
LOCAL nPos
LOCAL aLensFItem := {}
LOCAL aLensSItem := {}
LOCAL cMaxItem := ''
LOCAL nmax3
LOCAL nmax4
LOCAL npos3
@@ -905,49 +906,48 @@ FUNCTION GenNgTable( oNgi )
LOCAL nSpace4
LOCAL aLensTItem := {}
LOCAL aLensfoItem := {}
LOCAL nLen
FOR X := 1 TO LEN( afitable )
IF AT( "^", afitable[ x ] ) > 0
AADD( aLenssItem, LEN( SUBSTR( STRTRAN( afitable[ x ], "^n", "" ), 5 ) ) )
ELSE
if !empty(afiTable[ x ] )
AADD( aLensFItem, LEN( afiTable[ x ] ) )
ENDIF
end
NEXT
FOR X := 1 TO LEN( asiTable )
IF AT( "^", asitable[ x ] ) > 0
AADD( aLenssItem, LEN( SUBSTR( STRTRAN( asitable[ x ], "^n", "" ), 5 ) ) )
ELSE
if !empty(asiTable[ x ] )
AADD( aLensSItem, LEN( asiTable[ x ] ) )
ENDIF
end
NEXT
IF LEN( afoitable ) > 0
FOR X := 1 TO LEN( afoitable )
IF AT( "^", afoitable[ x ] ) > 0
AADD( aLensfoItem, LEN( SUBSTR( STRTRAN( afoitable[ x ], "^n", "" ), 5 ) ) )
ELSE
if !empty(afoiTable[ x ] )
AADD( aLensfoItem, LEN( afoiTable[ x ] ) )
ENDIF
end
NEXT
ENDIF
IF LEN( atitable ) > 0
FOR X := 1 TO LEN( atitable )
IF AT( "^", atitable[ x ] ) > 0
AADD( aLenstItem, LEN( SUBSTR( STRTRAN( atitable[ x ], "^n", "" ), 5 ) ) )
ELSE
if !empty( atiTable[ x ] )
AADD( aLenstItem, LEN( atiTable[ x ] ) )
ENDIF
end
NEXT
ENDIF
ASORT( aLensFItem,,, { | x, y | x > y } )
ASORT( aLensSItem,,, { | x, y | x > y } )
IF LEN( afoitable ) > 0
IF LEN( afoitable ) > 0 .and. nNumTableItems == 4
ASORT( alenstitem,,, { | x, y | x > y } )
nmax3 := alenstitem[ 1 ]
npos := maxelem( atitable )
nPos3 := ASCAN( alenstitem, { | x | x == nPos } )
ASORT( aLensFoItem,,, { | x, y | x > y } )
nmax4 := alensfoitem[ 1 ]
nPos := maxelem( afoitable )
nPos4 := ASCAN( alensfoitem, { | x | x == nPos } )
ENDIF
IF LEN( atitable ) > 0
IF LEN( atitable ) > 0 .and. nNumTableItems == 3
ASORT( alenstitem,,, { | x, y | x > y } )
nmax3 := alenstitem[ 1 ]
npos := maxelem( atitable )
@@ -955,54 +955,114 @@ FUNCTION GenNgTable( oNgi )
ENDIF
nMax := alenssitem[ 1 ]
nMax:=aLenssItem[1]
nPos := maxelem( asitable )
nPos1 := ASCAN( aLenssItem, { | x | x == nPos } )
oNgi:WritePar( "" )
// nMax2:=checkcar(aTable,1)+1
nMax2 := alensfitem[ 1 ]
nPos := maxelem( afitable )
nPos2 := ASCAN( alensfitem, { | x | x == nPos } )
IF nNumTableItems == 2
oNgi:WritePar( "É" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ë" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "»", .F. ) //-4
cMaxItem:=' '+"É" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ë" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "»"
if LEN(cMaxItem)<76
oNgi:WritePar(" É" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ë" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "»", .F. ) //-4
Else
oNgi:WritePar( "É" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ë" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "»", .F. ) //-4
Endif
ELSEIF nNumTableItems == 3
cMaxItem:=' '+"É" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ë" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ë" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "»"
if LEN(cMaxItem)<76
oNgi:WritePar( " É"+ REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ë" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ë" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "»", .F. ) //-4
else
oNgi:WritePar( "É" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ë" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ë" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "»", .F. ) //-4
endif
ELSEIF nNumTableItems == 4
oNgi:WritePar( "É" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ë" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ë" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "Ë" + REPL( "Í", alensfoitem[ nPos4 ] + 2 ) + "»", .F. ) //-4
cMaxItem:=' '+"É" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ë" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ë" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "Ë" + REPL( "Í", alensfoitem[ nPos4 ] + 2 ) + "»"
if LEN(cMaxItem)<76
oNgi:WritePar( " É" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ë" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ë" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "Ë" + REPL( "Í", alensfoitem[ nPos4 ] + 2 ) + "»", .F. ) //-4
else
oNgi:WritePar( "É" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ë" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ë" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "Ë" + REPL( "Í", alensfoitem[ nPos4 ] + 2 ) + "»", .F. ) //-4
endif
ENDIF
FOR x := 1 TO LEN( asitable )
if !empty(asitable[x])
nSpace := nMax - LEN( asitable[ x ] )
nSpace2 := nMax2 - LEN( afitable[ x ] )
IF nNumTableItems == 2
if len(cMaxItem)<76
oNgi:WriteParBox( " º " + afiTable[ x ] + SPACE( nSpace2 ) + " º " + IF( asiTable[ x ] == "|", STRTRAN( asiTable[ x ], "|", " " ), asiTable[ x ] ) + SPACE( nspace ) + " º" + HB_OSNEWLINE() )
else
oNgi:WriteParBox( "º " + afiTable[ x ] + SPACE( nSpace2 ) + " º " + IF( asiTable[ x ] == "|", STRTRAN( asiTable[ x ], "|", " " ), asiTable[ x ] ) + SPACE( nspace ) + " º" + HB_OSNEWLINE() )
if x<> len(aSiTable)
oNgi:WritePar( "Ì" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Î" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "¹")
Endif
endif
ELSEIF nNumTableItems == 3
nSpace3 := nMax3 - LEN( atitable[ x ] )
if len(cMaxItem)<76
oNgi:WriteParBox( " º " + afiTable[ x ] + SPACE( nSpace2 ) + " º " + IF( asiTable[ x ] == "|", STRTRAN( asiTable[ x ], "|", " " ), asiTable[ x ] ) + SPACE( nspace ) + " º " + atiTable[ x ] + SPACE( nspace3 ) + " º" + HB_OSNEWLINE() )
else
oNgi:WriteParBox( "º " + afiTable[ x ] + SPACE( nSpace2 ) + " º " + IF( asiTable[ x ] == "|", STRTRAN( asiTable[ x ], "|", " " ), asiTable[ x ] ) + SPACE( nspace ) + " º " + atiTable[ x ] + SPACE( nspace3 ) + " º" + HB_OSNEWLINE() )
if x<> len(aSiTable)
oNgi:WritePar( "Ì" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Î" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Î" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "¹", .F. ) //-4
endif
ELSEIF nNumTableItems == 4
nSpace3 := nMax3 - LEN( atitable[ x ] )
nSpace4 := nMax4 - LEN( afoitable[ x ] )
if len(cMaxItem)<76
oNgi:WriteParBox( " º " + afiTable[ x ] + SPACE( nSpace2 ) + " º " + IF( asiTable[ x ] == "|", STRTRAN( asiTable[ x ], "|", " " ), asiTable[ x ] ) + SPACE( nspace ) + " º " + atiTable[ x ] + SPACE( nspace3 ) + " º " + afoiTable[ x ] + SPACE( nspace4 ) + " º" + HB_OSNEWLINE() )
else
oNgi:WriteParBox( "º " + afiTable[ x ] + SPACE( nSpace2 ) + " º " + IF( asiTable[ x ] == "|", STRTRAN( asiTable[ x ], "|", " " ), asiTable[ x ] ) + SPACE( nspace ) + " º " + atiTable[ x ] + SPACE( nspace3 ) + " º " + afoiTable[ x ] + SPACE( nspace4 ) + " º" + HB_OSNEWLINE() )
if x<> len(aSiTable)
oNgi:WritePar( "Ì" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Î" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Î" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "Î" + REPL( "Í", alensfoitem[ nPos4 ] + 2 ) + "¹", .F. ) //-4
endif
ENDIF
ELSE
IF nNumTableItems == 2
if len(cMaxItem)<76
oNgi:WritePar( " Ì" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Î" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "¹", .F. )
else
oNgi:WritePar( "Ì" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Î" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "¹", .F. )
endif
ELSEIF nNumTableItems == 3
if len(cMaxItem)<76
oNgi:WritePar( " Ì" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Î" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Î" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "¹", .F. ) //-4
else
oNgi:WritePar( "Ì" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Î" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Î" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "¹", .F. ) //-4
endif
ELSEIF nNumTableItems == 4
if len(cMaxItem)<76
oNgi:WritePar( " Ì" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Î" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Î" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "Î" + REPL( "Í", alensfoitem[ nPos4 ] + 2 ) + "¹", .F. ) //-4
else
oNgi:WritePar( "Ì" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Î" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Î" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "Î" + REPL( "Í", alensfoitem[ nPos4 ] + 2 ) + "¹", .F. ) //-4
endif
ENDIF
Endif
NEXT
IF nNumTableItems == 2
if len(cMaxItem)<76
oNgi:WritePar( " È" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ê" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "¼", .F. ) //-4
else
oNgi:WritePar( "È" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ê" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "¼", .F. ) //-4
endif
ELSEIF nNumTableItems == 3
oNgi:WritePar( "È" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ê" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ê" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "¼", .F. ) //-4
if len(cMaxItem)<76
oNgi:WritePar( " È" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ê" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ê" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) +"¼", .F. ) //-4
else
oNgi:WritePar( " È" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ê" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ê" + REPL( "Í", alensTitem[ nPos3 ] + 2 )+ "¼", .F. ) //-4
endif
ELSEIF nNumTableItems == 4
if len(cMaxItem)<76
oNgi:WritePar( " È" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ê" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ê" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "Ê" + REPL( "Í", alensfoitem[ nPos4 ] + 2 ) + "¼", .F. ) //-4
else
oNgi:WritePar( "È" + REPL( "Í", aLensFitem[ nPos2 ] + 2 ) + "Ê" + REPL( "Í", alensSitem[ nPos1 ] + 2 ) + "Ê" + REPL( "Í", alensTitem[ nPos3 ] + 2 ) + "Ê" + REPL( "Í", alensfoitem[ nPos4 ] + 2 ) + "¼", .F. ) //-4
endif
ENDIF
oNgi:WritePar( "" )
afiTable := {}
asitable := {}
@@ -1044,16 +1104,32 @@ FUNCTION ProcNgTable( cBuffer, nNum )
nColorpos := ASCAN( aColorTable, { | x, y | UPPER( x[ 1 ] ) == UPPER( ccolor ) } )
cColor := aColortable[ nColorPos, 2 ]
ENDIF
cItem := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ) )
/*
If !empty(cBuffer)
cItem := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ) )
else
citem:=''
endif
if nNum==2
If !empty(cBuffer)
cItem2 := SUBSTR( cBuffer, 1 )
else
citem2:=''
endif
elseif nNum ==3
If !empty(cBuffer)
cItem2 := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem2, "" ) )
cItem3 := SUBSTR( cBuffer, 1 )
else
citem2:=''
citem3:=''
endif
ELSEIF nNum > 3
If !empty(cBuffer)
cItem2 := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem2, "" ) )
@@ -1061,17 +1137,68 @@ FUNCTION ProcNgTable( cBuffer, nNum )
cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem3, "" ) )
cItem4 := SUBSTR( cBuffer, 1 )
else
citem2:=''
citem3:=''
citem4:=''
endif
ENDIF
AADD( afiTable, RTRIM( LTRIM( cItem ) ) )
AADD( asiTable, cItem2 )
IF !EMPTY( cItem3 )
AADD( atiTable, cItem3 )
ENDIF
IF !EMPTY( cItem4 )
AADD( afoiTable, cItem4 )
*/
If !empty(cBuffer)
cItem := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ) )
else
citem:=''
endif
if nNum==2
If !empty(cBuffer)
cItem2 := SUBSTR( cBuffer, 1 )
else
citem2:=''
endif
elseif nNum ==3
If !empty(cBuffer)
cItem2 := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem2, "" ) )
cItem3 := SUBSTR( cBuffer, 1 )
else
citem2:=''
citem3:=''
endif
ELSEIF nNum > 3
If !empty(cBuffer)
cItem2 := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem2, "" ) )
cItem3 := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem3, "" ) )
cItem4 := SUBSTR( cBuffer, 1 )
else
citem2:=''
citem3:=''
citem4:=''
endif
ENDIF
AADD( afiTable, RTRIM( LTRIM( cItem ) ) )
AADD( asiTable, cItem2 )
// IF !EMPTY( cItem3 )
AADD( atiTable, cItem3 )
// ENDIF
// IF !EMPTY( cItem4 )
AADD( afoiTable, cItem4 )
// ENDIF
RETURN Nil
@@ -1343,8 +1470,7 @@ FUNCTION ProcNGDesc( cBuffer, oNgi, cStyle )
lendTable := .t.
ELSE
IF LFstTableItem
nNumTableItems := GetNumberofTableItems( cLine )
nNumTableItems := GetNumberofTableItems( cLine )
procngtable( cline, nNumTableItems )
LFstTableItem := .f.
ELSE
@@ -1413,7 +1539,8 @@ FUNC maxelem( a )
LOCAL nCount
FOR nCount := 1 TO nSize
tam := LEN( a[ nCount ] )
tam := LEN( a[ nCount ] )
max := IF( tam > max, tam, max )
NEXT
nPos := ASCAN( a, { | x | LEN( x ) == max } )
@@ -1471,7 +1598,7 @@ FUNCTION FormatNgBuff( cBuffer, cStyle, ongi )
cReturn := '<par>' + cReturn + ' </par>'
ELSEIF cStyle == 'Syntax'
cReturn := strtran(cReturn,space(6),"")
cReturn := strtran(cReturn,space(4),"")
cReturn := '<par><b>' + cReturn + ' </b></par>'
ELSEIF cStyle == 'Arguments' .OR. cStyle == "Return"

View File

@@ -511,7 +511,7 @@ FUNCTION ProcessOs2()
strtran(cBuffer,"<par>",'')
strtran(cBuffer,"</par>",'')
cBuffer:=Alltrim(cBuffer)
cbuFfer:='<par><b>'+cBuffer+'</b></par>'
cbuFfer:='<par>'+cBuffer+'</par>'
endif
procos2desc(cbuffer,oOs2,"Syntax")
@@ -707,7 +707,7 @@ LOCAL nPos,nPosEnd,lArgBold:=.f.
cReturn:='<par>'+creturn+' </par>'
ELSEIF cStyle=='Syntax'
cReturn:='<par><b>'+cReturn+' </b></par>'
cReturn:='<par>'+cReturn+' </par>'
ELSEIF cStyle=='Arguments'
nPos:=0
if at("<par>",cReturn)>0
@@ -787,7 +787,11 @@ LOCAL nPos,cItem,cItem2,cItem3,xtype,nColorpos,cColor
nColorpos:=ASCAn(aColorTable,{|x,y| upper(x[1])==upper(ccolor)})
cColor:=aColortable[nColorPos,2]
Endif
if !empty(cBuffer)
cItem:=cBuffer
else
citem:=''
endif
AADD(afiTable,cItem)
@@ -941,7 +945,7 @@ If AT('<par>',cBuffer)>0 .and. AT('</par>',cBuffer)>0
endif
if !empty(cBuffer)
cBuffer:=SUBSTR(cBuffer,2)
oOs2:WritePar(cBuffer)
oOs2:WriteParBold(cBuffer)
endif
Elseif cStyle=="Default"

View File

@@ -931,7 +931,11 @@ LOCAL nPos,cItem,cItem2,cItem3,xtype,nColorpos,cColor
nColorpos:=ASCAn(aColorTable,{|x,y| upper(x[1])==upper(ccolor)})
cColor:=aColortable[nColorPos,2]
Endif
if !empty(cBuffer)
cItem:=cBuffer
else
cItem:=''
endif
if ccolor<>NIL
AADD(afiTable,ccolor+cItem)
else

View File

@@ -2,6 +2,7 @@
..\..\doc\en\binnum.txt
..\..\doc\en\browse.txt
..\..\doc\en\datetime.txt
..\..\doc\en\dbstrux.txt
..\..\doc\en\dir.txt
..\..\doc\en\error.txt
..\..\doc\en\file.txt

View File

@@ -3,6 +3,7 @@
..\..\doc\en\browse.txt
..\..\doc\en\command.txt
..\..\doc\en\datetime.txt
..\..\doc\en\dbstrux.txt
..\..\doc\en\dir.txt
..\..\doc\en\error.txt
..\..\doc\en\file.txt

View File

@@ -127,7 +127,7 @@ METHOD WriteLink( cLink ,cName ) CLASS THTML
IF cName!=Nil
cLink:=cName
ENDIF
cTemp:=Strtran(cTemp," ","")
FWRITE( Self:nHandle, "<LI><a href=" + Lower(cTemp) + ">" + cLink + "</a></LI>" + CRLF )

View File

@@ -16,7 +16,7 @@
*
* The exception is that if you link the Harbour Runtime Library (HRL)
* and/or the Harbour Virtual Machine (HVM) with other files to produce
* an executable, this does not by itself cause the resulting executable
* an executable, this does not by itself cause the resulting executable
* to be covered by the GNU General Public License. Your use of that
* executable is in no way restricted on account of linking the HRL
* and/or HVM code into it.
@@ -80,9 +80,9 @@ METHOD New( cFile ) CLASS TOs2
FWRITE( Self:nHandle, ':docprof toc=123456.'+CRLF)
fWrite(Self:nHandle,':title.'+"Harbour Reference Guide"+CRLF)
fWrite(Self:nHandle,'.* FT_HelpC generated IPF Source File.'+CRLF)
fWrite(Self:nHandle,'.* HBDOC generated IPF Source File.'+CRLF)
fWrite(Self:nHandle,'.* FT_HELPC Document Source Extractor, (c)2000 Luiz Rafael Culik.'+CRLF)
fWrite(Self:nHandle,'.* HBDOC Document Source Extractor, (c)1999-2000 Luiz Rafael Culik.'+CRLF)
RETURN Self