diff --git a/harbour/doc/en/array.txt b/harbour/doc/en/array.txt
index 7d1edfabd6..4ff162720c 100644
--- a/harbour/doc/en/array.txt
+++ b/harbour/doc/en/array.txt
@@ -21,7 +21,7 @@
* $FUNCNAME$
* ARRAY()
* $CATEGORY$
- * ARRAY
+ * Array
* $ONELINER$
* Create an uninitialized array of specified length
* $SYNTAX$
@@ -63,7 +63,7 @@
* $FUNCNAME$
* AADD()
* $CATEGORY$
- * ARRAY
+ * Array
* $ONELINER$
* Dynamically add an element to an array
* $SYNTAX$
@@ -101,7 +101,7 @@
* $FUNCNAME$
* ASIZE()
* $CATEGORY$
- * ARRAY
+ * Array
* $ONELINER$
* Adjust the size of an array
* $SYNTAX$
@@ -140,7 +140,7 @@
* $FUNCNAME$
* ATAIL()
* $CATEGORY$
- * ARRAY
+ * Array
* $ONELINER$
* Returns the rightmost element of an array
* $SYNTAX$
@@ -171,7 +171,7 @@
* $FUNCNAME$
* AINS()
* $CATEGORY$
- * ARRAY
+ * Array
* $ONELINER$
* Insert a NIL value at an array subscript position.
* $SYNTAX$
@@ -211,7 +211,7 @@
* $FUNCNAME$
* ADEL()
* $CATEGORY$
- * ARRAY
+ * Array
* $ONELINER$
* Delete an element form an array.
* $SYNTAX$
@@ -250,7 +250,7 @@
* $FUNCNAME$
* AFILL()
* $CATEGORY$
- * ARRAY
+ * Array
* $ONELINER$
* Fill an array with a specified value
* $SYNTAX$
@@ -296,7 +296,7 @@
* $FUNCNAME$
* ASCAN()
* $CATEGORY$
- * ARRAY
+ * Array
* $ONELINER$
* Scan array elements for a specified condition
* $SYNTAX$
@@ -349,7 +349,7 @@
* $FUNCNAME$
* AEVAL()
* $CATEGORY$
- * ARRAY
+ * Array
* $ONELINER$
* Evaluated the subscript element of an array
* $SYNTAX$
@@ -394,7 +394,7 @@
* $FUNCNAME$
* ACOPY()
* $CATEGORY$
- * ARRAY
+ * Array
* $ONELINER$
* Copy elements from one array to another
* $SYNTAX$
@@ -457,7 +457,7 @@
* $FUNCNAME$
* ACLONE()
* $CATEGORY$
- * ARRAY
+ * Array
* $ONELINER$
* Duplicate a multidimensional array
* $SYNTAX$
diff --git a/harbour/doc/en/browse.txt b/harbour/doc/en/browse.txt
index 39095da5f2..108403c8e6 100644
--- a/harbour/doc/en/browse.txt
+++ b/harbour/doc/en/browse.txt
@@ -105,8 +105,8 @@
* database record.
* Following are active keys that handled by DBEDIT():
- * ---------------------------------------------------
-
+ * ---------------------------------------------------
+ *
*
* Key Meaning
*
@@ -134,14 +134,15 @@
* 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
* database structure.
-
+ *
* DBEDIT() nMode could be one of the following:
* ---------------------------------------------
-
+ *
*
* Dbedit.ch Meaning
*
@@ -151,12 +152,13 @@
* DE_EMPTY No records in work area, database is empty.
* DE_EXCEPT Key exception.
*
+ *
* The user define function or code block must return a value that tell
- * DBEDIT() what to do next.
-
+ * DBEDIT() what to do next.
+ *
* User function return codes:
- * ---------------------------
-
+ * ---------------------------
+ *
*
* Dbedit.ch Value Meaning
*
@@ -164,6 +166,7 @@
* DE_CONT 1 Continue DBEDIT() as is.
* DE_REFRESH 2 Force reread/redisplay of all data rows.
*
+ *
* 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.
diff --git a/harbour/doc/en/command.txt b/harbour/doc/en/command.txt
index 3c4c79d782..6d00eaae49 100644
--- a/harbour/doc/en/command.txt
+++ b/harbour/doc/en/command.txt
@@ -26,7 +26,7 @@
* Name of the class to define. By tradition, Harbour
* classes start with "T" to avoid collisions with user-
* created classes.
-
+ *
* The Parent class to use for inheritance
* $DESCRIPTION$
* CLASS creates a class from which you can create objects.
@@ -83,13 +83,24 @@
* Define a DATA instance variable for the objects of a class
* $SYNTAX$
* DATA [,] [ AS ] [ INIT ]
+ * [ EXPORTED] [PROTECTED] [HIDDEN] [ READONLY]
* $ARGUMENTS$
* Name of the DATA
* Optional data type specification from the following:
* Character, Numeric, Date, Logical, Codeblock, Nil
- * Optional initial value when creating a new object
+ * Optional initial value when creating a new object
+ *
+ * EXPORTED This clause tell that this data is visible in where
+ * was defined and all subclasses.
+ *
+ * PROTECTED This clause tell that the data is visible only where is
+ * defined
+ *
+ * HIDDEN This clause say that the data is only visible on the
+ * class that was defined,and is not inherit by the
+ * subclasses.
* $DESCRIPTION$
* DATA elements can also be thought of as the "properties" of an
* object. They can be of any data type, including codeblock.
@@ -122,7 +133,6 @@
* METHOD New() // Constructor
*
* ENDCLASS
-
* $STATUS$
* R
* $COMPLIANCE$
diff --git a/harbour/doc/en/lang.txt b/harbour/doc/en/lang.txt
index 114517f386..4614305aba 100644
--- a/harbour/doc/en/lang.txt
+++ b/harbour/doc/en/lang.txt
@@ -37,6 +37,7 @@
* EN English 437
* FR French 850
* GL Galician 850
+ * DE German 850
* HE862 Hebrew 862
* HEWIN Hebrew 1255
* HU852 Hungarian 852
diff --git a/harbour/doc/en/nation.txt b/harbour/doc/en/nation.txt
index f2cd8d2ff8..fed1946862 100644
--- a/harbour/doc/en/nation.txt
+++ b/harbour/doc/en/nation.txt
@@ -19,7 +19,7 @@
* $FUNCNAME$
* ISAFFIRM()
* $CATEGORY$
- * NATION
+ * Nation
* $ONELINER$
* Checks if passed char is an affirmation char
* $SYNTAX$
@@ -53,7 +53,7 @@
* $FUNCNAME$
* ISNEGATIVE()
* $CATEGORY$
- * NATION
+ * Nation
* $ONELINER$
* Checks if passed char is a negation char.
* $SYNTAX$
@@ -87,7 +87,7 @@
* $FUNCNAME$
* NATIONMSG()
* $CATEGORY$
- * NATION
+ * Nation
* $ONELINER$
* Returns international strings messages.
* $SYNTAX$
diff --git a/harbour/doc/en/readme.txt b/harbour/doc/en/readme.txt
index f656d3977c..331f92f1e1 100644
--- a/harbour/doc/en/readme.txt
+++ b/harbour/doc/en/readme.txt
@@ -15,7 +15,7 @@
*
* ************************************************************************
* * This file contains information on obtaining, installing, and using *
- * * Harbour. Please read it *completely* before asking for help. *
+ * * Harbour. Please read it *completely* before asking for help. *
* ************************************************************************
* Harbour is a free implementation of an xBase language compiler. It is
diff --git a/harbour/doc/en/string.txt b/harbour/doc/en/string.txt
index 006c853558..5a3007e0fd 100644
--- a/harbour/doc/en/string.txt
+++ b/harbour/doc/en/string.txt
@@ -34,6 +34,9 @@
* RTRIM() Documentation
* SPACE() Documentation
* REPLICATE() Documentation
+ * VAL() Documentation
+ * TRANSFORM() Documentation
+ * STRTRAN() Documentation
* See doc/license.txt for licensing terms.
*
*/
@@ -472,7 +475,7 @@
* $FILES$
* Library is rtl
* $SEEALSO$
- * STRZERO()
+ * STRZERO(),TRANSFORM(),VAL()
* $END$
*/
@@ -1274,3 +1277,182 @@
* PADC(),PADL(),PADR(),REPLICATE()
* $END$
*/
+
+/* $DOC$
+ * $FUNCNAME$
+ * VAL()
+ * $CATEGORY$
+ * Strings
+ * $ONELINER$
+ * Convert a number from a character type to numeric
+ * $SYNTAX$
+ * VAL( ) --> nNumber
+ * $ARGUMENTS$
+ * Any valid character string of numbers.
+ * $RETURNS$
+ * The numeric value of
+ * $DESCRIPTION$
+ * This function converts any number previosly defined as an character
+ * expression into a numeric expression.
+ *
+ * This functions is the oppose of the STR() function.
+ * $EXAMPLES$
+ * ? VAL('31421') // 31421
+ * $TESTS$
+ * See regression test
+ * $STATUS$
+ * R
+ * $COMPLIANCE$
+ * This function is Ca-Clipper compatible
+ * $PLATFORMS$
+ * All
+ * $FILES$
+ * Library is RTL
+ * $SEEALSO$
+ * STR(),TRANSFORM()
+ * $END$
+ */
+
+/* $DOC$
+ * $FUNCNAME$
+ * STRTRAN()
+ * $CATEGORY$
+ * Strings
+ * $ONELINER$
+ * Translate substring valuw with a main string
+ * $SYNTAX$
+ * STRTRAN( , , , , ) --> cReturn
+ * $ARGUMENTS$
+ * The main string to search
+ *
+ * The string to locate in the main string
+ *
+ * The string to replace the
+ *
+ * The first occurence to be replaced
+ *
+ * Number of occurence to replace
+ * $RETURNS$
+ * Formated string
+ * $DESCRIPTION$
+ * This function searches for any occurence of in
+ * and replacesit with .If is not specified, a
+ * NULL byte will replace .
+ *
+ * If is used,its value defines the first occurence to be
+ * replaced.The default value is 1.Additionally,if used,the value of
+ * tell the function how many occurrences of
+ * in are to the replaced.The default of is
+ * all occurrences.
+ * $EXAMPLES$
+ * ? StrTran("Harbour Power"," "," ") // Harbour Power
+ * ? StrTran("Harbour Power The Future of xBase"," "," ",,2) // Harbour Power The future of xBase
+ * $TESTS$
+ * See regression test
+ * $STATUS$
+ * R
+ * $COMPLIANCE$
+ * Will not work with a search string of > 64 KB on some platforms
+ * $PLATFORMS$
+ * All
+ * $FILES$
+ * Libraty is rtl
+ * $SEEALSO$
+ * SUBSTR(),AT()
+ * $END$
+ */
+/* $DOC$
+ * $FUNCNAME$
+ * TRANSFORM()
+ * $CATEGORY$
+ * Strings
+ * $ONELINER$
+ * Formats a value based on a specific picture template.
+ * $SYNTAX$
+ * TRANSFORM( , ) --> cFormated
+ * $ARGUMENTS$
+ * Any expression to be formated.
+ *
+ * Character string with picture template
+ * $RETURNS$
+ * An formatted expression in character format
+ * $DESCRIPTION$
+ * This function returns in the format of the picture
+ * expression passed to the function as .
+ *
+ * Their are two components that can make up : a function
+ * string and a template string.Function strings are those functions
+ * that globally tell what the format of should be.These
+ * functions are represented by a single character precede by the
+ * @ symbol.
+ *
+ * There are a couple of rules to follow when using function strings
+ * and template strings:
+ *
+ * - First, a single space must fall between the function template
+ * and the template string if they are used in conjunction with
+ * one another.
+ *
+ * - Second,if both components make up the value of ,the
+ * function string must precede the template string.Otherwise,the
+ * function string may appear with out the template string and
+ * vice versa.
+ *
+ * The table below shows the possible function strings avaliable with
+ * the TRANSFORM() function.
+ *
+ *
+ * @B Left justify the string within the format.
+ * @C Issue a CR after format is numbers are positive.
+ * @D Put dates in SET DATE format.
+ * @E Put dates in BRITISH format.
+ * @L Make a zero padded string out of the number.
+ * @R Insert nontemplate characters.
+ * @X Issue a DB after format is numbers are negative.
+ * @Z Display any zero as blank spaces.
+ * @( Quotes around negative numbers
+ * @! Convert alpha characters to uppercased format.
+ *
+ *
+ * The second part of consists of the format string.Each
+ * character in the string may be formated based on using the follow
+ * characters as template markers for the string.
+ *
+ *
+ * A,N,X,9,# Any data type
+ * L Shows logical as "T" or "F"
+ * Y Shows logical as "Y" or "N"
+ * ! Convert to uppercase
+ * $ Dolar sing in place of leading spaces in numeric expression
+ * * Asterisks in place of leading spaces in numeric expression
+ * , Commas position
+ * . Decimal point position
+ *
+ * $EXAMPLES$
+ * local cString := 'This is harbour'
+ * local nNumber := 9923.34
+ * local nNumber1 := -95842.00
+ * Local lValue := .T.
+ * Local dDate := DATE()
+ * ? 'working with String'
+ * ? "Current String is" ,cString
+ * ? "All uppercased",transform(cString,"@!")
+ * ? "Date is",ddate
+ * ? "Date is ",transform(ddate,"@D")
+ * ? Transform( nNumber , "@L 99999999" ) // , "009923.34"
+ * ? Transform( 0 , "@L 9999" ) // "0000"
+ *
+ * $TESTS$
+ * See regression Test
+ * $STATUS$
+ * R
+ * $COMPLIANCE$
+ * The @L function template is a FOXPRO/Xbase Extension
+ * $PLATFORMS$
+ * All
+ * $FILES$
+ * Library is rtl
+ * $SEEALSO$
+ * @...SAY,DEVOUTPICT()
+ * $END$
+ */
diff --git a/harbour/doc/genhtm.lnk b/harbour/doc/genhtm.lnk
index 76319796ed..e264d106ae 100644
--- a/harbour/doc/genhtm.lnk
+++ b/harbour/doc/genhtm.lnk
@@ -1,6 +1,6 @@
-!name: Harbour Version 0.34 (c) reference Guide
-!credits: Harbour Version 0.34 (c) http://www.harbour-project.org
- 06/04/2000 build By Luiz Rafael Culik
+!name: Harbour Version %HB_VERSION% (c) reference Guide
+!credits: Harbour Version %HB_VERSION% (c) http://www.harbour-project.org
+ %HB_BLDDATE% build By Luiz Rafael Culik
Functions Documented by:
Chen Kedem, Luiz Rafael Culik,Brian Hays
diff --git a/harbour/doc/genhtm.rsp b/harbour/doc/genhtm.rsp
index 4b0916ba28..c9462df0a9 100644
--- a/harbour/doc/genhtm.rsp
+++ b/harbour/doc/genhtm.rsp
@@ -36,3 +36,6 @@ en\gnulice.txt
en\compiler.txt
en\lang.txt
en\setmode.txt
+en\eval.txt
+en\sayget.txt
+en\strotype.txt
diff --git a/harbour/doc/whatsnew.txt b/harbour/doc/whatsnew.txt
index ef1c2457d9..a1511e7d95 100644
--- a/harbour/doc/whatsnew.txt
+++ b/harbour/doc/whatsnew.txt
@@ -11,7 +11,7 @@ Version 0.34 Build 34 (2000-06-02)
- MEMOEDIT support started
- CONTRIBs better separated from core Harbour (TOOLS moved there)
- Simplified and enhanced base for multiplatform coding
-- Language API (link/compile time language module selection)
+- Language API (link/compile time language modul selection)
- Several small optimizations, enhancements and fixes (compiler, macro, GT,
inkey, make and build systems, more strict compiler warnings)
- Compiler pcode size optimizations (new compact pcode versions added and
diff --git a/harbour/utils/hbdoc/genchm.prg b/harbour/utils/hbdoc/genchm.prg
index 5ab7264f67..5c84bad1ff 100644
--- a/harbour/utils/hbdoc/genchm.prg
+++ b/harbour/utils/hbdoc/genchm.prg
@@ -1206,7 +1206,7 @@ FUNCTION ProcChmTable( cBuffer, nNum )
cBuffer := STRTRAN( cBuffer, ">", ">" )
cItem := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
- cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ) )
+ cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ),,1 )
IF nNum == 2
cItem2 := SUBSTR( cBuffer, 1 )
ELSE
diff --git a/harbour/utils/hbdoc/genhtm.prg b/harbour/utils/hbdoc/genhtm.prg
index 47f021b340..d4a7d6fb2f 100644
--- a/harbour/utils/hbdoc/genhtm.prg
+++ b/harbour/utils/hbdoc/genhtm.prg
@@ -1208,7 +1208,7 @@ FUNCTION ProchtmTable( cBuffer, nNum )
cBuffer := STRTRAN( cBuffer, ">", ">" )
cItem := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
- cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ) )
+ cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ,,1) )
IF nNum == 2
cItem2 := SUBSTR( cBuffer, 1 )
ELSE
diff --git a/harbour/utils/hbdoc/genng.prg b/harbour/utils/hbdoc/genng.prg
index 53206e9b2a..e1b542690c 100644
--- a/harbour/utils/hbdoc/genng.prg
+++ b/harbour/utils/hbdoc/genng.prg
@@ -1009,7 +1009,7 @@ FUNCTION GenNgTable( oNgi )
nPos := maxelem( asitable )
nPos1 := ASCAN( aLenssItem, { | x | x == nPos } )
- oNgi:WritePar( "" )
+/* oNgi:WritePar( "" )*/
// nMax2:=checkcar(aTable,1)+1
nMax2 := alensfitem[ 1 ]
nPos := maxelem( afitable )
@@ -1112,7 +1112,7 @@ FUNCTION GenNgTable( oNgi )
ENDIF
ENDIF
- oNgi:WritePar( "" )
+/* oNgi:WritePar( "" )*/
afiTable := {}
asitable := {}
atitable := {}
@@ -1157,7 +1157,7 @@ FUNCTION ProcNgTable( cBuffer, nNum )
/*
If !empty(cBuffer)
cItem := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
- cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ) )
+ cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ,,1) )
else
citem:=''
endif
diff --git a/harbour/utils/hbdoc/genos2.prg b/harbour/utils/hbdoc/genos2.prg
index 7ffd441b5e..759662f37c 100644
--- a/harbour/utils/hbdoc/genos2.prg
+++ b/harbour/utils/hbdoc/genos2.prg
@@ -888,7 +888,7 @@ FUNCTION ProcOs2Table( cBuffer , nNum )
cBuffer := STRTRAN( cBuffer, ">", ">." )
cItem := SUBSTR( cBuffer, 1, AT( SPACE( 3 ), cBuffer ) - 1 )
- cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ) )
+ cBuffer := ALLTRIM( STRTRAN( cBuffer, cItem, "" ,,1) )
IF nNum == 2
cItem2 := SUBSTR( cBuffer, 1 )
ELSE
diff --git a/harbour/utils/hbdoc/html.prg b/harbour/utils/hbdoc/html.prg
index 9b65fff704..dd3d6f4929 100644
--- a/harbour/utils/hbdoc/html.prg
+++ b/harbour/utils/hbdoc/html.prg
@@ -156,6 +156,7 @@ METHOD WriteLink( cLink, cName ) CLASS THTML
IF cName != Nil
cLink := cName
ENDIF
+ cTemp := STRTRAN( cTemp, "@...", "" )
cTemp := STRTRAN( cTemp, " ", "" )
FWRITE( Self:nHandle, "" + cLink + "" + CRLF )
@@ -274,6 +275,7 @@ METHOD WriteChmLink( cLink, cName ) CLASS THTML
IF cName != Nil
cLink := cName
ENDIF
+ cTemp := STRTRAN( cTemp, "@...", "" )
cTemp := STRTRAN( cTemp, " ", "" )
FWRITE( Self:nHandle, "" + cLink + "
" + CRLF )
Return Self
diff --git a/harbour/utils/hbdoc/os2.prg b/harbour/utils/hbdoc/os2.prg
index fe1b8a4dd2..d32f2ace1b 100644
--- a/harbour/utils/hbdoc/os2.prg
+++ b/harbour/utils/hbdoc/os2.prg
@@ -250,6 +250,7 @@ METHOD WriteTitle( cTopic, cTitle ,cCategory) CLASS TOs2
LOCAL nPos
LOCAL cWrite
LOCAL nItem
+ Local lHead:=.F.
LOCAL nrItem,nIItem
LOCAL cRefCateg
LOCAL cIndCateg
@@ -266,12 +267,16 @@ METHOD WriteTitle( cTopic, cTitle ,cCategory) CLASS TOs2
If Self:ScanInd(cIndCateg)==0
niItem := ASCAN( Self:aIndRef, { | a | upper(a) == upper(cIndCateg )} )
FWRITE( Self:nHandle, ':h1 ' + ::aIndRef[niItem] + "."+ UPPER( cCategory ) + CRLF)
+ lHead := .T.
ELSE // Just in case that nItem>0 so the Link is already referenced
niItem := ASCAN( Self:aIndRef, { | a | upper(a) == upper(cIndCateg) } )
ENDIF
- IF niItem>0
- FWRITE( Self:nHandle, ':h2 '+ 'id=' + ::aIndRef[niItem] +' res=' + ALLTRIM( STR( nItem ) ) + '.' + cTopic + CRLF )
- Endif
+ IF niItem>0 .AND. lHead
+ FWRITE( Self:nHandle, ':h2 '+ ' res=' + ALLTRIM( STR( nItem ) ) + '.' + cTopic + CRLF )
+ elseIF niItem>0 .AND. !lHead
+ FWRITE( Self:nHandle, ':h2 id='+ ::aIndRef[niItem] + ' res=' + ALLTRIM( STR( nItem ) ) + '.' + cTopic + CRLF )
+ Endif
+ lHead:=.F.
If Self:ScanRef(cRefCateg)==0
nrItem := ASCAN( Self:aHeadRef, { | a | upper(a) == upper(cRefCateg )} )
FWRITE( Self:nHandle, ':i1 id=' + ::aHeadRef[nrItem] + "."+ UPPER( cCategory ) + CRLF)