Knowledge

Harbour (programming language)

Source 📝

1719:
PROTECTED: VAR pvtEyes ENDCLASS // Sample of normal Method definition METHOD New( cName ) CLASS Person  ::Name := cName RETURN Self METHOD Describe() CLASS Person LOCAL cDescription IF Empty( ::Name ) cDescription := "I have no name yet." ELSE cDescription := "My name is: " + ::Name + ";" ENDIF IF ! Empty( ::Eyes ) cDescription += "my eyes' color is: " + ::Eyes ENDIF RETURN cDescription
77: 36: 838: 1760: 179: 1075:: Visible only within the routine which declared it. Value is preserved for subsequent invocations of the routine. If a STATIC variable is declared before any Procedure/Function/Method is defined, it has a MODULE scope, and is visible within any routine defined within that same source file, it will maintain its life for the duration of the application lifetime. 609:, DBFNTX, DBFCDX, DBFDBT and DBFFPT. In Harbour multiple RDDs can be used in a single application, and new logical RDDs can be defined by combining other RDDs. The RDD architecture allows for inheritance, so that a given RDD may extend the functionality of other existing RDD(s). Third-party RDDs, like RDDSQL, RDDSIX, RMDBFCDX, 1410:
The BEGIN SEQUENCE structure allows for a well behaved abortion of any sequence, even when crossing nested procedures/functions. This means that a called procedure/function, may issue a BREAK statement, or a Break() expression, to force unfolding of any nested procedure/functions, all the way back to
589:
The idea of a free software Clipper compiler had been floating around for a long time and the subject has often cropped up in discussion on comp.lang.clipper. Antonio Linares founded the Harbour project and the implementation was started in March 1999. The name "Harbour" was proposed by Linares, it
1783:
is a fork of the earlier Harbour project. xHarbour takes a more aggressive approach to implementing new features in the language, while Harbour is more conservative in its approach, aiming first of all for an exact replication of Clipper behaviour and then implementing new features and extensions as
1027:
Detached variables will maintain their value for as long as a Codeblock referencing them still exists. Such values will be shared with any other Codeblock which may have access to those same variables. If the Codeblock did not outlive its containing routine, and will be evaluated within the lifetime
682:
Under Linux and Windows Mobile, Clipper source code can be compiled with Harbour with very little adaptation. Most software originally written to run on Xbase++, FlagShip, FoxPro, xHarbour and others dialects can be compiled with Harbor with some adaptation. As of 2010 many efforts have been made to
783:
Operator '&'. Harbour's implementation of the Macro Operator allows for runtime compilation of any valid Harbour expression. Such a compiled expression may be used as a VALUE, i.e. the right side of an assignment (rvalue) or may be used to resolve the left side (lvalue) of an assignment, i.e.
1767:
Today Harbour development is led by Viktor Szakáts in collaboration with Przemysław Czerpak who also contributes many components of the core language and supplementary components. HBIDE and some other components, especially HBQt, are developed by Pritpal Bedi. Other members of the development
1718:
CREATE CLASS Person VAR Name INIT "" METHOD New( cName ) METHOD Describe() ACCESS Eyes INLINE ::pvtEyes ASSIGN Eyes( x ) INLINE iif( HB_ISSTRING( x ) .AND. x $ "Blue,Brown,Green", ::pvtEyes := x, Alert( "Invalid value" ) )
820:
Programming in an OOP style is a broader issue than a specific library or a specific interface, but OOP programming is something many Clipper programmers have come to expect. CA-Clipper 5.2 and especially 5.3 added a number of base classes, and a matching OOP syntax. Libraries such as
828:
Harbour has OOP extensions with full support for classes including inheritance, based on Class(y) syntax. OOP syntax in Harbour is very similar to that of earlier Clipper class libraries so it should be possible to maintain legacy Clipper code with minimal changes.
1411:
the first outer BEGIN SEQUENCE structure, either after its respective END statement, or a RECOVER clause if present. The Break statement may optionally pass any type of expression, which may be accepted by the RECOVER statement to allow further recovery handling.
1880:– Multi-Platform QT Based GUI Development Package for Harbour. Marinas-GUI downloads as a complete installation package for the chosen target platform (IDE, Version Control, Harbour/C Compiler, Libraries etc.) – Basically install and start coding and compiling 675:. As the same compiler is available for all of the above operating systems, there is no need for re-coding to produce identical products for different platforms, except when operating system dependent features are used. Cross-compiling is supported with 1794:
The Harbour developers explicitly reject extensions to the language where those extensions would break Clipper compatibility. These rejections were softened recently since the new Harbour architecture allows extensions out of the core compiler.
728:
Harbour supports external GUI's, free (e.g. HBQt, HWGui, Mini-GUI (latest version based on Qt and QtContribs) and commercial (e.g. FiveWin, Xailer). HBQt is a library providing bindings to Qt. HBIDE application is a sample of HBQt potential.
1275:
expression is evaluated and compared against the value of the control variable, prior to each iteration, and the loop is terminated if it evaluates to a numeric value greater than the numeric value of the control variable. The optional
1291:
variable will have the value (scalar, or complex) of the respective element in the collection value. The collection expression may be an Array (of any type or combinations of types), a Hash Table, or an Object type.
787:
Additionally, the Macro Operator may compile and execute function calls, complete assignments, or even list of arguments, and the result may be used to resolve any of the above contexts in the compiled application.
679:. Under Microsoft Windows, Harbour is more stable but less well-documented than Clipper, but has multi-platform capability and is more transparent, allows for more customisation and can run from a USB flash drive. 1791:
The Harbour developers have attempted to document all hidden behaviour in the Clipper language and test Harbour-compiled code alongside the same code compiled with Clipper to maintain compatibility.
1380:, and if present, execution of the SWITCH structure will end when the EXIT statement is reached, otherwise it will continue with the first statement below the next CASE statement (fall through). 893:. A scalar holds a single value, such as a string, numeric, or reference to any other type. Arrays are ordered lists of scalars or complex types, indexed by number, starting at 1. Hashes, or 613:, and Mediator exemplify some of the RDD architecture features. DBFNTX implementation has almost the same functionality of DBFCDX and RDDSIX. NETIO and LetoDB provide remote access over 1016:
Codeblocks may have references to Variables of the Procedure/Function>method in which it was defined. Such Codeblocks may be returned as a value, or by means of an argument passed
1542:
optional qualifiers, will flag the procedure to be automatically invoked just before calling the application startup procedure, or just after quitting the application, respectively.
663:
software. Although this is true, xBase is more than a simple database system as at the same time xBase languages using purely DBF can not provide the full concept of a real RDBMS.
1549:
Changes to argument variables are not reflected in respective variables passed by the calling procedure/function/method unless explicitly passed BY REFERENCE using the
764:, its own implementation of CA-Tools, updated NanFor libraries and many others. Harbour has an active development community and extensive third party support. 1141:
variables, they can be created and destroyed at runtime and can be accessed and modified by means of runtime macros or by Codeblocks created on the fly.
98: 91: 2321: 2311: 49: 2356: 1369:
must be a compiled time resolvable numeric expression, and may involve operators, as long as such operators involve compile time static value.
2376: 1798:
A detailed comparison between extensions implemented in Harbour and xHarbour can be found in the source repository of the project on GitHub.
725:
Harbour can make use of multiple Graphical Terminal emulation, including console drivers, and Hybrid Console/GUIs, such as GTWvt, and GTWvg.
141: 2244: 957: 113: 800:
The text value of the expression '...' will be compiled, and the value resulting from the execution of the compiled code is the result.
2351: 2331: 2306: 732:
Harbour is 100% Clipper-compatible and supports many language syntax extensions including greatly extended run-time libraries such as
2366: 2301: 845:
Harbour as every xBase language is case insensitive and can optionally accept keywords written just by their first four characters.
120: 2199: 440: 2371: 2346: 2316: 127: 1020:, in such case the Codeblock will "outlive" the routine in which it was defined, and any variables it references, will be a 897:, are unordered collections of any type values indexed by their associated key, which may be of any scalar or complex type. 1546:
passed to a procedure/function appear in the subroutine as local variables, and may accept any type, including references.
197: 189: 2381: 259: 109: 55: 771:
language provides a very productive way to build business and data intensive applications. Harbour is not an exception.
1825: 1813: 1051:
All types can be assigned to named variables. Named variable identifiers are 1 to 63 ASCII characters long, start with
17: 233: 215: 160: 63: 594:
as a type of ship. Harbour is a synonym for port (where ships dock), and Harbour is a port of the Clipper language.
2341: 352: 1735:
hbrun – Shell interpreter for Harbour. Macro compiling allows to run any valid Harbour code as it's being compiled
1130:
exposed to the Macro compiler, and any macro code which attempts to reference them will generate a runtime error.
2171: 1527:(up to 63 characters non-case sensitive). Both Procedures and Functions may be qualified by the scope qualifier 2204: 1591: 1513: 1154: 874: 491: 346: 822: 614: 1543: 791:
The latest Macro compiler can compile any valid Harbour code including code to per-process before compile.
672: 134: 1861: 1509: 1237:
statement restarts the current iteration of the enclosing loop structure, and if the enclosing loop is a
1162: 625: 605:
Harbour extends the Clipper Replaceable Database Drivers (RDD) approach. It offers multiple RDDs such as
324: 271: 1563:
FUNCTION may return any type by means of the RETURN statement, anywhere in the body of its definition.
1280:
expression is evaluated after each iteration, prior to deciding whether to perform the next iteration.
886: 649: 542: 501:
Harbour code uses the same databases and can be compiled under a wide variety of platforms, including
1741:
hbpp – Pre-processor, a powerful tool which avoids typical problems found on C language per-processor
882: 858: 610: 2326: 1439: 1158: 780: 570: 1784:
a secondary consideration. It should also be noted that Harbour is supported on a wide variety of
691: 87: 597:
In 2009, Harbour was substantially redesigned, mainly by Viktor Szakáts and Przemyslaw Czerpak.
2361: 1738:
hbformat – Formats source code written on Harbour or another dialect according to defined rules
707: 275: 267: 263: 2056: 2336: 719: 1069:: Visible only within the routine which declared it. Value is lost upon exit of the routine. 703: 629: 483: 479: 254: 8: 2164: 1430:
properties, which allows error handlers to perform some preparations, and then request a
1259:
statement closes the control structure and moves to the next iteration of loop structure.
741: 406: 1230::__enumIndex() may be optionally used to retrieve the current iteration index (1 based). 414: 292: 2034: 1785: 894: 653: 502: 2085:"Harbour MiniGUI Extended Edition. | Free Communications software downloads at" 1556:
PROCEDURE has no return value, and if used in an Expression context will produce a
761: 401: 389: 1341:
Harbour supports a SWITCH construct inspired by the C implementation of switch().
2134: 2129: 2084: 1820: 1730: 878: 282: 1872:– Object Oriented Harbour GUI – a fork "class based and oop programming" of HMG 2280: 2239: 2209: 2157: 1972: 1895: 1808: 733: 633: 487: 394: 374: 2144: 1032:(s) by means of its evaluation, will be reflected back at its parent routine. 2295: 2219: 2149: 1890: 862: 711: 382: 1909: 1252:
statement immediately terminates execution of the enclosing loop structure.
1115: 854: 591: 482:, primarily used to create database/business programs. It is a modernised, 1950: 1832: 1245:
loop, it increases the iterator, moving to the next iteration of the loop.
1057:
up to a maximum of 63 characters. Named variables are not case sensitive.
1772:
source repository. As of 2015 Harbour development is active and vibrant.
558: 378: 370: 364: 825:, FieWin, Clip4Win, and Top Class provide additional OOP functionality. 2139: 2118: 1505: 890: 641: 526: 837: 2229: 1908:
free open source visual programming language support Harbour through
1900: 1220:
is a sequence of one or more Harbour statements, and square brackets
530: 1114:
variables which are dynamic entities accessed by means of a runtime
76: 2234: 1780: 715: 518: 467: 1840: 1531:
to restrict their usage to the scope of the module where defined.
2249: 1788:
while xHarbour only really supports MS Windows and Linux 32-bit.
1081:: Visible within the routine which declared it, and all routines 1035:
Codeblocks can be evaluated any number of times, by means of the
870: 866: 737: 574: 550: 534: 522: 2214: 2061: 1769: 1759: 1271:
expression is evaluated prior to the first loop iteration. The
645: 578: 562: 1929: 1157:
control structures as well as additional ones inspired by the
962:{ |Arg1, ArgN| Arg1 := ArgN + OuterVar + FunctionCall() } 2275: 2194: 2180: 2012: 1990: 1860:– Free / Open Source xBase Win32 / GUI Development System (a 1845: 1566:
An example procedure definition and a function call follows:
1150: 768: 753: 699: 695: 684: 676: 660: 637: 606: 506: 495: 428: 2111: 1106:
are resolved at compile time, and thus are much faster than
779:
One of the most powerful features of xBase languages is the
2254: 2124: 1905: 757: 749: 745: 621: 566: 554: 510: 1876: 1868: 1856: 1442:
to replace the expression triggering the error condition.
1849: 1149:
The basic control structures include all of the standard
690:
Harbour can use the following C compilers, among others:
546: 538: 514: 1376:
optional statement is the equivalent of the C statement
656:
are examples of databases which Harbour can connect to.
935:
Complex Types may also be represent as literal values:
2140:
Extensive Harbour documentation, libraries, tools site
1816:
to help Harbour development and various xBase dialects
1028:
of the routine in which it is defined, changes to its
1013:
of any member, including nesting arrays, and Hashes.
1836:– Open Source cross-platform GUI library for Harbour 774: 784:private, or public variables, or a database field. 812:is the short form of &( SomeId + "postfix" ). 1744:hbi18n – Tools to localizing text on applications 1329:The condition expression(s) has to evaluate to a 900:Literal (static) representation of scalar types: 2293: 2121:Clipper, FoxPro and Xbase++ community repository 1445:Alternatively TRY statements are available on 1005:for any element. Hashes and Arrays may contain 2179: 815: 2165: 1449:library working like the SEQUENCE construct. 1384: 447:Clipper, Xbase++, FlagShip, FoxPro, xHarbour 2145:Harbour Wiki (Harbour Functions Dictionary) 1452: 1061:Variables have one of the following scopes: 659:xBase technologies often are confused with 64:Learn how and when to remove these messages 2172: 2158: 1801: 1747:hbdoc – Creates documentation for Harbour 1523:. Naming rules are the same as those for 666: 494:system, which in turn developed from the 234:Learn how and when to remove this message 216:Learn how and when to remove this message 161:Learn how and when to remove this message 1758: 836: 498:database market of the 1980s and 1990s. 2322:Dynamically typed programming languages 2312:Fourth-generation programming languages 2082: 1635:Or, enclosed in an explicit procedure: 832: 806:is the short form for &( SomeId ). 14: 2294: 1775: 1054:and further consist of the characters 953:, FunctionCall(), @FunctionPointer() } 848: 97:Please improve this article by adding 2357:Programming languages created in 1999 2153: 1512:in Harbour can be specified with the 1144: 2377:Multi-paradigm programming languages 1336: 912:"hello", 'hello', 172: 70: 29: 1001:type including other Hashes as the 600: 110:"Harbour" programming language 24: 1973:"QtContribs - Harbour Qt Projects" 1826:Integrated Development Environment 1814:Integrated Development Environment 188:tone or style may not reflect the 25: 2393: 2352:Windows database-related software 2332:Declarative programming languages 2307:XBase programming language family 2103: 1095:routines in the same application. 775:Macro operator (runtime compiler) 45:This article has multiple issues. 2367:High-level programming languages 2302:Procedural programming languages 1295: 198:guide to writing better articles 177: 75: 34: 2130:Harbour Developers Mailing List 1652: 683:make the transition from other 673:written once, compiled anywhere 330:3.0.0 / 17 July 2011 53:or discuss these issues on the 2076: 2049: 2027: 2005: 1983: 1965: 1943: 1922: 1852:Development System for Harbour 1768:community send changes to the 1754: 1751:All tools are multi-platform. 1585: 853:Harbour has six scalar types: 13: 1: 2372:Free software programmed in C 2347:Programming tools for Windows 2317:Dynamic programming languages 1915: 1133:Due to the dynamic nature of 99:secondary or tertiary sources 27:Computer programming language 1046: 297:Viktor Szakáts and community 7: 1884: 1862:Fork (software development) 1844:– Free / Open Source xBase 1707:( oPerson:Describe() ) 816:Object-oriented programming 307:; 25 years ago 10: 2398: 2382:Table-oriented programming 2181:xBase programming language 2135:Harbour Users Mailing List 2083:vailtom (17 August 2009). 877:, and four complex types: 584: 2263: 2187: 1644:"Hello, world!" 1629:"Hello, world!" 1614:"Hello, world!" 1600:"Hello, world!" 1414:Additionally the Harbour 1385:BEGIN SEQUENCE statements 967: 961: 940: 929: 923: 917: 911: 905: 611:Advantage Database Server 466: 461: 456: 451: 446: 439: 423: 413: 400: 388: 363: 359: 345: 323: 319: 301: 291: 281: 253: 1864:of both HMG and Harbour) 1729:hbmk2 – Build tool like 1723: 1716: 1659: 1637: 1622: 1607: 1596: 1568: 1453:Procedures and functions 1168: 1118:. For this same reason, 947:"Nested Array" 2342:Linux programming tools 1991:"Official Harbour page" 1802:GUI libraries and tools 1223:denote optional syntax. 1165:programming languages: 978:"Numeric key" 624:support by means of an 1764: 1665:"hbclass.ch" 842: 667:Programming philosophy 332:; 13 years ago 86:relies excessively on 1993:. The Harbour Project 1762: 1322:represents 0 or more 841:Harbour code on HBIDE 840: 490:version of the older 1594:" program would be: 1573: := Cube( 2 ) 833:Syntax and semantics 809:&SomeId.postfix 708:Microsoft Visual C++ 632:support by means of 620:Harbour also offers 480:programming language 419:.prg, .ch, .hb, .hbp 1776:xHarbour comparison 1695:"Invalid" 849:Built-in data types 744:, hbtip, hbtpathy, 671:Harbour aims to be 415:Filename extensions 302:First appeared 250: 2013:"harbour 路 GitHub" 1765: 1714:Class definition: 1642:Main()  ? 1403:BEGIN SEQUENCE 1389:BEGIN SEQUENCE 1145:Control structures 1030:Detached Variables 986:"Nested" 943:"String" 895:associative arrays 843: 513:variants, several 248: 18:Harbour (software) 2289: 2288: 2087:. Sourceforge.net 1953:. Sourceforge.net 1786:operating systems 1496:SomeProcedureName 1492:SomeProcedureName 1488:SomeProcedureName 1482:SomeProcedureName 1478:SomeProcedureName 1467:SomeProcedureName 1463:SomeProcedureName 1459:SomeProcedureName 1337:SWITCH statements 982:"Name2" 687:dialects easier. 503:Microsoft Windows 473: 472: 365:Typing discipline 244: 243: 236: 226: 225: 218: 192:used on Knowledge 190:encyclopedic tone 171: 170: 163: 145: 68: 16:(Redirected from 2389: 2174: 2167: 2160: 2151: 2150: 2115: 2114: 2112:Official website 2097: 2096: 2094: 2092: 2080: 2074: 2073: 2071: 2069: 2053: 2047: 2046: 2044: 2042: 2035:"About xHarbour" 2031: 2025: 2024: 2022: 2020: 2009: 2003: 2002: 2000: 1998: 1987: 1981: 1980: 1969: 1963: 1962: 1960: 1958: 1947: 1941: 1940: 1938: 1936: 1926: 1828:includes Harbour 1710: 1706: 1703: 1702:"Blue" 1699: 1696: 1692: 1688: 1687:"Dave" 1684: 1680: 1677: 1673: 1669: 1666: 1663: 1657:Main procedure: 1648: 1645: 1641: 1630: 1626: 1615: 1611: 1601: 1580: 1576: 1572: 1522: 1518: 1222: 1140: 1136: 1129: 1125: 1121: 1113: 1109: 1105: 1101: 1094: 1090: 1085:by that routine. 1084: 1080: 1074: 1068: 1056: 1053: 1042: 1023: 1019: 993: 991: 990:"Hash" 987: 983: 979: 975: 974:"John" 971: 970:"Name" 963: 954: 952: 948: 944: 931: 930:1, 1.1, −1, 0xFF 925: 919: 913: 907: 601:Database support 435: 432: 430: 340: 338: 333: 315: 313: 308: 283:Designed by 251: 247: 239: 232: 221: 214: 210: 207: 201: 200:for suggestions. 196:See Knowledge's 181: 180: 173: 166: 159: 155: 152: 146: 144: 103: 79: 71: 60: 38: 37: 30: 21: 2397: 2396: 2392: 2391: 2390: 2388: 2387: 2386: 2327:Query languages 2292: 2291: 2290: 2285: 2259: 2225:Harbour Project 2188:Implementations 2183: 2178: 2110: 2109: 2106: 2101: 2100: 2090: 2088: 2081: 2077: 2067: 2065: 2055: 2054: 2050: 2040: 2038: 2033: 2032: 2028: 2018: 2016: 2011: 2010: 2006: 1996: 1994: 1989: 1988: 1984: 1971: 1970: 1966: 1956: 1954: 1949: 1948: 1944: 1934: 1932: 1928: 1927: 1923: 1918: 1887: 1804: 1778: 1757: 1726: 1721: 1720: 1712: 1711: 1708: 1704: 1701: 1697: 1694: 1690: 1686: 1682: 1678: 1675: 1671: 1667: 1664: 1661: 1655: 1650: 1649: 1646: 1643: 1639: 1633: 1632: 1628: 1624: 1618: 1617: 1613: 1609: 1603: 1602: 1599: 1588: 1583: 1582: 1578: 1574: 1570: 1520: 1516: 1503: 1484: 1480:EXIT PROCEDURE 1476:INIT PROCEDURE 1474: 1455: 1432:Retry Operation 1408: 1398: 1393:)] RECOVER 1387: 1362: 1339: 1317: 1298: 1267:statement, the 1221: 1213: 1199: 1181: 1171: 1147: 1138: 1134: 1127: 1123: 1119: 1111: 1107: 1103: 1099: 1092: 1088: 1082: 1078: 1072: 1066: 1055: 1052: 1049: 1036: 1021: 1017: 997:Hashes may use 989: 985: 981: 977: 973: 969: 950: 946: 942: 851: 835: 818: 810: 804: 798: 777: 718:, Pelles C and 669: 603: 590:is a play on a 587: 427: 355: 347:Preview release 341: 336: 334: 331: 311: 309: 306: 287:Antonio Linares 272:object-oriented 249:Harbour Project 240: 229: 228: 227: 222: 211: 205: 202: 195: 186:This article's 182: 178: 167: 156: 150: 147: 104: 102: 96: 92:primary sources 80: 39: 35: 28: 23: 22: 15: 12: 11: 5: 2395: 2385: 2384: 2379: 2374: 2369: 2364: 2359: 2354: 2349: 2344: 2339: 2334: 2329: 2324: 2319: 2314: 2309: 2304: 2287: 2286: 2284: 2283: 2281:Visual Objects 2278: 2273: 2267: 2265: 2261: 2260: 2258: 2257: 2252: 2247: 2242: 2237: 2232: 2227: 2222: 2217: 2212: 2210:Visual Objects 2207: 2202: 2197: 2191: 2189: 2185: 2184: 2177: 2176: 2169: 2162: 2154: 2148: 2147: 2142: 2137: 2132: 2127: 2122: 2116: 2105: 2104:External links 2102: 2099: 2098: 2075: 2057:"xhb-diff.txt" 2048: 2037:. Xharbour.org 2026: 2004: 1982: 1964: 1942: 1920: 1919: 1917: 1914: 1913: 1912: 1903: 1898: 1896:Visual Objects 1893: 1886: 1883: 1882: 1881: 1873: 1865: 1853: 1837: 1829: 1817: 1803: 1800: 1777: 1774: 1756: 1753: 1749: 1748: 1745: 1742: 1739: 1736: 1733: 1725: 1722: 1717: 1700::Eyes := 1693::Eyes := 1660: 1654: 1651: 1638: 1623: 1608: 1597: 1587: 1584: 1577:Cube( n ) 1569: 1485: 1475: 1465:() PROCEDURE 1456: 1454: 1451: 1438:, or return a 1402: 1388: 1386: 1383: 1382: 1381: 1370: 1343: 1338: 1335: 1299: 1297: 1294: 1261: 1260: 1253: 1246: 1231: 1224: 1200: 1182: 1172: 1170: 1167: 1146: 1143: 1126:variables are 1097: 1096: 1086: 1076: 1070: 1048: 1045: 995: 994: 964: 955: 933: 932: 926: 920: 914: 908: 850: 847: 834: 831: 817: 814: 808: 802: 796: 776: 773: 740:, Free Image, 668: 665: 602: 599: 586: 583: 488:cross-platform 478:is a computer 471: 470: 464: 463: 459: 458: 457:dBase, Clipper 454: 453: 449: 448: 444: 443: 437: 436: 425: 421: 420: 417: 411: 410: 409:GPL-compatible 404: 398: 397: 395:Cross-platform 392: 386: 385: 367: 361: 360: 357: 356: 351: 349: 343: 342: 329: 327: 325:Stable release 321: 320: 317: 316: 303: 299: 298: 295: 289: 288: 285: 279: 278: 260:multi-paradigm 257: 242: 241: 224: 223: 185: 183: 176: 169: 168: 83: 81: 74: 69: 43: 42: 40: 33: 26: 9: 6: 4: 3: 2: 2394: 2383: 2380: 2378: 2375: 2373: 2370: 2368: 2365: 2363: 2362:1999 software 2360: 2358: 2355: 2353: 2350: 2348: 2345: 2343: 2340: 2338: 2335: 2333: 2330: 2328: 2325: 2323: 2320: 2318: 2315: 2313: 2310: 2308: 2305: 2303: 2300: 2299: 2297: 2282: 2279: 2277: 2274: 2272: 2269: 2268: 2266: 2262: 2256: 2253: 2251: 2248: 2246: 2243: 2241: 2238: 2236: 2233: 2231: 2228: 2226: 2223: 2221: 2220:Visual FoxPro 2218: 2216: 2213: 2211: 2208: 2206: 2203: 2201: 2198: 2196: 2193: 2192: 2190: 2186: 2182: 2175: 2170: 2168: 2163: 2161: 2156: 2155: 2152: 2146: 2143: 2141: 2138: 2136: 2133: 2131: 2128: 2126: 2123: 2120: 2117: 2113: 2108: 2107: 2086: 2079: 2064: 2063: 2058: 2052: 2036: 2030: 2014: 2008: 1992: 1986: 1978: 1974: 1968: 1952: 1946: 1931: 1925: 1921: 1911: 1907: 1904: 1902: 1899: 1897: 1894: 1892: 1891:Visual FoxPro 1889: 1888: 1879: 1878: 1874: 1871: 1870: 1866: 1863: 1859: 1858: 1854: 1851: 1847: 1843: 1842: 1838: 1835: 1834: 1830: 1827: 1823: 1822: 1818: 1815: 1811: 1810: 1806: 1805: 1799: 1796: 1792: 1789: 1787: 1782: 1773: 1771: 1761: 1752: 1746: 1743: 1740: 1737: 1734: 1732: 1728: 1727: 1715: 1681: := Pers 1658: 1636: 1621: 1606: 1595: 1593: 1590:The typical " 1567: 1564: 1561: 1559: 1554: 1552: 1547: 1545: 1541: 1537: 1532: 1530: 1526: 1515: 1511: 1507: 1501: 1497: 1494:() FUNCTION 1493: 1489: 1483: 1479: 1472: 1468: 1464: 1460: 1450: 1448: 1443: 1441: 1437: 1433: 1429: 1428:canSubstitute 1425: 1421: 1417: 1412: 1406: 1401: 1396: 1392: 1379: 1375: 1371: 1368: 1364: 1363: 1360: 1357: 1354: 1351: 1347: 1342: 1334: 1332: 1327: 1325: 1321: 1315: 1312: 1309: 1306: 1303: 1296:IF statements 1293: 1290: 1286: 1281: 1279: 1274: 1270: 1266: 1258: 1254: 1251: 1247: 1244: 1240: 1236: 1232: 1229: 1225: 1219: 1215: 1214: 1211: 1208: 1207:CollectionExp 1204: 1197: 1194: 1190: 1186: 1179: 1176: 1166: 1164: 1160: 1156: 1152: 1142: 1131: 1117: 1091:: Visible by 1087: 1077: 1071: 1065: 1064: 1063: 1062: 1058: 1044: 1040: 1033: 1031: 1025: 1014: 1012: 1008: 1004: 1000: 965: 959: 956: 938: 937: 936: 927: 921: 915: 909: 903: 902: 901: 898: 896: 892: 888: 884: 880: 876: 872: 868: 864: 860: 856: 846: 839: 830: 826: 824: 813: 807: 801: 797:&( ... ) 795: 792: 789: 785: 782: 772: 770: 765: 763: 759: 755: 751: 747: 743: 739: 735: 730: 726: 723: 721: 717: 713: 709: 705: 701: 697: 693: 688: 686: 680: 678: 674: 664: 662: 657: 655: 651: 647: 643: 639: 635: 631: 627: 623: 618: 616: 612: 608: 598: 595: 593: 582: 580: 576: 572: 568: 564: 560: 556: 552: 548: 544: 540: 536: 532: 528: 524: 520: 517:descendants, 516: 512: 508: 504: 499: 497: 493: 489: 485: 481: 477: 469: 465: 460: 455: 452:Influenced by 450: 445: 442: 438: 434: 426: 422: 418: 416: 412: 408: 405: 403: 399: 396: 393: 391: 387: 384: 380: 376: 372: 368: 366: 362: 358: 354: 350: 348: 344: 328: 326: 322: 318: 304: 300: 296: 294: 290: 286: 284: 280: 277: 273: 269: 265: 261: 258: 256: 252: 246: 238: 235: 220: 217: 209: 199: 193: 191: 184: 175: 174: 165: 162: 154: 143: 140: 136: 133: 129: 126: 122: 119: 115: 112: –  111: 107: 106:Find sources: 100: 94: 93: 89: 84:This article 82: 78: 73: 72: 67: 65: 58: 57: 52: 51: 46: 41: 32: 31: 19: 2337:DOS software 2270: 2224: 2089:. Retrieved 2078: 2066:. Retrieved 2060: 2051: 2039:. Retrieved 2029: 2017:. Retrieved 2015:. Github.com 2007: 1995:. Retrieved 1985: 1976: 1967: 1955:. Retrieved 1945: 1933:. Retrieved 1924: 1875: 1867: 1855: 1839: 1831: 1821:PTSource IDE 1819: 1807: 1797: 1793: 1790: 1779: 1766: 1750: 1713: 1674:oPerson 1656: 1653:OOP examples 1634: 1619: 1604: 1589: 1565: 1562: 1557: 1555: 1550: 1548: 1539: 1535: 1533: 1528: 1524: 1504: 1499: 1495: 1491: 1487: 1481: 1477: 1470: 1466: 1462: 1458: 1446: 1444: 1435: 1431: 1427: 1423: 1419: 1416:Error Object 1415: 1413: 1409: 1404: 1399: 1394: 1390: 1377: 1373: 1366: 1358: 1355: 1352: 1349: 1345: 1340: 1330: 1328: 1324:statement(s) 1323: 1319: 1318: 1313: 1310: 1307: 1304: 1301: 1288: 1284: 1282: 1277: 1272: 1268: 1264: 1262: 1256: 1249: 1242: 1238: 1234: 1227: 1217: 1209: 1206: 1202: 1195: 1192: 1188: 1184: 1177: 1175:ConditionExp 1174: 1148: 1132: 1116:Symbol table 1098: 1060: 1059: 1050: 1038: 1034: 1029: 1026: 1018:BY REFERENCE 1015: 1010: 1009:type as the 1006: 1002: 998: 996: 934: 899: 852: 844: 827: 819: 811: 805: 803:&SomeId 799: 793: 790: 786: 778: 766: 731: 727: 724: 689: 681: 670: 658: 628:syntax, and 619: 604: 596: 588: 500: 475: 474: 381:, partially 245: 230: 212: 203: 187: 157: 148: 138: 131: 124: 117: 105: 85: 61: 54: 48: 47:Please help 44: 1977:SourceForge 1935:3 September 1910:HarbourPWCT 1877:Marinas-GUI 1763:HBIDE look. 1755:Development 1670:Main() 1592:hello world 1586:Sample code 712:Borland C++ 559:eComStation 557:(including 484:open source 407:Open-source 369:Optionally 2296:Categories 2240:Vulcan.NET 2091:9 December 2068:9 December 2041:9 December 2019:9 December 1997:9 December 1957:9 December 1916:References 1544:Parameters 1506:Procedures 1461:PROCEDURE 1457:PROCEDURE 1420:canDefault 1367:LiteralExp 1350:LiteralExp 1269:assignment 1043:function. 1024:variable. 976:, 1 => 918:0d20100405 752:), hbbz2 ( 748:, hbmzip ( 720:Sun Studio 642:PostgreSQL 617:protocol. 527:Windows CE 462:Influenced 337:2011-07-17 276:reflective 268:functional 264:imperative 206:April 2019 151:March 2018 121:newspapers 88:references 50:improve it 2245:MaxScript 2119:The Oasis 1930:"Harbour" 1668:PROCEDURE 1640:PROCEDURE 1525:Variables 1517:PROCEDURE 1510:functions 1490:FUNCTION 1486:FUNCTION 1418:supports 1346:SwitchExp 1201:FOR EACH 1187: := 1047:Variables 958:CodeBlock 928:Numeric: 922:Logical: 887:CodeBlock 531:Pocket PC 293:Developer 56:talk page 2235:xHarbour 1951:"LetoDB" 1885:See also 1781:xHarbour 1685:():New( 1662:#include 1598: ? 1575:FUNCTION 1553:prefix. 1521:FUNCTION 1514:keywords 1424:canRetry 1285:FOR EACH 1243:FOR EACH 1039:BlockExp 1022:DETACHED 984:=> { 924:.T., .F. 910:String: 823:Class(y) 794:Syntax: 736:, Blat, 716:Watcom C 710:(6.0+), 650:Firebird 519:Mac OS X 468:xHarbour 441:Dialects 353:3.2.0dev 255:Paradigm 2250:VP-Info 2230:XBase++ 2205:Clipper 1901:Xbase++ 1857:MiniGUI 1698:oPerson 1691:oPerson 1679:oPerson 1581:n ** 3 1560:value. 1344:SWITCH 1333:value. 1331:LOGICAL 1308:CondExp 1302:CondExp 1263:In the 1189:InitExp 1155:Clipper 1135:PRIVATE 1108:PRIVATE 1079:PRIVATE 945:, 1, { 939:Array: 875:Pointer 871:Numeric 867:Logical 738:OpenSSL 592:Clipper 585:History 551:VxWorks 543:Android 535:Symbian 523:MINIX 3 492:Clipper 476:Harbour 431:.github 429:harbour 424:Website 402:License 375:dynamic 335: ( 310: ( 135:scholar 2215:FoxPro 2200:DBFree 2062:GitHub 1770:GitHub 1709:RETURN 1689:) 1647:RETURN 1579:RETURN 1529:STATIC 1500:Param1 1471:Param1 1436:Resume 1287:, the 1193:EndExp 1173:WHILE 1153:, and 1139:PUBLIC 1124:STATIC 1112:PUBLIC 1104:STATIC 1089:PUBLIC 1083:called 1073:STATIC 1037:Eval( 988:=> 972:=> 966:Hash: 916:Date: 889:, and 883:Object 859:String 654:Oracle 646:SQLite 579:MS-DOS 563:ArcaOS 383:strong 137:  130:  123:  116:  108:  2276:dBase 2271:HBIDE 2195:dBase 2125:HBIDE 1846:Win32 1833:HwGui 1809:hbide 1724:Tools 1705:Alert 1672:LOCAL 1625:Alert 1519:, or 1440:Value 1378:break 1348:CASE 1212:NEXT 1198:NEXT 1169:Loops 1151:dBase 1120:LOCAL 1100:LOCAL 1067:LOCAL 1011:Value 904:Nil: 879:Array 781:Macro 769:xBase 762:Cairo 754:bzip2 700:Clang 696:MinGW 685:xBase 677:MinGW 661:RDBMS 638:MySQL 571:Haiku 507:Linux 496:dBase 142:JSTOR 128:books 2255:PWCT 2093:2013 2070:2013 2043:2013 2021:2013 1999:2013 1959:2013 1937:2020 1906:PWCT 1869:ooHG 1731:make 1620:Or: 1610:QOut 1605:Or: 1540:EXIT 1536:INIT 1534:The 1508:and 1434:, a 1426:and 1407:END 1400:or: 1397:END 1374:EXIT 1372:The 1365:The 1361:END 1316:END 1278:STEP 1257:NEXT 1255:The 1250:EXIT 1248:The 1235:LOOP 1233:The 1226:The 1216:The 1183:FOR 1180:END 1163:Java 1137:and 1122:and 1110:and 1102:and 891:Hash 863:Date 767:Any 758:cURL 750:zlib 746:PCRE 622:ODBC 577:and 567:BeOS 561:and 555:OS/2 511:Unix 486:and 379:safe 371:duck 312:1999 305:1999 114:news 2264:IDE 1850:GUI 1841:HMG 1676:CLS 1558:NIL 1538:or 1447:xhb 1405:... 1395:... 1391:... 1359:... 1356:... 1353:... 1320:... 1314:... 1311:... 1305:... 1300:IF 1289:Var 1283:In 1265:FOR 1241:or 1239:FOR 1228:Var 1218:... 1210:... 1205:IN 1203:Var 1196:... 1191:TO 1185:Var 1178:... 1161:or 1128:not 1093:all 1007:any 1003:Key 999:any 992:} } 951:.T. 949:}, 906:NIL 855:Nil 756:), 734:OLE 704:ICC 692:GCC 634:OLE 630:ADO 626:OOP 615:TCP 607:DBF 575:AIX 573:, 565:), 547:QNX 539:iOS 515:BSD 433:.io 90:to 2298:: 2059:. 1975:. 1848:/ 1824:– 1812:– 1683:on 1631:) 1627:( 1616:) 1612:( 1502:) 1498:( 1473:) 1469:( 1422:, 1326:. 1273:TO 980:, 968:{ 960:: 941:{ 885:, 881:, 873:, 869:, 865:, 861:, 857:, 760:, 742:GD 722:. 714:, 706:, 702:, 698:, 694:, 652:, 648:, 644:, 640:, 636:. 581:. 553:, 549:, 545:, 541:, 537:, 533:, 529:, 525:, 521:, 509:, 505:, 390:OS 377:, 373:, 274:, 270:, 266:, 262:: 101:. 59:. 2173:e 2166:t 2159:v 2095:. 2072:. 2045:. 2023:. 2001:. 1979:. 1961:. 1939:. 1571:x 1551:@ 1159:C 1041:) 569:/ 339:) 314:) 237:) 231:( 219:) 213:( 208:) 204:( 194:. 164:) 158:( 153:) 149:( 139:· 132:· 125:· 118:· 95:. 66:) 62:( 20:)

Index

Harbour (software)
improve it
talk page
Learn how and when to remove these messages

references
primary sources
secondary or tertiary sources
"Harbour" programming language
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
encyclopedic tone
guide to writing better articles
Learn how and when to remove this message
Learn how and when to remove this message
Paradigm
multi-paradigm
imperative
functional
object-oriented
reflective
Designed by
Developer
Stable release
Preview release
3.2.0dev

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.