Waterloo SCRIPT

The following is reprinted from the SCRIPT 90.1 Implementation Guide, June 6, 1990.

Copyright by

Department of Computing Services,

University of Waterloo


Text processing is just one of many applications that can be performed on a computer. The following outlines the components and capabilities of one approach to the automation of the text-processing application, as implemented by the Department of Computing Services at the University of Waterloo.

Waterloo SCRIPT

SCRIPT is a document composition processor developed by the Department of Computing Services. It is suitable for preparing documents that range in complexity from simple papers to large reference manuals and books. SCRIPT processes an "input file" consisting of text and "control words" (formatting commands), and produces an "output file" (formatted document) on disk, on a line printer, several laser printers, a CRT, or a typewriter terminal. While the long list of control words are powerful in their own right the greatest benefit for the user is derived from creating SCRIPT macro definitions for repetitive applications. SCRIPT is being used by many hundreds of computing installations, on a number of different IBM computers and operating systems.

A Text Editor: is used to create the input file and to enter the text and control words, and to make changes to previously-entered text and control words.

GML: An implementation of many different Generalized Markup Language layouts and a Starter Set layout to emulate the GML Tags described in the IBM GML User's Guide (SH20-9160).

Documentation: The documentation that exists for SCRIPT includes:


Waterloo SCRIPT is a rewritten and extended version of a processor called NSCRIPT that had been converted to OS and TSO from CP-67/CMS SCRIPT. The original NSCRIPT package is available from the SHARE Program Library. Waterloo obtained NSCRIPT in late 1974 as a viable alternative to extending ATS to meet local requirements. The local acceptance of Waterloo SCRIPT has continued to provide the motivation for additional on-going development.

Features of SCRIPT

A major advantage to any automated text preparation facility is the elimination of the "re-work" that results from having to manually re-type successive drafts of a document as it is being developed. The document is entered at a keyboard terminal and saved on some storage medium. Thereafter, the only modifications that need be made are the addition, deletion, re-ordering, or correcting of words or sentences.

Boxes: can be generated around text simply by using the control word provided and specifying the columns in which the verticals are to be placed.

Centered Text: You do not have to position the text that you want to be centered on a line; SCRIPT provides a control word that will do that for you.

Conditional Positioning of Text Blocks: Control words exist that will cause output to start at the top of the next column or page if there is not sufficient room remaining in the current column or page. When this happens, you can cause the rest of the column or page to be left blank, or to be filled in with text that follows the block that wouldn't fit.

Fonts: SCRIPT provides control words that cause text to be printed in bold italics, boldface, italics, UPPERCASE, and UPPERCASE ITALICS.

Footnotes: are entered immediately after the text to which they apply. By default, SCRIPT prints footnotes at the bottom of the page on which they occur; an option exists to suppress the printing of footnotes for an explicit number of pages or until the end of the document, and to cause the printing of suppressed footnotes to start on the current page.

Formula: Mathematical Formula may be generated along with other formatted text. This function is only supported for those laser printers with fonts in multiple sizes with suitable special symbols.

Functions: A set of Built-in functions is supported to manipulate the values of constant and variable data. These Built-in Functions have a regular syntax and allow for multiple operands. They may even be used recursively.

GML Tags: Generalized Markup Language Tags are supported with attributes to map into the underlying function of primitive control words. A system for documentation preparation is able to realize its maximum benefit only if the base primitives can be extended to higher level function. Over a dozen different implementations of GML layouts for various document styles are supported.

Headings for Titles: SCRIPT provides control words that allow you to generate up to 10 groups of up to 10 levels of headings, and to define how they are to be processed (start on a new page, capitalized, underscored, indented, etc.). The text of all such headings can be saved in a special "work area", together with the page numbers on which they were printed, so that a "Table of Contents" can be printed at the end of the document. It is possible to construct up to 10 different Tables of Contents at the same time.

