<p><strong>Program Overview</strong></p> <p>PL/I (Programming Language/One) is an early programming language developed by IBM for their 360/370 machines (Oakman 155). It was a multipurpose language adaptable for business analysis, scientific data processing and character handling (155), and could handle data stored on magnetic tape or on disks (Heller and Logemann 24). It was commonly available due to both wide adoption of IBM's equipment, and other companies like Honeywell and General Electric followed IBM's lead in making the language available on their machines (Oakman 155).</p> <p>PL/I was commonly used for natural language processing within the Humanities, second only to FORTRAN for language processing applications due to its wide availability (Joyce 271). By 1972, PL/I was used on 40% of such projects, with FORTRAN coming in at 50% (271), and scholar James Joyce considered PL/I the better suited of the two languages as it accommodated business data in its design, rather than the strictly formula-oriented scientific bent of FORTRAN (271).</p> <p>In their 1966 article \"PL/I: A Programming Language for Humanities Research,\" Jack Heller and George Logemann described PL/I as \"ideally suited for writing interpreters for problem-oriented language\" (Heller and Logemann 20). They also found PL/I appealing as it was versatile and compact, making it possible to focus on reducing the labour cost of writing programs and the potential for human error (20). The language combined arithmetic and data manipulative facilities, which enabled researchers to use it for both numeric and string data (20). In addition, its control language was compact, and \"permit[ted] both free-form as well as rigid, fixed field format\" for passing results to and from the computer (20). In Heller and Logemann's view, PL/I was particularly important to the Humanities because</p> <p style=\"margin-left: 30px;\">Humanities programmers are concerned primarily with symbolic data as opposed to numbers. They wish to manipulate sentences and texts, or strings of their own notations...We observe that PL/I allows data to take the form of strings of symbols. Thus in a PL/I program one can generate any desired text or coding schemes, and move and save strings for accumulating dictionaries and preparing output text. Moreover, PL/I provides the essential minimum of operations on strings of symbols. (Heller and Logemann 21)</p> <p>This includes functions like concatenation, specifying a substring, finding a string's length, or searching a string for a substring (21). PL/I also included the ability to run loops, a capacity useful for iterating through texts or specifying conditions under which a program will execute particular operations and end them (Heller and Logemann 24). Its functions enabled users to build programs for complex text manipulation and retrieval (Heller and Logemann 23). In Heller and Logemann's view, this made PL/I particularly important to Humanities programmers who</p> <p style=\"margin-left: 30px;\">need the ability to split, scan, measure, compare, and join strings in practically all of their computer efforts: the simple problem of right-justifying a line, filling in blanks between words so that the total line length fills the width of the column, takes all four manipulative operations. Editing a text requires many search and split operations; alphabetization is essential in making an index or concordance. Finally, complex pattern-matching problems that arise in musical or graphic art analysis definitely require the facility to recognize substrings and to move elements of data. (Heller and Logemann 22)</p> <p>Where string data was concerned, PL/I used a combination of two functions, INDEX and SUBSTR ('substring'), for pattern matching (Oakman 56). It assigned a numerical position to particular characters, and, to search a string, \"the function INDEX moves through LINE, counting the positions until it gets to the first space\" (56). &nbsp;However, it required additional code to examine text at the word level, such as custom extensions (Joyce 271). These extensions enabled important text handling functions such as recognizing apostrophes as letters so contractions can be identified as words, defining hyphens as punctuation so hyphenated words can be recognized separately, converting strings to upper or lower case, finding words within a string, or reversing character order in a string (Joyce 272). Joyce wrote a number of extensions to \"produce fast code with a minimal strain on the user,\" though he took care to state that his extensions \"do not pretend to represent an optimal set of extensions...[r]ather, they are to me some obviously needed extensions that make PL/I more docile for those wishing to do natural-language processing\" (Joyce 271).</p> <p>Thanks to its wide availability and text handling capabilities, Heller and Logemann advocated for Humanities scholars to adopt PL/I as \"a powerful, versatile programming language designed to handle contemporary problems on contemporary machines. PL/I is not guaranteed to solve all problems, but it certainly will facilitate the scholars' search\" (Heller and Logemann 27). Indeed, PL/I was discussed as late as 1984 as a significant multipurpose language for text handling (Oakman 50).</p> <p>&nbsp;</p> <p><strong>Sources</strong></p> <p>Heller, Jack and George W. Logemann. \"PL/I: A Programming Language for Humanities Research.\" <em>Computers and the Humanities</em> 1.2 (1966): 19-27. <a href=\"http://www.jstor.org/stable/30199201\" target=\"_blank\">Web</a>.</p> <p>Joyce, James. \"Extension to PL/I For Natural-Language Processing.\" <em>Computers and the Humanities</em> 6.5 (1972): 271-276. <a href=\"http://www.jstor.org/stable/30199499\" target=\"_blank\">Web</a>.</p> <p>Oakman, Robert L. <em>Computer Methods for Literary Research</em>. Athens: University of Georgia Press, 1984.</p>