Annotation of researchv10no/cmd/spitbol/spitv35.gpm, revision 1.1.1.1

1.1       root        1: !
                      2: ! This is a GPMDOC6 version of the MACRO SPITBOL Manual for VAX/VMS.
                      3: ! It is substantially modified translation of the Runoff version
                      4: ! produced by Dave Shields for the PDP11 Runoff.  It produces everything
                      5: ! including an index, table of contents and a .HLP Help file.
                      6: !
                      7: !
                      8: ! Revision history:
                      9: ! -----------------
                     10: !
                     11: {Set Versionid,BCAB-2132}
                     12: {Set Revid,G}
                     13: !
                     14: ! Rev. G: 17-APR-1982 [SGD]:
                     15: ! o Add description of CHAR (new function).
                     16: ! o Clarify &ABEND and &DUMP (above 2) descriptions.
                     17: !
                     18: ! Rev. F: 11-MAR-1982 [SGD]:
                     19: ! o Changes to reflect new stack handling procedure
                     20: ! o Changes to reflect BUFFER type
                     21: ! o Miscellaneous edits to formats, eliminated some section headings that
                     22: !   caused excessive help nesting.
                     23: !
                     24: ! Rev. E: 25-FEB-1982 [SGD]:
                     25: ! o Enhanced description of &CODE
                     26: !
                     27: ! Rev. D: 08-AUG-1981 [SGD]:
                     28: ! o Fixed description of /LIST /NOLIST /OUTPUT and /NOOUTPUT to
                     29: !   conform to new semantics.  LOADSTACK message removed as no longer
                     30: !   in existance. /CRC and /NOCRC documented.
                     31: !
                     32: ! Rev. C: 30-JUL-1981 [SGD]:
                     33: ! o Changed description of recommended link to reflect ABAA-4521 patch
                     34: !   which avoids need for /NOTRACE.
                     35: !
                     36: ! Rev. B: 19-JUL-1981 [SGD]:
                     37: ! o Fixed manual to reflect that delivery no longer includes SPITBOL image.
                     38: !   This image is built during delivery.
                     39: ! o Added {Revid} macro to provide manual revision level.
                     40: !
                     41: ! Definitions and Macros:
                     42: ! -----------------------
                     43: !
                     44: ! Define the names of the files involved.
                     45: !
                     46: {Set Textfile,SYS$LIBRARY:Spittext.Gpm}
                     47: {Set Outfile,Spitbol.Man}
                     48: {Set Helpfile,SYS$HELP:Spitbol.Hlp}
                     49: !
                     50: ! These macros will generate roman numerals ({Roman n}) from 0..99.
                     51: !
                     52: {Setq Roman,{Cond {Gt @1,10},{Genroman {/ @1,10},x,l,c}}-
                     53:   {Genroman {Remdr @1,10},i,v,x}-
                     54: }
                     55: {Setq Genroman,{Cond -
                     56:   {Le @1,3},{Dupl @2,@1},-
                     57:   {Eq @1,4},{2}{3},-
                     58:   {Le @1,8},{3}{Dupl @2,{- @1,5}},-
                     59:   ,{2}{4}-
                     60: }}
                     61: !
                     62: ! We skip generating the manual if it isn't wanted.
                     63: !
                     64: {Cond {Leq N,{Substr {Caps {Query Do you want to generate the manual? }},-
                     65:     1,1}},-
                     66:   {Tset input,,Begintext=!MANDONE,Endtext=!HELPSTART}}
                     67: {Set output,@Outfile}
                     68: !
                     69: !
                     70: ! Define the sections as numbers (in the help pass we will define them
                     71: ! as names)
                     72: !
                     73: {Set Sec_Func,Section 5}
                     74: {Set Sec_Impl,Section 12}
                     75: !
                     76: ! The Hl macro substitutes for the "Header Level" business of Runoff.
                     77: ! HL is given status as a property and the level <-> value associations
                     78: ! are stuffed there.  Hlval is the current level number.  Hlid is set to
                     79: ! the current level string (n.m form).
                     80: !
                     81: ! The number,title and page is entered on the TOC1 stack for the table of
                     82: ! content printing at the end.  A level of 1 forces a new page with a
                     83: ! spiffy title block. Level 2 stuff is nicely underlined.
                     84: ! Lower level stuff is left to troglodytes.
                     85: !
                     86: {Creprop HL}
                     87: {Setq Hlval,0}
                     88: {Setq Hl,-
                     89:   {Brk}-
                     90:   {Cond {Gt @1,@Hlval},{Set {1}\HL,0}}-
                     91:   {Set Hlval,@1}-
                     92:   {Set.Add1 {1}\HL}-
                     93:   {Set Hlid,-
                     94:     {Doprop HL,-
                     95:       {Cond {Le @1,@Hlval},{2}{Cond {Lt @1,@Hlval},.}},-
                     96:     UP}-
                     97:   }-
                     98:   {Cond {Gt @Linenum,50},{p},,{Ls 2}}-
                     99:   {Cond {Eq @1,1},-
                    100:       {Center *------{Dupl -,{Dsize 2}}-*}-
                    101:       {Center |~{Dbl {Rpad [{Hlid}],5}{2}}~|}-
                    102:       {Center *------{Dupl -,{Dsize 2}}-*}-
                    103:       {Tset Toc1,~},-
                    104:     {Eq @1,2},-
                    105:       {Outdent 3}{Ul {Dbl {Hlid}~~{2}}}{Brk},-
                    106:     ,-
                    107:       {Outdent 3}{Dbl {Hlid}~~{2}}{Brk}-
                    108:   }-
                    109:   {Tset Toc1,-
                    110:     {Rpad -
                    111:       {Rpad -
                    112:         {Hlid},-
                    113:         {+ 7,{* 2,@1}}-
                    114:       }~{Cond {Eq @1,1},{Dbl @2},,@2},-
                    115:       64}-
                    116:     {Pagenum}-
                    117:   }-
                    118: }
                    119: !
                    120: ! These list macros are used to generate numbered lists.  Some of the
                    121: ! Listelem references in the text may contain an argument to {Listelem},
                    122: ! any such argument is ignored by this version of the Listelem macro, but
                    123: ! it is used by a redefined version when producing the Help file (see below).
                    124: !
                    125: {Setq List,{Brk}{Lin 5}{Ls 1}-
                    126:        {Set Listval,0}}
                    127: {Setq Listelem,{Ls 1}{Outdent 5}{Lpad {Setv.Add1 Listval}.~~,5}}
                    128: {Setq Endlist,{Ls 1}{Restore Lmg}}
                    129: !
                    130: ! The index macros do their business on the INDEX property tables
                    131: !
                    132: {Creprop INDEX}
                    133: {Setq Index,-
                    134:   {Set.append {D 1}\INDEX,<, >{Pagenum}}-
                    135: }
                    136: !
                    137: !  Here we begin production of the actual manual
                    138: !
                    139: !  Produce the Title Page
                    140: !
                    141: {set bslack,3}
                    142: {Set lmg,5}{set rmg,70}
                    143: {set pagelength,60}
                    144: {setq newpage,{Ls 3}}
                    145: {Set Linenum,5}{Center *~~~~~~*~~~~~~*}
                    146: {Ls 5}{Center {Dbl M A C R O   S P I T B O L}}
                    147: {Ls 1}{Center      -------------------------}
                    148: {Ls 3}{Center PROGRAM REFERENCE MANUAL (Rev. {Revid})}
                    149: {LS 1}{CENTER --------------------------------{Dupl -,{Dsize Revid}}}
                    150: {Ls 3}{Center VAX/VMS Version 3.5 ({Versionid})}
                    151: {LS 1}{Center ----------------------{Dupl -,{Dsize Versionid}}}
                    152: {LS 2}{April 1980}
                    153: {Ls 3}{Tset Lmg,19}{Tset Rmg,55}{fj}
                    154: Copyright (c) 1980 by DEWAR INFORMATION SYSTEMS CORPORATION.
                    155:  This manual may be reporduced provided that this
                    156: Dewar Information Systems Copyright Notice is
                    157: incorporated.
                    158: {Ls 3}VAX, VMS, DECwriter and PDP are registered trademarks
                    159: of the Digital Equipment Corporation.
                    160: {Set Linenum,50}{Restore Lmg}{Restore Rmg}{Nfj}
                    161: {Center DEWAR INFORMATION SYSTEMS CORPORATION}
                    162: {Center 221 West Lake Street}
                    163: {Center <Oak Park, Illinois USA  60302>}
                    164: {Ls 1}{Center (312) 524-1644}
                    165: {p}
                    166: {Set Linenum,30}
                    167: {Center {Dbl Please replace this page with the Table of Contents}}
                    168: {Center {Dbl (At the end)}}
                    169: {p}
                    170: !
                    171: !  Produce the preamble
                    172: !
                    173: {Fj}
                    174: This report is parallel to the University of Leeds Technical Report
                    175: Number 94, "Macro Spitbol - Decsystem 10 Version," McCann, Holden and
                    176: Dewar, Dec. 1976.
                    177:  Differences will be found primarily in {SEC_IMPL}.
                    178: {Ls 2}
                    179: {nfj}
                    180: {center {Ul Revision History}}
                    181: {Ls 1}
                    182: {nfj}
                    183: This document has been revised as follows :
                    184: {Ls 1}
                    185: Dec 1976        to correspond with        SPITBOL Version 3.0
                    186: Mar 1978        to correspond with        SPITBOL Version 3.3
                    187: Sep 1978        to correspond with        SPITBOL Version 3.4
                    188: Feb 1979        to correspond with        SPITBOL Version 3.5
                    189: {fj}
                    190: {Ls 3}VAX/VMS MACRO SPITBOL Version {Versionid} is designed to
                    191: operate on the VAX 11/780 and VAX 11/750 computers running the
                    192: VMS operating system version 2.0, 2.1, 2.2, 2.3 or 2.4.
                    193: {Set Pagenum,0}
                    194: {Setq Newpage,{Title}{T 42}PAGE~{Pagenum}~-~[{Hlid}]{Brk}{Subtitle}{Ls 1}-
                    195:   {Display Page {Pagenum} - {Subtitle}}-
                    196: }
                    197: {Set title,MACRO~SPITBOL V3.5}
                    198: {Set Subtitle,Introduction}
                    199: {p}
                    200: !
                    201: !  Read the text
                    202: !
                    203: {Tset input,@textfile}
                    204: !
                    205: ! Produce the index.  All that is required is to dump the INDEX property
                    206: ! in sorted order in a suitable format, and then snuff the property and
                    207: ! the definition since it isn't used in generating the help library.
                    208: !
                    209: {Display}
                    210: {Display Generating the index and table of contents.}
                    211: {Display This is hard.  Please be patient.}
                    212: {Display}
                    213: !
                    214: {Tset Hs,\}
                    215: {Delprop INDEXA}
                    216: {Set linenum,1}{Set pagenum,1}{Set pagelength,55}
                    217: {Set Lmg,45}{Set Rmg,72}{Nfj}
                    218: {Setq newpage,{Ls 3}}
                    219: {Setq endpage,{Ls 2}{Center Index - {Roman @Pagenum}}{eject}}
                    220: {Doprop INDEX,-
                    221:   {Brk}-
                    222:   {Outdent 40}-
                    223:   {Rpad {D 1}\,40,.}-
                    224:   {Substr @{D 1}\INDEX,2}-
                    225:   {Cond {Eq {Remdr @Linenum,6},3},{Ls 1}}-
                    226:   ,UP}
                    227: {Brk}{Restore Hs}
                    228: {Delprop INDEX}
                    229: {Setq Index}
                    230: {Set Lmg,5}
                    231: !
                    232: ! Now dump out the table of contents.  Since the TOC1 stack is in inverted
                    233: ! order, we pop it over to another stack, then pop that stack successively
                    234: ! to print it out.
                    235: !
                    236: {p}
                    237: {Set Pagenum,1}
                    238: {Setq newpage,-
                    239:   {Center {Ul TABLE OF CONTENTS {Cond {Gt @Pagenum,1},(CON'T)}}}-
                    240:   {Ls 2}-
                    241:   Section                        Title                           Page-
                    242:   {Ls 1}-
                    243: }
                    244: {Setq endpage,{Ls 2}{Center {Roman @Pagenum}}{eject}}
                    245: {Ls 1}
                    246: {Dowhile {Differ @Toc1},{Tset Toc2,@Toc1}{Restore Toc1}}
                    247: {Dowhile {Differ @Toc2},{Toc2}{Brk}{Restore Toc2}}
                    248: {P}
                    249: !
                    250: !MANDONE
                    251: !HELPSTART
                    252: !
                    253: ! We skip generating the help file if it isn't wanted.
                    254: !
                    255: {Cond {Leq N,{Substr {Caps {Query Do you want to make the .HLP help file? }},-
                    256:     1,1}},-
                    257:   {Tset input,,Begintext=!HELPDONE,Endtext=!MANDONE}}
                    258: !
                    259: ! Now generate the manual text in on-line help form
                    260: !
                    261: {Set Sec_Func,the help for functions}
                    262: {Set Sec_Impl,the help for implementation information}
                    263: !
                    264: {Set Outos,FALSE}
                    265: {Set output,@Helpfile}
                    266: !
                    267: {Display}{Display ...Starting to generate the on-line help file}
                    268: {Display}
                    269: !
                    270: {Setq Os,{D 1}}{Setq Ul,{D 1}}{Setq Dbl,{D 1}}
                    271: {Setq Hl,{Brk}{Tset Lmg,1}{Setv Hlval,{Add1 @1}} -
                    272:    {Replace {Cond {Eq @1,1}{Gt {Dsize 2},31},{Substr @2,1,31},,@2},<~ >,__}-
                    273:    {Brk}{Restore Lmg}{Display {Hlval} - {D 2}}-
                    274: }
                    275: {Set Pagelength,66}{Set lmg,2}{Set Rmg,60}{Fj}
                    276: {Set P}{Set Newpage}{Set Endpage}
                    277: {Setq List,{Brk}{Lin 5}{Ls 1}-
                    278:        {Set Listval,0}}
                    279: {Setq Listelem,-
                    280:    {Cond {Leq @1},{Ls 1}{Outdent 5}{Lpad {Setv.Add1 Listval}.~~,5},,-
                    281:      {Hl @Hlval,@1}{Set.Sub1 Hlval}}-
                    282: }
                    283: {Setq Endlist,{Ls 1}{Restore Lmg}}
                    284: {set bslack,0}
                    285: {tset lmg,1}
                    286: 1 SPITBOL{brk}
                    287: {Tset.Add1 Lmg}
                    288: {Nfj}
                    289: Invokes the MACRO SPITBOL (SNOBOL4) interpreter.
                    290: 
                    291: Format:
                    292: 
                    293:         SPITBOL  file-spec
                    294: 
                    295: {Brk}{Restore Lmg}
                    296: {Fj}
                    297: 2 Parameters{Brk}
                    298: file-spec{brk}
                    299: {Tset.Add1 Lmg}
                    300: A legal file specification designating the input file for SPITBOL without
                    301: wild cards.
                    302:  Only one file can be designated for file-spec.
                    303:  No logical concatenation via "+" or successive processing via "," is
                    304: supported.
                    305: {Brk}{restore Lmg}
                    306: 2 Qualifiers{Brk}
                    307: /CRC (D){Brk}
                    308: /NOCRC{Brk}
                    309: {Tset.Add1 Lmg}
                    310: This switch is only meaningful on a /LOAD=... operation, where the
                    311: specification of /NOCRC will bypass the cyclic reducdancy check of
                    312: the SPITBOL code region.
                    313:  The purpose of this check is to insure that the version of SPITBOL
                    314: being used is the same as the version under which the exit module was
                    315: saved.
                    316:  As SPITBOL also checks version identification data and other parameters,
                    317: the overhead for this check may be considered unnecessary for frequently
                    318: used load modules.
                    319:  In such cases, /NOCRC can be profitably specified.
                    320: {Brk}{Restore Lmg}
                    321: /CSTATS (D){Brk}
                    322: /NOCSTATS{Brk}
                    323: {Tset.Add1 Lmg}
                    324: This switch will enable/disable the printing of compilation
                    325: statistics on the output file.
                    326:  If /NOLIST has been specified, the default is /NOCSTATS.
                    327: {Brk}{Restore Lmg}
                    328: /ESTATS (D){Brk}
                    329: /NOESTATS{Brk}
                    330: {Tset.Add1 Lmg}
                    331: This switch will suppress the printing of execution
                    332: statistics on the output file.
                    333:  If /NOLIST has been specified, then the default is /NOESTATS.
                    334: {Brk}{Restore Lmg}
                    335: /EXECUTE (D){Brk}
                    336: /NOEXECUTE{Brk}
                    337: {Tset.Add1 Lmg}
                    338: This switch has the same logical effect as a
                    339: -NOEXECUTE control card in the source program.
                    340:  SPITBOL will process the source program, and then exit with a
                    341: message that Execution Was Suppressed.
                    342: {Brk}{Restore Lmg}
                    343: /LIST[=filename] (/LIST=Inputfile.LIS (D)){Brk}
                    344: /NOLIST{Brk}
                    345: {Tset.Add1 Lmg}
                    346: The /LIST switch allows specification of the filename for the
                    347: standard output channel.
                    348:  If a terminal device is specified for the /LIST switch,
                    349: then form feeds in the program listing will be suppressed.
                    350:  The default device and account for this file is the same as that under
                    351: which SPITBOL is being run.
                    352:  The default name for the output file is the input file's name, and
                    353: the default extension is ".LIS".
                    354:  The program listing and compilation statistics are sent to this file.
                    355:  If neither of /OUTPUT=... or /NOOUTPUT are also specified on the command
                    356: line, then execution output is also directed to this file.
                    357:  This includes OUTPUT assigned text and TRACE and DUMP output.
                    358: {Ls 1}The /NOLIST switch indicates that source listing is not to be generated.
                    359: /NOLIST also causes an implicit /NOESTATS and /NOCSTATS.
                    360:  Note that the appearance of /NOLIST does not mean that
                    361: no output will be sent to the standard output channel.
                    362:  However, if the program makes no reference to the standard output channel,
                    363: then if /NOLIST is specified, this channel will never be opened.
                    364: {Ls 1}/LIST with no filename inverts the effect of a previous /NOLIST spec.
                    365:  That is, enables source listing and compilation statistics.
                    366: {Brk}{Restore Lmg}
                    367: !
                    368: /MINC=nnn (MINC=20 (D)){brk}
                    369: {Brk}{Tset.Add1 Lmg}
                    370: This switch controls the number of pages by which
                    371: SPITBOL's working store is expanded when it becomes exhausted.
                    372:  Under normal circumstances, it should not be necessary to specify
                    373: this switch, however, "/MINC=0" will prevent any additional allocation
                    374: to SPITBOL past the MINT allocation, and may thus be useful in
                    375: preventing the unrestrained growth of the interpreter.
                    376: {Brk}{Restore Lmg}
                    377: !
                    378: /MINT=nnn (MINT=200 (D)){Brk}
                    379: {Tset.Add1 Lmg}
                    380: This switch controls the amount of virtual memory
                    381: (in 512 Byte pages) that will be initally allocated for SPITBOL's
                    382: working storage areas.
                    383:  The SPITBOL VMS interface is designed to permit these working storage
                    384: areas to grow indefinitely, as long as the region remains contiguous,
                    385: and there are pages available in the process' virtual quota.
                    386:  However, SPITBOL will not request additional memory from VMS unless
                    387: it cannot get enough by regenerating its existing store.
                    388:  So, this switch may be useful in some situations
                    389: to avoid garbage collector thrashing.
                    390: {Ls 1}The default for this switch is "/MINT=200" which is equivalent to
                    391: about 100K bytes, or 25,000 SPITBOL 'words' (VAX Longwords).
                    392:  Stack space is not included in the MINT allocation, instead,
                    393: stack is allocated by SPITBOL as needed.
                    394: {Brk}{Restore Lmg}
                    395: !
                    396: /OUTPUT[=Filename] (/OUTPUT (D)){brk}
                    397: /NOOUTPUT{Brk}
                    398: {Tset.Add1 Lmg}
                    399:  The /OUTPUT=filename switch requests an alternate file for the
                    400: standard output channel at execution time.  If this switch is not specified,
                    401: then execution output is directed at the same file as the source listing
                    402: (/LIST=filename).
                    403:  This file is not opened until execution begins.
                    404:  If at that time the channel cannot be opened, SPITBOL exits with a
                    405: fatal status.
                    406: {Ls 1}/NOOUTPUT directs any execution-time references to the standard
                    407: output channel to the null device (NL:)
                    408: {Ls 1}/OUTPUT with no filename restores the default condition.
                    409:  That is, execution output is appended to the listing output.
                    410: {Ls 1}Note that /OUTPUT and /LIST are not synonymous.
                    411: {Brk}{Restore Lmg}
                    412: !
                    413: /PAGE (D){Brk}
                    414: /NOPAGE{brk}
                    415: {Tset.Add1 Lmg}
                    416: If this switch is specified, page separators in
                    417: the source listing and statistics will be a few blank lines, instead of
                    418: form feeds.
                    419:  "/PAGE" is the default, unless the standard output channel
                    420: is a terminal, in which case "/NOPAGE" is the default.
                    421: {Brk}{Restore Lmg}
                    422: !
                    423: /WARN (D){Brk}
                    424: /NOWARN{Brk}
                    425: {Tset.Add1 Lmg}
                    426: When /NOWARN is indicated on the command line, only errors and severe
                    427: errors in the VMS interface logic will be reported on SYS$ERROR.
                    428:  This can be useful to suppress messages regarding source line truncation,
                    429: exit module saves and similar messages.
                    430: /WARN, the default, causes reporting of such conditions.
                    431: {Ls 1}This switch does not affect in any way SPITBOL's handling of errors with
                    432: respect to the program.
                    433: {Brk}{Restore Lmg}
                    434: /WIDTH=nnn{brk}
                    435: {Tset.Add1 Lmg}
                    436: SPITBOL attempts to compute a proper width for the standard output file.
                    437:  The switch "/WIDTH=n" can be used to override any default.
                    438:  Otherwise, if the output device is record-oriented (including
                    439: spooled files), the default is the buffer for the device as
                    440: indicated by VMS.
                    441:  If the buffer size cannot be obtained, or is outside the range
                    442: [0..255], then a final default of 132 (decimal) is applied.
                    443: {Brk}{Restore Lmg}
                    444: {Restore Lmg}
                    445: {Tset Input,@Textfile}
                    446: !HELPDONE
                    447: !MANDONE
                    448: 
                    449: 
                    450: 
                    451: 
                    452: 
                    453: 
                    454: 
                    455: 
                    456: 
                    457: 
                    458: 
                    459: 
                    460: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.