DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦a77f64a5d⟧ RcTekst

    Length: 87168 (0x15480)
    Types: RcTekst
    Names: »99110080.WP«

Derivation

└─⟦7fab0c8ae⟧ Bits:30005866/disk3.imd Dokumenter i RcTekst format (RCSL 99-1-*)
    └─⟦this⟧ »99110080.WP« 

RcTekst


╱04002d4e0a00060000000003013c3100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
┆a1┆┆b0┆┆f0┆┆a1┆┆e1┆┆06┆i↲
↲
┆b0┆┆a1┆Foreword↲
↲
In System Utility Package, SW8010/2, Release 1.0, ↓
1984.10.01, four new programs, save, incsave, load and ↓
incload have replaced the two programs save and load ↓
(issued in the present package, though, with the new names ↓
save13 and load13).↲
↲
The appearance of fixed media discs and the increase in disc ↓
storage capacity together with the appearance of high ↓
throughput magnetic tape stations make desirable backup ↓
utilities which operate fast and with possible option to ↓
operate on recently updated parts of the filesystem.↲
↲
Special input/output operations have been developed to ↓
reduce the transport overhead and to even render superfluous ↓
RC8000 data transport.↲
↲
Built upon the principles of the wellknown save and load ↓
programs new ones have been made offering↲
↲
- the same parameter structure↲
- the same multi volume, dual copy option↲
- the same low level demands on other users/total system↲
- the same freedom in choise of backup device↲
↲
but with↲
↲
- full magnetic tape speed performance↲
- possibility for backup on incremental basis↲
- drastically improved file relocation and reload↲
↲
at the cost of a changed magnetic tape format. The changed ↓
format implies that files saved with the previous save ↓
program cannot be loaded by the new load program. For that ↓
purpose the old load program will be issued, though, having ↓
the name load13.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆06┆ii↲
↲
The new program, save, is backwards compatible with the save ↓
program in version 1, release 13.0 with regard to↲
↲
- parameter syntax↲
↲
i.e. the function of the program and the parameter set is a ↓
superset compared to previous one.↲
↲
This means that any jobfile containing call of the program ↓
save will work properly with the new release of save ↓
installed.↲
↲
The two programs save and incsave equal their predecessor, ↓
save, in the following points:↲
↲
- outfile parameter works as for other utility programs↲
- ┆84┆infile parameter allowed anywhere in the parameter list in ↓
┆19┆┆82┆┄┄a nested way↲
- ┆84┆no label check in the magnetic tape file before it is ↓
┆19┆┆82┆┄┄overwritten↲
- up to 32 tape volumes in two copies in one job↲
- the tapes in the two copies need not have the same length↲
- backing storage areas are protected during the save↲
- entries are saved in the same order they are specified↲
- ┆84┆the search in the catalog for entries specified by name is ↓
┆19┆┆82┆┄┄very fast↲
- ┆84┆change of scope even for entries saved with their base ↓
┆19┆┆82┆┄┄values↲
- extensive error and exception reporting↲
↲
The main differences from earlier releases are:↲
↲
- the tape format has changed completely↲
- ┆84┆the dumplabel record contains an identification of the ↓
┆19┆┆82┆┄┄back up↲

════════════════════════════════════════════════════════════════════════
↓
┆06┆iii↲
↲
- ┆84┆a save catalog is created in a backing storage area ↓
┆19┆┆82┆┄┄cotaining a full description of the backup made, including ↓
┆19┆┆82┆┄┄an entry for each file to be saved↲
- ┆84┆as the backup proceeds, the entries in the save catalog ↓
┆19┆┆82┆┄┄become updated with tape identification and position↲
- ┆84┆each volume tape in the sequence contains as the first ↓
┆19┆┆82┆┄┄data area after the dump label record a copy of the save ↓
┆19┆┆82┆┄┄catalog, i.e. the catalog is fully updated for all entries ↓
┆19┆┆82┆┄┄backed up so far.↲
- ┆84┆the program incsave leaves the save catalog as a permanent ↓
┆19┆┆82┆┄┄file ready to be used for later relocation and reload of ↓
┆19┆┆82┆┄┄files as well as for later documentation of the backup ↓
┆19┆┆82┆┄┄performed↲
- ┆84┆the possibility in herent in the RC8000/IDA disc ↓
┆19┆┆82┆┄┄controller for transfer of backing storage areas from disc ↓
┆19┆┆82┆┄┄to tape connected to the same controller without engaging ↓
┆19┆┆82┆┄┄the RC8000 bus and memory is fully expoited in the two ↓
┆19┆┆82┆┄┄programs↲
- ┆84┆transfer of backing storage areas from disc to tape not ↓
┆19┆┆82┆┄┄connected to the same RC8000/IDA disc controller bound to ↓
┆19┆┆82┆┄┄engage the RC8000 bus and memory takes place by new record ↓
┆19┆┆82┆┄┄procedures performing multi buffered "output of previously ↓
┆19┆┆82┆┄┄input" without in-memory buffer data movement, thus ↓
┆19┆┆82┆┄┄decreasing the cpu load↲
- ┆84┆transition of mode of operation between the two i/o ↓
┆19┆┆82┆┄┄concepts is done automatically dependent of the actual ↓
┆19┆┆82┆┄┄tape mounting and the actual disc involved↲
- ┆84┆the program incsave offers a concept of incremental backup ↓
┆19┆┆82┆┄┄based on levels and shortclock/latest changed↲
- ┆84┆the new program will need at least 6 area processes and at ↓
┆19┆┆82┆┄┄least as many message buffers as area processes with a ↓
┆19┆┆82┆┄┄minimum of 6 and a maximum of 11.↲

════════════════════════════════════════════════════════════════════════
↓
┆06┆iv↲
↲
- ┆84┆output of filemarks, which in the tape driver in the ↓
┆19┆┆82┆┄┄device controller as well as in IDA801 becomes output of ↓
┆19┆┆82┆┄┄two filemarks and a reposition in between, will only ↓
┆19┆┆82┆┄┄happen when a volume tape runs full or when the backup is ↓
┆19┆┆82┆┄┄completed - in the previous release of save it happend ↓
┆19┆┆82┆┄┄after output of the last block of each backing storage ↓
┆19┆┆82┆┄┄area.↲
↲
On the following pages the new manual for save and incsave ↓
appear.↲
↲
Chapters 1 and 2 are an introduction with examples. ↲
↲
Chapter 3 and 4 describe the conventions of call and the ↓
function of the parameters.↲
↲
Chapter 5 sums up the questions and answers concerning ↓
compatibility regarding the programs save and load in ↓
earlier version as well as regarding the new programs ↓
inbetween.↲
↲
Chapter 6 and 7 are descriptions of implementation details ↓
and exact formats, and are not prerequisites for normal use ↓
of the programs.↲
↲
Chapter 8 and 9 describe the requirements of a job process ↓
in order to be able to run the programs and the error ↓
messages comming from the programs.↲
↲
Chapter 10 gives further examples.↲
↲
Chapter 11 to 20 are parallel descriptions of the program ↓
incsave.↲
↲
Finn G. Strøbech↲
A/S Regnecentralen, March 1985.↲

════════════════════════════════════════════════════════════════════════
↓
┆06┆v↲
↲
┆b0┆┆a1┆TABLE OF CONTENTS┆05┆PAGE↲
↲
1.  INTRODUCTION SAVE ..................................   1↲
↲
2.  EXAMPLES ...........................................   2↲
    2.1  Example 1 .....................................   2↲
    2.2  Example 2 .....................................   2↲
    2.3  Example 3 .....................................   3↲
    2.4  Example 4 .....................................   3↲
    2.5  Example 5 .....................................   4↲
↲
3.  CALL ...............................................   6↲
    3.1  Outfile .......................................   6↲
    3.2  Mount Parameter ...............................   6↲
    3.3  Tape Parameter ................................   7↲
    3.4  Special Parameter .............................   7↲
    3.5  Save Specifier ................................   7↲
         3.5.1  Modifier ...............................   8↲
         3.5.2  Disc Specifier .........................   8↲
         3.5.3  Entry Specifier ........................   8↲
    3.6  Infile Parameter ..............................   9↲
↲
4.  FUNCTION ...........................................  10↲
    4.1  Function, Outfile Parameter ...................  11↲
    4.2  Function, Mount Parameter .....................  11↲
    4.3  Function, Tape Parameter ......................  12↲
    4.4  Function, Special Parameter ...................  13↲
    4.5  Function, Save Specifier ......................  15↲
         4.5.1  Modifier ...............................  16↲
                4.5.1.1  Changedisc ....................  16↲
                4.5.1.2  Newscope ......................  17↲
         4.5.2  Disc Specifier .........................  17↲

════════════════════════════════════════════════════════════════════════
↓
      ┆06┆vi↲
↲
┆b0┆┆a1┆TABLE OF CONTENTS (continued)┆05┆PAGE↲
↲
         4.5.3  Entry Specifier ........................  18↲
                4.5.3.1  Name ..........................  18↲
                4.5.3.2  Scope .........................  19↲
                4.5.3.3  Docname .......................  21↲
    4.6  Function, Infile Parameter ....................  21↲
    4.7  Alternative and Dummy Parameter Names .........  22↲
↲
5.  COMPATIBILITY ......................................  24↲
↲
6.  IMPLEMENTATION DETAILS .............................  26↲
    6.1  Use of Save Catalog ...........................  26↲
    6.2  Handling of Magnetic Tape .....................  29↲
         6.2.1  Mount Parameters .......................  29↲
         6.2.2  Tape Parameters ........................  31↲
    6.3  Handling of Backing Storage Areas .............  31↲
    6.4  The Input Output Strategi .....................  34↲
         6.4.1  Local Copy Transfer ....................  34↲
         6.4.2  Trans Memory Transfer ..................  38↲
↲
7.  EXACT FORMATS ......................................  40↲
    7.1  Save Catalog Format ...........................  40↲
    7.2  Magnetic Tape Format ..........................  44↲
         7.2.1  Dump Label Blocks ......................  44↲
         7.2.2  Save Catalog Blocks ....................  46↲
         7.2.3  Sync Blocks ............................  46↲
         7.2.4  Partial Catalog Blocks .................  46↲
         7.2.5  Data Area Blocks .......................  47↲
↲
8.  REQUIREMENTS .......................................  48↲
    8.1  Memory ........................................  48↲
    8.2  Area Process and Buffer Claim .................  49↲
    8.3  Temporary Entries and Segments ................  49↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆┆e1┆┆f0┆┆06┆vii↲
↲
┆b0┆┆a1┆TABLE OF CONTENTS (continued)┆05┆PAGE↲
↲
9.  ERROR MESSAGES .....................................  51↲
    9.1  Parameter Alarm ...............................  51↲
    9.2  Parameter Warning .............................  52↲
    9.3  Entry and Save Specifier Warnings .............  54↲
    9.4  Save Specifier Alarm ..........................  55↲
    9.5  Area Entry Warning ............................  55↲
    9.6  Parameter Input Syntax Error Message ..........  56↲
    9.7  Catalog Error Messages ........................  57↲
↲
10. FURTHER EXAMPLES ...................................  59↲
    10.1 Example 1 .....................................  59↲
    10.2 Example 2 .....................................  59↲
    10.3 Example 3 .....................................  59↲
    10.4 Example 4 .....................................  60↲
↲
11. INTRODUCTION INCSAVE ...............................  62↲
↲
12. EXAMPLES ...........................................  63↲
    12.1 Example 1 .....................................  63↲
    12.2 Example 2 .....................................  63↲
    12.3 Example 3 .....................................  64↲
↲
13. CALL ...............................................  67↲
    13.1 Tape Parameter ................................  67↲
    13.2 Special Parameter .............................  67↲
↲
14. FUNCTION ...........................................  68↲
    14.1 Tape Parameter ................................  68↲
    14.2 Funtion, Special Parameter ....................  68↲
↲
15. COMPATIBILITY ......................................  69↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆06┆viii↲
↲
┆b0┆┆a1┆TABLE OF CONTENTS (continued)┆05┆PAGE↲
↲
16. IMPLEMENTATION DETAILS .............................  70↲
    16.1 Use of the Save Catalog .......................  70↲
    16.2 Handling of Magnetic Tape .....................  70↲
    16.3 Handling of Backing Storage Areas .............  70↲
    16.4 The input/output Strategy .....................  70↲
↲
17. EXACT FORMATS ......................................  71↲
↲
18. REQUIREMENTS .......................................  72↲
↲
19. ERROR MESSAGES .....................................  73↲
↲
20. FURTHER EXAMPLES ...................................  74↲
    20.1 Example 1 .....................................  74↲
