diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 56ddcf1ffb..9db7f1a984 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,16 @@ +20000304-08:20 GMT-3 Luiz Rafael Culik + *utils/hbdoc/genrtf.prg + *source/tools/rtf.prg + *small changes + *utils/hbdoc/genhtm.prg + *Fixed warnings reported by Andi + *doc/en/rdd.txt + *some docs changed + *doc/en/set.txt + *doc/en/browse.txt + *doc/en/string.txt + *Small formating + 20000303-17:50 GMT-3 Luiz Rafael Culik *utils/hbdoc/genrtf.prg *small changes diff --git a/harbour/doc/en/browse.txt b/harbour/doc/en/browse.txt index 7bc80d1514..eec2208d0a 100644 --- a/harbour/doc/en/browse.txt +++ b/harbour/doc/en/browse.txt @@ -34,11 +34,11 @@ * [], [], * [], [] ) --> lOk * $ARGUMENTS$ - * coordinate for top row display. could range from 0 to - * MAXROW(), default is 0. + * coordinate for top row display. could range from 0 + * to MAXROW(), default is 0. * - * coordinate for left column display. could range from - * 0 to MAXCOL(), default is 0. + * coordinate for left column display. could range + * from 0 to MAXCOL(), default is 0. * * coordinate for bottom row display. could range * from 0 to MAXROW(), default is MAXROW(). @@ -131,7 +131,6 @@ * Esc - Terminate BROWSE() * Enter - Terminate BROWSE() * - * * When DBEDIT() execute it pass the following arguments: * nMode and the index of current record in . If * is omitted, the index number is the FIELD() number of the open @@ -140,15 +139,13 @@ * DBEDIT() nMode could be one of the following: * --------------------------------------------- * - * * DE_IDLE 0 DBEDIT() is idle, all movement keys have been - * handled. + * handled. * DE_HITTOP 1 Attempt to cursor past top of file. * DE_HITBOTTOM 2 Attempt to cursor past bottom of file. * DE_EMPTY 3 No records in work area, database is empty. * DE_EXCEPT 4 Key exception. * - * * The user define function or code block must return a value that tell * DBEDIT() what to do next. * @@ -224,30 +221,30 @@ * BROWSE() is a general purpose database browser, without any * thinking you can browse a file using the following keys: * - * 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() + * 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() * * On top of the screen you see a status line with the following * indication: * - * Record ###/### - Current record number / Total number of records. - * - There are no records, the file is empty. - * - You are in append mode at the bottom of file. - * - Current record is deleted. - * - You are at the top of file. + * Record ###/### - Current record number / Total number of records. + * - There are no records, the file is empty. + * - You are in append mode at the bottom of file. + * - Current record is deleted. + * - You are at the top of file. * * You should pass whole four valid coordinate, if less than four * parameters are passed to BROWSE() the coordinate are default to: diff --git a/harbour/doc/en/file.txt b/harbour/doc/en/file.txt index fe92cba535..e830e7b304 100644 --- a/harbour/doc/en/file.txt +++ b/harbour/doc/en/file.txt @@ -57,7 +57,6 @@ * 65 Share write only * 66 Share read/write * - * * If there is an error in opening a file, a -1 will be returned by * 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 diff --git a/harbour/doc/en/rdd.txt b/harbour/doc/en/rdd.txt index e869eaebce..122590c0fd 100644 --- a/harbour/doc/en/rdd.txt +++ b/harbour/doc/en/rdd.txt @@ -1731,38 +1731,27 @@ * $SYNTAX$ * FIELDPUT(, ) --> ValueAssigned * $ARGUMENTS$ - * is the ordinal position of the field in the current - * database file. - * - * is the value to assign to the given field. The data - * type of this expression must match the data type of the designated field - * variable. + * The field numeric position + * + * Expression to be assigned to the specified field * $RETURNS$ - * FIELDPUT() returns the value assigned to the designated field. If - * does not correspond to the position of any field in the current - * database file, FIELDPUT() returns NIL. + * Any expression * $DESCRIPTION$ - * FIELDPUT() is a database function that assigns to the field - * at ordinal position in the current work area. This function - * allows you to set the value of a field using its position within the - * database file structure rather than its field name. Within generic - * database service functions this allows, among other things, the setting - * of field values without use of the macro operator. + * This function assings the value in to the th + * field in the current or designated work area.If the operation is + * successful,the return value of the function will be the same value + * assigned to the specified field.If the operation is not successful, + * the function will return a NIL data type * $EXAMPLES$ - * This example compares FIELDPUT() to functionally equivalent - * code that uses the macro operator to set the value of a field: - * - * // Using macro operator - * FName := FIELD(nField) // Get field name - * FIELD->&FName := FVal // Set field value - * // Using FIELDPUT() - * FIELDPUT(nField, FVal) // Set field value + * USE Tests New + * FIELDPUT(1,"Mr. Jones") + * USE * $TESTS$ * * $STATUS$ * R * $COMPLIANCE$ - * + * This function is CA-Clipper compatible. * $SEEALSO$ * FIELDGET() * $INCLUDE$ @@ -1776,88 +1765,31 @@ * $CATEGORY$ * Data Base * $ONELINER$ - * Lock an open and shared database file + * Locks a file * $SYNTAX$ * FLOCK() --> lSuccess * $ARGUMENTS$ * * $RETURNS$ - * FLOCK() returns true (.T.) if an attempt to lock a database file in USE - * in the current work area succeeds; otherwise, it returns false (.F.). - * For more information on file locking, refer to the Network Programming - * chapter in the Programming and Utilities guide. - * + * A true (.T.) value, if the lock was successful;otherwise + * false (.F.) * $DESCRIPTION$ - * FLOCK() is a database function used in network environments to lock an - * open and shared database file, preventing other users from updating the - * file until the lock is released. Records in the locked file are - * accessible for read-only operations. - * - * FLOCK() is related to USE...EXCLUSIVE and RLOCK(). USE...EXCLUSIVE - * opens a database file so that no other user can open the same file at - * the same time and is the most restrictive locking mechanism in - * HARBOUR. RLOCK() is the least restrictive and attempts to place an - * update lock on a shared record, precluding other users from updating the - * current record. FLOCK() falls in the middle. - * - * FLOCK() is used for operations that access the entire database file. - * Typically, these are commands that update the file with a scope or a - * condition such as DELETE or REPLACE ALL. The following is a list of - * such commands: - * - * Commands that require an FLOCK() - * ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ - * Command Mode - * ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ - * APPEND FROM FLOCK() or USE...EXCLUSIVE - * DELETE (multiple records) FLOCK() or USE...EXCLUSIVE - * RECALL (multiple records) FLOCK() or USE...EXCLUSIVE - * REPLACE (multiple records) FLOCK() or USE...EXCLUSIVE - * UPDATE ON FLOCK() or USE...EXCLUSIVE - * ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ - * - * For each invocation of FLOCK(), there is one attempt to lock the - * database file, and the result is returned as a logical value. A file - * lock fails if another user currently has a file or record lock for the - * same database file or EXCLUSIVE USE of the database file. If FLOCK() is - * successful, the file lock remains in place until you UNLOCK, CLOSE the - * DATABASE, or RLOCK(). - * - * By default, FLOCK() operates on the currently selected work area as - * shown in the example below. - * - * Notes - * - * SET RELATION: HARBOUR does not automatically lock all work - * areas in the relation chain when you lock the current work area, and - * an UNLOCK has no effect on related work areas. + * This function returns a logical true (.T.0 if a file lock is + * attempted and is successfully placed on the current or designated + * database.This function will also unlock all records locks placed + * by the same network station. * $EXAMPLES$ - * This example uses FLOCK() for a batch update of prices in - * Inventory.dbf: - * - * USE Inventory NEW + * USE Tests New * IF FLOCK() - * REPLACE ALL Inventory->Price WITH ; - * Inventory->Price * 1.1 - * ELSE - * ? "File not available" - * ENDIF - * - * This example uses an aliased expression to attempt a file lock - * in an unselected work area: - * - * USE Sales NEW - * USE Customer NEW - * // - * IF !Sales->(FLOCK()) - * ? "Sales is in use by another" + * SUM Tests->Ammount * ENDIF + * USE * $TESTS$ * * $STATUS$ * R * $COMPLIANCE$ - * + * This function is CA-Clipper compatible * $SEEALSO$ * RLOCK() * $INCLUDE$ @@ -1877,76 +1809,26 @@ * $ARGUMENTS$ * * $RETURNS$ - * FOUND() returns true (.T.) if the last search command was successful; - * otherwise, it returns false (.F.). - * + * A logical true (.T.) is successful;otherwise, false (.F.) * $DESCRIPTION$ - * FOUND() is a database function that determines whether a search - * operation (i.e., FIND, LOCATE, CONTINUE, SEEK, or SET RELATION) - * succeeded. When any of these commands are executed, FOUND() is set to - * true (.T.) if there is a match; otherwise, it is set to false (.F.). - * - * If the search command is LOCATE or CONTINUE, a match is the next record - * meeting the scope and condition. If the search command is FIND, SEEK or - * SET RELATION, a match is the first key in the controlling index that - * equals the search argument. If the key value equals the search - * argument, FOUND() is true (.T.); otherwise, it is false (.F.). - * - * The value of FOUND() is retained until another record movement command - * is executed. Unless the command is another search command, FOUND() is - * automatically set to false (.F.). - * - * Each work area has a FOUND() value. This means that if one work area - * has a RELATION set to a child work area, querying FOUND() in the child - * returns true (.T.) if there is a match. - * - * By default, FOUND() operates on the currently selected work area. It - * can be made to operate on an unselected work area by specifying it - * within an aliased expression (see example below). - * - * FOUND() will return false (.F.) if there is no database open in the - * current work area. + * This function is used to test if the previous SEEK,LOCATE,CONTINUE, + * or FIND operation was successful.Each wrk area has its own FOUND() + * flag,so that a FOUND() condition may be tested in unselected work + * areas by using an alias. * $EXAMPLES$ - * This example illustrates the behavior of FOUND() after a - * record movement command: - * - * USE Sales INDEX Sales - * ? INDEXKEY(0) // Result: SALESMAN - * SEEK "1000" - * ? FOUND() // Result: .F. - * SEEK "100" - * ? FOUND() // Result: .T. - * SKIP - * ? FOUND() // Result: .F. - * - * This example tests a FOUND() value in an unselected work area - * using an aliased expression: - * - * USE Sales INDEX Sales NEW - * USE Customer INDEX Customer NEW - * SET RELATION TO CustNum INTO Sales - * // - * SEEK "Smith" - * ? FOUND(), Sales->(FOUND()) - * - * This code fragment processes all Customer records with the key - * value "Smith" using FOUND() to determine when the key value changes: - * - * USE Customer INDEX Customer NEW - * SEEK "Smith" - * DO WHILE FOUND() - * . - * . - * . - * SKIP - * LOCATE REST WHILE Name == "Smith" - * ENDDO + * nId:=100 + * USE Tests NEW INDEX Tests + * SEEK nId + * IF FOUND() + * ? Tests->Name + * ENDIF + * USE * $TESTS$ * * $STATUS$ * R * $COMPLIANCE$ - * + * This function is CA-Clipper compatible * $SEEALSO$ * EOF() * $INCLUDE$ @@ -1960,47 +1842,29 @@ * $CATEGORY$ * Data Base * $ONELINER$ - * Return the current database file header length + * Return the length of a database file header * $SYNTAX$ * HEADER() --> nBytes * $ARGUMENTS$ * * $RETURNS$ - * HEADER() returns the number of bytes in the header of the current - * database file as an integer numeric value. If no database file is in - * use, HEADER() returns a zero (0). + * The numeric size of a database file header in bytes * $DESCRIPTION$ - * HEADER() is a database function that is used with LASTREC(), RECSIZE(), - * and DISKSPACE() to create procedures for backing up files. + * This function returns the number of bytes in the header of the + * selected database ot the database in the designated work area. * - * By default, HEADER() operates on the currently selected work area. It - * will operate on an unselected work area if you specify it as part of an - * aliased expression (see example below). + * If used in conjunction with the LASTREC(),RECSIZE() and DISKSPACE() + * functions,this functions is capable of implementing a backup and + * restore routine. * $EXAMPLES$ - * This example determines the header size of the Sales.dbf: - * - * USE Sales NEW - * ? HEADER() // Result: 258 - * - * This example defines a pseudofunction, DbfSize(), that uses - * HEADER() with RECSIZE() and LASTREC() to calculate the size of the - * current database file in bytes: - * - * #define DbfSize() ((RECSIZE() * LASTREC()) + ; - * HEADER() + 1) - * - * Later you can use DbfSize() as you would any function: - * - * USE Sales NEW - * USE Customer NEW - * ? DbfSize() - * ? Sales->(DbfSize()) + * USE Tests New + * ? Header() * $TESTS$ * * $STATUS$ * R * $COMPLIANCE$ - * + * This function is CA-Clipper compatible * $SEEALSO$ * DISKSPACE(),LASTREC(),RECSIZE() * $INCLUDE$ diff --git a/harbour/doc/en/string.txt b/harbour/doc/en/string.txt index e654268ab4..3494c4269e 100644 --- a/harbour/doc/en/string.txt +++ b/harbour/doc/en/string.txt @@ -22,6 +22,8 @@ * LEFT() Documentation * RIGHT() Documentation * SUBSTR() Documentation + * UPPER() Documentation + * LOWER() Documentation * * See doc/license.txt for licensing terms. * @@ -715,3 +717,66 @@ * HB_ANSITOOEM() * $END$ */ + + +/* $DOC$ + * $FUNCNAME$ + * LOWER() + * $CATEGORY$ + * Strings() + * $ONELINER$ + * Universally lowercases a character string expression. + * $SYNTAX$ + * LOWER( ) --> cLowerString + * $ARGUMENTS$ + * Any character expression. + * $RETURNS$ + * Lowercased value of + * $DESCRIPTION$ + * This function converts any character expression passes as + * to its lowercased representation.Any nonalphabetic character withing + * will remain unchanged. + * $EXAMPLES$ + * ? Lower("HARBOUR") + * ? Lower("Hello All") + * $STATUS$ + * R + * $COMPLIANCE$ + * This function is CA-Clipper compatible + * $PLATFORMS$ + * ALL + * $SEEALSO$ + * UPPER(),ISLOWER(),ISUPPER() + * $END$ + */ + +/* $DOC$ + * $FUNCNAME$ + * UPPER() + * $CATEGORY$ + * Strings + * $ONELINER$ + * Converts a character expression to uppercase format + * $SYNTAX$ + * UPPER( ) --> cUpperString + * $ARGUMENTS$ + * Any character expression. + * $RETURNS$ + * Uppercased value of + * $DESCRIPTION$ + * This function converts all alpha characters in to upper + * case values and returns that formatted character expression. + * $EXAMPLES$ + * ? UPPER("harbour") + * ? UPPER("Harbour") + * $STATUS$ + * R + * $COMPLIANCE$ + * This function is CA-Clipper compatible + * $PLATFORMS$ + * All + * $SEEALSO$ + * LOWER(),ISUPPER(),ISLOWER() + * $END$ + */ + diff --git a/harbour/source/tools/rtf.prg b/harbour/source/tools/rtf.prg index 212109f908..14cfe42f51 100644 --- a/harbour/source/tools/rtf.prg +++ b/harbour/source/tools/rtf.prg @@ -51,6 +51,7 @@ CLASS TRTF METHOD New( cFile ) METHOD WritePar( cPar ) METHOD WriteParText( cPar ) + METHOD WriteParNoIndent(cPar) METHOD WriteLink( clink ) METHOD WriteJumpLink( clink ) METHOD Close() @@ -117,8 +118,14 @@ RETURN Self METHOD WritePar( cPar ) CLASS TRTF cPar:=StrTran(cPar,"{","\{") cPar:=StrTran(cPar,"}","\}") - FWRITE( Self:nHandle, '\par \pard\cf1\f6\fs20\b0\i0\li300' + HB_OEMTOANSI(cPar )+CRLF) + FWRITE( Self:nHandle, '\par'+CRLF+ '\pard\cf1\f6\fs20\b0\i0\li300' + HB_OEMTOANSI(cPar )+CRLF) RETURN Self +METHOD WriteParNoIndent( cPar ) CLASS TRTF + cPar:=StrTran(cPar,"{","\{") + cPar:=StrTran(cPar,"}","\}") + FWRITE( Self:nHandle, '\par'+CRLF+ '\pard\cf1\f8\fs20\b0\i0' + cPar +CRLF) +RETURN Self + METHOD WriteParText( cPar ) CLASS TRTF cPar:=StrTran(cPar,"{","\{") cPar:=StrTran(cPar,"}","\}") diff --git a/harbour/utils/hbdoc/genhtm.prg b/harbour/utils/hbdoc/genhtm.prg index 69cdf0f43b..c70f9f274c 100644 --- a/harbour/utils/hbdoc/genhtm.prg +++ b/harbour/utils/hbdoc/genhtm.prg @@ -122,8 +122,8 @@ FUNCTION ProcessWww() LOCAL lFirstPass:= .T. LOCAL lFirstArg := .T. LOCAL lData := .F. - LOCAL lEndDataLink := .F. - LOCAL lEndMethodLink := .F. + LOCAL lIsDataLink := .F. + LOCAL lIsMethodLink := .F. LOCAL lMethod := .F. LOCAL cDoc := DELIM + "DOC" + DELIM // DOC keyword LOCAL cEnd := DELIM + "END" + DELIM // END keyword @@ -672,7 +672,7 @@ FUNCTION ProcessWww() ohtm:WriteText('

