*DECK DNATDMP                                                            DNATDMP
USETEXT CCTTEXT 
USETEXT DNTEXT
PROC DNATDMP (STARTNUM, ENDNUM, HEADER, AUXDUMP); 
         BEGIN
         # THIS IS THE NEW DNAT DUMP #
         ITEM STARTNUM I; 
         ITEM ENDNUM I; 
         ITEM HEADER I; 
         ITEM AUXDUMP I;
         $BEGIN 
         XREF PROC AUXTDMP; 
         XREF PROC CBLIST;
         XREF FUNC DEC C(10); 
         XREF FUNC OCT C(40); 
         XREF PROC TMRECL;
         XREF PROC TMREOP;
         XREF FUNC VIRTUAL; 
*CALL DNATVALS
*CALL TABLETYP
*CALL AUXT1 
*CALL AUXTVALS
         DEF X(P1,P2) #T=P2[J]; P1=DEC(T)#; 
         DEF SSF        #1#;
         DEF EJECTF     #3#;
         DEF TITLEF     #4#;
         DEF STITLEF    #5#;
         DEF OPENF      #8#;
         DEF CLOSEF     #9#;
         ITEM S I;
         ITEM E I;
         ITEM I I;
         ITEM J I;
         ITEM T I;
         ITEM K I;
         ARRAY [20];
         ITEM TYPETABLE C(00,00,10) = 
         [ "0", "AL", "ALE", "AN", "ANE", 
         "ERR", "NE", "NUM", "EXF", "C4", 
         "C2", "DC2", "C1", "LC", "IDD", "IDX", 
         "GR", "VGR", "NON", "BIT", "BDS" ];
         ARRAY [17] S(1); 
         ITEM LEVELTABLE C(00,00,10) =
         [ "CDN", "FD", "SD", "CD", "RD", "IDX", "MNM", "LIT", "TMP", 
         "RDN", "EDT", "MOD", "FDS", "WSS", "LKS", "CDS", "66", "RDS"]; 
         ITEM HEAD C(60) =                                             "
DNAT AUX LEV TYPE LINE SUB MAJ IDX ITEM POINT NUM SUB  BYTE ";
         ITEM SUBHEAD C(132) =                                         "
NO.  REF          NO.  DEP MSC DEP LEN  LOC   LEN MSEC OFFSET   A B C D 
E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 ";
         ITEM T1 C(114) =                                              "
A=USAGE    F=RITEM    K=USAGIDX  M=INDEXED  O=RELKEY   R=DEP       T=DAT
REC   W=COEFSIGN  Y=DECPOINT  1=SUBSCHEMA ";
         ITEM T2 C(114) =                                              "
B=SIGNBIT  G=PICTURE  L=OCCURS   M=OFFSTAT  P=KEY      R=RECCONT   U=PIC
SIGN  W=CDINP     Y=LABVALU   2=SSMRKEY   ";
         ITEM T3 C(114) =                                              "
C=LSIGN    H=TERMPER  L=ONSTAT   M=ACC      P=RECKEY   S=SYNCRGHT  U=REP
ORTS  X=EXPSIGN   Y=CDOUT     3=CODEILL   ";
         ITEM T4 C(114) =                                              "
D=SCHAR    I=VALUE    L=SWITCH   N=JUST     Q=RDEF     S=LABREC    V=SYN
C     X=LINAGE    Y=USINGMFR  4=SSORD     ";
         ITEM T5 C(114) =                                              "