Hyphenation: SCRIPT can be instructed to hyphenate words that will not fit on the line, or you can instruct SCRIPT to hyphenate at only those points defined by you. Rules are included for hyphenation in national languages including: French, German and Italian. An exception-dictionary capability is provided.

Imbedded Input Files: SCRIPT allows you to create the input for a document as any number of files, and provides a control word that causes the contents of such files to be imbedded during the formatting process. This makes it easy to construct new documents by imbedding only the required document "modules".

Indexes: SCRIPT enables you to put "index entries" in your document. These index entries are saved in a special "work area", together with the page numbers on which they occurred, so that an "Index" can be printed at the end of the document. It is possible to construct up to 9 different Indexes at the same time.

Justification: SCRIPT puts as many words on a line as will fit. If you instruct SCRIPT to "justify" the line, it will add blank spaces so that the line will extend to the right margin. With terminals that support the feature, SCRIPT can make all the inter-word spaces on a line be the same width.

Macros: SCRIPT enables you to write your own "formatting commands" as composites of SCRIPT control words. This enables you to define the layout of each component of your document in such a fashion that the same results will be obtained consistently throughout the entire document. It also enables you to change the formatting environment for any component by making only a few changes to the macro for that component. (The low level internals of all the GML layouts are implemented as sets of macros.)

Multiple Columns: SCRIPT enables you to produce formatted documents with up to 9 columns of text per page.

Page Numbering: can be done in Arabic numerals or in upper- or lower-case roman numerals, with optional fractional increments, prefixes, and suffixes.

Printers: SCRIPT supports the IBM 1403, 3211, and 3800 with a basic TN print train.

Quality Printers: SCRIPT can generate output for the HP LaserJet+ or LaserJet II, the HP LaserJet Series III with its scaleable fonts, the IP/II printers from Imagen, the 3812, 3820 or 3825 from IBM, any printer supporting the Adobe PostScript language, the QMS Lasergrafix family of printers, the Xerox 2700/3700 printers and the Xerox 4045 (Model 160) in Interpress mode.

Revision Codes: You can define up to 99 "revision codes" to be placed in the page margins, so that you can indicate which parts of a document have changed since the last version. Each revision code may be a string containing from 1 to 10 characters.

Running Titles: You can specify up to thirty-two lines of text that are to appear at the top and/or bottom of each page, and can define blocks of text to be formatted at the top of each page.

Spelling Verification: An alternate implementation of the package provides spelling verification of words in the input with a 100,000+ word dictionary. Words not verified are summarized in a report to the error file.

Spacing: You can alter the line-spacing mode of a document as desired, so that any or all of it can be printed single- or double-spaced (or greater).

Special Symbols: Support is provided via SYSCHAR to access many Special Symbols that are not available on the normal keyboard. The symbolic names chosen to represent the symbols are taken from ISO Standard 8879-1986(E), Standard Generalized Markup Language (SGML). This is supported best on laser printer output with special symbol fonts.

Tables of Contents: Up to 10 different Tables of Contents can be constructed automatically, using the headings in the text. (See also "headings".)

Tabs: SCRIPT allows you to specify tab characters and tab-stop positions, so that text can be positioned anywhere on the line. It is possible to define tabs that cause text to be right-aligned, left-aligned, aligned on a specified character in the text, or centered about a specified column.

Terminals: SCRIPT supports EBCDIC and ASCII terminals, including the variable inter-word spacing and subscript-superscript shifts possible with daisy-wheel terminals such as the Xerox 1620 and AJ832. Three proportional daisy terminals, the Proportional Multiwriter, the Xerox 1650 and Xerox 630 are supported.

Typesetting: SCRIPT has a "PHOTO" option that will produce an output file containing additional escape information designed to be used by a post-processing program that converts the information into the command codes required by a particular typesetter. One sample post-processing program is distributed: one for an APS Micro 5 typesetter.

Underscoring: see "Fonts".

