ORVYL and WYLBUR
| Company type | Time-sharing system |
|---|---|
| Industry | Computer software |
| Founded | 1967–68 |
| Founder | Stanford University |
| Headquarters | Stanford , United States |
| Products | ORVYL time-sharing system, WYLBUR text editor and word processor |
ORVYL is a time-sharing system developed at Stanford University during 1967–68 for use with IBM System/360 and System/370 computers. It ranks among the earliest time-sharing platforms implemented on IBM hardware. Wylbur serves as a text editor and word processor that can function either independently or in conjunction with ORVYL.
Overview
Although the names ORVYL and WYLBUR are frequently used interchangeably, they refer to distinct components:
- ORVYL is a time-sharing monitor providing services such as file system management, command interpretation, program execution, debugging, and supervisory functions. Its initial deployment targeted the 360/67, with subsequent versions supporting the System/370 series.
- WYLBUR is a text editing and word processing tool that also facilitates job submission and retrieval through its proprietary markup language, along with email capabilities. It operates alongside ORVYL or on IBM operating systems including OS/360, SVS, and MVS.
- MILTEN is terminal control software utilized by both ORVYL and WYLBUR to manage start/stop terminals.
Unlike standalone operating systems such as the Dartmouth Time-Sharing System (DTSS) or Unix, WYLBUR is an application layered on top of IBM batch operating systems (OS/360, SVS, MVS), providing editing and Remote Job Entry functionality similar to Emacs on Unix systems. However, while Emacs is optional within Unix environments, IBM's systems initially depended heavily on WYLBUR. Later IBM developments—including the Administrative Terminal System (ATS), Conversational Remote Batch Entry (CRBE), Conversational Remote Job Entry (CRJE), and the Time Sharing Option (TSO)—eventually replaced WYLBUR for IBM users.
Throughout this article, commands and keywords are presented in uppercase letters. All character references conform to an EBCDIC encoding scheme.
Use
ORVYL and WYLBUR found application at prominent research institutions such as the Stanford Linear Accelerator Center, European Organization for Nuclear Research, and the U.S. National Institutes of Health. Although most installations phased them out in the late 1990s due to concerns related to the Y2K, NIH continued using WYLBUR up until December 2009. Both systems are still accessible as open source software from Stanford University under a license inspired by the Open Source Initiative–approved "Mozilla 1.1 License." Additionally, proprietary versions like SuperWYlbur have been developed.
WYLBUR earned high praise; for example, a 2004 retrospective on CERN's computing history highlighted its introduction alongside IBM's MVS in 1976, commending its streamlined design and intuitive interface that eased the transition from punch-card workflows to interactive terminal use throughout the laboratory.
Advantages and disadvantages
Introduced in 1967–68, ORVYL and WYLBUR preceded IBM’s official time-sharing offerings such as the TSO. A major benefit of WYLBUR was its compatibility with IBM’s widely used OS/360 operating system.
WYLBUR utilizes a single-address-space model that conserves memory resources—a critical factor when hardware limitations were significant. Even after TSO became available, organizations prioritizing efficient memory utilization often continued deploying WYLBUR for many users.
The system supports compressed storage of Partitioned Data Sets (PDSs), thereby optimizing disk usage by storing text streams more compactly than the fixed-length formats typically employed in MVS. Conversion between standard PDS formats and WYLBUR's compressed format was handled either by WYLBUR itself or through external utilities invoked via JCL.
While TSO offers enhanced user functionality overall, WYLBUR includes Exec scripts that enable batch job automation with parameterization—allowing numerous operations without requiring full TSO access.
WYLBUR’s security architecture incorporates:
- Configurable rules restricting dataset access beyond user-owned name prefixes, analogous to UNIX home directory protections.
- Equitable resource allocation preventing commands like TSO’s alloc from monopolizing files or system assets.
- Administrative controls limiting commands that monitor or modify other users’ sessions.
However, some security limitations are present:
- The single-address-space design permits potential unauthorized memory access; historically, scripts have been able to extract passwords directly from WYLBUR’s memory.
- Dataset access enforcement relies solely on WYLBUR’s internal mechanisms, which administrators can disable during maintenance activities.
- Disk quota assignments could be transferred between users, complicating quota enforcement in environments with temporary accounts.
- In ACF2-secured systems, users holding both TSO and WYLBUR accounts could escalate privileges by resetting WYLBUR security records via TSO.
- Until the late 1960s, batch jobs were exempt from WYLBUR’s security constraints, allowing utilities to access or modify other users’ files unless password protection was applied—a measure that was operationally burdensome.
Data Management
Wylbur employs a unique editing format tailored for its compressed data collections, where each line is identified by a line number and a revision indicator. Additionally, it accommodates conventional FB and VB dataset formats. Users generally designate a default volume, which may include the special identifier CATLG, to facilitate dataset searching or cataloging. The system can translate line numbering between its native format and IBM datasets, utilizing either scaled integers or explicit decimal notation.
Editing
Wylbur provides a line-oriented editor that operates on temporary datasets (referred to as buffers), with one buffer set as the active default at any moment. Each buffer maintains a current line pointer. Commands may be directed toward either a specified or the default working dataset.
Editing actions revolve around associative ranges of lines numbered from 0.0 up to 99999.999, supporting versatile line number formats including:
- Absolute notation: ddddd.ddd
- Keywords such as FIRST, CURRENT, LAST, END
- Relative references (line ± offset)
- References using macro variables
Wylbur's libraries utilize a proprietary format but enable exporting and importing to native operating system files through integer sequencing and scaling of line numbers by a factor of 1000.
Line ranges can be expressed through:
- Explicit intervals (for example, 5.3-2/7.4+3)
- Pattern matching (e.g., 'X' DIGITS*3)
- Patterns combined with column specifications or ordinal positions
- Boolean expressions and set-based definitions
The pattern syntax resembles SNOBOL more than traditional regular expressions, lacking features like backtracking or subpattern capturing except within NIH Wylbur. Pattern components include string literals, logical operators (AND, OR, NOT), positional anchors (BOL, EOL), character categories (DIGIT, LETTER), and additional elements such as BLANK, PUNCTUATION, and HEX.
Examples demonstrating editing commands include: <syntaxhighlight lang="cobolfree"> CHANGE 73/80 TO X10+10 IN EVERY 3RD LINE OF 'ABC' 1/3 in 1.5-2/3.7+2 COPY 'BAL' 10/15 TO EMD CHANGE 73/80 TO IN EVERY 3RD LINE START 2 OF 'BAL' 10/15 CHANGE '(' DIGITS*3 ')' TO SUBSTRING 2/4 </syntaxhighlight>
The base-plus-increment notation enables sequential substitutions with incremental values per line (such as X10, X20, X30). The SUBSTRING directive specifies column ranges within matched text but offers less flexibility than capture groups found in other pattern matching systems.
Enhanced versions
Various institutions have produced advanced iterations of Wylbur, including:
- National Institutes of Health
- Online Business Systems, which was later acquired by ACS (Affiliated Computer Services Inc).
- Optimum Systems Inc., subsequently sold to Electronic Data Systems before being spun off.
- RAND Corporation:
- WYLBUR Command Facilities 1975
- Details two extensions of WYLBUR aimed at evolving it into a programming language for structured text input and manipulation.
- The first extension adds programming language constructs to the command vocabulary and was developed by Paul Andersen.
- The second is a batch preprocessor that allows WYLBUR command programs written in a PL/I-like language; this was created by David J. Smith.
- WYLBUR Learner's Guide
- WYLBUR Reference Manual
- WYLBUR Command Facilities 1975
SuperWylbur
SuperWylbur builds upon the original Wylbur by introducing:
- Compatibility with 3270, 3767, and NTO terminals through VTAM; distinctively, it does not rely on MILTEN for VTAM terminal support unlike other proprietary variants.
- An improved macro system.
- Capabilities for user-developed full-screen panels.
SuperWylbur Macro Facility
The macro processor enhances Wylbur by incorporating commands, constants, functions, and expressions. Users can explicitly trigger expression evaluation using expression or expression, even when the syntax does not inherently include expression parameters. Parentheses are optional for functions without arguments or for variables (for example, ). Using a double percent sign (%) indicates that the value should be returned in quoted form.
SuperWylbur Constants
There are two categories of constants supported:
- Numeric constants:
- An optional [sign] followed by digits and optionally an [sign] exponent
- Hexadecimal digits (hexdigits)
- String constants:
- Enclosed in single quotes: characters
- Enclosed in double quotes: characters
SuperWylbur Operators
Operators composed solely of special characters do not require spaces; however, those containing periods or letters must be spaced appropriately. The operator types include:
Arithmetic Operators
- Addition
- Subtraction
- Multiplication
- Division
- Integer division
- Alternative notation for integer division
- Modulus operation
- Exponentiation
Relational Operators
- () Less than
- () Less than or equal to
- () Equal to
- () Greater than or equal to
- () Greater than
- () Not less than
- () Not less than or equal to
- () Not equal to
- () Not greater than or equal to
- () Not greater than
Logical Operators
- () Logical AND
- () Logical OR
- () Logical NOT
SuperWylbur Macro Functions
Macro functions begin with a period and accept arguments separated by colons and semicolons. The primary categories include:
Arithmetic Functions
Accounting Functions
Date and Time Conversion Functions
Parameters denoted as s default to the current date or time.
Environmental Query Functions
These return values set by SET commands:
- , .ALARM, .AUTOLOG, .BACK, .BATCH, .BIN, .CASE, .CONFIRM, .CONT, .CPU, .DSFORMAT, .EDIT, .EXTDS, .FSASIZE, .LENGTH, .LNDP, .LOGONID, .MAILDSN, .MAILVOL, .NOTIFY, .PORT, .PREFIX, .PRIV, .PROJECT, .PROMEM, .PUBPREFIX, .PUBVOL, .RECDSN, .RECVOL, .ROOM, .RSASIZE, .SCRSIZE, .SSASIZE, .SWCOUNT, .SWSYSPRE, .SYSMDSN, .SYSMVOL, .SYSNAME, .T3270, .TABS, .TALK, .TERMINAL, .TERSE, .TIMEOUT, .USER, .VERSION, .VOLUME, and .WIDTH
Full Screen Functions
JES Functions
Macro Functions
String Functions
Working File Functions
Parameters marked s default to the current working data set.
Complete Listing of Macro Functions
- ; n
- Returns absolute value
- ;
- Retrieves account number from logon ID
- ; x
- Arc cosine of x
- ;
- Triggers beep on next terminal write (value 1)
- ;
- Arguments passed to the macro
- ; x
- Arc sine of x
- ; x
- Arc tangent of x
- ;
- Value of SET AUTOLOG for session recovery
- ;
- SET option BACK or NOBACK
- ; s
- Value from SET BATCH option s
- ;
- Value obtained from SET ROOM
- ; s[i])
- Converts byte i of string s to integer
- ;
- Arguments passed to user-defined command (SET COMMAND)
- ... [Additional macro functions continue following this concise format] ...
- ;
- Displays SuperWylbur version.release - PTF level
- ;
- Volume assigned for session or catalog (CATLG) or null
- ...
SuperWylbur Macro Pseudofunctions
Pseudofunctions resemble functions in behavior but are positioned on the left side of an assignment, for example .
- v'i1[i2] : Substitute columns i1 through i2 within v
- Define panel variable to control cursor placement
- i
- Link the active data set to channel i
- n[[s][[;i]]
- Insert or replace line n in data set s if i is zero or omitted; alternatively, replace the line located i lines after (or before if negative) line 'n' in data set 's'
- i
- Assign current line pointer to channel i
- i
- Insert or update the current line on channel i, then move the pointer forward
- v'i1[i2] : Substitute column i1 of v spanning i2 columns
- i
- Update the most recently read line from channel i
SuperWylbur Macro Statements
- command[command]* (intrinsic command)
- what temp-opts process-opts arg var-name
- variable expression
- [ variable] expression-1 expression-2 [ expression-3]
- pattern expression command
- [expression]
- interval
- b
- (expression [expression]*)
See also
External links
- ORVYL and WYLBUR software download hosted by Stanford University
- Usenet discussions regarding WYLBUR
- WYLBUR Command Facilities, Rand Corporation, 1975