') nMode := D_DATALINK lAddBlank := .T. - lEnddatalink := .T. +// lEnddatalink := .T. lIsDataLink := .T. ELSEIF AT( cDatanolink, cBuffer ) > 0 @@ -683,7 +683,7 @@ FUNCTION ProcessWww() endif nMode := D_NORMAL lAddBlank := .T. - lEndDatalink:=.t. +// lEndDatalink:=.t. ELSEIF AT( cMethodslink, cBuffer ) > 0 @@ -691,7 +691,7 @@ FUNCTION ProcessWww() ohtm:WriteText('

') nMode := D_METHODLINK lAddBlank := .T. - lEndMethodlink := .T. + // lEndMethodlink := .T. lIsMethodLink := .T. ELSEIF AT( cMethodsnolink, cBuffer ) > 0 @@ -703,7 +703,7 @@ FUNCTION ProcessWww() nMode := D_NORMAL lAddBlank := .T. - lEndMethodlink := .T. +// lEndMethodlink := .T. ELSEIF AT( cExam, cBuffer ) > 0 diff --git a/harbour/utils/hbdoc/genrtf.prg b/harbour/utils/hbdoc/genrtf.prg index b871c7a8fa..9512bc8385 100644 --- a/harbour/utils/hbdoc/genrtf.prg +++ b/harbour/utils/hbdoc/genrtf.prg @@ -569,6 +569,10 @@ FUNCTION ProcessRtf() Else oRtf:WriteParText( " "+ ALLTRIM(cBuffer) +" ") endif + ELSEIF StrPos(cBuffer)=12 + cBuffer:=Substr(cBuffer,6) + oRtf:WriteParNoIndent(cBuffer+" ") + ELSEIF AT("<",cBuffer)> 0 nPos := AT("<",cBuffer) if nPos>0 .and. nPos<12 @@ -784,15 +788,9 @@ func filesize(cfile) return nretval */ FUNCTION ProcRtfDesc(cBuffer,lBlankLine,oRtf,lPar) -LOCAL nPos:=0 -LOCAL ePos:=0 IF StrPos(cBuffer)=12 - nPos := AT(" ",cBuffer) - // ePos := StrPos(cBuffer) - // ? nPos - // inkey(0) - cBuffer:=Substr(cBuffer,3) - oRtf:WritePar(cBuffer+" ") + cBuffer:=Substr(cBuffer,6) + oRtf:WriteParNoIndent(cBuffer+" ") lPar:=.f. ELSEIF lPar oRtf:WritePar(cBuffer+" ") @@ -805,7 +803,6 @@ LOCAL ePos:=0 lPar:=.T. ELSE oRtf:WriteParText(" "+alltrim(cBuffer)) - lPar:=.F. ENDIF RETURN lPar