Misplaced Pages

Quattro Pro

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

Quattro Pro is a spreadsheet program developed by Borland and now sold by Alludo , most often as part of Alludo's WordPerfect Office suite.

#615384

97-503: Historically, Quattro Pro used keyboard commands close to those of Lotus 1-2-3 . While it is commonly said to have been the first program to use tabbed sheets , Boeing Calc actually utilized tabbed sheets earlier. It currently runs under the Windows operating system. For years Quattro Pro had a competitive advantage, in regard to maximum row and column limits (allowing a maximum worksheet size of one million rows by 18,276 columns). This avoided

194-584: A bet on C++. However, the C++ compiler was not ready at first, and OO code for both projects was started in C with OO emulation through macros. As the Borland Turbo C++ compiler became available internally the projects converted to using C++. Charlie Anderson was put in charge of the project and he soon had Istvan Cseri, Weikuo Liaw, Murray Low, Steven Boye, Barry Spencer, Alan Bush, Dave Orton , Bernie Vachon, Anson Lee, Tod Landis, Gordon Ko and Chuck Batterman working on

291-555: A complete business platform. Lotus Software had their own word processor named Lotus Manuscript , which was to some extent acclaimed in academia , but did not catch the interest of the business, nor the consumer market . With the acceptance of Windows 3.0 in 1990, the market for desktop software grew even more. None of the major spreadsheet developers had seriously considered the graphical user interface (GUI) to supplement their DOS offerings, and so they responded slowly to Microsoft 's own GUI-based products Excel and Word . Lotus

388-428: A fully-fledged spreadsheet, graph, database and word processor for DOS, but none of the integrated packages ever really succeeded. Lotus 1-2-3 migrated to the Windows platform, as part of Lotus SmartSuite . IBM's continued development and marketing of Lotus SmartSuite and OS/2 during the 1990s placed it in direct competition with Microsoft Office and Microsoft Windows , respectively. As a result, Microsoft "punished

485-549: A macro pre-processor and an assembler in the same package. In 1959, Douglas E. Eastwood and Douglas McIlroy of Bell Labs introduced conditional and recursive macros into the popular SAP assembler, creating what is known as Macro SAP. McIlroy's 1960 paper was seminal in the area of extending any (including high-level ) programming languages through macro processors . Macro Assemblers allowed assembly language programmers to implement their own macro-language and allowed limited portability of code between two machines running

582-412: A marketing guru. His ability to develop his product to appeal to non-technical users was one secret to its rapid success. Unlike many technologists, Kapor relied on focus group feedback to make his user instructions more user-friendly. One example: the instructions that came with the floppy disc read: "Remove the protective cover and insert disc into computer." A few focus group participants tried to rip-off

679-618: A middle step between assembly language programming and the high-level programming languages that followed, such as FORTRAN and COBOL . Two of the earliest programming installations to develop "macro languages" for the IBM 705 computer were at Dow Chemical Corp. in Delaware and the Air Material Command, Ballistics Missile Logistics Office in California. A macro instruction written in the format of

776-639: A new feature to the program. Colin Glassey came from Brio to help with the integration of that technology. After a year and the merging of the old team and the new team, QPW 5 was released (the reason for the jump in version number had to do with keeping up with the DOS version as well as it looked good). QPW 5 sold well also, though the Microsoft Excel + Word combination was gaining steam. Work then started on version 6 (now with Steven Boye as project lead). Midway through

873-585: A pattern-based system where the syntactic environments of the macro definition and the macro use are distinct, allowing macro definers and users not to worry about inadvertent variable capture (cf. referential transparency ). Hygienic macros have been standardized for Scheme in the R5RS , R6RS , and R7RS standards. A number of competing implementations of hygienic macros exist such as syntax-rules , syntax-case , explicit renaming, and syntactic closures. Both syntax-rules and syntax-case have been standardized in

970-463: A programmer for any set of native assembler program instructions, typically macros are associated with macro libraries delivered with the operating system allowing access to operating system functions such as In older operating systems such as those used on IBM mainframes, full operating system functionality was only available to assembler language programs, not to high level language programs (unless assembly language subroutines were used, of course), as

1067-523: A register (macro) what a person types on the keyboard and it can be replayed or edited just like VBA macros for Microsoft Office. Vim also has a scripting language called Vimscript to create macros. Visual Basic for Applications (VBA) is a programming language included in Microsoft Office from Office 97 through Office 2019 (although it was available in some components of Office prior to Office 97). However, its function has evolved from and replaced

SECTION 10

#1732854604616

1164-559: A scripting language. VBA has access to most Microsoft Windows system calls and executes when documents are opened. This makes it relatively easy to write computer viruses in VBA, commonly known as macro viruses . In the mid-to-late 1990s, this became one of the most common types of computer virus. However, during the late 1990s and to date, Microsoft has been patching and updating its programs. In addition, current anti-virus programs immediately counteract such attacks. A parameterized macro

