Thinkage UW Tools Package
The UW Tools Package is a collection of dozens of software tools for the GCOS8 operating system. The package contains a number of utility programs designed to increase productivity at every stage of software preparation: coding, debugging, testing, and documentation.
The B Programming Language
B has proved itself time and again as one of the most versatile languages for writing system software under GCOS-8. It supports all modern program logic structures: IF-THEN-ELSE, WHILE loops, SWITCH statements, and so on. Its operators allow programmers to perform all the normal integer, floating point, and character operations, as well as low-level actions like bit shifting, ANDing, and ORing. Because B is a stack-oriented language, recursion is permitted.
B comes complete with a reference manual, a tutorial guide, and on-line descriptions of all library functions. The B compiler and B programs can be prepared to run under either batch or TSS.
The B Run-Time Library
One of the most important features of B is the library of utility functions that comes as part of the package. These functions perform such operations as
- formatted I/O, supporting all GCOS8 Media codes
- string manipulation
- invoking system calls
- sorting data
- dynamic memory allocation
The BOFF DebuggerBOFF is a symbolic debugger designed to help debug any program running under GCOS8. It is particularly useful with programs written in B, since the B compiler produces debug tables that BOFF can use to obtain information about the program and its variables (source line numbers, local variable names, etc.).
BOFF can be used in several modes.
- To examine post-mortem dumps of aborted programs.
- To "babysit" a program as it runs.
- To patch locations in load modules (or any other kind of file).
- To profile a program's execution.
- To act as an expression evaluator, printing out the results of expressions in a variety of formats (octal, decimal, hex, BCD, ASCII, etc.).
BOFF lets you perform the following actions for debugging:
- print out any memory location in a variety of formats (octal, decimal, floating point, BCD, ASCII, GMAP instruction, etc.)
- change the values of memory location (patching)
- set breakpoints at absolute memory locations, at beginnings of functions, and at function return
- call program functions while stopped at a breakpoint
- create BOFF variables for use during a BOFF session
- obtain function tracebacks
- save and restore core images
- display register and variable values
The EXPLAIN Subsystem
The EXPLAIN subsystem is a facility for providing on-line documentation on a variety of topics. The documentation for the B package is all available through EXPLAIN. As part of the standard installation procedure, this material is stored under the catalog LIBRARY/EXPL where the EXPLAIN command may locate it at a user's request. Sites may add their own material to LIBRARY/EXPL or modify the standard explanations to suit individual needs.
The FRED Text EditorFRED is a line editor descended from the QED editor. It allows all the usual interactive editing operations: creating, deleting, modifying and saving text, global substitutions, and the like. In addition, it can be used to write sophisticated text manipulation programs. Our current library of stored FRED programs includes programs to play tic-tac-toe, to convert RUNOFF source into source for our TF text formatter, to generate and run an EXEC file to copy a catalog, and so on.
Some of the features that distinguish FRED from other editors are:
- The ability to "undo" up to 10 lines of commands, if you make a mistake or change your mind.
- Multiple buffers (workspaces) to let you work on more than one file at once, or move text about from one location in a file to another.
- The ability to "capture" output from a FRED or TSS command, and place that output in a buffer for editing.
- A sophisticated pattern matcher, allowing you to locate strings and perform various manipulations on them.
- Simple commands for upper or lower casing text.
- Control structures, including loops and GOTOs.
- The ability to put comments in FRED programs.
FRED comes complete with a reference manual, a tutorial for beginners, and a more advanced guide to writing FRED programs. There is also a small library of utility programs. FRED operates in TSS or batch.
The Secure Command LoaderThe UW Tools package brings with it a new command loader designed for more security than the stock command loader. This loader also lets the UW Tools package provide many services that would not be available under the normal permission system. None of these services constitute violations of security, but users have been denied these conveniences because the stock command loader could not provide the services without providing opportunity for true security violations.
Modified ACCESS CommandA modified version of ACCESS is distributed with the package in order to support some of the features of the Secure Command Loader. This ACCESS has other important enhancements:
- The command line syntax has been simplified to make typing easier (for example, arguments may be separated by spaces instead of commas).
- The interface has been improved to make ACCESS easier to use in command files and in calls from other programs. The improvements make the *ACC interface obsolete.
- There is a "verify" option so that the user gets a positive feedback about the action just performed.
- There is a full set of online explain files for the ACCESS subsystem.
Utilities in the UW Tools Package
Below we summarize the arsenal of utilities that come with the UW Tools package.
- A command to print a user's resources and limits. This is basically an improved SMCL command that prints change dates and handles UMC's on removeables or volume sets.
- A program for submitting GMAP assembly jobs from TSS.
- A better AFT command that can list the contents of the AFT, including full names of permanent files.
- A block mode file compare utility.
- A simple macro preprocessor for B programs.
- A versatile utility for sorting files according to multiple keys.
- A disassembler for object decks.
- A better TEMP command that can be easily used by command files and other programs.
- A program for converting B source code into GMAP assembly code.
- A TSS command that tells what FMS bucket contains a given userid.
- A TSS command that will return the current of all batch jobs submitted by a specified user.
- A command that lists the "characteristics" of one or more files or catalogs: general permissions, specific permissions, current size, maximum size, creation date, change date and time, number of accesses, disk location, label on tape of most recent back-up, and whether a file is random or sequential.
- A command to copy a file or entire catalog along with permissions and other FMS attributes.
- A utility for copying any kind of file.
- A program that temporarily suspends a CRUN session and runs another command.
- A program that determines the differences between two text files.
- A program for examining the status of DRUNs.
- A utility that echoes its arguments to the terminal or an output file.
- A way of repeatedly executing commands while obtaining parameters for the commands from an input file.
- A command that evaluates arithmetic, logical, and string expressions.
- A facility similar to CRUN for conditionally executing a file of TSS commands.
- A command that is capable of obtaining on-line documentation and listing it in a convenient readable form.
- A TSS command for invoking the Fortran~77 compiler.
- A program for dumping the contents of files in readable formats.
- A utility for listing the names of all the files under a given catalog; the command can also list just the files that have a certain characteristic, e.g. all files that have been changed since a particular date.
- A program that returns fuller explanations of derail status codes.
- A program for invoking the Fortran 66 compiler.
- A program loader for programs in B, C, or Pascal.
- A command to grow a file.
- A command that executes a list of TSS commands, depending on the result of a logical expression.
- A program for columnating input and optionally writing the result to the line printer.
- A program to produce a "key word in context" list.
- A command for listing the contents of almost any kind of file (e.g. text files, freeze files, qstar files, mailboxes, and others).
- A command that gives a concise listing of the contents of a catalog.
- A utility to determine the length and type of a file. This is similar to the stock LENGTH command, but recognizes many more file formats.
- A command to invoke GELOAD as a DRL TASK job.
- A utility that scans one or more text files and prints out windows around lines that contain a particular string of characters.
- An editor for libraries of load modules.
- A command for putting all the alphabetic characters of an ASCII file into lower case.
- A utility for printing the contents of text files in a fully-readable format.
- A command for obtaining information about OM object module libraries.
- A command for editing OM object module libraries.
- A command for editing a random object (GELOAD) library. RANE works in both batch and TSS.
- A command to change the AFT name of a file.
- A command for editing RU (run-unit) libraries.
- A command to set the working catalog with checks for common errors such as missing passwords and non-existent pathnames.
- A command to shrink the physical size of a file down to the file size that is actually being used.
- A command that will print the contents of temporary or permanent files on the line printer.
- A command for editing source libraries (COBOL74 copy libraries).
- A program for stripping trailing blanks and sequence number fields from text files.
- A utility for switching the position of programs on the CALLSS stack.
- A utility to set and display both program switch words.
- A command to display the last few lines of a file.
- A command that prints the current date and time of day. It can also be used to time the execution of other commands.
- A batch utility to write system insert/edit tapes from Q* files.
- A command to process time zone definitions that can then be incorporated into B programs.
- A command that will examine an object library to determine which of the routines in the library reference a particular SYMDEF.
- A command to remove duplicate lines from a file.
- A command that converts a text file into upper case.
- A utility to count characters, words and lines in a file.
- A command that can be used to determine the name of someone who has currently busied a particular file.
- A command to display the current userid, system name, and working catalog.
- A command that will execute a set of one or more TSS commands upon each file in a given catalog.
- A program that generates language parsers -- a simple source format allows users to specify a language and what actions should be taken when language constructs are recognized. The output of YAY is either B or C source code that can then be compiled to obtain the actual parser.