Article 168072 of comp.os.vms:

In article <33560306.446B@adv.magwien.gv.at>, Ferry Bolhar-Nordenkampf <bol@adv.magwien.gv.at> writes...
>Jacques Raymond Kilchoer wrote:
>> 
>> In my program I link a FAB to XAB blocks (for example XABPRO) before
>> calling SYS$DISPLAY. Can I change the XAB blocks linked to the XAB

>You can. RMS traverses the chain of XAB's whenever you call a RMS
>service. This allows you to use the same FAB for multiple $DISPLAYS 
> with different XABs.

Correct.

>You _can't_ however change connected RABs since RMS internally stores
>the IFI and ISI values assigned when you open the file and connect the
>RAB. These values are checked whenever a RMS service is called.

More or less correct. It are the IFI's / ISI's that 'make' the FAB / RAB.
One could for example put a list of ISI's aside and later stick them in 
some random RAB to perform timer driven $FLUSH calls with independend
of the original RAB. Of you use a list of IFIs to $CLOSE the files later
without having to hang on to the whole FAB structure. Obviously you gotta 
go somewhat careful playing such games, but it _can_ be usefull. 
It _can_ save significant memory and _can_ increase locality of 
reference. For example, I've once 'tuned up' a generic RMS access package
where the API require a RAB pointer, BUF pointer/lenght KEY pointer/length
The code would later fill in all the RAB fields. I changed that RAB pointer
to just be an ISI value and used just a single local RAB to fill in instead!

Hope this helps,                +--------------------------------------+
Hein van den Heuvel, Digital.   | All opinions expressed are mine, and |
  "Makers of VMS and other      | may not reflect those of my employer |
   fine Operating Systems."     +--------------------------------------+