1261-416: A sequence of lexical tokens or characters , or a syntax tree . Character macros are supported in software applications to make it easy to invoke common command sequences. Token and tree macros are supported in some programming languages to enable code reuse or to extend the language, sometimes for domain-specific languages . Macros are used to make a sequence of computing instructions available to

1358-446: A very different computer with very little effort (for each target machine architecture, just the writing of the rudimentary macro compiler). The advent of modern programming languages, notably C , for which compilers are available on virtually all computers, has rendered such an approach superfluous. This was, however, one of the first instances (if not the first) of compiler bootstrapping . While macro instructions can be defined by

1455-407: Is a macro that is able to insert given objects into its expansion. This gives the macro some of the power of a function . As a simple example, in the C programming language , this is a typical macro that is not a parameterized macro, i.e., a parameterless macro : This causes PI to always be replaced with 3.14159 wherever it occurs. An example of a parameterized macro, on the other hand,

1552-500: Is a type of programming macro that deliberately captures some form supplied to the macro which may be referred to by an anaphor (an expression referring to another). Anaphoric macros first appeared in Paul Graham's On Lisp and their name is a reference to linguistic anaphora—the use of words as a substitute for preceding words. In the mid-eighties, a number of papers introduced the notion of hygienic macro expansion ( syntax-rules ),

1649-607: Is because the lower court's decision that it was not a copyright violation to merely have a compatible command menu or language was upheld, but only via stalemate. In 1995, the First Circuit found that command menus are an uncopyrightable "method of operation" under section 102(b) of the Copyright Act . The 1-2-3 menu structure (example, slash File Erase) was itself an advanced version of single letter menus introduced in VisiCalc . When

1746-445: Is both a generic component in a hierarchy of nested subassemblies, and a procedure for integrating itself with its subassembly frames (a recursive process that resolves integration conflicts in favor of higher level subassemblies). The outputs are custom documents, typically compilable source modules. Frame technology can avoid the proliferation of similar but subtly different components, an issue that has plagued software development since

1843-500: Is this: What this macro expands to depends on what argument x is passed to it. Here are some possible expansions: Parameterized macros are a useful source-level mechanism for performing in-line expansion , but in languages such as C where they use simple textual substitution, they have a number of severe disadvantages over other mechanisms for performing in-line expansion, such as inline functions . The parameterized macros used in languages such as Lisp , PL/I and Scheme , on

1940-558: The OpenDocument format or other file formats. After previewing 1-2-3 on the IBM PC in 1982, BYTE called it "modestly revolutionary" for elegantly combining spreadsheet, database, and graphing functions. It praised the application's speed and ease of use, stating that with the built-in help screens and tutorial, "1-2-3 is one of the few pieces of software that can literally be used by anybody. You can buy 1-2-3 and [an IBM PC] and be running

2037-453: The Racket language extends the notion of a macro system to a syntactic tower, where macros can be written in languages including macros, using hygiene to ensure that syntactic layers are distinct and allowing modules to export macros to other modules. Macros are normally used to map a short string (macro invocation) to a longer sequence of instructions. Another, less common, use of macros is to do

SECTION 20

#1732854604616

2134-407: The token , rather than the character level. However, the macro facilities of more sophisticated assemblers, e.g., IBM High Level Assembler (HLASM) can't be implemented with a preprocessor; the code for assembling instructions and data is interspersed with the code for assembling macro invocations. A classic use of macros is in the computer typesetting system TeX and its derivatives, where most of

2231-425: The 1980s, macro programs – originally SmartKey , then SuperKey, KeyWorks, Prokey – were very popular, first as a means to automatically format screenplays , then for a variety of user-input tasks. These programs were based on the terminate-and-stay-resident mode of operation and applied to all keyboard input, no matter in which context it occurred. They have to some extent fallen into obsolescence following

2328-456: The 65,536 row by 256 column spreadsheet limitations inherent to Microsoft Excel (prior to Excel 2007). Even with the maximum row advantage, Quattro Pro has been a distant second to Excel, in terms of sales numbers, since approximately 1996 to the present. When version 1.0 was in development, it was codenamed "Buddha" since it was meant to "assume the Lotus position", #1 in the market. When the product

2425-574: The IBM PC Company with higher prices, a late license for Windows 95 , and the withholding of technical and marketing support." Microsoft did not grant IBM the OEM rights for Windows 95 until 15 minutes prior to the release of Windows 95 on 24 August 1995. Because of this uncertainty, IBM machines were sold without Windows 95, while Compaq , HP , and other companies sold machines with Windows 95 from day one. On 11 June 2013, IBM announced it would withdraw

