TDU 
ASCII 
*NOSEQ
*WIDTH 132
.PROC,TDU*I"T^E^R^M^I^N^A^L D^E^F^I^N^I^T^I^O^N U^T^I^L^I^T^Y", 
 I'T^E^R^M^I^N^A^L ^D^E^F^I^N^I^T^I^O^N ^F^I^L^E (TDUIN)'=(*F,*N=TDUIN),
 L'E^R^R^O^R ^L^I^S^T^I^N^G ^F^I^L^E (OUTPUT)'=(*F,*N=OUTPUT),
 LIB'L^I^B^R^A^R^Y ^F^I^L^E (TERMLIB)'=(*F,*N=TERMLIB), 
 REC'R^E^C^O^R^D ^N^A^M^E ^T^O ^P^R^O^C^E^S^S'=(*S6/AD,*,*N=),
 RW'R^E^W^I^N^D ^D^E^F^I^N^I^T^I^O^N ^F^I^L^E?'=(*K=YES,YES,Y,NO,N=NO,*N=YES).
.HELP.
TDU - T^E^R^M^I^N^A^L D^E^F^I^N^I^T^I^O^N U^T^I^L^I^T^Y.
  
T^H^E TDU ^P^R^O^C^E^D^U^R^E ^C^O^M^P^I^L^E^S ^I^N^T^O ^C^A^P^S^U^L^E ^F^O^R^M^A^T ^A ^U^S^E^R- 
^D^E^F^I^N^E^D ^T^E^R^M^I^N^A^L ^D^E^F^I^N^I^T^I^O^N ^F^I^L^E, ^I^N^S^E^R^T^I^N^G ^T^H^E ^N^E^W 
^C^A^P^S^U^L^E ^I^N^T^O ^A ^L^O^C^A^L ^U^S^E^R ^L^I^B^R^A^R^Y.
.HELP,I.
T^H^E ^N^A^M^E ^O^F ^T^H^E ^U^S^E^R-^D^E^F^I^N^E^D ^T^E^R^M^I^N^A^L ^D^E^F^I^N^I^T^I^O^N ^F^I^L^E 
( ^D^E^F^A^U^L^T ^I^S TDUIN ).
.HELP,L.
T^H^E ^N^A^M^E ^O^F ^T^H^E ^L^I^S^T^I^N^G ^F^I^L^E ( ^D^E^F^A^U^L^T ^I^S ^L^I^S^T ).
.HELP,LIB.
T^H^E ^N^A^M^E ^O^F ^T^H^E ^L^I^B^R^A^R^Y ( ^D^E^F^A^U^L^T ^I^S TERMLIB ).
.HELP,REC.
T^H^E ^N^A^M^E ^O^F ^T^H^E ^R^E^C^O^R^D ^T^O ^P^R^O^C^E^S^S ^F^R^O^M ^T^H^E ^T^E^R^M^I^N^A^L
^D^E^F^I^N^I^T^I^O^N ^F^I^L^E.  I^F * ^I^S ^S^P^E^C^I^F^I^E^D, ^A^L^L ^R^E^C^O^R^D^S
^W^I^L^L ^B^E ^P^R^O^C^E^S^S^E^D (^D^E^F^A^U^L^T:  ^P^R^O^C^E^S^S ^O^N^E ^T^E^R^M^I^N^A^L 
^D^E^F^I^N^I^T^I^O^N ^R^E^C^O^R^D ^R^E^G^A^R^D^L^E^S^S ^O^F ^T^H^E ^R^E^C^O^R^D ^N^A^M^E ). 
.HELP,RW. 
NO ^T^O ^P^R^E^V^E^N^T ^T^E^R^M^I^N^A^L ^D^E^F^I^N^I^T^I^O^N ^A^N^D ^L^I^S^T^I^N^G ^F^I^L^E^S 
^F^R^O^M ^B^E^I^N^G ^R^E^W^O^U^N^D ^B^E^F^O^R^E ^A^N^D ^A^F^T^E^R ^P^R^O^C^E^S^S^I^N^G. 
YES ^T^O ^H^A^V^E ^B^O^T^H ^F^I^L^E^S ^R^E^W^O^U^N^D ^B^E^F^O^R^E ^A^N^D ^A^F^T^E^R 
^P^R^O^C^E^S^S^I^N^G ( ^D^E^F^A^U^L^T ^I^S YES ). 
.ENDHELP. 
.IFE(.NOT.FILE(I,AS),NOINPUT) 
  REVERT,ABORT.  NO INPUT FILE I. 
.ENDIF(NOINPUT) 
.IF($RW$.NE.$NO$,REWIND)
  .IF($L$.NE.$OUTPUT$.AND.$L$.NE.$0$)REWIND,L.
  REWIND,I. 
.ENDIF(REWIND)
RENAME,ZZZZZTI=I. 
REWIND,ZZZZZTA,LIB. 
.IF(CSET.EQ.NORMAL)CSET,ASCII.
.IF($REC$.NE.$$.AND.$REC$.NE.$*$,MULTI) 
  GTR,ZZZZZTI,I.REC 
.ELSE(MULTI)
  COPYBR,ZZZZZTI,I. 
  .IF($REC$.EQ.$*$,MULTI) 
    WHILE(.NOT.(FILE(ZZZZZTI,EOF).OR.FILE(ZZZZZTI,EOI)),NEXTREC)
.ENDIF(MULTI) 
RETURN,ZZZZZTB,ZZZZZTC,ZZZZZTL. 
TDUEX,I,ZZZZZTC,ZZZZZTL.
IF(FILE(ZZZZZTC,AS),TDUERR) 
  .IF($L$.NE.$0$)IF(FILE(ZZZZZTL,AS))COPYBR,ZZZZZTL,L.
  COMPASS,#I=ZZZZZTC,#L=0,B=ZZZZZTB,A.
  LDSET,ERR=ALL.
  LOAD,ZZZZZTB. 
  NOGO,ZZZZZTA. 
  .IF($REC$.EQ.$*$,MULTI) 
    COPYBR,ZZZZZTI,I. 
    ENDW(NEXTREC) 
  .ENDIF(MULTI) 
  .IF(FILE(LIB,AS),REPLACE) 
    ULIB,R,ZZZZZTA,LIB. 
  .ELSE(REPLACE)
    ULIB,C,ZZZZZTA,LIB. 
  .ENDIF(REPLACE) 
  REWIND,LIB. 
  RENAME,I=ZZZZZTI. 
  .IF($RW$.NE.$NO$,REWIND)
    REWIND,I. 
    .IF($L$.NE.$OUTPUT$.AND.$L$.NE.$0$)REWIND,L.
  .ENDIF(REWIND)
  .IF(CSET.EQ.NORMAL)CSET,NORMAL. 
  RETURN,ZZZZZTA,ZZZZZTB,ZZZZZTC,ZZZZZTL. 
  REVERT.  I --> LIB. 
  EXIT. 
ENDIF(TDUERR) 
RENAME,I=ZZZZZTI. 
.IF($L$.NE.$0$)IF(FILE(ZZZZZTL,AS))COPYBR,ZZZZZTL,L.
.IF($RW$.NE.$NO$,REWIND)
  REWIND,I. 
  .IF($L$.NE.$OUTPUT$.AND.$L$.NE.$0$)REWIND,L.
.ENDIF(REWIND)
.IF(CSET.EQ.NORMAL)CSET,NORMAL. 
RETURN,ZZZZZTA,ZZZZZTB,ZZZZZTC,ZZZZZTL. 
REVERT,ABORT.  COMPILATION FAILED.
*WEOR 
