{
{   The purpose of this procedure is to "recover" files for a
{ particular server following a server timeout or client recovery,
{ and subsequent re-activation.
{ The process attempts to leave the following tables in a consistant state:
{ ---- CLIENT ------------------------------- SERVER ----------
{ memory manager segment descriptor table
{      extended
{ file manager tables (path_table,
{     and cycle table) and
{ device manager system file table
{                                       attached permanent file table
{                                       device manager system file table
{
{ . This process takes place on the first reference to the server by any task
{    in the job after the server becomes active.  The server becomes active
{    after system recovery.
{ . Any server file attached at the time of the server timeout needs to
{    be 'recovered'.  This is because device management on the server has
{    re-attached the file and the
{    remote system_file_identifier in the server descriptor in the
{    system file table of the client is incorrect.
{ . If a server file is not recovered, memory manager is notified
{    to terminate reference to the segment if it was open.
{ . An attempt will be made to detect and report inconsistancies in the
{    tables, such as already locked entries, or the existence of two tables
{    that contain inconsistant entries (for example mis-match between permanent
{    files and file manager).
{    If the error is in an individual file entry processing will continue,
{    and the file is left in a terminated state.
{
{ . This revision does NOT deal with:
{    - File damaged attributes
{    - Updating and correcting of eoi
{    - Use of statistics to report occurences, etc.
{
{  This assumes:
{  - While this process is executing there will be no other task attempting
{    server job  recovery.  A file server job recovery lock controls
{    multiple tasks.  The path table lock is used to prevent access to the
{    path table while this process is occuring.
{  - File server is active and requests can be made to the server.
{  - The file server processing has verified that this job exists on the
{    server and has initiated the attached permanent file setup.
{  - The file server processing will complete the permanent file server
{    job recovery process when done. This process is responsible for
{    removing files known by permanent files but known in the file manager
{    table.
{
{   FMP$RECOVER_SERVER_FILES (SERVER_MAINFRAME_ID, STATUS)
{
{  SERVER_MAINFRAME_ID: (input) This parameter specifies the server mainframe
{     to perform server job recovery on.
{
{  STATUS: (output) This parameter returns the request status.
{     The conditions:
{
{     pfe$not_all_pfs_recovered
{       indicates that not all permanent files were
{       reattachable.  The tables are left in a consistant state, however,
{       and normal job execution may continue.
