*COMDECK PFDIAG 
      CONTROL EJECT;
CONTROL IFEQ OS$NAME,KRONOS;
      PROC PFDIAG (FET, RC);
#                                      #
#        P F D I A G                   #
#                                      #
# THIS PROC ISSUES DIAGNOSTICS BASED ON PERMANENT FILE RETURN CODES. #
# IT EXPECTS -FET- TO BE A KRONOS FET OF A PERMANENT FILE AND RC THE #
# RETURN CODE TO BE DIAGNOSED. SPECIAL DIAGS FOR COMMON PROBLEMS. # 
  
      BEGIN 
      ARRAY FET;               # FET OF FILE WHICH RECEIVED THE CODE #
        ITEM FETPFN C(08,00,07);
      ITEM RC I;               # RETURN CODE TO BE DIAGNOSED #
  
      DEF BUSY#1#;             # KRONOS PFM CODE FOR FILE BUSY #
      DEF NOTFOUND#2#;         # KRONOS PFM CODE FOR FILE NOT FOUND # 
  
      IF RC EQ NOTFOUND                                                  PFDIAG 
      THEN                                                               PFDIAG 
        BEGIN                                                            PFDIAG 
        DIAG(257, FETPFN[0]);      #FILE BUSY, ATTACHED ELSEWHERE      # PFDIAG 
        END                                                              PFDIAG 
                                                                         PFDIAG 
      ELSE                                                               PFDIAG 
        BEGIN                                                            PFDIAG 
        IF RC EQ BUSY                                                    PFDIAG 
        THEN                                                             PFDIAG 
          BEGIN                                                          PFDIAG 
          DIAG(258, FETPFN[0]);                                          PFDIAG 
          END                                                            PFDIAG 
                                                                         PFDIAG 
        ELSE                       #NOT A COMMON PROBLEM               # PFDIAG 
          BEGIN                                                          PFDIAG 
          DIAG(256, RC, FETPFN[0]);  #EXOTIC ERROR CATCH-ALL           # PFDIAG 
          END                                                            PFDIAG 
        END                                                              PFDIAG 
      END                      # END OF PFDIAG #
CONTROL ENDIF;
      CONTROL EJECT;
CONTROL IFEQ OS$NAME,SCOPE; 
      PROC PFDIAG (FDB, RC);
#                                      #
#        P F D I A G                   #
#                                      #
# THIS PROC ISSUES DIAGNOSTICS BASED ON PERMANENT FILE RETURN CODES # 
# IT EXPECTS AN FDB, AND THE RETURN CODE TO BE DIAGNOSED. COMMON #
# PROBLEMS ARE DIAGNOSED BY THEIR OWN DIAGS. #
  
      BEGIN 
      ARRAY FDB;               # FDB OF FILE WHICH RECEIVED THE CODE #
        BEGIN 
        ITEM FDBPFN C(00,00,10);
        ITEM FDBLFN C(04,00,07);
        END 
      ITEM RC I;               # THE RETURN CODE TO BE DIAGNOSED #
  
      DEF LFNINUSE # 2 #;          # SCOPE PFM CODE - LFN IN USE - #
      DEF NOTINSYSTEM # O"12" #;   # SCOPE PFM CODE - FILE NOT IN SYS- #
      DEF ATTACHED #O"24" #;       # SCOPE PFM CODE - FILE ALREADY ATT #
      DEF ARCHIVED # O"25" #;      # SCOPE PFM CODE - FILE ARCHIVED    #
      DEF FILEBUSY # O"37" #;      # SCOPE PFM CODE - FILE BUSY        #
  
      IF RC EQ NOTINSYSTEM                                               PFDIAG 
      THEN                                                               PFDIAG 
        BEGIN                                                            PFDIAG 
        DIAG(260, FDBPFN[0]);                                            PFDIAG 
        END                                                              PFDIAG 
                                                                         PFDIAG 
      ELSE                                                               PFDIAG 
        BEGIN                                                            PFDIAG 
        IF RC EQ LFNINUSE                                                PFDIAG 
        THEN                                                             PFDIAG 
          BEGIN                                                          PFDIAG 
          DIAG(259, FDBLFN[0]);                                          PFDIAG 
          END                                                            PFDIAG 
                                                                         PFDIAG 
        ELSE                                                             PFDIAG 
          BEGIN                                                          PFDIAG 
          IF RC EQ ATTACHED                                              PFDIAG 
          THEN                                                           PFDIAG 
            BEGIN                                                        PFDIAG 
            DIAG(262, FDBPFN[0]);                                        PFDIAG 
            END                                                          PFDIAG 
                                                                         PFDIAG 
          ELSE                                                           PFDIAG 
            BEGIN                                                        PFDIAG 
            IF RC EQ FILEBUSY 
            THEN                                                         PFDIAG 
              BEGIN                                                      PFDIAG 
              DIAG(261, FDBPFN[0]);                                      PFDIAG 
              END                                                        PFDIAG 
                                                                         PFDIAG 
            ELSE
              BEGIN 
              IF RC EQ ARCHIVED    # IF FILE ARCHIVED                  #
              THEN
                BEGIN 
                DIAG(403, FDBPFN[0]);  # -A- UNAVAILABLE. FILE HAS BEEN#
                                       # ARCHIVED.                     #
                END 
              ELSE
                BEGIN 
                                   # NOT A COMMON PROBLEM              #
                                   # CATCH ALL DIAG FOR UNCOMMON PROBS #
                DIAG(902, RC, FDBPFN[0]); 
                END 
              END                                                        PFDIAG 
            END                                                          PFDIAG 
          END                                                            PFDIAG 
        END                                                              PFDIAG 
      END                      # END OF PFDIAG #
CONTROL ENDIF;
