Burroughs MCP: Advanced CANDE
In the last post we looked at using the CANDE command shell for basic program editing and execution; this time we'll go into some more advanced features.
Security
By default, files are not visible to other time-sharing users on
CANDE. With the UNLOCK
command you can make them visible and
read-only to others; PUBLIC
makes them read/write. LOCK
returns
files to their default state. You can see the protection on files with
LIST FILES
.
UNLOCK HELLO # LIST FILES 09/26/26 RUPERT 02:27 PM NAME TYPE RECS SEGS CREATED ACCESSED W/R W/B S-F LOCKD BY HELLO BASIC 4 10 09/23/25 * 09/26/25 10 300 7 UNLOCKD HELLO OBJ(B) 13 13 09/23/25 * 09/26/25 30 30 7 UNLOCKD 2 FILES 23 SEGMENTS 17 RECORDS
Other users can access them by adding a /
then the user name, eg
RUN HELLO/RUPERT
.
It's also possible to apply more granular permissions with a GUARD
file. You run the interactive GUARD
command to create a list of
names and permissions, then apply via LOCK WITH
. For example, to
grant read only access to a staff group containing FRED and MARY:
GUARD RUNNING NEW OR OLD LOCK FILE??NEW LOCK FILE NAME??STAFF READ ONLY NAMES??FRED,MARY READ/WRITE NAMES?? ADD, DELETE, LIST, SAVE, OR QUIT? ?LIST (R) FRED (R) MARY ADD, DELETE, LIST, SAVE, OR QUIT? ?SAVE LOCK FILE SAVED. ADD, DELETE, LIST, SAVE, OR QUIT? ?QUIT THANK YOU. END GUARD .0 SEC. LOCK HELLO WITH STAFF #
Note that this security model only applies to CANDE. Batch jobs can access any file on the system.
Scheduling
You can run a sequence of commands - like a Unix shell script - using
the SCHEDULE facility. First you need to create a DATA file containing
the commands. DATA files do not have line numbers and their contents
can be entered by starting a line with ?DATA
and terminating with
?END
.
CREATE HRUN DATA FILE:HRUN - TYPE:DATA -- CREATED ?DATA OK LOAD HELLO LIST RUN ?END
You then issue the SCHEDULE
command, giving the file to send output
to as the second parameter. The AFTER time
parameter is optional,
without it the job should be scheduled as soon as possible.
SCHEDULE HRUN TO HOUT AFTER 1530
You can then use STATUS
with the output file name to see its status,
or STOP
to cancel it.
STATUS HOUT SCHEDULED
However, in practice I have found that these jobs never get executed - they stay in state SCHEDULED forever. Let me know if you find a way to get this working.
Redirection
This is a way to make a program send input/output to a different place without changing the source code. Say you have this simple Algol program:
FILE:P42 -10/02/25 6:41 PM.
100 BEGIN
110 FILE OUT TYPEWRITER 19 (1, 10);
120 INTEGER J;
130 J := 42;
140 WRITE(TYPEWRITER, /, J);
150 END.
which if run prints 42 to the user's terminal
RUN RUNNING 42, END P42 .0 SEC.
In the code, the FILE
statement defines an output file called
TYPEWRITER to attach to unit 19, which is the user's terminal. (We'll
go into I/O on Algol in more detail in a later post).
Using the CANDE EQUATE
verb you can redirect this to a file or
another device. The file must already exist before running. So if you
wanted to send output to MYOUT
:
CREATE MYOUT SAVE LOAD P42 EQUATE TYPEWRITER=MYOUT RUN RUNNING END P42 .0 SEC. LIST MYOUT FILE:MYOUT -10/02/25 6:37 PM. 42, END QUIKLST .0 SEC.
Note that the EQUATE
only lasts until the next RUN
command, but
you can stack up more than one EQUATE
before running.
Chat
There's a way to send single line messages to other users or the
operator via the TO
command. For example, if It was logged in as
GUEST and wanted to send a message to RUPERT:
TO RUPERT HELLO
and if he was logged in he would see:
** FROM GUEST (03) HELLO
With the first parameter set to SPO it gets sent to the operator's console.
TO SPO HELP I LOST MY TAPE
and they would see:
R ** FROM GUEST(03) HELP I LOST MY TAPE
Extensions to CANDE
It's not possible for an end user to add new verbs to CANDE, nor can
they use other compilers beyond those already defined. However, all
Burroughs sites would receive the source code for CANDE so it would be
possible for the system programmers to add these. For example, Georgia
Tech added a CALL
command to execute programs like GPSS or APL.
Command summary
Finally here's a list of all commands on CANDE.
In the table, f
is a file name; if not given, it assumes the work
file. Note that if you have say a file FOO which you load into
work and then change, COMPILE will compile that working file, but
COMPILE FOO will compile the old version on disk.
Several commands have synonyms not listed here: for example DO does the same as EXECUTE
APPEND | Add a file to the current file |
BYE | Log off |
CC | Set line length, SHORT=72, LONG=unlimited |
CHANGE PASSWORD | Change user's password |
CHANGE f TO fn | Rename file to f2 |
CHANGE f TYPE TO t | Change type of file f to t |
CHARGE | Enter account to charge time to |
COMPILE f | Compile file |
COPY f | Make a copy of f to file or device |
CREATE f t | Create a new file |
DELETE | Delete all or parts of the work file |
DISPLAY | Like list, but use 8 chars for line number |
EQUATE | Reassign references to I/O devices |
EXECUTE f | Execute a file |
FILES | List files in directory, short form |
FIND f | Find text in file |
FIX | Edit the program |
GUARD | Allow access to files |
HELLO | Log in again without disconnecting line |
LIST | List program lines |
LIST FILES | List files in directory, long form |
LOAD | Load a program into the work area |
LOCK | Restore file security to private |
MERGE f | Merge a file into the work file |
MONITOR f | Record an audit log of changes to f |
Like LIST, but suppresses the header | |
PUBLIC | Make a file read/write by all |
PUNCH | Punch to terminal paper tape |
REMOVE | Remove a file from disk |
RENAME f | Rename work file to f |
RESEQ | Renumber sequence numbers |
RESET | Clear an option from SET or MONITOR |
RUN | Compile (if needed) and execute |
SAVE | Save work file to disk |
SCHEDULE | Run a command in batch |
SEQ | Set up line numbers for entry |
SET | Set options for verbosity and messages |
STATUS | Show status of scheduled jobs |
STOP | Stop a scheduled job |
TAPE | Read a file from terminal paper tape |
TIME | Show stats on current session |
TO | Send a message to a user / the operator |
TYPE | Change a file's type |
UNLOCK | Allow read access to a file |
WHATS | Describes a file |
More information
On bitsavers, the Time-sharing System User's Guide is the best first reference; note this is from a different version of MCP so some of the commands may differ. The Georgia Tech B5700 Time-sharing System Manual is a more complete reference, giving examples of each command, but note this also contains extensions added by Georgia Tech not available on the base Burroughs system.
Also of interest is The Complete CANDE Primer in the Charles Babbage Institute Burroughs collection. However this is from 1980 so for a much enhanced version of CANDE compared to what we have today.
Questions, corrections, comments
I welcome any questions or comments, and also especially any corrections if I have got something wrong. Please email me at rupert@timereshared.com and I will add it here and update the main text.