Tugboat, Volume 35 (2014), No. 1 99 Macro Memories, 1964–2013 David

Total Page:16

File Type:pdf, Size:1020Kb

Tugboat, Volume 35 (2014), No. 1 99 Macro Memories, 1964–2013 David TUGboat, Volume 35 (2014), No. 1 99 Macro memories, 1964{2013 I assume most readers know what macros are, but just in case: Typically one gives a name to a string David Walden of text, e.g., \\define\Macroname{Textstring}"; Contents then each time \\Macroname" is found (\called") in the input text stream, it is replaced by \Textstring". 1 McIlroy's 1960 ACM paper 99 The macro definition can involve the additional 2 Some prior history of macros 100 substitution of text specified when the macro defini- 3 Strachey's General Purpose Macrogenerator 101 tion is called. For example, 4 Midas macro processor 101 \define\Name#1{His name is #1} 5 More study and use of macro processors defines a macro named \Name" where \#1" indicates (and language extension capabilities) 102 a parameter to be substituted for when the macro is 6 Midas, macros, and the called. The macro might be called with \John" as ARPANET IMP program 103 the substitution text, as in the following 7 Ratfor and Infomail 104 \Name{John} 8 TEX, macros for typesetting 104 which would result in 9 M4 106 His name is John 10 Reflections 107 In addition to the \#1" indicating where a substitu- Introduction tion is to take place in the macro definition when In the summer of 2013, I was looking at a 1973 listing the macro is called, in this example the \#1" imme- of the ARPANET IMP (Interface Message Processor) diately after the macro name indicates there is one program1 which makes extensive use of macros. This such substitutable parameter. If there were more caused me to muse about the various macro proces- than one such parameter, a list such as \#1#2#3" sors I have used over the past 50 years which, in turn, would appear after the macro name in the definition, led to this note. specifying three such parameters. This note is not a thorough study, extensive Donald Knuth in the index to Volume 1 of The Art of tutorial, or comprehensive bibliography about macro Computer Programming gives this succinct definition processors. Such descriptions have already been pro- relating to macros: \Macro instruction: Specification vided by, for instance, Peter Brown, Martin Campbell- of a pattern of instructions and/or pseudo-operators Kelly, John Metzner, and Peter Wegner in their that may be used repeatedly within a program." longer presentations of the topic.2,3,4,5 Instead, the 1 McIlroy's 1960 ACM paper macro technology thread I follow herein is guided by the order in which I used or studied the various macro I'm pretty sure that while I was still in college at San processors. I hope this is usefully representative of Francisco State (1962{64) and using an IBM 1620 the scope of macro processor technology. computer, I had no concept of macros. The IBM I have three reasons for writing this note. (1) I 7094 at MIT Lincoln Laboratory, my first employer haven't seen much new written about macro pro- after college (starting in June 1964), may have had cessors in recent years (other than what is on the a macro assembly capability, but I don't think I ever web); thus, it is perhaps time for a new paper on used it. this sometimes under-appreciated topic. (2) Com- Probably my first contact with the concept of puter professionals and computing historians who macros was when an older colleague at Lincoln Lab have come to their fields only in the last decade or gave me his back issues of the Communications of two may not know much about macros, and this the ACM (and I joined the ACM myself to get future is a chance to share my fondness for and perspec- issues of the CACM). In one of these back issues, tive on macros. The citations in the endnotes also I read the article by Doug McIlroy on macros for may be a useful starting point for further study of compiler languages.6 macros, and maybe these notes will rekindle mem- McIlroy has the following example of defining a ories for other long-time computing people like me macro (although I am using an equal sign where he about some of their own experiences. (3) For (LA)TEX used an identity symbol): users who may not be computer programmers or fa- ADD, A, B, C = FETCH, A miliar with other macro processor systems and who ADD, B accomplish impressive things using TEX macros, this STORE, C note sketches the long technical history of which TEX where ADD7 is the macro name, and A, B, and C are macros are a part. the names of macro arguments to be filled in at the Macro memories, 1964{2013 100 TUGboat, Volume 35 (2014), No. 1 time of the macro call, and the three lines of code Apparently Bell Labs was a particular hotbed are what is substituted. Thus, McIlroy shows this of macro activity in those early days. In a memorial macro being called with the sequence note for Douglas Eastwood,8 Doug McIlroy recounts: ADD, X, Y, Z On joining the Bell Labs math department, I resulting in the following: was given an office next to Doug Eastwood's. Soon after, George Mealy . suggested to a FETCH, X ADD, Y small group of us that a macro-instruction STORE, Z facility be added to our assembler . This idea caught the fancy of us two Dougs, and This style of macro definition uses symbolic names set the course of our research for some time for the substitutable parameters, which can be useful to come. We split the job in half: Eastwood in remembering what one is doing with long macro took care of defining macros; McIlroy handled definitions. However, it is also a bit more complicated the expansion of macro calls. to implement such symbolic macro parameter names The macro system we built enabled truly compared with using special codes such as \#1". astonishing applications. Macros took hold McIlroy's 1960 paper goes on to show examples in the Labs' most important project, elec- of macros in an ALGOL-like language and to explain tronic switching systems, in an elaborated the benefits of various features of macro processors. form that served as their primary program- For instance, ming language for a couple of decades. macro exchange(x,y;z) := Once macros had been incorporated, the begin assembler was processing code written whole- begin integer x,y,z; sale by machine (i.e., by the assembler itself) z:=y; y:=x; rather than retail by people. This stressed the x:=z; assembler in ways that had never been seen be- end exchange x and y fore. The size of its vocabulary jumped from end exchange about 100 different instructions to that plus defines a macro which, if called with an unlimited number of newly defined ones. The real size of programs jumped because one exchange(r1,ss3) human-written line of code was often short- results in hand for many, many machine-written lines. begin integer r1,ss3,.gen001 And the number of symbolic names in a pro- .gen001:=r1; gram jumped, because macros could invent ss3:=r1; new names like crazy. r1:=.gen001; By the way, Rosen's book7 also had a paper (pp. 535{ end exchange r1 and ss3 559) by George Mealy that touched on macros: \A Note that a special temporary register, .gen001, was Generalized Assembly System (Excerpts)". created to replace z which was defined following the semicolon in the parameter list. 2 Some prior history of macros McIlroy's paper also has a summary list of \sa- McIlroy's paper also hints at some of the history of lient features" [the comments below in square brack- macro processors including half a dozen references9 ets are my notes on McIlroy's list]: to prior macro processors; they were becoming fairly 1. definitions may contain macro calls widespread by the early 1960s. Lots of people were 2. parenthetical notation for compounding calls thinking about macros and macro processing by 1960. [e.g., so arguments to macro calls can include In section 6 of his paper, McIlroy says, multiple items separated by commas] . Conditional macros were devised indepen- 3. conditional assembly dently by several persons beside the author in the past year. In particular, A. Perlis pointed 4. created symbols [e.g., so labels or local variable out that algorithms for algebraic translation names in the body of a macro definition are could be expressed in terms of conditional unique for each call of the macro] macros. Some uses of nested definitions were 5. definitions may contain definition schemata discovered by the author; their first imple- 6. repetition over a list [see the example in the mentation was by J. Benett also of Bell Tele- discussion of Midas in section 4] phone Laboratories. Repetition over a list is David Walden TUGboat, Volume 35 (2014), No. 1 101 due to V. Vyssotsky. Perlis also noted that possible preprocessor for any other language or as a macro compiling may be done by routines to a stand-alone string processor. large degree independent of ground language. Here is a simple definition in GPM: One existing macro compiler, MICA (Haigh), §DEF,REFORMATNAME,<LAST=~2, FIRST=~1>; though working in only one ground language is It could be called like this: physically separated from its ground-language compiler. An analyzer of variable-style source §REFORMATNAME,David,Walden; languages exists in the SHADOW routine of which would produce the output: M. Barnett, but lacks an associated mecha- LAST=Walden, FIRST=David nism for incorporating extensions.
Recommended publications
  • Administering Unidata on UNIX Platforms
    C:\Program Files\Adobe\FrameMaker8\UniData 7.2\7.2rebranded\ADMINUNIX\ADMINUNIXTITLE.fm March 5, 2010 1:34 pm Beta Beta Beta Beta Beta Beta Beta Beta Beta Beta Beta Beta Beta Beta Beta Beta UniData Administering UniData on UNIX Platforms UDT-720-ADMU-1 C:\Program Files\Adobe\FrameMaker8\UniData 7.2\7.2rebranded\ADMINUNIX\ADMINUNIXTITLE.fm March 5, 2010 1:34 pm Beta Beta Beta Beta Beta Beta Beta Beta Beta Beta Beta Beta Beta Notices Edition Publication date: July, 2008 Book number: UDT-720-ADMU-1 Product version: UniData 7.2 Copyright © Rocket Software, Inc. 1988-2010. All Rights Reserved. Trademarks The following trademarks appear in this publication: Trademark Trademark Owner Rocket Software™ Rocket Software, Inc. Dynamic Connect® Rocket Software, Inc. RedBack® Rocket Software, Inc. SystemBuilder™ Rocket Software, Inc. UniData® Rocket Software, Inc. UniVerse™ Rocket Software, Inc. U2™ Rocket Software, Inc. U2.NET™ Rocket Software, Inc. U2 Web Development Environment™ Rocket Software, Inc. wIntegrate® Rocket Software, Inc. Microsoft® .NET Microsoft Corporation Microsoft® Office Excel®, Outlook®, Word Microsoft Corporation Windows® Microsoft Corporation Windows® 7 Microsoft Corporation Windows Vista® Microsoft Corporation Java™ and all Java-based trademarks and logos Sun Microsystems, Inc. UNIX® X/Open Company Limited ii SB/XA Getting Started The above trademarks are property of the specified companies in the United States, other countries, or both. All other products or services mentioned in this document may be covered by the trademarks, service marks, or product names as designated by the companies who own or market them. License agreement This software and the associated documentation are proprietary and confidential to Rocket Software, Inc., are furnished under license, and may be used and copied only in accordance with the terms of such license and with the inclusion of the copyright notice.
    [Show full text]
  • Types and Programming Languages by Benjamin C
    < Free Open Study > . .Types and Programming Languages by Benjamin C. Pierce ISBN:0262162091 The MIT Press © 2002 (623 pages) This thorough type-systems reference examines theory, pragmatics, implementation, and more Table of Contents Types and Programming Languages Preface Chapter 1 - Introduction Chapter 2 - Mathematical Preliminaries Part I - Untyped Systems Chapter 3 - Untyped Arithmetic Expressions Chapter 4 - An ML Implementation of Arithmetic Expressions Chapter 5 - The Untyped Lambda-Calculus Chapter 6 - Nameless Representation of Terms Chapter 7 - An ML Implementation of the Lambda-Calculus Part II - Simple Types Chapter 8 - Typed Arithmetic Expressions Chapter 9 - Simply Typed Lambda-Calculus Chapter 10 - An ML Implementation of Simple Types Chapter 11 - Simple Extensions Chapter 12 - Normalization Chapter 13 - References Chapter 14 - Exceptions Part III - Subtyping Chapter 15 - Subtyping Chapter 16 - Metatheory of Subtyping Chapter 17 - An ML Implementation of Subtyping Chapter 18 - Case Study: Imperative Objects Chapter 19 - Case Study: Featherweight Java Part IV - Recursive Types Chapter 20 - Recursive Types Chapter 21 - Metatheory of Recursive Types Part V - Polymorphism Chapter 22 - Type Reconstruction Chapter 23 - Universal Types Chapter 24 - Existential Types Chapter 25 - An ML Implementation of System F Chapter 26 - Bounded Quantification Chapter 27 - Case Study: Imperative Objects, Redux Chapter 28 - Metatheory of Bounded Quantification Part VI - Higher-Order Systems Chapter 29 - Type Operators and Kinding Chapter 30 - Higher-Order Polymorphism Chapter 31 - Higher-Order Subtyping Chapter 32 - Case Study: Purely Functional Objects Part VII - Appendices Appendix A - Solutions to Selected Exercises Appendix B - Notational Conventions References Index List of Figures < Free Open Study > < Free Open Study > Back Cover A type system is a syntactic method for automatically checking the absence of certain erroneous behaviors by classifying program phrases according to the kinds of values they compute.
    [Show full text]
  • UNIX Commands
    UNIX commands ls list the contents of a directory ls -l list the content of a directory with more details mkdir <directory> create the directory <directory> cd <directory> change to the directory <directory> cd .. move back one directory cp <file1> <file2> copy the file <file1> into <file2> mv <file1> <file2> move the file <file1> to <file2> rm <file> remove the file <file> rmdir <directory> delete the directory <directory> man <command> display the manual page for <command> module load netcdf load the netcdf commands to use module load ferret load ferret module load name load the module “name” to use its commands vi <file> read the content of the file <file> vimdiff <file1> <file2> show the differences between files <file1> and <file2> pwd show current directory tar –czvf file.tar.gz file compress one or multiple files into file.tar.gz tar –xzvf file.tar.gz extract the compressed file file.tar.gz ./name execute the executable called name qsub scriptname submits a script to the queuing system qdel # cancel the submitted job number # from the queue qstat show queued jobs qstat –u zName show only your queued jobs Inside vi ESC, then :q! Quit without saving ESC, then :wq Quit with saving ESC, then i Get in insert mode to edit text ESC, then /word Search content for word ESC, then :% Go to end of document ESC, then :0 Go to beginning of document ESC, then :set nu Add line numbers ESC, then :# Go to line number # N.B.: If inside vimdiff, you have 2 files opened, so you need to quit vi twice.
    [Show full text]
  • Top 15 ERP Software Vendors – 2010
    Top 15 ERP Software Vendors – 2010 Profiles of the Leading ERP Vendors Find the best ERP system for your company. For more information visit Business-Software.com/ERP. About ERP Software Enterprise resource planning (ERP) is not a new concept. It was introduced more than 40 years ago, when the first ERP system was created to improve inventory control and management at manufacturing firms. Throughout the 70’s and 80’s, as the number of companies deploying ERP increased, its scope expanded quite a bit to include various production and materials management functions, although it was designed primarily for use in manufacturing plants. In the 1990’s, vendors came to realize that other types of business could benefit from ERP, and that in order for a business to achieve true organizational efficiency, it needed to link all its internal business processes in a cohesive and coordinated way. As a result, ERP was transformed into a broad-reaching environment that encompassed all activities across the back office of a company. What is ERP? An ERP system combines methodologies with software and hardware components to integrate numerous critical back-office functions across a company. Made up of a series of “modules”, or applications that are seamlessly linked together through a common database, an ERP system enables various departments or operating units such as Accounting and Finance, Human Resources, Production, and Fulfillment and Distribution to coordinate activities, share information, and collaborate. Key Benefits for Your Company ERP systems are designed to enhance all aspects of key operations across a company’s entire back-office – from planning through execution, management, and control.
    [Show full text]
  • UNIX Workshop Series: Quick-Start Objectives
    Part I UNIX Workshop Series: Quick-Start Objectives Overview – Connecting with ssh Command Window Anatomy Command Structure Command Examples Getting Help Files and Directories Wildcards, Redirection and Pipe Create and edit files Overview Connecting with ssh Open a Terminal program Mac: Applications > Utilities > Terminal ssh –Y [email protected] Linux: In local shell ssh –Y [email protected] Windows: Start Xming and PuTTY Create a saved session for the remote host name centos.css.udel.edu using username Connecting with ssh First time you connect Unix Basics Multi-user Case-sensitive Bash shell, command-line Commands Command Window Anatomy Title bar Click in the title bar to bring the window to the front and make it active. Command Window Anatomy Login banner Appears as the first line of a login shell. Command Window Anatomy Prompts Appears at the beginning of a line and usually ends in $. Command Window Anatomy Command input Place to type commands, which may have options and/or arguments. Command Window Anatomy Command output Place for command response, which may be many lines long. Command Window Anatomy Input cursor Typed text will appear at the cursor location. Command Window Anatomy Scroll Bar Will appear as needed when there are more lines than fit in the window. Command Window Anatomy Resize Handle Use the mouse to change the window size from the default 80x24. Command Structure command [arguments] Commands are made up of the actual command and its arguments. command -options [arguments] The arguments are further broken down into the command options which are single letters prefixed by a “-” and other arguments that identify data for the command.
    [Show full text]
  • Avoiding the Top 10 Software Security Design Flaws
    AVOIDING THE TOP 10 SOFTWARE SECURITY DESIGN FLAWS Iván Arce, Kathleen Clark-Fisher, Neil Daswani, Jim DelGrosso, Danny Dhillon, Christoph Kern, Tadayoshi Kohno, Carl Landwehr, Gary McGraw, Brook Schoenfield, Margo Seltzer, Diomidis Spinellis, Izar Tarandach, and Jacob West CONTENTS Introduction ..................................................................................................................................................... 5 Mission Statement ..........................................................................................................................................6 Preamble ........................................................................................................................................................... 7 Earn or Give, but Never Assume, Trust ...................................................................................................9 Use an Authentication Mechanism that Cannot be Bypassed or Tampered With .................... 11 Authorize after You Authenticate ...........................................................................................................13 Strictly Separate Data and Control Instructions, and Never Process Control Instructions Received from Untrusted Sources ........................................................................................................... 14 Define an Approach that Ensures all Data are Explicitly Validated .............................................16 Use Cryptography Correctly ....................................................................................................................
    [Show full text]
  • HECO-UNIX-Top Cladding Screw Into the Timber
    HECO-UNIX -top Cladding Screw THE UNIQUE CLADDING SCREW WITH CONTRACTION EFFECT APPLICATION EXAMPLES Façade construction Secure and reliable façade fixing Louvred façades 1 2 3 The variable pitch of the HECO-UNIX full The smaller thread pitch means that the Gap free axial fixing of the timber board thread takes hold boards are clamped firmly together via the HECO-UNIX full thread PRODUCT CHARACTERISTICS The HECO-UNIX-top Cladding Screw into the timber. The façade is secured axially via with contraction effect the thread, which increases the pull-out strength. HECO-UNIX-top full thread This results in fewer fastening points and an Timber façades are becoming increasingly popular ultimately more economical façade construction. Contraction effect thanks to the full in both new builds and renovations. This applica - Thanks to the full thread, the sole function of thread with variable thread pitch tion places high demands on fastenings. The the head is to fit the screw drive. As such, the Axial fixing of component façade must be securely fixed to the sub-structure HECO-UNIX-top façade screw has a small and the fixings should be invisible or attractive raised head, which allows simple, concealed Reduced spreading effect thanks to to look at. In addition, the structure must be installation preventing any water penetration the HECO-TOPIX ® tip permanently sound if it is constantly exposed to through the screw. The screws are made of the weather. The HECO-UNIX-top façade screw stainless steel A2, which safely eliminates the Raised countersunk head is the perfect solution to all of these requirements.
    [Show full text]
  • System Log Commands
    System Log Commands • system set-log , on page 2 • show system logging-level, on page 3 • show log, on page 4 System Log Commands 1 System Log Commands system set-log system set-log To set the log level and log type of messages, use the system set-log command in privileged EXEC mode. system set-log level {debug | info | warning | error | critical} logtype {configuration | operational | all} Syntax Description level Specifies the log level. debug Logs all messages. info Logs all messages that have info and higher severity level. warning Logs all messages that have warning and higher severity level. error Logs all messages that have error and higher severity level. critical Logs all messages that have critical severity level. logtype Specifies the log type. configuration Configuration log messages are recorded. operational Operational log messages are recorded. all All types of log messages are recorded. Command Default For the configuration log, info is the default level. For the operational log, warning is the default level. Command Modes Privileged EXEC (#) Command History Release Modification 3.5.1 This command was introduced. Usage Guidelines After a system reboot, the modified logging configuration is reset to the default level, that is, info for the configuration log and warning for the operational log. Example The following example shows how to configure a log level: nfvis# system set-log level error logtype all System Log Commands 2 System Log Commands show system logging-level show system logging-level To view the log level and log type settings, use the show system logging-level command in privileged EXEC mode.
    [Show full text]
  • Oral History of Fernando Corbató
    Oral History of Fernando Corbató Interviewed by: Steven Webber Recorded: February 1, 2006 West Newton, Massachusetts CHM Reference number: X3438.2006 © 2006 Computer History Museum Oral History of Fernando Corbató Steven Webber: Today the Computer History Museum Oral History Project is going to interview Fernando J. Corbató, known as Corby. Today is February 1 in 2006. We like to start at the very beginning on these interviews. Can you tell us something about your birth, your early days, where you were born, your parents, your family? Fernando Corbató: Okay. That’s going back a long ways of course. I was born in Oakland. My parents were graduate students at Berkeley and then about age 5 we moved down to West Los Angeles, Westwood, where I grew up [and spent] most of my early years. My father was a professor of Spanish literature at UCLA. I went to public schools there in West Los Angeles, [namely,] grammar school, junior high and [the high school called] University High. So I had a straightforward public school education. I guess the most significant thing to get to is that World War II began when I was in high school and that caused several things to happen. I’m meandering here. There’s a little bit of a long story. Because of the wartime pressures on manpower, the high school went into early and late classes and I cleverly saw that I could get a chance to accelerate my progress. I ended up taking both early and late classes and graduating in two years instead of three and [thereby] got a chance to go to UCLA in 1943.
    [Show full text]
  • Dell EMC Powerstore CLI Guide
    Dell EMC PowerStore CLI Guide May 2020 Rev. A01 Notes, cautions, and warnings NOTE: A NOTE indicates important information that helps you make better use of your product. CAUTION: A CAUTION indicates either potential damage to hardware or loss of data and tells you how to avoid the problem. WARNING: A WARNING indicates a potential for property damage, personal injury, or death. © 2020 Dell Inc. or its subsidiaries. All rights reserved. Dell, EMC, and other trademarks are trademarks of Dell Inc. or its subsidiaries. Other trademarks may be trademarks of their respective owners. Contents Additional Resources.......................................................................................................................4 Chapter 1: Introduction................................................................................................................... 5 Overview.................................................................................................................................................................................5 Use PowerStore CLI in scripts.......................................................................................................................................5 Set up the PowerStore CLI client........................................................................................................................................5 Install the PowerStore CLI client..................................................................................................................................
    [Show full text]
  • Unix/Linux Command Reference
    Unix/Linux Command Reference .com File Commands System Info ls – directory listing date – show the current date and time ls -al – formatted listing with hidden files cal – show this month's calendar cd dir - change directory to dir uptime – show current uptime cd – change to home w – display who is online pwd – show current directory whoami – who you are logged in as mkdir dir – create a directory dir finger user – display information about user rm file – delete file uname -a – show kernel information rm -r dir – delete directory dir cat /proc/cpuinfo – cpu information rm -f file – force remove file cat /proc/meminfo – memory information rm -rf dir – force remove directory dir * man command – show the manual for command cp file1 file2 – copy file1 to file2 df – show disk usage cp -r dir1 dir2 – copy dir1 to dir2; create dir2 if it du – show directory space usage doesn't exist free – show memory and swap usage mv file1 file2 – rename or move file1 to file2 whereis app – show possible locations of app if file2 is an existing directory, moves file1 into which app – show which app will be run by default directory file2 ln -s file link – create symbolic link link to file Compression touch file – create or update file tar cf file.tar files – create a tar named cat > file – places standard input into file file.tar containing files more file – output the contents of file tar xf file.tar – extract the files from file.tar head file – output the first 10 lines of file tar czf file.tar.gz files – create a tar with tail file – output the last 10 lines
    [Show full text]
  • LS-LED LED Cabinet and Niche Lighting
    STRAIGHT EDGE™ – model: LS-LED LED Cabinet and Niche Lighting Fixture Type: b" Catalog Number: d" Project: Location: s" s" Length varies depending on model. See ordering info below for lengths. PRODUCT DESCRIPTION FIXTURE PERFORMANCE Low power consumption and strong lumen output make this low-pro le Model # Color Temp Power Lumens E cacy CBCP CRI LED strip light system perfect for small coves and niches, cabinets, shelves and bookcases. LS-LED08-W 2700K 2.2W 105 47.7 Lm/W 43 85 LS-LED14-W 2700K 4W 205 51.3 Lm/W 84 85 FEATURES LS-LED20-W 2700K 6.2W 315 50.8 Lm/W 127 85 LS-LED26-W 2700K 9.9W 345 34.8 Lm/W 145 85 • Available in 5 lengths LS-LED32-W 2700K 12.4W 450 36.3 Lm/W 182 85 • Multiple connectors and cables available to facilitate custom layouts • Four mounting options provided for di erent surfaces LS-LED08-C 4500K 2.9W 115 39.7 Lm/W 47 85 • Each section includes 2 at mounting clips, 2 45° angle mounting clips LS-LED14-C 4500K 4.9W 215 43.9 Lm/W 89 85 and 1 "I" connector LS-LED20-C 4500K 7.3W 315 43.2 Lm/W 130 85 • Adjustable angle mounting clips allow xture to be easily aimed while LS-LED26-C 4500K 10W 485 48.5 Lm/W 191 85 securely mounted for optimal task lighting performance and exibility LS-LED32-C 4500K 12.5W 620 49.6 Lm/W 241 85 • 120° beam spread • Free of projected heat, UV and IR radiation MAX RUN • 70,000 hour rated life • 5 year WAC Lighting product warranty Model # 60W Transformer 96W Transformer LS-LED08 20 pieces 36 pieces SPECIFICATIONS LS-LED14 12 pieces 20 pieces Construction: Extruded aluminum body with a polycarbonate lens.
    [Show full text]