rane [Update=]filename [directive]* [+Clear] [(+|-)Write]
Append=[symdef_lst<]filename +Clear Delete=symdef_lst +Full eXtract=[symdef_lst>]filename +List [Include=][symdef_lst<]filename -Stop Move=symdef_lst>symdef +Write Move=symdef_lst<symdef +Verbose Print=symdef_lst RePlace=[symdef_lst<]filename <directives_file
RANE lets you edit the contents of a random object library, by appending, replacing, deleting, and moving individual object decks within the library.
The object decks are always referred to by one of their primary SYMDEFs. Decks are deleted as required to insure the uniqueness of this naming method.
If the modifications to the library consist only of replacing object decks that are already present, and if +Full was not specified, RANE tries a fast update. This involves writing decks directly into the library, rather than copying the library to a work file and back. This may be undesirable in some situations; you can prevent it by specifying +Full.
RANE may give up on the fast update for various reasons. If so, RANE uses a normal update for the rest of the processing.
To allow for this updating mechanism, RANE does not collect unused space which may appear between object decks in the library, even if you aren't using a fast update.
If the fast update is not used or is abandoned, RANE proceeds with a normal update, as described below.
RANE processes the directive options on the command line in the following order:
If +Verbose is specified, the editing step produces various modification messages.
When only an output file (and possibly output redirection) are specified under TSS, RANE lists the contents of the library file, but does not change the file in any way.
In batch, if there is no command line, the output file defaults to file code "OT". If no options are given (or if the command line is absent), RANE assumes the options
Include=fc*r* +verbose +list
If a $SOURCE control card is found in the R* and there is a B* file code present, RANE reads object decks from the B* file until the next EOF.
The following examples show ways that you can use RANE.
rane mylib i=b*
edits the modules in the file B* into the library "mylib". If "mylib" does not have an acceptable format, RANE does not overwrite it.
To get a listing of the contents of a library, type
rane mylib +List
to write the listing to the terminal, or
rane mylib >listfile
to write the listing into the file "listfile". In the second case you get a listing because +List is the default.
The following compresses a library that contains unused space.
rane mylib +full
Since "mylib" is used as a source of updates, the decks are trimmed properly.
To edit the library interactively, type
rane mylib < del time,date extract print>b* list >listfile <ctrl-\>
where <cntl-\> is the ASCII FS (file separator) character. This is usually generated by holding down the CTRL key and pressing "\". The above example deletes the modules "time" and "date" from the library, extracts the module "print" into a file named "b*", and produces a listing of the library contents in the file "listfile".
When a series of source modules are to be compiled into a library, the following sequence is useful.
rane mylib +clear < !b file1 -Load include b* !b file2 -Load include b* . . . !b filen -Load include b* <ctrl-\>
Of course, any program which generates an object file can be used in the above sequence of commands.
The listing file contains three types of messages: error messages, modification messages, and library listings.
Error messages are sent to the file whenever an error occurs in editing the library. These messages are also sent to the terminal if output has been redirected.
Modification messages describe the action performed by the Update=, Delete=, Move=, and eXtract= options. These messages only occur in +Verbose mode.
Library listings are produced in response to the +List directive, and display the current contents of the work library.
In fast update mode, unused space may appear in a library if some modules shrink. This space is not recovered by normal update. To recover the space, use the sequence described above.
In TSS, the code that writes to the library tries to protect itself from being interrupted by the BREAK key. In batch, however, the code cannot protect itself from aborts. Also because of a bug in TSS, RANE cannot protect itself against the BREAK key if it is being run inside CRUN. Should the program terminate while writing to the library, the library's contents will be (partly) destroyed.
If RANE encounters an error, it turns on switch bits 18-26. In TSS, it also executes DRL T.ERR. If no errors are encountered, RANE turns off switch bits 18-25; in addition, it turns on bit 26 if the library was updated and turns off bit 26 if the library was not updated. The Gcos or TSS abort code from the slave prefix (.XABT1 or .LABRT) is placed in bits 27-35.
Copyright © 1996, Thinkage Ltd.