Waterloo SCRIPT GML Implementation Guide UIC ADN Computer Center Document #8327011 17 Pages Department of Computing Services Provided By University of Waterloo Waterloo, Ontario, Canada December 1, 1989 The Waterloo SCRIPT GML Processor The 84.1 version of Waterloo SCRIPT introduced a new implementation of support for GML. This included new Control Words, Set Symbols, Macros, Built-in Functions, and a total re-design of the tag-to-macro-invocation process. These developments were undertaken to improve GML-processing performance and enhance the Text Programmer's ability to define a GML and write the underlying application-processing-function SCRIPT macros. The new control words allow the SCRIPT processor to perform much of the validity-checking and error-diagnosis work to enforce the document-structure integrity intended by the Text Programmer; previously, that could only be achieved by the Text Programmer, by writing code in the underlying SCRIPT macros. The internal data structures that Waterloo SCRIPT creates from these new control words also allow it to by-pass most of the resource-intensive processing to initialize a macro's local Set Symbol dictionary before invoking the macro; the new code initializes far fewer local symbols, and also initializes some special-purpose local symbols that reduce the Text Programmer's need to resort to global symbols. Both of the above also reduce the skill level needed by the Text Programmer who is not yet thoroughly experienced at the intricacies of macro-writing application development. Waterloo SCRIPT GML Implementation Guide page 2 ======================================================================== Externals Three new SCRIPT control words were added in the 84.1 version of SCRIPT. They are GML TAG (GT), GML ATTRIBUTE (GA), and GML GENERATED (GG). GG is generated internally by SCRIPT to invoke a tag's macro; it is not intended to be issued by the SCRIPT user, is not documented, and may change or vanish in a subsequent version. GT and GA are fully documented in the Waterloo SCRIPT Reference Manual, and are summarized below. GT: The GML TAG control word is as follows: .GT tagname ADD macroname tagoptions CHAnge macroname ON/OFF DELete/PRint * DELete/PRint The "tagoptions" specify whether the tag causes "continued text" if it occurs inline, whether tagtext is required or not allowed, whether the tag may only be followed by another tag (a minimal form of state table), and whether the tag is to be processed or ignored during document composition. GA: The GML ATTRIBUTE control word is as follows: .GA tagname attname (a) (b) * attname * * where (a) is any combination of: ON OFF UPpercase REQuired and (b) is one of: AUTOmatic 'value' LENgth max RANge min max > VALue valname ANY <'value'> RESET value The ON/OFF operands determine whether the attribute is to be ignored during document composition (useful for attributes that provide information that can only be used with some output devices). These new control words allow the GML Text Programmer to define the tags, attributes, and value lists that comprise a tagset. SCRIPT builds an internal data structure from these control words that allows it to perform most of the user-error validation and to invoke the underlying macros in a manner that by-passes much of the normal macro-invocation initialization processing. Waterloo SCRIPT GML Implementation Guide page 3 ======================================================================== A GT-and-GA Example: Part of the definition for the standard-tagset FIG tag is shown in the following example. .gt FIG add @FIGTAB attributes texterror .ga * DEPTH range 0 32000 0 .ga * FONT off upper .ga * * value MONO default .ga * * value TEXT .ga * ID length 6 .ga * NAME automatic 'Figure' The GT "attributes" operand specifies that the FIG tag accepts attributes, and the "texterror" operand specifies that the tag does not accept tagtext. The GAs specify that FIG's attributes are DEPTH (a range of values from 0 to 32000, with a default of 0), FONT (values MONO and TEXT), ID (any value with 6 characters or less), and NAME (cannot be specified by the user). Internals The coding to support these new control words and implement a new tag-scanner algorithm comprises about 3900 lines of Assembler code. The control-word code builds linked-list data structures. The primary list is the tagblock list; each tag defined occupies one block in this list, and points to a secondary list that contains the attributes for that tag; each attribute, in turn, points to a list of values valid for that attribute. The PRINT option of the GML TAG control word allows the internal data structures to be displayed ... a useful debugging tool during the construction of a tagset, and a useful documentation aid as well. From the internal data structures constructed by SCRIPT from these control-word definitions, SCRIPT is able to diagnose the use of invalid attribute names, invalid values, missing attributes, the absence of required tagtext, or the presence of unexpected tagtext. The detection-and-diagnosis process is not as rigourous as some might like it to be ... especially when the processor is being used in a novice-user learning environment. IBM's documentation for the GML distributed with DCF Release 3 describes the markup/content separator (the period before the tagtext) as optional, provided that its omission does not lead to ambiguities. Therefore, rather than generating an error diagnostic when an invalid attribute is encountered in the user's GML-encoded input, the GML-scanning processor generates a warning message and assumes that it has encountered the start of tagtext. Invalid values for valid attributes, however, are always diagnosed as an error condition. If the scanner encounters a valid attribute for which the user has not specified a value, it will use the attribute's default value (if it has one) or generate an error message (if it has no default). Waterloo SCRIPT GML Implementation Guide page 4 ======================================================================== Invoking the Associated SCRIPT Macro The data structures enable SCRIPT to generate an internal Local Symbol Dictionary for the macro that a tag is to invoke, and then invoke the macro directly, thus by-passing the normal process of macro initialization and invocation. The AUTOmatic, DEFault, and specified attributes are provided to the macro as Local Symbols of the form "*attname". New special-function Local Symbols have also been introduced, to facilitate the task of the Text Programmer: *_TAG the name of the tag that caused the macro to be invoked (for example, both the FIG and TAB tags invoke the same macro) *_N the usage count for this tag (for some applications, this eliminates the need to maintain counting variables as Global Symbols) The GML Built-In Function Waterloo SCRIPT Version 84.1 also added a set of "built-in function"s to simplify various string-manipulation and programming applications. The syntax of these functions is modelled after those of IBM's VM/SP Interpreter (REXX). Included is a GML function, of the form &'GML(Operation,operands) that enables the Text Programmer to perform various extraction operations on information from the interal data structures generated by the GT and GA control words. Only the first letter of "operation" is required (and validated). &'GML(Macroname,tagname): the name of the SCRIPT Macro that this tag currently invokes &'GML(Usecount,tagname): the number of times this tag has been encountered in the input &'GML(Reset,tagname,attname<,valname>): can this tagname's attname be reset ; has the value N if no, Y if yes &'GML(Value,tagname<,attname<,valname>>): value to be used for this tag/att/valname; if only tagname is specified, then returns the default tagtext; if attname is also specified, then returns the AUTO/DEFault value; if valname is also specified, then returns the valname or the USE value; in all cases, if there is no value defined, returns the null string Waterloo SCRIPT GML Implementation Guide page 5 ======================================================================== Considerations for Future Versions * To ensure that the GML user does not violate the architectural integrity intended by the design of the markup language, it seems necessary to implement some mechanism to enable the Text Programmer to define a "state table" of tag-and-text relationships. * It is desirable to externalize as much as possible of the formatting-environment parameters, so that users of GML could achieve as much tailoring as possible without the need to first become SCRIPT-experienced Text Programmers. The GML Files The implementation of Waterloo SCRIPT's GML attempts to achieve some degree of modularity by segregating various functional components into separate groups of SCRIPT files: GMLxxxxx the various layout files GML$xxxx underlying-support files; each GMLxxxxx layout imbeds those GML$xxxx files that it requires; the GML$xxxx files are not designed to be imbedded directly by the GML user The SET Tag The SET tag alters a global specification. The specification is either: 1. AN ATTRIBUTE OF A GML TAG, DEFINED BY A .GA SCRIPT CONTROL WORD The tagname is specified by TAG= on the SET tag, and the attname is specified by ITEM= on the SET tag. If TAG= is omitted, it defaults to "GML", a pseudotag used to define some global values. If is not an attribute of , then the SCRIPT macro that processes the SET tag checks to see if it can find ... 2. A GLOBAL SCRIPT SET SYMBOL OF THE FORM @@ If the Symbol exists, its value be set. Otherwise ... 3. A MESSAGE IS ISSUED WARNING THAT THE SET TAG HAS BEEN IGNORED For example ... Waterloo SCRIPT GML Implementation Guide page 6 ======================================================================== :SET ITEM=LINE VALUE='5.5i' 1. No TAG= specified, so defaults to the GML pseudotag. 2. LINE is not an attribute of tag GML, but a. Set Symbol @GML@LINE exists, so b. its value is changed via a SCRIPT control word .SR @GML@LINE = '5.5i' :SET TAG=FIG ITEM=FONT VALUE='TEXT' 1. Tagname is FIG. 2. The FIG tag has an attribute FONT defined. a. The FONT attribute has a value TEXT defined as a default value. b. The default value of the attribute is changed via a SCRIPT control word .GA FIG FONT reset TEXT :SET TAG=FIG ITEM=NUMB VALUE='absolute' 1. Tagname is FIG. 2. NUMB is not an attribute of FIG. a. Set Symbol @FIG@NUMB exists, so b. its value is changed via a SCRIPT control word .SR @FIG@NUMB = 'absolute' Therefore, the Text Programmer who is extending the distributed product can extend the use of the SET tag in the following ways: 1. One can use it to reset the default value of any attribute that has a default value. Refer to the SCRIPT file GML$TAGS for details on the definitions of tags and attributes and values. 2. The Text Programmer can create new SCRIPT global Set Symbol by naming in the form @GML@name, and the user can then set these by coding :SET ITEM=name VALUE=value Note: The implementation of SET functions via SCRIPT Set Symbols in the distributed product may vanish or may switch to being defined via the .GA mechanism in a subsequent release of the product. Waterloo SCRIPT GML Implementation Guide page 7 ======================================================================== Appendix A List of GML Files GML$APA The common lower-level support for GMLapa and GMLapaj, to establish the heading styles based on the HEADLEVEL att of GML. 84/12/03 GML$BASE The basic document components, plus other common routines. Can be externally customized by changing Set Symbol values or re-defining a macro after GML$base is imbedded. 86/04/15 GML$FT The lower-level support for figures and tables. 86/03/08 GML$H The lower-level support for H0-H6 and similar heading levels. The effects can be customized by re-defining values for Symbols. 86/01/15 GML$HN Adds heading-numbering to the code in GML$h and allows the ability for relative numbering of figures, tables, etc. 85/05/07 GML$HNUM Turns head numbering and relative numbering off for FRONTM and BACKM, on for BODY and APPENDIX. 84/08/03 GML$IEEE The lower-level support for IEEE-like layouts. 85/05/04 GML$LIST Support for the various list structures. 86/04/15 GML$MAN The common lower-level support for manuals with full title page and page numbering (possibly) flipping between top and bottom. This code is used by GMLman and all "thesis" layouts. 84/12/03 GML$PAP The common lower-level support for all "paper" layouts. 84/05/31 GML$PDEV This file contains the font definitions and related customizations for multi-font output devices. It supersedes the GML@xxxx files. 86/01/21 GML$TAGS Maps the "standard" tags into their associated macros and defines all their attributes and values. To create a "standard" layout, imbed GML$util, GML$tags, GML$base, GML$list (for lists), GML$ft (for figures and tables), GML$h (for headings) and perhaps GML$hn (numbered headings), GML$hnum (to handle relative numbering, if needed), one of GML$tpfu or GML$tppa (full or part title page), and then make any additions/modifications required. Standard-Tagset Layouts: GMLguide/refg/man/paper/thesi, etc. Waterloo SCRIPT GML Implementation Guide page 8 ======================================================================== Non-Standard-Tagset Layouts: GMLagree/foils/let/memo/mins/pp, etc. 86/03/28 GML$THES The common lower-level support for all "thesis" layouts. 86/01/20 GML$TPBA The macros that are common to both GML$TPPA and GML$TPFU. 85/10/08 GML$TPFU The macros for a full-page TITLEP/eTITLEP. 85/08/06 GML$TPPA The macros for a part-page TITLEP/eTITLEP. 85/08/06 GML$UTIL These "GML utilities" must be imbedded first by every GML layout, before any of the other GML$xxxx files. 86/02/12 GMLAAOJ The two-column layout for the American Academy of Optometry journal publications. Has its own title-page macros. 86/01/21 GMLAGREE The layout for contracts and other legal agreements. 86/03/31 GMLAIPJ Layout for papers being submitted to the journals of the various member societies of the American Institute of Physics. Not yet complete ... yet to make tables/figures come out at end. 86/01/19 GMLAPA The layout for theses in the style of the American Psychological Association. 84/12/03 GMLAPAJ Standard-tagset layout for papers for APA journal submissions. 85/02/10 GMLFOILS Standard-tagset layout for producing foils. 86/02/03 GMLGDOC A layout with a part-title-page area designed to economize on paper. Requires a FRONTM with a TITLEP component. Has its own macros for the TITLEP components, most of which just throw things away. 84/11/25 GMLGUIDE A layout like GMLgdoc but with a full-page title page, and all level-1 headings in FRONTM and BACKM start at top. 84/11/25 GMLIEEE The two-column layout for IEEE grid sheet U-44 (April 1979). To adapt for similar grid sheets, change the page environment. 86/01/21 GMLLET Non-standard tagset for business-letter layout. Page environment is defaulted to UW standard letterhead. 86/03/24 GMLMAN Standard-tagset layout for general-purpose manuals. 86/01/19 Waterloo SCRIPT GML Implementation Guide page 9 ======================================================================== GMLMEMO Non-standard tagset and layout for general-purpose informal memos. Standard-tagset FRONTM components not supported all others are. 85/12/10 GMLMINS Non-Standard tagset and layout for meeting minutes and agendas. Standard-tagset FRONTM components not supported, but all others are. 85/03/20 GMLMLA Standard-tagset layout for a thesis in the style of the Modern Language Association. 86/01/19 GMLMWCS An IEEE-like layout for the grid sheet used by McGregor and Werner Conference Services, 6411 Chillum Place N.W., Washington DC, USA 20012 (202) 722-2200 83/10/27 GMLNEWSL A tagset and layout for the UW DCS Newsletter. It uses special BODYGROUP/eBODYGROUP tags that allow the inclusion of complete GML documents as "newsletter articles". It has its own heading support and plays games with title-page tags. 86/02/20 GMLNHCRC Standard-tagset layout for papers that conform to the "Instructions for Typing Camera-Ready Copy" from the North-Holland Publishing Company (Camera-Ready-Copy Department, P.O. Box 103, 1000 AC Amsterdam, THE NETHERLANDS). 84/11/25 GMLPAPER Standard-tagset general-purpose layout for papers. For papers in the styles of specific publishing bodies, see AIPJ, APAJ, IEEE, MWCS, NHCRC. 84/11/25 GMLPP Non-Standard-tagset layout for documents in UW's Policies and Procedures Manual, controlled by the Office of the Secretariat. Use of JOBTITLE and INCUMBENT instead of DOCNUM and SUBJECT allows the layout to be used for job descriptions, in the same style. Standard-tagset FRONTM components not supported, but all others are. 85/10/10 GMLPPS Non-Standard tagset and layout to produce a GMLpp document in galley form for cut-and-paste inclusion in the UW Secretariat's annual Policies Suppliment publication. 85/01/31 GMLREFG Standard-tagset layout for reference guides. Heading levels are numbered and text is offset. Numbering of pages, tables, figures, etc, is RELATIVE. 86/02/15 GMLSDOC Standard-tagset general-purpose layout for small documents. Pages numbered at bottom centre starting at "1", no top/bottom running headers, only H0 starts new pages. No breaks between FRONTM, BODY, APPENDIX, and BACKM. 85/05/04 Waterloo SCRIPT GML Implementation Guide page 10 ======================================================================== GMLSS Standard-tagset layout that attempts to emulate the style of the IBM DCF/GML Starter Set layout, within the bounds of good taste. The output produced is not line-for-line identical to that of DSMPROF3 (formerly SSPROF) it is not likely that it ever will be. 85/05/04 GMLTEST This is a sample input file for the "standard" GML layouts. 86/02/12 GMLTHESI Standard-tagset layout for a general-purpose thesis, meeting the specifications of the UW Office of Graduate Studies. 86/01/19 GMLUWCPC Standard-tagset layout for the UW Correspondence Program's grid sheets for course/lecture notes. Expects GDOC with SEC attribute 'course_code'. 85/06/16 GMLWORKT The layout for Co-op Student work-term reports. Style guide: Guidelines for Writing Your Work-Term Report UW Department of Co-ordination and Placement (December 1982). 86/01/19 Waterloo SCRIPT GML Implementation Guide page 11 ======================================================================== GML Files and Files Imbedded GML$HN GML$HNUM GML$IEEE GML$BASE, GML$FT, GML$H, GML$LIST, GML$TAGS, GML$TPPA, GML$UTIL GML$MAN GML$TPFU GML$PAP GML$TPPA GML$TPFU GML$TPBA GML$TPPA GML$TPBA GML$UTIL GML$PDEV GMLAAOJ GML$BASE, GML$FT, GML$H, GML$LIST, GML$TAGS, GML$UTIL GMLAGREE GML$BASE, GML$FT, GML$H, GML$LIST, GML$TAGS, GML$UTIL GMLAIPJ GML$BASE, GML$FT, GML$H, GML$HNUM, GML$LIST, GML$TAGS, GML$TPPA, GML$UTIL GMLAPA GML$APA, GML$BASE, GML$FT, GML$H, GML$LIST, GML$MAN, GML$TAGS, GML$THES, GML$UTIL GMLAPAJ GML$APA, GML$BASE, GML$FT, GML$H, GML$LIST, GML$PAP, GML$TAGS, GML$UTIL GMLFOILS GML$BASE, GML$FT, GML$LIST, GML$TAGS, GML$TPFU, GML$UTIL GMLGDOC GML$BASE, GML$FT, GML$H, GML$LIST, GML$TAGS, GML$UTIL GMLGUIDE GML$BASE, GML$FT, GML$H, GML$HNUM, GML$LIST, GML$TAGS, GML$TPFU, GML$UTIL GMLIEEE GML$IEEE GMLLET GML$BASE, GML$FT, GML$H, GML$LIST, GML$TAGS, GML$UTIL GMLMAN GML$BASE, GML$FT, GML$H, GML$HN, GML$LIST, GML$MAN, GML$TAGS, GML$UTIL GMLMEMO GML$BASE, GML$FT, GML$H, GML$LIST, GML$TAGS, GML$UTIL GMLMINS GML$BASE, GML$FT, GML$H, GML$LIST, GML$TAGS, GML$UTIL GMLMLA GML$BASE, GML$FT, GML$H, GML$HN, GML$LIST, GML$MAN, GML$TAGS, GML$THES, GML$UTIL GMLMWCS GML$IEEE GMLNEWSL GML$BASE, GML$FT, GML$LIST, GML$TAGS, GML$UTIL GMLNHCRC GML$IEEE GMLPAPER GML$BASE, GML$FT, GML$H, GML$LIST, GML$PAP, GML$TAGS, GML$UTIL GMLPP GML$BASE, GML$FT, GML$H, GML$LIST, GML$TAGS, GML$UTIL GMLPPS GML$BASE, GML$FT, GML$H, GML$LIST, GML$TAGS, GML$UTIL GMLREFG GML$BASE, GML$FT, GML$H, GML$HNUM, GML$LIST, GML$TAGS, GML$TPFU, GML$UTIL GMLSDOC GML$BASE, GML$FT, GML$H, GML$LIST, GML$TAGS, GML$TPPA, GML$UTIL GMLSS GML$BASE, GML$FT, GML$H, GML$LIST, GML$TAGS, GML$TPFU, GML$UTIL GMLTEST GMLGUIDE GMLTHESI GML$BASE, GML$FT, GML$H, GML$HN, GML$LIST, GML$MAN, GML$TAGS, GML$THES, GML$UTIL GMLUWCPC GML$BASE, GML$FT, GML$H, GML$HNUM, GML$LIST, GML$TAGS, GML$TPPA, GML$UTIL GMLWORKT GML$BASE, GML$FT, GML$H, GML$HN, GML$LIST, GML$MAN, GML$TAGS, GML$UTIL Waterloo SCRIPT GML Implementation Guide page 12 ======================================================================== Imbedded Files by GML File GML$APA GMLAPA, GMLAPAJ GML$BASE GML$IEEE, GMLAAOJ, GMLAGREE, GMLAIPJ, GMLAPA, GMLAPAJ, GMLFOILS, GMLGDOC, GMLGUIDE, GMLLET, GMLMAN, GMLMEMO, GMLMINS, GMLMLA, GMLNEWSL, GMLPAPER, GMLPP, GMLPPS, GMLREFG, GMLSDOC, GMLSS, GMLTHESI, GMLUWCPC, GMLWORKT GML$FT GML$IEEE, GMLAAOJ, GMLAGREE, GMLAIPJ, GMLAPA, GMLAPAJ, GMLFOILS, GMLGDOC, GMLGUIDE, GMLLET, GMLMAN, GMLMEMO, GMLMINS, GMLMLA, GMLNEWSL, GMLPAPER, GMLPP, GMLPPS, GMLREFG, GMLSDOC, GMLSS, GMLTHESI, GMLUWCPC, GMLWORKT GML$H GML$IEEE, GMLAAOJ, GMLAGREE, GMLAIPJ, GMLAPA, GMLAPAJ, GMLGDOC, GMLGUIDE, GMLLET, GMLMAN, GMLMEMO, GMLMINS, GMLMLA, GMLPAPER, GMLPP, GMLPPS, GMLREFG, GMLSDOC, GMLSS, GMLTHESI, GMLUWCPC, GMLWORKT GML$HN GMLMAN, GMLMLA, GMLTHESI, GMLWORKT GML$HNUM GML$HN, GMLAIPJ, GMLGUIDE, GMLREFG, GMLUWCPC GML$IEEE GMLIEEE, GMLMWCS, GMLNHCRC GML$LIST GML$IEEE, GMLAAOJ, GMLAGREE, GMLAIPJ, GMLAPA, GMLAPAJ, GMLFOILS, GMLGDOC, GMLGUIDE, GMLLET, GMLMAN, GMLMEMO, GMLMINS, GMLMLA, GMLNEWSL, GMLPAPER, GMLPP, GMLPPS, GMLREFG, GMLSDOC, GMLSS, GMLTHESI, GMLUWCPC, GMLWORKT GML$MAN GMLAPA, GMLMAN, GMLMLA, GMLTHESI, GMLWORKT GML$PAP GMLAPAJ, GMLPAPER GML$PDEV GML$UTIL GML$TAGS GML$IEEE, GMLAAOJ, GMLAGREE, GMLAIPJ, GMLAPA, GMLAPAJ, GMLFOILS, GMLGDOC, GMLGUIDE, GMLLET, GMLMAN, GMLMEMO, GMLMINS, GMLMLA, GMLNEWSL, GMLPAPER, GMLPP, GMLPPS, GMLREFG, GMLSDOC, GMLSS, GMLTHESI, GMLUWCPC, GMLWORKT GML$THES GMLAPA, GMLMLA, GMLTHESI GML$TPBA GML$TPFU, GML$TPPA GML$TPFU GML$MAN, GMLFOILS, GMLGUIDE, GMLREFG, GMLSS GML$TPPA GML$IEEE, GML$PAP, GMLAIPJ, GMLSDOC, GMLUWCPC GML$UTIL GML$IEEE, GMLAAOJ, GMLAGREE, GMLAIPJ, GMLAPA, GMLAPAJ, GMLFOILS, GMLGDOC, GMLGUIDE, GMLLET, GMLMAN, GMLMEMO, GMLMINS, GMLMLA, GMLNEWSL, GMLPAPER, GMLPP, GMLPPS, GMLREFG, GMLSDOC, GMLSS, GMLTHESI, GMLUWCPC, GMLWORKT GMLGUIDE GMLTEST GML Files and Macros Defined GML$APA @@SETHEADS Waterloo SCRIPT GML Implementation Guide page 13 ======================================================================== GML$BASE @@relnum, @frontm, @toc, @tablist, @figlist, @body, @ebody, @appendix, @eappendix, @backm, @i1, @@pg, @@seeid, @i2, @i3, @iref, SYSIX0, SYSIX1, @index, @bibid, @bibref, @@BIBLIST, @@BIB0, @@BIB1, @bib, @box, @@boxon, @ebox, @cit, @ecit, @hp, @ehp, @@eHPcheck, @lq, @elq, @xmp, @exmp, @fn, @efn, @fnref, @@fnid, @hdref, @@reset, @note, @enote, @en, @een, @enref, @endnotes, @formula, @eformula, @para, @pc, @psc, @psc@proc, @epsc, @quote, @equote GML$FT @efig, @etab, @figtab, @@efigtab, @figid, @tabid, @ftref, @@FTLIST, @@FT0, @@FT1, @figcap, @tabcap, @figdesc, @efigdesc, @tabdesc, @etabdesc GML$H @h0, @h1, @h1sub, @aphead1, @h2, @h3, @h4, @h5, @h6 GML$HN @@headtab GML$HNUM @@HEADNUM, @@HEADOFF, @@HEADON GML$LIST @li, @lih, @lp, @liref, @@olset, @@ulset, @dt, @dd, @ddh, @gt, @gd, @@startli, @@nested, @@checkli, @@endli GML$MAN @@HSFS, @@SETPAGE GML$THES @borrow, @course, @thesdate, @declare, @degree GML$TPBA @aline, @copynote, @copyright, @eaddress, @title GML$TPFU @titlep, @etitlep, @@FBSPLIT, @address, @author, @date, @docnum GML$TPPA @titlep, @etitlep, @address, @author, @date, @docnum GML$UTIL @@error, @@QQ, @@headerr, @@warn, @@verify, @@endpage, @gdoc, @egdoc, SYSTOP, SYSERROR, SYSEOF, @include, @rev, @erev, @set GMLAAOJ @titlep, @etitlep, @title, @author, @address, @aline, @eaddress, @abaaoj, @keywords, @eabaaoj GMLAGREE @titlep, @etitlep, @title, @party, @herein, @ref, @body, @date, @signed, SYSBM GMLAIPJ SYSBM GMLAPAJ SYSBM, @etitlep, @bodytrap GMLFOILS @@SETPAGE, @h0, @h1, @h2, @h3, @para GMLGDOC @etitlep, @title, @author, @address, @aline, @eaddress, @copyright, @copynote, @date, @docnum, SYSTM GMLGUIDE @@SETPAGE GMLIEEE @titlep, @etitlep GMLLET @from, @date, @GDOClet, @docnum, @to, @attn, @subject, @open, @close, @eclose, @dist GMLMEMO @date, @distrib, @dist, @edistrib, @subject, @esubject, @close, @eclose, SYSBM GMLMINS @titlep, @etitlep, @title, @date, @distrib, @dist, @edistrib, @body, SYSBM, @close, @typist, @recorder, @eclose GMLMWCS @titlep, @etitlep GMLNEWSL @titlep, @title, @docnum, @date, @etitlep, @bodygp, @author, @address, @aline, @eaddress, @toc, @ebodygp, $titlep, $title, $author, $address, $aline, $eaddress, $etitlep, @headpunc, @h0, @h1, @h1sub, @h2, @h3, @h4 GMLNHCRC @titlep, @etitlep, @abstract GMLPAPER @@SETPAGE GMLPP @@COL2, @@SETPAGE, @date, @docnum, @jobtitle, @REVISION, @subject, @esubject, @incumb, @title GMLPPS @date, @docnum, @h0, @h1, @aphead1, @h1sub, @h2, @h3, @h4, @h5, @h6, @pplih, @ppli, @subject, @esubject, @title Waterloo SCRIPT GML Implementation Guide page 14 ======================================================================== GMLREFG @@SETPAGE, @@HSFS, @@headtab GMLSS @@SETPAGE GMLUWCPC @fronttrap, @bodytrap Macros by GML File $address GMLNEWSL $aline GMLNEWSL $author GMLNEWSL $eaddress GMLNEWSL $etitlep GMLNEWSL $title GMLNEWSL $titlep GMLNEWSL @@BIBLIST GML$BASE @@BIB0 GML$BASE @@BIB1 GML$BASE @@boxon GML$BASE @@checkli GML$LIST @@COL2 GMLPP @@efigtab GML$FT @@eHPcheck GML$BASE @@endli GML$LIST @@endpage GML$UTIL @@error GML$UTIL @@FBSPLIT GML$TPFU @@fnid GML$BASE @@FTLIST GML$FT @@FT0 GML$FT @@FT1 GML$FT @@headerr GML$UTIL @@HEADNUM GML$HNUM @@HEADOFF GML$HNUM @@HEADON GML$HNUM @@headtab GML$HN, GMLREFG @@HSFS GML$MAN, GMLREFG @@nested GML$LIST @@olset GML$LIST @@pg GML$BASE @@QQ GML$UTIL @@relnum GML$BASE @@reset GML$BASE @@seeid GML$BASE @@SETHEADS GML$APA @@SETPAGE GML$MAN, GMLFOILS, GMLGUIDE, GMLPAPER, GMLPP, GMLREFG, GMLSS @@startli GML$LIST @@ulset GML$LIST @@verify GML$UTIL Waterloo SCRIPT GML Implementation Guide page 15 ======================================================================== @@warn GML$UTIL @abaaoj GMLAAOJ @abstract GMLNHCRC @address GML$TPFU, GML$TPPA, GMLAAOJ, GMLGDOC, GMLNEWSL @aline GML$TPBA, GMLAAOJ, GMLGDOC, GMLNEWSL @aphead1 GML$H, GMLPPS @appendix GML$BASE @attn GMLLET @author GML$TPFU, GML$TPPA, GMLAAOJ, GMLGDOC, GMLNEWSL @backm GML$BASE @bib GML$BASE @bibid GML$BASE @bibref GML$BASE @body GML$BASE, GMLAGREE, GMLMINS @bodygp GMLNEWSL @bodytrap GMLAPAJ, GMLUWCPC @borrow GML$THES @box GML$BASE @cit GML$BASE @close GMLLET, GMLMEMO, GMLMINS @copynote GML$TPBA, GMLGDOC @copyright GML$TPBA, GMLGDOC @course GML$THES @date GML$TPFU, GML$TPPA, GMLAGREE, GMLGDOC, GMLLET, GMLMEMO, GMLMINS, GMLNEWSL, GMLPP, GMLPPS @dd GML$LIST @ddh GML$LIST @declare GML$THES @degree GML$THES @dist GMLLET, GMLMEMO, GMLMINS @distrib GMLMEMO, GMLMINS @docnum GML$TPFU, GML$TPPA, GMLGDOC, GMLLET, GMLNEWSL, GMLPP, GMLPPS @dt GML$LIST @eabaaoj GMLAAOJ @eaddress GML$TPBA, GMLAAOJ, GMLGDOC, GMLNEWSL @eappendix GML$BASE @ebody GML$BASE @ebodygp GMLNEWSL @ebox GML$BASE @ecit GML$BASE @eclose GMLLET, GMLMEMO, GMLMINS @edistrib GMLMEMO, GMLMINS @een GML$BASE @efig GML$FT @efigdesc GML$FT @efn GML$BASE @eformula GML$BASE @egdoc GML$UTIL @ehp GML$BASE @elq GML$BASE @en GML$BASE Waterloo SCRIPT GML Implementation Guide page 16 ======================================================================== @endnotes GML$BASE @enote GML$BASE @enref GML$BASE @epsc GML$BASE @equote GML$BASE @erev GML$UTIL @esubject GMLMEMO, GMLPP, GMLPPS @etab GML$FT @etabdesc GML$FT @etitlep GML$TPFU, GML$TPPA, GMLAAOJ, GMLAGREE, GMLAPAJ, GMLGDOC, GMLIEEE, GMLMINS, GMLMWCS, GMLNEWSL, GMLNHCRC @exmp GML$BASE @figcap GML$FT @figdesc GML$FT @figid GML$FT @figlist GML$BASE @figtab GML$FT @fn GML$BASE @fnref GML$BASE @formula GML$BASE @from GMLLET @frontm GML$BASE @fronttrap GMLUWCPC @ftref GML$FT @gd GML$LIST @gdoc GML$UTIL @GDOClet GMLLET @gt GML$LIST @hdref GML$BASE @headpunc GMLNEWSL @herein GMLAGREE @hp GML$BASE @h0 GML$H, GMLFOILS, GMLNEWSL, GMLPPS @h1 GML$H, GMLFOILS, GMLNEWSL, GMLPPS @h1sub GML$H, GMLNEWSL, GMLPPS @h2 GML$H, GMLFOILS, GMLNEWSL, GMLPPS @h3 GML$H, GMLFOILS, GMLNEWSL, GMLPPS @h4 GML$H, GMLNEWSL, GMLPPS @h5 GML$H, GMLPPS @h6 GML$H, GMLPPS @include GML$UTIL @incumb GMLPP @index GML$BASE @iref GML$BASE @i1 GML$BASE @i2 GML$BASE @i3 GML$BASE @jobtitle GMLPP @keywords GMLAAOJ @li GML$LIST @lih GML$LIST @liref GML$LIST Waterloo SCRIPT GML Implementation Guide page 17 ======================================================================== @lp GML$LIST @lq GML$BASE @note GML$BASE @open GMLLET @para GML$BASE, GMLFOILS @party GMLAGREE @pc GML$BASE @ppli GMLPPS @pplih GMLPPS @psc GML$BASE @psc@proc GML$BASE @quote GML$BASE @recorder GMLMINS @ref GMLAGREE @rev GML$UTIL @REVISION GMLPP @set GML$UTIL @signed GMLAGREE @subject GMLLET, GMLMEMO, GMLPP, GMLPPS @tabcap GML$FT @tabdesc GML$FT @tabid GML$FT @tablist GML$BASE @thesdate GML$THES @title GML$TPBA, GMLAAOJ, GMLAGREE, GMLGDOC, GMLMINS, GMLNEWSL, GMLPP, GMLPPS @titlep GML$TPFU, GML$TPPA, GMLAAOJ, GMLAGREE, GMLIEEE, GMLMINS, GMLMWCS, GMLNEWSL, GMLNHCRC @to GMLLET @toc GML$BASE, GMLNEWSL @typist GMLMINS @xmp GML$BASE SYSBM GMLAGREE, GMLAIPJ, GMLAPAJ, GMLMEMO, GMLMINS SYSEOF GML$UTIL SYSERROR GML$UTIL SYSIX0 GML$BASE SYSIX1 GML$BASE SYSTM GMLGDOC SYSTOP GML$UTIL