↲
↲
┆a1┆┆b0┆APPENDIX:↲
↲
A.  REFERENCES .........................................  77↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆14┆┆b3┆┆06┆┆0b┆↲
┆a1┆┆b0┆1. INTRODUCTION SAVE↲
↲
The program save transfers catalog entries and backing ↓
storage areas to magnetic tape for:↲
↲
- large or small scale backup of files↲
- shipment of files to other installations↲
- ┆84┆shipment of files to other name bases in the directory ↓
┆19┆┆82┆┄┄hierarchy.↲
↲
The catalog entries and backing storage areas are ↓
transferred back to disc by the program load (cf. (3)).↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆2. EXAMPLES↲
↲
┆b0┆┆a1┆2.1 Example 1↲
↲
All catalog entries and backing storage areas of scope temp ↓
are transferred to the magnetic tape mtdp0001 file 2 by the ↓
call:↲
↲
╞	save mtdp0001.2↲
↲
In case↲
╞	t = set mtlh mtdp0001 0 2↲
the same is obtained by the call:↲
╞	save t.0↲
↲
Using file descriptor name this way instead of magnetic tape ↓
name gives a freedom to alter the file descriptors in the ↓
catalog and leave the backup jobs unchanged.↲
↲
In case the file name 'magtapename' contains the text:↲
╞	mtdp0001.2↲
the same job may look:↲
╞	save in.magtapename↲
↲
Using parameter files this way gives a freedom to leave the ↓
backup jobs unchanged and just change the contents of the ↓
parameter file, e.g. the file 'magtapename' may be ↓
perodically changed to contain the names of the actual ↓
magnetic tape pool used for multivolume backup.↲
↲
↲
┆a1┆┆b0┆2.2 Example 2↲
↲
All catalog entries and corresponding backing storage areas ↓
specified in the file 'savefiles' are transferred to file ↓
number 2, overwriting the ones saved in example 1, by the ↓
call:↲
╞	save mtdp0001.2 in.savefiles↲
↲
↲
┆8c┆┆83┆┆e0┆↓
┆b0┆┆a1┆2.3 Example 3↲
↲
All catalog entries with corresponding backing storage areas ↓
of scope project, those of scope user on the disc named ↓
'disc3' and finally the best entry with the name 'pap' are ↓
saved after the ones in example 2 by the call:↲
╞	save mtdp0001.last scope.project,↲
╞	     disc.disc3 scope.user,↲
         pap╞	↲
↲
↲
┆b0┆┆a1┆2.4 Example 4↲
↲
Suppose the two logical discs named 'disc5' and 'disc6' are ↓
placed on physical ida discs and device number 55 is an ida ↓
tape station, all controlled by the same ida mainprocess.↲
↲
You want to transfer to the tapes 'mtdpooo1', mtdp0002', ... ↓
all permanent files (permkey=3) belonging to the two discs, ↓
no matter their entry bases, in such a way that they may be ↓
reloaded from their respective user processes.↲
↲
Several files among the ones to be saved are very ↓
voluminous data files, so you want to exploit the ↓
possibility of high density streaming backup.↲
↲
In a process with system bases, the command↲
╞	save mthh mountspec.55╞	     ,↲
╞	     mt841201.1. mt841202. mt841203,↲
╞	     segm3╞	╞	     ,↲
         disc.disc5.disc6              ,↲
         scope.perm↲
will do the job.↲
↲
The parameter segm.3 is not quite necessary since the ↓
default value for the blocklength is 3 segments.↲
↲
┆8c┆┆83┆┆bc┆↓
The job will run smoothly (no paging) in a job process of ↓
50000 halfwords.↲
↲
The chances of keeping the tape streaming at high speed, ↓
high density with a blocklenth of 3 segments increase by a ↓
low overall system load on the actual ida disc controller.↲
↲
↲
┆b0┆┆a1┆2.5 Example 5↲
↲
If the discs 'disc2' and 'disc3' are not controlled by the ↓
same ida mainprocess which controls the tapestation in ↓
example 4 (maybe not ida discs at all), you will have to ↓
save the files with a longer blocklenth to be able to keep ↓
the tape streaming in high speed, high density, e.g. a ↓
blocklength of 21 segments:↲
╞	save mthh mountspec.55,↲
╞	     mt841201.1.mt841202.mt841203,↲
╞	     disc.disc2.disc3,↲
╞	     scope.perm↲
↲
The process still having std base = system base, will have ↓
to have a memory size of 90000 halfwords to progress ↓
smoothly.↲
↲
Note, that the tape may be moved freely to another station ↓
of the same type (high and low density meaning the same) ↓
during the job.↲
↲
The chances of keeping the tape streaming in high speed, ↓
high density (cf. 6.2) increase by blocklengths above 21 ↓
segments. In connection with ida discs multiples of 21 ↓
segments are favorable.↲
↲
The chances increase, too, by decrease in the overall system ↓
load on the RC8000 system bus and the discs.↲
↲
┆8c┆┆83┆┆bc┆↓
Note that tapes with long blocks (>= 4 segments at some ↓
installations, >= 9 segments at others) must not be reloaded ↓
using tape stations connected via RC8301 Device Controller ↓
and NCP.↲
↲
Note further, that for tapes mounted at stations connected ↓
via IDA801 Disc/Tape Controller, the blocklength must not ↓
exceed 84 segments.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆3. CALL↲
↲
               ┆82┆1↲
  <outfile> =    ,↲
               ┆81┆0↲
save↲
                ┆82┆1               2↲
  <mount param>    <tape param    ,↲
                ┆81┆0               1↲
                   ┆82┆1↲
  <special param>    ,↲
                   ┆81┆0↲
                    ┆82┆1↲
  <save specifier>↲
                    ┆81┆0↲
↲
↲
┆a1┆┆b0┆3.1 Outfile↲
↲
<outfile>╞	::= name of any filedescriptor↲
↲
↲
┆b0┆┆a1┆3.2 Mount Parameter↲
↲
                                             ┆82┆*↲
                    mountspec. <device no>↲
<mount param> ::=   release.  yes/no↲
                    <modekind>↲
                                             ┆81┆1↲
↲
<device no>   ::=   <integer>↲
↲
                    ┆82┆mthh↲
                    ┆82┆mtlh↲
<modekind>    ::=   ↲
                    ┆81┆mthl↲
                    ┆81┆mtll↲
↲
↲
┆8c┆┆83┆┆d4┆↓
┆b0┆┆a1┆3.3 Tape Parameter↲
↲
                                                         ┆82┆31↲
<tape param>  ::= <tape param>.<file no>  .<next volume>   ,↲
                                                         ┆81┆0↲
                                   ┆82┆1↲
                 .label.<fpname>↲
                                   ┆81┆0↲
↲
<tape name>       ::=↲
<next volume>     ::=  <name>/<filedescriptor>↲
<name>            ::= name of magnetic tape↲
<file descriptor> ::= name of magnetic tape file descriptor↲
<file no>         ::=   <integer>/last↲
<fpname>          ::= name obeying fp syntax↲
↲
↲
┆b0┆┆a1┆3.4 Special Parameter↲
↲
                                               ┆82┆*↲
                      segm. <integer>↲
<special param> ::=↲
                      list. yes/no/names>↲
                                               ┆81┆1↲
↲
↲
┆b0┆┆a1┆3.5 Save Specifier↲
↲
                                         ┆82┆*↲
                      <modifier>↲
<save specifier> ::=  <disc specifier>↲
                      <entry specifier>↲
                                         ┆81┆1↲
↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆3.5.1 Modifier↲
↲
                                                           ┆82┆*↲
                                                      ┆82┆*↲
                 changedisc  . <from disc>.<to disc>↲
<modifier> ::=                                        ┆81┆1↲
                 newscope. <new scope>↲
                                                           ┆81┆1↲
↲
<from disc>      ┆1f┆::=   all/maincatdisc/<disc name>↲
<to disc>        ┆1f┆::=    no/maincatdisc/<disc name>/0/1↲
<new scope>      ┆1f┆::=    no/temp/login/user/project↲
↲
↲
┆b0┆┆a1┆3.5.2 Disc Specifier↲
↲
                                           ┆82┆*↲
<disc specifier> ┆1f┆::=  disc  .<from disc>↲
                                           ┆81┆1↲
↲
↲
┆b0┆┆a1┆3.5.3 Entry Specifier↲
↲
                                                       ┆82┆*↲
<entry specifier> ::= <entry factor>  .<entry factor>↲
                                                       0↲

╱04002d4e0a0006000000000301443140000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a00060000000003013c3100000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
<entry factor>    ::= ┆1f┆<entry name>/scope.<scope>/docname.<docname>↲
<entry name>      ::= ┆1f┆<name>↲
<scope>           ::=  temp/login/user/project/own/system/perm/all↲
↲
↲

╱04002d4e0a00060000000003013c3140000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a0006000000000301443140000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆3.6 Infile Parameter↲
↲
Everywhere the delimiter <s> is allowed in the parameter ↓
list according to syntax for FP commands, (2), the parameter ↓
pair <s> in.<file> is allowed and will be syntactically ↓
equivalent to <s>.↲
↲
<file> ::= name of any filedescriptor.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆4. FUNCTION↲
↲
The program will save the catalog entries and possible ↓
backing storage areas specified by <disc specifier> and ↓
<entry specifier> with the modifications in <modifier> on ↓
the magnetic tapes specified in <tape param>, i.e. maybe in ↓
two copies and maybe extending over more volumes.↲
↲
The program interprets the parameter groups, one by one.↲
↲
The tape is mounted according to possible <mount param> and ↓
positioned to the file number(s) specified.↲
↲
A version dumplabel record (cf. below) is output as the ↓
first block and displayed on current output.↲
↲
Each <entry specifier> starts a catalog scan, picking out ↓
the entries specified, and the entries satisfying the ↓
current disc specifications are saved after a possible ↓
change according to the actual state of modifiers.↲
↲
During the save, succeeding magnetic tape volumes, as far as ↓
specified, are mounted whenever actual volume is filled up.↲
↲
At tape shift, a message is displayed on current output, ↓
specifying the name of the tape just abandoned and the file ↓
and block count of the last block before the ending tape ↓
mark.↲
↲
The values of current entry- and segment count are ↓
displayed, too, followed by the name of the continuing tape.↲
↲
When the parameter list is emptied, the magnetic tape file ↓
is closed and a message is displayed on current output, ↓
specifying the name of the tape, the current position and ↓
the total amount of entries and segments saved.↲
↲
┆8c┆┆83┆┆bc┆↓
The tape is positioned to the next file, an empty dump label ↓
record is output in the file and displayed on current ↓
output, the file is closed and the tape released if so ↓
specified in <mount param>.↲
↲
If two sets of tapes are specified they are treated in ↓
parallel, except for different <mount param> and except for ↓
volume change, which allows for tapes of different lengths ↓
in the two sets.↲
↲
↲
┆b0┆┆a1┆4.1 Function, Outfile Parameter↲
↲
<outfile> ::= name of any file descriptor↲
↲
Current output zone is stacked and connected to the file ↓
specified at program start.↲
↲
Whether the program terminates through its final end or by a ↓
runtime alarm, the current output zone is unstacked again.↲
↲
↲
┆b0┆┆a1┆4.2 Function, Mount Parameter↲
↲
                                             ┆82┆*↲
                   mount spec .<device no>↲
<mount param ::=   <modekind>↲
                   release.   yes/no↲
                                             ┆81┆1↲
↲
The mount parameters may be repeated, but the last one of ↓
each name will stand.↲
↲

════════════════════════════════════════════════════════════════════════
↓
<mountspec. <device no>↲
A mount special parent message with the device number and ↓
proper tape name will be sent each time a new volume in the ↓
set of tapes specified in <tape param> is mounted.↲
↲
Default: mounspec.0 meaning no parent message.↲
↲
<modekind>↲
The modekind specified will be used for all volumes in the ↓
set specified in <tape param> unless at least one of the ↓
tapes in the set is specified by file descriptor, cf. below.↲
↲
Default: mtlh (=mto)↲
↲
release.  yes/no↲
If release.yes the tape in the set actually used at program ↓
termination will be released, i.e. the reservation is ↓
cancelled and a release message is sent to the operating ↓
system.↲
↲
Default: release.yes↲
↲
↲
┆a1┆┆b0┆4.3 Function, Tape Parameter↲
↲
                                                       ┆82┆31↲
<tape param> ::= <tape name>.<file no>  .<next volume>   ,↲
                                                        ┆81┆0↲
↲
                                   ┆82┆1↲
                 .label.<fpname>↲
                                   ┆81┆0↲
↲
One tape parameter specifies a set of magnetic tapes, ↓
consisting of one to thirtytwo tapes.↲
↲