Variables: SCRIPT provides numerous System Set Symbols that enable the user to interrogate the formatting environment currently in effect. User-defined Set Symbol variables and arrays support numeric and character string values.

Features of GML

Generalized Markup Language (GML) provides tags that enable the SCRIPT user to automate the layout of a document. GML layouts are provided to format a document in one of several different layout styles.

Boxes: GML provides two commands to automate and simplify the generation of boxes around text.

Footnotes: The GML tags for footnotes automatically number the footnotes and provide references to them.

Formula: Tags are defined to identify both Display Mode and Inline Mode mathematical formula.

Headings: Six levels of headings are provided to generate and position the start of sections of text in a document. These headings are also added to a Table of Contents.

Indexes: Tags to define entries and references in a three level index and a tag to display the result.

Lists: Four kinds of lists are supported, and may be freely intermixed. Six levels of Ordered Lists, three levels of Unordered Lists, six levels of Simple Lists and six levels of Definition Lists may be used.

Quotations: Tags are provided for the indenting and formatting of block quotations.

Tables and Figures: GML provides tags for numbering, placement and formatting of tables and figures.

Table of Contents: GML collects the titles of all headings. A tag is provided to print the resulting Table of Contents at the end of the document, or at the beginning of the document if the multi-pass option has been specified.

Title Pages: Full and Part Title Pages can be created containing text pertaining to the document title, author and address, and information concerning the date and copyright status.

Layouts for the Standard Tagset

The layout of the document, when processed by SCRIPT, will depend on the particular GML layout file that you have selected.

General Purpose Layouts

GMLgdoc: This is the layout used by the UW Department of Computing Services for most of its manuals.

GMLguide: Like GMLgdoc, with the exceptions that a full-page title page is produced and all front-material and back-material components start at the top of an output page. You might consider using the GMLguide layout if you do not know that another layout is more suitable.

GMLrefg: Intended for small reference documents.

GMLman: Each level-one heading is named "Part" and is numbered. Each level-one heading is named "Chapter" and is numbered. Heading levels two through four are numbered using the Dewey-decimal numbering system.

GMLsdoc: This is a general purpose layout for small documents. Only level-zero headings start a new page.

GMLss: A layout in the style of the DSMPROF3 layout provided by the IBM Document Composition Facility (DCF).

Layouts for Papers:

GMLpaper:A general purpose layout for papers. Like the GMLgdoc layout, with the exceptions that the title-page-related material will appear as a part title page at the beginning of the first page and tables of contents are not produced.

GMLaipj: For papers submitted to journals published by the American Institute of Physics and its member societies. This layout is not yet completely accurate in its output. The heading styles are correct, but the placement of components such as footnotes and figure captions in the output are not yet proper; this will be corrected in a future version.

GMLapaj: A layout for papers being submitted to the American Psychological Association.

GMLieee: The general IEEE two-column layout, for papers that are to be produced on the U-44 grid sheets provided by the IEEE Editorial Department.

GMLmwcs: A GMLieee-like layout used by McGregor and Werner Conference Services.

GMLnhcrc: A layout for papers in the style of the North-Holland Publishing Company, Camera-Ready-Copy Department.

Layouts for Theses:

GMLthesi: A layout in the style suggested by the University of Waterloo for theses. GMLthesi produces output that is almost identical to that of GMLman. Level-one heading numbers are printed as uppercase roman numerals instead of as Arabic numerals.

GMLapa A thesis layout in which the headings conform to the style of the American Psychological Association.

GMLmla Produces output like that of GMLthesi, with the exceptions that the layout of footnotes, new paragraphs and long quotations are in the style preferred by the Modern Language Association of America.

System Considerations

Machine Requirements: System 370, or equivalent

Operating Systems: OS, VS, OS/VS/TSO, VM/CMS.

Source Language: /370 Assembler

Memory Requirements: 1024K suggested, and up. This may be reduced by 512K by deleting the Spelling Verification Dictionary.