*DECK DBTRANS 
USETEXT CCTTEXT 
USETEXT DBTEXT
PROC DBTRANS; 
*CALL DEBUGVARS 
*CALL DBCORTAB
CONTROL IFNQ CB5$CDCS,"NO"; 
XREF BEGIN
PROC NXTAREA; 
PROC NXTREC;
PROC NXTREL;
PROC BUILD$F; 
PROC NXTITM;
PROC BUILD$D; 
PROC BUILD$01;
PROC KEY$F; 
PROC RESOLWA; 
PROC VERSION; 
PROC IERR$; 
PROC XERR$; 
FUNC LJZF C(80);
END 
 CONTROL IFEQ CB5$CDCS,"CDCS1"; 
XREF PROC DA$CLSB;
 CONTROL FI;
 CONTROL IFEQ CB5$CDCS,"CDCS2"; 
XREF PROC DE$CLSB;
DEF DA$CLSB  #DE$CLSB#; 
 CONTROL FI;
XDEF LABEL END$DT;
  
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 
  
DATABASE TRANSLATOR ------- ENTRY POINT 
  
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$# 
CONTROL FI; 
START("DBTRANS")
CONTROL IFNQ CB5$CDCS,"NO"; 
  
$BEGIN
COMMON PARAMS;
  BEGIN 
  ARRAY [7] S(1); 
  ITEM PARAMC C(0,0,10);
  END 
  
IF CCTCHKOUT[0] NQ 0
  AND 
  C<6,4>PARAMC[0] EQ "DEBU" 
  THEN #PHASE TO RUN IN DEBUG MODE# 
  $SWITCH1$=TRUE; 
  ELSE #DEBUG MODE DISABLED#
  $SWITCH1$=FALSE;
$END
  
VERSION;
AREALISTPTR= 1; 
RECLISTPTR = 1; 
RECINAREA = 0;
CT$PTR = 1; 
CT$LEN = 0; 
RNXTITMWA = 0;
RNOI = 0; 
URWAPTR =1; 
SETI("ISOURCELINE",ISOURCELINE,0)  #SS SOURCE LINE, IF ERROR DIAG#
  
DA$OPSB(CCTSSLIB[0],CCTSSNAME[0],DIT,BUFFERX,BFS);  #(RE)OPEN SUBSCHEMA#
IF DASTATE NQ 0 
  THENB("ERROR IN OPENING SUBSCHEMA") 
  XERR$(M1);
  GOTO END$DT1;  #EXIT# 
ENDIF 
CV$($SET$,"SSLIB",CCTSSLIB) 
CV$($SET$,"SSNAME",CCTSSNAME) 
SETO("CCTSSDATE",CCTSSDATE,SBCWSBTMEDTE[1])  #TIME/DATE OF SS CREATION# 
CTXT$PTR = CCTDBFSCTXT;      #SET PTR TO START OF DATABASE CTEXT# 
SETI("DNAT$PTR",DNAT$PTR,0) 
SETI("FNAT$PTR",FNAT$PTR,0) 
SETI("DNAT$PTR",DNAT$PTR,0) 
SETI("FNAT$PTR",FNAT$PTR,0) 
  
IF CTXT$PTR NQ 0
THENB("SELECTED AREAS") 
SETO("AREA$F",AREA$F,0) 
LOOP("WHILE MORE AREAS TO PROCESS") 
  SETI("ISOURCELINE",ISOURCELINE,0)  #SS SOURCE LINE, IF ERROR DIAG#
  NXTAREA; #SELECT NEXT AREA VARIABLES# 
  EXITIF(AREA$F,EQ,END$STATUS,"ALL AREAS PROCESSED")
  BUILD$F;  #BUILD FNAT AND FD DNAT ITEMS#
    REC$F=0;
    LOOP("WHILE MORE RECORDS TO PROCESS") 
      SETI("ISOURCELINE",ISOURCELINE,0)  #SS SOURCE LINE, IF ERROR DIAG#
      NXTREC;  #SELECT NEXT RECORD VARIABLES# 
      EXITIF(REC$F,EQ,END$STATUS,"ALL RECORDS PROCESSED") 
      BUILD$01;  #BUILD LEVEL 01 ITEM#
      ITM$F=0;
      LOOP("WHILE MORE ITEMS TO PROCESS") 
        SETI("ISOURCELINE",ISOURCELINE,0)  #SS SOURCE LINE IF ERR DIAG# 
        NXTITM;  #SELECT NEXT ITEM VARIABLES# 
        EXITIF(ITM$F,EQ,END$STATUS,"ALL ITEMS PROCESSED") 
        BUILD$D; #BUILD DNAT# 
      ENDLOOP("ALL ITEMS PROCESSED")
    ENDLOOP("ALL RECORDS PROCESSED")
    SETI("ISOURCELINE",ISOURCELINE,SBARSRCLNEN[1])  #SS SOURCE LINE#
    KEY$F;  #PROCESS RECORD KEYS# 
    RESOLWA;  #RESOLVE WORD ADDRESSES#
  ENDLOOP("ALL AREAS PROCESSED")
ENDIF 
  
SETO("REL$F",REL$F,0) 
LOOP("WHILE FDLT AND RELATIONS TO PROCESS") 
  NXTREL;  #PROCESS NEXT RELATION#
  EXITIF(REL$F,EQ,END$STATUS,"ALL RELATIONS PROCESSED") 
  ENDLOOP("ALL RELATIONS PROCESSED")
  
END$DT: 
  DA$CLSB;                   #CLOSE THE SS# 
END$DT1:  
SETI("CCTFNATLEN",CCTFNATLEN,FNAT$PTR)
CONTROL FI; 
FINIS("DBTRANS")
TERM