════════════════════════════════════════════════════════════════════════
↓
<tape name> ::= <next volume> ::=  <name>/<file descriptor>↲
The name of the tape. If <file descriptor> is used, the name ↓
and modekind are taken from the descriptor in the catalog.↲
↲
The modekind of the last file descriptor used in the set of ↓
volume tapes will be used for the entire set of tapes.↲
↲
<file no> ::=  <integer>/last↲
The file number of the first tape in the set where the save ↓
shall start.↲
↲
The save will start in file number one in all succeeding ↓
volumes.↲
↲
If the first tape is specified by <file descriptor>, its ↓
file count will be added to <file no>.↲
↲
If <file no> = last, the first file, which does not start ↓
with a version or a continuation dump label record, is ↓
searched along the tapes in the set, even if they are ↓
specified by <file descriptor>'s.↲
↲
label.<fpname>↲
If a label is specified, the name will be written as the ↓
last field in the version or continuation dumplabel record, ↓
and it will appear on current output.↲
↲
↲
┆b0┆┆a1┆4.4 Function, Special Parameter↲
↲
                                            ┆82┆*↲
                     segm.<integer>↲
<special param> ::=  ↲
                     list.  yes/names/no↲
                                            ┆81┆1↲
↲

════════════════════════════════════════════════════════════════════════
↓
The special parameters may be repeated, but the last one of ↓
each name will stand.↲
↲
segm. <integer>↲
Backing storage areas will be saved in magnetic tape blocks ↓
of <integer> segments↲
If <integer> <= 1, segm will become 2.↲
↲
For tape stations connected via RC8301 Device Controllers, a ↓
blocklength greater than 4 segments, at some installations ↓
extended to, e.g., 9 segments, will lead to program ↓
termination (device status unintelligible). For tape ↓
stations connected via IDA801 Disc/Tape Controllers, the ↓
same will happen for blocklengths beyound 84 segments (64 K ↓
characters to be exact).↲
↲
Default: the value found in the file count of the programs ↓
own catalog entry tail. ↲
At installation, the value is 3.↲
The value may be changed, simply by ↲
   save = changenetry save save save <value> save save save.↲
The legal value interval for default value is 2<= value <= ↓
84.↲
If the value is outside the legal value interval, the value ↓
3 is used.↲
↲
list.  yes/names/no↲
If list.yes, the entries saved are listed in one of the ↓
forms:↲

╱04002d4e0a00060000000003014b3140000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a00060000000003013c3140000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
╞	<name> <modekind> <scope>.<docname>,↲
                                  d.<shortclock> d.<latest changed>↲
╞	<name> <modekind>   <key>.<docname> <lower base><upperbase>,↲
╞	╞	╞	╞	d.<shortclock> d.<latest changed>↲

╱04002d4e0a00060000000003013c3140000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a00060000000003014b3140000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
↲
The shortclock, i.e. word 6 of the entry tail, is shown only ↓
for non procedure entries with a contents key <>0.↲
↲

════════════════════════════════════════════════════════════════════════
↓
Generally, latest changed is the shortclock for the latest ↓
change to the entry or its associated backing storage area ↓
recorded by the monitor. The exact meaning used in the ↓
program is explained in 7.1.↲
↲
If list.names, only the entry name is listed.↲
If list.no, the entries are not listed.↲
↲
Default: list.yes↲
↲
↲
┆b0┆┆a1┆4.5 Function, Save Specifier↲
↲
                                          ┆82┆*↲
                      <modifier>↲
<save specifier> ::=  <disc specifier>↲
                      <entry specifier>↲
                                          ┆81┆1↲
↲
The elements of the save specifier are treated one by one, ↓
until the parameter list is exhausted.↲
↲
A modifier will modify the sate of current modifiers.↲
↲
A disc specifier will cancel current disc specifiers and ↓
define a new set of disc specifiers.↲
↲
An entry specifier will start a main catalog scan, picking out ↓
entries specified belonging to discs currently specified and ↓
record them in the save catalog with current modifiers.↲
↲
Entries picked out which belongs to a disc specified in ↓
current disc specifiers will be saved in a temporary save ↓
catalog together with its specification (disc, scope) and ↓
its modification (changedisc, newscope).↲
↲
If no entry specifier is found in the parameter list after a ↓
modifier or a disc specifier or no save specifier is found ↓
at all, a default entry specifier will be used. ↲
↲

════════════════════════════════════════════════════════════════════════
↓
After a block containing a version dumplabel record which is ↓
listed on current output too, the save catalog and all the ↓
files in it are transferred to the tape or tapes specified, ↓
in one or two copies, starting in the file number specified ↓
and extending over as many volume tapes among the specified ↓
ones as are needed.↲
↲
Concluding the backup, a tape mark is output and a file of ↓
one block containing an empty dump label record, listed on ↓
current output too, is written.↲
↲
↲
┆b0┆┆a1┆4.5.1 Modifier↲
↲
                                                      ┆82┆*↲
                 changedisc   .<from disc>.<to disc>  ↲
<modifier> ::=                                        ┆81┆1↲
                 newscope.<newscope>↲
↲
A modifier is valid until changed by another modifier.↲
↲
↲
┆b0┆┆a1┆4.5.1.1 Changedisc↲
↲
╞	╞	╞	╞	   ┆82┆*↲
changedisc  .<from disc>.<to disc>↲
╞	╞	╞	╞	   ┆81┆1↲
↲
An entry belonging to <from disc> will be changed as if it ↓
belongs to <to disc>.↲
↲
<from disc> ::=  all/maincatdisc/<disc name>↲
all╞	╞	   means all discs↲
maincatdisc╞	   means the disc with the main catalog↲
<disc name>╞	   means the disc with that name↲
↲
<to disc>::=     no/maincatdisc/<disc name>↲
no               means changedisc. <from disc>.<from disc>↲
┆8c┆┆83┆┆c8┆↓
0/1              ┆84┆means that the disc is selected by the ↓
┆19┆┆91┆┄┄monitor at time of reload (the first disc ↓
┆19┆┆91┆┄┄with sufficient temporary resources).↲
others           as for <from disc>↲
↲
Default: changedisc.all.no↲
↲
↲
┆b0┆┆a1┆4.5.1.2 Newscope↲
↲
newscope. <new scope>↲
All entries will be changed to have the scope <newscope>↲
<newscope> ::=  temp/login/user/project/no↲
↲
If the entries are saved using a scope key (cf. specifier ↓
'scope') they will be saved with the one denoting ↓
<newscope>.↲
↲
If they are saved using bases they will be saved with ↓
permkey and bases corresponding to <newscope>.↲
<newscope> = no means no change of scope.↲
↲
Default: newscope.no↲
↲
↲
┆b0┆┆a1┆4.5.2 Disc Specifier↲
↲
                                         ┆82┆*↲
<disc specifier> ::= disc  .<from disc>↲
                                         ┆81┆1↲
↲
A disc specifier specifies one or more discs from where the ↓
entry specifier will specify entries.↲
↲
A disc specifier is valid until the next disc specifier, ↓
which will cancel it.↲
↲
<from disc> ::=  all/maincatdisc/<disc name>↲
┆8c┆┆83┆┆c8┆↓
The parameters have the same meaning as for 'changedisc'.↲
↲
Default: disc.all↲
↲
↲
┆b0┆┆a1┆4.5.3 Entry Specifier↲
↲
                                                        ┆82┆*↲
<entry specifier> ::= <entry factor>  .<entry factor>↲
                                                        ┆81┆0↲
↲
An entry specifier is composed of one or more entry factors ↓
of which three kinds exist, each of which specify an entry ↓
attribute.↲
↲
If one kind of entry factor is repeated, the last one ↓
stands, except for the factor <name>, where a warning will ↓
be given and the first name stands.↲
↲
The entry specifier specifies a set of entries, each of ↓
which have all the attributes specified↲
↲
<entry factor> ::=  <name>/scope.<scope>/docname.<docname>↲
↲
Default: any name, any docname, scope.temp↲
↲
↲
┆b0┆┆a1┆4.5.3.1 Name↲
↲
<name>↲
The attribute is the entry name.↲
↲
All entries visible with this name have the attribute. The ↓
entry names 'c' 'v' and primout cannot be specified.↲
↲
Entries of name 'c' or 'v' with permkey = 0 and entries with ↓
name 'primout' and permkey = 2 are considered to have no ↓
name attribute.↲
┆8c┆┆83┆┆c8┆↓
Changes the default for scope to 'the best name'.↲
↲
Default: any name.↲
↲
↲
┆b0┆┆a1┆4.5.3.2 Scope↲
↲
scope.<scope>↲
↲
<scope> ::=  temp/login/user/project/own/system/perm/all↲
↲
The attribute is the scope.↲
All entries with the scope specified have the attribute.↲
The terms temp, login, user and project have their usual ↓
meaning↲
own╞	    means one of above.↲
system  means permkey = 3 and entry base = system base↲
perm    ┆84┆means permkey = 3 and entry base inside or equal to ↓
┆19┆┆88┆┄┄the standard base of the process↲
all     ┆84┆means any permkey and entry base inside or equal to ↓
┆19┆┆88┆┄┄the standard base of the process.↲
↲
Entries specified by the attribute scope.perm or scope.all ↓
will be listed on current output with permanent key and ↓
entry bases instead of the scope name.↲
↲
The entries are the ones "inside" the standard base of the ↓
job process executing the save, i.e. the specification is ↓
well suited for backup on system bases or backup on bases ↓
overlaying some project's bases. ↲
↲
Each entry is reloadable only in a user process with bases ↓
corresponding the entry bases.↲
↲
The entire backup is, however, reloadable in a process ↓
having the same bases as the one doing the backup.↲
↲
Single files with unique names and/or document names are ↓
reloadable in such a process, too.↲
↲
┆8c┆┆83┆┆e0┆↓
Entries specified by any other scope will be listed on ↓
current output using a scope name.↲
↲
Such entries are reloadable in any process (scope.system only ↓
in a process with maxbase = system base, though).↲
↲
Concerning the target scope, cf. the modifier 'newscope'. ↲
↲
Backing storage with entry bases outside project bases need ↓
a special attention:↲
↲
They will not be protected against other users write access ↓
during the backup. ↲
↲
If other users perform writing in such an area during the ↓
backup, the program will be held up while the writing takes ↓
place, and then it will continue. No warning is given.↲
↲
If the size of the area changes during the backup, ↓
the program will continue, but the file itself and maybe ↓
some neighbouring files will be unloadable.↲
↲
Note that if a filesystem is saved in such a way that more ↓
entries have the same name and scope/bases, e.g. ↓
"newscope.user scope.own", they cannot be separated by ↓
reload.↲
↲
Default: ╞	name specified: the best name↲
           no name specified: temp↲
↲
The best name means the name with the best scope among the ↓
scopes temp, login, user and project or any scope visible ↓
changed into one of above by the modifier 'newscope'.↲
↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆4.5.3.3 Docname↲
↲
docname. <docname>↲
The attribute is the document name of the entry. All entries ↓
visible with a document name equal to <docname> have the ↓
attribute.↲
Changes the default for scope to <any visible scope>.↲
↲
Default: any document name.↲
↲
↲
┆b0┆┆a1┆4.6 Function, Infile Parameter↲
↲
Every where the delimiter <s> is syntactically correct in ↓
the parameter list, the parameter pair <s>in.<filename> is ↓
allowed and syntacically equivalent to <s>.↲
↲
<filename> ::= name of any file descriptor↲
↲
The infile parameter may be used in a "nested" way:↲
↲
When <s> in.<filename> is met in the parameter list, current ↓
input zone is stacked and connected to the file specified by ↓
the file descriptor, and the parameter reading is continued ↓
in current input zone.↲
↲
The parameter reading takes place using the special fp input ↓
alphabet and according to normal fp parameter syntax (2), ↓
except the character 'nl' is equivalent to the character ↓
'sp'.↲
↲
When the seperator 'em' is met, current input zone is ↓
unstacked and parameter reading continues from current input ↓
zone, except when unstacked to the initial level, in which ↓
case parameter reading continues in the fp command stack.↲
↲

════════════════════════════════════════════════════════════════════════
↓
In case of illegal character or fp syntax error a syntax ↓
alarm is written on current output zone, current input zone ↓
stack chain is emptied, listing the chain on current output ↓
zone, and parameter reading continues in fp command stack.↲
↲
The fp command listing governed by the mode bit 'list' will ↓
list the parameters in the fp command stack, not the ↓
parameters in any file.↲
↲
↲
┆b0┆┆a1┆4.7 Alternative and Dummy Parameter Names↲
↲
For compatibility reasons, some alternative parameter names ↓
are allowed.↲
↲
The mount parameters mto and nrz are allowed and equivalent ↓
to mt1h and mtll, and mte and nrze are still allowed but do ↓
not have new names (high density, even parity, low density, ↓
even parity).↲
↲
The modifier 'changekit' is allowed and is equivalent to ↓
'changedisc'.↲
↲
The changedisc parameter <from disc> = main is allowed and ↓
equivalent to <from disc> = all.↲
↲
The changedisc parameter <from disc> = any is allowed and ↓
equivalent to <from disc> = all.↲
↲
The changedisc parameter <to disc> = main is allowed and is ↓
equivalent to <to disc> = maincatdisc.↲
↲
The changedisc parameter <to disc> = 0/1 is allowed and is ↓
equivalent to <to disc> = no.↲
↲

