INDEX
*  ORVYL/370 Timesharing System Functional Description
1  Orvyl Reference Manual
1.1  About This Manual
1.2  Introduction
1.3  ORVYL Development
1.4  ORVYL Command Language Processor (CLP)
1.5  ORVYL Public Programs
1.6  Document Symbol Conventions
2  ORVYL File System
2.1  ORVYL File Structure
2.2  File Naming Conventions
2.2.1  File Format Options
2.2.2  WYLBUR Active File
2.3  ORVYL File Creation
2.3.1  The CREATE Command
2.3.2  The ERASE Command
2.3.3  The RENAME Command
2.3.4  The SHRINK Command
2.3.5  The PUT Command
2.3.6  The GET Command
2.4  File Access Controls
2.4.1  SET PERMIT Command
2.4.2  The SET SHARE Command
2.4.3  The SET FILEMASK Command
2.4.4  The SET CLP Command
2.4.5  The SET SPIFILE Command
2.5  File Information Commands
2.5.1  The SHOW BLOCKS Command for files
2.5.2  The SHOW PERMITS Command for files
2.5.3  The SHOW ACCESS Command for files
2.5.4  The SHOW SHARE Command
2.5.5  The SHOW CLP Command
2.5.6  The SHOW FILEMASK Command
2.6  Directory Information Commmands
2.6.1  The SHOW BLOCKS Command for accounts
2.6.2  The SHOW PERMITS Command for accounts
2.6.3  The SHOW ACCESS Command for accounts
2.6.4  The SHOW FILES Command
2.6.5  The SHOW FILES ATTACHED Command
2.6.6  The SHOW VFILES Command
2.6.7  The SHOW CONTENTS Command
3  Executing ORVYL Programs
3.1  Creating Load Modules
3.2  LINK Input and Control Statements
3.2.1  The PARM statement
3.2.2  The ALIAS Statement
3.2.3  The CHANGE Statement
3.2.4  The COMMENT Statement
3.2.5  The ENTRY Statement
3.2.6  The EXPAND Statement
3.2.7  The INCLUDE Statement
3.2.8  The NAME Statement
3.2.9  The PAGE Statement
3.2.10  The REPLACE Statement
3.2.11  The LOADFILE Statement
3.2.12  The SYSLIB Statement
3.2.13  The ZAPNAME Statement
3.2.14  The ZAPVER Statement
3.2.15  The ZAPREP Statement
3.3  LOADFILES
3.4  Loading ORVYL Programs
3.4.1  The CALL Command
3.4.2  The SET ENTRY Command
3.4.3  The GO Command
3.4.4  The ENTER Command
3.4.5  The SHOW CORE Command
3.4.6  The SHOW MAP Command
3.4.7  The EXIT Command
3.4.8  The SET REGION Command
3.4.9  The SHOW REGION Command
3.5  Program Execution Control
3.5.1  The SET TIMER Command
3.6  General ORVYL Information
3.6.1  The SHOW VUSERS Command
3.6.2  The SHOW VINFO Command
3.6.3  The SHOW VBLOCKS Command
3.6.4  The SHOW VGROUP Command
3.6.5  The SHOW VSYS Command
3.6.6  The SHOW VSYM Command
4  Debugging Programs Under ORVYL
4.1  Session Breaks
4.2  Reentering User Programs
4.2.1  The GO Command
4.2.2  The ATTN Command
4.3  Obtaining User Program Information
4.3.1  The SHOW CORE Command (SC)
4.3.2  The SHOW ADDRESS Command (SA)
4.3.3  The SHOW GPR Command (SG)
4.3.4  The SHOW FPR Command (SF)
4.3.5  The SHOW PSW Command (SP)
4.3.6  The SHOW SAVEGPR Command (SSG)
4.3.7  The SHOW SAVEPSW Command (SSP)
4.3.8  The SHOW ALL Command
4.4  Modifying User Programs
4.4.1  The PATCH CORE Command (PC)
4.4.2  The PATCH GPR Command (PG)
4.4.3  The PATCH FPR Command (PF)
4.4.4  The PATCH IA Command (PIA)
4.4.5  The PATCH PSW Command (PP)
4.4.6  The PATCH SAVEGPR Command (PSG)
4.4.7  The PATCH SAVEIA Command (PSIA)
4.4.8  The PATCH SAVEPSW Command (PSP)
4.5  Setting Program Traps
4.5.1  The SET TRAP Command (ST)
4.5.2  The SHOW TRAPS Command (STS)
4.5.3  The CLEAR TRAP Command (CT)
4.5.4  The CLEAR TRAPS Command (CTS)
4.6  ORVYL Program Event Recording and Monitoring
4.6.1  Program Event Recording (Program Control)
4.6.2  Program Event Recording (SET EVENT Command)
4.6.3  Program Monitoring (Program Control)
4.6.4  Program Monitoring (SET MONITOR Command)
5  ORVYL Supervisor Services
5.1  Input and Output Protocols
5.2  Terminal Input and Output
5.2.1  Control Codes for Display Input and Output
5.3  WYLBUR Input and Output
5.3.1  The WYLBUR Active File as an Extension of the Terminal
5.3.2  Command Passing and Prompting at the Terminal
5.4  ORVYL Memory Management
5.4.1  Reserving and Releasing ORVYL Pages
5.4.2  Defining ORVYL Page Contents
5.5  Exit Routines
5.5.1  Register Contents upon EXIT Routine Entry
5.5.2  INTERRUPTION CODES
5.5.3  SAVE AREA FORMAT
5.6  Macro Coding and Symbol Conventions
5.6.1  Macro Expansions
5.7  General Device Control
5.7.1  ATTACH: Attaching Devices and Files
5.7.2  DETACH: Detaching Devices and Files
5.7.3  WAIT: General Synchronization
5.8  Terminal Input/Output and Control
5.8.1  ATTACH (1): Attaching User Terminal
5.8.2  READ: Terminal Input
5.8.3  WRITE: Terminal Output
5.8.4  READ,MODE=DISPLAY: Display Terminal Input
5.8.5  WRITE,MODE=DISPLAY: Display Terminal Output
5.8.6  CONTROL (0-1): Page Eject and Spacing
5.8.7  CONTROL (2-3): Setting Tabs
5.8.8  CONTROL (4-6): Terminal Input Translation
5.8.9  CONTROL (7-9): Carriage Control
5.8.10  CONTROL (21): Reading Terminal Characteristics
5.8.11  CONTROL (22-24): ATTN Session Break
5.8.12  CONTROL (25-27): NEWLINE Carriage Return
5.8.13  CONTROL (28): Obtain DELTA from Wylbur
5.9  WYLBUR Input/Output and Control
5.9.1  WYLBUR PREST Format
5.9.2  CONTROL (12): Setting the WYLBUR Mode Word
5.9.3  CONTROL (13): Reading the WYLBUR Mode Word
5.9.4  CONTROL (14): Detecting the WYLBUR Active File Size
5.9.5  CONTROL (15): Obtaining the First WYLBUR Line Number
5.9.6  CONTROL (16): Obtaining the Last WYLBUR Line Number
5.9.7  CONTROL (17): Deleting the WYLBUR Active File Contents
5.9.8  CONTROL (18): Aborting a Command in Progress in WYLBUR
5.9.9  CONTROL (19): Output From the WYLBUR Active File to the Terminal
5.9.10  CONTROL (20): Obtaining Permission to Process Changed Lines
5.9.11  READ,MODE=TEXT: Reading the WYLBUR Active File
5.9.12  WRITE,MODE=TEXT: Writing to the WYLBUR Active File
5.9.13  READ,MODE=EDIT: Allowing WYLBUR to Issue Command Prompts
5.9.14  READ,MODE=(EDIT,CHANGES): Editing the WYLBUR Active File
5.9.15  WRITE,MODE=EDIT: Passing WYLBUR and MILTEN Commands
5.9.16  MILCOM: Passing Commands to MILTEN Only
5.10  ORVYL File Input/Output and Control
5.10.1  ATTACH (2): Attaching ORVYL Files
5.10.2  READ: Reading File Blocks
5.10.3  WRITE: Writing File Blocks
5.10.4  CONTROL (0): Creating File Blocks
5.10.5  CONTROL (1): Deleting a File Block
5.10.6  CONTROL (2): Deleting a Range of File Blocks
5.10.7  CONTROL (3): Testing for the Existence of a File Block
5.10.8  CONTROL (4): Obtaining the File First Block Number
5.10.9  CONTROL (5): Obtaining the File Last Block Number
5.10.10  CONTROL (6): Obtaining the Total Number of File Blocks
5.10.11  CONTROL (7): Writing an Updated File Index
5.10.12  CONTROL (8): Erasing and Renaming Files
5.10.13  CONTROL (9): Assigning Account Level File Privileges
5.10.14  CONTROL (10): Assigning PUBLIC File Privileges
5.10.15  CONTROL (11): Reading File Access Privileges
5.10.16  CONTROL (12): Setting SHARE ONLY Mode for ATTACH Macro
5.10.17  CONTROL (13): Sensing SHARE ONLY Mode for ATTACH Macro
5.10.18  CONTROL (14): Setting the File Format Field
5.10.19  CONTROL (15): Sensing the File Format Field
5.10.20  CONTROL (16): Setting a File's CLP/NOCLP Condition
5.10.21  CONTROL (17): Sensing a File's CLP/NOCLP Condition
5.10.22  CONTROL (18): Setting a File's CLP Only Condition
5.10.23  CONTROL (19): Sensing a File's CLP Only Condition
5.10.24  CONTROL (20): Sensing a File Type
5.10.25  CONTROL (21): Setting SPIRES Only
5.10.26  CONTROL (22): Sensing SPIRES Only
5.10.27  CONTROL (23): Sensing file block size
5.10.28  CONTROL (24): Obtain maximum file size in blocks
5.10.29  CONTROL (25): Convert to hybrid file
5.11  ORVYL File Status and Reserve/Release
5.11.1  STATUS (0): Assigning Global File Access
5.11.2  STATUS (1): Assigning Global PUBLIC Access
5.11.3  STATUS (2): Reading File Names, Creation Date, and Last Use
5.11.4  STATUS (3): Detecting Account Level Access Privileges
5.11.5  STATUS (4): Obtaining Current Space and Usage Statistics
5.11.6  STATUS (5): Extend a Non-IXR File
5.11.7  STATUS (6): Allocating a Non-IXR File
5.11.8  STATUS (7): Allocating a Hybrid File
5.11.11  Reserved STATUS macros
5.11.11.1  STATUS (100): Create a new account
5.11.11.2  STATUS (101): Delete an account
5.11.11.3  STATUS (102): Reset space allowed
5.11.11.4  STATUS (103): List accounts
5.11.11.5  STATUS (104): Reset space use
5.11.11.6  STATUS (105): Delete file catalog entry
5.11.11.7  STATUS (106): Read real block
5.11.11.8  STATUS (107): Set pseudo account
5.11.11.9  STATUS (108): Set file system access mode
5.11.11.10  STATUS (109): Write real block
5.11.11.11  STATUS (110): Update file start block in catalog
5.11.11.12  STATUS (111): Read catalog entry
5.11.11.13  STATUS (112): Get file system id and name
5.11.11.14  STATUS (113): Convert group to file system id
5.11.11.15  STATUS (114): Get file system/group table
5.11.11.16  STATUS (115): Read real block header
5.11.11.17  STATUS (116): Get a contiguous range of blocks
5.11.11.18  STATUS (117): Suspend program execution
5.11.28  RESERVE: Obtaining Exclusive File Control
5.11.29  RELEASE: Relinquish Exclusive File Control
5.12  SUZAN Path Input/Output
5.12.1  ATTACH (4): Creating and Opening a SUZAN Path
5.12.2  READ: Receiving a Message Using a SUZAN Path
5.12.3  WRITE: Sending a Message Using a SUZAN Path
5.13  User Program Control
5.13.1  COMMAND: Executing a Subsystem Command
5.13.2  EXIT: Returning Control to the Command Language Processor
5.13.3  PAUSE: User-Initiated Session Break
5.13.4  PANIC: Program or System Initiated Session Break
5.13.5  SET (0-2): Address Space Management
5.13.6  SET (3-4): Setting the Time Interval
5.13.7  SET (5-9): Establishing Program Exit Routines
5.13.8  SET (10): Resuming Program Execution From an EXIT Routine
5.13.9  SET (11): Setting the Mask Byte
5.13.10  SET (12): Setting Order-of-Service Priority
5.13.11  SET (13): Modifying the Contents of the Communications Area
5.13.12  SET (14): Reserving Additional Virtual Memory
5.13.13  SET (15): Releasing Virtual Memory
5.13.14  SET (16): Reserving Virtual Memory by Specific Address
5.13.15  SET (17): Enabling Program Event Recording
5.13.16  SET (18): Enabling Program Monitoring
5.13.17  SET (19): Protecting Memory Areas
5.13.18  SET (20): Cancelling Memory Area Protection
5.13.19  SET (21): Synchronizing Cooperating ORVYL Programs (ENQUEUE)
5.13.20  SET (22): Synchronizing Cooperating ORVYL Programs (DEQUEUE)
5.13.21  SET (23): Setting the Memory Initialization Value
5.13.22  SET (24): Set Program Name
5.13.25  SET (29): Suspend Program Execution
5.13.26  SET (30): Define new shared symbol entry
5.13.28  Reserved SET macros
5.13.28.1  SET (150): Clear pseudo account
5.13.28.2  SET (151): Ignore multiple attentions
5.13.28.3  SET (152): Set CLP real time (interval) timer
5.13.28.4  SET (153): Set CLP compute time timer
5.13.28.5  SET (154): Write an SMF record
5.13.28.6  SET (155): Set Program Key Mask
5.13.29  WAIT (0): Suspending Program Execution While Awaiting Interrupts
5.14  User Program Information
5.14.1  SENSE (0): Reserved Address Space Status
5.14.2  SENSE (1): Work Area Management Statistics
5.14.3  SENSE (2): Virtual Memory Address Space Limits
5.14.4  SENSE (3): Current Time and Date
5.14.5  SENSE (4): Elapsed Time
5.14.6  SENSE (5): Time Interval Currently in Effect
5.14.7  SENSE (6): Mask Byte
5.14.8  SENSE (7): Program Service Priority
5.14.9  SENSE (8): User Name, Account, and Terminal
5.14.10  SENSE (9-14): Reporting Program Exit Routines, Completion Test
5.14.11  SENSE (15): PSW and GPR Save Area
5.14.12  SENSE (16): Program Exception Address
5.14.13  SENSE (17): Reading the Communications Area
5.14.14  SENSE (18): Identifying the Command Used to Call the Program
5.14.15  SENSE (19): Passing Command Parameter Strings
5.14.16  SENSE (21): Obtaining the Program Event Recording Control Block
5.14.17  SENSE (22): Obtaining the Monitor Mask
5.14.18  SENSE (23): Reporting File System Information
5.14.19  SENSE (24): Sensing the Memory Initialization Value
5.14.20  SENSE (25): ORVYL CPU Time
5.14.21  SENSE (26): Obtaining the current time BLOCK
5.14.22  SENSE (27): Obtaining the HASP Display Buffers
5.14.23  SENSE (28): Sense ORVYL name
5.14.24  SENSE (29): Sense program name
5.14.25  SENSE (30): Obtaining data address for shared symbol
5.14.29  Reserved SENSE macros
5.14.29.2  SENSE (151): Sense file system info
5.14.29.3  SENSE (152): Sense cross address space memory
5.14.29.4  SENSE (153): Sense Orvyl global memory
5.14.29.5  SENSE (154): Sense OS memory
6  URAM II
6.1  URAM Description
6.2  URAM II MACROS
6.2.1  Initialize URAM
6.2.2  Open a URAM file or device.
6.2.3  Copy the OPND dsect.
6.2.4  Create an open parameter area with specified parameters
6.2.5  Close a URAM File or Device.
6.2.6  Read a record from a URAM file or device.
6.2.7  Write a record to a URAM file or device.
6.2.8  Delete a record from a URAM file.
6.2.9  Obtain a buffer for a subsequent PUT.
6.2.10  Process Assign Command Text.
6.2.11  Copy the FCB dsect.
6.2.12  Obtain the address of a specified FCB.
6.2.13  Obtain list of FCB's
6.2.14  Turn on or suppress URAM error messages.
6.2.15  Obtain a specific URAM error message.
6.2.16  Clean up buffers.
6.2.17  Close all files and free unneeded URAM system buffers
6.2.18  Obtain Memory
6.2.19  Free Memory
6.2.20  Find a member of a ORVYL PDS.
6.2.21  Delete a member of an ORVYL PDS.
6.2.22  Rewind a URAM file.
6.2.23  Obtain current record number of URAM file.
6.2.24  Point to a specific active file line.
6.2.25  Establish ATTN, SVC exit routines
6.2.26  Establish a Command Exit.
6.2.27  Return from a Command routine.
7  ORVYL Maintenance
7.1  The SET REFRESH Command
7.2  The SET VMAINT Command
7.3  The SET NOVFILE Command
7.4  The SHOW VVOLUME Command
7.5  The SET VADDVOL Command
7.6  The SET VREMVOL Command
7.7  The FBAL Command
7.8  The ADMIN Program
7.8.1  The DEFAULT command
7.8.2  The ADD command
7.8.3  The DROP command
7.8.4  The RESET command
7.8.5  The ACCOUNT command
7.8.6  The ZORCH command
7.8.7  The EXTEND command
7.8.8  The CRENIXR command
7.8.9  The CREHYBR command
7.9  The PLAYMATE Program
7.9.1  The PLAYMATE Commands
7.9.2  The PLAYMATE PRIME and PAD Commands
7.9.3  The PLAYMATE ETOA and ATOE Commands
7.9.4  The PLAYMATE SORT Command
7.10  User file maintenance facilities
7.10.1  ORVCOPY Facility
7.10.2  ORVMOVE Facility
7.10.3  ORVLOAD Facility
7.11  MPINIT -- Orvyl initialization parameters
7.11.1  System initialization parameters
7.11.2  File system initialization parameters

*  ORVYL/370 Timesharing System Functional Description

1  Orvyl Reference Manual

1.1  About This Manual

This manual is a functional description of ORVYL, the timesharing monitor developed by Stanford University, as seen by the terminal user and programmer.

 - Chapter 1 gives a general overview of ORVYL.
 - Chapter 2 is a description of the  ORVYL  file  system  and  the  command  language  file
 controls available to you.
 - Chapter 3 describes LINK processing and control of your program  execution  under  ORVYL.
 - Chapter 4 details the  command  language  debugging  and  program  event  recording  aids
 available to the ORVYL programmer.
 - Chapter 5 explains the ORVYL supervisor services and the  ORVYL  macro  language.   Macro
 instructions  available to the programmer at the assembly language level are organized by
 management areas.
 - Chapter 6 gives information about URAM, the Unified Record Access Method.
 - Chapter 7 describes VAM/370, the ORVYL File Batch Access Method.

1.2  Introduction

ORVYL is the product of a number of years of development of timesharing resources on IBM hardware at Stanford. From its introduction in the late sixties as a timesharing monitor on an IBM 9672, ORVYL has become a powerful timesharing system, taking full advantage of expanded OS/390 hardware capabilities. ORVYL currently operates under OS/MVS on IBM 9672 hardware. In conjunction with the WYLBUR= text-editing and remote job entry systems and MILTEN terminal communication systems, ORVYL provides the capability of executing user programs in an interactive environment. ORVYL brings a number of useful facilities to interactive programming:

 - A command language providing file manipulation capabilities, program execution  controls,
 and a debugging capability.
 - A means of access to reentrant compilers and data base management systems  called  shared
 programs, allowing simultaneous processing by many users.
 - An independent file system which employs special file security and file sharing controls.
 - A program interface with WYLBUR allowing convenient use of available  interactive  system
 resources.

At the assembly language level, ORVYL also provides a number of program management services for your programs and subprocessors:

 - Input and output processing macros permitting communication  between  your  program,  the
 terminal, ORVYL files, and the WYLBUR active file.
 - General interrupt facilities allowing your program to control  input/  output  processing
 and utilize the hardware timer interrupt facilities.
 - Miscellaneous supervisor services, such as reporting the date and time of day and  memory
 management.

ORVYL maintains a file system independent from that administered under OS/MVS. The ORVYL file system provides file protection and sharing capabilities uniquely suited to the timesharing environment. Specific levels of access to particular files or all files created by you may be extended to other specified users or to a general class called PUBLIC. Files may be designated for concurrent use by many potential users or temporarily reserved by a single user for development or updating. A largely transparent interface between ORVYL files and the WYLBUR active file provides an efficient text-editing capability and a direct method for the loading of program object modules maintained in the OS/MVS file system. User files and the indexes required to access user files are maintained on disk. All disk allocation information, as well as file access information, is also retained on disk. The ORVYL file system maintains the following information, organized by user id and by file, on the file system catalog:

 - By user id:
 - account;
 - number of ORVYL blocks currently in use in all files;
 - maximum number of ORVYL blocks which may be allocated;
 - PUBLIC class access privileges;
 - privileges for other groups;
 - privileges for individual users.
 - By file:
 - file name;
 - number of ORVYL blocks currently in use in the file;
 - PUBLIC class access privileges;
 - privileges for other groups;
 - file privileges for individual users.

1.3  ORVYL Development

ORVYL was first designed by Roger Fajman and, under the direction of Rod Fredrickson, implemented at the Campus Facility of the Stanford Computation Center in 1968. John Borgelt developed the original ORVYL file system. In 1971, a means for batch access to the ORVYL file system (VAM) was designed by Richard Levitt and later enhanced by Carol Lennox. Throughout the period 1968-71, ORVYL also benefitted from important contributions made by Richard Carr, Don Gold, and James Moore.

In order to achieve operating efficiencies, a redesigned ORVYL-II was introduced in 1973. Substantial cost reductions were achieved through basic changes to ORVYL'S paging and dispatching mechanisms implemented by Richard Carr. Parallel language and data base systems development also took place under the direction of Bob Berns (Languages Group), John Schroeder (SPIRES), and Donn Martin (BALLOTS).

ORVYL, is a new design intended to make maximum use of IBM hardware and OS/VS advances, was designed by the SCIP Interactive Systems Group and was the combined effort of Richard Carr, Carol Lennox, Richard Levitt, John Montague, Michael Powell, and William Skane, all under the direction of James Moore and Edgar Williams. It became a major part of the interactive system software developed by the Stanford Center for Information Processing, Charles R Dickens, Director.

Recent improvements to ORVYL have been made by Doug Fletcher, including a new hybrid file structure that permits very large files.

