*DECK PNATDMP                                                            PNATDMP
USETEXT CCTTEXT 
          PROC PNATDMP (STARTNUM, ENDNUM, HEADER);                       PNATDMP
          BEGIN                                                          PNATDMP
                                                                         PNATDMP
 #** PURPOSE                                                             PNATDMP
          THIS PROCEDURE DUMPS THE PROCEDURE NAME ATTRIBUTE TABLE        PNATDMP
          IN FORMATTED FORM FROM ORDINAL STARTNUM TO ORDINAL ENDNUM.     PNATDMP
                                                                         PNATDMP
          IF STARTNUM @ 1 THEN THE TABLE IS DUMPED FROM THE FIRST        PNATDMP
          ENTRY (ENTRY NUMBER 1).                                        PNATDMP
                                                                         PNATDMP
          IF ENDNUM = 0 THEN THE TABLE IS DUMPED TO THE END, ELSE IF     PNATDMP
          ENDNUM @ STARTNUM THEN ONLY ONE ENTRY IS DUMPED.               PNATDMP
                                                                         PNATDMP
          IF HEADER = 0 THEN NO HEADING IS PRINTED.                      PNATDMP
          IF HEADER = 1 THEN A HEADING IS PRINTED.                       PNATDMP
 #                                                                       PNATDMP
                                                                         PNATDMP
          ITEM   STARTNUM    I;                                          PNATDMP
          ITEM   ENDNUM      I;                                          PNATDMP
          ITEM   HEADER      I;                                          PNATDMP
          $BEGIN
                                                                         PNATDMP
 # SUBROUTINES CALLED #                                                  PNATDMP
                                                                         PNATDMP
          XREF PROC CBLIST;                                              PNATDMP
          XREF FUNC DEC C(10);                                           PNATDMP
          XREF FUNC OCT C(40);                                           PNATDMP
          XREF PROC TMRECL; 
          XREF PROC TMREOP; 
          XREF FUNC VIRTUAL;
                                                                         PNATDMP
          DEF    CALL        #  #;                                       PNATDMP
                                                                         PNATDMP
          DEF    SSF         #1#;                                        PNATDMP
          DEF    EJECTF      #3#;                                        PNATDMP
          DEF    TITLEF      #4#;                                        PNATDMP
          DEF    STITLEF     #5#;                                        PNATDMP
          DEF    OPENF       #8#;                                        PNATDMP
          DEF    CLOSEF      #9#;                                        PNATDMP
                                                                         PNATDMP
*CALL TABLETYP
                                                                         PNATDMP
*CALL PNAT1 
                                                                         PNATDMP
 # MISCELLANEOUS ARRAYS AND ITEMS #                                      PNATDMP
                                                                         PNATDMP
          ARRAY PNATLINE [0] S(14);                                      PNATDMP
          BEGIN                                                          PNATDMP
            ITEM PRGROUP     C(0,0,132);                                 PNATDMP
         ITEM PRENTRY        C(00,00,05); 
         ITEM PROCTAL        C(00,36,20); 
         ITEM PRAUXREF       C(02,48,05); 
         ITEM PREQUATE       C(03,24,05); 
         ITEM PRNEXT         C(04,12,05); 
         ITEM PRSEGMENT      C(05,00,02); 
         ITEM PRALTERED      C(05,54,01); 
         ITEM PRDEBUG        C(06,36,01); 
         ITEM PRPLAST        C(07,12,01); 
         ITEM PRKIND         C(07,42,01); 
         ITEM PRALTERABLE    C(08,30,01); 
         ITEM PRDECLAR       C(09,18,01); 
         ITEM PRSORT         C(10,00,01); 
          END                                                            PNATDMP
         ITEM PNATHEAD C(120) = "ENTRY        OCTAL         AUXREF EQUAT
E NEXT   SEGMENT ALTERED DEBUG PLAST KIND ALTERABLE DECLAR SORT 
         "; 
          ITEM   STARTORD    I;                                          PNATDMP
          ITEM   ENDORD      I;                                          PNATDMP
         ITEM P;
         ITEM PX; 
         ITEM TEMP; 
                                                                         PNATDMP
          DEF    LT          #LS#;                                       PNATDMP
          DEF    GT          #GR#;                                       PNATDMP
          DEF    GE          #GQ#;                                       PNATDMP
          DEF    LE          #LQ#;                                       PNATDMP
          DEF    NE          #NQ#;                                       PNATDMP
                                                                         PNATDMP