════════════════════════════════════════════════════════════════════════
↓
The disc specifier 'kit' is allowed and is equivalent to the ↓
disc specifier 'disc'.↲
↲
The disc specifier parameters <from disc> = main and any are ↓
allowed and are equivalent to <from disc> = all.↲
↲
The special parameter reserve.<yes or no> is allowed but is ↓
without any function because of the changed strategy ↓
concerning backing storage areas (cf. 6.3).↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆5. COMPATIBILITY↲
↲
The program is backwards compatible with the program save in ↓
SW8010/1, release 13.0 and earlier releases as far as↲
↲
1) parameter names and parameter syntax, and↲
2) parameter function↲
↲
concern, which means that any jobfile set up for use with ↓
the earlier release will work the same way with the present ↓
release.↲
↲
One should note, however, that tape stations do not ↓
necessarily agree on the interpretation of "high density" ↓
and "low density" (cf. 6.2).↲
↲
The main extensions compared with earlier releases are↲
↲
1) ┆84┆the use of a save catalog to speed up relocation and ↓
┆19┆┆83┆┄┄reload of files,↲
2) ┆84┆the change to a tape format more suited to "stream" data ↓
┆19┆┆83┆┄┄to and from the tape, and↲
3) ┆84┆the increase in ressource consumption as a consequence of ↓
┆19┆┆83┆┄┄changed input/output strategy.↲
↲
Because of these extensions, the tapes produced are not ↓
compatible with the tapes produced by earlier releases of ↓
save.↲
↲
It should be noted, then, that↲
- ┆84┆tapes produced by version 2 of save must be loaded by ↓
┆19┆┆82┆┄┄version 2 of load↲
- ┆84┆tapes produced by earlier releases of save must be loaded ↓
┆19┆┆82┆┄┄by earlier releases of load (release 13.0 is included in ↓
┆19┆┆82┆┄┄version 2 of the package by the name load13).↲

════════════════════════════════════════════════════════════════════════
↓
- ┆84┆tapes to be shipped to installations with earlier release ↓
┆19┆┆82┆┄┄of load only must be produced by earlier release of save ↓
┆19┆┆82┆┄┄(release 13 is included in version 2 of the package by the ↓
┆19┆┆82┆┄┄name save13).↲
↲
The programs save, incsave, load and incload are parameter ↓
compatible in the sense that any one of them may read any ↓
others parameter list. Unused parameters known to be used by ↓
another of the programs will simply be ignored.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆6. IMPLEMENTATION DETAILS↲
↲
In the present chapter the implementation details concerning↲
↲
- the use of the save catalog↲
- handling of magnetic tape↲
- handling of backing storage areas↲
- the input/output strategy↲
↲
are given.↲
↲
In the next chapter the exact formats are given. Knowledge ↓
of these details is not necessary in order to use the ↓
programs save, incsave, load and incload but it helps ↓
understand the way they work and the options and ↓
possibilities offered by the programs.↲
↲
↲
┆b0┆┆a1┆6.1 Use of Save Catalog↲
↲
The use of the save catalog is the core around which the ↓
programs save and incsave are built, so the description is ↓
somewhat elaborate.↲
↲
The programs save and incsave scan their parameter list ↓
once, including parameters read from a maybe in multilevel ↓
stacked input zone. ↲
↲
After the special parameters, i.e. before the save ↓
specifiers, the program↲
↲
- ┆84┆save creates a temporary save catalog file with a wrk-name ↓
┆19┆┆82┆┄┄on the disc with the most temporary ressources available, ↓
┆19┆┆82┆┄┄changes its shortclock to describe the dumptime and ↓
┆19┆┆82┆┄┄connects it for output↲
↲
- ┆84┆incsave gets the shortblock from tail (6) of the main ↓
┆19┆┆82┆┄┄catalog entry describing the incsave on the next lower ↓
┆8c┆┆83┆┆c8┆↓
┆19┆┆82┆┄┄level found in the catalog and uses it for basetime, ↓
┆19┆┆82┆┄┄except for incsave on level 0 (zero) which uses the time 0 ↓
┆19┆┆82┆┄┄(zero) for basetime↲
↲
- ┆84┆incsave creates a permanent (user) save catalog file with ↓
┆19┆┆82┆┄┄the name level concatenate levelnumer on the disc with the ↓
┆19┆┆82┆┄┄most permanent resources available, unless already ↓
┆19┆┆82┆┄┄present, in which case the existing one is used, changes ↓
┆19┆┆82┆┄┄its shortclock to describe the dumptime and connects it ↓
┆19┆┆82┆┄┄for output↲
↲
Now a save catalog head describing the backup (7.1) is ↓
written in the file and at this point zones to handle disc ↓
to tape output are laid out, cf. 6.2.↲
↲
The parameter scan continues with the save specifier. Each ↓
time an entry specifier is ready, main catalog entries are ↓
picked out of the main catalog according to the entry ↓
specifier and checked with the current disc specifier and, ↓
after evaluation of shortclock latest changed (cf. 7.1), ↓
with the basetime (incsave). ↲
↲
Together with current modifiers the entry is prepared as a ↓
record with zeroed tape position fields in the save catalog, ↓
cf. 3.1 and output to the file when the block (1 segment) is ↓
full.↲
↲
When the last entry specifier has been processed, a dummy ↓
record (all zeroes) is prepared and output and the save ↓
catalog area is cut down to actually used size.↲
↲
When the tape (or tapes) has (or have) been prepared (cf. ↓
6.2), the save catalog is transferred to tape as the first ↓
data area after the version dump label block.↲
↲
Now the save catalog is connected for input and the entry ↓
records are scanned from the start.↲
↲
┆8c┆┆83┆┆c8┆↓
As many entry records as recorded as the maximal number in ↓
the dump label block (7.2.1) are prepared for a partial ↓
catalog and the save catalog records are updated with tape ↓
locations fields (7.2.2) designating the current position of ↓
the tape (s) and written back to the save catalog whenever ↓
the block (1 segment) is full.↲
↲
For every area entry in the set prepared, an area process is ↓
┆a1┆┆e1┆prepared (cf. 6.3).↲
↲
If successfully, the entry is listed on current output, if ↓
not the entry is skipped with an entry warning on current ↓
output, and the 'first slice' field of the record in the ↓
save catalog as well as the record in the partial catalog is ↓
zeroed.↲
↲
When all records are prepared, the last one from the save ↓
catalog is written back to the file before the partial ↓
catalog is transferred to tape(s) (cf. 7.2.3)↲
↲
Should the tape(s) expire during transfer of the partial ↓
catalog and a change to next volume take place, the save ↓
catalog then is fully updated until the current partial ↓
catalog and ready to be transferred to the next volume tape ↓
(cf. 7.2.2).↲
In other words: the save catalog on the last used volume ↓
tape in a succession of tapes will contain the most updated ↓
save catalog except for the permanent one left by incsave, ↓
which is fully updated.↲
↲
After the transfer of the partial catalog, all backing ↓
storage areas prepared successfully are transferred to tape ↓
one by one (cf. 7.2.4) removing the area processes ↓
succeedingly.↲
↲
Now the save catalog scan is continued, preparing the next ↓
partial catalog a.s.o. until all records in the save catalog ↓
have been processed.↲
↲
┆8c┆┆83┆┆d4┆↓
Finnally the use of the magnetic tapes is finished, writing ↓
a one block file with an empty dump label block (cf. 7.2.1) ↓
and proper accounts of the entries, segments and slices ↓
saved are displayed on current output.↲
↲
Before terminating (even after runtime alarm) the program↲
↲
- ┆84┆save removes the save catalog file and the partial catalog ↓
┆19┆┆82┆┄┄file↲
- incsave just removes the partial catalog file↲
↲
and unstacks a possibly stacked output zone and reconnects ↓
it to the file as before the program was called.↲
↲
↲
┆b0┆┆a1┆6.2 Handling of Magnetic Tape↲
↲
The handling of magnetic tapes is governed by↲
↲
- the mount parameters↲
- the tape parameters↲
↲
↲
┆b0┆┆a1┆6.2.1 Mount Parameters↲
↲
The magnetic tapes are prepared according to the mount ↓
parameters↲
↲
- modekind abbrivation↲
- mountspec parameter↲
↲
The modekind specified is converted into the mode word:↲
↲
┆8c┆┆83┆┆8c┆↓
┆0e┆↓
┆a1┆11                                0↲
┆a1┆ 1                                 ↲

╱04002d4e0a0006000000000301453140000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a00060000000003013c3140000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
                              ┆a1┆     ┆e1┆ parity          : 0 odd, 1 even↲
                          ┆a1┆         ┆e1┆ density         : 0 high, 1 low↲
                    ┆a1┆               ┆e1┆ trail           : 0-7↲
             ┆a1┆                      ┆e1┆ speed           : 0 low, 1 high↲
       ┆a2┆┆e2┆┆a1┆                            ┆e1┆ block gap length: 0 std, 1 long↲

╱04002d4e0a00060000000003013c3140000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱

╱04002d4e0a0006000000000301453140000000000000000000000000000000000000000000000000050f19232d37414b555f69737d8791ff04╱
↓
┆0f┆↓
↲
The modeword is inserted into the proper zones and is used ↓
in all communication with the external processes ↓
representing the tapes.↲
↲
The fields of the mode word have different meanings for ↓
different tape stations:↲
↲
┆0e┆↓
┆a1┆┆05┆↲
┆a1┆                      RC3715  RC8343          RC8344┆05┆↲
┆82┆                even  even    odd             odd↲
parity↲
┆a1┆┆81┆                odd   odd     odd             odd┆05┆↲
┆82┆                high  1600 pe 3200 pe         6250 gcr↲
density bpi↲
┆a1┆┆81┆                low   800 nrz 1600 pe         1600 pe┆05┆↲
┆82┆                high  45      100/50 stream   75 stream↲
speed ips↲
┆a1┆┆81┆                low   45      25/12.5 stream  25 stream┆05┆↲
┆82┆                std   0.6     0.6-0.9/        0.6-0.9/↲
┆82┆                              0.3-0.6         0.3-0.45↲
block gap inch↲
┆a1┆┆e1┆┆e1┆┆81┆                long  0.6     0.6-1.2         0.6-1.2/↲
┆a1┆┆81┆ ┆a1┆                                             0.3-0.6┆05┆↲
↲
Note: slash (/) means at low density/at high density.↲
┆0f┆↓
↲
If the parameter mountspec is specified, a mount special ↓
message is sent to the parent, specifying the device number ↓
where to mount the tape and the name of the tape. The parent ↓
(operating system) will then tell the operator where and ↓
what to mount.↲
↲
┆8c┆┆83┆┆e0┆↓
If the tape is not mounted in advance, two print messages: ↲
╞	ring <name of tape>↲
    high <name of tape> or↲
    low  <name of tape>↲