2522-817: The IBM PC and compatibles, while hurting sales of computers that could not run it. "They're looking for 1-2-3. Boy, are they looking for 1-2-3!" InfoWorld wrote. Noting that computer purchasers did not want PC compatibility as much as compatibility with certain PC software, the magazine suggested "let's tell it like it is. Let's not say 'PC compatible,' or even 'MS-DOS compatible.' Instead, let's say '1-2-3 compatible. ' " PC clones' advertising did often prominently state that they were compatible with 1-2-3. An Apple II software company promised that its spreadsheet had "the power of 1-2-3". Because spreadsheets use large amounts of memory, 1‐2‐3 helped popularize greater RAM capacities in PCs, and especially

2619-679: The Lotus brand: IBM Lotus 1-2-3 Millennium Edition V9.x, IBM Lotus SmartSuite 9.x V9.8.0, and Organizer V6.1.0. IBM stated, "Customers will no longer be able to receive support for these offerings after 30 September 2014. No service extensions will be offered. There will be no replacement programs." The name "1-2-3" stemmed from the product's integration of three main capabilities: along with its core spreadsheet functionality, 1-2-3 also offered integral charting/graphing and rudimentary database operations. Data features included sorting data in any defined rectangle, by order of information in one or two columns in

2716-551: The MDA that allowed bitmap mode. The ability to have high-resolution text and graphics capabilities (at the expense of color) proved extremely popular and Lotus 1-2-3 is credited with popularizing the Hercules graphics card. Subsequent releases of Lotus 1-2-3 supported more video standards as time went on, including EGA, AT&T/Olivetti, and VGA. Significantly, support for the PCjr/Tandy modes

2813-509: The OpenDocument format or other file formats, Microsoft dropped support for Quattro Pro file formats after Office 2007. Lotus 1-2-3 Lotus 1-2-3 is a discontinued spreadsheet program from Lotus Software (later part of IBM ). It was the first killer application of the IBM PC , was hugely popular in the 1980s, and significantly contributed to the success of IBM PC-compatibles in

2910-480: The QPW project was immense. The object model was untried and might not have worked for a spreadsheet. The user interface (UI) was new (for Windows programs at least). No one knew if the C++ compiler could generate fast enough code. As it turned out, the program worked. It was fast, it was close in feature set to Lotus 123 and Excel, and the "right-click for properties" user design was reasonably understandable. At one point, it

3007-545: The Quattro Pro code base and team of engineers from Borland. Novell was going to try to be a real competitor to Microsoft. Although Version 6 was released and some effort was made to unify the user interface between WordPerfect and QPW, the effort was far from complete. In another lawsuit, Novell claims that Microsoft had "deliberately targeted and destroyed" its WordPerfect and QuattroPro programs to protect its Windows operating system monopoly. The US Supreme Court refused to halt

Quattro Pro - Misplaced Pages Continue

3104-454: The Quattro Pro for Windows (QPW) was written from scratch. Both the QPW and Paradox for Windows codebases (the latter being another Borland database application) were based on Borland's internal pilot project with object oriented UI code for Windows. This project ran simultaneously with the Borland language group investigating the desirability of a C++ compiler, and the company decided to make

3201-630: The Scheme standards. Recently, Racket has combined the notions of hygienic macros with a " tower of evaluators ", so that the syntactic expansion time of one macro system is the ordinary runtime of another block of code, and showed how to apply interleaved expansion and parsing in a non-parenthesized language. A number of languages other than Scheme either implement hygienic macros or implement partially hygienic systems. Examples include Scala , Rust , Elixir , Julia , Dylan , Nim , and Nemerle . Felleisen conjectures that these three categories make up

3298-569: The actions. An underlying macro programming language, most commonly a scripting language , with direct access to the features of the application may also exist. The programmers' text editor Emacs (short for "editing macros") follows this idea to a conclusion. In effect, most of the editor is made of macros. Emacs was originally devised as a set of macros in the editing language TECO ; it was later ported to dialects of Lisp . Another programmers' text editor, Vim (a descendant of vi ), also has an implementation of keyboard macros. It can record into

3395-406: The advent of expanded memory , which allowed greater than 640k to be accessed. Lotus 1-2-3 inspired imitators, the first of which was Mosaic Software's "The Twin", written in the fall of 1985 largely in the C programming language , followed by VP-Planner, which was backed by Adam Osborne . These were able to not only read 1-2-3 files, but also execute many or most macro programs by incorporating

3492-440: The advent of mouse-driven user interfaces and the availability of keyboard and mouse macros in applications, such as word processors and spreadsheets , making it possible to create application-sensitive keyboard macros. Keyboard macros can be used in massively multiplayer online role-playing games (MMORPGs) to perform repetitive, but lucrative tasks, thus accumulating resources. As this is done without human effort, it can skew