CONTROL EJECT;                                                           PNATDMP
                                                                         PNATDMP
 # EXECUTABLE CODE #                                                     PNATDMP
                                                                         PNATDMP
 # INITIALIZATION #                                                      PNATDMP
                                                                         PNATDMP
                                                                         PNATDMP
          TMREOP (TABLETYPE "PNAT$" );   #RE-OPEN THA TABLE IF CLOSED#
          STARTORD = STARTNUM;                                           PNATDMP
          IF STARTORD LE 0  THEN                                         PNATDMP
            STARTORD = 1;                                                PNATDMP
                                                                         PNATDMP
          ENDORD = ENDNUM;                                               PNATDMP
          IF ENDORD EQ 0  OR
             ENDORD GE CCTPNATLEN  THEN 
            ENDORD = CCTPNATLEN;
          IF ENDORD LT STARTORD  THEN                                    PNATDMP
            ENDORD = STARTORD;                                           PNATDMP
                                                                         PNATDMP
            BEGIN                                                        PNATDMP
              CALL CBLIST (OPENF, "PNATDMP", 7);                         PNATDMP
              CALL CBLIST (TITLEF,"PNAT DUMP ",10); 
              CALL CBLIST (STITLEF,PNATHEAD,120); 
              CALL CBLIST (EJECTF);                                      PNATDMP
            END                                                          PNATDMP
                                                                         PNATDMP
          IF CCTPNATLEN LE 1  THEN                                       PNATDMP
            BEGIN                                                        PNATDMP
              CALL CBLIST (SSF, " *** NO PNAT ENTRIES ***", 24);         PNATDMP
              GOTO FILECLOSE;                                            PNATDMP
            END                                                          PNATDMP
                                                                         PNATDMP
 # MAIN PRINT LOOP #                                                     PNATDMP
                                                                         PNATDMP
         FOR PX = STARTORD STEP 1 UNTIL ENDORD
         DO BEGIN 
         P = VIRTUAL(TABLETYPE"PNAT$",PX);
         PRGROUP[0] = " ";
         PRENTRY[0] = DEC(PX);
         TEMP = PN$AUXREF[P]; 
         PRAUXREF[0] = DEC(TEMP); 
         PROCTAL[0] = OCT(PN$WORD[P],0,20); 
         TEMP = PN$EQUATE[P]; 
         PREQUATE[0] = DEC(TEMP); 
         TEMP = PN$NEXTSECTN[P];
         PRNEXT[0] = DEC(TEMP); 
         TEMP = PN$SEGMENTNO[P];
         PRSEGMENT[0] = DEC(TEMP);
         PRALTERED[0] = 27 + PN$ALTERED[P]; 
         PRDEBUG[0] = 27 + PN$DEBUG[P]; 
         PRPLAST[0] = 27 + PN$PERFLAST[P];
         PRKIND[0] = 27 + PN$PROCKIND[P]; 
         PRALTERABLE[0] = 27 + PN$ALTERABLE[P]; 
         PRDECLAR[0] = 27 + PN$DECLARATV[P];
         PRSORT[0] = 27 + PN$SORTPROC[P]; 
                                                                         PNATDMP
            CALL CBLIST (SSF, PNATLINE, 132); 
          END    # MAIN PRINT LOOP #                                     PNATDMP
                                                                         PNATDMP
FILECLOSE:                                                               PNATDMP
          IF HEADER NE 0  THEN                                           PNATDMP
            CALL CBLIST (CLOSEF, "DNATDMP", 7);                          PNATDMP
                                                                         PNATDMP
          TMRECL (TABLETYPE "PNAT$" );   #RE-CLOSE THE TABLE IF NEEDED# 
          RETURN;                                                        PNATDMP
          $END
          END    # PNATDMP #                                             PNATDMP
          TERM                                                           PNATDMP