are sent to the parent to be displayed in order to help the ↓
operator.↲
↲
↲
┆b0┆┆a1┆6.2.2 Tape Parameters↲
↲
In the tape parameters up to 32 tape volumes may be ↓
specified in two copies, each copy with its own mount ↓
parameters, its own starting file number and its own label ↓
parameter.↲
↲
The two copies are written in parallel, block by block, but ↓
a change of tape to the next volume may well happen ↓
independently in the two copies. Whenever a tape runs full ↓
(eot sensed), the outstanding blocks are written to the ↓
tape, a tapemark is output, and if another volume is ↓
specified, it is prepared as described in 6.2.1. If no more ↓
volumes are specified, the program terminates with a runtime ↓
alarm. ↲
↲
The file number specification 'last' needs an explanation:↲
↲
The tapes in the copy are traversed, volume by volume, ↓
positioned after filemark by filemark to find the first file ↓
which does not start with a version or continue dump label ↓
(cf. 7.2.1).↲
↲
↲
┆b0┆┆a1┆6.3 Handling of Backing Storage Areas↲
↲
Whenever an area entry from the save catalog is ready to be ↓
inserted into the partial catalog, steps are taken to ↓
protect the backing storage area during the save. ↲
↲
The catalog base of the job process is changed to equal the ↓
entry base of the area. If outside max base, to equal the ↓
max base, though.↲
↲
┆8c┆┆83┆┆f8┆↓
An area process with the name of the entry is created. If ↓
the creation fails, the entry is marked (first word of the ↓
entry, the 'first slice' field, is zeroed in the save ↓
catalog record, cf. 7.1), and the entry is skipped with a ↓
warning on current output.↲
↲
Next, the area process is write protected (if the current ↓
monitor does not offer write protection, the area process ↓
is reserved instead) unless its base is outside the max ↓
base.↲
↲
If the protection fails because the area process is already ↓
reserved by another process, the entry is marked as above ↓
and skipped with a warning on current output.↲
↲
If the base of the area process created does not equal the ↓
entry base, i.e. the entry base is outside max base and a ↓
better entry exists, the entry is marked as above and ↓
skipped with a warning on current output, telling that the ↓
entry is covered by a better entry.↲
↲
If the area is the current output document, the entry is ↓
marked as above and skipped with a warning on current ↓
output, telling that the entry is current output file.↲
↲
At last, the write access counter and the name table address ↓
of the area process are read and the catalog base of the ↓
executing process is reset.↲
↲
Now the entry is changed according to modifiers and ↓
inserted into the partial catalog and listed on current ↓
output.↲
↲
When the partial catalog is ready and has been transferred ↓
to tape (s), all successfully prepared backing storage areas ↓
belonging to the partial catalog are transferred to tape, ↓
block by block.↲
↲
┆8c┆┆83┆┆c8┆↓
Foreign write accesses to the area or change of entry size ↓
during save may happen to areas not write protected ↓
(reserved), i.e. areas with an entry base outside max base ↓
of the job process.↲
↲
To avoid changes in system - or pseudo system files during ↓
save in a non system process, the user will have to make ↓
special arrangements with the owner of the files or the ↓
manager of the installation.↲
↲
The area processes are removed one by one after the transfer ↓
of the area.↲
↲
Concerning read and write accesses to any area during the ↓
save, the following may be stated:↲
↲
Foreign read access to an area during save will not ↓
influence the save.↲
↲
Foreign write access to an area during the save will hold up ↓
the save during the write and maybe damage the entire ↓
save but is possible only if the area entry base is outside ↓
max base of the job process.↲
↲
If the current monitor offers write protection, foreign read ↓
accesses will not be affected by the save.↲
↲
If the current monitor does not offer write protection, ↓
foreign read accesses will be held up by the save unless the ↓
entry base is outside max base of the job process.↲
↲
Foreign write access during the save will be rejected unless ↓
the entry base is outside max base of job process.↲
↲
Using one of the entry specifiers scope.perm or scope.all, ↓
which are intended for system backup, entries with a base ↓
equal to or inside the standard base of the job process are ↓
specified.↲
↲
┆8c┆┆83┆┆d4┆↓
Areas saved this way (as well as areas saved using temp, ↓
login, user, project or own) will never be changed by other ↓
processes during the save. Either they are protected during ↓
the save or they are skipped because they are reserved by ↓
another process at the time of protection.↲
↲
↲
┆b0┆┆a1┆6.4 The Input_Output Strategi↲
↲
The transfer of a backing storage area from disc to tape may ↓
take place in one of two ways:↲
↲
- ┆84┆the area and the tape are controlled by the same ida main ↓
┆19┆┆82┆┄┄process and the transfer takes place locally in the ida801 ↓
┆19┆┆82┆┄┄controller without engaging the RC8000 bus further.↲
↲
- ┆84┆the area and the tape are not controlled by the same ida ↓
┆19┆┆82┆┄┄main process or other requirements are not fulfilled so ↓
┆19┆┆82┆┄┄the transfer takes place via the RC8000 bus from area into ↓
┆19┆┆82┆┄┄memory and out to tape.↲
↲
Transfer of an area starting in the first way may later ↓
change to the other as a result of changed conditions.↲
↲
↲
┆b0┆┆a1┆6.4.1 Local Copy Transfer↲
↲
If two conditions are fulfilled, the program (save and ↓
incsave) will start all transfers as local copy operations:↲
↲
- only one copy of volume tapes specified↲
- ┆84┆the blocklength specified is an integer divisor in 21.↲
↲
A local copy operation is a message specifying a transfer of ↓
segments from a backing storage area to a magnetic tape ↓
file, cf. (1).↲
↲
┆8c┆┆83┆┆bc┆↓
If both conditions above are fulfilled, a target process to ↓
receive the operations is chosen:↲
↲
- ┆84┆if the tape process exists and has an ida mainprocess as a ↓
┆19┆┆82┆┄┄main process, the ida main process is chosen↲
↲
- ┆84┆if the tape process does not exist or its main process is ↓
┆19┆┆82┆┄┄not an ida main process, any ida main process is chosen, ↓
┆19┆┆82┆┄┄if any exists↲
↲
- if no ida main process exist, an illegal name is chosen.↲
↲
The copy operations are sent and waited for and checked in a ↓
multibuffered way exactly as normal output operations are.↲
↲
The number of buffers used in the communication is chosen ↓
this way:↲
↲
The fp area process is disclaimed.↲
↲
Of the number of area processes claimed by the job process, ↓
four are set aside for use with the program area itself, a ↓
possible output file, a possible parameter infile and the ↓
save catalog.↲
↲
Of the remaining area process claim, 1 is used for partial ↓
catalog and the rest for possible area processes in the ↓
partial catalog.↲
↲
The number of buffers to be used in the communication, then, ↓
is chosen to equal this remaining number of area processes, ↓
(at most 9, though) and the maximal number of entries in each ↓
partial catalog becomes one less.↲
↲
If the process does not claim enough area processes to have ↓
at least one for entries in partial catalog, the program ↓
terminates with an alarm, stating the minimal number of area ↓
processes needed (6).↲
↲
┆8c┆┆83┆┆d4┆↓
The answers, cf. (1), are checked and they all lead to a ↓
call of the block procedure where↲
↲
- ┆84┆a normal answer, no device status error will just record ↓
┆19┆┆82┆┄┄the position and the number of segments transferred ↓
┆19┆┆82┆┄┄returned in the answer and remove the area process↲
↲
- ┆84┆all other answers will cause all pending messages to be ↓
┆19┆┆82┆┄┄waited for without check, and↲
↲
- ┆84┆normal answer, device status error will record the ↓
┆19┆┆82┆┄┄position and the number of segments transferred returned ↓
┆19┆┆82┆┄┄in the answer, repeat the unfinished part of the transfer ↓
┆19┆┆82┆┄┄as described in 6.4.2 and resend all the copy operations ↓
┆19┆┆82┆┄┄which were pending↲
↲
- ┆84┆dummy answer will record the position as unchanged and ↲
↲
  a) ┆84┆in case of result: 2 try to reserve the tape process ↓
┆19┆┆85┆┄┄and write protect/reserve the area process ↲
↲
  b) ┆84┆in case of result = 3 change to another target process, ↓
┆19┆┆85┆┄┄if the main process of the tape process is found to be ↓
┆19┆┆85┆┄┄an ida process and another one than the present target ↓
┆19┆┆85┆┄┄process.↲
↲
- ┆84┆finished by a transfer of the area as described in 6.4.2 ↓
┆19┆┆82┆┄┄and a resend of all the operations which were pending.↲
↲
Note that result = 3, unintelligible, may be caused by the ↓
choice of blocklength and/or the slicelength of the disc ↓
involved.↲
↲
To be able to start a local copy operation, the following ↓
conditions must be fulfilled:↲
↲
If slicelength <= 21 segments,↲
- blocksize is an integer divisor in slicelength↲
↲
┆8c┆┆83┆┆d4┆↓
if slicelength > 21 segments,↲
- 21 is an integer divisor in slicelength and↲
- blocksize is an integer divisor in 21↲
↲
The action taken on result = 3 is not able to change any of ↓
these conditions and the transfer will change to a trans ↓
memory transfer if one of them is not fulfilled.↲
↲
This communication method allows:↲
↲
- ┆84┆the backing storage areas in the backup to be any mix of ↓
┆19┆┆82┆┄┄areas belonging to or not belonging to ida discs ↓
┆19┆┆82┆┄┄controlled by the same controller as the one controlling ↓
┆19┆┆82┆┄┄the tape, in case the tape is mounted on an ida tape ↓
┆19┆┆82┆┄┄station.↲
↲
- ┆84┆the backing storage areas in the backup to be any mix of ↓
┆19┆┆82┆┄┄areas belonging to ida discs and areas belonging to other ↓
┆19┆┆82┆┄┄discs, no matter what kind of tape station is used.↲
↲
- ┆84┆the tapes in the backup to be mounted on any kind of tape ↓
┆19┆┆82┆┄┄station giving the recording density wanted for the ↓
┆19┆┆82┆┄┄modekind specfied no matter which kind of discs are ↓
┆19┆┆82┆┄┄involved in the backup↲
↲
- ┆84┆the tapes in the backup to be remounted on (moved to) any ↓
┆19┆┆82┆┄┄other tape station giving the same recording density  ↓
┆19┆┆82┆┄┄for the modekind specified at any time during the backup ↓
┆19┆┆82┆┄┄no matter which kind of discs are involved in the backup↲
↲
- ┆84┆any device status, disc or tape, to be handled by the ↓
┆19┆┆82┆┄┄normal i/o check and recovery actions, specially end of ↓
┆19┆┆82┆┄┄tape action with change to next volume tape.↲
↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆6.4.2 Trans Memory Transfer↲
↲
If not both conditions in the first paragraph of 5.4.1 are ↓
fulfilled the transfers will be started and carried through ↓
as trans memory transfers.↲
↲
In 5.4.2 is described how transfers started as local copy ↓
transfers may change to trans memory transfers.↲
↲
Trans memory transfers are carried out as multibuffered ↓
record input/output without in memory data copying.↲
↲
In case of blocklength greater than 21 segments, input as ↓
well as output is double buffered, else both are triple ↓
buffered.↲
↲
With double buffered input/output, three data buffers, with ↓
triple buffered five data buffers, are allocated in memory, ↓
and by change of block the descriptions are shifted in such ↓
a way, that the block output will be the oldest block input, ↓
and the block input will overwrite the latest block output.↲
↲
Furthermore, the block output may be repeated for more ↓
output documents in parallel, in this case maybe for the two ↓
copies of the volume tape.↲
↲
Finally, the block output to one or more output documents ↓
may be blinded, here used to handle change of volume tape ↓
with output of save catalog in one copy of the volume tapes ↓
without affecting the other.↲
↲
The advantages of the method employed are↲
↲
- ┆84┆standard inblock and outblock procedures are used with the ↓
┆19┆┆82┆┄┄normal error recovery actions taken on transfers↲
↲