3589-741: The antitrust lawsuit in March 2008. The release of Windows 95 in August 1995 was the beginning of the end for Novell and its plans to compete with Microsoft. Not only did Microsoft release a new operating system, but Microsoft also released new versions of Word and Excel to accompany it. Sales of Novell PerfectOffice (and Lotus applications as well) sank to almost nothing while sales of the Microsoft products were huge. Within three months, Novell announced they were going to sell their applications to someone (eventually that proved to be Corel ). By mid-1996, Microsoft had 95% of

3686-407: The appellate court ruled that the 1-2-3 menus were functional and not copyrightable. The case went all the way to the U.S. Supreme Court which split 4 to 4 ( Justice Stevens recused himself). This left the lower court ruling intact, which was a victory for Borland. However, the broader issue of whether a company can own and protect the way its program behaves remained unresolved. By the time the case

3783-460: The article, Philippe Kahn and Spencer Leyton had a casual conversation where they joked, half seriously, about perhaps developing a spreadsheet to compete with Lotus Development's 1-2-3. That led to Mr. Kahn setting an appointment with an agent for some Eastern European software developers, Robert Stein of Andromeda Software, which was also involved with the game Tetris . That led to an agreement negotiated by Mr. Leyton and Mr. Stein, providing for

3880-556: The basic assembly language code remained the same, only the macro libraries needed to be written for each target language. In modern operating systems such as Unix and its derivatives, operating system access is provided through subroutines, usually provided by dynamic libraries. High-level languages such as C offer comprehensive access to operating system functions, obviating the need for assembler language programs for such functionality. Moreover, standard libraries of several newer programming languages, such as Go , actively discourage

3977-424: The bug to ensure compatibility with legacy Lotus 1-2-3 spreadsheets. Macro (computer science) In computer programming , a macro (short for " macro instruction "; from Greek μακρο -  'long, large' ) is a rule or pattern that specifies how a certain input should be mapped to a replacement output. Applying a macro to an input is known as macro expansion . The input and output may be

Quattro Pro - Misplaced Pages Continue

4074-439: The building again. In addition, the sprinkler system was triggered. The building was closed for months. All the computers were removed, placed on the tennis courts, washed down (acoustic ceilings rained gray mush onto everything when the sprinklers ran) and dried with hair dryers. Those that booted up were put to work. Quattro Pro finished final quality assurance testing and was sent to manufacturing from those computers running on

4171-571: The business market. The first spreadsheet, VisiCalc , had helped launch the Apple II as one of the earliest personal computers in business use. With IBM's entry into the market, VisiCalc was slow to respond, and when they did, they launched what was essentially a straight port of their existing system despite the greatly expanded hardware capabilities. Lotus's solution was marketed as a three-in-one integrated solution: it handled spreadsheet calculations, database functionality, and graphical charts, hence

4268-538: The case came before the Supreme Court, the justices would end up deadlocked 4–4. This meant that Borland had emerged victorious, but the extent to which copyright law would be applicable to computer software went unaddressed and undefined. Microsoft's early spreadsheet Multiplan eventually gave way to Excel , which debuted on the Macintosh in 1985. It arrived on PCs with the release of Windows 2.x in 1987, but as Windows

4365-414: The company could manage was a Windows adaptation of their existing spreadsheet with no changes except using a graphical interface. Additionally, several versions of 1-2-3 had different features and slightly different interfaces. Lotus 1-2-3's intended successor, Lotus Symphony , was Lotus's entry into the anticipated " integrated software " market. It intended to expand the rudimentary all-in-one 1-2-3 into

4462-771: The development of the original Quattro. Quattro was written in assembly language and Turbo C , principally by Adam Bosworth , Lajos Frank, and Chuck Batterman. It was praised mainly for superior graphics on DOS. Borland acquired a replacement product called "Surpass", written in Modula-2 . The main designers and programmers of Surpass were also hired by Borland to turn Surpass into Quattro Pro: Bob Warfield, Dave Anderson, Weikuo Liaw, Bob Richardson and Tod Landis. They joined other Borland programmers including Chuck Batterman, Lajos Frank, Tanj Bennett, Rich Reppert and Roger Schlafly. Bob Warfield later became Vice President of R&D at Borland. All eventually left Borland. Quattro Pro shipped in

4559-605: The development of version 6 a strategic decision to work closely with the WordPerfect word processor was made. It was a direct attempt to push back at the Microsoft Office one-two punch of Microsoft Word and Microsoft Excel. The other big issue with Version 6 was the advent of Windows 95 . This was a significant modification to the Windows operating system with a major change to user interface guidelines. In an odd set of events, Novell purchased both WordPerfect Corporation and

4656-446: The economy of the game. For this reason, use of macros is a violation of the TOS or EULA of most MMORPGs, and their administrators spend considerable effort to suppress them. Keyboard and mouse macros that are created using an application's built-in macro features are sometimes called application macros . They are created by carrying out the sequence once and letting the application record

