Rim file editor – Rime

The Rim file editor (Rime) is a useful tool for examining and correcting Rim databases. It allows you to examine the data files on a word or record basis. You can display in a convenient style the header and relation, attribute, and link tables of file 1, the header and data records of file 2, and the header and key records of file 3. You can change the value of any word in the database.

Rime is not a general user tool—its purpose is to investigate and correct Rim database problems. The Rime user is expected to have a comprehensive knowledge of Rim file structures. One of the operations you may perform with Rime, for example, is to un"remove" a table. You can do this by making the relation record's forward pointer positive. It is negative for a "remove"'d table.


Rime accepts the following commands. Many operate on a ``current page'', which is set by the two commands "file" and "page". Most displays include integer, text, and data pointer interpretations. Rime's only error message is terse and uninformative.

 <"open" <filename> 〈options〉 opens a database identified by <filename>. This is comparable to the open command of Rim.

 <"header" <#> displays the header record of file <#>. This does not affect the current file or current page.

 <"file" <#> sets the current file to <#>.

 <"page" <#> sets the current page to <#> in the current file. "file" must be set first.

 <"relations" $\Bigl\langle$
<name> <row#> "."
$\Bigr\rangle$ displays a relation record. You must be editing file 1. Omission of the parameter displays the next relation in the table. A particular relation can be selected with
\begin{List}
\item[<name>] displays the named relation.
\item[<row\char93 >] dis...
...ation pointer.
\item[''.''] displays the first relation in the table.
\end{List}

 <"attributes" $\Bigl\langle$
<name> <row#> "."
$\Bigr\rangle$ displays an attribute record. You must be editing file 1. Omission of the parameter displays the next attribute in the table. A particular attribute can be selected with
\begin{List}
\item[<name>] displays the named attribute.
The attribute is \lq look...
...bute pointer.
\item[''.''] displays the first attribute in the table.
\end{List}

 <"links" $\Bigl\langle$
<name> <row#> "."
$\Bigr\rangle$ displays a link record. You must be editing file 1. Omission of the parameter displays the next link in the table. A particular link can be selected with
\begin{List}
\item[<name>] displays the named link.
\item[<row\char93 >] display...
...is a link pointer.
\item[''.''] displays the first link in the table.
\end{List}

 <"tuple" $\Bigl\langle$
<word> <word> <page> "."
$\Bigr\rangle$ displays a tuple. You must be editing file 2. Omission of the parameter displays the next tuple in the table. A particular tuple can be selected with
\begin{List}
\item[<word>] displays the tuple starting at <word>.
\item[<word> <...
...page>.
\item[''.''] displays the first tuple in the current relation.
\end{List}

 «word> <count> displays selected words from the current page. <word> is the starting word address in the page. <count> is the number of words to display. Words are displayed as integers, text, and pointers.

 <"store" <word> <value> changes the contents of the current page at <word> to <value>. If <value> is not an integer then it is assumed to be text. If a text value is longer than ZCW characters then more than one word in the page will be affected.

 <"real" <value> displays the value as a real. If < value > ≤4096 it is assumed to point to a word in the current page.

 <"double" <value> displays the value as a double precision real. If < value > ≤4096 it is assumed to point to a doubleword in the current page. Otherwise a "double" acts just like "real".

 <"text" <value> displays the value as ascii-text. If < value > ≤4096 it is assumed to point to a word in the current page.

 <"date" <value> displays the value as a date. If < value > ≤4096 it is assumed to point to a word in the current page.

 <"time" <value> displays the value as a time. If < value > ≤4096 it is assumed to point to a word in the current page.

 <"itoh" <value> displays the value as a datafile pointer (the ITOH function). If < value > ≤4096 it is assumed to point to a word in the current page.

 <"htoi" <word> <page> displays the pointer elements as an integer (the HTOI function).

 <"set" <options> sets running parameters—just like Rim's "set" command.

 <"show" <options> shows running parameters—just like Rim's "show" command.

 <"parameters" displays some of the compilation parameters defined in SYSPAR. These are not the parameters of "set" and "show".

 <"system" <command> sends the <command> to the operating system for execution. <command> must be a single string.