════════════════════════════════════════════════════════════════════════
↓
- ┆84┆no need for in memory input buffer to output buffer data ↓
┆19┆┆82┆┄┄copying, saving appr. 1 msec cpu time per segment of data↲
↲
- ┆84┆a very high mean data transfer rate, increasing with an ↓
┆19┆┆82┆┄┄increase in block length↲
↲
The disadvantage of the trans memory transfer compared to ↓
local copy transfer is the heavy load on the RC8000 bus, ↓
increasing with an increase in blocklength and with two ↓
copies, endangering the transfers to the need of being ↓
repeated at data overrun and thus slowing down the overall ↓
data transfer rate.↲
↲
The data buffers for trans memory transfer are allocated in ↓
core and ready for use, even though transfers are started as ↓
local copy transfers, so the memory and buffer resources ↓
demanded by the job process are the same from job start ↓
until finish.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆7. EXACT FORMATS↲
↲
In the present chapter the exact formats of↲
↲
- the save catalog↲
- the magnetic tape blocks↲
↲
are given.↲
↲
↲
┆b0┆┆a1┆7.1 Save Catalog Format↲
↲
The catalog head is one block of an integral number of ↓
segments containing the fields:↲
↲
+0╞	╞	╞	: catalog base lower↲
+2╞	╞	╞	: catalog base upper↲
+4╞	╞	╞	: standard base lower↲
+6╞	╞	╞	: standard base upper↲
+8╞	╞	╞	: user base lower↲
+10╞	╞	╞	: user base upper↲
+12╞	╞	╞	: max base lower↲
+14╞	╞	╞	: max base upper↲
+16╞	╞	╞	: ┆84┆number of discs in the backing ↓
┆19┆┆9a┆┄┄storage system↲
+18 ╞	╞	: ┆84┆max number of volume tapes (32)↲
+20 ╞	╞	: number of copies specified↲
+22╞	╞	╞	: ┆84┆number of volume tapes specified ↓
┆19┆┆9a┆┄┄in copy no 1↲
+24╞	╞	╞	: ┆84┆number of volume tapes specified ↓
┆19┆┆9a┆┄┄in copy no 2↲
+26╞	╞	╞	: ┆84┆max number of segments in one ↓
┆19┆┆9a┆┄┄block on the tape (segm)↲
+20 + 8╞	╞	: name of disc no. 1 (8 hwds)↲
+20 + 8 * 2╞	╞	: name of disc no. 2 (8 hwds)↲
╞	╞	╞	.↲
╞	╞	╞	.↲
╞	╞	╞	.↲
┆8c┆┆83┆┆c8┆↓
+20 + 8 * no_of_discs   : ┆84┆name of disc no. no_of_discs (8 ↓
┆19┆┆9a┆┄┄hwds)↲
╞	╞	╞	.↲
╞	╞	╞	.↲
╞	╞	╞	.↲
+22 + 8 * no_of_discs   : ┆84┆name of tape volume 1 copy no. 1 ↓
┆19┆┆9a┆┄┄(8 hwds)↲
╞	╞	╞	.↲
╞	╞	╞	.↲
╞	╞	╞	.↲
╞	╞	╞	: ┆84┆name of tape volume max (32) copy ↓
┆19┆┆9a┆┄┄no.1 (8 hwds)↲
╞	╞	╞	: ┆84┆name of tape volume 1 copy no. 2 ↓
┆19┆┆9a┆┄┄(8 hwds)↲
╞	╞	╞	.↲
╞	╞	╞	.↲
╞	╞	╞	.↲
╞	╞	╞	: ┆84┆name of tape volume max (32) copy ↓
┆19┆┆9a┆┄┄no. 2 (8 hwds)↲
↲
The save catalog entry records have a length of ↲
↲
- ┆84┆58 halfwords when only one copy of volume tapes is ↓
┆19┆┆82┆┄┄specified.↲
- ┆84┆64 halfwords when to copies of volume tapes are specified↲
↲
A record has the fields:↲
↲
+0 ╞	╞	: first slice <12 + namekey <3 + permkey↲
+2╞	╞	: lower entry base↲
+4╞	╞	: upper entry base↲
+6╞	╞	: name of entry (1)↲
╞	╞	: name of entry (2)↲
╞	╞	: name of entry (3)↲
╞	╞	: name of entry (4)↲
+14╞	╞	: modekind (size)↲
+16╞	╞	: document name (1)↲
┆8c┆┆83┆┆bc┆↓
╞	╞	: document name (2)↲
╞	╞	: document name (3)↲
╞	╞	: document name (4)↲
+24╞	╞	: tail (6)↲
╞	╞	: tail (7)↲
╞	╞	: tail (8)↲
╞	╞	: tail (9)↲
+32╞	╞	: tail (10)↲
+34╞	╞	: scope↲
+36╞	╞	: actual scope↲
+38╞	╞	: new scope↲
+40╞	╞	: disc number↲
+42╞	╞	: new disc name (1)↲
+44╞	╞	: new disc name (2)↲
+46╞	╞	: new disc name (3)↲
+48╞	╞	: new disc name (4)↲
+50╞	╞	: shortclock latest changed↲
+52╞	╞	: volume count copy no. 1 for partial catalog↲
+54╞	╞	: file   count copy no. 1 for partial catalog↲
+56╞	╞	: block  count copy no. 1 for partial catalog↲
+58╞	╞	: volume count copy no. 2 for partial catalog↲
+60╞	╞	: file   count copy no. 2 for partial catalog↲
+62╞	╞	: block  count copy no. 2 for partial catalog↲
↲
The leading 34 halfwords are the catalog entry head and tail ↓
from the main catalog.↲
↲
The field first slice may be zeroed at time of transfer to ↓
tape of the partial catalog containing the entry if the ↓
backing storage area for some reason is not transferred to ↓
tape (area process in accessible, reserved by another etc. ↓
cf. 6.3).↲
↲
The fields scope, actual scope and new scope are scope keys ↓
representing the scope specification used in the ↓
specifications of the entry, the actual scope of the entry ↓
and the new scope to be given the entry by current modifier.↲
↲
┆8c┆┆83┆┆c8┆↓
The scope key has the following value range:↲
↲
0 any scope visible↲
1 all↲
2 perm↲
3 system↲
4 own↲
5 project↲
6 user↲
7 login↲
8 temp↲
↲
The field disc number is the number of the disc to which the ↓
entry belongs, numbered 1, ..., no of discs in the system.↲
↲
The field new disc name contains the name of the new disc to ↓
which the entry should belong according to current modifier. ↲
↲
The field shortclock latest changed has the meaning:↲
↲
permanent area entry     : ┆84┆shortclock latest changed in ↓
┆19┆┆9b┆┄┄entry (9) in auxcat↲
permanent bs entry       : ┆84┆shortclock from associated main ↓
┆19┆┆9b┆┄┄entry except:↲
╞	╞	             1) ┆84┆main entry not found in main ↓
┆19┆┆9e┆┄┄cat => value: = 1↲
╞	╞	             2) ┆84┆main entry not found in aux ↓
┆19┆┆9e┆┄┄cat => entry dropped↲
permanent other entry    : ┆84┆shortclock in entry (13) in ↓
┆19┆┆9b┆┄┄auxcat↲
temporary procedure entry: ┆84┆shortclock at time of catalog ↓
┆19┆┆9b┆┄┄scan↲
temporary other entry    : ┆84┆shortclock in entry (13) in main ↓
┆19┆┆9b┆┄┄cat↲
↲
The fields volume count, file count and block count for copy ↓
no 1 and 2 designate the tape or tapes and positions of the ↓
sync block ahead of partial catalog containing the entry. ↓
┆8c┆┆83┆┆c8┆↓
Initially all zero, assigned values when the partial catalog ↓
is transferred to tape.↲
↲
↲
┆b0┆┆a1┆7.2 Magnetic Tape Format↲
↲
The volume tapes in each copy of the backup contain:↲
↲
- ┆84┆a version (volume 1) or a continue (later volumes) dump ↓
┆19┆┆82┆┄┄label block as the first block in the file specified ↓
┆19┆┆82┆┄┄(volume 1) or file one (later volumes).↲
↲
- ┆84┆a save catalog in a number of blocks, updated until the ↓
┆19┆┆82┆┄┄latest output of a partial catalog.↲
↲
After the save catalog follows in one or more blocks a ↓
number of partial catalogs each containing the same maximal ↓
number of entries except the last one which may be shorter. ↓
Every partial catalog is preceeded by a sync block of a ↓
length recorded in the dump label (7.2.1) containing all ↓
zeroes. ↲
↲
Every partial catalog is followed by the data areas in one ↓
or more blocks belonging to the backing storage area entries ↓
which may be in the partial catalog. If no area entries ↓
exist in a particular partial catalog, it is followed by the ↓
next partial catalog (preceeded by a sync block). ↲
If the end of tape mark is passed, the last block on the ↓
tape, which may be a block of any of the types mentioned ↓
above, is followed by a tape mark. After the last block, ↓
sync block, partial catalog or data area, a tapemark is ↓
written and the next file on the tape will be a one block ↓
file containing an empty dump label block.↲
↲
↲
┆b0┆┆a1┆7.2.1 Dump Label Blocks↲
↲
A dump label block is 100 halfwords long and is either of ↓
the types↲
↲
┆8c┆┆83┆┆e0┆↓
- version  dump label↲
- continue dump label↲
- empty    dump label↲
↲
The blocks contain a text record and a non text record each ↓
one identifying the backup.↲
↲
The text record is 58 halfwords long and contains the fields ↲
↲
- program name (save or incsave)↲
- current tape name and file number↲
- ┆84┆the text 'vers.', 'cont.' or 'empty' followed by the ↓
┆19┆┆82┆┄┄dumptime↲
- ┆84┆the text 'segm.' followed by the maximal block length in ↓
┆19┆┆82┆┄┄segments↲
- ┆84┆the text 'label.' followed by the label text specified in ↓
┆19┆┆82┆┄┄the call (save) or↲
- ┆84┆the text 'level.' followed by the dump level number and ↓
┆19┆┆82┆┄┄the dumptime for the next lower level incremental dump ↓
┆19┆┆82┆┄┄found at user base in the main catalog (incsave)↲
- the characters <0><0><0><0><0><em>↲
↲
The text record appear on current output whenever written on ↓
tape.↲
↲
The non text record contains the fields:↲
↲
+58 +0╞	: maximal block length in segments↲
+58 +2╞	: maximal no of entries in partial catalogs↲
+58 +4╞	: no of entries in the save catalog↲
+58 +6╞	: name of save catalog (1)↲
╞	╞	: name of save catalog (2)↲
╞	╞	: name of save catalog (3)↲
╞	╞	: name of save catalog (4)↲
+58 +14╞	: lower entry base for save catalog↲
+58 +16   ╞	: upper entry base for save catalog↲
+58 +18╞	: size of save catalog in segments↲
┆8c┆┆83┆┆bc┆↓
+58 +20╞	: ┆84┆shortclock for dumptime (=tail (6) in save ↓
┆19┆┆90┆┄┄catalog entry in main catalog)↲
+58 +22       : version↲
+58 +24╞	: release <12 + subrelease↲
+58 +26╞	: length of sync block (halfwords)↲
↲
↲
┆b0┆┆a1┆7.2.2 Save Catalog Blocks↲
↲
The save catalog on tape is a number of blocks of the ↓
maximal length recorded in the dump label (7.2.1) each ↓
containing as many save catalog entry records as permitted ↓
by the length of the blocks and the length of the entries ↓
(7.1). ↲
↲
The fields of the entry records are described in 7.1.↲
↲
↲
┆b0┆┆a1┆7.2.3 Sync Blocks↲
↲
Synchronization (sync) blocks determine the positions of ↓
partial catalogs and have a length recorded in the dumplabel ↓
block (7.7.1). ↲
↲
The blocks contain all zeroes.↲
↲
↲
┆b0┆┆a2┆┆e2┆┆b0┆┆a1┆7.2.4 Partial Catalog Blocks↲
↲
A partial catalog is a number of block containing at most as ↓
many entry records as recorded in the dump label (7.2.1).↲
↲
The entry records have a length of 34 halfwords and are ↓
identical to the main catalog entry head and tail for the ↓
entry.↲
↲
The first halfword field, first slice, may be zero, which ↓
means that although the entry is an area entry, the backing ↓
┆8c┆┆83┆┆c8┆↓
storage area was not transferred to tape (the area was ↓
inaccessible, could not be write protected etc. cf 6.3).↲
↲
↲
┆b0┆┆a1┆7.2.5 Data Area Blocks↲
↲
The data area belonging to an area entry record in a partial ↓
catalog is a number of blocks each of the maximal length ↓
recorded in the dumplabel (7.2.1) except the last one, which ↓
may be shorter.↲
↲
The blocks are taken as an integral number of segments from ↓
the disc area and transferred to tape without any change.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆8. REQUIREMENTS↲
↲
The job process will need ressources of the following types to ↓
be able to run the programs save and incsave:↲
↲
- memory↲
- message buffers↲
- area processes↲
- tempory entries and segments↲
↲
↲
┆b0┆┆a1┆8.1 Memory↲
↲
As explained in 6.4.2, the main memory demands are allocated ↓
in the stack from the start, and depend very much on the ↓
blocksize specified.↲
↲
The following total process sizes have shown in practive to ↓
be sufficient to allow fairly complicated executions without ↓
pagings in the central loop for the given blocksize:↲
↲
 2 segments  40- 50000  halfwords  20000 halfwords minimum↲
 3 segments  45- 55000  halfwords  25000 halfwords minimum↲
 7 segments  55- 65000  halfwords  35000 halfwords minimum↲
 9 segments  60- 70000  halfwords  40000 halfwords minimum↲
21 segments  90-100000  halfwords  70000 halfwords minimum↲
42 segments 100-110000  halfwords  80000 halfwords minimum↲
63 segments 130-140000  halfwords 110000 halfwords minimum↲
84 segments 170-180000  halfwords 150000 halfwords minimum↲
↲
Note that beyound 21 segments per block the demand curve ↓
changes.↲
↲
In case less than absolute minimum memory size is available, ↓
the program terminates with a stack alarm.↲
↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆8.2 Area Process and Buffer Claim↲
↲
As explained in 6.4.1 and 6.4.2, the number of area ↓
processes available determines the maximal number of entries ↓
in each partial catalog with a certain minimum and to a ↓
certain maximum.↲
↲
Furthermore this number determines the number of message ↓
buffers needed.↲
↲
The following table gives for 1 and 2 copies of volume tapes ↓
the minimal number of area processes needed and upwards the ↓
number of message buffers needed.↲
↲
┆0e┆↓
┆a1┆     ╞	╞	╞	╞	↲
 minimum╞	  message buffers needed↲
 area ↲
┆a1┆ processes   1 copy       2 copies╞	↲
┆a1┆                      segm<=21    segm >21╞	↲
   6           6          8          5↲
   7           7          8          5↲
   8           8          8          5↲
   9           9          8          5↲
  10          10          8          5  ↲
  11          11          8          5↲