1.4  ORVYL Command Language Processor (CLP)

Much of ORVYL's flexibility comes from the Command Language Processor (CLP). In the timeshared environment, the ORVYL command language allows you to exercise a level of control over program execution and a "virtual computer" usually available only to an operator sitting at a computer console. By entering ORVYL commands at a terminal, you may direct the loading and execution of a program, as well as examine and modify an address space, with a small set of general purpose commands. Since both ORVYL and WYLBUR use the WYLBUR active file, a parallel command language structure has been developed between WYLBUR and ORVYL. For example, to store and retrieve the contents of a WYLBUR active file on a data set, you employ the SAVE and USE commands. Similarly, to pass data to and from an ORVYL file, you issue the PUT and GET commands.

1.5  ORVYL Public Programs

ORVYL supports the interactive applications of the Stanford Public Information REtrieval System (SPIRES), and a number of interactive processors called public programs. ORVYL public programs currently implemented include SPITBOL, PL360, and a BNF Analyzer. APL, PL/C, BASIC, FORTRAN, WATFIV, Pascal, SCRIPT, and SORT are also available under ORVYL. For a list of programs currently supported, type the SHOW PROGRAMS PUBLIC command.

1.6  Document Symbol Conventions

In the general form of an ORVYL command or macro instruction, lowercase letters identify the actual information to be entered. For example, the command form:

indicates that you must specify a valid file name(s) as part of the CREATE command.

 - Square brackets, [ ], denote optional elements in an ORVYL command or macro  instruction;
 they are not typed as part of the statement.
 - Braces, { }, in the command form indicate that you must  specify  at  least  one  of  the
 alternatives  enclosed  in  the  braces;  braces  are not typed as part of the statement.
 - A vertical bar, |, separates alternatives or options.

Thus, in this example, you may use the CREATE command to copy the contents of filename2 to filename1 and optionally replace it (REPLACE), or add the contents of filename2 to the end of filename1 with APPEND.

2  ORVYL File System

2.1  ORVYL File Structure

An ORVYL file is a collection of data blocks. Each block is 2048 bytes or 4096 bytes in length depending upon the file system associated with the user's group code (GG). Users may write data blocks less than these lengths; however, since each block is stored in a fixed space, storage charges are equivalent for complete and incomplete blocks. The original length of the data in a block is stored in a block header, so when the user asks to read the block, the original data is returned. An ORVYL block may be created or released independent of any other block. No charges are assessed for blocks until they are created or written.

2.2  File Naming Conventions

ORVYL maintains file names of the general form

gg identifies the accounting group in which the file was created.

uuu identifies the user who created the file.

filename is a file identifier containing as many as 33 alphanumeric characters. Legal alphameric characters for inclusion in a file name include the letters A -- Z, numbers 0 -- 9, asterisks (*), underscores (_), and periods (.). Segments in the complete file name are separated by periods. The first character of each segment must be a letter.

When creating or referencing an ORVYL file, the user who created the file need specify only the filename; group and user identification are supplied automatically by ORVYL. When access has been permitted by the file owner, other users may also reference one or more of the owner's files. The following chart lists the legal forms of address for ORVYL files, followed by a description of the type of user each form is intended to serve. All forms listed are legal for input to the Command Language Processor (CLP). However, only a subset may be used to name files in ORVYL macros.

Valid ORVYL Filename Forms | For | For   |        Description
                           | CLP?| Macro?|
---------------------------+-----+-------+------------------------------
ORV.gg.uuu.filename        | Yes |  Yes  | Fully qualified filename
---------------------------+-----+-------+------------------------------
filename                   | Yes |  Yes  | Used by the file owner
---------------------------+-----+-------+------------------------------
@gg.&uuu.filename          | Yes |  Yes  | For members of another group
&uuu.@gg.filename          | Yes |  Yes  | with different user initials
---------------------------+-----+-------+------------------------------
&uuu.filename              | Yes |  Yes  | For members of the file
filename USER uuu          | Yes |  No   | owner's group
---------------------------+-----+-------+------------------------------
@gg.filename               | Yes |  Yes  | For a member of a different
filename GROUP gg          | Yes |  No   | group with the same user
                           |     |       | initials as the file owner
---------------------------+-----+-------+------------------------------
filename USER uuu GROUP gg | Yes |  No   | USER identifies the file owner.
filename GROUP gg USER uuu | Yes |  No   | GROUP identifies the owner's
                           |     |       | group.
---------------------------+-----+-------+------------------------------
filename ACCOUNT uuu$gg    | Yes |  No   | ACCOUNT identifies the file
filename ACCOUNT gg.uuu    | Yes |  No   | owner's initials and group.
---------------------------+-----+-------+------------------------------
filename PUBLIC            | Yes |  No   | PUBLIC file (ACCOUNT GG.PUB)
---------------------------+-----+-------+------------------------------

When ORVYL file macros require specification of a user name (group identifier plus user initials), the forms gg.uuu or uuu$gg are both accepted. For use with the Command Language Processor (CLP), PUBLIC is accepted as a valid group and user identifier for the account in which the ORVYL public files reside (that is: GG.PUB).

Programs may create and write temporary ORVYL files during execution. (SEE the description of the ATTACH 2 macro in Section 5.) Such temporary files are erased as soon as the program detaches the file.

Throughout this manual, the term "filename" implies all of the valid ORVYL filename forms shown above. The term "account-info" implies any of the following:

2.2.1  File Format Options

ORVYL files may be in a variety of formats. Record length (line length) and line numbers may vary. When creating ORVYL files, you can specify the format with the format options. They are:

The format options allow you to specify three attributes of the data set:

They are meaningful in the commands GET and PUT. If you do not specify a format, ORVYL saves disk files in EDIT format (that is, EDIT is the default format). Once you have created a disk file with the desired format, ORVYL automatically recognizes the format for LINK, GET and PUT...REPLACE commands. Special caution must be used when specifying an explicit format for saving library members. The format attributes apply to the entire ORVYL user library and not the library members individually. Thus, if the format of the member does not agree with that of the library, ORVYL issues a warning message like the following:

If you reply OK, YES or Y, ORVYL changes the format of the library to the specified format. However, the new format attributes of the library may not reflect the actual format attributes of the older library members. Thus, programs using these members may encounter difficulties, and the SHRINK command may destroy the old members. ORVYL will be able to access the old members only if their format is explicitly given.

Option Descriptions

EDIT            is the default for writing sequential data sets with the
                PUT command.  Internally, active files are always treated
                as EDIT format.  The line number format and position need
                not be specified with the EDIT option.  Library members
                assume the format of the library as the default format.
CARD|PRINT|LRECL=nnn
                specifies that the data set has fixed-length blocked
                records (RECFM=FB) with a record length of nnn.  nnn may
                be an integer between 1 and 235 inclusive.  On a PUT,
                the records may be blocked up to a maximum of 6447
                characters/block.  If the blocking factor is not
                specified on a PUT, ORVYL chooses an optimal blocking
                factor based on device type.  If the actual physical
                block size is not an integral multiple of nnn on a read,
                any characters remaining after all possible lines of nnn
                characters have been extracted will become a separate
                record.  CARD is equivalent to LRECL=80.  PRINT is
                equivalent to LRECL=133.  Using these options on a GET
                command may produce some rather odd looking data if the
                data set being read does not contain fixed records.
NUMBERED        on a write operation (e.g., PUT), it specifies a
                fixed-length blocked record format and that line numbers
                are to be saved as part of the record in the normal ORVYL
                line number form; that is, nnnnn.nnn with leading blanks
                inserted as necessary and trailing zeroes suppressed.  On
                a read operation (e.g., GET, LINK), it specifies that the
                data set is to be treated as NUMBERED fixed or variable
                length blocked.  For non-EDIT format data sets, ORVYL
                uses the line number stored in the record and deletes
                from the record the columns that contain the line number.
UNNUMBERED      on a write operation (e.g., PUT), it specifies a
                fixed-length blocked record format without line numbers
                in the record.  On a read operation (e.g., GET, LINK),
                it specifies that the data set is to be treated as
                UNNUMBERED fixed or variable-length blocked.
                This is the default for CARD|PRINT|LRECL=nnn
INTEGER         has the same meaning as NUMBERED except that the ORVYL
                line number is multiplied by 1000, placed in an 8-digit
                field, and padded with leading zeroes as necessary
                (e.g., line number 1 becomes 00001000).

See the GET and PUT commands for additional options. [See 2.3.5, 2.3.6.]

2.2.2  WYLBUR Active File

ORVYL and WYLBUR both make use of the WYLBUR active file. The WYLBUR active file is an important interface between the ORVYL and OS/MVS file systems. It is a temporary or working collection of lines of text. Using the WYLBUR text-editing facility, lines may be inserted, replaced, or deleted on a line-by-line basis. Within lines, individual characters or character strings may be inserted, modified, or deleted. The WYLBUR active file provides a convenient means for introducing programs and associated data into ORVYL. Program output may be directed to the active file for listing at the terminal or on a printer. Output may also be written online to WYLBUR data sets or ORVYL files for later use. The ORVYL facilities controlling the storage of the contents of the WYLBUR active file in an ORVYL file and the transfer of the contents of an ORVYL file to your WYLBUR active file are the PUT and GET commands, respectively. [See 2.3.5, 2.3.6.]

2.3  ORVYL File Creation

An ORVYL file is created in one of the three following ways:

 - with the PUT command, copying the contents of the WYLBUR active file to  an  ORVYL  file.
 - by a user program running under ORVYL.  [See 3.4.]
 - by execution of the LINK command, creating a file which contains an  executable  program.
 [See 3.1.]

The user may establish an ORVYL file with no contents using the CREATE command. An optional version of the CREATE command also permits the user to copy or append the contents of one file to another. File contents and directory information may be destroyed by execution of the ERASE command. Employing the RENAME command, the user may change the names of established ORVYL files.

2.3.1  The CREATE Command

The CREATE command writes a file directory entry in the ORVYL file system. The CREATE command with a filename and no other options creates a file with no contents in the ORVYL file directory.

The FROM filename2 option on the CREATE command puts a copy of the second file's contents into the new file being created.

The CREATE command can create library format files, library members, or sequential files.

Options:

filename1       the name for the ORVYL file being created.  Type HELP
                FILENAME for information on ORVYL file names.
LIBRARY         creates an empty file in LIBRARY format.
FROM filename2  copies the contents of the ORVYL file named filename2 into
                the new file being created with the name filename1.  The
                CREATE command does not copy file access permits from
                filename1 to filename2.
REPLACE         If REPLACE is specified with the FROM option, it replaces
                the contents of filename1, if any, with the contents of
                filename2.  If the FROM option is not specified, it replaces
                any existing contents in filename1 with an empty file.
APPEND          copies the contents of filename2 to the end of filename1.
                Block numbers for the new contents begin at the next
                block after the last existing block number in filename1.
format-options  describe the desired record length and how WYLBUR line
                numbers should be treated.  Type HELP FORMAT-OPTIONS
                for a description of these options.
ALIAS           creates a second directory entry for an existing ORVYL
                library member, with the message "ALIAS for membername2" as
                the title on the new library member created.  The ALIAS option
                only works in the form:
                   CREATE filename1#membername1 ALIAS membername2
QUIET           suppresses the system response when the command is
                successfully completed.

2.3.2  The ERASE Command

The ERASE command removes the specified file from the ORVYL file system, destroying any file contents. Once you ERASE an ORVYL file, it is gone; however, files can be restored from backups maintained by the Systems Group.

Options:

CONTENTS        deletes only the contents of the specified file, retaining
                the  ORVYL file directory information, file access
                privileges, and file format information. You are charged
                for the remaining index block.
LIBRARY         erases a library format file, and all of its members.
                Be sure you want to destroy the entire file before
                using this option.
QUIET           suppresses any message from the system if the command
                is successfully completed.  This is a standard option
                on WYLBUR and ORVYL commands.

2.3.3  The RENAME Command

The RENAME command changes the name of an existing ORVYL file. It can also rename library members. The RENAME command does not affect the file contents or those statistics and access privileges maintained by ORVYL for the file contents.

Options:

filename1 TO filename2
                   filename1 is the current name of the ORVYL file to be
                   renamed.

                   filename2 is the new name for the existing ORVYL file.  The
                   name must follow the rules for data set names.  Type
                   HELP FILENAME for information on ORVYL file naming
                   conventions.
