DUAL
.PROC,DUAL*I,\
TRACE   ' ENABLE AIP TRACE CODE      (NO/YES)  '=(*N=,NO=,YES=D,*K=D),
NOSLEV  ' NOS PSROUT LEVEL                     '=(*N=,*S3/D), 
VELEV   ' NOS/VE PSROUT LEVEL                  '=(*N=,*S5/AD),
CSET    ' 64 OR 63 CHARACTER SET               '=(*N=64,64,63), 
*CALL COMPC 
*CALL COMUSER 
*CALL COMLIST 
*CALL COMTOB
*CALL COMIA 
*CALL COMTOL
*CALL COMIN 
*CALL COMD3 
*CALL COMX1 
*CALL COMXOPL 
*CALL COMPROC 
. 
  
* DUAL - DUAL STATE 
*CALL     PSRLEV
* 
  
  
.*
.*  START DUAL VIA SUBPROC. 
.*
BEGIN(SUBPROC,INSTALL,DUAL,,LIST,MAPTYPE,IA,TOBLD,TOLIST,USERF) 
REVERT.        DUAL.
EXIT. 
REVERT(ABORT)  DUAL.
  
  
.DATA,ZZZPROC 
.PROC,DUAL. 
*CALL     PSRLEV
  
BEGIN(MODIFYX,INSTALL)    MAKE PROPER MODIFY1 PROC LOCAL
BEGIN(PRDAUX,INSTALL,PRDNAME=OPL,#PNO=PN99,#PRO=PR99) 
RENAME(OPL=AUXPL) 
  
BEGIN(PRDAUX,INSTALL,PRDNAME=BAM1,#PNO=PN1,#PRO=PR1)
RENAME(BAM1=AUXPL)
  
BEGIN(PRDIN,INSTALL,PRDNAME=TDU1,#PN=PN,#PR=PR) 
COPYBF(TDU1,TOOL1)
COPYBF(TDU1,CYBCLIB)
REWIND(TOOL1,CYBCLIB) 
* 
*  DUAL STATE SOURCE LIBRARY RESIDES ON FILE DUAL_PSRIN 
* 
ATTACH(DUAL=DUAL_PSRIN/NA)
BEGIN(PRDIN,INSTALL,PRDNAME=DUAL,#PN=PN,#PR=PR) 
  
COPYBF(DUAL,DUALIN) 
COPYBF(DUAL,DSSL) 
REWIND(DUAL,DUALIN,DSSL)
  
NOTE(MODIR,NR)+*EDIT VER,1VP
BEGIN(,MODIFY1,A) 
COMPASS(A,I,S=NOSTEXT,S=CETEXT,L=LIST)
  
BEGIN(GETULIB,INSTALL,SYSLIB,SRVLIB,SYMLIB,BAMLIB,NETIO_TRACE)
  
UPDATE(F,C=COMPILE,N=0,I=DUALIN,*=/,L=1)
REWIND(COMPILE) 
  
COPYBF(COMPILE,LIB)                      NVELIB PROCS 
SKIPF(LIB)
BKSP(LIB) 
  
COMPASS(A,I=COMPILE,B=LIB,S=NOSTEXT,S=PSSTEXT,S=SSYTEXT,S=CETEXT,L=LIST)
  
SYMPL(ET=T,I=COMPILE,B=LIB,LXR=LIST)
  
COPYBF(COMPILE,LGO)                      SYNCVAL,SYNCACC,SETVE
BKSP(LGO) 
  
COMPASS(A,I=COMPILE,B=LGO,S=NOSTEXT,S=PSSTEXT,S=SSYTEXT,S=CETEXT,L=LIST)
  
COMPASS(A,I=COMPILE,B=RELB,S=NOSTEXT,S=PSSTEXT,S=SSYTEXT, 
        S=CETEXT,L=LIST)
  
IF, ($CSET$ .EQ. $64$), DUAL01. 
TOOL1(I=COMPILE,L=LIST,B=NVERELA,LO=SR,A,CHK=0) 
  REWIND(NVERELA) 
ELSE(DUAL01)
  SKIPR(COMPILE)
  BEGIN(GETULIB,INSTALL,NVERELS)
  GTR(NVERELS,NVERELA)REL/* 
ENDIF(DUAL01) 
COPYEI(NVERELA,RELB)
  
COPYBR(COMPILE,ZZFILE)
IF,($CSET$ .EQ. $63$), DUAL02.
  FCOPY(P=ZZFILE,N=NZZFILE,#PC=ASCII64,NC=DIS63,R)
ELSE(DUAL02)
  FCOPY(P=ZZFILE,N=NZZFILE,#PC=ASCII,NC=DIS,R)
ENDIF(DUAL02) 
SYMPL(ET=T,I=NZZFILE,B=RELB,LXR=LIST) 
COMPASS(A,I=COMPILE,B=RELB,S=IPTEXT,S=IOTEXT,S=NOSTEXT,L=LIST)
  
NOTE(IN1)+*C CRMEPC 
UPDATE(Q,P=BAM1,C=COMP1,R,I=IN1)
REWIND(COMP1) 
COMPASS(A,I=COMP1,B=BIN3,S=PSSTEXT,S=TXTCRM,S=IOTEXT,L=LIST)
GTR(BIN3,RELB,,NR)REL/GETTXT
  
LIBGEN(F=RELB,P=RELBIN,N=RELBIN,NX=1) 
  
* LINKING DSMDST
LDSET(LIB=RELBIN/CYBCLIB,PRESET=ZERO,ERR=ALL) 
SLOAD(RELBIN,DSMDST)
SLOAD(RELBIN,DSADCAL)  (MUST BE BELOW 10000B) 
SLOAD(RELBIN,DSMDNV,DSMORFV)
SLOAD(RELBIN,DSACYIF) 
NOGO(LIB) 
  
* LINKING DSMTRM
LDSET(LIB=RELBIN/CYBCLIB,PRESET=ZERO,ERR=ALL) 
SLOAD(RELBIN,DSMTRM)
SLOAD(RELBIN,DSADCAL)  (MUST BE BELOW 10000B) 
SLOAD(RELBIN,DSMTNVE) 
SLOAD(RELBIN,DSACYIF) 
NOGO(LIB) 
  
LIBGEN(F=LIB,P=NVELIB,N=NVELIB) 
  
* LINKING DSMRUN
LDSET(LIB=RELBIN/CYBCLIB,PRESET=ZERO,ERR=ALL) 
SLOAD(RELBIN,DSMRUN)
SLOAD(RELBIN,DSADCAL) (MUST BE BELOW 10000B)
SLOAD(RELBIN,MLMSMI,ICM$$$$PAR,MLP$$$$MLI,RHMJEP,RHMQRF,DSMORFV,TESTNBE)
SLOAD(RELBIN,DSACYIF,MLMASM,RHAQAC,RHAQRM,RHMLGM,RHASDTS) 
NOGO(LGO,DSMRUN,$SSJ=$) 
  
* LINKING IIAPAS
LDSET(LIB=RELBIN/CYBCLIB/NETIO_TRACE,PRESET=ZERO,ERR=ALL) 
SLOAD(RELBIN,IIAPAS)
SLOAD(RELBIN,IIMNAM,CYBMLI,IIM$$$$NAM,TESTNBE)
NOGO(LGO,VEIAF) 
  
* LINKING RHMPFP
LDSET(LIB=RELBIN/CYBCLIB,PRESET=ZERO,ERR=ALL) 
SLOAD(RELBIN,RHAPFP)
SLOAD(RELBIN,RHMPFP,RHM7ML,CYBMLI)
SLOAD(RELBIN,TESTNBE,DSACYIF,RHACPM,RHMLIO,RHMLGM,RHMPMC,RHMWIT,RHABEIO)
NOGO(LGO,RHPPFP,$SSJ=$) 
  
* LINKING RHMQEP
LDSET(LIB=RELBIN/CYBCLIB,PRESET=ZERO,ERR=ALL) 
SLOAD(RELBIN,RHAQEP)
SLOAD(RELBIN,RHMQEP,CYBMLI,RHM7ML)
SLOAD(RELBIN,RHMMLI,RHMQFR,RHMRTF,RHMQFT) 
SLOAD(RELBIN,TESTNBE,DSACYIF,RHAQAC,RHQXFER,RHMQFA,RHMCLS)
SLOAD(RELBIN,RHMLGM,RHMOPN,RHMQRF,RHMWIT,RHAQFM,RHAQRM) 
NOGO(LGO,RHPQEP,$SSJ=$) 
  
* LINKING FASLAVE 
LDSET(PRESET=ZERO,ERR=ALL)
LDSET(LIB=RELBIN/NVELIB/SYMLIB/BAMLIB/SRVLIB/SYSLIB)
SLOAD(RELBIN,FASLAVE,GETTXT)
NOGO(LGO) 
  
RENAME(LGO1=LGO)
NOTE(INP)+*COMMENT ABS/IIAPAS,NOS=NOSLEV,VE=VELEV.
LIBEDIT(P=LGO1,B=0,N=LGO,I=INP) 
  
* 
* FILE DSSL AND VEMEM USED BY CONTROL DATA
* 
IF, FILE(DSSL,.NOT.ZL), DUAL2.
  NOTE(MODIR,NR)+*EDIT VEMEM
  BEGIN(,MODIFY1) 
  LIBEDIT(P=COMPILE,B=0,N=VEMEM,Z)/*BUILD OPLD
  COPYBF(DSSL,PFGFILE)
  COPYBF(VEMEM,PFGFILE) 
  BEGIN(PFGOUT,INSTALL,PRDNAME=DUAL,LFN=PFGFILE)
  RENAME(NEWPL=DUAL)
  BEGIN(PRDOUT,INSTALL,PRDNAME=DUAL,#PNO=PNO,#PRO=PRO)
ENDIF(DUAL2)
  
BEGIN(SAVELIB,INSTALL,LIB=LIB,LIBNAME=NVELIB) 
BEGIN(SAVELIB,INSTALL,LIB=NVERELA,LIBNAME=NVERELS)
BEGIN(GENDIR,INSTALL,LIB=22)
BEGIN(SAVELGO,INSTALL,PRDNAME=DUAL) 
BEGIN(END,INSTALL,MFT=R1G+) 
REVERT.        DUAL ********************************
EXIT. 
REVERT(ABORT)  DUAL ********************************
*WEOR 