┆a1┆ >11          11          8          5     ↲
↲
┆0f┆↓
In case less than minimum area processes or message buffers ↓
are available, the program terminates with an alarm stating ↓
the need.↲
↲
↲
┆b0┆┆a1┆8.3 Temporary Entries and Segments↲
↲
The job process will need one temporary entry and some ↓
temporary segments for each of the following purposes:↲
↲

════════════════════════════════════════════════════════════════════════
↓
- infile parameter is used↲
- outfile parameter is used↲
- ┆84┆outfile is a temporary backing storage area or does not ↓
┆19┆┆82┆┄┄exist↲
- ┆84┆save catalog (incsave will need it as a permanent ↓
┆19┆┆82┆┄┄resource)↲
- partial catalog↲
↲
In case of shortage of these ressources, the program will↲
↲
- in the first two cases continue after a parameter warning↲
- in the third case terminate with the device status alarm↲
- ┆84┆in the last two cases terminate with a proper alarm ↓
┆19┆┆82┆┄┄message on current output↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆9. ERROR MESSAGES↲
↲
Error messages from the program are written in current ↓
output zone.↲
↲
The following kinds of error messages exist:↲
↲
- parameter alarm↲
- parameter warning↲
- entry specifier warning↲
- area entry warning↲
- parameter input syntax message↲
- area process warning↲
- area process alarm↲
- catalog error message↲
↲
↲
┆b0┆┆a1┆9.1 Parameter alarm↲
↲
At parameter alarm, the parameter list is emptied, listing ↓
the parameters from current parameter and on in the alarm ↓
message.↲
↲
The modebits are set: 'warning yes, ok.no'.↲
Since the parameter list is emptied, the program terminates.↲
↲
*** save alarm <text> <parameter list>↲
↲
Text:╞	╞	     Explanation:↲
↲
mountspec param╞	     ┆84┆mount param not followed by ↓
┆19┆┆9d┆┄┄.<integer>↲
tape param too many volumes  ┆84┆tape param specifies more than ↓
┆19┆┆9d┆┄┄32 volumes↲
label param syntax╞	     ┆84┆label not followed by .<name>↲
tape param missing╞	     ┆84┆no tape parameter found↲
segm param syntax╞	     ┆84┆segm not followid by .<integer>↲
↲
↲
┆8c┆┆83┆┆d4┆↓
┆b0┆┆a1┆9.2 Parameter Warning↲
↲
The parameter warning skips current parameter, displaying it ↓
in the error message and continues, setting the modebits: ↓
'warning yes, ok.yes'↲
↲
*** save warning <text><current parameter>↲
↲
Text:╞	╞	     Explanation:↲
↲
outfile param connect╞	     The current output zone could ↲
impossible <cause>╞	     ┆84┆not be connected to the ↓
┆19┆┆9d┆┄┄file specified for the reason ↓
┆19┆┆9d┆┄┄explained in <cause>. The ↓
┆19┆┆9d┆┄┄stacked output zone is ↓
┆19┆┆9d┆┄┄unstacked again and output ↓
┆19┆┆9d┆┄┄continues.↲
↲
infile param connect         The current input zone could ↲
impossible <cause>╞	     ┆84┆not be connected to the file ↓
┆19┆┆9d┆┄┄specified for the reason ↓
┆19┆┆9d┆┄┄explained in <cause>.↲
↲
╞	╞	╞	     ┆84┆The stacked input zone is ↓
┆19┆┆9d┆┄┄unstacked again and input ↓
┆19┆┆9d┆┄┄continues, maybe from fp ↓
┆19┆┆9d┆┄┄command stack:↲
↲
mountspec param syntax╞	     ┆84┆The parameter 'mountspec' was ↓
┆19┆┆9d┆┄┄not followed by .<integer>.↲
╞	╞	╞	     ┆84┆the value remains the latest ↓
┆19┆┆9d┆┄┄read or default.↲
↲
release param syntax╞	     ┆84┆The parameter 'release' was not ↓
┆19┆┆9d┆┄┄followed by .yes or .no.↲
╞	╞	╞	     ┆84┆The value remains the latest ↓
┆19┆┆9d┆┄┄read or default.↲
↲
┆8c┆┆83┆┆c8┆↓
list param unknown╞	     ┆84┆The parameter 'list' was not ↓
┆19┆┆9d┆┄┄followed by .yes, .no or ↓
┆19┆┆9d┆┄┄.<name>.↲
╞	╞	╞	     ┆84┆The value remains the latest ↓
┆19┆┆9d┆┄┄read or default.↲
↲
changedisc param syntax╞	     ┆84┆The parameter 'changedisc ↓
┆19┆┆9d┆┄┄.<from disc>' was not followed ↓
┆19┆┆9d┆┄┄by .<name>↲
╞	╞	╞	     ┆84┆The value becomes <to disc> = ↓
┆19┆┆9d┆┄┄no.↲
↲
newscope param syntax╞	     ┆84┆The parameter 'newscope' was ↓
┆19┆┆9d┆┄┄not followed by .<name>↲
╞	╞	╞	     ┆84┆The value is not changed↲
↲
newscope param unknown╞	     ┆84┆The parameter to newscope was ↓
┆19┆┆9d┆┄┄neither of temp/login/user/pro- ↓
┆19┆┆9d┆┄┄ject/no↲
╞	╞	╞	     The value is not changed.↲
↲
disc spec param unknown╞	     ┆84┆The disc specified in disc ↓
┆19┆┆9d┆┄┄specifier was unknown. ↲
         ╞	╞	     ┆84┆Previous disc specifier is ↓
┆19┆┆9d┆┄┄cancelled, all other discs ↓
┆19┆┆9d┆┄┄specified in this disc ↓
┆19┆┆9d┆┄┄specifier become specified.↲
↲
scope param syntax╞	     ┆84┆The scope parameter was not ↓
┆19┆┆9d┆┄┄followed by .<name>↲
╞	╞	╞	     ┆84┆No entries will be saved ↓
┆19┆┆9d┆┄┄according to this entry ↓
┆19┆┆9d┆┄┄specifier.↲
↲
scope param unknown╞	     ┆84┆The scope specified was neither ↓
┆19┆┆9d┆┄┄of temp/login/user/project/own/↲
╞	╞	╞	     system/perm/all.↲
┆8c┆┆83┆┆bc┆↓
╞	╞	╞	     ┆84┆No entries will be saved ↓
┆19┆┆9d┆┄┄according to this entry ↓
┆19┆┆9d┆┄┄specifier.↲
↲
docname param syntax╞	     ┆84┆The 'docname' parameter was not ↓
┆19┆┆9d┆┄┄followed by .<name>↲
╞	╞	╞	     ┆84┆No entries will be saved ↓
┆19┆┆9d┆┄┄according to this entry ↓
┆19┆┆9d┆┄┄specifier.↲
↲
name illegal╞	╞	     ┆84┆the name specified in entry ↓
┆19┆┆9d┆┄┄specifier was 'c', 'v' or ↓
┆19┆┆9d┆┄┄'primout'.↲
╞	╞	╞	     ┆84┆The entry is not saved.↲
↲
name double defined╞	     ┆84┆A name was already specified. ↓
┆19┆┆9d┆┄┄The new name is ignored and the ↓
┆19┆┆9d┆┄┄program continues with the ↓
┆19┆┆9d┆┄┄current entry specifier.↲
↲
save spec param unknown╞	     ┆84┆Syntactically the parameter ↓
┆19┆┆9d┆┄┄would start a save specifier, ↓
┆19┆┆9d┆┄┄but the parameter is not↓
┆19┆┆9d┆┄┄<s><name>.↲
╞	╞	╞	     ┆84┆The rest of the parameter list ↓
┆19┆┆9d┆┄┄is read, each parameter with ↓
┆19┆┆9d┆┄┄this warning as a result.↲
↲
↲
┆b0┆┆a1┆9.3 Entry and Save Specifier Warnings↲
↲
The entry specifier is listed in the error message, the mode ↓
bits are set 'warning.yes, ok.yes' and the program ↓
continues with the next entry specifier.↲
↲

════════════════════════════════════════════════════════════════════════
↓
*** ┆84┆save no entries found according to following specifier↲
╞	╞	╞	 ↲
╞	╞	 ╞	   disc: <disc specifier>↲
╞	╞	╞	  entry: <entry specifier>↲
↲
Explanation: no entries are found in the main catalog ↓
according to the entry specifier.↲
↲
┆b0┆┆82┆↲
┆b0┆┆a1┆9.4 Save Specifier Alarm↲
↲
The modebits are set 'warning.yes, ok.no' and the program ↓
terminates.↲
↲
*** save no entries saved according to any specifier↲
↲
Explanation: although entries were found according to ↓
specifications, none were saved because a partial catalog on ↓
disc could not be connected (cf. 9).↲
↲
*** save nothing saved↲
↲
Explanation: all entry specifiers have missed with the ↓
above 'no entries found' warning for each one as result.↲
↲
↲
┆b0┆┆a1┆9.5 Area Entry Warning↲
↲
The warning appears in current output following the entry ↓
concerned.↲
↲
The modebits are set 'warning.yes, ok.yes' and the program ↓
continues.↲
↲
<entry>↲
*** warning: entry skipped <cause>↲
↲

════════════════════════════════════════════════════════════════════════
↓
Explanation: the area process could not be created, not be ↓
protected/reserved or the area was inaccessible for the ↓
reason stated in <cause>.↲
↲
The entry but not the area has been saved.↲
↲
The warning appears only if list.yes or list.name is ↓
specified.↲
↲
Cause: ╞	╞	    Reason:↲
↲
area claims exceeded╞	    create area process failed↲
catalog i/o error,╞	    create area process failed↲
state of document does not ↲
permit call↲
↲
entry not found╞	    create area process failed↲
entry not an area entry     create area process failed↲
name format illegal╞	    create area process failed↲
↲
reserved by another process set write protect/reserve failed↲
current output file ╞	    ┆84┆the area is connected as current ↓
┆19┆┆9c┆┄┄output file↲
process does not exist,╞	    set write protect/reserve failed↲
process is not user of ↲
area process↲
↲
covered by a better entry   ┆84┆area is inaccessible from ↓
┆19┆┆9c┆┄┄executing process↲
↲
↲
┆b0┆┆a1┆9.6 Parameter Input Syntax Error Message↲
↲
This message is caused by a syntax error in the parameter ↓
list read from a file connected to current input zone.↲
↲
The parameter list must follow the syntax of an fp parameter ↓
list and must be coded in the special fp input alphabet, cf. ↓
(9), with the one exception that the character 'NL' is ↓
equivalent to the character 'SP'.↲
↲

════════════════════════════════════════════════════════════════════════
↓
The current parameter is listed in the error message and the ↓
zone stack chain is emptied, listing the chain on current ↓
output the same way fp does in a fp syntax error message.↲
↲
The parameter reading is continued in the fp command stack.↲
↲
The modebits are left unchanged.↲
↲
*** save syntax <parameter>↲
  * read from <file>↲
  * selected from <file>↲
  .↲
  .↲
  .↲
*** save reinitalized↲
↲
↲
┆b0┆┆a1┆9.7 Catalog Error Messages↲
↲
The error messages appear on current output before the first ↓
entries are saved.↲
↲
The messages concern the↲
↲
- ┆84┆changing or creation of a permanent (incsave) save ↓
┆19┆┆82┆┄┄catalog↲
- the connecting to the save catalog↲
- ┆84┆the creation and connecting to a temporary partial catalog↲
↲
The modebits are untouched and the program continues until ↓
output is tried. Then the program terminates with a device ↓
status alarm.↲
↲
*** save <monitor proc> <name> <result>↲
↲

════════════════════════════════════════════════════════════════════════
↓
Explanation: an existing permanent save catalog could not be ↓
changed or could not be created/scoped.↲
↲
If possible a temporary one is created.↲
↲
If not created, the next error message will be as below.↲
↲
The name of the monitor procedure and the result is shown ↓
together with the name of the save catalog.↲
↲
*** save connect <name> <result>↲
↲
Explanation: either the permanent save catalog (incsave) ↓
could not be connected, a temporary one (save) or a ↓
temporary partial catalog could not be created and ↓
connected.↲
↲
The result of the connection together with the name of the ↓
save/partial catalog is shown.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆10. FURTHER EXAMPLES↲
↲
┆b0┆┆a1┆10.1 Example 1↲
↲
The file pip of scope user and all files with documentname ↓
pip and scope user are saved on mtdp0001 file 1 by the call: ↓
↲
     save mtdp0001.1 pip.scope.user docname.pip.scope.user↲
↲
↲
┆b0┆┆a1┆10.2 Example 2↲
↲
All files of scope temp, login, user or project on the ↓
discs: disc, disc1 and disc2 are saved changing their disc ↓
names:↲
disc  becomes disc3↲
disc1 becomes disc2↲
disc2 becomes disc1↲
by the call:↲
     save mtdp0001.1,↲
     changedisc.disc.disc3.disc1.disc2.disc2.disc1,↲
     disc.disc.disc1.disc2,↲
     scope.own↲