E=DEBUG    J=KEYED    L=ORG      O=BZERO    Q=BLKCONT  T=FILLREF   V=REC
MODE  X=CDINIT    Z=CHARPOS   4=SHORTLIT  ";
         ARRAY [0] S(14); 
         BEGIN
         ITEM PR$GROUP       C(00,00,132);
         ITEM PR$INDEX       C(00,00,06); 
         ITEM PR$AUXREF      C(00,36,05); 
         ITEM PR$LEVEL       C(01,06,04); 
         ITEM PR$TYPE        C(01,30,05); 
         ITEM PR$LINE        C(02,00,06); 
         ITEM PR$SDEPTH      C(02,36,03); 
         ITEM PR$MAJMSEC     C(02,54,03); 
         ITEM PR$IDXDEP      C(03,12,03); 
         ITEM PR$FNATPTR     C(03,30,07); 
         ITEM PR$POINT       C(04,12,05); 
         ITEM PR$NUMLEN      C(04,42,05); 
         ITEM PR$SUBMSEC     C(05,12,05); 
         ITEM PR$BYTEOFFS    C(05,42,07); 
         ITEM PR$USAGE       C(06,24,02); 
         ITEM PR$SIGNBIT     C(06,36,02); 
         ITEM PR$LSIGN       C(06,48,02); 
         ITEM PR$SCHAR       C(07,00,02); 
         ITEM PR$DEBUG       C(07,12,02); 
         ITEM PR$RITEM       C(07,24,02); 
         ITEM PR$PICTURE     C(07,36,02); 
         ITEM PR$TERMPER     C(07,48,02); 
         ITEM PR$VALUE       C(08,00,02); 
         ITEM PR$KEYED       C(08,12,02); 
         ITEM PR$USAGIDX     C(08,24,02); 
         ITEM PR$OCCURS      C(08,36,02); 
         ITEM PR$INDEXED     C(08,48,02); 
         ITEM PR$JUST        C(09,00,02); 
         ITEM PR$BZERO       C(09,12,02); 
         ITEM PR$KEY         C(09,24,02); 
         ITEM PR$RDEF        C(09,36,02); 
         ITEM PR$DEP         C(09,48,02); 
         ITEM PR$SYNCRGHT    C(10,00,02); 
         ITEM PR$FILLREF     C(10,12,02); 
         ITEM PR$PICSIGN     C(10,24,02); 
         ITEM PR$SYNC        C(10,36,02); 
         ITEM PR$COEFSIGN    C(10,48,02); 
         ITEM PR$EXPSIGN     C(11,00,02); 
         ITEM PR$DECPOINT    C(11,12,02); 
         ITEM PR$CHARPOS     C(11,24,02); 
         ITEM PR$SUBSCHEMA   C(11,36,02); 
         ITEM PR$SSMRKEY     C(11,48,02); 
         ITEM PR$CODEILL     C(12,00,02); 
         ITEM PR$SSORD       C(12,12,06); 
          END 
         # REOPEN THE DNAT #
         TMREOP (TABLETYPE"DNAT$"); 
         CBLIST(OPENF); 
         CBLIST(EJECTF);
          IF HEADER NQ 0
          THEN
              BEGIN 
              CBLIST(SSF,"DNAT DUMP TITLES",16);
              CBLIST(SSF,T1,114); 
              CBLIST(SSF,T2,114); 
              CBLIST(SSF,T3,114); 
              CBLIST(SSF,T4,114); 
              CBLIST(SSF,T5,114); 
              CBLIST(TITLEF,HEAD,60); 
              CBLIST(STITLEF,SUBHEAD,132);
              CBLIST(EJECTF); 
              END 
         S = STARTNUM;
         IF S LQ 0
         THEN BEGIN 
              S = 1;
              END 
         E = ENDNUM;
         IF E EQ 0 OR E GQ CCTDNATLEN 
         THEN BEGIN 
              E = CCTDNATLEN; 
              END 
         IF E LS S
         THEN BEGIN 
              E = S;
              END 
         IF CCTDNATLEN LS 1 
         THEN BEGIN 
              CBLIST(SSF,"*** NO DNAT ENTRIES ***",23); 
              GOTO FILECLOSE; 
              END 
         FOR I = S STEP 1 UNTIL E DO
         BEGIN
         J = VIRTUAL(TABLETYPE"DNAT$",I); 
         PR$GROUP = " ";
         PR$INDEX = DEC(I); 
         X(PR$AUXREF,DN$AUXREF);
         T = DN$LEVEL [J];
         IF T GR 49 AND T LQ 67 
         THEN BEGIN 
              PR$LEVEL = LEVELTABLE [T-50]; 
              END 
         ELSE BEGIN 
              PR$LEVEL = DEC(T);
              END 
         T = DN$TYPE [J]; 
         IF T LQ 20 
         THEN BEGIN 
              PR$TYPE = TYPETABLE [T];
              END 
         ELSE BEGIN 
              PR$TYPE = DEC(T); 
              END 
         X(PR$LINE,DN$LINE);
         X(PR$SDEPTH,DN$SDEPTH);
         X(PR$MAJMSEC,DN$MAJMSEC);
         X(PR$IDXDEP,DN$IDXDEP);
         X(PR$FNATPTR,DN$FNATPTR);
         X(PR$POINT,DN$POINT);
         X(PR$NUMLEN,DN$NUMLEN);
         X(PR$SUBMSEC,DN$SUBMSEC);
         X(PR$BYTEOFFS,DN$BYTEOFFS);
         X(PR$USAGE,DN$USAGE);
         X(PR$SIGNBIT,DN$SIGNBIT);
         X(PR$LSIGN,DN$LSIGN);
         X(PR$SCHAR,DN$SCHAR);
         X(PR$DEBUG,DN$DEBUG);
         X(PR$RITEM,DN$RITEM);
         X(PR$PICTURE,DN$PICTURE);
         X(PR$TERMPER,DN$TERMPER);
         X(PR$VALUE,DN$VALUE);
         X(PR$KEYED,DN$KEYED);
         X(PR$USAGIDX,DN$USAGIDX);
         X(PR$OCCURS,DN$OCCURS);
         X(PR$INDEXED,DN$INDEXED);
         X(PR$JUST,DN$JUST);
         X(PR$BZERO,DN$BZERO);
         X(PR$KEY,DN$KEY);
         X(PR$RDEF,DN$RDEF);
         X(PR$DEP,DN$DEP);
         X(PR$SYNCRGHT,DN$SYNCRGHT);
         X(PR$FILLREF,DN$FILLREF);
         X(PR$PICSIGN,DN$PICSIGN);
         X(PR$SYNC,DN$SYNC);
         X(PR$COEFSIGN,DN$COEFSIGN);
         X(PR$EXPSIGN,DN$EXPSIGN);
         X(PR$DECPOINT,DN$DECPOINT);
         X(PR$CHARPOS,DN$CHARPOS);
         X(PR$SUBSCHEMA,DN$SUBSCHEMA);
         X(PR$SSMRKEY,DN$SSMRKEY);
         X(PR$CODEILL,DN$CODEILL);
         X(PR$SSORD,DN$SSORD);
         CBLIST(1,PR$GROUP,132);
         IF AUXDUMP NQ 0
         THEN BEGIN 
              K = DN$AUXREF [J];
              LOOP: 
              IF K NQ 0 
              THEN BEGIN
                   AUXTDMP(K, K, 0);
                   K = AX$TNEXTPTR [K]; 
                   GOTO LOOP; 
                   END
              END 
         END # MAIN LOOP #
FILECLOSE:  
         # TO CLEAR TITLES #
         CBLIST(OPENF); 
         CBLIST(CLOSEF);
         TMRECL(TABLETYPE"DNAT$");
         RETURN;
         $END 
         END # DNATDMP #
         TERM 