4753-517: The final quarter of 1989. The Borland main office was near the epicenter of the Loma Prieta earthquake and the building was severely damaged when large and heavy air conditioners on the roof of Borland's main building were thrown upward by the quake, and came crashing down upon the glulam beams running across the top of the building. The beams were damaged to the point where they required injections of epoxy in order to make them sturdy enough to support

4850-473: The first six months on the market. There were well-known problems with VisiCalc, and several competitors appeared to address some of these issues. One early example was 1980's SuperCalc , which solved the problem of circular references , while a slightly later example was Microsoft Multiplan from 1981, which offered larger sheets and other improvements. In spite of these, and others, VisiCalc continued to outsell them all. The Lotus Development Corporation

4947-510: The functionality is based on macros. MacroML is an experimental system that seeks to reconcile static typing and macro systems. Nemerle has typed syntax macros, and one productive way to think of these syntax macros is as a multi-stage computation . Other examples: Some major applications have been written as text macro invoked by other applications, e.g., by XEDIT in CMS. Some languages, such as PHP , can be embedded in free-format text, or

SECTION 50

#1732854604616

5044-468: The invention of macros and subroutines . Most assembly languages have less powerful procedural macro facilities, for example allowing a block of code to be repeated N times for loop unrolling ; but these have a completely different syntax from the actual assembly language. Macro systems—such as the C preprocessor described earlier—that work at the level of lexical tokens cannot preserve the lexical structure reliably. Syntactic macro systems work instead at

5141-583: The larger code size of compiled C into lower-powered machines forced the company to split its spreadsheet offerings, with 1-2-3 release 3 only for higher-end machines, and a new version 2.2, based on the 2.01 assembler code base, available for PCs without extended memory. By the time these versions were released in 1989, Microsoft had eroded much of Lotus's market share. During the early 1990s, Windows grew in popularity, and along with it, Excel, which gradually displaced Lotus from its leading position. A planned total revamp of 1-2-3 for Windows fell apart, and all that

5238-484: The level of abstract syntax trees , and preserve the lexical structure of the original program. The most widely used implementations of syntactic macro systems are found in Lisp -like languages. These languages are especially suited for this style of macro due to their uniform, parenthesized syntax (known as S-expressions ). In particular, uniform syntax makes it easier to determine the invocations of macros. Lisp macros transform

5335-578: The macro languages that were originally included in some of these applications. XEDIT , running on the Conversational Monitor System (CMS) component of VM , supports macros written in EXEC , EXEC2 and REXX , and some CMS commands were actually wrappers around XEDIT macros. The Hessling Editor (THE), a partial clone of XEDIT, supports Rexx macros using Regina and Open Object REXX (oorexx). Many common applications, and some on PCs, use Rexx as

5432-547: The market for business applications. As of 2005, Microsoft still dominates the market for Windows business application software, although Quattro Pro and WordPerfect, which pre-dated the MS Office 4.2 suite, are still both updated and sold. Quattro Pro file formats use various filename extensions , including WB1, WB2, WB3, wq1 and wq2; some of these (WB2, wq1, and wq2) may open in the desktop applications of Collabora Online , LibreOffice or Apache OpenOffice and then be saved into

5529-592: The memory and speed of the computer. The application was so compelling that there were numerous stories of people buying Apple II machines to run the program (see article Killer application ). VisiCalc's runaway success on the Apple led to direct bug compatible ports to other platforms, including the Atari 8-bit computers , Commodore PET and many others. This included the IBM PC when it launched in 1981, where it quickly became another best-seller, with an estimated 300,000 sales in

5626-491: The name "1-2-3", though how much database capability the product actually had was debatable, given the sparse memory left over after launching 1-2-3. It quickly overtook VisiCalc, as well as Multiplan and SuperCalc , the two VisiCalc competitors. Lotus 1-2-3 was the state-of-the-art spreadsheet and the standard throughout the 1980s and into the early 1990s, part of an unofficial set of three stand-alone office automation products that included dBase and WordPerfect , to build

5723-431: The need for multiple libraries. In the 1980s and early 1990s, desktop PCs were only running at a few MHz and assembly language routines were commonly used to speed up programs written in C, Fortran, Pascal and others. These languages, at the time, used different calling conventions. Macros could be used to interface routines written in assembly language to the front end of applications written in almost any language. Again,

5820-399: The other hand, are much more powerful, able to make decisions about what code to produce based on their arguments; thus, they can effectively be used to perform run-time code generation . Languages such as C and some assembly languages have rudimentary macro systems, implemented as preprocessors to the compiler or assembler. C preprocessor macros work by simple textual substitution at

5917-548: The output of this execution forms part of the code that is compiled. The ability to use a familiar procedural language as the macro language gives power much greater than that of text substitution macros, at the expense of a larger and slower compiler. Macros in PL/I, as well as in many assemblers, may have side effects , e.g., setting variables that other macros can access. Frame technology 's frame macros have their own command syntax but can also contain text in any language. Each frame

