Annotation of researchv10no/cmd/spitbol/spitbol.1, revision 1.1

1.1     ! root        1: .TH SPITBOL 1
        !             2: .SH NAME
        !             3: spitbol \- SPITBOL Compiler
        !             4: .SH SYNOPSIS
        !             5: .B spitbol
        !             6: [ options ]
        !             7: .I "ifile ..."
        !             8: .SH DESCRIPTION
        !             9: .I Spitbol
        !            10: is an implementation of Macro SPITBOL, which is an upward compatible
        !            11: version of the SNOBOL4 programming language.
        !            12: (Version 3 of SNOBOL4 is the reference version for comparison.)
        !            13: Most SNOBOL4 programs
        !            14: which operate correctly using SNOBOL4 should operate correctly
        !            15: when compiled and executed using
        !            16: .I spitbol.
        !            17: .P
        !            18: All names used in a program are normally mapped to UPPER CASE during
        !            19: compilation and execution. 
        !            20: For strict compatibility with SNOBOL4, use the \-f
        !            21: option or \-CASE control statement.
        !            22: .P
        !            23: All
        !            24: .IR ifile s
        !            25: are read in order before the standard input.
        !            26: Standard output comes only from assignments to OUTPUT and from
        !            27: error messages.
        !            28: Program listings and statistics are generated
        !            29: only when requested by options.
        !            30: .P
        !            31: Compiler Options:
        !            32: .P
        !            33: .TP
        !            34: .B \-f
        !            35: don't fold lower case names to UPPER CASE
        !            36: .TP
        !            37: .B \-e
        !            38: don't send error messages to the terminal 
        !            39: .TP
        !            40: .B \-l
        !            41: generate source listing
        !            42: .TP
        !            43: .B \-c
        !            44: generate compilation statistics
        !            45: .TP
        !            46: .B \-x
        !            47: generate execution statistics
        !            48: .TP
        !            49: .B \-a
        !            50: like
        !            51: .B "\-lcx"
        !            52: .TP
        !            53: .B \-p
        !            54: long listing format; generates form feeds
        !            55: .TP
        !            56: .B \-z
        !            57: use standard listing format
        !            58: .TP
        !            59: .B \-h
        !            60: write
        !            61: .I spitbol
        !            62: header to standard output
        !            63: .TP
        !            64: .B \-n
        !            65: suppress execution (like \-NOEXEC control card)
        !            66: .TP
        !            67: .BI \-m dd
        !            68: max size (words) of created object
        !            69: [default
        !            70: .BI \-m 8192
        !            71: ]
        !            72: .TP
        !            73: .BI \-s dd
        !            74: maximum size (words) of stack space
        !            75: [default
        !            76: .BI \-s 2048
        !            77: ]
        !            78: .TP
        !            79: .BI \-i dd
        !            80: size (words) of increment by which dynamic area is increased
        !            81: [default
        !            82: .BI \-i 4096
        !            83: ]
        !            84: .TP
        !            85: .BI \-d dd
        !            86: size (words) of maximum allocated dynamic area
        !            87: [default
        !            88: .BI \-d 256K
        !            89: ]
        !            90: .TP
        !            91: .BI \-u " string"
        !            92: executing program may retrieve string with HOST(0)
        !            93: .TP
        !            94: .BI \-o " ofile"
        !            95: write listing, statistics and dump to
        !            96: .I ofile
        !            97: and OUTPUT to standard output
        !            98: .P
        !            99: Note:
        !           100: .I dd
        !           101: can be followed by a
        !           102: .B k
        !           103: to indicate units of 1024.
        !           104: .P
        !           105: .B "Input/Output"
        !           106: .P
        !           107: .IR Spitbol 's
        !           108: interface to the UNIX system handles two modes of i/o transfers:
        !           109: .P
        !           110: .RS 5
        !           111: .I "line mode"
        !           112: where records are delimited by new-line characters.
        !           113: The interface strips them on input and
        !           114: appends them on output.
        !           115: .P
        !           116: .I "raw mode"
        !           117: where a predetermined number of bytes
        !           118: are transferred.
        !           119: .P
        !           120: .RE
        !           121: The particular mode to be used is specified by the programmer
        !           122: in the INPUT or OUTPUT function call and is processed by the
        !           123: interface.
        !           124: The maximum length of an input record is set by the
        !           125: .B \-l
        !           126: or
        !           127: .B \-r
        !           128: argument.
        !           129: The size of an output record is the length of the string written,
        !           130: plus one for a new line character if in line mode.
        !           131: .P
        !           132: The form of the INPUT/OUTPUT function call is
        !           133: .P
        !           134: .RS 10
        !           135: INPUT/OUTPUT(.name,channel,file_name args)
        !           136: .RE
        !           137: .P
        !           138: .I name
        !           139: is the variable name to be input/output associated.
        !           140: .P
        !           141: .I "channel"
        !           142: is an integer or string that identifies the i/o association.
        !           143: The channel id can be used in subsequent calls to EJECT, ENDFILE,
        !           144: INPUT, OUTPUT, REWIND, and SET.
        !           145: If the
        !           146: .I channel
        !           147: is omitted or the null string, the association is deemed
        !           148: to be made to the system's standard input or output stream.
        !           149: .P
        !           150: .I "file_name args"
        !           151: specifies the source/destination of the
        !           152: input/output and any i/o processing arguments. The
        !           153: .I file_name
        !           154: can be either a path name to a file or a
        !           155: command string. Command strings are distinguished from
        !           156: file names by a leading "!". The character following the
        !           157: "!" is the delimiter used to separate the command string
        !           158: from any i/o processing arguments. The ending delimiter
        !           159: may be omitted if there are no i/o processing arguments.
        !           160: There must always be at least one space between the
        !           161: .I file_name
        !           162: and
        !           163: .I args,
        !           164: even if the
        !           165: .I file_name
        !           166: is null.
        !           167: .P
        !           168: In the following examples the string used in the INPUT/OUTPUT
        !           169: call is on the left side of the equal sign and the command
        !           170: string executed on the right side.
        !           171: .P
        !           172: "!*who" = who   "!*who* \-c" = who  "!$ls \-l$ \-c" = ls \-l
        !           173: .P
        !           174: input/output arguments:
        !           175: .TP
        !           176: .B \-a
        !           177: Append output to existing file. If file doesn't exist
        !           178: then it is created.
        !           179: If
        !           180: .B \-a
        !           181: is not specified then file
        !           182: is created.
        !           183: .TP
        !           184: .BI \-b dd
        !           185: Set internal buffer size to
        !           186: .I dd
        !           187: characters. This value
        !           188: is the byte count used on all input/output transfers
        !           189: except for the last write to an output file. [default 
        !           190: .BI \-b 1024
        !           191: ]
        !           192: .TP
        !           193: .B \-c
        !           194: Like
        !           195: .BI \-r 1
        !           196: .TP
        !           197: .BI \-f dd
        !           198: Use
        !           199: .I dd
        !           200: as file desciptor for i/o.
        !           201: .I spitbol
        !           202: assumes that
        !           203: .I dd
        !           204: has been opened by the shell. File names and
        !           205: .BI \-f dd
        !           206: arguments are mutually exclusive.
        !           207: File descriptors 
        !           208: 0, 1, and 2
        !           209: may
        !           210: be accessed in this manner.
        !           211: .TP
        !           212: .BI \-l dd
        !           213: Line mode: maximum input record length is
        !           214: .I dd
        !           215: characters;
        !           216: output record length is length of string
        !           217: plus one (for new line). [default
        !           218: .BI \-l 1024
        !           219: ]
        !           220: .TP
        !           221: .BI \-r dd
        !           222: Raw mode: input record length is
        !           223: .I dd
        !           224: characters; output
        !           225: record length is length of string assigned to name.
        !           226: .TP
        !           227: .B \-w
        !           228: On output, each record is directly written to the
        !           229: file without any intermediate buffering.
        !           230: The interface automatically sets this option
        !           231: for terminal output.
        !           232: Any buffer length specifications are ignored.
        !           233: On input, each request results in the interface issuing
        !           234: a single
        !           235: .IR read (2)
        !           236: system call.
        !           237: The result is exactly the data returned by
        !           238: .IR read ,
        !           239: except that if
        !           240: .IR read
        !           241: returns 0, the input request fails.
        !           242: The maximum length requested can be set by the
        !           243: .B \-r
        !           244: option;
        !           245: .B \-l
        !           246: is incompatible with
        !           247: .B \-w
        !           248: on input.
        !           249: .P
        !           250: More than one type of transfer may be associated with a channel.
        !           251: This is accomplished by calling INPUT/OUTPUT after the initial
        !           252: call with the name, channel, and file arguments. The
        !           253: file name or
        !           254: .B \-f
        !           255: argument must not be specified on calls subsequent
        !           256: to the first!
        !           257: .P
        !           258: A new standard function, SET, is available and allows executing programs to
        !           259: set the file pointer for input and output files. SET used in conjunction
        !           260: with assignments to output associated variables will correctly overwrite
        !           261: parts of files.
        !           262: SET is called with three arguments as follows
        !           263: .P
        !           264: .RS 10
        !           265: SET(channel,integer,integer)
        !           266: .RE
        !           267: .P
        !           268: The arguments are the same as those to the
        !           269: .IR lseek (2)
        !           270: system call, except that
        !           271: the first argument identifies a spitbol channel instead of
        !           272: a file descriptor.
        !           273: .P
        !           274: .B "EXIT support"
        !           275: .P
        !           276: The EXIT function terminates execution with certain side effects:
        !           277: .P
        !           278: .TP 10
        !           279: EXIT(\fIcommand-string\fP)
        !           280: causes the value of
        !           281: .I command-string
        !           282: to be handed to the Shell to be executed after
        !           283: .I spitbol
        !           284: terminates.
        !           285: .TP 10
        !           286: EXIT(\fIn\fP)
        !           287: If
        !           288: .I n
        !           289: is greater than 0, a load module will be written in
        !           290: .I a.out
        !           291: before termination.
        !           292: Executing this load module will restore the state of the
        !           293: .I spitbol
        !           294: system to what it was when EXIT was called, except that
        !           295: any files other than the standard input, output, and error
        !           296: will have been closed.
        !           297: To the SNOBOL4 program, it will appear as if
        !           298: EXIT had returned a null string.
        !           299: If
        !           300: .I n
        !           301: is exactly 1,
        !           302: the generated load module will identify
        !           303: the version of
        !           304: .I spitbol
        !           305: that created it in a message when it
        !           306: begins execution.
        !           307: If
        !           308: .I n
        !           309: is greater than 1,
        !           310: it will resume quietly.
        !           311: See the reference manual for further details.
        !           312: .P
        !           313: .B "The HOST function"
        !           314: .TP
        !           315: HOST()
        !           316: returns the host string read from /usr/lib/spithost.
        !           317: .P
        !           318: .TP
        !           319: HOST(0)
        !           320: returns the string specified with the
        !           321: .B \-u
        !           322: option
        !           323: on the command line.
        !           324: If
        !           325: .B \-u
        !           326: was not specified the
        !           327: null string is returned.
        !           328: .TP
        !           329: HOST(1,"command string")
        !           330: executes the command string
        !           331: and continues.
        !           332: .TP
        !           333: HOST(2,\fIn\fP)
        !           334: returns argument number
        !           335: .I n
        !           336: from the command line.
        !           337: It fails if
        !           338: .I n
        !           339: is out of range or not an integer.
        !           340: This is useful for writing
        !           341: .I spitbol
        !           342: programs that behave like system commands.
        !           343: .TP
        !           344: HOST(3)
        !           345: returns the index of the first command line argument
        !           346: that was not examined by
        !           347: .IR spitbol .
        !           348: This allows the user program to interpret additional
        !           349: command line arguments.
        !           350: .TP
        !           351: HOST(4,"var")
        !           352: returns the value of the environment variable
        !           353: .IR var .
        !           354: If the value is too long for an internal buffer
        !           355: (presently 512 bytes) it is quietly truncated.
        !           356: .SH "MISCELLANY"
        !           357: .P
        !           358: A file is not actually opened until the first attempt
        !           359: to read or write it.
        !           360: Thus if a variable is associated to an output file,
        !           361: and no value is ever assigned to that variable, the file
        !           362: will not be created, and, if it already existed, its old
        !           363: contents will remain unchanged.
        !           364: If you want an output file to be created even though it
        !           365: might be empty, REWIND it immediately after forming the
        !           366: output association.
        !           367: .P
        !           368: Folding of names to UPPER CASE can be controlled during compilation
        !           369: by the \-CASE control statement and during execution by the &CASE keyword.
        !           370: A value of 0 prevents folding to UPPER CASE and a value of 1
        !           371: forces folding to UPPER CASE.
        !           372: .P
        !           373: Integers are represented by 32-bit quantities and thus restricted in range
        !           374: from \-2147483648 to 2147483647. 
        !           375: Real numbers are implemented in single precision.
        !           376: .P
        !           377: Setting &STLIMIT = \-1 inhibits statement limit checking and provides
        !           378: a way to execute arbitrarily many statements.
        !           379: .P
        !           380: The name TERMINAL is available with default associations for input and
        !           381: output to the terminal.
        !           382: .P
        !           383: If the first line of the first input file begins with
        !           384: .B #!
        !           385: then that line is ignored.
        !           386: This meshes well with the way that
        !           387: .IR exec (2)
        !           388: treats files beginning with
        !           389: .BR #! .
        !           390: .P
        !           391: Setting &PROFILE = 1 causes
        !           392: .I spitbol
        !           393: to accumulate profile information during program execution
        !           394: and print this information after the program terminates.
        !           395: .SH "FILES"
        !           396: /usr/lib/vaxspitv35.err  \- Error text.
        !           397: .br
        !           398: /usr/lib/spithost \- Host computer and operating system identifier.
        !           399: .SH "SEE ALSO"
        !           400: .I "Macro SPITBOL Program Reference Manual"
        !           401: by R. B. K. Dewar, A. P. McCann, R. E. Goldberg, and Steven G. Duff
        !           402: .P
        !           403: .I "The SNOBOL4 Programming Language, Second Edition"
        !           404: by R. E. Griswold, J. F. Poage and I. P. Polonsky

unix.superglobalmegacorp.com

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