There are 6 other files named sos.doc in the archive. Click here to see a list.
SOS.DOC - Changes from Version 21(122) to 23(220)
The Brookings Institution
Social Science Computation Center
Washington, D.C. 20036
January 31, 1976
Copyright (C) 1975,1976, The Brookings Institution, Washington, D.C.
SOS version 23(220) is the DEC-distributed version 21(122) with
all known bugs fixed and many useful improvements. This version
incorporates fixes to all problems reported in outstanding SPRs,
all fixes made in the current DEC in-house version of SOS, and
other fixes developed by the University of Illinois, the National
Institutes of Health, and Brookings. Improvements were made to
provide additional features as requested by various SOS users, to
make SOS more easier to use and more efficient to run, and to
incorporate useful functions from other versions of SOS. All
improvements were carefully designed to be consistent with the
SOS's design philosophy and to provide the maximum benefit from
the minimum amount of core. This version has been tested on KA
and KI DECsystem-10's, running 5.07B and 6.02 VM monitors. It
fully supports erstaz devices and SFDs.
Acknowledgement should be given to Chris Larkin and Dan D'Urso of
Digital Equipment Corporation for providing the current DEC
in-house version of SOS and copies of outstanding SOS SPRs, to
Charles Hedrick of the University of Illinois for providing his
version of SOS, to Glenn Ricart of NIH for field-testing this
version, and to Ken Jacobs of the Urban Institute and A.W.
Kunderd of Brookings for providing design assistance.
This documentation and the modifications which created SOS version
23(220) are copyrighted by The Brookings Institution. Any
installation may use this version of SOS, provided that this
copyright is acknowledged and all modifications to this version
are made available at no cost to Brookings. No redistribution of
this version may be made without the express written consent of
Brookings; permission to redistribute is hereby granted to
Digital Equipment Corporation and DECUS. The Brookings
Institution makes no warranty, express or implied, as to this
software and assumes no liability for direct or consequential
damages arising from its use. Retention or use of this software
constitutes acceptance of the above terms.
SOS.DOC - Changes from Version 21(122) to 23(220) Page 2
2.0 EXTERNAL CHANGES
2.1 The commands "B" and "BP", which position you to the beginning of
the file or the beginning of the current page, respectively, have
2.2 The number of simultaneous search strings that may be given in a
single "F" or "S" command has been increased from 6 to 10.
2.3 SOS provides an encryption feature for sensitive text files.
Encryption is requested by specifying an encryption code (1-20
alphameric characters) enclosed in parenthesis following the name
of the file to be edited. Thus, command
would either create or edit a file named "TEST.FIL" with an
encryption code "SECRET". To encrypt a previously-created file,
would read the unencrypted file "PLAIN.FIL" and write the edited
file "CODED.FIL" using the encryption code "KEYWORD". To reverse
the process, the command
would similarly write the unencrypted file "PLAIN.FIL" as the
edited version of the encrypted "CODED.FIL".
At present, only SOS can either read or write encrypted files,
although the SSCC intends to include the encryption package into
other software as time permits.
IMPORTANT: It is the user's responsibility to
remember the encryption codes for all his
encrypted files. If a user cannot determine the
encryption code, the encrypted file will be
2.4 The Alter command ("A") has been improved in a number of useful
2.4.1 In Alter mode, the command "^R" types out the current line
from the left margin to the current position. This type-out
closely approximates the normal ^R output. Note that ^R may
be typed anytime in Alter mode, even while inserting text
into a line with the Alter-mode "I" or "R" commands, or
while typing arguments to the Alter-mode "C", "S", or "K"
2.4.2 Similarly, the command "^U" will always be taken in Alter
mode to restart the current line, even following a "I", "R",
"C", "S", or "K" operation.
SOS.DOC - Changes from Version 21(122) to 23(220) Page 3
Note that "^U" will produce an unexpected effect when typed
in as text for the Extend ("X") command. Because the "X"
command is implemented as an Alter mode operation with an
automatic insertion at end of line, typing "^U" terminates
the insertion and then puts you in Alter mode at the
beginning of the line.
2.4.3 The Backspace character (^H) is now completely equivalent to
the Rubout character (also known as the Delete or Del
character, 177 octal, sometimes written as "<RO>") in Alter
mode. This means that Backspace, like Rubout, deletes the
previous character as an "I" or "R" command character,
terminates the "C", "S", or "K" command operation, or as an
Alter command backs up the current character position.
2.4.4 The Alter-mode commands "^", "<", and ">" have been
implemented. These commands modify the case of the current
character, if it is a letter, and then move the current
character position one space to the right. The "^" command
inverts the case, "<" sets it to upper case, and ">" sets it
to lower case. If a repeat count has been specified, these
commands operate on that number of characters. If a
negative sign ("-") has been specified, these commands
operate on the previous character and then move the current
character position one space to the left. A negative repeat
count is also legal.
2.4.5 The Alter-mode command "B" immediately positions you to the
beginning of the current line. This command differs from
"L", which also positions you at the beginning of the
current line, in that it does not type the remainder of the
line before repositioning.
2.4.6 An ALTMODE (Escape, or ESC character) in Alter mode now
clears the accumulated repeat count and negative sign, if
any, without ringing the terminal's audible alarm (bell).
2.4.7 A greater number of Alter-mode commands may be used with
negative repeat counts. These include " " (space forwards),
Rubout or Backspace (space backwards), "@" (execute command
forwards - see 2.4.15, below), "D" (delete forwards), "R"
(delete forwards and then insert), "S" (search forwards),
"K" (kill next characters), "<HT>" (space to end of line),
and "X" (insert at end of line). When a negative sign ("-")
or negative repeat count ("-nn") is given the direction in
which a command operates is reversed, e.g., "-D" deletes
backwards instead of forwards, "-X" inserts at the start of
the line, etc. Note in the previous version "^U" was
illegal following a minus sign, which prevented the user
from restoring the original line under certain command
2.4.8 As for other SOS modes, typing two Bell characters in
succession ("^G^G") will now terminate alter mode and return
you to SOS command mode (i.e., a "*" will be typed). The
SOS.DOC - Changes from Version 21(122) to 23(220) Page 4
line currently being altered will remain intact.
2.4.9 Control characters typed during Alter mode will now be
echoed as such (as "^<char>").
2.4.10 For the "C", "S", and "K" commands, the Carriage Return
<CR> character will now terminate the Alter-mode operation
on the current line, just as Carriage Return now terminates
operations on the "I" and "R" commands. Similarly, the
ALTMODE (Escape, or ESC character) will terminate the "C",
"S", or "K" operation, just as Backspace or Rubout does, but
leaves you in Alter mode on the current line at the current
2.4.11 For the "S" and "K" commands, the initial character
position may be thought of as being before the first
character position on the line, so that an S command for the
first character in the line will find it, and a K command
for the first character will not kill any characters. This
makes Alter mode operations more consistent since, for
example, in a FORTRAN program, a search for a horizontal tab
character (e.g., typing "S<HT>") at the beginning of the
line will always put you at column 7, whether or not the
line has a FORTRAN statement number.
2.4.12 The "T", "W", "U", and "X" Alter-mode commands have been
changed from prior versions to provide greater word-handling
capability and to make Alter mode more consistent with other
SOS commands. "W" retains its present meaning of "skip next
word"; a word is defined as any collection of letters,
numbers, and the three separator-type special characters
".", "%", and "$". In version 23(220), "T" means "delete
next word and insert text"; "U" means "delete next word";
"X" means "skip to end of line and insert text", analogous
to the normal "X" (Extend) command. Note that "-X" is a
legal command meaning "skip to beginning of line and insert
text". For both "T" and "X" text is inserted until an
Altmode" or <CR> is typed.
This implementation replaces the prior version in which "X"
meant "delete word and insert text" (current "T" function )
and "T" and "U" were errors.
2.4.13 In Expert mode, text backspaced across (in response to a
"<RO>", "-<SP>", or "-S" command) is not typed when the
result would be that the character pointer will be at the
start of the line. Instead, the line number is again typed
to indicate this result.
2.4.14 For the "K", "S", and "C" commands, the Line-feed character
("<LF>") has been given a special meaning "end of line".
Thus, "K<LF>" kills all characters to end of line (beginning
of line if "-K"); and "S" searches to the end of line
(beginning of line if "-S"). Changing a character to a line
feed with "C<LF>" now inserts an <CR><LF> and copies the
SOS.DOC - Changes from Version 21(122) to 23(220) Page 5
remaining text to a new line, analogous the insertion of a
<LF> with the "I", "R", "T", or "X" command.
2.4.15 An important extension to the Alter mode command facility
has been implemented. This is the "Execute through" command
("@"), which has the syntax
[-] [nn] @ <cmd> <char>
and specifies to execute the Alter mode command "<cmd>"
through the "nn"th occurrence of "<char>". The command
searches backwards if the minus sign has been specified and
if minus is legal for the specified "<cmd>". This command
supports the following command characters: " " ("@ <char>"
is equivalent to "S<char>"), "C", "^", ">", "<", "D"
("@D<char>" is equivalent to "K<char>"), and "V" (see
2.4.19, below). All commands except "C" and "V" may search
in either direction; only the " " command may be used when
searching a /READONLY file. The "@" command follows the new
convention for initial character position described in
2.4.11 and obeys the added special-character conventions for
Carriage Return, Altmode, Backspace, Rubout, Line Feed, ^R,
and ^U described in 2.4..1, 2.4.2, 2.4.3, 2.4.10, and
2.4.16 The Alter mode character-matching facility, used by the
"S", "K", and "@" commands, has been improved.
First, letter comparisons will be either exact (upper case
distinct from lower case) or folded (upper case and lower
case are equal) depending on the setting of the "/EXACT"
switch and the ",E" argument, as described in item 2.28,
Second, all pattern match special characters as described in
item 2.29, below, except "any number of" and "one or more
of", may be used as target characters. This means, for
example, that the command "K?:" when in /C128 mode will
delete all characters through the next "Separator".
2.4.17 The "^R" function now prints the correct number of
characters when following a "-D" command.
2.4.18 The Join function ("J") when given while positioned at the
beginning of a line now deletes the first line while
appending the text of that line to the beginning of the next
line. This was done to facilitate alignment of text into
evenly spaced lines.
2.4.19 The "V" command (Stanford case inversion command) has been
implemented for Alter mode. If the current character is a
letter, the "V" command inverts its case and spaces one
character to the left. Otherwise, the "V" command performs
no action. A repeat count may be specified, to permit the
case of consequitive letters to be inverted; or the same
SOS.DOC - Changes from Version 21(122) to 23(220) Page 6
effect may be achieved by using the "V" command as the
subject of the "@" command. However, the "V" command only
works left-to-right; a minus sign (negative repeat count)
may not be given.
2.5 The following changes have been made to SOS's handling of data
files and file specifications:
2.5.1 SOS now uses that PATH. UUO to verify that a LOOKUP has
found the desired file in the specified disk area. This may
occur when the user's search list has /LIB, /SYS, or /NEW
set. Specifically, in the normal SOS operation, when only
one file is specified and /READONLY is not in effect, the
specified file must be found in the disk area requested in
order to be edited. This means that if you attempt to edit
a file, which exists in your library area (i.e., on LIB:),
the file will be created in your area and not edited from
LIB:. To edit a file from LIB:, you must specify the file
2.5.2 In the normal SOS operation, when only one file is specified
and /READONLY is not in effect, if you have requested that a
file be edited that is not in either your default path or
your own disk area, SOS treats that as a request to read the
file from the specified disk area and write the edited
version onto your default path. This is an "implied copy"
When SOS does an implied copy, it uses the file
specification "DSK:file.ext[-]". SOS follows the normal
rules, as given in 2.5.3, below, for setting the file
protection on the resulting output file. To edit a file "in
place" in another disk area, you must give the other disk
area as both the input and output file specifications.
Because this feature is designed to keep the less
experienced SOS user from getting into trouble,
installations serving the more experienced user may disable
this feature with the "FTIMPCPY" conditional assembly
2.5.3 Whenever you give a file spec to SOS, you may now include
the protection to be associated with that file as part of
the file specification, as in "SAMPLE.CBL<157>". The
protection last typed as part of the file spec on either the
input or output side of the initial command line, as the
argument to /NAME, or as the new file name on the "E" or "W"
commands will set the protection for the edited output file.
If no protection is specified, SOS will use the
system-standard protection when creating files and the
file's current protection when editing existing files.
2.5.4 Whenever SOS types a file specification out, for example at
the end of an editing session, it will only type out the
device if it is not DSK: (or a file structure name
SOS.DOC - Changes from Version 21(122) to 23(220) Page 7
equivalent to DSK:), only type out the protection if it is
not the system standard, and only type the file's path if it
is not your default path. A file structure is equivalent to
DSK: when it is in the system search list (i.e., is a
public structure), when it is the only structure in the
user's active search list, and when it has the normal file
structure /WRITE and /CREATE attributes.
2.5.5 When editing from one file to another, SOS will type out the
file specifications as
Edit: <old file> as <new file>
to inform you that a copy operation is being performed as a
part of the editing process. If /CREATE has been set, the
message is typed as
Edit: <old file> creating <new file>
to indicate this. Note that a copy operation may be implied
from a single file spec accessing a file not in your disk
area or on your default path, as described in item 2.5.2,
2.5.6 All SOS output files are written in ASCII Line mode (mode 1)
to better indicate their contents.
2.5.7 SOS file specifications may now be placed on the same line
as the RUN or R command initiating SOS by preceeding the
file specifications with a "-". Thus the command
.R SOS - TEST.F4
would be equivalent to the commands
but is simpler to type. If you have previously edited a
file, and you wish to run SOS to edit or create a different
file, typing a dash ("-") following the RUN or R command
without a file name will cause SOS to ignore the remembered
file name. (Note that this is a new description of an
existing feature of SOS version 21(122).)
2.5.8 SOS does not echo the name of the file being edited when the
user entered the file name explicitly in response to the
"File: " prompt. This was eliminated since in that
particular case the user already knows what file is being
2.5.9 A "save" operation, caused either by the "W" command or an
auto-save operation requested by the "/SAVE" or "/ISAVE"
parameters, may now be done where the desired output file
SOS.DOC - Changes from Version 21(122) to 23(220) Page 8
protection is <400> or greater. In this case, the file's
protection is set to <3xx> by the save operation but reset
to the desired protection at the end of the editing session
("E" or "G" commands).
2.5.10 All SOS operations reading or writing files from ersatz
devices (e.g., NEW:, OLD:, HLP:, LIB:, etc.) will work
correctly. When accessing ersatz devices, SOS will ignore
any PPNs specified by the user since the device name
overrides the PPN.
2.5.11 The effect of the "/DELETE" switch or the "ED" command has
been modified when SOS has a specified output file which is
not the same as the input file. This situation can occur
when the user has typed an SOS command such as
.SOS FILE.NEW = FILE.OLD
or when the user has set a new output file with the "/NAME"
command. When this occurs, SOS will delete only the new
file (FILE.NEW in the above example) and only when SOS has
written a new copy of that file. Thus, when only one file
has been specified (the so-called "browse-and-delete"
function) /DELETE will delete that file; when both input
and output files have been given /DELETE will delete only
the output file and never the input file.
2.5.12 WARNING: PLANETS users should be aware of a potential
naming conflict between SOS backup files (*.Q??) and PLANETS
quarterly data banks (*.QTR). To prevent the PLANETS data
banks from being deleted by the DELETE command (as in
".DELETE *.Q*"), the data banks should be given <5xx>
protection. If you use the KJOB command "/S" option (as in
".KJOB/S" or ".K/S") any protection <100> or higher will
protect the data banks from deletion while logging out.
2.5.13 When set in "/NOBAK" mode, SOS will not delete previously
existing backup files (*.Q??) when saving a new version of a
source file. This permits a user to access a backup file
created by SOS when a source file was edited in "/NOBAK"
mode after the same file had been edited in "/BAK" mode.
This change also makes SOS slightly more efficient when
operating in "/NOBAK" mode.
Although the standard default for the "/BAK /NOBAK /OLD" set
of switches is "/BAK", a user may change what default with
an SOS SWITCH.INI entry; an installation may now change
that default by reassembly of SOS after changing the
"DEFBAK" conditional assembly switch.
2.5.14 Because prior SOS code would not recover from "No room on
disk" error while writing output files, SOS now sets
"DSKFUL PAUSE" during editing sessions. When the no-room
error then occurs, SOS would then return to Monitor level to
permit the user to eliminate the error condition and then
SOS.DOC - Changes from Version 21(122) to 23(220) Page 9
resume editing with the Monitor "CONTINUE" command. SOS
resets the "DSKFUL" setting to the user's prior setting upon
In addition, the user still may request SOS to check that
adequate disk space exists before writing each block of a
file by setting the /CHECK parameter. If no room exists,
SOS enters a dialog with the user to permit correction of
2.5.15 The format of the "=DISK" message and the "/CHECK"
diagnostic warning has been slightly reworded to clarify its
2.5.16 To conform to normal DECsystem-10 conventions, SOS now
looks for the "SWITCH.INI" option file on the user's default
path ("[-]") and uses the user's PPN ("[,]") for the
"???EDS.TMP" and "???EDT.TMP" command files. Writing the
command files in the user's own area assures that SOS
commands will remain remembered when the user changes his
default path and makes SOS perform consistently whether the
files are written on disk or in TMPCOR.
2.5.17 Where an input file can be read, but not renamed or deleted
by SOS, SOS now assumes the file is to read as /READONLY and
types an appropriate warning message.
2.5.18 When editing existing files, SOS attempts to optimize disk
file allocation by taking the actual size of the old file
and passing that size to the Monitor as an estimated file
size of the new file being created. Where disk space is
available, this means that the new version of the file will
get contiguous allocated disk space. This tends to reduce
overall disk space fragmentation and increase the speed at
which the new file may be read. However, no extra space
will be used if the new file is shorter than the old; nor
will anything bad happen if the new file is longer than the
old or if not enough contiguous space is available.
This optimization is done by using extended LOOKUP and ENTER
UUOs. Similarly, SOS now used the CHKACC UUO to determine
access privileges for all files being read or written. When
SOS detects that it cannot write a file to a certain disk
area, it gives the fatal message
? Insufficient privileges to write file
and exits to the Monitor. No editing work will be lost
because this condition will be detected at the start of an
This change should mean that SOS will never be able to get
in the situation when exiting that the user cannot respond
the the message
SOS.DOC - Changes from Version 21(122) to 23(220) Page 10
?File write-protected. Try another name.
because SOS has written a temporary file in a disk area with
a protection which prevents SOS from renaming or changing
the protection of the file. Determining access privileges
with the CHKACC UUO means that [1,2] users may edit files in
any disk area regardless of their protection.
2.5.19 Because SOS remembers that the file being edited has been
changed to determine whether to write a new copy of the file
when wrapping around to the beginning, when saving the file
("W" command), or when exiting ("E" or "G" command), logic
has been added so that changing a line to itself will not
count as a change to the file.
In a related improvement, the Save command ("W") will not
write a new copy of the file or reposition to the beginning
of the file when the file has not been changed.
Furthermore, commands that change the file to itself are not
counted by the /SAVE auto-save feature.
These changes will reduce SOS overhead.
2.6 The SOS mode /UPPER or /LOWER now is effective to invert the case
when in /C128 mode. This makes more sense that the prior
implementation, because if the user is working on an upper-case
only (/M33) terminal (s)he has no control over case in /C64 mode.
In contrast, if the user is working on upper/lower case (/M37)
terminals in /C64 mode typing characters out in inverted case when
the terminal can display both upper and lower case letters is
likely to be confusing. This means that /LOWER mode controls the
inversion of only /C128 (not /C64) upper or lower case letters.
2.7 Indirect command files may now invoke other indirect command files
with the "@" command. Note that this invokation is a permanent
transfer of control to the next indirect file, and is not in the
nature of a subroutine call.
As a convenience for the user, reaching an end-of-file on the
indirect command file will now not clear further SOS commands
typed ahead on the terminal.
2.8 When an "=" command is read from an indirect command file, the
name of the requested variable is typed out to indicate the user
what is being displayed.
2.9 When reading commands from an indirect file, the ^O terminal
status is not cleared between commands, so that the user may
easily suppress all typed output.
2.10 The "implied ." convention has been implemented. This means that
where you would use a "." to indicate the current line number (as
in ".+1"), you may omit the "." and SOS will assume it for you
(i.e., the above example ".+1" may also be given as "+1").
SOS.DOC - Changes from Version 21(122) to 23(220) Page 11
Normally, when SOS is in Novice mode (the default) SOS will assume
the "." only in the middle of the command, as in "I;10" or
"D:500". When in Expert mode, the SOS commands "D", "R", "X",
"M", "K", "A", "JU", "J", ".", "VV", "VU", and "VL" when typed
without any arguments, as in "D<CR>" or "A<CR>", will specify an
operation on the current line. Thus, the examples given if in
Expert mode will, respectively, delete and alter the current line.
However, the commands "P", "I", "L", and "N" will retain their
current implementation for an unspecified range. The command
"P<CR>" will print "PLINES" of text starting at the current line;
"I<CR>" will continue the previous insert operation; and "L<CR>"
will list the entire file. Also, a null range for the "N"
command, as in "N<CR>" or "N50<CR>" will renumber the entire file.
The SSCC has had this feature implemented for several years. It
has proven most natural to use, and therefore is very popular with
Brookings SOS users.
2.11 For compatability between the "T" and "C" commands as compared
with the "I" and "R" commands, the "T" and "C" commands will now
accept the increment delimited by a semi-colon as well as a comma.
2.12 For the "I" and "R" commands, you may now specify the number of
lines to be inserted with a "!" as well as with a ";!" delimiter.
Care must be taken for the "R" command. The command "Rn!m" means
"delete 'm' lines starting at line 'n' and then insert using the
current increment" NOT "delete line 'n' and insert using an
increment that will permit 'm' lines of insertion." To specify the
latter, the command would have to be "Rn;!m", with the ";"
specifying that the "!m" is an insertion count and not a range
specification. However, the command "Rn!m!k" is legal and
specifies the deletion of 'm' lines starting at line 'n' followed
by an insertion with an increment which will permit 'k' lines of
When you specify the number of lines to be inserted, SOS
automatically computes the largest reasonable increment that may
be used to insert that number of lines at that place in the file.
The increment is selected from the list (1, 2, 4, 5, 10, 20, 25,
40, 50, 100) but cannot exceed your current permanent increment.
2.13 When an "I" or "R" command terminates, SOS now remembers the
increment being used, as well as the position, for use with the
next "I<CR>" command.
2.14 When in Novice mode, the message giving the number of lines
deleted for the "R" command now appears before the replacement
lines are inserted, and not afterward as before. Also, a similar
message is produced when lines are deleted by the "T" command.
2.15 The 128-character-set mode (C128) escape character has been made a
user parameter. It may be set to any printing special character;
the default is "?", which is compatible with older versions of
SOS.DOC - Changes from Version 21(122) to 23(220) Page 12
SOS. The SSCC believes that "?" is a preferred escape character
over "'", because "'" has syntactic meaning in many common
programming languages, among them MACRO, FORTRAN, and COBOL, while
"?" does not have such a wide-spread meaning. In any event, this
implementation permits an installation to change the default
escape character by setting the assembly parameter "DFC128", and
permits each user to have his default set via SWITCH.INI. To set
the escape character, the command
is used, where "<character>" is the desired C128 escape character.
with no argument sets C128 mode but does not change the escape
character, and the command "=CASE" displays the current C128
escape character when SOS is in C128 mode.
The rules for C128 character mapping are consistent with current
implementation; the current C128 escape character always maps
into itself for input or output while all other characters follow
the current C128 mappings. Item 2.51, below, describes the
addition of Rubout as a new /C128 character.
If "?" is the current C128 escape character while "/C128" is in
effect typing "??" on input would supply one "?" while one "?" in
a text file would type out as "??". As a further convenience,
both of the characters "?" and "'", if not the C128 escape
character, map into <BELL> (^G) so that that character may be
entered with either "?" or "'" as the escape character, e.g., as
"?'" or "'?", respectively. Note that setting the /C128 escape
character to any special character other than "?" or "'", while
legal, will preempt the normal use of a /C128 character value.
2.16 The renumber command ("N") has been improved. If the first
argument (the increment) is omitted, the current permanent
increment is used. This makes "N" consistent with "I", "R", "T",
Second, to prevent the creation of "Order" errors, the error
message "%Illegal starting line number" ("%ISLN" in Expert mode)
is given if the specified starting line number for the first page
is not greater than the preceeding line.
Third, the starting line number for subsequent pages (i.e., when a
"N" command renumbers more than one page) is taken to be the
specified increment if one was specified, or the "START" parameter
if none was given. (See 2.17, below.) Furthermore, the user may
specify the starting line number for subsequent pages with a
newly-added fourth parameter to the renumber command.
Fourth, and perhaps most important, when the third argument
(starting line number for the first page) is omitted, it defaults
SOS.DOC - Changes from Version 21(122) to 23(220) Page 13
to the specified first line number of the renumbering range when
there is a previous line on the same page, and otherwise to the
starting line number for subsequent pages. This change means, as
a practical matter, the user never has to specify a starting line
number for normal renumbering operations.
2.17 The SOS parameters "START", "STEP", and "INCR" will always be used
for determining line numbers. START defines the first line number
on a new page, where a page is being created or does not have any
lines; STEP defines the increment to use when reading existing
unsequenced ASCII files; and INCR is the increment to use when
creating or copying lines.
2.18 The file-specification on the Copy command ("C") when copying from
another file will now default to the previous file from which text
was copied. If no previous copy-from-file operation has been
performed, attempting to default the file specification will be an
illegal command. The file specification is defaulted by omitting
it from the normal copy command. When a file specification is
defaulted, SOS will indicate the file being used by typing
"Copy: <file spec>" to the user. If the default is not desired,
typing "EQ" will terminate the command if the search mode (/S
option) has been taken. This feature should facilitate copying
multiple pieces of text from the same file.
2.19 Several improvements have been made to the Transfer ("T") and Copy
("C") commands. First, the informational messages indicating that
an increment has been chosen (the "INC1=" and "INC2=" messages)
will be suppressed when it was not necessary to choose an
increment, even though the user did not supply one. This can
occur when a single line is inserted between two lines, or when
during a multiple-page insertion the last page transferred is
given a page of its own.
Second, when it is necessary to choose an increment, and the user
did not supply one, SOS will apply the same algorithm used for
insertions (see 2.12, above) and select either the current
increment or the largest rounded increment that will permit all
lines to be inserted. Also, when selecting an increment SOS will
now reasonably generate the first line number of the inserted
Third, if during a Copy or Transfer operation while SOS is moving
all text to be inserted to free core it runs out of core, the
"%Not Enough Core" ("%NEC") error message will indicate the line
and page number at which core was exceeded. This will permit the
user to break the Copy or Transfer operation into smaller chunks.
2.20 The definition of the Print command with no arguments ("P<CR>")
has been "print 'PLINE' lines starting at the current line". To
assist the user in paging down through the file with this command,
SOS will not reprint the current line of successive "P<CR>"
commands; rather, the first such command will print as before
while all successive commands will start printing at the next
line. This means that lines will not get typed twice when doing
SOS.DOC - Changes from Version 21(122) to 23(220) Page 14
successive "P<CR>" commands.
2.21 The bug that any "save" operation, either a "W" command or an
auto-save function requested by the /SAVE or /ISAVE parameter,
while reading an indirect command file resulted in an "IO to
unassigned channel" error has been fixed.
2.22 The Move command (".<line number>"), which sets the current line
number to the specified line, has been made more flexible. It no
longer requires that the specified line exist; if is does not,
the current line is set to the next line following the specified
line. Also, the command "./n" will set the current line to be the
first line on page 'n', or to line 'START' (see 2.17, above) if
the page is empty.
2.23 SOS now has the "/CREATE" and "/EDIT" switches. "/CREATE" tells
SOS not to read an existing file and to give the user an option to
rename his created file or delete the existing file of the same
name before writing the new version of that file. "/EDIT" causes
SOS to operate as it previously always did, reading and
superceding existing files but permitting the user to create
nonexistent files. "/EDIT" is the default when SOS is run by the
RUN UUO, or by the RUN, R, SOS, or EDIT commands; "/CREATE" is
the default when SOS is run with the CREATE command. "/CREATE"
and "/EDIT" switches override the /READONLY switch; those three
switches are mutually exclusive. These switches may only be given
on the initial command line or in SWITCH.INI.
When SOS is in a "/CREATE" mode, the "=NAME" command will now type
"Creating <file spec>" to indicate this. Similarly, when SOS is
in /READONLY mode, the "=NAME" command will type "Reading
2.24 Some changes to internal text buffer handling have made the new
SOS more efficient than earlier versions. While some improvements
apply to all commands which operate on text, the largest
improvements will be seen for Insert, Replace, Copy, and Transfer
commands. At the extreme, a 44% reduction in CPU time has been
observed while doing a large (50 textual page) Copy operation.
2.25 As a convenience to the user, and to conform SOS to normal
DECsystem-10 command scanning, the user may now omit the trailing
"]" on file specifications when that would be the last character
of the line.
2.26 On certain types of terminals (Texas Instruments Silent 700 at 300
baud, for example) the "<LF>" command (print next line) overprints
part of the sequence number of the line printed, due to a Monitor
design deficiency in terminal character handling. To assist the
users when the happens, the "/DPY" mode may be set. Note that
"/DPY" is designed to produce terminal output compressed for
display terminals (CRTs) and this added benefit is unintended.
For example, "/DPY" mode also suppresses the blank line normally
typed before the "Page n" output.
SOS.DOC - Changes from Version 21(122) to 23(220) Page 15
2.27 The "Decide" option for the Substitute command ("S"), for the Find
command ("F" - see item 2.47, below), and for context line numbers
("$<string>$<CR>" as a line number) has been improved.
First, when SOS is waiting for a user decision, it will clear the
terminal's ^O status, type the line to be accepted, and then
prompt with the characters "D*".
Second, when an incorrect response has been typed for the Decide
input, SOS will type "? ", clear type-ahead, and ring the
terminal's audible alarm (bell) to indicate the error. It will
then wait for a correct input.
Third, when the "Rubout" or "Delete" response is typed to indicate
that the changes or the line is not accepted or when "E" or "Q" is
typed to terminate a Find or Substitute command, when you are not
in Expert mode SOS will type an appropriate confirmation.
Fourth, the global SOS parameter "/DECIDE" will now be applied to
context line number searches as well as Find and Substitute
Fifth, the effect of the ",D" parameter for the Find and
Substitute commands and for context line number searches is to
invert the setting of "/DECIDE". Thus, if "/DECIDE" is set, the
",D" parameter will tell SOS not to perform the command in Decide
2.28 The Exact-match parameter ",E", on the Find and Substitute
commands, and on the context line number search, has been extended
to have features analogous to the Decide option described in 2.27,
First, for the Alter command ("A") and for the Extend command
("X") the exact-match parameter (",E") has been added. This
permits the user the control whether the case of a letter is
considered when doing character comparisons for the "S", "K", and
"@" Alter-mode commands, as described in 2.4.16, above.
Second, the parameters "/EXACT" and "/NOEXACT" have been
implemented to control the default for character comparisons.
/EXACT implies that upper case letters are distinct from lower
case letters; /NOEXACT treats upper and lower case letters as
equivalent when comparing characters. The command "=EXACT" will
display the "/EXACT" switch setting; the initial condition is
Third, the definition of the ",E" parameter has been changed to
make ",E" invert the current "/EXACT" default value.
Fourth, the bug which caused the ",E" parameters on the Find and
Substitute commands to interact has been eliminated.
2.29 Several new pattern matching special functions have been
implemented, so that SOS and TECO Version 23 would have similar
SOS.DOC - Changes from Version 21(122) to 23(220) Page 16
capabilities. These functions are implemented as special
characters, similar to the existing pattern matching functions in
SOS; these characters may be entered as either "/C128" double
characters or by typing the appropriate control characters. All
pattern-matching special characters are now as follows:
Character C128 rep New? Use? Description
--------- -------- ---- ---- --------------------------------
^^ ?7 No Any "Quote" next character; the
next character is taken for
itself without any special
^E ?% No Pattern "Not" next character
^X ?9 Yes Pattern Any alphameric (0-9, A-Z, a-z)
^A ?! Yes Pattern Any letter (A-Z, a-z)
^F ?& Yes Pattern Any upper-case letter (A-Z)
^W ?2 Yes Pattern Any lower-case letter (a-z)
^P ?+ Yes Pattern Any decimal digit (0-9)
^\ ?< Yes Pattern Space or Horizontal Tab
| ?: No Pattern Any separator (Note this
character is vertical bar, 174
octal, not back slash as
produced on some line printers.)
^T(*) ?/ No Pattern Any character (equivalent to
"Not End of line")
^] ?> Yes Pattern End of line (equivalent to "Not
^N ?) No F,S "Any number of" next character
(zero or more occurrences)
^V ?1 Yes F,S "One or more of" the next
^O ?* No String Substitute string number
^B ?" No String Next substitute string
(*) Needs "SET TTY RTCOMPATABILITY" to be available for SOS use.
Notice that all characters identified as "Pattern" usage may be
used as arguments for Alter mode character-comparison commands;
and all characters identified as either "Pattern" or "F,S" usage
may be used in context line search strings.
A brief description of the SOS pattern-matching algorithm might be
in order here: The SOS pattern-matching algorithm will always
match the shortest, leftmost string that corresponds to the given
pattern. (This is the same algorithm the SNOBOL languages use.)
This affects the user in several significant ways: First, the
"any number of" operator likes to match zero characters, since
that is the shortest possible string. When "any number of" is
used as the first or last match in a pattern it will always match
zero characters; in those positions it is redundant! Second,
since the "end of line" operator may match either the beginning or
the end of a line, when it is given first in a pattern it will
match the beginning and when given last it will match the end.
Obviously, when it is given in the middle of a pattern other than
SOS.DOC - Changes from Version 21(122) to 23(220) Page 17
one consisting of "any number of" operators colllapsing to zero,
that pattern will never successfully match anything.
2.30 The optional modifiers (",E", ",D", ",nnn", etc.) which may be
specified on the Find, Substitute, Print, and Extend commands and
on the context line search string may now be specified in any
order. However, each modifier may only be specified once. For
the syntax of the Find command, see item 2.47, below.
For the Substitute ("S") command, if ",N" (suppress printing the
changed line) is typed and Decide mode is in effect because either
"/DECIDE" has been set or the ",D" option was given, the effect is
to perform substitutions using the normal Decide operations until
the "G" reply (leave Decide mode) is given, at which time no
further substitutions are typed. This could be very useful for
"debugging" a Substitute command before performing a number of
2.31 Changes have been made in the default range and repeat counts for
the Find and Substitute commands, and for the context line search,
to make the defaults more consistent and rational.
For the Find command, the default when a search string has been
given without a range or count (i.e., a command like "F<string>$",
the normal case) is to search from the current line to the end of
the file for the next single occurrence of the string. When the
search string is not given, either for a "F" or "F$" command, the
default is search from the next line to the end of the preceeding
Find command range (which could be to the end of file by the
preceeding default) for the next single occurrence of the search
string given in the preceeding Find command.
For the Substitute command, the default when the old and new
strings have been given without a range or count is to search from
the current line to the end of the file and make a replacement
only in the first line found which contains the matching string.
When no search strings have been specified, as in "S<CR>", the
default is to search from the next line to the end of the
preceeding Substitute range (which might also have defaulted to
end of file) and make the substitution on the next single matching
line. This is done to make "S" function similarly to the "F"
command, and to minimize the harm done if one types "S"
accidently. However, to permit the user to perform a potentially
large number of pre-specified substitutions, the default for "S$"
command is to search from the next line to the end of the
preceeding Substitute range and make all substitutions.
The context line search follows the same conventions as the Find
Starting the search range with the current line whenever the user
types a new search string (rather than defaulting the search
string with "F$...<CR>", "F<CR>", "S$...<CR>", or "S<CR>") assures
that SOS will never miss a potentiallly matching line. Because
the improvement is an obvious external change to the SOS
SOS.DOC - Changes from Version 21(122) to 23(220) Page 18
specifications, this improvement is under the control of the
"DEFCRL" conditional assembly switch.
2.32 The output produced by the "=STRING" command has been limited to
display only the Find, Substitute, or context line search strings
that the user has actually previously defined.
2.33 The "/NAME" command has been made illegal when "/READONLY" is in
effect, so that the user is prohibited from making a name change
on the file being read and to simplify some internal logic. /NAME
is also illegal on the initial command line or as a SWITCH.INI
parameter for much the same reasons.
2.34 As a convenience for users running SOS on slow terminals, and as
an efficiency improvement, SOS will not type out the Horizontal
Tab following the sequence number when typing a null line.
2.35 To assist users in documenting SOS indirect command files, and to
permit annotation of SOS terminal sessions, SOS now has a comment
command (";"). When ";" is typed as an SOS command, any text
following the ";" through the next Carriage Return or Line Feed
character is ignored.
2.36 Several options have been added to the Exit ("E") and Go ("G")
commands. These are "N" to unsequence (as in "EN" or "GN", which
is identical to "ES" or "GS" but is consistent with PIP's /N
unsequencing switch); "X" to exit (as in "EX" or "GX", which is
identical to "E" or "G" but could help out the user familiar with
TECO); and the new facility "T". The "ET" or "GT" command is
designed to produce continuous textual-format output files in
which both the SOS sequence numbers and Page Marks (including the
Form Feed characters) have been removed.
This continuous-text output option may also be selected by the
"/TEXT" command. Since "/TEXT", "/SEQUENCE" and "/UNSEQUENCE" are
mutually exclusive options, the setting of "/TEXT" is displayed by
the "=SEQUENCE" command.
2.37 Some additional support for users editing BASIC programs with SOS
has been provided.
First, the default for editing or creating any file with the
extension 'BAS' is now "/BASIC". However, this may be overridden
by the "/NOBASIC" switch on the initial command line or in
Second, the default processor to run for a "G" command when
"/BASIC" is set is now "SYS:BASIC".
Third, because the SOS sequence number is part of the syntax of
the BASIC language, the Renumber, Copy, or Transfer commands,
which will modify the existing sequence numbering, produce the
query "Destroy numbering in BASIC file?" when not in Expert mode.
The user may reply "Y" or "N" to the question; the "N" answer
aborts the command and no harm is done.
SOS.DOC - Changes from Version 21(122) to 23(220) Page 19
Fourth, for compatability with BASIC, SOS will not given the "?Bad
BASIC file format" error when a Form-Feed character is the last
character in a BASIC file. Instead, the Form Feed is ignored.
2.39 To permit the user to trade off response time and core size
against the amount of text in core and file wrap-around time, the
"/CORE:nn" switch may be given on the initial command line. This
permits the user to specify the minimum amount of core ("nn") in K
(1024 words = 1 K) that SOS will reserve for the in-core text
buffer. SOS will actually allocate the minimum core size
specified and then utilize all available core up to the next K (or
P) boundary. The default minimum core size is 1.5K, which turns
out to be equivalent to a "/CORE:1" specification. The default
text buffer size may be changed be redefining the assembly
Users may determine the first line number currently in core with
the "=LOC" command and may determine the current core used by SOS
with the Monitor's ^T command. The "/CORE" switch allows SOS
users on Virtual Memory systems to keep larger sections of text
files in core.
2.40 The ^C trapping implementation has been improved. First, when SOS
is at command level (an asterisk prompt has been typed), typing ^C
followed by either a "C" (continue) or "R" (reenter) response will
now reprompt with another asterisk.
Second, when typing commands or text into SOS, typing ^C followed
by either "R" (reenter) or "E" (exit) will take effect
immediately. In the prior implementation, the user had to type a
Carriage Return for the reentry or exit to occur.
Third, the explanatory text typed in response to "H" has been
re-written to make it easier to understand by the casual SOS user.
2.41 As a user-selected option, SOS will now produce a more compact
file format for sequence-numbered output files. In this file
format, lines are not line-blocked; there is no wasted space in
the file for zero "space-filler" words except that the last single
word in a block might be zero to prevent a sequence number word
and its following Horizontal Tab from being split between two
blocks. In one test of a fifty-block MACRO source file, this
option resulted in a 4% reduction in file size. The actual
reduction in size depends on the contents of the data file being
compressed and the cluster size of file structure on which the
file is written. Whatever size reduction is achieved will also be
reflected in a corresponding decrease in the transfer time every
time the file is subsequently read.
This option may be selected by the "/BLOCK" and "/COMPRESS"
switches, which may be given only on the initial SOS command line
or in SWITCH.INI. "/BLOCK" specifies that line-blocking, the
previous SOS file format, should be written; this is the default.
"/COMPRESS" specifies the new compressed file format should be
written. These switches only apply to the format of files written
SOS.DOC - Changes from Version 21(122) to 23(220) Page 20
by SOS (including temporary work files); all versions of SOS will
read files written in either file format. The command "=BLOCK"
will display the file format in which the file is being written.
The default switch value is set with the conditional assembly
We believe that all processors will accept both line-blocked and
compressed SOS files without change; however, because not every
processor has been tested the default has been set to "/BLOCK".
For example, we have confirmed that FILCOM will not find any
differences between line-blocked and compressed versions of one
sequence-numbered file. If a user determines that all the
programs that (s)he runs will accept compressed SOS files, that
user's own default may be changed with a SWITCH.INI parameter.
Users are requested to report any programs which will not read
compressed SOS files.
2.42 The correct range of deleted lines is reported in Novice mode for
the "D", "R", and "T" commands, when the range spanned more than
one page and no lines were deleted on the first page.
2.43 The range definition for the Delete ("D") command has been changed
to correspond to that of the Transfer ("T") and Copy ("C")
commands. This change only affects Delete operations in which the
first line number as not been specified, as in "D/2" or "D/3:/5".
In these cases, the Delete command now deletes both the Page Mark
preceeding the specified page (before page 2, and page 3,
respectively in the examples) as well as the contents of the
specified pages. Thus, the first example would delete the
contents of page 2 as well as the Page Mark preceeding page 2,
while the second example would delete the contents of, and Page
Marks preceeding, Pages 3, 4, and 5. This would be the same text
which would be moved if the range specifier was used as the source
lines of a Transfer or Copy command. This change also means that
the confirmation message "Massive delete ok?" is produced only
when SOS is going to delete one or more Page Marks from the file
2.44 Bugs have been fixed with the Replace command so that
multiple-page replacements will never be inserted so as to create
an Order error.
2.45 The Kill Page-Mark command ("K") has been extended to permit
multiple Page Marks to be killed with a single command. The
syntax of the K command is now "K/n:/m", where "n" is the page
number of the first Page Mark to be killed and "m" is the page
number of the last Page Mark to be killed. As before, only one
Page Mark may be removed, as in "K/2".
In SOS notation, the "/n" Page Mark is the one preceeding page
"n". Because there is no Page Mark preceeding the first page of a
file (SOS treats the beginning of the file as if it were a Page
Mark), the command "K/1" (or the equivalent "K/^") can't do
anything. However, for consistency, the command "K/1" is legal;
furthermore, "/1" may be used as the first page of range of Page
SOS.DOC - Changes from Version 21(122) to 23(220) Page 21
Marks to be deleted. Thus, for example, the command "K/1:/*" will
delete all Page Marks in a file. To prevent order errors when
deleting Page Marks, use the command "NP" first to monotonically
renumber the affected pages of the file.
2.46 To eliminate one potential source of confusion, SOS will not
permit users to number a line as "00000", by insertion,
replacement, transfer, copy, or renumbering. If users attempt to
do so, SOS will start the first line number at the increment being
used for the operation.
2.47 Three significant extensions have been made to the Find ("F")
First, a "find not" option (",-") has been added; when in
"find not" mode the Find command reports a match on every line
which does not contain the given pattern. We expect this facility
to be most useful for applications such as finding all non-comment
lines in a FORTRAN program.
Second, a Decide option (",D") has been added; this is very
similar to the Decide option of the Substitute command.
Third, the number of operations that may be performed on lines
found by a Find command has been increased from one (Alter) to six
(Alter, Insert after, Replace, Delete, Mark, and Extend). These
operations may be permanently set on the Find command (as in ",A"
for Alter), or if none has been specified on the command one may
be selected as a Decide option reply (as in "A" to alter the found
line, similar to the Substitute command Decide option
Thus, the complete Find command syntax is as follows:
F <string> $ [<range>] [,nnn] [,E] [,N] [,D] [,K] [,-]
By item 2.30, above, the command modifiers (optional arguments
preceeded by a comma) may be given in any order and in any
combination. However, only one of the operations (Alter, etc.)
may be specified on a single Find command. Also, notice that the
Delete operation is specified with the letter "K", because "D" is
used for the Decide option.
The effect of each of these new options is as follows:
Decide (",D"): The found line is typed (only the line number
if ",N" parameter has been given) and the "D*" prompt is given, as
described in item 2.27, above. The legal responses are " "
(accept the line), Rubout (reject the line), "E" or "Q" (terminate
the Find command), "G" (accept the line and terminate Decide
SOS.DOC - Changes from Version 21(122) to 23(220) Page 22
option), and if no operation has been specified any operation may
be requested using the operation letter ("A", "I", "R", "K", "M",
or "X"). The Decide option was primarily implemented to permit
the user to control what lines were operated on by a pre-selected
operation. However, it is also useful to exploring a file by
giving a large range and high repeat count on the Find command,
and then terminating the Find or operating on the found lines by
the proper Decide reply.
Insert (",I"): The found line is typed and a sequence number
is chosen and typed to permit insertion of a single line right
after the found line.
Replace (",R"): The found line is typed and then deleted. In
Novice mode, the "Line deleted" message is typed. Then the line's
sequence number is typed to permit insertion of a single line at
the same place.
Delete (",K"): The found line is typed and then deleted. In
Novice mode, the "Line deleted" message is typed.
Mark (",M"): The found line is typed and a Page Mark inserted
before the found line, thus making it the first line on a new
page. Unless "/NONUMBER" is set, the new page number is typed.
Extend (",X"): The found line is typed in Alter mode (unless
",N" has been specified) and the user can type extra text on the
end of the line.
Alter (",A"): Functions as presently implemented. In normal
operation, the Alter-mode cursor is positioned before the matching
search string in the found line; in "find not" mode the cursor
remains positioned at the left margin (see item 2.4.11, above).
Note for both Insert and Replace, if an Altmode ("$") is typed as
the first character of the line nothing is inserted. However, if
an Altmode is used to terminate the line of inserted text, there
is no special action.
2.48 The "find not" facility (described in 2.47, above) may also be
used for a context line search. The (",-") operator is used to
specify "find not" for a context line search, just as it is used
for the Find command.
2.49 SOS will now permit switches to be given in the command string
between the input and output file specifications, as in
However, the user should be aware that SOS switches are not
file-specific, i.e., the switch is not associated with the
filespec it follows; rather, this change merely permits the user
to type SOS command strings with more flexibility.
2.50 The Stanford-type case inversion commands ("VV", "VU", and "VL")
SOS.DOC - Changes from Version 21(122) to 23(220) Page 23
have been implemented. These commands take as arguments a range
of lines, optionally followed by ",S" to suppress printing line
numbers, and operate on the case of all letters found on all lines
within the range; all the lines in the range are typed. The
commands are "VV", invert case; "VU", set to upper case; and
"VL", set to lower case.
2.51 In /C128 mode, the Rubout character (177 octal) may now be entered
into text or used as a search character by typing the character
pair "?\". As before, Rubout will type out in C128 mode as "?\".
2.52 When in /NONUMBER mode, SOS will now suppress the next "*" command
following a "P" or case-inversion ("VV", "VU", or "VL") command
when the ",S" option is typed.
2.53 As an aid to users who enter primarily lower-case text with SOS
via both upper and upper-lower case ASCII terminals, SOS will now
force /UPPER as well as /M37 when run from a terminal that has
"SET TTY LC" in effect. This change permits such users to have
/LOWER set in their SOS SWITCH.INI files, so that /LOWER will
apply when using SOS from upper-case-only ASCII terminals, such as
the Teletype Model 33, but /UPPER will be set for upper/lower case
ASCII terminals, since the user can control case with that
terminal's shift key. If this feature is not desired, the user
may override it by setting the /M37 switch.
2.54 SOS now supports the SAIL compiler's syntax-error interface. This
feature gives the SAIL user the option, when a SAIL syntax error
is detected, of immediately editing the erroneous file, beginning
at the line where the error was detected.
2.55 To compensate for terminal output timing problems, SOS now has a
special routine which makes sure all output generated by SOS has
been typed or suppressed before ^O terminal status is cleared.
(See SPR 10-17094, December 1, 1975 DECsystem-10 Dispatch, p.
57). SOS clears ^O before typing the "*" prompt, before typing
any error messages, and before typing any messages that will
require a response from the user.
2.56 As a safety measure to prevent the accidental deletion of edited
files, the ED command (Exit with deletion) now asks for a
confirmation by typing
Really delete the file? (Y or N)
If you type "N", SOS ignores the "ED" command and returns to
asterisk level. If you type "Y", SOS deletes the file and exits,
as before. See item 2.5.11, above, for a description of the
effect of the "ED" command.
2.57 To assist users in aligning text to specific columns within a
file, SOS now has the "=COLUMN command. This command types a
template, showing column numbers, across the width of the
terminal. The width of the terminal is determined by the
"SET TTY WIDTH" command (initially set to 72 by the Monitor for
SOS.DOC - Changes from Version 21(122) to 23(220) Page 24
most terminals). The column template has the format
123456789 123456789 123456789 123456789 123...etc.
and respects the /NONUMBER switch, which causes sequence numbers
to be suppressed.
2.58 As an abbreviation for common range specifications, SOS now
recognizes certain symbolic ranges. These are as follows:
Symbolic range Replacing Meaning
BF:... ^/^:... Beginning of file
BF!... ^/^!... (Same)
...:EF ...:*/* End of file
EF ^/^:*/* Entire file
BF:EF ^/^:*/* (Same)
These symbolic ranges may be used as part of any range
specification (e.g., on a Find command). However, they may not be
used as a line number (e.g., on an Insert command), with line or
page number arithmetic (e.g., EF-10), or any combination other
than as shown (BF, EF:..., EF!..., ...:BF are all illegal.)
The symbolic range specifications differ from the "^/^" and "*/*"
line numbers in that "BF" and "EF" represent the lowest or highest
lines that possibly could be in a file while the "^" and "*" forms
represent the current lowest or highest lines. This means that
symbolic ranges are more efficient since they do not have to
inspect the file to find an actual lowest or highest line number.
Thus, use of the "BF" and "EF" range specifications may prevent
unnecessary wrap-arounds of the file being edited.
2.59 The error message "% Illegal when READONLY" ("%IRO" in /EXPERT
mode) has been added to better identify the error message given
when an SOS command which would modify the file (C, D, I, J, JU,
JR, JL, JC, JW, K, M, N, R, S, T, VV, VL, VU, W, X) is typed while
in /READONLY mode. Previously, this error was identified as
"% Illegal command" (%ILC).
SOS.DOC - Changes from Version 21(122) to 23(220) Page 25
3.0 KNOWN BUGS, DEFICIENCIES, and SUGGESTIONS.
3.1 In Alter mode, the commands "-K" and "-S" operate through the
specified character, while in a forward direction they only
operate to the character. This has not been changed because it
might have been intended by prior SOS designers.
3.2 Two asterisks are printed if the user gives an "N" answer to the
confirmation request following an "ED" command when reading a file
in /READONLY mode. Note that this bug probabily will not be fixed
because of the obscurity of the conditions that produce the bug,
the cosmetic nature of the bug, and relatively large patch
required to fix it.
3.3 Error messages from OPEN, LOOKUP, ENTER, and RENAME UUOs with the
exception of the initial LOOKUP of the file being edited are very
cryptic. This code should be rewritten to make it conform to
current DECsystem-10 coding practice.
3.4 Some column-oriented facility, including expansion of Horizontal
Tab characters, should be provided. A possible goal would be to
make SOS be able to mimic the drum-card facility of a keypunch.
Note for this to be properly done, the Monitor would have to be
changed to permit the user to define column numbers for <HT>
spacing, possibly via a TRMOP. extension.
3.5 Permitting the user to have modifiable and executable scratch-pad
memory, similar to TECO's Q-registers, would be most useful. One
possible implementation would be providing a dynamically allocated
"Page 0" (nnnnn/0) facility, which could be edited with all SOS
3.6 Permit the user to pre-specify a range and then utilize some
shorthand notation to reference the first and last lines of that
3.7 Make SOS more tolerant of "junk" input files, such as binary files
or those corrupted by TECO with random bit 35's on.
3.8 Accept device names as well as file names in response to the
"File: " prompt typed when an error is detected after an "E" or
3.9 Permit the user to specify a maximum legal value for an increment
on the "N" (and other) commands.
3.10 Add more "Help"-type facilities, such as "=HELP", "/HELP", or
3.11 To permit the complete set of SOS features to be available without
the average SOS use paying a penalty in high-segment core size,
split SOS into several high segments, one which contains the
commonly-used SOS commands and others which contain those plus the
rarely-used features. Add code to select the proper segment based
on the SOS commands each user has typed.
SOS.DOC - Changes from Version 21(122) to 23(220) Page 26
3.12 To reduce core for production (SYS:) versions of SOS, add a DEBUG
conditional assembly switch to eliminate the DDT-oriented
3.13 Remove SOS's sensitivity to quota problems when saving the edited
file ("E" or "W" command or auto-save operation) and when
unsequencing. Note that as a temporary solution, typing a file
spec with a different PPN in response to the "File: " prompt
should permit SOS to write the file successfully.
3.14 SOS will give a syntax error attempting to scan past a PPN
specification on a R or RUN command.
3.15 Other than this file and SOS.HLP there is no documentation
describing version 23(220). Someone should produce and make
available an undated version of the SOS User's Guide.
SOS.DOC - Changes from Version 21(122) to 23(220) Page 27
4.0 INSTALLATION INSTRUCTIONS.
To install SOS, put the following files on the system:
SOS.SHR (To SYS:) For 6.02 and later Monitors, use a
GET/NSAVE command sequence to convert
to the more efficient SOS.EXE format
SOS.HLP (To HLP:) This help file has been rewritten for
SOS is designed to be run by the SOS Monitor command. If you want
to eliminate Monitor command support for LINED, SOS may also be
run by the EDIT or CREATE commands. This version of SOS does its
own CCL command scanning and temporary-file management. It does
not need to be run by COMPIL, which reduces system overhead. (It
will also work with COMPIL if the SAIL support has been assembled
into SOS. This is the default setting.) The following patches
will provide the Monitor interface for SOS:
In the NAMES macro in COMCON, add:
Somewhere in COMCON, add:
$RNSOS: MOVE P2,SOS ;GET PROGRAM NAME
JRST RUNAME ; & GO RUN IT
To replace LINED with SOS, in the NAMES macro in COMCON
Replace: C EDIT,CCLRUN,RUNFLG
with: C EDIT,$RNSOS,RUNFLG
Replace: C CREATE,CCLRUN,RUNFLG
with: C CREATE,$RNSOS,RUNFLG
These patches have been tested in 5.07B; similar patches should
apply to 6.02 and later Monitors. SOS will run with any Monitor
that supports extended LOOKUP and ENTER UUOs, and the PATH. UUO.
As distributed, SOS 23(220) runs in 4+9K. While larger than
previous versions of SOS, because of the efficiency improvements
this version gives good response time when running on loaded
systems (KA-10 with 83K of user core at Brookings). Installations
may vary the size of SOS by assemblying in or out several of the
optional features. With all features assembled in, SOS is 4+10K;
with all features assembled out, SOS might reduce to 4+8K (or
maybe 3+8K, we have not tested this).
The following are the conditional assembly switches designed to be
changed by an installation:
Type Switch Default Description
-------- ------ ------- ------------------------------------
Features: JUSTSW Off Justification features
CRYPSW On File encryption feature
SOS.DOC - Changes from Version 21(122) to 23(220) Page 28
PPNTSW Off Formatted Print command features
EXTEND Off Context line search feature (This
feature has generally been replaced
by the extensions to the Find
command described in item 2.27,
LSTSW On Listing ("L") command feature (Very
useful for GALAXY immediate
DEFCRL On Improvements to F & S command range
& repeat count defaults (see 2.31,
above.) - Should leave on
FTIMPCPY On "Implied copy" file access feature
(see 2.5.2, above.) - Should leave
CCLSW On CCL features (also used by SAIL
support) - Should leave on
TEMPC On TMPCOR features - Should leave on
Parameters: DEFCOR 1.5K Default minimum size of in-core text
buffer (see 2.39, above).
DEFBLK /BLOCK Default output file format (see
DEFBAK /BAK Default backup file option (see
DFC128 "?" Default /C128 escape character (see
SRNUM 10. Number of parallel search strings
SFDLVL 6 Depth of SFD nesting plus 1 (permits
SRBLG 200. Number of characters in a search
MXWPL 100. Maximum number of words per line
(equals 500 characters)
LSNUM 3 Number of nested context line
searches (if EXTEND on)
PGSZ 55. Number of lines per typed page ("P"
command - if PPNTSW on)
FULLPG 65. Length of terminal typed page ("P"
command - if PPNTSW on)
%LPP 53. Number of lines per listing page
("L" command - if LSWSW on)
MINDSK 5. Minimum disk space to attempt output
OVRDRW 100. Disk space overdraw allowance
PDLSIZ 200 Push-down list size
Note that Brookings system programming convention is to use
conditional assembly switches of the form "%SSnnn" to identify
modifications in MACRO programs. These switches are used mainly
to document changes (showing old code and locating new code in the
CREF listing); other combinations and settings of these switches
have not been tested.
SOS.DOC - Changes from Version 21(122) to 23(220) Page 29
5.0 SPRS FIXED BY THIS RELEASE
The following is a list of all SPRs examined when developing this
version of SOS and the resolution of problems raised in each SPR:
SPR # Submitted by: Resolution
-------- ----------------------- --------------------
10-13986 Worcester Tech Fixed
10-14005 Worcester Tech User problem
10-14298 Harvard Business School Rejected
10-14333 Worcester Tech User problem
10-14375 Harvard Business School No problem
10-14404 Harvard Business School Assembly option PPNTSW
10-14411 Harvard Business School Rejected
10-14419 Harvard Business School Fixed
10-14420 Harvard Business School Fixed
10-14700 Brookings SSCC Fixed
10-14766 Harvard Business School Fixed
10-14767 Harvard Business School Fixed
10-14768 Harvard Business School Fixed
10-14769 Harvard Business School See 2.26, above
10-14770 Harvard Business School Not reproducable
10-14771 Harvard Business School Fixed
10-14779 Harvard Business School Rejected
10-14791 National Security Agency Complex problem
10-14835 Harvard Business School Fixed
10-15204 National Institutes of Health Fixed
10-15205 National Institutes of Health Fixed
10-15206 National Institutes of Health Fixed
10-15327 Atomic Energy of Canada, Ltd. Fixed
10-15354 Harvard Business School Fixed
10-15355 Harvard Business School Complex problem
10-15723 CH2M Hill Fixed
10-15778 Stevens Tech Fixed
10-15796 Tufts Univ. Fixed
10-15934 CH2M Hill Possible fix
10-15942 Harvard Business School Fixed
10-16012 Atomic Energy of Canada, Ltd. Fixed
10-16374 Western Electric Fixed
10-16375 Western Electric Complex problem
10-16408 Harvard Business School Fixed
10-16564 National Institutes of Health Fixed
10-16595 National Institutes of Health User problem
10-16596 National Institutes of Health Fixed
10-16597 National Institutes of Health Fixed
10-16598 National Institutes of Health Fixed
10-16622 National Institutes of Health Fixed
SOS.DOC - Changes from Version 21(122) to 23(220) Page 30
10-16637 National Institutes of Health Fixed
10-16645 National Institutes of Health Fixed
10-16646 National Institutes of Health Fixed
10-16651 Harvard Business School Might be fixed
10-16674 Harvard Business School Fixed
10-16786 Algonquin College Rejected
10-16813 National Institutes of Health Fixed
10-16814 National Institutes of Health Fixed
10-16817 National Institutes of Health Fixed
10-16819 National Institutes of Health Fixed
10-16950 DEC-Maynard Fixed
10-16959 Atomic Energy of Canada, Ltd. Fixed
10-17013 National Institutes of Health Fixed
10-17068 British Airways Partial fix
10-17069 British Airways Complex problem
10-17070 British Airways Complex problem
10-17071 British Airways Fixed
10-17073 British Airways Not fixed
10-17074 British Airways Monitor problem
10-17075 British Airways Fixed
10-17076 British Airways Complex problem
10-17077 British Airways Fixed
10-17078 British Airways Not reproducable
10-17079 British Airways Complex problem
10-17080 British Airways Fixed
10-17081 British Airways KJOB problem
10-17082 British Airways Fixed
10-17083 British Airways Partial fix
10-17084 British Airways Fixed
10-17085 Caltech Fixed
10-17148 British Airways Rejected
10-17151 British Airways Fixed
10-17195 National Institutes of Health Complex problem
10-17230 British Airways Fixed
10-17235 University of Illinois Fixed
10-17266 National Institutes of Health Fixed
10-17302 National Institutes of Health Fixed
10-17325 Cornell Univ. Fixed
10-17337 National Security Agency Complex problem
10-17370 University of Illinois Fixed
10-17423 National Institutes of Health Fixed
10-17424 National Institutes of Health Rejected
10-17459 Rutgers Univ. Fixed
10-17585 National Institutes of Health Fixed
[End of SOS.DOC]