SECTION 60

#1732854604616

6014-622: The primary legitimate uses of macros in such a system. Others have proposed alternative uses of macros, such as anaphoric macros in macro systems that are unhygienic or allow selective unhygienic transformation. The interaction of macros and other language features has been a productive area of research. For example, components and modules are useful for large-scale programming, but the interaction of macros and these other constructs must be defined for their use together. Module and component-systems that can interact with macros have been proposed for Scheme and other languages with macros. For example,

6111-458: The printing routines by Paul Funk (founder of Funk Software ). These editions of 1-2-3 for DOS were primarily written in x86 assembly language . These editions of 1-2-3 for DOS were primarily written in C . Lotus 1-2-3 file formats use various filename extensions including 123, wks, wk1, wk2, wk3, wk4, some of these may open in the desktop applications of Collabora Online , LibreOffice and Apache OpenOffice , these can then be saved into

6208-506: The product was merely a DOS application with windowing capabilities. Shortly thereafter QPW was re-packaged by itself and priced $ 129, receiving accolades for Borland's long-delayed pure Windows spreadsheet and its popular price. Eventually it sold well (after the price was slashed to just $ 49 a copy). Work was started immediately on a new version with a brand new team of engineers led by Joe Ammirato; including Bret Gillis and Peter Weyzen. Borland purchased DataPivot from Brio Technology to add

6305-543: The program structure itself, with the full language available to express such transformations. While syntactic macros are often found in Lisp-like languages, they are also available in other languages such as Prolog , Erlang , Dylan , Scala , Nemerle , Rust , Elixir , Nim , Haxe , and Julia . They are also available as third-party extensions to JavaScript and C# . Before Lisp had macros, it had so-called FEXPRs , function-like operators whose inputs were not

6402-995: The programmer as a single program statement , making the programming task less tedious and less error-prone. Thus, they are called "macros" because a "big" block of code can be expanded from a "small" sequence of characters. Macros often allow positional or keyword parameters that dictate what the conditional assembler program generates and have been used to create entire programs or program suites according to such variables as operating system , platform or other factors. The term derives from "macro instruction", and such expansions were originally used in generating assembly language code. Keyboard macros and mouse macros allow short sequences of keystrokes and mouse actions to transform into other, usually more time-consuming, sequences of keystrokes and mouse actions. In this way, frequently used or repetitive sequences of keystrokes and mouse movements can be automated . Separate programs for creating these macros are called macro recorders . During

6499-568: The project. Other engineers joined later. Eventually the team numbered nearly 20. The object model was inspired by the NeXT object model, modified by Mr. Cseri. Mr. Liaw and Mr. Spencer were in charge of the spreadsheet engine (written in assembly language) while Mr. Low wrote a large chunk of the UI. The product was internally codenamed " Thor " for the Norse god of Thunder. QPW featured two major innovations. First, it

6596-633: The rectangular area. Justifying text in a range into paragraphs allowed it to be used as a primitive word processor. It had keyboard-driven pop-up menus as well as one-key commands, making it fast to operate. It was also user-friendly, introducing an early instance of context-sensitive help accessed by the F1 key. Macros in version one and add-ins (introduced in version 2.0) contributed much to 1-2-3's popularity, allowing dozens of outside vendors to sell macro packages and add-ins ranging from dedicated financial worksheets like F9 to full-fledged word processors . In

6693-495: The reverse: to map a sequence of instructions to a macro string. This was the approach taken by the STAGE2 Mobile Programming System , which used a rudimentary macro compiler (called SIMCMP) to map the specific instruction set of a given computer into machine-independent macros. Applications (notably compilers) written in these machine-independent macros can then be run without change on any computer equipped with

6790-407: The rudimentary macro compiler. The first application run in such a context is a more sophisticated and powerful macro compiler, written in the machine-independent macro language. This macro compiler is applied to itself, in a bootstrap fashion, to produce a compiled and much more efficient version of itself. The advantage of this approach is that complex applications can be ported from one computer to

6887-422: The same CPU but different operating systems, for example, early versions of MS-DOS and CP/M-86 . The macro library would need to be written for each target machine but not the overall assembly language program. Note that more powerful macro assemblers allowed use of conditional assembly constructs in macro instructions that could generate different code on different machines or different operating systems, reducing

6984-403: The same command structure. Copyright law had first been understood to only cover the source code of a program. After the success of lawsuits which claimed that the very " look and feel " of a program were covered, Lotus sought to ban any program which had a compatible command and menu structure. Program commands had not been considered to be covered before, but the commands of 1-2-3 were embedded in

