*DECK DBRESOLWA 
USETEXT DBTEXT
PROC RESOLWA; 
*CALL DEBUGVARS 
*CALL GETSET
*CALL TABLNAMES 
*CALL AUXT1 
*CALL AUXTVALS
*CALL DBCORTAB
#THIS PROCEDURE RESOLVES THOSE UNRESOLVED WORD ADDRESSES
CAUSED WHEN A STRUCTURE LIKE "OCCURS N KEY IS DATANAME" 
IS FOUND. THE DNAT FOR DATANAME WILL NOT HAVE BEEN CREATED
AND SO THE AUXTABLE ENTRY FOR THE KEY ITEM WILL CONTAIN 
A WORD ADDRESS INSTEAD OF A DNATPTR. THE AUXTPTR OF THE 
ENTRY WILL HAVE BEEN STACKED IN THE UNRESOLVED WORD ADDRESS 
ARRAY (URWA). 
SO THIS PROCEDURE ACCESSES THE URWA AND FOR EACH ENTRY
(USING WA$TO$DNAT WHICH IN TURN ACCESSES THE CORRESPONDANCE 
TABLE) STORES THE DNATPTR INTO THE AUXT ENTRY IN PLACE
OF THE WORD ADDRESS.
HAVING DONE THIS, THE UNRESOLVED WORD ADDRESS ARRAY AND 
CORRESPONDANCE TABLE ARE RESET. 
# 
START("RESOLWA")
ITEM LURWAPTR;
XREF BEGIN
FUNC WA$TO$DNAT;
END 
ITEM LDNAT$PTR; 
IV$($SET$,"URWAPTR",URWAPTR)
STEPLOOP(LURWAPTR,1,1,URWAPTR-1,"END OF URWA")
  SETI("AUXT$PTR",AUXT$PTR,URWAAUXT[LURWAPTR])
  IF AUXT$PTR EQ 0
    THENB("AUXT$PTR NOT SET") 
    TEST; 
  ENDIF 
  #CONVERT KEY NAME WORD ADDRESS TO DNAT# 
  T=WA$TO$DNAT($G(AX$KEYNAM,AUX$,AUXT$PTR));
  IV$($SET$,"RESOLVED DNAT",T)
  $S(AX$KEYNAM,AUX$,AUXT$PTR,T);
ENDLOOP("END OF URWA LIST") 
#RESET TABLES#
CT$PTR=1; 
CT$LEN=0; 
URWAPTR=1;
FINIS("RESOLWA")
TERM