↲
↲
┆b0┆┆a1┆10.3 Example 3↲
↲
All files in the main catalog, except↲
- the main catalog itself↲
- the auxiliary catalogs↲
- files of name c or v with permkey = 0↲
- files of name primout with permkey = 2↲
- files belonging to other discs than disc, disc1 and disc2 ↓
are saved, disc by disc by the call:↲
↲

════════════════════════════════════════════════════════════════════════
↓
save in. magtapes,↲
disc.disc  scope.all,↲
disc.disc1 scope.all,↲
disc.disc2 scope.all↲
↲
provided the executing process has standard base = system ↓
base and the file 'magtapes' contain a tape parameter, e.g.↲
↲
mtdp0001.1.mtdp0002.mtdp0003.mtdp0004.mtdp0005.↲
mtdp0006.1.mtdp0007.mtdp0008.mtdp0009.mtdp0010.↲
↲
The files are saved in two copies, each copy containing at ↓
most 5 volumes.↲
↲
┆b0┆┆a1┆10.4 Example 4↲
↲
In example 1.4, the permanent files on two logical ida discs ↓
were saved on a streaming tape unit on the same ida ↓
controller, using a blocklength of 3 segments.↲
↲
The chances of keeping the tape in streaming mode using this ↓
blocklength increase if the tape is written with long block ↓
gaps, an option available for RC8343 and RC8344 Streaming ↓
Tape Units (cf. 6.2).↲
↲
As in example 1.1, filedescriptiors may be set in the ↓
catalog, specifying the modekind wanted:↲
↲
t1= set 2688.18 mt841201; long block gap, high speed, high↲
                        ; density↲
t2= set 2688.18 mt841202; ↲
t3= set 2688.18 mt841203;↲
↲
Now example 1.4 becomes:↲
↲
save mountspec. 55,↲
     t1.1.t2.t3   ,↲
     scope.perm↲
↲

════════════════════════════════════════════════════════════════════════
↓
The halfword, mode, specifying long block gap for the ↓
different standard modes is determined this way:↲
↲
long block gap, mthl = 2048 + 512 + 132 = 2692↲
long block gap, mthh = 2048 + 512 + 128 = 2688↲
long block gap, mtll = 2048 + 512 +   4 = 2564↲
long block gap, mtlh = 2048 + 512 +   0 = 2560↲
↲
Tapes with long block gaps may be read by any tape station.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆11. INTRODUCTION INCSAVE↲
↲
The program incsave transfers catalog entries and backing ↓
storage entries, i.e. files, to magnetic tape for backup ↓
purpose in an incremental procedure based on the concept of ↓
levels.↲
↲
The backup of a file system in one level is based on the ↓
backup of the same file system on the next lower level, i.e. ↓
all backups on the same level are based on the backup on the ↓
same next lower level. ↲
↲
A permanent save catalog identifying and describing the ↓
backup on the level given is left in the file system of the ↓
job process in order to↲
↲
- ┆84┆be the base of a backup of the same filesystem on the next ↓
┆19┆┆82┆┄┄upper level↲
- offer documentation of the backup performed↲
- ┆84┆ease relocation and reload of files in the backup ↓
┆19┆┆82┆┄┄performed by the program incload↲
↲
The files in the backup are conveniently relocated and ↓
reloaded by the program incload, but the program load may do ↓
it.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆12. EXAMPELS↲
↲
┆b0┆┆a1┆12.1 Example 1↲
↲
All files of scope project, user, login and temp are ↓
transferred to the tape mtdp0001 file 1 by the call:↲
╞	incsave mtdp0001.1 level.0 scope.own↲
↲
A level 0 backup of a file system is considered a total ↓
backup of the file system, i.e. all files are saved, no ↓
matter their age.↲
↲
A save catalog of name 'level0' of scope user is left in the ↓
catalog (cf. 6.1 and 7.1) describing the backup made. ↓
Shortclock (word 6 of the entry tail) in the entry 'level0' ↓
contains the dumptime, on which incremental backups on level ↓
1 are based.↲
↲
The parameter level.0 may be omitted, since zero is the ↓
default value.↲
↲
↲
┆b0┆┆a1┆12.2 Example 2↲
↲
All files in the filesystem in example 1, which have been ↓
updated since the backup in example 1 are transferred to the ↓
same tape, next file, by the call:↲
↲
╞	incsave mtdp0001.last level.1 scope.own↲
↲
This level 1 backup of the file system will concern all ↓
files in the same file system which have been updated or ↓
created since the level 0 backup.↲
↲
A permanent save catalog of the name 'level1' is left in the ↓
catalog, describing the backup.↲
↲
┆8c┆┆83┆┆bc┆↓
Now, as long as the level 1 backup is not too voluminous, ↓
you may continue with level 1 backups in the next file and ↓
the next file a.s.o. or you may use the same file for all ↓
level 1 backups.↲
↲
At all times, then, the latest level 1 backup and the level ↓
0 backup together contains your filesystem as of the time ↓
for the level 0 backup and all changes made since then.↲
↲
When the level 1 backup grows too voluminous, you may do a ↓
level 0 backup again. e.g. in file 1, or you may proceed ↓
on the next level in the next file:↲
↲
╞	incsave mtdp0001.last level.2 scope.own↲
↲
Now a permanent save catalog of the name 'level2' is left ↓
in the catalog.↲
↲
Together, the level 0, the latest level 1 and the latest ↓
level 2 backup contain your file system as of the time of ↓
the level 0 backup with all changes made since then.↲
↲
To relocate and reload the latest version of a file, you ↓
first try the level 2 backup, then the level 1 and the ↓
level 0 backup until the file is found, unless you know ↓
in which level to look.↲
↲
↲
┆b0┆┆a1┆12.3 Example 3↲
↲
Suppose a pool of tapes for level 0 backups are specified ↓
in the file 'level0tapes':↲
↲
╞	mountspec.55↲
╞	mthh↲
╞	mtdp0001.1. mtdp0002. mtdp0003...↲
↲

════════════════════════════════════════════════════════════════════════
↓
and a pool of level 1 tapes in the file 'level1tapes':↲
↲
╞	mountspec.55↲
╞	mthh↲
╞	mtdp0101.last.mtdp0102.mtdp0103...↲
╞	level.1↲
↲
and a pool of level 2 tapes in the file 'level2tapes':↲
↲
╞	mountspec.55↲
╞	mthh↲
╞	mtdp0201.last.mtdp01202.mtdp0203...↲
    level.2↲
↲
and maybe more.↲
↲
In a job process with standard base = project base of some ↓
project, all permanent files belonging to all users in the ↓
project (login, user, project) will be saved by the call:↲
↲
╞	incsave in.level0tapes scope.perm↲
↲
Now, with certain intervals level 1 backups are made by ↓
the call↲
↲
╞	incsave in.level1tapes scope.perm↲
↲
When the level 1 backup grows too voluminous or the total ↓
ammount of level 1 backups threaten too overflow the tapes ↓
in the pool, a level 2 backup is made:↲
↲
╞	incsave in.level2tapes scope.perm↲
↲
and so forth.↲
↲
Whenever desired, the total level 0 dump can be made:↲
↲
╞	incsave in.level0tapes scope.perm↲
↲
┆8c┆┆83┆┆d4┆↓
defining the base for a new succession of incremental ↓
backups.↲
↲
If the job process has its standard base = system base, the ↓
file system specified becomes all permanent files in the ↓
main catalog.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆13. CALL↲
↲
The program is called exactly as save, except for ↲
- the additional special parameter 'level':↲
- the ignored tape parameter 'label'.↲
↲
↲
┆b0┆┆a1┆13.1 Tape Parameter↲
↲
The 'label' parameter is allowed but ignored, so the syntax ↓
becomes the same as for save.↲
↲
↲
┆b0┆┆a1┆13.2 Special Parameter↲
↲
The parameter group becomes:↲
↲
                      segm.<integer>↲
<special param> ::=   list.  yes/no/names↲
                      level.<integer>↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆14. FUNCTION↲
↲
The function is the same as for save, except the additional ↓
special parameter determines the name of the save catalog to ↓
use.↲
↲
↲
┆b0┆┆a1┆14.1 Tape Parameter↲
↲
The 'label' parameter is ignored.↲
↲
↲
┆b0┆┆a1┆14.2 Function, Special Parameter↲
↲
level.<integer>↲
↲
Defines the backup level. If the integer specified exceeds 9, ↓
dumplevel becomes 9.↲
↲
Default: 0↲
↲
An entry of scope user defining any next lower level with ↓
one of the names level0, level1, level2, ..., level9 is ↓
looked up in the catalog.↲
↲
If found its shortclock is taken as the base time for the ↓
backup, if not the time 0 is taken.↲
↲
A new save catalog of scope user and name <:level:> add ↓
'backup level' is looked up and changed/created with backup ↓
time 'now' as shortclock.↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆15. COMPATIBILITY↲
↲
The programs incsave, save, incload and load are parameter ↓
compatible in the sense that any one of them may read any ↓
others parameter list and simply ignore unused parameters ↓
known to be significant to others.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆16. IMPLEMENTATION DETAILS↲
↲
┆b0┆┆a1┆16.1 Use of the Save Catalog↲
↲
The save catalog is used in exactly the same way as for ↓
save, cf. 6.1, except it is left permanent in the catalog ↓
with a known name, fully updated concerning the positions of ↓
all files saved.↲
↲
↲
┆b0┆┆a1┆16.2 Handling of Magnetic Tape↲
↲
Exactly as for save, cf. 6.2.↲
↲
↲
┆b0┆┆a1┆16.3 Handling of Backing Storage Areas↲
↲
Exactly as for save, cf. 6.3.↲
↲
↲
┆b0┆┆a1┆16.4 The input/output Strategy↲
↲
Exactly as for save, cf. 6.4.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆17. EXACT FORMATS↲
↲
Exactly as for save, cf. 7, specially 7.1 where 'shortclock ↓
latest changed' is defined.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆18. REQUIREMENTS↲
↲
As for save, cf. 8.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆19. ERROR MESSAGES↲
↲
As for save, cf. 9, except the program name is incsave.↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆20 FURTHER EXAMPLES↲
↲
┆b0┆┆a1┆20.1 Example 1↲
↲
In this example is suggested a way of performing incremental ↓
backups of a filesystem, which fully exploits the ↓
possibilities inherent in the concept of levels.↲
↲
Suppose pools of tapes are defined in files pool0, pool1, ↓
... and pool91, pool 92, .... ↲
↲
Maybe a poool is just one file on a tape or one tape, maybe ↓
a pool is multivolume tape specifications in two copies. ↓
Maybe the pools are defined by file descriptors.↲
↲
Suppose a filesystem is specified in the file 'filesystem'. ↲
↲
Start with a full level 0 backup:↲
↲
╞	incsave in.pool0 in.filesystem↲
↲
Next, periodic level 9 backups should be made on an ↓
exponential progression of tape pools (also called Tower of ↓
Hanoi progression, 1, 2, 1, 3, 1, 2, 1, 4 ..., pool 1 used ↓
every other time, pool 2 every fourth time, pool 3 every ↓
eighth time, etc.):↲
↲
╞	incsave in.pool91 level.9 in.filesystem ╞	↲
╞	incsave in.pool92 level.9 in.filesystem↲
╞	etc.↲
↲
These level 9 backups are based on the level 0 full backup.↲
↲
When the level 9 backup becomes too voluminous (too time ↓
consuming, too tapeconsuming), a level 1 backup should be ↓
made in the level 1 pool:↲
↲
╞	incsave in.pool1 level.1 in.filesystem↲
↲
┆8c┆┆83┆┆d4┆↓
Now the exponential series of level 9 backups should ↓
progress as uninterrupted.↲
↲
The level 9 backups now become based on the level 1 backup, ↓
which was based on the level 0 full backup. ↲
↲
The progression of backups can be carried as far as desired.↲

════════════════════════════════════════════════════════════════════════
↓
↲
↲

════════════════════════════════════════════════════════════════════════
↓
┆b0┆┆a1┆A. REFERENCES↲
↲
(1)  RCSL No 991-9773↲
     RC8000/IDA801 Main process↲
 ↲
(2)  RCSL No 31-D676↲
     Utility Programs, Part One↲
↲
(3)  RCSL No 991-10081↲
     RC8000 Utility Programs, Version 2↲
     ┆84┆Load, Incload↲
     Users Manual↲

════════════════════════════════════════════════════════════════════════
↓
↲

════════════════════════════════════════════════════════════════════════
↓
┆1a┆┆1a┆ower level with ↓
one of the names level0, level1, level2, ..., level9 is ↓
looked up in the catalog.↲
↲
If found i

Full view