7081-745: The single-tasking MS-DOS , 1-2-3 was sometimes used as a complete office suite. All major graphics standards were supported; initially CGA and Hercules, and later EGA, AT&T, and VGA. Early versions used the filename extension "WKS". In version 2.0, the extension changed first to "WK1", then "WK2". This later became "WK3" for version 3.0 and "WK4" for version 4.0. Version 2 introduced macros with syntax and commands similar in complexity to an advanced BASIC interpreter, as well as string variable expressions. Later versions supported multiple worksheets and were written in C . The charting/graphing routines were written in Forth by Jeremy Sagan (son of Carl Sagan ) and

7178-446: The source code of other languages. The mechanism by which the code fragments are recognised (for instance, being bracketed by <?php and ?> ) is similar to a textual macro language, but they are much more powerful, fully featured languages. Macros in the PL/I language are written in a subset of PL/I itself: the compiler executes " preprocessor statements" at compilation time, and

7275-573: The standard macro instructions did not always have counterparts in routines available to high-level languages. In the mid-1950s, when assembly language programming was commonly used to write programs for digital computers , the use of macro instructions was initiated for two main purposes: to reduce the amount of program coding that had to be written by generating several assembly language statements from one macro instruction and to enforce program writing standards, e.g. specifying input/output commands in standard ways. Macro instructions were effectively

7372-442: The stiff plastic envelope of disc carrier. Kapor's recognition that techno-speak instructions needed to be translated to normative English was a strong contributor to the product's popularity. Lotus 1-2-3 was released on 26 January 1983, and immediately overtook Visicalc in sales. Unlike Microsoft Multiplan , it stayed very close to the model of VisiCalc, including the "A1" letter and number cell notation, and slash-menu structure. It

7469-525: The target assembly language would be processed by a macro compiler, which was a pre-processor to the assembler, to generate one or more assembly language instructions to be processed next by the assembler program that would translate the assembly language instructions into machine language instructions. By the late 1950s the macro language was followed by the Macro Assemblers . This was a combination of both where one program served both functions, that of

7566-402: The tennis courts in the (fortunately) sunny and dry autumn weather. Some have claimed that Quattro Pro was the first to use the tabbed notebook metaphor, but another spreadsheet, Boeing Calc , used tabs to multiple sheets, and allowed three-dimensional references before Quattro Pro was on the market. (Boeing Calc was so slow that its multiple sheet capabilities were barely usable.) Quattro Pro

7663-505: The two stress test applications, along with Microsoft Flight Simulator , for true 100% compatibility when PC clones appeared in the early 1980s. 1-2-3 required two disk drives and at least 192K of memory, which made it incompatible with the IBM PCjr ; Lotus produced a version for the PCjr that was on two cartridges but otherwise identical. By early 1984 the software was a killer app for

7760-503: The two together the same day". PC Magazine in 1983 called 1-2-3 "a powerful and impressive program ... as a spreadsheet, it's excellent", and attributed its very fast performance to being written in assembly language . Lotus 1-2-3 assumes that 1900 is a leap year . This is incorrect as while 1900 is a year that is divisible by four, years divisible by 100 are not counted as leap years unless divisible by 400. This bug persists today as its competitor, Microsoft Excel, still incorporates

7857-448: The user could display the worksheet portion of 1-2-3 on the sharper monochrome video and the graphics on the CGA display . The initial release of 1-2-3 supported only three video setups: CGA, MDA (in which case the graph maker was not available) or dual-monitor mode. However, a few months later support was added for Hercules Computer Technology's Hercules Graphics Adapter which was a clone of

7954-420: The user to have a graphics card. At this early stage, the only video boards available for the PC were IBM's Color Graphics Adapter and Monochrome Display and Printer Adapter , the latter not supporting any graphics. However, because the two video boards used different RAM and port addresses, both could be installed in the same machine and so Lotus took advantage of this by supporting a "split" screen mode whereby

8051-520: The values computed by the arguments but rather the syntactic forms of the arguments, and whose output were values to be used in the computation. In other words, FEXPRs were implemented at the same level as EVAL, and provided a window into the meta-evaluation layer. This was generally found to be a difficult model to reason about effectively. In 1963, Timothy Hart proposed adding macros to Lisp 1.5 in AI Memo 57: MACRO Definitions for LISP. An anaphoric macro

8148-462: The words of the menu displayed on the screen. 1-2-3 won its three-year long court battle against Paperback Software International and Mosaic Software Inc. in 1990. However, when it sued Borland over its Quattro Pro spreadsheet in Lotus v. Borland , a six-year battle that ended at the Supreme Court in 1996, the final ruling appeared to support narrowing the applicability of copyright law to software; this

8245-558: Was a DOS program, the initial development of which was done by three Eastern Europeans, one of whom, the Hungarian Lajos Frank, was later hired by Microsoft. An article appeared in PC Week in 1985, quoting a maker of spreadsheet templates saying that he was in close contact with Borland, and that Borland was developing a spreadsheet. At the time, there was absolutely no such development being undertaken by Borland. After they both read