library#member1 TO member2
                   library#member1 is the current name of the library
                   member to be renamed.  The name must be in the form
                   lib#member or lib(member).

                   member2 is the new member name for the existing ORVYL file.
                   It must be eight or fewer characters.  Do not use the usual
                   library member notation (# or parentheses) when giving the
                   member name.
QUIET              suppresses the system message when the command is
                   successfully completed.  This is a standard option on
                   ORVYL and WYLBUR commands.

2.3.4  The SHRINK Command

Deletes all empty blocks from the specified file. Does not modify file directory information or other file contents.

QUIET         suppresses the system response when the command
              executes successfully.

2.3.5  The PUT Command

Copies the contents of the WYLBUR active file to the specified ORVYL file. Options:

In order to make use of the NUMBERED sequence and INTEGER sequence numbers in subsequent GET commands, the file must be retrieved GET NUMBERED or GET INTEGER. If neither option is specified, the contents of character positions 73-80 are treated like any other data.

2.3.6  The GET Command

Copies the contents of the specified ORVYL file to the user's WYLBUR active file.

Options:

2.4  File Access Controls

The ORVYL file system maintains a flexible security scheme for all user files. This system is based on the principle that access to each file must be explicitly stated and then controlled by the file owner. Access to a particular file or all files created by one user may be extended to any one or all other users.

When an ORVYL file is first created, no access is permitted to any user except the file owner himself. By specifying a level of access to a particular file or global access to all files with the SET PERMIT commands, the file owner may explicitly assign file control to other users.

2.4.1  SET PERMIT Command

The SET PERMIT command allows you to specify a number of different ways that other users may access your files. You may set access privileges for an individual file or for all files owned by you. However, you may not assign access privileges to individual library members; access permits apply to your entire library. You may restrict access to another specified user or group or may use the PUBLIC option to open your file(s) to all users. Access permits must be explicitly set. There are no default privileges assigned by ORVYL to an individual file or files; however, an ORVYL program, such as SPIRES, may establish defaults when it creates a file on your behalf.

To give another user access privileges to a single file:
   SET PERMIT filename FOR gg.uuu [access-level-option]
To give another user access privileges to all your files:
   SET PERMIT FOR gg.uuu [access-level-option]
To grant access privileges to another group to a single file:
   SET PERMIT filename FOR GROUP gg [access-level-option]
To give another group access privileges to all your files:
   SET PERMIT FOR GROUP gg [access-level-option]
To give all users access to your files:
    SET PERMIT FOR PUBLIC [access-level-option]

Option Descriptions
filename        the name of the file to which the SET PERMIT command is
                applied.  If you do not specify a filename, the command
                will apply to all ORVYL files belonging to your account.
FOR account     account is the user or users to whom you are assigning
                privileges. This option may be in the form gg.uuu or
                uuu$gg.
FOR GROUP gg    gg is the group of users to whom you are assigning
                privileges.
FOR PUBLIC      PUBLIC assigns the specified privileges to the all
                users.
READ            permits reading of the file only.  Does not allow any
                changes to the file.
APPEND          gives only the privilege of adding records to the end of
                the specified file(s).  By itself, APPEND does not include
                the privilege of reading a file; to allow others to
                both read a file and add records to it, you must
                specify READ APPEND.
WRITE           permits full access, including reading the file, making
                changes to the file, appending records to the file, and
                erasing the file.
NONE            removes all previously assigned access privileges.
EXTEND          permits the specified user to pass on to other users any
                of the file access privileges granted to the specified
                user.  Only a file owner or a designated user may
                extend previously assigned privileges.  The file owner
                always retains the ability to extend or deny privileges
                to others.
                The EXTEND privilege may not be given to PUBLIC.

2.4.2  The SET SHARE Command

Prevents exclusive use of the specified file by any user. The file is to be used in common and may only be attached by user programs or the Command Language Processor with MODE=SHARE. Only the file owner may issue the SET SHARE command.

Permits a user to attach the specified file to the exclusion of all others. Only the file owner may issue the SET NOSHARE command.

2.4.3  The SET FILEMASK Command

Limits all access to the specified file to the FILEMASK level, regardless of how other file access was obtained or to whom it was assigned. Only the file owner may issue the SET FILEMASK command.

2.4.4  The SET CLP Command

Permits the execution of all ORVYL Command Language Processor commands otherwise available to the user for operation on the specified file. When a file is first created, SET CLP is in effect. Only the file owner may issue the SET CLP command.

Blocks the execution of the ORVYL file commands: ERASE, PUT, RENAME, SET PERMIT, SHOW FILES ERASE, and SHRINK. SET NOCLP does not affect processing of the specified file by a user program. SET NOCLP may only be issued by the file owner.

2.4.5  The SET SPIFILE Command

The SET SPIFILE command blocks read access to an ORVYL file by any non-SPIRES ORVYL programs. A file with SPIFILE set may not be accessed by any program other than the public SPIRES programs or by any user other than the file owner. Access is not allowed either for batch SPIRES, batch FASTBILD, or test versions of SPIRES programs. The SHOW SPIFILE command displays the SPIFILE access for a designated ORVYL file. SET NOSPIFIL reverses the effect of the SET SPIFILE command.

The SET NOSPIFIL command permits ORVYL files to be accessed by ORVYL programs other than SPIRES. It reverses the effect of the SET SPIFILE command. (Because ORVYL commands can only be 8 characters long, this command is spelled NOSPIFIL instead of NOSPIFIL.) The SHOW SPIFILE command displays the SPIFILE status of an ORVYL file.

2.5  File Information Commands

The ORVYL file information commands allow the file owner, or any user with file access privileges, to display information on individual files. Available information includes the size of a specified file in ORVYL blocks (SHOW BLOCKS), the access privileges established for a specific file with the SET PERMIT command (SHOW PERMITS), the net level of access to a specific file for the issuing user (SHOW ACCESS), the file access privileges associated with all files created by a single user, and the SHARE status set for a particular file with the SET SHARE/NOSHARE commands.

DUMP can be used in place of SHOW to append results to Wylbur's Active File. For example:

2.5.1  The SHOW BLOCKS Command for files

Prints the number of ORVYL blocks included in the specified file, followed by the numbers of the first and last blocks in that file.

Note: If you have a filename of FILE or ACCOUNT or any abbreviation down to the first 3 letters, then you will have to either specify the fully qualified form of the filename or use the FILE option. Eg, SHOW BLOCKS FILE ACC

2.5.2  The SHOW PERMITS Command for files

Lists the SET PERMIT access privileges currently in effect for the specified file.

FOR access-group restricts the list of users displayed:

access-group
   gg.uuu|uuu$gg  The specific user or user's group.
   GROUP gg       The specific group.
   PUBLIC         The PUBLIC permission value.

2.5.3  The SHOW ACCESS Command for files

Displays the access privileges available to the issuing user for the specified file. The privilege displayed is a combination of (1) the file and account-level permits for both the issuing user and PUBLIC and (2) the global access limit assigned by SET FILEMASK.

Note: If you have a filename that is ACCOUNT or any abbreviation down to ACC, then you will have to specify the fully qualified form of the filename to distinguish it from the ACCOUNT option.

2.5.4  The SHOW SHARE Command

Displays the SHARE status set by the file owner for the specified file.

2.5.5  The SHOW CLP Command

Displays the CLP condition set for the specified file by the file owner.

2.5.6  The SHOW FILEMASK Command

Displays the access level assigned to the specified file with the SET FILEMASK command.

2.6  Directory Information Commmands

Available information on a user's files includes statistics on the number of allocated blocks and the number of blocks currently in use (SHOW BLOCKS) and an alphabetical listing of certain or all ORVYL files, selected according to optional criteria (SHOW FILES).

2.6.1  The SHOW BLOCKS Command for accounts

Displays the current limit on the number of ORVYL blocks which can be allocated to the user, followed by the number of blocks currently in use.

Note: If you have a filename that is ACCOUNT or any abbreviation down to ACC, then you will have to specify the fully qualified form of the filename to distinguish it from the ACCOUNT option.

2.6.2  The SHOW PERMITS Command for accounts

Prints a list of users who currently enjoy access to the specified user's files (ACCOUNT option). If no ACCOUNT option is specified, then ORVYL reports all access privileges assigned by the issuing user. Any user assigned access privileges may display all privileged users as well as the level of access assigned to each.

FOR access-group restricts the list of users displayed:

access-group
   gg.uuu|uuu$gg  The specific user or user's group.
   GROUP gg       The specific group.
   PUBLIC         The PUBLIC permission value.

2.6.3  The SHOW ACCESS Command for accounts

Displays the access privilege available to the issuing user for all files owned by the specified user (uuu$gg or gg.uuu). This privilege is a combination of the privileges assigned both the issuing user and PUBLIC.

Note: If you have a filename that is ACCOUNT or any abbreviation down to ACC, then you will have to specify the fully qualified form of the filename to distinguish it from the ACCOUNT option.

2.6.4  The SHOW FILES Command

Lists in alphabetical order the names of all ORVYL files created by the user issuing SHOW FILES. Any of the following options may be appended to the SHOW FILES command to provide additional information or modify the file name display.

Options:

2.6.5  The SHOW FILES ATTACHED Command

Displays the names of all those ORVYL files currently attached by the issuing user.

Under ORVYL, user programs may be executed by employing one of the ORVYL interactive language processors (e.g., PL/C, PL360, APL, BASIC, SPITBOL, etc.) or by loading standard OS object modules produced by OS/VS language processors. For instructions on the execution of programs written under the interactive language processors, the user should consult the detailed documentation available for each.

ORVYL accepts object modules produced on-line or from one of the following language processors: FORTRAN IV (G and H), PL360, OS Assembler, PL/1 and COBOL. Object modules are processed by the ORVYL loader to produce a load module. Load module output may then be executed directly or stored in an ORVYL load module library for subsequent execution.

2.6.6  The SHOW VFILES Command

The SHOW VFILES command provides information about ORVYL files (data sets) that are currently attached by users. The files are displayed by file system. Without any options, it produces a list of each currently attached file by every logged-on user, which can be quite long. It is especially useful when you want to find out if a particular file that you need exclusive access to is attached by anyone else, in which case you may want to use the LIKE option to limit the display to that particular file. This command is most often done as DUMP VFILES to append the result to Wylbur's Active File.

The format of the response is:

where "<nnnn>" is the Milten line number of the logged-on user, "<gg.uuu>" is the user's account number, "<ORV.gg.uuu.filename>" is the name of the ORVYL file, and <status>" is either "(Shared)" or "(Exclusive)", depending on how the file is attached.

The following options can be used in any logical combination. Illogical combinations will give unpredictable results.

2.6.7  The SHOW CONTENTS Command

The SHOW CONTENTS or SHOW PROGRAMS command displays an alphabetical list of member names for the specified library.

Option Descriptions

FOR library     the name of the library whose members are to be displayed.
                The default library is the user's library named PROGLIB.
account-info    display the directory of a library belonging to an account
                other than that of the logged-on user.  One form of this
                option is:  ACCOUNT gg.uuu.
ALL             displays the block allocation and usage for each member
                of the library.
ERASE           offers you the option of erasing members of the library.
                After the name of the member has been displayed, ORVYL
                prompts with "Erase?".  A positive response (YES, Y
                or OK) erases that member.  Any other response is
                interpreted as a negative response.

3  Executing ORVYL Programs

3.1  Creating Load Modules

The LINK command invokes the ORVYL loader. Object modules may be input from a file in the ORVYL file system, from the user's WYLBUR active file, or from both. The LINK command is written in the general form

where ACTIVE specifies that the contents of the user's WYLBUR active file are to be used as the primary input for LINK. The alternate form, FROM filename, directs LINK to the specified ORVYL file for input. ORVYL files for use as LINK input must be written in EDIT or CARD format. (SEE Section 2.3 for a description of ORVYL file formats.) CLEAR clears the previous contents of user memory, if any. LIST logs all LINK control statements and END's of object decks as they are processed.

ENTER instructs ORVYL to begin program execution immediately following the completion of LINK processing providing a NAME statement wasn't used to store the program in a LOADFILE. The PAUSE option for ENTER returns control to the Command Language Processor and sets the program entry point to the first instruction. Execution may then be initiated with the GO command. With the ENTER option, parameters may also be passed to the user program in any of the following forms:

                         ---------------------------
                         |  (text) or PARM=(text)  |
                         ---------------------------
                         |  'text' or PARM='text'  |
                         ---------------------------
                         |  "text" or PARM="text"  |
                         ---------------------------
                         |      PARM=token         |
                         ---------------------------

In the first three forms, text may be any set of characters, including matched sets of parentheses, doubled quotes, or doubled apostrophes. The token in the last form may not contain any special characters other than #, $, or @.

3.2  LINK Input and Control Statements

LINK input may consist of complete object modules, load modules, and the LINK control statements detailed below. The user should note that no WYLBUR, MILTEN, or ORVYL commands may be included in LINK input.

The following LINK control statements provide much of the flexibility available with the OS Linkage Editor. Certain OS Linkage Editor functions (e.g., OVERLAY) are not supported under ORVYL LINK. Other functions familiar to OS Linkage Editor users have been modified, while still others have been added specifically to fill the special requirements of the ORVYL programmer.

The OS Linkage Editor allows the programmer to specify certain error diagnostics, processing, and space allocation options in the OS JCL. Similarly, ORVYL provides a control statement PARM that specifies certain global options prior to the processing of all other LINK input.

3.2.1  The PARM statement

must precede all other control statements in the LINK input. The following PARM options are currently available:

LINK control statements may not be placed within an object module. In several cases, the placement of control statements is restricted. The last paragraph of each section below indicates any restrictions. Control statements may be as many as 133 characters in length, but may not be continued from one line to the next. Blanks are used to separate operands in LINK control statements.

If a file contains an INCLUDE or other control statement that specifies a second filename, then the default USER and GROUP for the second file is taken from the first.

3.2.2  The ALIAS Statement

ALIAS specifies additional names for the output library member. As many as 16 aliases may be specified for one library member.

where symbol is defined as a control section, entry name, or alternate name for the program. When the program is executed by calling an ALIAS which is a control section or entry name, execution begins at the external name referenced.

An ALIAS statement must precede the NAME statement used to specify the member name.

3.2.3  The CHANGE Statement

CHANGE replaces an external symbol by the new symbol enclosed in parentheses following the external symbol.

where external-symbol may be a control section name, an entry name, or an external reference. New-symbol is the name to which the external symbol is to be changed.

A CHANGE statement must immediately precede either (1) the object module containing the external symbol to be changed or (2) the INCLUDE statement which specifies that object module.

3.2.4  The COMMENT Statement

COMMENT documents LINK processing. ORVYL logs all COMMENT messages at the user terminal as they are encountered in LINK input.

3.2.5  The ENTRY Statement

ENTRY specifies the symbolic name of the first instruction to be executed when the program is ENTERed or called by its module NAME.

where external-name is the name of an instruction, not a data name.

An ENTRY statement must precede the NAME statement for the module, if one exists.

3.2.6  The EXPAND Statement

EXPAND lengthens a control section or named common section by a specified number of bytes.

where name is the symbolic name of a common section or control section, the length of which is to be increased, and (xxxx) is the decimal number of bytes to be added to the length of the common section.

An EXPAND statement must immediately follow the object module which contains the control or common section to which it refers. If the module contains more than one section, then the named section must be the last one defined.

3.2.7  The INCLUDE Statement

INCLUDE specifies ORVYL files or LOADFILES that are to be sources of additional input for LINK. INCLUDE statements are processed in the order in which they appear in the input. Only one file or LOADFILE may be processed per INCLUDE statement.

where filename is the name of a file or LOADFILE to be used as an additional source of input. For a LOADFILE, at least one membername must be specified. Other files must be written in EDIT or CARD format.

3.2.8  The NAME Statement

NAME specifies the name of the program to be stored in a LOADFILE. Serves as a delimiter, allowing multiple program processing in a single pass.

where membername is the name to be assigned to the program created from the preceding input. (R) indicates that this program replaces an identically named module in the output LOADFILE. After a NAME statement has been processed, memory is automatically cleared for the next program. Once stored in a LOADFILE, the CALL command may be used to execute the stored program.

The NAME statement is placed after the last object module or control statement that is to be used for the program.

3.2.9  The PAGE Statement

PAGE aligns a control section or named common area on a 4K page boundary.

where common-area-name is the name of the common area to be aligned on a page boundary. Csectname is the name of the control section to be aligned on a page boundary. If no name is specified, then the next common or control section encountered in the input is aligned on a page boundary.

The PAGE statement must immediately precede either (1) the object module which defines the common area or control section or (2) the INCLUDE statement which specifies that object module.

3.2.10  The REPLACE Statement

REPLACE specifies one or more of the following:

 - Replacement of one control section with another.
 - Deletion of a control section.
 - Deletion of an entry name.

where csectname is the name of a control section. If csectname1 is used, the control section is deleted; if csectname2 is also specified, the first control section is replaced with the second. Entry-name is the entry name to be deleted.

The REPLACE statement must immediately precede either (1) the module containing the control section or entry name to be replaced or deleted or (2) the INCLUDE statement which specifies the module.

3.2.11  The LOADFILE Statement

LOADFILE specifies the LOADFILE in which the program is to be placed by a NAME statement following LINK processing. If this statement is not included in the LINK input, PROGLIB is the default LOADFILE.

where filename is the name of the LOADFILE member.

Note: If a number of programs are linked at the same time, the last named LOADFILE is assumed for each program.

The LOADFILE statement may be placed anywhere before the NAME statement.

3.2.12  The SYSLIB Statement

SYSLIB specifies an automatic call library for LINK processing. As many as eight libraries may be specified in separate SYSLIB statements.

where filename is the name of a LOADFILE.

The SYSLIB statement must precede the NAME statement for each program that is to make use of the automatic call libraries.

3.2.13  The ZAPNAME Statement

ZAPNAME identifies a CSECT in a load module that is to be modified by subsequent ZAPVER and ZAPREP control statements.

where csectname is the name of a previously defined control section.

3.2.14  The ZAPVER Statement

ZAPVER compares the contents of the control section defined by the ZAPNAME statement at a specified location with text supplied by the user.

where hex-offset is the hexadecimal displacement of the data to be inspected and text is supplied by the user for comparison with the data. The value of hex-offset must be between 0 and the length of the CSECT. Text may be a sequence of hexadecimal digits or a character string enclosed by quotation marks. Text data may not be separated by commas.

A ZAPVER statement must be preceded by a ZAPNAME statement.

3.2.15  The ZAPREP Statement

ZAPREP modifies data at a specified location in the control section previously defined by the ZAPNAME statement. User-supplied data replaces the currently defined contents.

where hex-offset is the hexadecimal displacement of the data to be modified and text is supplied by the user for replacement. The value of hex-offset must be between 0 and the length of the CSECT. Text may be a sequence of hexadecimal digits or a character string enclosed by quotation marks. Text data may not be separated by commas.

A ZAPREP statement must be preceded by a ZAPNAME statement.

3.3  LOADFILES

LINK output is stored in a load module library called a LOADFILE. A LOADFILE may contain any number of programs. Normally, only the Command Language Processor will be used to read and write LOADFILES.

Whenever a NAME statement is encountered in LINK input, a corresponding load module is stored in the user's LOADFILE. If the LINK input also contains a LOADFILE control statement (SEE Section 3.2), then the LOADFILE name is derived from that statement. If no output name was specified during LINK, ORVYL assigns output to PROGLIB, the default LOADFILE assigned each user. PROGLIB is created automatically when the user first creates a load module.

A LOADFILE maintains a directory that contains member and alias names. This directory is automatically extended as the need arises, subject only to the user's total ORVYL file space allocation. LOADFILE member and alias names, along with PARM controls specified during LINK, may be displayed with the SHOW PROGRAMS command.

where SHOW PROGRAMS displays member names, alias names, and corresponding PARM controls for the issuing user's PROGLIB. The option LIBRARY directs ORVYL to the specified loadfile for the display. The account-info options (see 2.2) identify a PROGLIB or LOADFILE created by another user. For example, SHOW PROGRAMS PUBLIC displays all the available ORVYL public programs in the public PROGLIB (ACCOUNT PUB$gg).

Programs contained in a LOADFILE or an entire LOADFILE may be deleted using the ERASE command:

When a member is deleted, all aliases for the member are also erased. Space formerly occupied by the member is returned to the file system.

If a "private" program is stored in a LOADFILE, any attempt to read or write the LOADFILE is precluded. (SEE the PRIV LINK control statement in Section 3.2.) User programs may not ATTACH a LOADFILE that contains a private program.

3.4  Loading ORVYL Programs

The CALL command allows direct execution for programs stored in a LOADFILE (created by LINK processing). For ease in debugging, a PAUSE option permits the user to load the program only. The GO command may then be employed to initiate execution. The EXIT command clears the loaded program from user memory.

3.4.1  The CALL Command

CALL initiates execution of the specified program. If the name is an external entry point as well as an alias, execution begins at the entry point.

Options:

                         ---------------------------
                         |  (text) or PARM=(text)  |
                         ---------------------------
                         |  'text' or PARM='text'  |
                         ---------------------------
                         |  "text" or PARM="text"  |
                         ---------------------------
                         |      PARM=token         |
                         ---------------------------

In the first three forms, text may be any set of characters, including matched sets of parentheses, doubled quotes, or doubled apostrophes. The token in the last form may not contain any special characters other than #, $, or @.

3.4.2  The SET ENTRY Command

SET ENTRY sets the entry point of the program to the specified symbol. SET ENTRY must be specified before the program is first entered.

The SHOW ENTRY command displays the current program entry point.

3.4.3  The GO Command

Used to begin execution after calling a program with the PAUSE option. See Chapter 4 for debugging commands you can issue before executing, including additional options on the GO command.

3.4.4  The ENTER Command

ENTER initiates execution of a program previously loaded with the LINK command. At ENTER, external symbols are resolved from libraries.

Options:

                         ---------------------------
                         |  (text) or PARM=(text)  |
                         ---------------------------
                         |  'text' or PARM='text'  |
                         ---------------------------
                         |  "text" or PARM="text"  |
                         ---------------------------
                         |      PARM=token         |
                         ---------------------------

In the first three forms, text may be any set of characters, including matched sets of parentheses, doubled quotes, or doubled apostrophes. The token in the last form may not contain any special characters other than #, $, or @.

3.4.5  The SHOW CORE Command

SHOW CORE displays a summary of the user's memory utilization.

3.4.6  The SHOW MAP Command

Displays all external symbols in alphabetical order, where options display the following information:

3.4.7  The EXIT Command

EXIT clears the user's program and detaches all input/output devices.

3.4.8  The SET REGION Command

ORVYL provides each user with a region of memory in which the program executes. The exact size of the memory allocated to each user is variable and can be changed with the SET REGION command. The default region is the maximum allowed.

nnnnK          specifies the size of the region in kilobytes.  This is the
               size of the user's work space, which may not be as high as the
               total available region space if a program is already loaded.

3.4.9  The SHOW REGION Command

This command shows the size of the Program and Work areas. The following is an example:

Program region: 11204K
Program area: 964K
   Work area: 10240K

3.5  Program Execution Control

Once execution has begun, the user can exert control over the program in several important ways. Command-driven programs allow the user to EXIT the problem program unconditionally. In addition, the program may also contain a facility that passes control to the Command Language Processor using the PAUSE macro. If, for example, the program is designed so that unrecognized commands are passed directly to the Command Language Processor, the PAUSE command can be employed to halt program execution and give control to CLP.

Using the ATTN or BREAK terminal key is a more direct means of control for problem programs. When a terminal is in output or idle mode, an ATTN is a request for a processing break. Control is passed to the user program's ATTN exit routine, if one exists. Otherwise, a session break is scheduled and control is passed to CLP. When the user program's ATTN exit routine is entered, the program should cease processing and request further instructions in the form of reading a command from the terminal. If the program does not issue a terminal read, a second ATTN passes control directly to CLP. Users should pause prior to the second ATTN to allow the program sufficient time to respond.

If the terminal is in input mode, an ATTN does not cause a session break. A user program may choose to ignore an ATTN on input and reprompt for input. For this case, a meta-ATTN, a single question mark followed by an ATTN, has been defined. On input, a single question mark followed by an ATTN always forces a session break.

To resume execution following a session break, the user may issue the GO or ATTN command. GO resumes execution at the point at which the program interrupt occurred. ATTN resumes execution at the user's attention exit routine, if one exists, and simulates an immediate ATTN upon program resumption.

3.5.1  The SET TIMER Command

The SET TIMER commands interrupts an ORVYL program at the specified time interval and displays the total program CPU time usage up to that point. "m" is seconds and "n" is tenths of a second. This command helps you keep track of how much CPU time an ORVYL program uses. To turn the timer off, use the command SET TIMER 0. The SHOW TIMER command displays the time set on the ORVYL timer.

3.6  General ORVYL Information

There are several commands available that provide general information about the ORVYL environment. These commands may be used at any time.

3.6.1  The SHOW VUSERS Command

The SHOW VUSERS command displays information about session activity for each user in ORVYL. The SHOW VUSERS commands returns: the session-id (Milten line number), account name, program name, I/O count and CPU time for each current ORVYL session. If you specify a Session ID, SHOW VUSERS returns this information for that session only.

To get the list of ORVYL users in your active file, type the command DUMP VUSERS.

3.6.2  The SHOW VINFO Command

The SHOW VINFO command displays general information about ORVYL. The following is an example:

ORVYL:
Started at 05:21:06 11/04/01 (01.308)
Number of CPUs = 3
Current real memory = 507M (192M min, 512M max)
User memory origin = 5M
0 CLP errors
Total Orvyl run time =    1 04:56:10.78
      Total CPU time =    0 07:06:04.71
    Charged CPU time =    0 05:46:26.40
   Dispatch CPU time =    0 00:15:21.64
I/O service CPU time =    0 00:03:22.93
File system I/O summary:
  Bitmap:      31969 cache reads,     23590 disk reads,     27974 disk writes
  Catalog:    201844 cache reads,     15588 disk reads,    823658 disk writes
  IXR:      78421467 cache reads,    114420 disk reads,   1396408 disk writes
  User:     31498626 cache reads,  10419340 disk reads,   3103556 disk writes
Individual files attached:       2152  high-water:       2167
Total user files attached:      88679  high-water:      88764
Total temp files attached:       1722  high-water:       1724
Total temp blocks in use:        8411  high-water:       8415
Designated file system for temporary files: ITS4K
File system cache summary:
  2K System cache: 13000 cache buffers
            78252012 lookups (78119068 in cache, 100%), 2324675 updates
  2K User cache: 34000 cache buffers
            41825907 lookups (31370569 in cache, 75%), 13385383 updates
  4K System cache: 1000 cache buffers
            536374 lookups (536212 in cache, 100%), 76743 updates
  4K User cache: 4000 cache buffers
            138748 lookups (128057 in cache, 92%), 184200 updates
(The SHOW VBLOCKS command gives additional info.)

3.6.3  The SHOW VBLOCKS Command

The SHOW VBLOCKS command displays general information about the ORVYL file systems. The following is an example:

GENERAL:   333436 blocks available  7929175 total 2K   987810 IOs  86.5% reduced
NSI:       408864 blocks available  7294841 total 2K  3909124 IOs  86.1% reduced
SOCRATES:  130880 blocks available  6026173 total 2K    15988 IOs  76.6% reduced
ITS:       456874 blocks available 11735179 total 2K  2446787 IOs  93.9% reduced
FIS:      2303086 blocks available 14906849 total 2K  6151809 IOs  85.8% reduced
SNAP:           6 blocks available  4557189 total 2K  1554288 IOs  36.9% reduced
OOD:       562389 blocks available  3171670 total 2K     9643 IOs  52.0% reduced
SDCACCT:   190748 blocks available   350553 total 2K       82 IOs
INFACCES:  207187 blocks available   311808 total 2K      247 IOs
ROUTE66:   317357 blocks available  2854503 total 2K   654794 IOs  81.5% reduced
ITS4K:     160003 blocks available   200316 total 4K   261337 IOs  71.7% reduced

3.6.4  The SHOW VGROUP Command

The SHOW VGROUP command displays the ORVYL file system information associated with the given two-character group-code. The following is an example:

3.6.5  The SHOW VSYS Command

The SHOW VSYS command displays a table of all shared programs. The following is an example:

Name     Users  Size  Origin    SPB       Program
DISPLAY      9   12K  00059000  01400000  ORV.GG.PUB.PROGLIB(DISPLAY)
OVAM         0   16K  000DC000  01400080  ORV.GG.PUB.VAMLIB(OVAM)
PRINTER      0   20K  00000000  01400100  ORV.GG.PUB.PROGLIB(PRINTER)
PSPIRES      9 1024K  81602000  01400180  ORV.GQ.PRD.PRIVLIB(SPIRES)
SPIRES    1633 1024K  81402000  01400280  ORV.GG.SPI.PROGLIB(SPIRES)
SPIBILD      0  512K  0005C000  01400300  ORV.GG.SPI.PROGLIB(SPIBILD)
PEMSDATA     0  112K  8180A000  01400480  ORV.GQ.EMS.PEMS.PROGLIB(PEMSDATA)
EMSDATA      0   20K  81702000  01400E80  ORV.GQ.EMS.EMS.PROGLIB(EMSDATA)

If the Origin is non-zero, then the program is currently loaded. If the Origin begins with 8, it is a 31-bit mode program, and may be loaded above the 16-meg line (above x'00FFFFFF').

3.6.6  The SHOW VSYM Command

The SHOW VSYM command displays a table of all shared symbols. The following is an example:

Program   Users  Value   Symbol
PEMSDATA   152  0180AB08 S7PEMS
                0181F148 S3<0010>GQ.EMS.EMSPROTOS<0005>PROTO<000B>PEMS.ACTIVE
                0181BBB0 S3<0010>GQ.EMS.EMSPROTOS<0005>PROTO<000A>PEMS.RMAUX
                01819960 S3<0010>GQ.EMS.EMSPROTOS<0005>PROTO<0007>PEMS.SM
                018178B0 S3<0010>GQ.EMS.EMSPROTOS<0005>PROTO<0007>PEMS.RM
                018171F8 S3<0010>GQ.EMS.EMSPROTOS<0005>PROTO<0004>PEMS
                01821228 S2GQ.EMS.PEMS.VERSION
                018212F0 S2GQ.EMS.PEMS.MSGVARS
                01820E38 S2GQ.EMS.PEMS.ADRVARS
                01820CA0 S2GQ.EMS.SETUP.VARS
                01816C90 S1<0006>GQ.EMS<0002>**<000B>PEMS.EXPAND
                01816890 S1<0006>GQ.EMS<0002>**<000C>PEMS.RESOLVE
                01811F00 S1<0006>GQ.EMS<0002>**<000D>PEMS.READAUX2
                0180E388 S1<0006>GQ.EMS<0002>**<000D>PEMS.READAUX1
                0180B108 S1<0006>GQ.EMS<0002>**<000C>PEMS.READMSG
EMSDATA    153  0170436A S6EMS DISTRIBUTION
                0170430A S6EMS NAME INDEX
                01703858 S5ORV.GQ.EMS.DIRECTORY.<02>
                017037A8 S5ORV.GQ.EMS.DIRECTORY.<0B>
                01702B08 S5ORV.GQ.EMS.DIRECTORY.<01>
                01703FA8 S4ORV.GQ.EMS.DIRECTORY.<FF>

4  Debugging Programs Under ORVYL

4.1  Session Breaks

A Session Break occurs when a user program is interrupted during execution. In a Session Break, control is returned to the ORVYL Command Language Processor. A Session Break may be initiated by the user at his terminal, by the user program, or by a user program error. During a Session Break, any ORVYL command may be used to display or modify program status. The user program may prevent modification of the WYLBUR active file during a Session Break. The following table describes the Session Break types.

4.2  Reentering User Programs

The user may resume program execution from a session break by issuing the GO or ATTN command. The GO command returns control to the user's program, resuming execution at the point at which the interrupt occurred. The ATTN command returns control to the user's program, but simulates an interrupt before the next instruction.

4.2.1  The GO Command

The GO command begins program execution or resumes it following a session break. If a TO location is not specified, execution continues at the point where the program interrupt occurred.

Options:

4.2.2  The ATTN Command

The ATTN command resumes program execution following a session break, starting execution at the program's exit routine, if one exists. In effect, it simulates an immediate ATTN upon program resumption.

Options:

4.3  Obtaining User Program Information

ORVYL provides a number of program diagnostic commands for use during a Session Break. Employing these commands, the user may display

 - The contents of a core location.
 - A summary of the user's memory utilization.
 - The contents of the program registers.
 - The contents of floating-point registers.
 - The current program status word.
 - The contents of registers saved at the last interrupt.
 - The program status word saved at the last interrupt.
 - Established program traps.
 - The value of an expression.

In each of the following commands, the SHOW form causes the specified information to be displayed at the terminal. You can substitute DUMP for SHOW to cause the specified information to be appended to the user's WYLBUR active file.

4.3.1  The SHOW CORE Command (SC)

Displays the contents of the specified core location. If no location is specified, prints a summary of the user's program area utilization. [See 4.4.] for a definition of expression. The MATCH option instructs ORVYL to search for a hexadecimal expression or string over the range from the starting address to an ending address. The REPEAT option causes it to go to the next occurrence of the match value.

4.3.2  The SHOW ADDRESS Command (SA)

Displays the value of the specified expression in decimal and hexadecimal representation. [See 4.4.] for a definition of expression.

4.3.3  The SHOW GPR Command (SG)

Displays the contents of the specified general register or range of general registers. If no registers are specified, ORVYL reports the contents of all registers (0-15).

4.3.4  The SHOW FPR Command (SF)

Displays the contents of the specified floating-point register or range of floating-point registers. If no registers are specified, ORVYL reports the contents of all floating-point registers.

4.3.5  The SHOW PSW Command (SP)

Displays the user program status word. The FORMAT option displays the various fields within the PSW.

4.3.6  The SHOW SAVEGPR Command (SSG)

Displays the contents of the range of general registers saved at the last interrupt. If no registers are specified, ORVYL reports the contents of all interrupt general registers (0-15).

4.3.7  The SHOW SAVEPSW Command (SSP)

Displays the program status word saved at the last interrupt or most recently modified by a PATCH SAVEPSW command. The FORMAT option displays the various fields within the PSW.

4.3.8  The SHOW ALL Command

Displays the user program status word (PSW), the contents of all general and floating-point registers, SAVEGPRS, SAVEPSW, information on memory utilization, and the program map. The option NOCORE suppresses memory utilization information; NOMAP suppresses the program map.

4.4  Modifying User Programs

The ORVYL debugging commands below permit the user to modify program status during a Session Break. A general expression, as employed below, may be replaced by any one of the following quantities:

 - An external name in the program MAP. The value substituted for the external name  is  the
 address associated with that name.
 - A decimal integer. Decimal integers may be whole numbers only; that is, they begin with a
 non-zero digit and contain no decimal points.
 - A hexadecimal integer. A valid hexadecimal integer consists of the numbers  0-9  and  the
 letters A-F, and begins with a zero digit (0).

The arithmetic operators +, -, *, and / may be employed in general expressions. As in FORTRAN, the arithmetic operators * and / take precedence. Parentheses may also be used to control the order of evaluation in a general expression.

ORVYL supports seven expression notations with special meanings:

Note: A register-expression must be evaluated as a valid program register. A location-expression is any expression which evaluates to a valid program address. A hexadecimal-expression must consist of only hexadecimal digits, and need not begin with a zero (0).

4.4.1  The PATCH CORE Command (PC)

Changes the value at the specified core location. The VERIFY option causes ORVYL to abort the patch if the string does not match the current contents of the location. If neither VERIFY nor NOVERIFY is specified, ORVYL indicates the previous value of the patched location. The NOVERIFY option causes this message to be suppressed.

4.4.2  The PATCH GPR Command (PG)

Changes the value of the specified general register.

4.4.3  The PATCH FPR Command (PF)

Changes the value of the specified floating-point register. The value patches from left to right within the register.

4.4.4  The PATCH IA Command (PIA)

Changes the user instruction address.

4.4.5  The PATCH PSW Command (PP)

Modifies the specified bytes of the user program status word. See Section 5 for a definition of the user program status word.

4.4.6  The PATCH SAVEGPR Command (PSG)

Alters user interrupt register to the value of the specified expression.

4.4.7  The PATCH SAVEIA Command (PSIA)

Alters user interrupt instruction address to the value of the specified expression.

4.4.8  The PATCH SAVEPSW Command (PSP)

Alters the specified bytes of the user interrupt program status word to the value of the specified hexadecimal expression.

4.5  Setting Program Traps

The user may cause a Session Break at a predetermined point in program execution by setting a program trap. A Session Break occurs after execution of the instruction located at the trap address.

When the user sets a program trap, ORVYL assigns the trap an index number. This index is displayed at the terminal and must be used to later reference the trap.

NOTE: ORVYL does not permit program traps to be set on an SVC instruction, on any location other than on a halfword boundary, or on a location already specified as a trap.

4.5.1  The SET TRAP Command (ST)

Establishes a program trap at the specified location. ORVYL indicates the trap index number assigned.

4.5.2  The SHOW TRAPS Command (STS)

Displays the index number and location(s) of all program traps currently enabled as well as the first halfword of the instruction trapped at each location.

4.5.3  The CLEAR TRAP Command (CT)

Clears the program trap defined at the specified index position.

4.5.4  The CLEAR TRAPS Command (CTS)

Clears all defined program traps.

4.6  ORVYL Program Event Recording and Monitoring

ORVYL supports program event recording (PER) and monitoring, two tools helpful in program debugging. Program event recording detects (1) successful execution of a branch instruction, (2) changes in the contents of specified general registers, (3) an instruction fetch from specified main-storage location(s), and (4) changes in the contents of specified main-storage location(s). Program monitoring permits detection of selected MONITOR CALL instructions as they are encountered in the user program.

Program event recording may be invoked by specifying a PER control block in the program or by issuing the SET EVENT command at the terminal. Monitoring is initiated by setting a program monitor mask or with the SET MONITOR command.

4.6.1  Program Event Recording (Program Control)

The user program controls those conditions that are considered events for recording purposes; it can specify one or more events to be detected. When a specified event does occur, control passes to the user's PANIC exit routine. Information identifying the event type is passed to the exit routine in register 15.

Control information for program-event recording is contained in a 12-byte control block provided by the user program.

PER Event Masks -- Bits 0-3:

When a bit is one (1), the corresponding event is monitored; when a bit is zero, the event is not monitored.

PER General Register Masks -- Bits 16-31:

Specify which general registers are monitored for content alteration. These 16 bits correspond one-to-one to the 16 general registers in ascending order. When a bit is one (1), the register is monitored for alteration; when zero, the register is not monitored.

PER Starting Address -- Bits 8-31:

Contains the beginning address for the main storage area to be monitored.

PER Ending Address -- Bits 8-31:

Contains the ending address for the main storage area to be monitored.

Program event recording may be enabled by specifying (1) a PANIC exit routine and (2) a PER control block with a non-zero event mask. The PANIC exit routine and PER control block are specified by the SET 7 and SET 17 supervisor operations, respectively.

When PER is enabled and a specified program event takes place, an interrupt occurs and the PANIC exit routine is entered. The PER code and PER address are written in register 15. Bits 0-3 contain the PER code (event type); bits 8-31 contain the PER address of the instruction which caused the event.

Programming Note: Program event recording is controlled by the PANIC bit in the PSW mask byte. When the PANIC bit is zero, a program event does not cause an interrupt. The user should note that the PANIC bit is set to zero whenever a user exit is entered.

4.6.2  Program Event Recording (SET EVENT Command)

The SET EVENT command causes a session break whenever specified program events occur in the user program. All program events to be recorded must be specified with a single SET EVENT command.

SET EVENT cancels the effect of any previous SET EVENT command. A SET EVENT command is aborted if the user program has already established a program event control block. The CLEAR EVENT command disables program event recording. The SHOW EVENT command displays the SET EVENT command currently in effect, if any.

4.6.3  Program Monitoring (Program Control)

When the user program has set a PANIC exit routine (SET 7) and a non-zero monitor mask (SET 18), MONITOR CALL instructions pass control to the PANIC exit routine and place monitor information in register 0.

The monitor mask is contained in a 4-byte control block provided by the user program. Bits 16-31 of the monitor control block correspond one-to-one to monitor classes 0-15. Any number of monitor mask bits may be on at any one time.

The contents of bits 8-15 of the MONITOR CALL instruction constitute the monitor class number. The address specified by the B1 and D1 fields of the instruction forms the monitor code.

When a MONITOR CALL instruction is processed and the corresponding monitor mask is one, a monitor interrupt occurs. At the interrupt, the monitor code number (bits 0-7) and the monitor code (bits 8-31) are returned in register 0.

4.6.4  Program Monitoring (SET MONITOR Command)

The SET MONITOR command may be used to selectively cause a session break upon execution of a MONITOR CALL instruction.

SET MONITOR cancels any previous SET MONITOR command. The SET MONITOR command is aborted if the user program already employs the MONITOR exit feature. The CLEAR MONITOR command disables program monitoring. Any MONITOR CALL instruction executes as a NOP following a CLEAR MONITOR command. The SHOW MONITOR command displays the SET MONITOR command setting currently in effect, if any.

Programming Note: Program monitoring is controlled by the PANIC bit in the PSW mask byte. When the PANIC bit is zero, a MONITOR CALL instruction executes as a NOP and does not cause an interrupt. The user should note that the PANIC bit is set to zero whenever a user exit is entered.

Technical information on program event recording and monitoring are available in the OS/390 Principles of Operation, IBM Publication SA22-7201.

5  ORVYL Supervisor Services

ORVYL offers the programmer a broad range of supervisor services at the assembly language level. ORVYL macro instructions allow the programmer to exercise control over system activities and facilities in each of the following areas:

 - Terminal input and output
 - WYLBUR input and output
 - ORVYL file input and output
 - ORVYL file access privileges
 - User program management

When assembled, each macro instruction expands into one or more executable machine instructions. The generated instructions load the program-specified parameters into the appropriate registers and issue a supervisor call instruction (SVC). Returns from the SVC instruction are then loaded in the appropriate registers by the supervisor; all registers not altered by the SVC remain unchanged. In general, error conditions are indicated by the value returned in register 15.

The catalogued macro library SYS3.ORVYL.UMACLIB includes the prototypes for all macros described in Section 5. To assemble ORVYL programs, the user may either employ the standard catalogued procedure ASMORVYL or write the appropriate JCL for calling the assembler with the above macro library.

The catalogued procedure ASMORVYL is a copy of the standard ASMC procedure in which those DD cards that reference standard VS macro libraries are replaced by one DD card that references the ORVYL macro library. When assembling ORVYL programs for use under the ORVYL File Batch Access Method (VAM/390), the BATCH macro must always be invoked before calling any other ORVYL macros. The BATCH macro initializes the assembly for expansion of all succeeding ORVYL macros to be processed under VAM. See Section 6 for a description of the File Batch Access Method (VAM/390).

NOTE: ORVYL employs registers 0, 1, 14, and 15 to pass macro parameters. Unlike OS/VS2, a supervisor save area in register 13 need not be provided under ORVYL.

5.1  Input and Output Protocols

Input and output to an ORVYL device occurs under the following general I/O protocol, where a device is defined as a file, terminal, or other device enabled for use under WYLBUR/MILTEN/ORVYL. To make use of an ORVYL device, that device must first be attached by the program (SEE ATTACH macro). Each request for input or output (READ, WRITE, etc.) is normally followed by the WAIT instruction. A WAIT must always be issued prior to another request which employs the same device. (SEE WAIT macro). WAIT coordinates competing demands for input and output service and provides the user program with concurrent computing and input/output capabilities. When processing is complete, the programmer detaches the device, relinquishing control to other potential users.

Most every user program request for input/output occurs in the following sequence. The user program

 - issues the SVC to perform the input/output operation;
 - checks the return code to detect whether or not the operation has begun;
 - if operation has not begun, performs error processing;
 - if operation has begun, issues a WAIT SVC for the input/output operation;
 - checks the return code from WAIT to detect whether or not the  operation  has  successfully
 completed;
 - if operation is not successful, performs exception processing;
 - if operation is successful, continues with next program task.

In general, a return of zero from the input/output SVC and the WAIT SVC indicates that the operation has begun or that the operation is successful, respectively.

5.2  Terminal Input and Output

ORVYL provides two terminal communication protocols, one providing line-by-line input and output, the other servicing display terminals. Display input and output services allow the ORVYL programmer to converse with display terminal devices connected to ORVYL through MILTEN with a PDP-11 front-end system. Two terminal modes are available when using display terminals, 2741 MODE and DISPLAY MODE. 2741 MODE recognizes the device for line-by-line input and output. DISPLAY MODE I/O allows full screen input and output, providing the ability to format the screen using multiple prompts. Existing ORVYL programs can operate with display devices in 2741 MODE with no program changes.

The ORVYL macro CONTROL 21 allows the ORVYL program to sense the terminal type and characteristics. Conditions set by macros CONTROL 2 (SET TABS), CONTROL 8 (embedded control character in column 1), and CONTROL 26 (NEWLINE) are ignored when MODE=DISPLAY.

DISPLAY MODE I/O allows three additional READ options, all of which are totally dependent upon those features available on the particular display device being used. The SUPPRESS option removes trailing blanks from READ data fields and adds a field terminator character. The SCREEN option returns the entire contents of the display face as READ data when the user types SEND ENTER or RETURN. The IMMEDIATE option returns data in the mode specified without any intervention by the user.

5.2.1  Control Codes for Display Input and Output

When the user program prepares a buffer containing data for transmission to the display terminal, the EBCDIC character codes presented in the table below should be placed in the buffer to control positioning on the screen. These symbolic definitions are provided in the ORVYL macro DSPCODES. Legal abbreviations for the following EQU values is shown in parenthesis preceeding the description.

            Control Character Definitions for MODE=DISPLAY

                        OUTPUT CODES

    CURSRET  EQU   X'0D'   (CR)     Back up cursor to start of line

    ERASLINE EQU   X'3C'   (EL)     Erase line, cursor to end

    LINEFEED EQU   X'25'   (LF)     Move cursor down one line

    CURSDOWN EQU   X'25'   (CD)     Same as LINEFEED

    NEWLINE  EQU   X'15'   (NL)     ERASLINE - CURSRET - LINEFEED

    CURSUP   EQU   X'1B'   (CU)     Move cursor up one line

    CURSFOR  EQU   X'2B'   (CF)     Non-destruct cursor space

    CURSBACK EQU   X'16'   (CB)     Non-destruct cursor backspace

    BACKSPAC EQU   X'16'   (BS)     Same as CURSBACK

    CURSHOME EQU   X'12'   (HC)     "Home" cursor (line 0, co. 0)

    TAB      EQU   X'05'   (HT)     Jump to next input field

    BACKTAB  EQU   X'3B'   (RT)     Backup to previous input field

    ERASCREN EQU   X'1C'   (ES)     Clear screen and CURSHOME

    ERASDATA EQU   X'1D'   (EU)     Clear unprotected fields only

    STARTUNP EQU   X'1F'   (SU)     Write following data unprotected

    STARTPRO EQU   X'19'   (SP)     Write following data protected

    BELL     EQU   X'2F'   (BEL)    Ring console alarm

    IDLE     EQU   X'17'   (IL)     Null timing character

    CURSADDR EQU   X'11'   (AC)     Jump cursor (followed by 2 data
                                    bytes - line no., col. no.)

                         INPUT CODES

    FIELDSEP EQU   X'22'   (FS)     End-of-field for SUPPRESS option

5.3  WYLBUR Input and Output

The ORVYL macros which allow a user program to communicate with WYLBUR can be grouped into three categories: (1) those macros which allow the user program to read or write the WYLBUR active file employing terminal I/O services, (2) those macros which allow the user program to pass commands to WYLBUR, ORVYL, and MILTEN, and (3) those macros which allow the user program to employ WYLBUR text-editing facilities.

5.3.1  The WYLBUR Active File as an Extension of the Terminal

A user program can read or write the contents of the WYLBUR active file by designating a MODE=TEXT option for the terminal READ and WRITE macros. These forms are called READ TEXT and WRITE TEXT macros. To read the active file, the program specifies an input area which will receive active file data, the format in which WYLBUR is to pass the data, and a line number or associative range which specifies the data to be passed. The available formats are analogous to those format options which a user may specify in a WYLBUR USE or LIST command.

To write data to the active file, the program issues a WRITE macro with the TEXT option. This macro specifies an output area which contains the data, a format indicator which instructs WYLBUR on how to interpret the data, and an operation specification which indicates whether the data is to be used to delete, replace, or insert lines in the active file.

In addition, ORVYL CONTROL macros are available for the following purposes:

 - Report the number of lines in the active file.
 - Obtain the line number of the first line in the active file.
 - Detect the line number of the last line in the active file.
 - Delete the contents of the active file.
 - Instruct WYLBUR to type a given line of the active file to the terminal.
 - Sense the user's option settings in WYLBUR.
 - Set and report the WYLBUR mode word.

The WYLBUR mode word is a collection of flags which affect processing of macro calls and controls issued by the user program. The PREST/UNPREST flag indicates whether data is to be passed in a compressed or uncompressed form. For READ TEXT and WRITE TEXT macros, the PREST/UNPREST flag is the only mode word flag that affects input and output.

5.3.2  Command Passing and Prompting at the Terminal

A user program can utilize MILTEN, WYLBUR, and ORVYL command processing as an extension of program command processing by using one of the following macros:

 - COMMAND
 - WRITE EDIT (Terminal WRITE macro with MODE=EDIT option)
 - MILCOM
 - READ EDIT (Terminal READ macro with MODE=EDIT option)

These four macros, in conjunction with the terminal READ TEXT and WRITE TEXT options, eliminate the need for developing editing capabilities or duplicating code in each user program. These macros add the entire command language capability of all interactive systems to the user program. The user who does not wish to utilize extended program command processing must process all terminal input/output within the program.

In considering which of the above macro calls, if any, are to be employed, the programmer should consider the control he wishes to exert over command prompting at the terminal and over interactive systems command processing. In general, to control all command prompting and processing by an interactive system (e.g., all WYLBUR or all ORVYL commands), the programmer employs the COMMAND, WRITE EDIT or MILCOM macro calls to selectively pass those commands not recognized by the user program to the desired interactive system. To specifically assign WYLBUR the task of command prompting and processing, the programmer employs the READ EDIT macro call. Under READ EDIT, WYLBUR processes those commands that it recognizes and passes unrecognized commands to the user program.

Using the COMMAND macro, a program specifies the area containing a command string and indicates that the command string is to be passed until recognized either by all systems (WYLBUR, MILTEN, and ORVYL) or by some combination of systems.

Alternatively, the program may issue a WRITE EDIT macro, specifying the the area which contains a command string. The command string is then passed only to WYLBUR and MILTEN for processing. To limit command processing to MILTEN only, the program issues the MILCOM macro.

Both of the above macros can be employed by a program for (1) the processing of program generated commands or (2) the processing of unrecognizable commands received in response to a normal terminal READ command issued by the program. Both macros give the program the ability to utilize the full power of MILTEN, WYLBUR, and ORVYL command processing to augment program functions.

Issuing the READ EDIT macro causes control of the terminal to be relinquished to WYLBUR for both command prompting and command processing. Control returns to the user program whenever the user enters a command at the terminal that is not recognized by WYLBUR. The program may then process the command if it is able to, issue the COMMAND macro which instructs ORVYL and MILTEN to attempt processing, write an error message to the terminal, or any combination of the above.

When using the READ EDIT and WRITE EDIT macros, WYLBUR mode word flags define what types of changes to the active file are to be allowed.

The following flags may be set:

WYLBUR issues an error message at the terminal whenever it receives a command blocked by a mode word flag. Under WRITE EDIT, control is immediately returned to the user program following an error message. For READ EDIT, WYLBUR prompts again and retains control.

In addition, an INFORM flag may be set to indicate that the user program must be informed of all changes as they take place. When this flag is set, WYLBUR returns changes to the user program on a line-by-line basis unless the command causing the changes is a USE, FETCH or COPY command. In those cases, WYLBUR will return as many lines as will fit into that input area specified by the user program in the READ EDIT macro call. Since most WYLBUR commands can change more than one line in the active file, the program must continue to issue successive READ EDIT macros in order to process all changes.

If the user does not wish program command prompting to be resumed automatically by WYLBUR once all changes associated with a single command have been reported, the CHANGES option can be included with the EDIT option on each READ EDIT call. The CHANGES option causes WYLBUR to report changes as described above; however, once all changes for a particular command have been reported, WYLBUR returns control of the terminal to the user program instead of retaining control of the terminal and issuing a new command prompt.

When using READ EDIT with the WYLBUR mode word set to cause reporting of changes, two additional macros are available to control the processing sequence between the user program and WYLBUR. These are (1) an "abort" macro to stop any pending, unreported changes in a READ EDIT sequence and (2) a "grant permission" macro to quarantee that the user program only processes information which has been reported.

5.4  ORVYL Memory Management

Under ORVYL, a user's virtual memory is managed in an address space divided into pages. An ORVYL page consists of 4096 bytes of memory. Each page begins at an address which is a multiple of 4096. (In hexadecimal representation, decimal 4096 is 01000; thus, any address which ends in three zeros is a multiple of 4096.)

The ORVYL supervisor sets an upper limit on the total number of pages which can be made available to each user program at any one time. Within this general constraint, ORVYL permits the user program to reserve that number of pages actually required to complete the program task, as well as to release pages whenever they no longer are needed for the program.

5.4.1  Reserving and Releasing ORVYL Pages

The user begins each session with a null and undefined ORVYL memory. A null memory condition means that no ORVYL pages have yet been reserved for the user's program. Such a null memory condition also occurs whenever an EXIT SVC is processed or the EXIT command is typed at the terminal.

In order to make use of ORVYL memory, a sufficient number of pages must first be explicitly or implicitly reserved. Any attempt by an ORVYL program to make use of memory addresses on pages which have not been reserved results in a program error.

When the user instructs ORVYL to load a program for execution (see the discussion on program loading in Section 3), the ORVYL loader automatically reserves a sufficient number of pages to accomodate the program. This address space then remains reserved until the program terminates execution.

During execution, the user program may request additional memory for the program work area. Using the SET 14 supervisor operation, the program specifies the amount of memory required. When this request can be satisfied, ORVYL reserves the necessary number of pages and returns the initial address to the executing program.

The executing program may make any number of memory requests subject only to ORVYL's overall limit on the number of pages available to each program. An optional form of the SET 14 macro allows the program to request that the largest possible program work space be reserved.

Programs may release all or part of previously reserved memory with the SET 15 macro. Any attempt by an ORVYL program to release pages which were not reserved results in a program error. The ability to release does not extend to memory reserved by the ORVYL loader.

Since the SET 15 macro releases memory in page units, the release request should always specify a page boundary as the starting address and a memory length that is a multiple of the page size (4096). Release requests which overlap a fractional part of a page cause the entire page to be released.

5.4.2  Defining ORVYL Page Contents

Once an ORVYL page has been reserved, the contents of that page must next be defined. ORVYL considers a page to be defined as soon as the user program stores information in it. Whenever the contents of a particular page are no longer required, the user program should act to free the contents of that page. Designed for this purpose, the SET 1 supervisor operation frees the contents of a page without releasing it from the program's addressable memory. Timely use of this feature reduces paging activity, the total use of auxiliary memory, and virtual memory charges.

The SET 2 macro advises the paging supervisor of those pages which have become inactive but ought to remain defined. This macro helps the paging supervisor find those pages which may be best removed to auxiliary memory for a period while other pages are brought into real memory.

The SET 0 macro permits the user program to define more than one page in a single operation. Used mainly by the ORVYL loader, this feature ensures that uninitialized large arrays and common areas are always defined at the point of program entry.

5.5  Exit Routines

The following table summarizes the types of exit routines which ORVYL allows the programmer to establish, with a description of that event which causes exit routine entry.

5.5.1  Register Contents upon EXIT Routine Entry

5.5.2  INTERRUPTION CODES

A MONITOR CALL interrupt or program exception may occur simultaneously with a PROGRAM EVENT interrupt. If a PROGRAM EVENT occurs, PER information is returned in register 15; if a MONITOR CALL occurs, monitor information is returned in register 0.

When a program interruption occurs, the program status word (PSW) and registers are saved in the supervisor save area. The exit routine may sense the save area using an ORVYL macro. The mask byte is set to zero upon exit routine entry.

5.5.3  SAVE AREA FORMAT

         BYTE(S)                   CONTENTS

      ¬  0-1                       Interruption code
      ¬
      ¬  2       Bits 0-1          Instruction length code
      ¬               2-3          Condition code
ORVYL ¬               4-7          Program mask
      ¬
 PSW  ¬  3       mask byte         Bit 0 1=Timer exit enabled
      ¬                                1 1=ATTN exit enabled
      ¬                                2 1=WAIT exits enabled
      ¬                                3 1=PANIC exit enabled
      ¬
      ¬  4-7                       Instruction address

         8-71                      General registers 0-15

When the exit routine has performed all the tasks assigned to it, the exit routine transfers control using an ORVYL macro. ORVYL will use the original save area to resume program execution unless the program specifies use of a modified copy of the original save area.

5.6  Macro Coding and Symbol Conventions

Each of the macro instructions below is described in the following format:

 - Macro instruction general form
 - Purpose
 - Operands
 - Returns

In the general form, the macro name appears in uppercase letters and may be coded directly. Operands are presented in lowercase letters and are described individually in the operands section. Operands enclosed in square brackets are optional elements in the macro instruction. The brackets are not coded in the macro instruction. Macro parameters are positional. When an option is omitted for a particular instruction, a comma must be coded in its place. The applicable register for each operand is listed in parentheses directly below the operand. In general, the registers used by ORVYL macros (i.e., registers 0, 1, 15, 14) are loaded in the order in which parameters are specified. Return values for affected registers from both the macro expansion and WAIT are listed in the returns sections.

An operand presented in the form xxx-la indicates that the address may be coded in either explicit or implied form. The macro will expand to execute a load address (LA) instruction and load the parameter register indicated in parentheses with the address. If an address already exists in a register, the operand may be written as an absolute expression enclosed in parentheses. The macro will expand to execute a load register (LR) instruction to load the parameter register from the register specified by the expression. If the address is already in the parameter register, the expression should consist of the register number expressed as a decimal integer.

An operand written in the form xxx-l or xxx-lh operates the same as la , but a load (L) or load half-word (LH) instruction is generated in place of the LA instruction.

The user may specify the instruction used to load a parameter register by prefixing the operand by LA:,L:,LH:,or IC: or by enclosing a register operand in parentheses. The table below shows the code generated by the macro expansion for each form of specification.

Whenever MODE is specified as part of a macro call, one or more operands may be complemented by the macro expansion. In order to avoid error, specified operands must be non-negative. Unless the operand registers are specifically modified by the supervisor routines, ORVYL returns complemented registers to their uncomplemented state before passing control to the user program.

5.6.1  Macro Expansions

5.7  General Device Control

5.7.1  ATTACH: Attaching Devices and Files

Purpose:

Makes a device available for use by a program. See ATTACH under each device type for further information.

5.7.2  DETACH: Detaching Devices and Files

Purpose:

Specifies that an attached device is no longer required by the program and that this device will not be used again until another ATTACH macro is issued.

Operands:

Returns:

Returns from WAIT:

No registers changed.

5.7.3  WAIT: General Synchronization

Purpose:

Suspends program execution until the current operation on the specified device is completed. Every operation must be followed by WAIT before another request to that device can be initiated.

Operands:

Returns:

SEE the values returned for specific operations.

5.8  Terminal Input/Output and Control

5.8.1  ATTACH (1): Attaching User Terminal

Purpose:

Attaches the terminal which began the session.

Returns:

Returns from WAIT:

WAIT is optional when attaching the terminal.

5.8.2  READ: Terminal Input

Purpose:

Reads a line of input from the terminal. A prompt may be specified, as well as a message to precede the prompt. A maximum response time from the terminal may also be specified (TIME-OUT feature). Specifying a TIME-OUT on READ does not affect operation of any other timer set by the program (i.e., those enabled by the SET 3 and SET 4 macros).

Operands:

If a prompt and/or message text is specified, the area must contain an output line and a prompt in the following format:

Note: If message text is specified, ORVYL appends a Carriage Return to the line.

Returns from READ:

Returns from WAIT:

5.8.3  WRITE: Terminal Output

Purpose:

Writes a line of output to the terminal.

Operands:

Returns:

Returns from WAIT:

Note: Unless CONTROL 25 has been set, ORVYL appends a Carriage Return to lines transmitted to the terminal.

5.8.4  READ,MODE=DISPLAY: Display Terminal Input

Purpose:

Reads either a set of responses to prompts or the contents of the scope face at the completion of the READ. With the exception of the immediate option, a maximum response time may be specified (TIME-OUT feature). A set of fields is contained in "outbuf", each of which describes a write count, a prompt count, a read count, write text and prompt text. These fields are used to create a display on the scope face and to define unprotected and protected spaces on the scope face. Protected spaces are defined by write and prompt data, while those unprotected spaces into which the terminal user may type his responses are defined by the read counts.

Operands:

Returns from READ:

Returns from WAIT:

For READ MODE=DISPLAY, a sufficiently large return area must be specified in order to return the requested data. If no options are specified, the sum of the "r" lengths is sufficient. For the suppress trailing blank option, the number of "r" length fields must be added to the sum of the "r" lengths to ensure a sufficient return area. In any case, if the return area is too small, data will be discarded.

5.8.5  WRITE,MODE=DISPLAY: Display Terminal Output

Purpose:

Writes data to the scope face. No options apply in this mode.

Operands:

Display control characters may be interspersed with write data. The member 'CODES' in SYS3.ORVYL.UMACLIB may be used to obtain definitions for a number of commonly used control characters. See section 5.2.1 for a list of these codes.

Returns:

Returns from WAIT:

NOTE:

No Carriage Return is appended to the output buffer when transmitted to the display terminal. The program includes screen formatting instructions in the output buffer.

Core storage in ORVYL is divided into pages of 4096 bytes each. A buffer area must begin on a double-word boundary and may not cross more than one page boundary. If a page boundary is crossed the buffer must extend at least 8 bytes on the second page. Thus, a buffer of 4096 bytes or less may begin on any double-word. A buffer of 6144 bytes may begin as much as 2048 bytes from the beginning of a page, while an 8192-byte buffer must begin on a page boundary. For maximum efficiency buffers of 4096 bytes or less should reside on a single page.

5.8.6  CONTROL (0-1): Page Eject and Spacing

Purpose:

Controls page eject and spacing on the terminal with no other data transmission. Ignored when MODE=DISPLAY.

Operands:

Returns:

Returns from WAIT:

5.8.7  CONTROL (2-3): Setting Tabs

Purpose:

Sets tabs on the terminal.

Operands:

Returns:

Returns from WAIT:

5.8.8  CONTROL (4-6): Terminal Input Translation

Purpose:

Controls translation of all terminal input. Affects both direct input to an ORVYL program and input to WYLBUR.

Operands:

Returns:

Returns from WAIT:

5.8.9  CONTROL (7-9): Carriage Control

Purpose:

Controls page eject and spacing on the terminal based on the first character of each output line transmitted to the terminal after the CONTROL macro is issued. CONTROL (7-9) ignored when MODE=DISPLAY.

Operands:

Returns:

Returns from WAIT:

5.8.10  CONTROL (21): Reading Terminal Characteristics

Purpose:

Provides current information about the user terminal and the current session.

Operands:

Returns:

Returns from WAIT:

NOTE: The TTYP macro may be used without parameters to establish labels for referencing returned data. If no parameters are specified, all labels are prefixed with the mnemonic TTYP. If another prefix is desired, the user can code 'PFX=string', where 'string' is a 1 to 4 character label in the operand field. This string is used as the label prefix.

5.8.11  CONTROL (22-24): ATTN Session Break

Purpose:

Forces the occurrence of a Session Break if the user types ATTN to terminate output or to interrupt computing. Facilitates the debugging of programs that have ATTENTION exits.

Operands:

Returns:

Returns from WAIT:

5.8.12  CONTROL (25-27): NEWLINE Carriage Return

Purpose:

Controls the automatic carriage return (NEWLINE) supplied at the conclusion of a normal terminal WRITE. CONTROL 25 suppresses the automatic carriage return; CONTROL 26 reenables automatic carriage returns. In addition, the NEWLINE status set by CONTROL 25 or reset with CONTROL 26 may be sensed with CONTROL 27.

Operands:

Returns:

Returns from WAIT:

Notes:

When the automatic NEWLINE function is suppressed, successive WRITE operations cause all output to be printed on a single line. A NEWLINE character (X'15') must be included in the data stream in order to initiate a new physical line.

A WRITE with NEWLINE suppressed followed by a READ operation unlocks the terminal following the last character of the WRITE text.

5.8.13  CONTROL (28): Obtain DELTA from Wylbur

Purpose:

Obtain DELTA from Wylbur.

Operands:

Returns:

Returns from Wait:

Note: DELTA is returned as an integer with 1 representing 0.001

5.9  WYLBUR Input/Output and Control

5.9.1  WYLBUR PREST Format

The term 'WYLBUR PREST format' refers to that type of WYLBUR internal text storage which compresses text strings by removing multiple blanks. The use of this format generally reduces the space required to store character data. The ORVYL programmer has the option of receiving or sending active file data in this format when requests are made to WYLBUR.

Associated with each prest line is a length count. Since prest lines have all blanks removed, a line composed of only blank characters is defined by a length count of zero (0).

Lines that contain at least one non-blank character also contain "blank/non-blank" count bytes. A "blank/non-blank" count byte is divided into two half-bytes; the first half-byte is the "blank" count and the second half-byte is the "non-blank" count. Each non-blank character string in the line is preceded by a "blank/non-blank" count, indicating how many blanks preceded the non-blank (first half-byte), and the length of the non-blank string (second half-byte). The non-blank character string follows this "blank/non-blank" count byte. This pattern is repeated until the length count associated with a given prest line is exhausted.

The length count at the beginning of each prest line is the sum of the number of "blank/non-blank" count bytes plus the number of non-blank characters contained in the line. If a blank string in the unprest line exceeds 15 characters in length, successive "blank/non-blank" count bytes occur. If a non-blank string exceeds 15 characters in length, count bytes are inserted between each sub-string of 15 non-blank characters.

5.9.2  CONTROL (12): Setting the WYLBUR Mode Word

Purpose:

Sets the WYLBUR mode word, directing WYLBUR in its processing of READ TEXT, WRITE TEXT, READ EDIT and WRITE EDIT calls. This setting remains in effect for all subsequent WYLBUR requests or until another CONTROL 12 is issued.

Operands:

Returns:

Returns from WAIT:

5.9.3  CONTROL (13): Reading the WYLBUR Mode Word

Purpose:

Returns the current setting of the WYLBUR mode word.

Operands:

Returns:

Returns from WAIT:

5.9.4  CONTROL (14): Detecting the WYLBUR Active File Size

Purpose:

Reports the current size of the WYLBUR active file.

Operands:

Returns:

Returns from WAIT:

5.9.5  CONTROL (15): Obtaining the First WYLBUR Line Number

Purpose:

Reports the line number of the first line in the active file.

Operands:

Returns:

Returns from WAIT:

5.9.6  CONTROL (16): Obtaining the Last WYLBUR Line Number

Purpose:

Reports the line number of the last line in the active file.

Operands:

Returns:

Returns from WAIT:

5.9.7  CONTROL (17): Deleting the WYLBUR Active File Contents

Purpose:

Deletes the current WYLBUR active file contents.

Operands:

Returns:

Returns from WAIT:

5.9.8  CONTROL (18): Aborting a Command in Progress in WYLBUR

Purpose:

Aborts any READ EDIT or WRITE EDIT command processing which is in progress in WYLBUR. A CONTROL 18 issued under other processing control is ignored.

Operands:

Returns:

Returns from WAIT:

NOTE:

A CONTROL 18 abort request is issued by the supervisor whenever a Session Break occurs for any reason. Since the program cannot control when these events occur, a CONTROL 20 permission request should be issued each time a changed line in a READ EDIT input area is about to be processed.

When a CONTROL 18 is issued, all command processing and changes reporting is aborted. If the user program is processing a multiple line buffer containing changes (READ EDIT, return code 8) when the abort occurs, all lines in that buffer for which no permission has been obtained (CONTROL 20) will be deleted from the active file.

5.9.9  CONTROL (19): Output From the WYLBUR Active File to the Terminal

Purpose:

Causes WYLBUR to type one line of the active file at the terminal.

Operands:

Returns:

Returns:

5.9.10  CONTROL (20): Obtaining Permission to Process Changed Lines

Purpose:

For a program using READ EDIT with the INFORM flag on, ensures that a changed line returned in a READ EDIT buffer with return code 8 still exists in the active file. If an abort should occur during processing of a READ EDIT multiple line buffer (return code 8) by the user program, WYLBUR deletes those lines contained in the buffer from the active file. Control 20 ensures that a line is retained in the active file and notifies the user program that an abort has occurred.

Operands:

Returns:

Returns from WAIT:

5.9.11  READ,MODE=TEXT: Reading the WYLBUR Active File

Purpose:

Reads lines from the WYLBUR active file and places them in the user program area in one of several available formats.

Operands:

Returns:

Returns from WAIT:

For option codes 0/6, text will be returned in PREST or UNPREST format according the the setting of the PREST flag in the WYLBUR mode word in effect at the time of the READ TEXT call. For option codes 200/206 and 300/306, the PREST flag in the WYLBUR mode word is ignored and text is always returned unprest.

For option codes 3/6, 103/106, 203/206, 303/306 and 403/406, as many lines will be read as can be accomodated in the area as long as the total number of lines requested or the ending line number is not exceeded. For these codes, reading begins with the first line number equal to or greater than the starting line number. To read the entire active file, specify zero (0) as the starting line number. After each returned buffer has been processed, add one (1) to the last line number read and issue another READ TEXT until all lines have been read or use the -1 value in bytes 5/8.

5.9.12  WRITE,MODE=TEXT: Writing to the WYLBUR Active File

Purpose:

Writes or deletes specific lines in the WYLBUR active file.

Operands:

Returns:

Returns from WAIT:

If register 15 returns a value of 12, 16, 20, 24 or 28, no indication that lines were either truncated or longer than the WYLBUR length option will be provided. Such a condition, however, does not cause the write to be canceled.

With codes 0, 1, and 2, text will be interpreted in PREST or UNPREST format in accordance with the current setting of the PREST flag in the WYLBUR mode word. For codes 4, 5, and 6, the setting of the PREST flag in the WYLBUR mode word is ignored and text is assumed to be UNPREST.

With disposition code 4, lines can only be appended to the active file. Each LRECL bytes will be used to create a new line. If the number of bytes is not an exact multiple of LRECL, register 15 will return the value 24 and a non-zero residual byte count will be returned in register 1. If the active file is empty, the line will be assigned the WYLBUR line number 1.000. If lines exist new lines will be assigned a line number which is the sum of the highest existing line number and the current WYLBUR delta value.

For disposition code 5, each 80-byte length is used to form a new line. The contents of positions 73/80, which must be valid WYLBUR line numbers, are used to number the line and insert it into the active file. If the number of bytes is not an exact multiple of 80, register 15 will return the value 24 and a non-zero residual byte count will be returned in register 1.

5.9.13  READ,MODE=EDIT: Allowing WYLBUR to Issue Command Prompts

Purpose:

Permits the program to relinquish control of the terminal to WYLBUR for command prompting and processing until an unrecognized command is entered from the terminal or, optionally, until a command is entered which causes changes to the active file.

Operands:

Returns:

Returns from WAIT:

The following returns will only occur if the INFORM flag is on in the WYLBUR mode word and the command being processed is causing changes to the active file.

Illegal commands are returned one at a time in UNPREST format. All other returns listed occur only if the INFORM flag of the WYLBUR mode word is on.

When the INFORM flag is on, the following guide lines are applicable to the changes being reported:

 - The text for changed lines is returned in either PREST or UNPREST  format  in  accordance
 with the PREST flag setting in the WYLBUR mode word.
 - If the NONUM flag is not set in the WYLBUR mode word, the NUMBER command will be allowed,
 but the changes in line numbers will not be reported.
 - The user at the terminal may not issue a DELETE which specifies disjoint ranges. He  must
 enter one command for each range to be deleted.
 - The program may stop both the command  in  progress  and  all  reporting  of  changes  in
 "mid-stream"  either explicitly or inadvertently by issuing a request to WYLBUR
 other than READ EDIT.  A Session Break has the same effect upon a  command  in  progress.
 - For return codes 4, 12, 16, and 20, if the command causing the changes affects more  than
 one  line,  each line will be reported one line at a time as soon as the line is changed,
 regardless of the specified size of the receive area.  Before  changing  the  next  line,
 WYLBUR will wait for another READ EDIT request.
 - On return code 8, WYLBUR will pass on each successive READ EDIT request as  many  changed
 lines  as  will  fit  in  the  program  input area until all changes have been exhausted.

Before attempting to process a line in the input buffer, the user program should first issue a CONTROL 20 "permission" request. When permission is granted, the program is assured that the change reporting sequence has not been aborted due to a program panic or Session Break.

 - When the command causing changes is the ALIGN or JUSTIFY command, each line to  be  split
 is  first  reported  as  a line which has been deleted, (return code 24), and on the next
 READ EDIT request,  the  new  aligned  or  justified  lines  are  reported  as  "not
 typed-inserted" lines (return code 8).

NOTE: In this form of READ EDIT, the user program receives no indication that all changes associated with a command have been reported. The next READ EDIT may cause WYLBUR to prompt the user for a new command. The user who wishes notification that all changes for a given command have been completed should use READ EDIT CHANGES.

5.9.14  READ,MODE=(EDIT,CHANGES): Editing the WYLBUR Active File

Purpose:

Allows the user program to receive control of the terminal once all changes to the active file caused by one command have been reported by WYLBUR.

Specifications are identical to those described for READ EDIT, except that a new return code is received by the user program. This return code indicates that all changes to the active file caused by a previous command have been completed.

Operands and Returns:

All identical to those of READ MODE=EDIT.

Additional return from WAIT:

NOTE:

This READ EDIT option may also be employed when a return code of 8 is issued on the WAIT following a WRITE EDIT request. A return code of 8 indicates that the INFORM flag in the WYLBUR mode word is on; the command passed with the WRITE EDIT will cause changes to the active file. This option allows the program to obtain changes via the READ EDIT mechanism without giving up control of the terminal once all changes caused by the command passed in the WRITE EDIT are reported.

5.9.15  WRITE,MODE=EDIT: Passing WYLBUR and MILTEN Commands

Purpose:

Passes a command to WYLBUR and MILTEN for execution.

Operands:

The last 31 bits of the code-la register are reserved.

Returns:

Returns from WAIT:

WARNING: If a return code 8 from WAIT is followed by any command to WYLBUR other than a READ EDIT or READ EDIT with CHANGES, then the changes to the active file will be aborted.

5.9.16  MILCOM: Passing Commands to MILTEN Only

Purpose:

Passes a string to MILTEN to be used as the text for a WTO to the operator's console or as a command to be executed directly by MILTEN.

Operands:

Returns:

Returns from WAIT:

5.10  ORVYL File Input/Output and Control

5.10.1  ATTACH (2): Attaching ORVYL Files

Purpose:

Requests the use of a file.

Operands:

Returns:

The valid file identifier is returned in register zero (0) when the return in register 15 is 0, 4, 8 or 12.

Returns from WAIT:

5.10.2  READ: Reading File Blocks

Purpose:

Reads a data block from a file.

Operands:

Returns:

Returns from WAIT:

Note: The number of bytes read will be no greater than the length of the area. If a block written using less than 2048 bytes is read, another block will not be read, regardless of the total size of the area. Contents of the area specified, but not filled, remain undefined. See 5.10.3 for core storage restrictions.

5.10.3  WRITE: Writing File Blocks

Purpose:

Writes a data block to a file.

Operands:

Returns:

Returns from WAIT:

NOTE: Core storage in ORVYL is divided into pages of 4096 bytes each. A buffer area must begin on a double-word boundary and may not cross more than one page boundary. If a page boundary is crossed the buffer must extend at least 8 bytes onto the second page. Thus, a buffer of 4096 bytes or less may begin on any double-word. A buffer of 6144 bytes may begin as much as 2048 bytes from the beginning of a page, while an 8192 byte buffer must begin on a page boundary. For maximum efficiency, buffers of 4096 bytes or less should reside on a single page.

5.10.4  CONTROL (0): Creating File Blocks

Purpose:

Creates a file data block of undefined content.

Operands:

Returns:

Returns from WAIT:

5.10.5  CONTROL (1): Deleting a File Block

Purpose:

Deletes a file data block.

Operands:

Returns:

Returns from WAIT:

5.10.6  CONTROL (2): Deleting a Range of File Blocks

Purpose:

Deletes a range of file data blocks.

Operands:

Returns:

Returns from WAIT:

5.10.7  CONTROL (3): Testing for the Existence of a File Block

Purpose:

Tests for the presence of a file block.

Operands:

Returns:

Returns from WAIT:

5.10.8  CONTROL (4): Obtaining the File First Block Number

Purpose:

Reports the first block number in the file.

Operands:

Returns:

Returns from WAIT:

5.10.9  CONTROL (5): Obtaining the File Last Block Number

Purpose

Reports the last block number in the file.

Operands:

Returns:

Returns from WAIT:

5.10.10  CONTROL (6): Obtaining the Total Number of File Blocks

Purpose:

Reports the total number of blocks in the file.

Operands:

Returns:

Returns from WAIT:

5.10.11  CONTROL (7): Writing an Updated File Index

Special Note:

This control now does nothing. All file indexes are automatically updated when necessary. It is only kept for backward compatability.

Purpose:

Updates the index for the file. Ensures that all file updates are retained in case of system error.

Operands:

Returns:

Returns from WAIT:

5.10.12  CONTROL (8): Erasing and Renaming Files

Purpose:

Erases or renames files. This macro may be used to erase or rename a file only if the file is not attached with MODE=SHARE. The file is detached only if it is successfully scratched, otherwise it remains attached. A DETACH following a successful scratch will result in an error.

Operands:

Returns:

Returns from WAIT:

5.10.13  CONTROL (9): Assigning Account Level File Privileges

Purpose:

Assigns and withdraws access privileges for a file. Changes in file access privileges for any user do not affect that user if the file is attached when the change is made. If user is not specified, then the FILEMASK is altered. Only the file owner may alter the FILEMASK.

Operands:

Returns:

Returns from WAIT:

5.10.14  CONTROL (10): Assigning PUBLIC File Privileges

Purpose:

Assigns and withdraws the access privileges for a file to all valid terminal users. Changes in PUBLIC access privileges may only be made by the file owner. If the file was attached MODE=SHARE, a change to public privileges will not affect those users attached to the file when the change was made.

Operands:

Returns:

Returns from WAIT:

5.10.15  CONTROL (11): Reading File Access Privileges

Purpose:

Reports the FILEMASK and PUBLIC access privileges for a file. If the issuer is the file owner or a user with EXTEND privileges, also reports all other users with access to the file as well as the access privileges each user enjoys. Otherwise, only the owner, PUBLIC, and issuing user privileges, if any, are reported.

Operands:

Returns:

Returns from WAIT:

Privileged users will be reported until the specified area is filled.

5.10.16  CONTROL (12): Setting SHARE ONLY Mode for ATTACH Macro

Purpose:

Specifies that a file may or may not be attached only with MODE=SHARE. Changes in the SHARE ONLY ATTACH condition may only be made by the file owner. The SHARE ONLY condition may be specified even when the file is currently attached (not MODE=SHARE); in this case, SHARE ONLY takes effect after the file is next detached.

Operands:

Returns:

Returns from WAIT:

Note: SHARE ONLY prevents exclusive file use, but does not prevent file updating by a program using the RESERVE and RELEASE macros.

5.10.17  CONTROL (13): Sensing SHARE ONLY Mode for ATTACH Macro

Purpose:

Senses the ATTACH condition for a file.

Operands:

Returns:

Returns from WAIT:

5.10.18  CONTROL (14): Setting the File Format Field

Purpose:

Writes the file format field (4 bytes) in the file directory entry for the specified file. This field may be employed by any user program, but is used primarily by the Command Language Processor to retain the format (e.g., EDIT,CARD,LRECL,etc.) in which the file is stored. WRITE access privilege is required in order to modify the file format field.

Operands:

Returns:

Returns from WAIT:

Format in (15) (4 bytes):

5.10.19  CONTROL (15): Sensing the File Format Field

Purpose:

Retrieves the file format field (4 bytes).

Operands:

Returns:

Returns from WAIT:

Format in (1) (4 bytes):

5.10.20  CONTROL (16): Setting a File's CLP/NOCLP Condition

Purpose:

Sets the CLP/NOCLP condition for a file. If NOCLP is set, the terminal user cannot ERASE, PUT, RENAME, SET PERMIT, SHOW FILES ERASE, or DEFLATE the specified file. Only the file owner may set or reset this condition.

Operands:

Returns:

Returns from WAIT:

5.10.21  CONTROL (17): Sensing a File's CLP/NOCLP Condition

Purpose:

Senses the CLP/NOCLP condition set for a file.

Operands:

Returns:

Returns from WAIT:

5.10.22  CONTROL (18): Setting a File's CLP Only Condition

Purpose:

Sets the CLP only condition for a file. If set, only CLP can ERASE, PUT, RENAME, SET PERMIT, SHOW FILES ERASE, or SHRINK the specified file. Only the file owner may set or reset this condition.

Operands:

Returns:

Returns from WAIT:

5.10.23  CONTROL (19): Sensing a File's CLP Only Condition

Purpose:

Senses the CLP only condition for a file.

Operands:

Returns:

Returns from WAIT:

5.10.24  CONTROL (20): Sensing a File Type

Purpose:

Sense a file type (non-indexed or normal).

Returns:

Returns from WAIT:

5.10.25  CONTROL (21): Setting SPIRES Only

Purpose:

Set SPIRES only.

Returns:

Returns from WAIT:

5.10.26  CONTROL (22): Sensing SPIRES Only

Purpose:

Sense SPIRES only mode.

Returns:

Returns from WAIT:

5.10.27  CONTROL (23): Sensing file block size

Purpose:

Sense the file block size (2K or 4K).

Returns:

Returns from WAIT:

5.10.28  CONTROL (24): Obtain maximum file size in blocks

Purpose:

Obtain maximum file size in blocks.

Returns:

Returns from WAIT:

5.10.29  CONTROL (25): Convert to hybrid file

Purpose:

Convert the file to a hybrid file. Any file type can be converted, including converting a hybrid file to a larger hybrid file. Count must be large enough to contain the current file size.

Returns:

Returns from WAIT:

5.11  ORVYL File Status and Reserve/Release

5.11.1  STATUS (0): Assigning Global File Access

Purpose:

Assigns and withdraws global file access privileges for all files owned by a user. Changes made in access privileges do not affect access to any files in use at the time the change is made.

Operands:

Returns:

Returns from WAIT:

5.11.2  STATUS (1): Assigning Global PUBLIC Access

Purpose:

Assigns and withdraws global file access for all the files owned by a user to all validated terminal users. Changes in PUBLIC access may only be made by the file owner.

Operands:

Returns:

Returns from WAIT:

5.11.3  STATUS (2): Reading File Names, Creation Date, and Last Use

Purpose:

Reports the names, creation dates and last reference dates of a user's files. Files are reported in alphabetical order. Only permitted users may list file names of other users.

Operands:

Returns:

Returns from WAIT:

File names will be reported until the area is filled.

5.11.4  STATUS (3): Detecting Account Level Access Privileges

Purpose:

Reports privileged users as well as the access privileges each user is assigned. Users are reported in alphabetical sequence. Only the file owner and users with EXTEND privileges may report other users. Users without EXTEND privileges may sense only their own access privileges.

Operands:

Returns:

Returns from WAIT:

Users will be reported until the area is filled.

5.11.5  STATUS (4): Obtaining Current Space and Usage Statistics

Purpose:

Reports the space allocated to and the current space usage of a user. Only permitted users may report space status.

Operands:

Returns:

Returns from WAIT:

5.11.6  STATUS (5): Extend a Non-IXR File

Purpose:

Extends a Non-IXR file by adding blocks to the end if enough contiguous blocks happen to be available. It reports how many blocks would be possible to extend the file if the requested amount is not possible. These blocks are not reserved however so even these might no longer be available if one does not act quickly.

Operands:

Returns:

Returns from WAIT:

5.11.7  STATUS (6): Allocating a Non-IXR File

Purpose:

Allocate a Non-IXR file (Non-indexed file).

Operands:

Returns:

Returns from WAIT:

5.11.8  STATUS (7): Allocating a Hybrid File

Purpose:

Allocate a Hybrid file (Consecutive IXR file).

Operands:

Returns:

Returns from WAIT:

5.11.11  Reserved STATUS macros

The following STATUS macros are reserved for systems programmers only. They can be used for the development of utilities or for testing system changes.

5.11.11.1  STATUS (100): Create a new account

Purpose:

Creates a new account for the file system designated by the group code part of the account being created.

Operands:

Returns:

Returns from WAIT:

5.11.11.2  STATUS (101): Delete an account

Purpose:

Deletes an account from the file system designated by the group code part of the account being deleted.

Operands:

Returns:

Returns from WAIT:

5.11.11.3  STATUS (102): Reset space allowed

Purpose:

Resets the maximum count of blocks that can be used by the account.

Operands:

Returns:

Returns from WAIT:

5.11.11.4  STATUS (103): List accounts

Purpose:

Lists the accounts in a file system, sorted alphabetically.

Operands:

Returns:

Returns from WAIT:

Output area = 14 bytes for each account listed:

The output area will be filled with accounts until it is full or the last account in the file system has been listed. If the start account is blank, the list will start from the first account in the file system.

5.11.11.5  STATUS (104): Reset space use

Purpose:

Resets the space used for an account. This may be necessary in the event of an Orvyl failure causing a space update to be lost.

Operands:

Returns:

Returns from WAIT:

See the FBAL command which uses this macro.

5.11.11.6  STATUS (105): Delete file catalog entry

Purpose:

Deletes a file catalog entry without releasing blocks. This may be necessary if a file becomes corrupted and the blocks can not be released normally. The blocks referenced by the deleted entry become lost blocks which then can be reclaimed. Note that the blocks allocated for the account is not updated.

Operands:

Returns:

Returns from WAIT:

5.11.11.7  STATUS (106): Read real block

Purpose:

Reads a real block from a file system. This function is used in testing system changes or for reparing damaged records. This macro can be used when the file system is otherwise unavailable.

Operands:

Returns:

Returns from WAIT:

5.11.11.8  STATUS (107): Set pseudo account

Purpose:

Sets the file access account to the account specified instead of the logged on account or to clear previously set pseudo account

Operands:

Returns:

Returns from WAIT:

5.11.11.9  STATUS (108): Set file system access mode

Purpose:

Sets the file system access mode (read/write, read only, no access)

Operands:

Returns:

Returns from WAIT:

5.11.11.10  STATUS (109): Write real block

Purpose:

Writes a real block to a file system. This function is used in testing system changes or for reparing damaged records. This macro can be used when the file system is otherwise unavailable.

Operands:

Returns:

Returns from WAIT:

5.11.11.11  STATUS (110): Update file start block in catalog

Purpose:

Udates the start block number in the catalog for a file entry. This can be used to relocate a file.

Operands:

Returns:

Returns from WAIT:

5.11.11.12  STATUS (111): Read catalog entry

Purpose:

Reads the catalog entry for an account or file. This is usefull to determine the first block of a file for use with STATUS 106 or testing sytem changes. Catalog entry formats are described by the NTRY dsect.

Operands:

Returns:

Returns from WAIT:

5.11.11.13  STATUS (112): Get file system id and name

Purpose:

Given file system id or name, return both.

Operands:

Returns:

Returns from WAIT:

The output buffer will contain a one byte id followed by the eight byte name.

5.11.11.14  STATUS (113): Convert group to file system id

Purpose:

Given group code, return file system id and name.

Operands:

Returns:

Returns from WAIT:

The output buffer will contain a one byte id followed by the eight byte name.

5.11.11.15  STATUS (114): Get file system/group table

Purpose:

Moves the file system/group table to the output area. Returns the count of file systems so that the table can be interpreted.

Operands:

Returns:

Returns from WAIT:

5.11.11.16  STATUS (115): Read real block header

Purpose:

Reads a real block header from a file system. This function is used in testing system changes. This macro can be used when the file system is otherwise unavailable. The block header format is described by the FBHDR dsect.

Operands:

Returns:

Returns from WAIT:

5.11.11.17  STATUS (116): Get a contiguous range of blocks

Purpose:

Gets a contiguous range of blocks from a file system. Note that a count of one block can be specified.

Operands:

Returns:

Returns from WAIT:

5.11.11.18  STATUS (117): Suspend program execution

Purpose:

Suspends program execution for time interval specified in 0.1 second increments.

Operands:

Returns:

Returns from WAIT:

The timer starts as soon as the STATUS SVC is issued. The program will receive control back from WAIT as soon as the time has expired or immediately if the timer had already expired before the WAIT was issued.

5.11.28  RESERVE: Obtaining Exclusive File Control

Purpose:

Obtain exclusive control of a file which is attached with MODE=SHARE.

Operands:

Returns:

Returns from WAIT:

5.11.29  RELEASE: Relinquish Exclusive File Control

Purpose:

Relinquishes exclusive control previously obtained by RESERVE.

Operands:

Returns:

Returns from WAIT:

5.12  SUZAN Path Input/Output

5.12.1  ATTACH (4): Creating and Opening a SUZAN Path

Purpose:

Requests the creation and opening of a SUZAN path. For further information on SUZAN, see the User's Guide to SVCCOM. (SVCCOM is the development system for SUZAN.)

Operands:

Returns:

The path identifier is valid only when register 15 is 0.

Returns from WAIT:

Note: The attention exit for a PATH device will be entered whenever any activity (partner close, new transaction, discretionary post, etc.) is noted.

5.12.2  READ: Receiving a Message Using a SUZAN Path

Purpose:

Reads a message from a SUZAN path.

Operands:

Returns:

Returns from WAIT:

Note: Core storage in ORVYL is divided into pages of 4096 bytes each. A buffer area may not cross more than one page boundary. Thus, a buffer of 4096 bytes or less may begin on any byte; a buffer of 6144 bytes may begin as much as 2048 bytes from the beginning of a page; and an 8192-byte buffer must begin on a page boundary. For maximum efficiency buffers of 4096 bytes or less should reside on a single page.

5.12.3  WRITE: Sending a Message Using a SUZAN Path

Purpose:

Writes a message across a SUZAN path.

Operands:

Returns:

Returns from WAIT:

Note: Core storage in ORVYL is divided into pages of 4096 bytes each. A buffer area may not cross more than one page boundary. Thus, a buffer of 4096 bytes or less may begin on any byte; a buffer of 6144 bytes may begin as much as 2048 bytes from the beginning of a page; and an 8192-byte buffer must begin on a page boundary. For maximum efficiency buffers of 4096 bytes or less should reside on a single page.

5.13  User Program Control

5.13.1  COMMAND: Executing a Subsystem Command

Purpose:

Passes a command to the ORVYL Command Language Processor for execution. The MODE=WYLBUR option also allows passing of the command to WYLBUR or other subsystems for execution. The MODE=NOCLP option blocks command processing by the ORVYL Command Language Processor.

Operands:

Returns:

NOTE:

Since there are no means of reporting changes in the WYLBUR active file to the user program when using the COMMAND macro, WRITE,MODE=EDIT should be used whenever the program requires notification of changes to the active file.

5.13.2  EXIT: Returning Control to the Command Language Processor

Purpose:

Returns control from a user program to the ORVYL Command Language Processor and clears the contents of user memory.

Returns:

Does not return to the user program.

5.13.3  PAUSE: User-Initiated Session Break

Purpose:

Initiates a Session Break. If, during the Session Break, the user enters a GO command, control will return to the instruction which immediately follows the PAUSE. Entering the ATTN command causes entry to the user's attention exit routine. The condition code and registers are preserved when the PAUSE macro is issued. All, however, may be changed by the user during the Session Break. In addition, the user may specify the address at which execution is to resume.

5.13.4  PANIC: Program or System Initiated Session Break

Purpose:

Used when an error condition is detected by a user program. PANIC causes a Session Break, unless a PANIC exit routine has been specified by the user.

Operands:

Returns:

No registers are changed, unless the user did so during the Session Break. The user may modify the address at which execution resumes.

A PANIC exit routine, if present, may cause resumption of main program execution at some point other than immediately after the PANIC macro call and may change register values.

5.13.5  SET (0-2): Address Space Management

Purpose:

Advises the supervisor of the areas of the program address space which

 - will be needed soon.
 - are no longer needed.
 - not needed immediately, but still of use.

Operands:

Returns:

5.13.6  SET (3-4): Setting the Time Interval

Purpose:

Sets the user's real or compute time interval timer. The timer is continuously decremented in either real or compute time. The user's timer exit routine is entered when the timer reads zero. The timer continues to decrement until reset.

Operands:

Returns:

5.13.7  SET (5-9): Establishing Program Exit Routines

Purpose:

Establishes the entry point of the specified exit routine.

Operands:

Returns:

5.13.8  SET (10): Resuming Program Execution From an EXIT Routine

Purpose:

Issued by an exit routine, relinquishes control so that program execution may resume. Returns control to the point of interruption. The condition code, mask byte, and registers are preserved unless the user modifies the supervisor save area.

Operands:

Returns:

Execution resumes at location indicated by the PSW address contained in the specified area. See section 5.14.11 and 5.5 for more information.

5.13.9  SET (11): Setting the Mask Byte

Purpose:

Sets the mask byte to enable or inhibit entry into exit routines.

Operands:

Returns:

5.13.10  SET (12): Setting Order-of-Service Priority

Purpose:

Specifies order-of-service priority.

Operands:

Returns:

5.13.11  SET (13): Modifying the Contents of the Communications Area

Purpose:

Modifies the user or subprocessor communications area. This 16-byte area is separate from any user program space and may be used by the program in any manner. Each user program is assigned an individual communications area; each subprocessor maintains a single communications area for all users of that subprocessor.

Operands:

Returns:

No registers changed.

5.13.12  SET (14): Reserving Additional Virtual Memory

Purpose:

Reserves memory for program work space.

Operands:

Returns:

5.13.13  SET (15): Releasing Virtual Memory

Purpose:

Releases memory from the program work space.

Operands:

Returns:

5.13.14  SET (16): Reserving Virtual Memory by Specific Address

Purpose:

Reserves memory for the program work space at a specific address within the limits of the work space (SEE the description of the SENSE 2 macro). An attempt to reserve pages not contained in the proper range or to reserve pages already reserved is a program error.

Operands:

Returns:

5.13.15  SET (17): Enabling Program Event Recording

Purpose:

Enables program event recording and allows specification of those events that cause an interruption. To disable program event recording, the programmer specifies a PER control block with a zero (0) event mask or a zero value in register 1.

Operands:

Returns:

5.13.16  SET (18): Enabling Program Monitoring

Purpose:

Enables monitoring and allows specification of the monitor mask. Monitoring may be disabled by specifying a zero (0) monitor mask or a zero value in register 1.

Operands:

Returns:

5.13.17  SET (19): Protecting Memory Areas

Purpose:

Precludes modification of the contents of a specified area in memory by the program or by input/output operations. The memory area to be specified must be reserved and defined.

Operands:

Returns:

Note: The supervisor manages storage in pages of 4096 bytes each. If a page contains any part of the area specified in the SET macro, the request applies to the entire page. If any part of the area is not defined the protection operation is aborted without processing any succeeding pages.

5.13.18  SET (20): Cancelling Memory Area Protection

Purpose:

Cancels memory protection enabled by SET 19.

Operands:

Returns:

Note: The supervisor manages storage in pages of 4096 bytes each. If a page contains any part of the area specified in the SET macro, the request applies to the entire page. If any part of the area is not defined the protection operation is aborted without processing any succeeding pages.

5.13.19  SET (21): Synchronizing Cooperating ORVYL Programs (ENQUEUE)

Purpose:

Provides a mechanism for obtaining exclusive control of a logical resource. No two programs may simultaneously use the same logical resource name. At the user's option, the program may be suspended until the required logical resource is available.

Operands:

Returns:

Note: No specific format for resource names is defined or enforced. Cooperating users must define their own conventions. Only one logical resource at a time may be enqueued by each terminal.

5.13.20  SET (22): Synchronizing Cooperating ORVYL Programs (DEQUEUE)

Purpose:

Releases exclusive control over a previously enqueued resource.

Operands:

5.13.21  SET (23): Setting the Memory Initialization Value

Purpose:

Sets the 1-byte value used to clear all newly defined virtual memory pages.

Operands:

5.13.22  SET (24): Set Program Name

Purpose:

Reset the program name to something other than the name of the program originally called.

Operands:

Returns:

5.13.25  SET (29): Suspend Program Execution

Purpose:

Suspend program execution for specified short time interval, not to exceed 10 seconds. See STATUS 117 to suspend a program for a longer time.

Operands:

5.13.26  SET (30): Define new shared symbol entry

Purpose:

Define new shared symbol entry name and associated data area. Such symbols remain in effect until the shared program is reloaded. Typically, a shared program that makes use of SET 30 defines a lot of symbols and associated data areas. These are static tables of information that are of value to other programs, but are not directly linked into those programs. SENSE 30 of the symbol name will return the associated data area address, which is how programs access the static tables.

Operands:

Returns:

Examples:

The SHOW VSYMBOLS command (or DUMP VSYMBOLS) will provide a complete list of the symbols, their associated data area value, count of users referencing them, and program name that defined them. A sample of SHOW VSYMBOLS follows:

Note that unprintable characters are allowed in symbol names, but are shown in hexadecimal surrounded by brackets, such as <01>.

5.13.28  Reserved SET macros

The following SET macros are reserved for systems programmers only. They can be used for the development of utilities or for testing system changes.

5.13.28.1  SET (150): Clear pseudo account

Purpose:

Clears pseudo account (see STATUS 107).

Returns:

5.13.28.2  SET (151): Ignore multiple attentions

Purpose:

Ignores multiple attentions.

Operands:

Returns:

5.13.28.3  SET (152): Set CLP real time (interval) timer

Purpose:

CLP only. See M1SERV and CLP code.

Operands:

Returns:

5.13.28.4  SET (153): Set CLP compute time timer

Purpose:

CLP only. See M1SERV and CLP code.

Operands:

Returns:

5.13.28.5  SET (154): Write an SMF record

Purpose:

Write an SMF record.

Operands:

Returns:

5.13.28.6  SET (155): Set Program Key Mask

Purpose:

Write an SMF record.

This function can be used to allow addressability to Orvyl global memory. It is recommended to use SENSE 153 unless it is necessary to have real time access to global memory.

Operands:

Returns:

5.13.29  WAIT (0): Suspending Program Execution While Awaiting Interrupts

Purpose:

Allows a program to suspend execution while awaiting the expiration of a time interval, ATTN, or I/O completion.

Returns:

Control is never passed to the instruction following WAIT 0. The user program should define the timer, ATTN, and/or WAIT exit routine(s) which are to receive control. The exit routine is responsible for altering the saved program address if execution is to resume at some other point. See sections 5.14.11, 5.13.8, and 5.5 for more information.

5.14  User Program Information

5.14.1  SENSE (0): Reserved Address Space Status

Purpose:

Reports on the status of the specified location in the program reserved address space.

Operands:

Returns:

Note: The supervisor manages storage in pages of 4096 bytes each. Thus the status reported refers to the entire page in which the specified location resides.

5.14.2  SENSE (1): Work Area Management Statistics

Purpose:

Obtains program work area management statistics.

Returns:

5.14.3  SENSE (2): Virtual Memory Address Space Limits

Purpose:

Describes the memory address range from which program work area is reserved.

Returns:

5.14.4  SENSE (3): Current Time and Date

Purpose:

Reports today's date and the current clock time.

Returns:

5.14.5  SENSE (4): Elapsed Time

Purpose:

Reports real and compute time since the beginning of the current terminal session.

Returns:

5.14.6  SENSE (5): Time Interval Currently in Effect

Purpose:

Reports the amount of time remaining in the current time interval as established by the user.

Returns:

5.14.7  SENSE (6): Mask Byte

Purpose:

Detects the mask byte.

Returns:

5.14.8  SENSE (7): Program Service Priority

Purpose:

Detects the service priority established for the program.

Returns:

5.14.9  SENSE (8): User Name, Account, and Terminal

Purpose:

Reports the current user, group, and terminal identifier.

Operands:

Returns:

No registers changed.

AREA:

5.14.10  SENSE (9-14): Reporting Program Exit Routines, Completion Test

Purpose:

Reports the entry point of the specified exit routine location or completion status of a specific I/O device.

Operands:

Returns:

5.14.11  SENSE (15): PSW and GPR Save Area

Purpose:

Obtains the save area after a program interrupt. The exit routine can modify the copy of the save area received and use the modified copy to alter register contents or instruction execution sequence of main program when control is relinquished by a SET 10 macro. (See 5.13.8 and 5.5)

Operands:

Returns:

No registers changed

5.14.12  SENSE (16): Program Exception Address

Purpose:

Employed after an address PANIC, SENSE returns the address at which the PANIC exception occurred.

Returns:

5.14.13  SENSE (17): Reading the Communications Area

Purpose:

Reads the 16-byte program (user or subprocessor) communications area.

Operands:

Returns:

No registers change.

5.14.14  SENSE (18): Identifying the Command Used to Call the Program

Purpose:

Returns the command string which initiated execution.

Operands:

Returns:

5.14.15  SENSE (19): Passing Command Parameter Strings

Purpose:

Returns any parameter string specified with the command that initiated execution.

Operands:

Returns:

5.14.16  SENSE (21): Obtaining the Program Event Recording Control Block

Purpose:

Obtains the 12-byte PER control block. If the PER event mask is zero (0), then PER is not enabled.

Operands:

Returns:

5.14.17  SENSE (22): Obtaining the Monitor Mask

Purpose:

Obtains the monitor mask.

Operands:

Returns:

5.14.18  SENSE (23): Reporting File System Information

Purpose:

Reports file system availability and space information.

Returns:

5.14.19  SENSE (24): Sensing the Memory Initialization Value

Purpose:

Senses the memory initialization value (SEE SET 23).

Returns:

5.14.20  SENSE (25): ORVYL CPU Time

Purpose:

Reports ORVYL CPU time (see SENSE 4) and the ORVYL I/O count.

Returns:

Note: A timer unit is equal to 1/38400 seconds (26 microseconds).

5.14.21  SENSE (26): Obtaining the current time BLOCK

Purpose:

Reports the time Block currently in effect.

Returns:

5.14.22  SENSE (27): Obtaining the HASP Display Buffers

Purpose:

Returns various HASP display buffers.

Operands:

Returns:

5.14.23  SENSE (28): Sense ORVYL name

Purpose: Obtain the name of the current ORVYL.

Moves ORVYL name to location specified.

Operands:

Returns:

5.14.24  SENSE (29): Sense program name

Purpose: Move program name to specified area.

Operands:

Returns:

5.14.25  SENSE (30): Obtaining data address for shared symbol

Purpose: Obtaining data address for shared symbol.

Returns data address associated with shared symbol.

Operands:

Returns:

5.14.29  Reserved SENSE macros

The following SENSE macros are reserved for systems programmers only. They can be used for the development of utilities or for testing system changes.

5.14.29.2  SENSE (151): Sense file system info

Purpose: Move file system info to specified area.

Operands:

Returns:

Layout of receiving area:

5.14.29.3  SENSE (152): Sense cross address space memory

Purpose: Get local memory from another address space.

This function moves the contents of the specified memory location in another address space to the specified location in this address space. It is documented for completeness but it is not apparent what practical use can be made of it since there seems to be no way to progmatically determine the first field of the sense 152 api. This function may have been developed to aid in testing or debugging durning some development phase of Orvyl.

Operands:

Returns:

Layout of sense 152 api:

5.14.29.4  SENSE (153): Sense Orvyl global memory

Purpose: Get contents of Orvyl global memory.

Operands:

Returns:

5.14.29.5  SENSE (154): Sense OS memory

Purpose: Get contents of OS memory.

Operands:

Returns:

6  URAM II

6.1  URAM Description

6.2  URAM II MACROS

6.2.1  Initialize URAM

Purpose:

Initialize URAM, set up memory management, attach master terminal, and other URAM housekeeping chores. This macro must be executed prior to the execution of all other URAM macros.

Operands:

Returns:

6.2.2  Open a URAM file or device.

Purpose:

Open the file or device. The parameters are merged into the FCB. An FCB is generated, if necessary. The device is attached and URAM initialization for the device takes place. Buffer allocation is done if appropriate. Assign command parameters override the parameters specified in the open parameter area. Default values are documented elsewhere.

Operands:

Returns:

6.2.3  Copy the OPND dsect.

Purpose:

Copy the Open Parameter Dsect into the user program.

Operands: None.

6.2.4  Create an open parameter area with specified parameters

Purpose:

Create an open parameter area with the parameters specified. Only the NAME= and DEVICE= parameters must be specified. The defaults are described in the Default section of this document.

Operands:

6.2.5  Close a URAM File or Device.

Purpose:

Closes specified file or device. If an output file, buffers are written. The buffers and FCB are freed. The device is detached.

Operands:

Returns:

6.2.6  Read a record from a URAM file or device.

Purpose:

Retrieves a record from the input file or device. The record number (key) may be specified for direct access devices. A prompt may be specified for terminal devices.

Operands:

Returns:

6.2.7  Write a record to a URAM file or device.

Purpose:

A record is written to the output file or device. The record number (key) may be specified for direct access devices.

Operands:

Returns:

6.2.8  Delete a record from a URAM file.

Purpose:

Delete a record from a URAM file. The record with the specified record number is deleted and its space freed. If the record does not exist, no operation is performed. This operation is valid for update or output files only.

Operands:

Returns:

6.2.9  Obtain a buffer for a subsequent PUT.

Purpose:

This is a request for a buffer which will subsequently contain a record to be written out. The address is returned in register 1 and the length in register 0. GETPUTB may be interpreted as a priming call to the write routine, while PUT does the actual write. This buffer is reused so GETPUTB calls must be separated by PUT calls. However, a GETPUTB call is not required for each PUT, e.g., writing out a preformatted logical record would require only a PUT pointing to that record

Operands:

Returns:

6.2.10  Process Assign Command Text.

Purpose:

To generate an FCB from the text of an ASSIGN command. The ASSIGN command is documented (elsewhere). The parameters specified in the command text override those specified by the OPEN.

Operands:

Returns:

6.2.11  Copy the FCB dsect.

Purpose:

Copy the File Control Block dsect into the user program. This dsect must be assembled into programs using the GET and PUT macros.

Operands: None.

6.2.12  Obtain the address of a specified FCB.

Purpose:

Returns the address of the specified FCB.

Operands:

Returns:

6.2.13  Obtain list of FCB's

Purpose:

Obtain a list of existing file control blocks (FCB's). The list entries are 12 bytes long: 8 bytes FCB name, left justified, padded with blanks. 4 bytes FCB address. There may be empty (zeroed) entries in the FCB list.

Returns:

6.2.14  Turn on or suppress URAM error messages.

Purpose:

Turn on and off URAM printing of error messages

Operands:

Returns: None

6.2.15  Obtain a specific URAM error message.

Purpose:

Return an appropriate error message text for the URAM error code specified in R15.

Operands:

Returns:

6.2.16  Clean up buffers.

Purpose:

Operands:

Returns:

6.2.17  Close all files and free unneeded URAM system buffers

Purpose:

Close all files and return unneeded URAM system buffers.

Returns:

6.2.18  Obtain Memory

Purpose:

To obtain free storage for user program. Core is allocated in multiples of 4K. The user is responsible for further refinements in user memory management.

Operands:

Returns:

6.2.19  Free Memory

Purpose:

Return previously obtained free storage to URAM.

Operands:

Returns:

6.2.20  Find a member of a ORVYL PDS.

Purpose:

Find a member in a ORVYL PDS file by member name. Succeeding GET's to the specified FCB will get records from that member. Used with the include libraries of PLC, WATORV, etc. Valid for input files only.

Operands:

Returns:

6.2.21  Delete a member of an ORVYL PDS.

Purpose:

Delete a member in a ORVYL PDS file

Operands:

Returns:

6.2.22  Rewind a URAM file.

Purpose:

Rewind a file.

Operands:

Returns:

6.2.23  Obtain current record number of URAM file.

Purpose:

Returns in R1, the line or record number of the current record (input) or the next record (output). Line numbers are WYLBUR line numbers x 1000.

Operands:

Returns:

6.2.24  Point to a specific active file line.

Purpose:

Operands:

Returns:

6.2.25  Establish ATTN, SVC exit routines

Purpose:

Establishes the entry point of the specified exit routine. These exit macros must be used in place of the ORVYL exit macros.

Operands:

Returns:

6.2.26  Establish a Command Exit.

Purpose:

Establishes an entry point in the user program. Command file commands are passed to this entry point. The command address will be passed in register R1; the command length in register R0. The exit routine address is pointed to by r14. If no entry is set, commands will be passed to ORVYL and WYLBUR.

Operands:

Returns:

6.2.27  Return from a Command routine.

Purpose:

To return to URAM after user command file processing.

Returns: None

7  ORVYL Maintenance

This chapter describes ORVYL maintenance commands that are generally restricted to system's programmers or special accounts. They are documented here for completeness, and are NOT intended for general users.

7.1  The SET REFRESH Command

Used to refresh a shared program with another version. The refreshed version becomes a "corpse" which remains active until all users exit the program, or stop referencing symbols defined by the program. The new version isn't loaded until it is called, which should be done immediately for shared symbol programs.

Example:

7.2  The SET VMAINT Command

Sets the file system into maintenance (read only) mode. This prevents changes to the file system by Orvyl while file dumps, lost block recovery, or other file system maintenace is occuring offline.

Sets the file system back to regular read/write mode.

7.3  The SET NOVFILE Command

Sets the file system to unavailable mode. This prevents all access to the file system by Orvyl.

Sets the file system back to regular read/write mode.

7.4  The SHOW VVOLUME Command

SHOW VVOLUME filesysname

Shows all the volumes that comprise the file system.

7.5  The SET VADDVOL Command

Adds another volume to the end of the file system. If the DSN of the volume is not specified, the next logical DSN will be derived from the current last DSN.

7.6  The SET VREMVOL Command

Removes the last volume from the file system. The volume is validated to make sure that there are no blocks being used before it is removed.

7.7  The FBAL Command

This command adds up the blocks for each file belonging to the account and compares to blocks allocated for the account. It will report any discrepancies and additionally reset the blocks allocated if reset is specified.

Examples:

7.8  The ADMIN Program

This program performs various maintenance functions. It accepts the following commands:

Enter EXIT when done.

7.8.1  The DEFAULT command

This command resets various defaults in the ADMIN program for use by some of the other commands.

7.8.2  The ADD command

This command adds an account to the Orvyl file system. The block limit is set to the default if blocks is not specified. NOLIM sets the block limit to 16777215. Note that there would not be a response in noverify mode.

Examples:

7.8.3  The DROP command

This command removes an account from the Orvyl file system.

Examples:

7.8.4  The RESET command

This command resets the block limit to the default if blocks is not specified. NOLIM sets the block limit to 16777215. Note that there would not be a response in noverify mode.

Examples:

7.8.5  The ACCOUNT command

This command lists all accounts and their block limits for the file system id specified. The file system id can be determined by issuing the SHOW VBLOCKS command and counting down to the desired file system starting with zero. The account list will go to the active file or the terminal depending on the ACTIVE|TERMINAL setting in effect.

7.8.6  The ZORCH command

This command removes a file catalog directory entry without releasing the blocks back to the sytem. The block allocation is not reset. The blocks are lost and must be reclaimed. The blocks allocated can be reset with the FBAL command if the account is not going to be dropped. The ERASE command should be used instead of ZORCH unless there is an overriding reason not to.

7.8.7  The EXTEND command

This command extends a non-IXRd file by the count of blocks specified if possible. It reports the count possible if the count specified is not possible.

7.8.8  The CRENIXR command

This command creates a non-IXRd file with the count of blocks specified if possible.

7.8.9  The CREHYBR command

This command creates a hybrid file with the count of blocks specified if possible.

7.9  The PLAYMATE Program

PLAYMATE is an ORVYL utility program that permits the execution of commands in a form similar to ORVYL macros. The user has access to the full power of ORVYL on a command-by-command basis. The most frequent commands:

PLAYMATE is typically used to examine SPIRES files.

or

ATTach FILe returns either an error code or it displays the registers that were returned by the operating system (ORVYL) when the file was successfully attached. R0 contains what is known as the device-id after a successful attach. Most commands, like CONTROL, READ, WRITE, DETACH, RESERVE, RELEASE need the file-di as their first parameter. READ BLOCK and WRITE PREV assume the current file-di. If you have more than one file attached at the same time, you'll have to specify the file-di on READ BLOCK or WRITE PREV if it wasn't the last file-di you used. You can READ BLOCK from one file, and WRITE PREV to another file.

All of these PLAYMATE commands are documented in the ORVYL manual, and PLAYMATE is an interactive way of executing the ORVYL macros. Just remember to use OLD on ATTach FILe when you are attaching an existing file. The default is NEW.

Here is another example using two files at once:

Since device 2 is the first file attached, and device 3 is the second file attached, this set of commands reads block zero from myold.file and then writes it into mynew.file

7.9.1  The PLAYMATE Commands

PLAYMATE has a large number of commands:

Upper case portions of words are the minimum you can type to have that word recognized. Terms in angle-brackets, <term>, are required terms. Terms in square-brackets, [term], are optional. The commands make use of these definitions:

Alternatives are listed in a column under each definition, and horizontally separated by vertical-bar, |, when there are multiple choices for that one alternative. For example, <mode> can be M0 or WAIt for the M0 choice.

The last "string" or x'hex-number' will define the contents of the STRing area, and LSTRing will be the length of that string or hex-number (in bytes).

Both hex-number and decimal-number are what you'd expect.

7.9.2  The PLAYMATE PRIME and PAD Commands

PRIME is used to place an initial value into an area. For example, you might need to setup a format for CONTROL 14 in the CNTRL area.

This would setup a FIXED,LRECL=64 format definition. You could then do the following to an attached file (device-id=2):

PAD is used to fill out an area by copying the last character in the current area until the area becomes <length> in size. Example:

7.9.3  The PLAYMATE ETOA and ATOE Commands

These commands are used to convert the contents of an area from EBCIDIC to ASCII (ETOA) to ASCII to EBCIDIC (ATOE). This is usually done with the BUFFER area after reading a block of data from a file that has ASCII characters. PLAYMATE always displays as though the data was EBCIDIC, so you might have to do ATOE before doing DISPLAY.

Example:

7.9.4  The PLAYMATE SORT Command

This command is used to sort the directory contents of an ORVYL Library or Loadfile. The Library or Loadfile must be an attached file.

This command reads block 0 of the specified file, [r0], sorts the contents, and rewrites the block. You will get errors if the attached file is not a Library or Loadfile, or you don't have read or write permission for the file.

Example:

7.10  User file maintenance facilities

There are three batch programs that are commonly used to DUMP/RESTORE ORVYL files. ORVCOPY is used to dump/restore multiple files in their exact form. ORVMOVE and ORVLOAD are used to dump and restore respectively in a fixed format form.

7.10.1  ORVCOPY Facility

ORVCOPY designed to DUMP/RESTORE ORVYL files.

Sample Output JCL

Sample Input JCL

SYSIN control cards

Control cards contain reserved words that may be abbreviated down to the first letter (like DUMP, DUM, DU, D). If the abbreviation would be ambiguous, then use at least the first three letter of the reserved word. REStore and REWind are examples of such words. SYSIN must be a fixed card image input data set, and only data in columns 1 through 72 is used. If the last non-blank character within that column range is a comma (,) then a second card is read as a continuation of the first.

There are three primary control cards:

REWIND positions the RESTORE (INPUT) data set to beginning of the data set.

DUMP is an optional keyword. RESTORE is a required keyword.

The "options" for both DUMP and RESTORE are:

Do not include your account at the start of any name or stem. ORVCOPY knows your account from the JOB card; therefore, you may not dump files belonging to others, or restore to anyone but yourself.

The RESTORE control cards allow either REPLACE or SKIP as the last option. REPLACE is needed if the file being restored already exists under ORVYL and you want it to be replaced. If REPLACE is not given, only a new file can be restored. The SKIP option is very useful with the NAME option. SKIP positions INPUT to the named file but doesn't restore it. RESTORE ALL would then restore from that file through to the end of INPUT. SKIP with NAME makes it possible for you to position yourself to a particular file within INPUT's data set.

If a RESTORE command directly follows another RESTORE command, then LIKE, RANGE, and ALL read INPUT from its current position to end-of-information. The SKIP option causes the file names to be printed without restoring any of the files.

RESTORE with the REP option normally creates a standard ORVYL file, however if the file being restored already exists as a "non-ixr" or "hybrid" type, then the file is rewritten as that type.

Multiple ORVYL files are read/written from/to a single OS data set, which may be on disk or tape. The ORVYL file's attributes (FORMAT, CLP/NOCLP, SHR/NOSHR, FILEMASK, PUBLIC Permits, and Individual Permits) are all restored/saved by this program. As each file is processed, ORVCOPY prints a line in SYSPRINT that identifies the file written. The form of the line is:

It is possible to DUMP and RESTORE in the same job step! However, INPUT and OUTPUT cannot specify the same data set.

Note that the RECFM for both INPUT and OUTPUT is: RECFM=VB. If you do not specify LRECL, or you specify an LRECL < 2056, then LRECL = 2056. Any specified LRECL >= 2056 is retained. If you do not specify BLKSIZE, or you specify BLKSIZE < LRECL+4, then BLKSIZE = 3(LRECL)+4. Any BLKSIZE >= LRECL+4 is retained. Therefore, default LRECL = 2056, and default BLKSIZE = 6172.

For dumping 4K file system files, you must supply LRECL=4104 as a minimum. BLKSIZE will be computed as 3(LRECL)+4 if not given. For restore of 4K files, LRECL and BLKSIZE are usually not given.

To route to other machines, include the following in the JCL:

To use a different ORVYL, like TESTORV, include the following:

7.10.2  ORVMOVE Facility

ORVMOVE is designed to dump an ORVYL file to OS. ORVLOAD is the companion program, to load OS into ORVYL.

ORVMOVE Input: ORVYL file that is not a library or loadfile.

Types handled:

Output: OS-dataset of either V(B) or F(B) record format. Each line of output from the ORVYL file equals one record in the OS-dataset. For F(B), records may be truncated or blank-padded to LRECL size.

You specify the name of the ORVYL file in either the PARM or //SYSIN. You specify the RECFM and LRECL of the output dataset in //OUTPUT.

ORVMOVE outputs statistics upon completion:

Sample JCL:

The SPACE and DCB parameters should specify 4096 for files that have 4096 as their block size. Also, you should try to allocate the number-of-blocks associated with each file as the primary extent in the SPACE parameter.

Example:

See the SPACE parameter in the JCL above. Also note, SCR002 will normally take 24 ORVYL blocks (2K) per track.

7.10.3  ORVLOAD Facility

ORVLOAD is designed to load an ORVYL file from OS. ORVMOVE is the companion program, to dump ORVYL to OS.

ORVLOAD Output: ORVYL file that is not a library or loadfile.

Types handled:

Input: OS-dataset that must always be F(B) record format.

You specify the name of the ORVYL file in either the PARM or //SYSIN. You specify the RECFM and LRECL of the output dataset in //INPUT.

ORVLOAD outputs statistics upon completion:

Sample JCL:

7.11  MPINIT -- Orvyl initialization parameters

MPINIT -- Orvyl initialization parameters.

7.11.1  System initialization parameters

These are various parameters controling the various functioning of Orvyl.

RESCAN SYSNAME

SYSNAME is the name of this Orvyl. On SYSA and SYSD the name is set to ORVYL. On SYSB (RLIN) the name is set to ORVYLRLG. The default is TORVYL. The RESCAN parameter allows SYSNAME to be accessed more than once. Both the Host and the Guest access this parameter.

Example:

CPUS

CPUS tells Orvyl how many CPUs will be used by the Guest.

Example:

PROFILE

This function still has to be researched. It is disabled in all known Orvyls.

Current setting:

SYSDUMP

This parameter tells Orvyl where the SYSM dump dataset is located.

Current settings on SYSA:

SYSTEM

Current settings on SYSA:

MEMORY

HSPACE

ACCOUNT

DISPATCH

TERMINAL

RESOURCE

VIRTMEM

MODE1

PAGING

7.11.2  File system initialization parameters

These parameters are for the host.

FILEIOS

CDUMPNOT

BUF2K & BUF4K

FS0nn


INDEX


ABOUT THIS MANUAL   1.1
ADMIN PROGRAM   7.8
ADMIN: ACCOUNT COMMAND   7.8.5
ADMIN: ADD COMMAND   7.8.2
ADMIN: CREHYBR COMMAND   7.8.9
ADMIN: CRENIXR COMMAND   7.8.8
ADMIN: DEFAULT COMMAND   7.8.1
ADMIN: DROP COMMAND   7.8.3
ADMIN: EXTEND COMMAND   7.8.7
ADMIN: RESET COMMAND   7.8.4
ADMIN: ZORCH COMMAND   7.8.6
ALIAS STATEMENT   3.2.2
ATTACH (1): ATTACHING USER TERMINAL   5.8.1
ATTACH (2): ATTACHING ORVYL FILES   5.10.1
ATTACH (4): CREATING AND OPENING A SUZAN PATH   5.12.1
ATTACH: ATTACHING DEVICES AND FILES   5.7.1
ATTN COMMAND   4.2.2
CALL COMMAND   3.4.1
CHANGE STATEMENT   3.2.3
CLEAN UP BUFFERS.   6.2.16
CLEAR TRAP COMMAND (CT)   4.5.3
CLEAR TRAPS COMMAND (CTS)   4.5.4
CLOSE A URAM FILE OR DEVICE.   6.2.5
CLOSE ALL FILES AND FREE UNNEEDED URAM SYSTEM BUFFERS   6.2.17
COMMAND PASSING AND PROMPTING AT THE TERMINAL   5.3.2
COMMAND: EXECUTING A SUBSYSTEM COMMAND   5.13.1
COMMENT STATEMENT   3.2.4
CONTROL (0): CREATING FILE BLOCKS   5.10.4
CONTROL (0-1): PAGE EJECT AND SPACING   5.8.6
CONTROL (1): DELETING A FILE BLOCK   5.10.5
CONTROL (10): ASSIGNING PUBLIC FILE PRIVILEGES   5.10.14
CONTROL (11): READING FILE ACCESS PRIVILEGES   5.10.15
CONTROL (12): SETTING SHARE ONLY MODE FOR ATTACH MACRO   5.10.16
CONTROL (12): SETTING THE WYLBUR MODE WORD   5.9.2
CONTROL (13): READING THE WYLBUR MODE WORD   5.9.3
CONTROL (13): SENSING SHARE ONLY MODE FOR ATTACH MACRO   5.10.17
CONTROL (14): DETECTING THE WYLBUR ACTIVE FILE SIZE   5.9.4
CONTROL (14): SETTING THE FILE FORMAT FIELD   5.10.18
CONTROL (15): OBTAINING THE FIRST WYLBUR LINE NUMBER   5.9.5
CONTROL (15): SENSING THE FILE FORMAT FIELD   5.10.19
CONTROL (16): OBTAINING THE LAST WYLBUR LINE NUMBER   5.9.6
CONTROL (16): SETTING A FILE'S CLP/NOCLP CONDITION   5.10.20
CONTROL (17): DELETING THE WYLBUR ACTIVE FILE CONTENTS   5.9.7
CONTROL (17): SENSING A FILE'S CLP/NOCLP CONDITION   5.10.21
CONTROL (18): ABORTING A COMMAND IN PROGRESS IN WYLBUR   5.9.8
CONTROL (18): SETTING A FILE'S CLP ONLY CONDITION   5.10.22
CONTROL (19): OUTPUT FROM THE WYLBUR ACTIVE FILE TO THE TERMINAL   5.9.9
CONTROL (19): SENSING A FILE'S CLP ONLY CONDITION   5.10.23
CONTROL (2): DELETING A RANGE OF FILE BLOCKS   5.10.6
CONTROL (2-3): SETTING TABS   5.8.7
CONTROL (20): OBTAINING PERMISSION TO PROCESS CHANGED LINES   5.9.10
CONTROL (20): SENSING A FILE TYPE   5.10.24
CONTROL (21): READING TERMINAL CHARACTERISTICS   5.8.10
CONTROL (21): SETTING SPIRES ONLY   5.10.25
CONTROL (22): SENSING SPIRES ONLY   5.10.26
CONTROL (22-24): ATTN SESSION BREAK   5.8.11
CONTROL (23): SENSING FILE BLOCK SIZE   5.10.27
CONTROL (24): OBTAIN MAXIMUM FILE SIZE IN BLOCKS   5.10.28
CONTROL (25): CONVERT TO HYBRID FILE   5.10.29
CONTROL (25-27): NEWLINE CARRIAGE RETURN   5.8.12
CONTROL (28): OBTAIN DELTA FROM WYLBUR   5.8.13
CONTROL (3): TESTING FOR THE EXISTENCE OF A FILE BLOCK   5.10.7
CONTROL (4): OBTAINING THE FILE FIRST BLOCK NUMBER   5.10.8
CONTROL (4-6): TERMINAL INPUT TRANSLATION   5.8.8
CONTROL (5): OBTAINING THE FILE LAST BLOCK NUMBER   5.10.9
CONTROL (6): OBTAINING THE TOTAL NUMBER OF FILE BLOCKS   5.10.10
CONTROL (7): WRITING AN UPDATED FILE INDEX   5.10.11
CONTROL (7-9): CARRIAGE CONTROL   5.8.9
CONTROL (8): ERASING AND RENAMING FILES   5.10.12
CONTROL (9): ASSIGNING ACCOUNT LEVEL FILE PRIVILEGES   5.10.13
CONTROL CODES FOR DISPLAY INPUT AND OUTPUT   5.2.1
COPY THE FCB DSECT.   6.2.11
COPY THE OPND DSECT.   6.2.3
CREATE AN OPEN PARAMETER AREA WITH SPECIFIED PARAMETERS   6.2.4
CREATE COMMAND   2.3.1
CREATING LOAD MODULES   3.1
DEFINING ORVYL PAGE CONTENTS   5.4.2
DELETE A MEMBER OF AN ORVYL PDS.   6.2.21
DELETE A RECORD FROM A URAM FILE.   6.2.8
DETACH: DETACHING DEVICES AND FILES   5.7.2
DIRECTORY INFORMATION COMMMANDS   2.6
DOCUMENT SYMBOL CONVENTIONS   1.6
ENTER COMMAND   3.4.4
ENTRY STATEMENT   3.2.5
ERASE COMMAND   2.3.2
ESTABLISH A COMMAND EXIT.   6.2.26
ESTABLISH ATTN, SVC EXIT ROUTINES   6.2.25
EXIT COMMAND   3.4.7
EXIT ROUTINES   5.5
EXIT: RETURNING CONTROL TO THE COMMAND LANGUAGE PROCESSOR   5.13.2
EXPAND STATEMENT   3.2.6
FBAL COMMAND   7.7
FILE ACCESS CONTROLS   2.4
FILE FORMAT OPTIONS   2.2.1
FILE INFORMATION COMMANDS   2.5
FILE NAMING CONVENTIONS   2.2
FILE SYSTEM INITIALIZATION PARAMETERS   7.11.2
FIND A MEMBER OF A ORVYL PDS.   6.2.20
FREE MEMORY   6.2.19
GENERAL DEVICE CONTROL   5.7
GENERAL ORVYL INFORMATION   3.6
GET COMMAND   2.3.6
GO COMMAND   4.2.1
             3.4.3
INCLUDE STATEMENT   3.2.7
INITIALIZE URAM   6.2.1
INPUT AND OUTPUT PROTOCOLS   5.1
INTERRUPTION CODES   5.5.2
INTRODUCTION   1.2
LINK COMMAND   3.1
LINK INPUT AND CONTROL STATEMENTS   3.2
LOADFILE STATEMENT   3.2.11
LOADFILES   3.3
LOADING ORVYL PROGRAMS   3.4
MACRO CODING AND SYMBOL CONVENTIONS   5.6
MACRO EXPANSIONS   5.6.1
MILCOM: PASSING COMMANDS TO MILTEN ONLY   5.9.16
MODIFYING USER PROGRAMS   4.4
MPINIT -- ORVYL INITIALIZATION PARAMETERS   7.11
NAME STATEMENT   3.2.8
OBTAIN A BUFFER FOR A SUBSEQUENT PUT.   6.2.9
OBTAIN A SPECIFIC URAM ERROR MESSAGE.   6.2.15
OBTAIN CURRENT RECORD NUMBER OF URAM FILE.   6.2.23
OBTAIN LIST OF FCB'S   6.2.13
OBTAIN MEMORY   6.2.18
OBTAIN THE ADDRESS OF A SPECIFIED FCB.   6.2.12
OBTAINING USER PROGRAM INFORMATION   4.3
OPEN A URAM FILE OR DEVICE.   6.2.2
ORVCOPY FACILITY   7.10.1
ORVLOAD FACILITY   7.10.3
ORVMOVE FACILITY   7.10.2
ORVYL COMMAND LANGUAGE PROCESSOR (CLP)   1.4
ORVYL DEVELOPMENT   1.3
ORVYL FILE CREATION   2.3
ORVYL FILE INPUT/OUTPUT AND CONTROL   5.10
ORVYL FILE STATUS AND RESERVE/RELEASE   5.11
ORVYL FILE STRUCTURE   2.1
ORVYL MAINTENANCE   7
ORVYL MEMORY MANAGEMENT   5.4
ORVYL PROGRAM EVENT RECORDING AND MONITORING   4.6
ORVYL PUBLIC PROGRAMS   1.5
PAGE STATEMENT   3.2.9
PANIC: PROGRAM OR SYSTEM INITIATED SESSION BREAK   5.13.4
PARM STATEMENT   3.2.1
PATCH CORE COMMAND (PC)   4.4.1
PATCH FPR COMMAND (PF)   4.4.3
PATCH GPR COMMAND (PG)   4.4.2
PATCH IA COMMAND (PIA)   4.4.4
PATCH PSW COMMAND (PP)   4.4.5
PATCH SAVEGPR COMMAND (PSG)   4.4.6
PATCH SAVEIA COMMAND (PSIA)   4.4.7
PATCH SAVEPSW COMMAND (PSP)   4.4.8
PAUSE: USER-INITIATED SESSION BREAK   5.13.3
PLAYMATE COMMANDS   7.9.1
PLAYMATE ETOA AND ATOE COMMANDS   7.9.3
PLAYMATE PRIME AND PAD COMMANDS   7.9.2
PLAYMATE PROGRAM   7.9
PLAYMATE SORT COMMAND   7.9.4
POINT TO A SPECIFIC ACTIVE FILE LINE.   6.2.24
PROCESS ASSIGN COMMAND TEXT.   6.2.10
PROGRAM EVENT RECORDING (PROGRAM CONTROL)   4.6.1
PROGRAM EVENT RECORDING (SET EVENT COMMAND)   4.6.2
PROGRAM EXECUTION CONTROL   3.5
PROGRAM MONITORING (PROGRAM CONTROL)   4.6.3
PROGRAM MONITORING (SET MONITOR COMMAND)   4.6.4
PUT COMMAND   2.3.5
READ A RECORD FROM A URAM FILE OR DEVICE.   6.2.6
READ,MODE=(EDIT,CHANGES): EDITING THE WYLBUR ACTIVE FILE   5.9.14
READ,MODE=DISPLAY: DISPLAY TERMINAL INPUT   5.8.4
READ,MODE=EDIT: ALLOWING WYLBUR TO ISSUE COMMAND PROMPTS   5.9.13
READ,MODE=TEXT: READING THE WYLBUR ACTIVE FILE   5.9.11
READ: READING FILE BLOCKS   5.10.2
READ: RECEIVING A MESSAGE USING A SUZAN PATH   5.12.2
READ: TERMINAL INPUT   5.8.2
REENTERING USER PROGRAMS   4.2
REGISTER CONTENTS UPON EXIT ROUTINE ENTRY   5.5.1
RELEASE: RELINQUISH EXCLUSIVE FILE CONTROL   5.11.29
RENAME COMMAND   2.3.3
REPLACE STATEMENT   3.2.10
RESERVE: OBTAINING EXCLUSIVE FILE CONTROL   5.11.28
RESERVED SENSE MACROS   5.14.29
RESERVED SET MACROS   5.13.28
RESERVED STATUS MACROS   5.11.11
RESERVING AND RELEASING ORVYL PAGES   5.4.1
RETURN FROM A COMMAND ROUTINE.   6.2.27
REWIND A URAM FILE.   6.2.22
SAVE AREA FORMAT   5.5.3
SENSE (0): RESERVED ADDRESS SPACE STATUS   5.14.1
SENSE (1): WORK AREA MANAGEMENT STATISTICS   5.14.2
SENSE (15): PSW AND GPR SAVE AREA   5.14.11
SENSE (151): SENSE FILE SYSTEM INFO   5.14.29.2
SENSE (152): SENSE CROSS ADDRESS SPACE MEMORY   5.14.29.3
SENSE (153): SENSE ORVYL GLOBAL MEMORY   5.14.29.4
SENSE (154): SENSE OS MEMORY   5.14.29.5
SENSE (16): PROGRAM EXCEPTION ADDRESS   5.14.12
SENSE (17): READING THE COMMUNICATIONS AREA   5.14.13
SENSE (18): IDENTIFYING THE COMMAND USED TO CALL THE PROGRAM   5.14.14
SENSE (19): PASSING COMMAND PARAMETER STRINGS   5.14.15
SENSE (2): VIRTUAL MEMORY ADDRESS SPACE LIMITS   5.14.3
SENSE (21): OBTAINING THE PROGRAM EVENT RECORDING CONTROL BLOCK   5.14.16
SENSE (22): OBTAINING THE MONITOR MASK   5.14.17
SENSE (23): REPORTING FILE SYSTEM INFORMATION   5.14.18
SENSE (24): SENSING THE MEMORY INITIALIZATION VALUE   5.14.19
SENSE (25): ORVYL CPU TIME   5.14.20
SENSE (26): OBTAINING THE CURRENT TIME BLOCK   5.14.21
SENSE (27): OBTAINING THE HASP DISPLAY BUFFERS   5.14.22
SENSE (28): SENSE ORVYL NAME ORVYL NAME   5.14.23
SENSE (29): SENSE PROGRAM NAME   5.14.24
SENSE (3): CURRENT TIME AND DATE   5.14.4
SENSE (30): OBTAINING DATA ADDRESS FOR SHARED SYMBOL   5.14.25
SENSE (4): ELAPSED TIME   5.14.5
SENSE (5): TIME INTERVAL CURRENTLY IN EFFECT   5.14.6
SENSE (6): MASK BYTE   5.14.7
SENSE (7): PROGRAM SERVICE PRIORITY   5.14.8
SENSE (8): USER NAME, ACCOUNT, AND TERMINAL   5.14.9
SENSE (9-14): REPORTING PROGRAM EXIT ROUTINES, COMPLETION TEST   5.14.10
SESSION BREAKS   4.1
SET (0-2): ADDRESS SPACE MANAGEMENT   5.13.5
SET (10): RESUMING PROGRAM EXECUTION FROM AN EXIT ROUTINE   5.13.8
SET (11): SETTING THE MASK BYTE   5.13.9
SET (12): SETTING ORDER-OF-SERVICE PRIORITY   5.13.10
SET (13): MODIFYING THE CONTENTS OF THE COMMUNICATIONS AREA   5.13.11
SET (14): RESERVING ADDITIONAL VIRTUAL MEMORY   5.13.12
SET (15): RELEASING VIRTUAL MEMORY   5.13.13
SET (150): CLEAR PSEUDO ACCOUNT   5.13.28.1
SET (151): IGNORE MULTIPLE ATTENTIONS   5.13.28.2
SET (152): SET CLP REAL TIME (INTERVAL) TIMER   5.13.28.3
SET (153): SET CLP COMPUTE TIME TIMER   5.13.28.4
SET (154): WRITE AN SMF RECORD   5.13.28.5
SET (155): SET PROGRAM KEY MASK   5.13.28.6
SET (16): RESERVING VIRTUAL MEMORY BY SPECIFIC ADDRESS   5.13.14
SET (17): ENABLING PROGRAM EVENT RECORDING   5.13.15
SET (18): ENABLING PROGRAM MONITORING   5.13.16
SET (19): PROTECTING MEMORY AREAS   5.13.17
SET (20): CANCELLING MEMORY AREA PROTECTION   5.13.18
SET (21): SYNCHRONIZING COOPERATING ORVYL PROGRAMS (ENQUEUE)   5.13.19
SET (22): SYNCHRONIZING COOPERATING ORVYL PROGRAMS (DEQUEUE)   5.13.20
SET (23): SETTING THE MEMORY INITIALIZATION VALUE   5.13.21
SET (24): SET PROGRAM NAME   5.13.22
SET (29): SUSPEND PROGRAM EXECUTION   5.13.25
SET (3-4): SETTING THE TIME INTERVAL   5.13.6
SET (30): DEFINE NEW SHARED SYMBOL ENTRY   5.13.26
SET (5-9): ESTABLISHING PROGRAM EXIT ROUTINES   5.13.7
SET CLP COMMAND   2.4.4
SET ENTRY COMMAND   3.4.2
SET FILEMASK COMMAND   2.4.3
SET NOCLP COMMAND   2.4.4
SET NOSHARE COMMAND   2.4.2
SET NOVFILE COMMAND   7.3
SET NOVMAINT COMMAND   7.2
SET PERMIT COMMAND   2.4.1
SET REFRESH COMMAND   7.1
SET REGION COMMAND   3.4.8
SET SHARE COMMAND   2.4.2
SET SPIFILE COMMAND   2.4.5
SET TIMER COMMAND   3.5.1
SET TRAP COMMAND (ST)   4.5.1
SET VADDVOL COMMAND   7.5
SET VFILE COMMAND   7.3
SET VMAINT COMMAND   7.2
SET VREMVOL COMMAND   7.6
SETTING PROGRAM TRAPS   4.5
SHOW ACCESS COMMAND FOR ACCOUNTS   2.6.3
SHOW ACCESS COMMAND FOR FILES   2.5.3
SHOW ADDRESS COMMAND (SA)   4.3.2
SHOW ALL COMMAND   4.3.8
SHOW BLOCKS COMMAND FOR ACCOUNTS   2.6.1
SHOW BLOCKS COMMAND FOR FILES   2.5.1
SHOW CLP COMMAND   2.5.5
SHOW CONTENTS COMMAND   2.6.7
SHOW CORE COMMAND   3.4.5
SHOW CORE COMMAND (SC)   4.3.1
SHOW FILEMASK COMMAND   2.5.6
SHOW FILES ATTACHED COMMAND   2.6.5
SHOW FILES COMMAND   2.6.4
SHOW FPR COMMAND (SF)   4.3.4
SHOW GPR COMMAND (SG)   4.3.3
SHOW MAP COMMAND   3.4.6
SHOW PERMITS COMMAND FOR ACCOUNTS   2.6.2
SHOW PERMITS COMMAND FOR FILES   2.5.2
SHOW PROGRAMS COMMAND   2.6.7
SHOW PSW COMMAND (SP)   4.3.5
SHOW REGION COMMAND   3.4.9
SHOW SAVEGPR COMMAND (SSG)   4.3.6
SHOW SAVEPSW COMMAND (SSP)   4.3.7
SHOW SHARE COMMAND   2.5.4
SHOW TRAPS COMMAND (STS)   4.5.2
SHOW VBLOCKS COMMAND   3.6.3
SHOW VFILES COMMAND   2.6.6
SHOW VGROUP COMMAND   3.6.4
SHOW VINFO COMMAND   3.6.2
SHOW VSYM COMMAND   3.6.6
SHOW VSYS COMMAND   3.6.5
SHOW VUSERS COMMAND   3.6.1
SHOW VVOLUME COMMAND   7.4
SHRINK COMMAND   2.3.4
STATUS (0): ASSIGNING GLOBAL FILE ACCESS   5.11.1
STATUS (1): ASSIGNING GLOBAL PUBLIC ACCESS   5.11.2
STATUS (100): CREATE A NEW ACCOUNT   5.11.11.1
STATUS (101): DELETE AN ACCOUNT   5.11.11.2
STATUS (102): RESET SPACE ALLOWED   5.11.11.3
STATUS (103): LIST ACCOUNTS   5.11.11.4
STATUS (104): RESET SPACE USE   5.11.11.5
STATUS (105): DELETE FILE CATALOG ENTRY   5.11.11.6
STATUS (106): READ REAL BLOCK   5.11.11.7
STATUS (107): SET PSEUDO ACCOUNT   5.11.11.8
STATUS (108): SET FILE SYSTEM ACCESS MODE   5.11.11.9
STATUS (109): WRITE REAL BLOCK   5.11.11.10
STATUS (110): UPDATE FILE START BLOCK IN CATALOG   5.11.11.11
STATUS (111): READ CATALOG ENTRY   5.11.11.12
STATUS (112): GET FILE SYSTEM ID AND NAME   5.11.11.13
STATUS (113): CONVERT GROUP TO FILE SYSTEM ID   5.11.11.14
STATUS (114): GET FILE SYSTEM/GROUP TABLE   5.11.11.15
STATUS (115): READ REAL BLOCK HEADER   5.11.11.16
STATUS (116): GET A CONTIGUOUS RANGE OF BLOCKS   5.11.11.17
STATUS (117): SUSPEND PROGRAM EXECUTION   5.11.11.18
STATUS (2): READING FILE NAMES, CREATION DATE, AND LAST USE   5.11.3
STATUS (3): DETECTING ACCOUNT LEVEL ACCESS PRIVILEGES   5.11.4
STATUS (4): OBTAINING CURRENT SPACE AND USAGE STATISTICS   5.11.5
STATUS (5): EXTEND A NON-IXR FILE   5.11.6
STATUS (6): ALLOCATING A NON-IXR FILE   5.11.7
STATUS (7): ALLOCATING A HYBRID FILE   5.11.8
SUZAN PATH INPUT/OUTPUT   5.12
SYSLIB STATEMENT   3.2.12
SYSTEM INITIALIZATION PARAMETERS   7.11.1
TERMINAL INPUT AND OUTPUT   5.2
TERMINAL INPUT/OUTPUT AND CONTROL   5.8
TURN ON OR SUPPRESS URAM ERROR MESSAGES.   6.2.14
URAM DESCRIPTION   6.1
URAM II MACROS   6.2
USER FILE MAINTENANCE FACILITIES   7.10
USER PROGRAM CONTROL   5.13
USER PROGRAM INFORMATION   5.14
WAIT (0): SUSPENDING PROGRAM EXECUTION WHILE AWAITING INTERRUPTS   5.13.29
WAIT: GENERAL SYNCHRONIZATION   5.7.3
WRITE A RECORD TO A URAM FILE OR DEVICE.   6.2.7
WRITE,MODE=DISPLAY: DISPLAY TERMINAL OUTPUT   5.8.5
WRITE,MODE=EDIT: PASSING WYLBUR AND MILTEN COMMANDS   5.9.15
WRITE,MODE=TEXT: WRITING TO THE WYLBUR ACTIVE FILE   5.9.12
WRITE: SENDING A MESSAGE USING A SUZAN PATH   5.12.3
WRITE: TERMINAL OUTPUT   5.8.3
WRITE: WRITING FILE BLOCKS   5.10.3
WYLBUR ACTIVE FILE   2.2.2
WYLBUR ACTIVE FILE AS AN EXTENSION OF THE TERMINAL   5.3.1
WYLBUR INPUT AND OUTPUT   5.3
WYLBUR INPUT/OUTPUT AND CONTROL   5.9
WYLBUR PREST FORMAT   5.9.1
ZAPNAME STATEMENT   3.2.13
ZAPREP STATEMENT   3.2.15
ZAPVER STATEMENT   3.2.14