8342-475: Was cleanly programmed, relatively bug-free, gained speed from being written completely in x86 assembly language (this remained the case for all DOS versions until 3.0, when Lotus switched to C ) and wrote directly to video memory rather than use the slow DOS and/or BIOS text output functions. Among other novelties that Lotus introduced was a graph maker that could display several forms of graphs (including pie charts, bar graphics, or line charts) but required

8439-444: Was founded by Mitchell Kapor , a friend of the developers of VisiCalc . 1-2-3 was originally written by Jonathan Sachs , who had written two spreadsheet programs previously while working at Concentric Data Systems , Inc. To aid its growth both in the UK and possibly elsewhere, Lotus 1-2-3 became the very first computer software to use television consumer advertising. Kapor was primarily

8536-521: Was hoped that QPW and Paradox for Windows would be able to share a common object model. That proved impossible despite serious thought and design efforts. QPW was finally released in September 1992. The Quattro Pro marketing team had chosen to bundle both Quattro Pro for DOS and Quattro Pro for Windows in the same box labeled "WIN-DOS" at a price of $ 495. Customers and reviewers expecting a pure Windows application responded with confusion and outrage, believing

8633-664: Was launched in 1988, its original name, suggested to Mr. Kahn by Senior VP, Spencer Leyton at a Vietnamese restaurant in Santa Cruz, was Quattro (the Italian word for "four", a play on being one step ahead of "1-2-3"). Borland changed the name to Quattro Pro for its 1990 release. The common file extension of Quattro Pro spreadsheet file is .qpw, which it has used since version 9. Quattro Pro versions 7 and 8 used .wb3, version 6 used .wb2, version 5 used .wb1, and DOS versions used .wq2 and .wq1. The original Borland Quattro electronic spreadsheet

8730-470: Was never added and users of those machines were limited to CGA graphics. The early versions of 1-2-3 also had a key disk copy protection. While the program was hard disk installable, the user had to insert the original floppy disk when starting 1-2-3 up. This protection scheme was easily cracked and a minor inconvenience for home users, but proved a serious nuisance in an office setting. Starting with Release 3.0, Lotus no longer used copy protection. However, it

8827-446: Was not yet popular, it posed no serious threat to Lotus's stranglehold on spreadsheet sales. However, Lotus suffered technical setbacks in this period. Version 3 of Lotus 1-2-3, fully converted from its original macro assembler to the more portable C language , was delayed by more than a year as the totally new 1-2-3 had to be made portable across platforms and fully compatible with existing macro sets and file formats. The inability to fit

8924-403: Was resolved, Borland no longer owned Quattro Pro. Borland sold the spreadsheet to Novell six months before the final decision was handed down. Quattro Pro began as a DOS program (like Lotus 1-2-3) but with the growing popularity of Windows from Microsoft, a Windows version of Quattro needed to be written. There was almost nothing from the DOS code that could be moved to the Windows project, so

9021-550: Was shown off by Phillipe Kahn at a Paradox user conference over a year before QPW was released. Both these ideas became widespread in the software industry. QPW was one of the first big applications written in C++ on Windows, and it pushed the Borland C++ compiler to the limit. One reason why the Borland C++ Compiler was so good was that it had to compile and link the massive QPW code base successfully. The technical risk of

9118-438: Was surpassed by Microsoft in the early 1990s, and never recovered. IBM purchased Lotus in 1995, and continued to sell Lotus offerings, only officially ending sales in 2013. VisiCalc was launched in 1979 on the Apple II and immediately became a best-seller. Compared to earlier programs, VisiCalc allowed one to easily construct free-form calculation systems for practically any purpose, the limitations being primarily related to

9215-512: Was the first Windows spreadsheet with multiple pages with cells that could be linked together seamlessly, a feature from Quattro Pro which QPW extended. Second, it was the first released Windows program to have an attribute menu (or property pane ) available by right-clicking on the object. Although this idea was first seen on the Xerox Alto , the idea had not been implemented on a major Windows program. Paradox for Windows shared this feature, and it

9312-470: Was the subject of a major lawsuit by Lotus against Borland . Lotus argued that Quattro could not copy Lotus 1-2-3's menus. Borland supplied the 1-2-3 menus as an alternative because keystroke compatibility was needed in order to run macros in 1-2-3 worksheets. Borland argued that most cars operate the same, but they are not necessarily made the same. So, Lotus could not rationally "own" the way its program behaved. The district court ruled in favor of Lotus, but

9409-475: Was then necessary to "initialize" the System disk with one's name and company name so as to customize the copy of the program. Release 2.2 and higher had this requirement. This was an irreversible process unless one had made an exact copy of the original disk so as to be able to change names to transfer the program to someone else. The reliance on the specific hardware of the IBM PC led to 1-2-3 being utilized as one of

#615384