*DECK DBTEXT
          PROC  DBTEXT; 
          BEGIN 
          CONTROL STEXT;
          DEF  DEBUG  #"FULL"#;   # ALL DEBUGGING ON #
*CALL ASSEMOP 
# 
  
IN THE EXAMPLE BELOW THE FOLLOWING SYMBOLS ARE USED :-
  (Q) FOR DOUBLE QUOTES 
  (S) FOR SEMICOLON.
  (A) FOR ASTERISK
  
PROC PROCNAME(S)
DEF DEBUG (Q) OPTION (Q)(S) 
(A)CA  DEBUGDEFS
START("PROCNAME") 
..
..
CODE FOR PROCEDURE
..
..
FINIS("PROCNAME") 
TERM
  
"OPTION" MAY BE :-
  FULL - ALL DEBUG MACROS WILL BE COMPILED. 
  NONE - NO DEBUG MACROS WILL BE COMPILED.
  SET - ONLY MODULE ENTRY/EXIT AND ASSIGNMENT (SET) 
        MACROS WILL BE COMPILED.
# 
$BEGIN
DEF DEBUG$SW #1#; 
CONTROL IFEQ 1,2; 
$END
CONTROL IFEQ 1,1; 
DEF DEBUG$SW #0#; 
CONTROL FI; 
$BEGIN
CONTROL FI; 
$END
  
#ESTABLISH LINK WITH DEBUGPROC# 
CONTROL IFEQ DEBUG$SW,1;
XREF PROC DEBUGPROC;
CONTROL FI; 
  
#THE PARAMETER *DEBUG* IS HARD TO USE AS IT IS HAS BEEN 
DEF-D TO A CHARACTER STRING. FOR INTERNAL PROCESSING THE PARAMETER
$DEBUG$ IS SET TO A NUMERIC VALUE. THIS ALLOWS RELATIONSHIPS FOR
HIERARCHICAL GENERATION.
# 
  
CONTROL IFEQ DEBUG$SW,1;
CONTROL IFEQ DEBUG,"FULL"; DEF $DEBUG$ #3#; CONTROL FI; 
CONTROL IFEQ DEBUG,"SET" ; DEF $DEBUG$ #2#; CONTROL FI; 
CONTROL IFEQ DEBUG,"NONE"; DEF $DEBUG$ #0#; CONTROL FI; 
CONTROL FI; 
CONTROL IFEQ DEBUG$SW,0;
DEF $DEBUG$ #0#;   #OVERRIDE USER SELECTION#
CONTROL FI; 
  
  
  
#THE FOLLOWING DEFS ARE USED TO REDUCE THE NUMBER OF CHARACTERS 
IN SUBSEQUENT DEFS - THERE IS A MAXIMUM OF 240 CHARACTERS.
# 
  
DEF $IFSTARFIN$ #CONTROL IFGQ $DEBUG$,1#; 
DEF $IFSET$     #CONTROL IFGQ $DEBUG$,2#; 
DEF $IFLOGIC$   #CONTROL IFGQ $DEBUG$,3#; 
  
  
#THE FOLLOWING DEFS ARE USED TO ENTER THE DEBUG OUTPUT MODULE.
AGAIN, WITHOUT THEM THE DEBUG DEFS WOULD BE TOO LONG. 
IN ADDITION, THEY PROVIDE A MEANS FOR THE USE TO CALL THE 
DEBUG OUTPUT MODULE DIRECTLY. 
# 
DEF CV$($TYPE,$TITLE,$VALUE)
#$IFSTARFIN$; 
$DBUGTYPE$=$TYPE; 
$TITLE$=$TITLE; 
$CVALUE$=$VALUE;
$DATATYPE$=$CHAR$;
IF $SWITCH1$ THEN DEBUGPROC;
CONTROL FI; 
#;
  
DEF OV$($TYPE,$TITLE,$VALUE)
#$IFSTARFIN$; 
$DBUGTYPE$=$TYPE; 
$TITLE$=$TITLE; 
$NVALUE$=$VALUE;
$DATATYPE$=$OCT$; 
IF $SWITCH1$ THEN DEBUGPROC;
CONTROL FI; 
#;
  
DEF IV$($TYPE,$TITLE,$VALUE)
#$IFSTARFIN$; 
$DBUGTYPE$=$TYPE; 
$TITLE$=$TITLE; 
$NVALUE$=$VALUE;
$DATATYPE$=$INT$; 
IF $SWITCH1$ THEN DEBUGPROC;
CONTROL FI; 
#;
  
  
  
#START MACRO# 
#-----------# 
  
DEF START($MODNAME) 
#BEGIN
ARRAY [15] S(1); ITEM $EXITF$ B;
ITEM $PTR$ I=0, 
$MODULE$ C(20) = $MODNAME,
$CALLMODL$ C(20)
; 
$CALLMODL$=$CURRMODL$;
$CURRMODL$=$MODNAME;
$IFSTARFIN$;
CV$($STARFIN$,$START$,$MODULE$) 
CONTROL FI; 
$PTR$=0;
#;
  
  
#FINIS MACRO# 
#-----------# 
  
DEF FINIS($MODNAME) 
#EXIT$$:  
$IFSTARFIN$;
CV$($STARFIN$,$FINIS$,$MODNAME) 
$CURRMODL$=$CALLMODL$;
CONTROL FI; 
END 
#;
  
DEF QUIT #$IFSTARFIN$;
CV$($STARFIN$,$QUIT$,$SPACES$)
CONTROL FI; 
GOTO EXIT$$; #; 
  
  
#ASSIGNMENT STATEMENTS# 
#---------------------# 
  
#WITH RANGE CHECKING# 
  
  
#DECIMAL ASSIGNMENT#
#------------------#
  
DEF SETIRC($TITLE,$SINK,$SOURCE,$LO,$HI)
#$SINK=$SOURCE; 
$IFSET$;
IV$($SET$,$TITLE,$SINK) 
IF $SINK LS $LO OR $SINK GR $HI 
THEN
BEGIN 
CV$($SET$,$ASTERS$,$RANGER$)
IV$($SET$,$LOVAL$,$LO)
IV$($SET$,$HIVAL$,$HI)
END 
CONTROL FI; 
#;
  
#OCTAL ASSIGNMENT#
#----------------#
  
DEF SETORC($TITLE,$SINK,$SOURCE,$LO,$HI)
#$SINK=$SOURCE; 
$IFSET$;
OV$($SET$,$TITLE,$SINK) 
IF $SINK LS $LO OR $SINK GR $HI 
THEN
BEGIN 
CV$($SET$,$ASTERS$,$RANGER$)
OV$($SET$,$LOVAL$,$LO)
OV$($SET$,$HIVAL$,$HI)
END 
CONTROL FI; 
#;
  
#NON RANGE CHECKING ASSIGNMENT MACROS#
#------------------------------------#
  
  
#DECIMAL ASSIGNMENT#
DEF SETI($TITLE,$SINK,$SOURCE)
#$SINK=$SOURCE; 
$IFSET$;
IV$($SET$,$TITLE,$SINK) 
CONTROL FI; 
#;
  
#OCTAL ASSIGNMENT#
DEF SETO($TITLE,$SINK,$SOURCE)
#$SINK=$SOURCE; 
$IFSET$;
OV$($SET$,$TITLE,$SINK) 
CONTROL FI; 
#;
  
#CHARACTER ASSIGNMENT#
DEF SETC($TITLE,$SINK,$SOURCE)
#$SINK=$SOURCE; 
$IFSET$;
CV$($SET$,$TITLE,$SINK) 
CONTROL FI; 
#;
  
  
#IF...THEN...ELSE MACROS# 
#----------------------$
# 
DEF THENB($COM) 
#THEN BEGIN 
$IFLOGIC$;
CV$($LOGIC$,$THEN$,$COM)
CONTROL FI; 
#;
  
DEF ELSEB($COM) 
#END
ELSE BEGIN
$IFLOGIC$;
CV$($LOGIC$,$ELSE$,$COM)
CONTROL FI; 
#;
  
DEF ENDIF #END#;
  
  
#FOR LOOP MACROS# 
#---------------# 
  
#START OF UNCONDITIONAL LOOP# 
#---------------------------# 
DEF LOOP($COM)
#$PTR$=$PTR$+1; 
$EXITF$[$PTR$]=FALSE; 
$IFLOGIC$;
CV$($LOGIC$,$LOOP$,$COM)
CONTROL FI; 
FOR $DUMMY$=0 WHILE NOT $EXITF$[$PTR$]
DO BEGIN
#;
  
#START OF LOOP WITH CONTROLLING VARIABLE# 
#---------------------------------------# 
DEF STEPLOOP($VAR,$INIT,$INCR,$LIM,$COM)
#$PTR$=$PTR$+1; 
$EXITF$[$PTR$]=FALSE; 
$IFLOGIC$;
CV$($LOGIC$,$STEPLP$,$COM)
CONTROL FI; 
FOR $VAR=$INIT STEP $INCR WHILE 
$VAR LQ $LIM AND NOT $EXITF$[$PTR$] 
DO BEGIN
#;
  
#CONDITIONAL EXIT FROM LOOP#
#--------------------------#
DEF EXITIF($VAR,$OP,$VAL,$COM)
#IF $VAR $OP $VAL 
THEN BEGIN
$EXITF$[$PTR$]=TRUE;
$IFLOGIC$;
CV$($LOGIC$,$EXITIF$,$COM)
CONTROL FI; 
TEST; 
END 
#;
  
#UNCONDITIONAL EXIT FROM LOOP#
#----------------------------#
DEF EXIT #$EXITF$[$PTR$]=TRUE;
$IFLOGIC$;
CV$($LOGIC$,$EXIT$,$SPACES$)
CONTROL FI; TEST; #;
  
#CYCLE LOOP FROM BEGINNING# 
#-------------------------# 
DEF CYCLE #TEST;#;
  
#END OF LOOP# 
#-----------# 
DEF ENDLOOP($COM) 
#END
$IFLOGIC$;
CV$($LOGIC$,$ELOOP$,$COM) 
CONTROL FI; 
$PTR$=$PTR$-1;
#;
  
  
#CASE STATEMENTS# 
#---------------# 
  
#SELECT CASE# 
#-----------# 
DEF SELCASE($VAR,$COM)
#$PTR$=$PTR$+1; 
$EXITF$[$PTR$]=FALSE; 
FOR $DUMMY$=0 WHILE NOT $EXITF$[$PTR$]
DO BEGIN
$IFLOGIC$;
CV$($LOGIC$,$SELCASE$,$COM) 
CONTROL FI; 
$DUMMY$=$VAR; 
IF $DUMMY$ NQ $DUMMY$ THEN
BEGIN 
#;
  
  
#START OF SPECIFIC CASE CODING# 
#-----------------------------# 
DEF CASE($VAR,$VAL,$COM)
#$EXITF$[$PTR$]=TRUE; 
TEST; 
END 
IF $VAR EQ $VAL THEN
BEGIN 
$IFLOGIC$;
CV$($LOGIC$,$CASE$,$COM)
CONTROL FI; 
#;
  
  
#END OF ALL CASES#
#----------------#
DEF ENDCASE($COM) 
#END
$IFLOGIC$;
CV$($LOGIC$,$ASTERS$,$CASER$) 
OV$($LOGIC$,$VARIABLE$,$DUMMY$) 
CONTROL FI; 
$EXITF$[$PTR$]=TRUE;
END 
$PTR$=$PTR$-1;
$IFLOGIC$;
CV$($LOGIC$,$ENDCASE$,$COM) 
CONTROL FI; 
#;
  
  
#DEBUG OUTPUT CONTROL#
#--------------------#
  
DEF DEBUGON #BEGIN CONTROL IFNQ $DEBUG$,0; $SWITCH1$=TRUE;
             CV$($STARFIN$,$DBUG$,$ON$) 
             CONTROL FI; END#;
  
DEF DEBUGOFF #BEGIN CONTROL IFNQ $DEBUG$,0; CV$($STARFIN$,$DBUG$,$OFF$) 
              $SWITCH1$=FALSE; CONTROL FI; END#;
  
  
 CONTROL IFNQ CB5$CDCS,"NO";
CONTROL EJECT;
DEF ARASIZE #5#;  #LENGTH (OF INTEREST) OF AREA ENTRY#
COMMON AENTVARS; BEGIN
  
ARRAY ARA [1:1] S(ARASIZE);  #FIXED PART OF AREA ENTRY# 
  BEGIN 
          ITEM SBARWORD0 U(0,0,60);       # AREA ENTRY WORD 0#
         CONTROL IFEQ CB5$CDCS,"CDCS1"; 
          ITEM SBARTYPE U(0,0,3);         # 1 = AREA                   #
          ITEM SBARORDINAL U(0,3,10);     # ORDINAL NUMBER OF AREA     #
          ITEM SBARLENGWRDS U(0,13,3);    # LENGTH OF AREA NAME IN WRDS#
          ITEM SBARLENGCHAR U(0,16,5);    # LENGTH OF AREA NAME IN CHAR#
          ITEM SBARALIASLW U(0,21,3);     # LENGTH OF ALIAS NAME IN    #
                                          # WORDS                      #
          ITEM SBARALIASLC U(0,24,5);     # LENGTH OF ALIAS NAME IN    #
                                          # CHARACTERS                 #
          ITEM SBARSYNADDR U(0,29,15);    # WORD ADDRESS OF AN ENTRY   #
                                          # WITH THE SAME HASH VALUE   #
          ITEM SBARNEXT U(0,44,15);       # WORD ADDRESS OF THE NEXT   #
                                          # AREA ENTRY. THE LAST AREA  #
                                          # ENTRY WILL POINT TO THE    #
                                          # 1ST RECORD ENTRY           #
          ITEM SBARTEMP B(0,59,1);        # TRUE = AREA IS TEMPORARY   #
          ITEM SBARDCONTRLA U(1,0,15);    # WORD ADDRESS OF THE DATA   #
                                          # CONTROL SECTION FOR THE    #
                                          # SUBJECT ENTRY              #
          ITEM SBARHASHPTR U(1,15,6);     # OFFSET POINTER OF THE HASH #
                                          # INDEX  (FOR QU )           #
          ITEM SBARONCALLP U(1,24,4);     # OFFSET POINTER TO THE ON   #
                                          # CALL ENTRY  (FOR QU)       #
          ITEM SBARNOMAPIND B(1,25,1);    # TRUE = INDICATES NO MAPPING#
                                          #       OR INEM LEVEL DATA-  #
                                          #        BASE PROCEDURES, OR #
                                          #        CHECK CLAUSES FOR   #
                                          #        ANY RECORDS IN THE  #
                                          #        SUBJECT AREA.       #
          ITEM SBARALIASPTR U(1,26,7);    # OFFSET POINTER TO THE ALIAS#
                                          # NAME ENTRY                 #
          ITEM SBARSRCLNEN U(1,33,10);    # SOURCE LINE NUMBER OF AREA #
                                          # ENTRY (IN BINARY)          #
          ITEM SBARNAME U(2,0,60);        # AREA NAME, 1-30 CHARACTERS #
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBARNAME30 C(2,0,30);      # 30 CHARACTER AREA NAME     #
         CONTROL FI;
         CONTROL IFEQ CB5$CDCS,"CDCS2"; 
          ITEM SBARTYPE U(0,0,3);         # 1 = AREA                   #
          ITEM SBARORDINAL U(0,3,12);     # ORDINAL NUMBER OF AREA     #
          ITEM SBARLENGWRDS U(0,15,3);    # LENGTH OF AREA NAME IN WRDS#
          ITEM SBARLENGCHAR U(0,18,6);    # LENGTH OF AREA NAME IN CHAR#
          ITEM SBARALIASLW U(0,24,3);     # LENGTH OF ALIAS NAME IN    #
                                          # WORDS                      #
          ITEM SBARALIASLC U(0,27,6);     # LENGTH OF ALIAS NAME IN    #
                                          # CHARACTERS                 #
          ITEM SBARSYNADDR U(0,33,18);    # WORD ADDRESS OF AN ENTRY   #
                                          # WITH THE SAME HASH VALUE - #
                                          # FOR INTERNAL PROCESS. ONLY #
          ITEM SBARNAMEPTR U(0,51,6);     # OFFSET POINTER TO THE AREA #
                                          # NAME.                      #
          ITEM SBARNOMAPIND B(0,59,1);    # TRUE = INDICATES NO MAPPING#
                                          #        OR ITEM LEVEL DATA- #
                                          #        BASE PROCEDURES, OR #
                                          #        CHECK CLAUSES FOR   #
                                          #        ANY RECORDS IN THE  #
                                          #        SUBJECT AREA.       #
          ITEM SBARNEXT U(1,0,15);        # WORD ADDRESS OF THE NEXT   #
                                          # AREA ENTRY. THE LAST AREA  #
                                          # ENTRY WILL POINT TO THE    #
                                          # 1ST RECORD ENTRY           #
          ITEM SBARSRCLNEN U(1,15,15);    # SOURCE LINE NUMBER OF SUB- #
                                          # JECT AREA.                 #
          ITEM SBARALIASPTR U(1,30,6);    # OFFSET POINTER TO THE ALIAS#
                                          # NAME ENTRY                 #
          ITEM SBARPRIVPTR U(1,36,6);     # OFFSET POINTER TO ACCESS   #
                                          # CONTROL LOCK LIST.         #
          ITEM SBARDCONTRLA U(1,42,18);   # WORD ADDRESS OF THE DATA   #
                                          # CONTROL SECTION FOR THE    #
                                          # SUBJECT ENTRY              #
          ITEM SBARSAMENAME U(2,0,18);    # WORD ADDRESS OF AN ENTRY   #
                                          # WITH THE SAME NAME.        #
          ITEM SBARKEYCAPA U(2,24,18);    # WORD ADDRESS OF THE KEY    #
                                          # MAPPING CODE CAPSULE FOR   #
                                          # THIS AREA. ZERO IF NONE.   #
          ITEM SBARKEYCAPL U(2,42,18);    # LENGTH IN WORDS OF THE     #
                                          # KEY MAPPING CAPSULE FOR    #
                                          # THIS AREA. ZERO IF NONE.   #
         CONTROL FI;
  END 
BASED ARRAY ARBA [1:1] S(1); #VARIABLE PART#
  BEGIN 
         CONTROL IFEQ CB5$CDCS,"CDCS1"; 
          ITEM SBARALIASNME U(0,0,60);    # ALIAS NAME, 1-30 CHARACTERS#
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBARALIAS30 C(0,0,30);     # 30 CHARACTER AREA ALIAS NME#
          ITEM SBARCALLOPT U(0,0,7);      # THIS ITEM IS USED WITH THE #
                                          # READ FUNCTION AND LOR IN-  #
                                          # STRUCTION TO STORE THE P1  #
                                          # VALUE TO SET THE PROPER FLG#
                                          # (FOR QU)                   #
          ITEM SBARCALLOPEN B(0,0,1);     # TRUE = CALL OPEN SPECIFIED #
                                          #        (FOR QU)            #
          ITEM SBARCALLSRCH B(0,0,1);     # TRUE = CALL SEARCH         #
                                          #        SPECIFIED (FOR QU)  #
          ITEM SBARCALMATCH B(0,2,1);     # TRUE = CALL MATCH SPECIFIED#
                                          #        (FOR QU)            #
          ITEM SBARCALMMTCH B(0,3,1);     # TRUE = CALL MIS-MATCH      #
                                          #        SPECIFIED (FOR QU)  #
          ITEM SBARCALUPDTE B(0,4,1);     # TRUE = CALL UPDATE         #
                                          #        SPECIFIED (FOR QU)  #
          ITEM SBARCALLDISP B(0,5,1);     # TRUE = CALL DISPLAY        #
                                          #        SPECIFIED (FOR QU)  #
          ITEM SBARCALLCLSE B(0,6,1);     # TRUE = CALL CLOSE SPECIFIED#
                                          #        (FOR QU)            #
          ITEM SBARCALLNEXT B(0,7,1);     # TRUE = ANOTHER CALL ENTRY  #
                                          #        FOLLOWS IN THE NEXT #
                                          #        WORD (FOR QU)       #
          ITEM SBARCALLORD U(1,8,10);     # ORDINAL NUMBER OF PROCEDURE#
          ITEM SBARCALPROC U(0,18,42);    # PROCEDURE NAME, 1-7 CHARS  #
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL (FOR QU)              #
         CONTROL FI;
         CONTROL IFEQ CB5$CDCS,"CDCS2"; 
          ITEM SBARNAME U(0,0,60);        # AREA NAME, 1-30 CHARACTERS #
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBARNAME30 C(0,0,30);      # 30 CHARACTER AREA NAME     #
          ITEM SBARALIASNME U(0,0,60);    # ALIAS NAME, 1-30 CHARACTERS#
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBARALIAS30 C(0,0,30);     # 30 CHARACTER AREA ALIAS NME#
         CONTROL FI;
  END 
END #AENTVARS#
CONTROL LIST; 
 CONTROL FI;
 CONTROL IFNQ CB5$CDCS,"NO";
CONTROL EJECT;
  
# 
THE FOLLOWING DEFINITION IS FOR THE REALM (OFT CALLED AREA) 
LIST. 
# 
DEF AREALISTES  #4#;  #AREA LIST ENTRY SIZE#
 CONTROL IFEQ CB5$CDCS,"CDCS1"; 
 DEF AREALISTSIZE  #128#;     #MAXIMUM SIZE OF AREALIST (128 4-WORD EN- 
                              TRIES#
 CONTROL FI;
 CONTROL IFEQ CB5$CDCS,"CDCS2"; 
DEF AREALISTSIZE #1#;        #NUMBER OF SS AREALIST ENTRIES TO BE READ
                              AT ONE TIME#
 CONTROL FI;
DEF RECLISTNE #20#;  #RECORD LIST NUMBER OF ENTRIES#
DEF RECLISTSIZE #RECLISTNE#;  #SIZE = NO OF ENTRIES#
COMMON ARLTVARS; BEGIN
ARRAY AREALIST [1:AREALISTSIZE] S(AREALISTES);
  BEGIN 
  ITEM AREANAME C(0,0,30);  #REALM NAME LEFT JUST ZEROFILL# 
  ITEM RECLOFFP U(3,0,15);  #OFFSET PTR TO RECD LIST# 
  ITEM AREAWA U(3,15,15);  #WORD ADDR OF AREA ENTRY#
 CONTROL IFEQ CB5$CDCS,"CDCS2"; 
  ITEM RELATIONADR U(3,15,18);  #WORD ADDRESS OF RELATION ENTRY#
 CONTROL FI;
  ITEM RECLISTLEN U(3,30,15);  #LENGTH OF RECD LIST ENTRY#
  ITEM LDROMITWC U(0,0,24);  #THIS ARRAY ALSO HOLDS THE LOADER OMIT 
                              LIST - NUMBER OF OMIT LIST ENTRIES# 
  END 
# 
THE FOLLOWING DEFINITION IS FOR THE RECORD LIST 
# 
ARRAY RECLIST [1:RECLISTSIZE] S(1); 
  BEGIN 
 CONTROL IFEQ CB5$CDCS,"CDCS1"; 
  ITEM LRECWA U(0,0,15);  #LEFT -RECORD ENTRY WORD ADDR#
  ITEM RRECWA U(0,30,15);  #RIGHT - RECORD ENTRY WORD ADDR# 
  ITEM LRECENTLEN U(0,15,15);  #LEFT - RECORD ENTRY WORD ADDR#
  ITEM RRECENTLEN U(0,45,15);  #RIGHT - RECORD ENTRY LENGTH#
 CONTROL FI;
 CONTROL IFEQ CB5$CDCS,"CDCS2"; 
  ITEM LRECWA      U(0,0,18);   #WORD ADDRESS OF RECORD ENTRY#
  ITEM LRECENTLEN  U(0,18,18);  #LENGTH OF RECORD ENTRY#
 CONTROL FI;
  END 
# 
LEFT/RIGHT INDICATOR FOR RECORD LIST
# 
ITEM RECLISTR I=0;  #1= ACCESS RIGHT HAND FIELDS# 
# 
ACCESS POINTERS 
# 
ITEM AREALISTPTR I=1; 
ITEM RECLISTPTR I=1;
ITEM RECINAREA I=0;  #NO OF ENTRIES IN RECLIST# 
END #ARLTVARS#
CONTROL LIST; 
CONTROL FI; 
 CONTROL IFNQ CB5$CDCS,"NO";
CONTROL EJECT;
DEF DCASIZE #60#;  #DATA CONTROL ENTRY SIZE#
 CONTROL IFEQ CB5$CDCS,"CDCS1"; 
DEF DCFITWA #3#;
 CONTROL FI;
 CONTROL IFEQ CB5$CDCS,"CDCS2"; 
DEF DCFITWA #SBDCFITPTR[1]#;    # POINTER TO FIT IN DATA CONTROL ENTRY #
 CONTROL FI;
COMMON DENTVARS; BEGIN
  
ARRAY DCA [1:DCASIZE] S(1); #FIXED PART OF DATA CONTROL#
 BEGIN
         CONTROL IFEQ CB5$CDCS,"CDCS1"; 
          ITEM SBDCLENG U(0,0,6);         # LENGTH OF DATA CONTROL ENTR#
                                          # IN WORDS                   #
          ITEM SBDCRECCDPTR U(0,6,7);     # OFFSET POINTER TO THE RECOR#
                                          # CODE POINTER               #
          ITEM SBDCALTRKYPT U(0,13,7);    # OFFSET POINTER TO THE ALTER#
                                          # NATE KEY ENTRY             #
          ITEM SBDCNXTAREAP U(0,20,7);    # OFFSET POINTER TO THE NEXT #
                                          # AREA DATA CONTROL ENTRY    #
          ITEM SBDCLOGBUFSZ U(0,27,18);   # CRM BUFFER SIZE (BFS) FOR  #
                                          # THE LOG FILE               #
          ITEM SBDCRECCDLEN U(0,45,12);   # LENGTH OF RECORD CODE ENTRY#
          ITEM SBDCSEQOPT U(0,58,2);      # SEQUENCE OPTIONS - 2 BITS  #
          ITEM SBDCSEQCOBOL B(0,58,1);    # TRUE = SEQUENCE IS COBOL   #
          ITEM SBDCSEQASCII B(0,59,1);    # TRUE = SEQUENCE IS ASCII   #
                                          #        COBOL               #
          ITEM SBDCARFITWRD U(3,0,60);    # FIT WORD                   #
          ITEM SBDCORGSORT B(1,0,1);      # TRUE = ORGANIZATION IS SORT#
          ITEM SBDCORGACDC B(1,1,1);      # FALSE = ORGANIZATION IS IN #
                                          #         ASCENDING ORDER    #
                                          # TRUE = ORGANIZATION IS IN  #
                                          #        DESCENDING ORDER    #
          ITEM SBDCORDUP U(1,2,3);        # 1 = DUPLICATES ARE FIRST   #
                                          # 2 = DUPLICATES ARE LAST    #
                                          # 3 = DUPLICATES ARE NOT ALLO#
          ITEM SBDCSDAORD U(1,5,10);      # ORDINAL OF SDA PROCEDURE   #
          ITEM SBDCSDAPRCN U(1,18,42);    # SDA PROC NAME 1 THRU 7     #
                                          # CHARS LEFT JUSTIFIED WITH  #
                                          # ZERO FILL                  #
          ITEM SBDCLOGNAME U(2,0,42);     # LOG FILE NAME, 1-7 CHARS   #
                                          # WITH ZERO FILL             #
          ITEM SBDCLOGOPTS U(2,57,3);     # LOG OPTIONS - 3 BITS       #
          ITEM SBDCLOGBEFOR B(2,57,1);    # TRUE = BEFORE IS SPECIFIED #
          ITEM SBDCLOGAFTER B(2,58,1);    # TRUE = AFTER IS SPECIFIED  #
          ITEM SBDCLOGTRANS B(2,59,1);    # TRUE = TRANS IS SPECIFIED  #
         CONTROL FI;
         CONTROL IFEQ CB5$CDCS,"CDCS2"; 
          ITEM SBDCLENG U(0,0,15);        # LENGTH OF DATA CONTROL     #
                                          # ENTRY IN WORDS.            #
          ITEM SBDCRECCDPTR U(0,15,12);   # OFFSET POINTER TO THE      #
                                          # RECORD CODE ENTRY.         #
          ITEM SBDCALTRKYPT U(0,27,12);   # OFFSET POINTER TO THE FIRST#
                                          # KEY ENTRY.                 #
          ITEM SBDCNXTAREAP U(0,39,15);   # OFFSET POINTER TO THE NEXT #
                                          # AREA DATA CONTROL ENTRY    #
          ITEM SBDCRECCDFLG B(0,57,1);    # 1 = ONLY 1 REC TYPE IN AREA#
          ITEM SBDCSEQOPT U(0,58,2);      # SEQUENCE OPTIONS - 2 BITS  #
          ITEM SBDCSEQCOBOL B(0,58,1);    # TRUE = SEQUENCE IS COBOL   #
          ITEM SBDCSEQASCII B(0,59,1);    # TRUE = SEQUENCE IS ASCII   #
          ITEM SBDCLOGBUFSZ U(1,0,18);    # 6RM BUFFER SIZE (BFS) FOR  #
                                          # THE LOG FILE               #
          ITEM SBDCRECCDLEN U(1,18,12);   # LENGTH OF RECORD CODE ENTRY#
          ITEM SBDCFITLENG U(1,30,6);     # AREA FIT LENGTH (WORDS)    #
          ITEM SBDCFITPTR U(1,36,6);      # OFFSET POINTER, RELATIVE TO#
                                          # START OF SUBJECT DATA      #
                                          # CONTROL ENTRY, TO THE FIT  #
          ITEM SBDCORGSORT B(2,0,1);      # TRUE = ORGANIZATION IS SORT#
          ITEM SBDCORGACDC B(2,1,1);      # FALSE = ORGANIZATION IS IN #
                                          #         ASCENDING ORDER    #
                                          # TRUE = ORGANIZATION IS IN  #
                                          #        DESCENDING ORDER    #
          ITEM SBDCORDUP U(2,2,3);        # 1 = DUPLICATES ARE FIRST   #
                                          # 2 = DUPLICATES ARE LAST    #
                                          # 3 = DUPLICATES ARE NOT     #
                                          #     ALLOWED.               #
          ITEM SBDCSDAORD U(2,6,12);      # ORDINAL NUMBER OF THE SDA  #
                                          # PROCEDURE                  #
          ITEM SBDCSDAPRCN U(2,18,42);    # SDA PROCEDURE NAME,1 THRU  #
                                          # 7 CHARS,LEFT JUSTIFIED,    #
                                          # ZERO FILLED.               #
          ITEM SBDCLOGNAME U(3,0,42);     # ASSIGNED LOG FILE NAME, 1-7#
                                          # CHARS LONG WITH ZERO FILL. #
          ITEM SBDCLOGOPTS U(3,57,3);     # LOG OPTIONS  - 3 BITS      #
          ITEM SBDCLOGBEFOR B(3,57,1);    # TRUE = BEFORE IS SPECIFIED #
          ITEM SBDCLOGAFTER B(3,58,1);    # TRUE = AFTER IS SPECIFIED  #
          ITEM SBDCLOGTRANS B(3,59,1);    # TRUE = TRANS IS SPECIFIED  #
          ITEM SBDCARFITWRD U(4,0,60);    # FIT WORD                   #
         CONTROL FI;
  END 
BASED ARRAY DCBA [1:1] S(1); #VARIABLE PART#
  BEGIN 
         CONTROL IFEQ CB5$CDCS,"CDCS1"; 
          ITEM SBDCRCCDEBWP U(0,0,18);    # RELATIVE WORD POSITION OF  #
                                          # THE ITEM IN THE RECORD     #
          ITEM SBDCRCCDEBCP U(0,18,6);    # RELATIVE CHAR POSITION OF  #
                                          # ITEM IN THE RECORD         #
          ITEM SBDCRCCDESIZ U(0,24,15);   # ITEM SIZE IN CHARACTERS    #
          ITEM SBDCRCDEITMO U(0,39,15);   # ORDINAL NUMBER OF SUBJECT  #
                                          # ITEM                       #
          ITEM SBDCRCDECLAS U(0,54,5);    # DATA CLASS OF SUBJECT ITEM #
          ITEM SBDCRCDEPRCO U(0,0,42);    # PROCEDURE ORDINAL          #
          ITEM SBDCRCDETYP B(0,59,1);     # FALSE = DATA NAME IS SPECIF#
                                          #         IED                #
                                          # TRUE = PROCEDURE NAME IS   #
                                          #        SPECIFIED           #
          ITEM SBDCRCDELITL U(0,0,9);     # LENGTH OF LITERAL IN CHAR- #
                                          # ACTERS                     #
          ITEM SBDCRCDELITP U(0,9,10);    # OFFSET POINTER FROM THE    #
                                          # HEADER WORD OF THE RECORD  #
                                          # CODE ENTRY TO THE LITERAL  #
          ITEM SBDCRCDERECO U(0,19,18);   # ORDINAL NUMBER OF RECORD   #
          ITEM SBDCRCDEINTV U(0,37,10);   # INTEGER VALUE ASSIGNED TO  #
                                          # SUBJECT RECORD             #
          ITEM SBDCRCDENEXT B(0,47,1);    # TRUE = ANOTHER RECORD CODE #
                                          #        ENTRY FOLLOWS IN THE#
                                          #        NEXT WORD           #
          ITEM SBDCRCCDELIT U(0,0,60);    # RECORD CODE LITERAL, 1-255 #
                                          # CHARACTERS LEFT JUSTIFIED  #
                                          # WITH ZERO FILL             #
          ITEM SBDCRCENTRYA U(0,0,15);    # WORD ADDRESS OF THE RECORD #
                                          # ENTRY THAT THIS ENTRY      #
                                          # PERTAINS TO                #
          ITEM SBDCKEYINFO1 U(0,15,37);   # KEY INFO                   #
          ITEM SBDCKEYTYPE U(0,15,2);     # O = SYMBLOLIC KEY          #
                                          # 1 = SIGNED BINARY          #
                                          # 2 = UNSIGNED BINARY        #
          ITEM SBDCKEYGRPSZ U(0,17,18);   # IF KEY IS A GROUP ITEM     #
                                          # THIS FIELD CONTAINS THE    #
                                          # SIZE OF ONE OCCURRENCE OF  #
                                          # THE GROUP                  #
          ITEM SBDCKEYMAXOC U(0,35,20);   # IF KEY IS A GROUP ITEM THIS#
                                          # FIELD CONTAINS THE MAXIMUM #
                                          # NUMBER OF OCCURRENCES      #
          ITEM SBDCKEYINFO2 U(0,0,39);    # KEY INFO                   #
          ITEM SBDCKEYBWP U(1,0,18);      # RELATIVE WORD POISTION OF  #
                                          # THE DATA ITEM IN THE RECORD#
          ITEM SBDCKEYBCP U(1,18,6);      # RELATIVE CHAR POSITION OF  #
                                          # DATA ITEM IN THE RECORD    #
          ITEM SBDCKEYSIZ U(1,24,15);     # SIZE IN CHARACTERS OF THE  #
                                          # SUBJECT ITEM               #
          ITEM SBDCKEYNITM U(1,39,7);     # OFFSET POINTER TO THE NEXT #
                                          # DATA-NAME SPECIFIED FOR THE#
                                          # SUBJECT RECORD             #
          ITEM SBDCKEYOMIT B(1,50,1);     # TRUE=KEY ITEM NOT PRESENT  #
                                          # IN SUBSCHEMA               #
          ITEM SBDCKEYIMBED B(1,53,1);    # TRUE = FORMAT-1 IS SPECIF- #
                                          #        IED                 #
                                          # FALSE = FORMAT-2 IS SPECIF-#
                                          #         IED                #
          ITEM SBDCKEYPRI B(1,54,1);      # TRUE = SUBJECT DATA-NAME IS#
                                          #        A PRIMARY KEY       #
          ITEM SBDCKEYDUPS B(1,55,1);     # TRUE = DUPLICATES ARE SPEC-#
                                          #        IFIED               #
          ITEM SBDCKEYINDEX B(1,56,1);    # TRUE = INDEXED IS SPECIFIED#
          ITEM SBDCKEYFIRST B(1,57,1);    # TRUE = FIRST IS SPECIFIED  #
          ITEM SBDCKEYNOT B(1,58,1);      # TRUE = NOT IS SPECIFIED    #
          ITEM SBDCKEYALLOW B(1,59,1);    # TRUE = ALLOWED IS SPECIFIED#
          ITEM SBDCKEYNXT B(2,0,1);       # TRUE = QUALIFIER ENTRY FOLL#
                                          #        OWS SPECIFIED RECORD#
          ITEM SBDCKEYDNADR U(2,5,15);    # WORD ADDRESS OF THE SPECIFI#
                                          # ED DATA-NAME               #
          ITEM SBDCKEYDNORD U(2,20,10);   # ORDINAL NUMBER OF THE      #
          ITEM SBDCRECORD U(2,20,10);     # ORDINAL NUMBER OF RECORD.  #
                                          # SPECIFIED DATA-NAME        #
          ITEM SBDCKEYQALNX B(2,30,1);    # TRUE = ANOTHER QUALIFIER   #
                                          #        ENTRY FOLLOWS       #
          ITEM SBDCKEYQALAD U(2,35,15);   # ADDRESS OF THE QUALIFIER   #
                                          # NAME                       #
          ITEM SBDCKEYQALOR U(2,50,10);   # ORDINAL NUMBER OF THE      #
                                          # QUALIFIER NAME             #
          ITEM SBDCKEYDNNXT B(2,0,1);     # TRUE = QUALIFIER ENTRY FOLL#
                                          #        OWS                 #
          ITEM SBDCKEYDNLEN U(2,16,6);    # LENGTH OF DATA-NAME IN CHAR#
          ITEM SBDCKEYDNPTR U(2,22,8);    # OFFSET POINTER TO THE DATA-#
                                          # NAME ENTRY                 #
          ITEM SBDCKEYRQALL U(2,46,6);    # LENGTH IN CHARACTERS OF THE#
          ITEM SBDCKEYLQALL U(2,16,6);    # QUALIFYING NAME            #
          ITEM SBDCKEYRQALP U(2,52,8);    # OFFSET POINTER TO THE QUAL-#
          ITEM SBDCKEYLQALP U(2,22,8);    # IFYING NAME                #
          ITEM SBDCKEYRQLNX B(2,30,1);    # TRUE = ANOTHER QUALIFIER   #
          ITEM SBDCKEYLQLNX B(2,0,1);     #        ENTRY FOLLOWS, MAY  #
                                          #        OVERFLOW TO THE NEXT#
                                          #        WORD                #
          ITEM SBDCKEYDNME  C(0,0,30);    # KEY DATA-NAME, 1 TO 30     #
                                          # CHARACTERS LEFT JUSTIFIED  #
                                          # WITH ZERO FILL             #
          ITEM SBDCKEYQALNM C(2,0,10);    # ALTERNATE KEY QUALIFIER NAM#
                                          # 1-30 CHARACTERS LEFT JUSTIF#
                                          # IED WITH ZERO FILL         #
         CONTROL FI;
         CONTROL IFEQ CB5$CDCS,"CDCS2"; 
          ITEM SBDCRCCDEBWP U(0,0,18);    # RELATIVE WORD POSITION OF  #
                                          # THE ITEM IN THE RECORD     #
          ITEM SBDCRCCDEBCP U(0,18,6);    # RELATIVE CHAR POSITION OF  #
                                          # ITEM IN THE RECORD         #
          ITEM SBDCRCCDESIZ U(0,24,18);   # ITEM SIZE IN CHARACTERS    #
          ITEM SBDCRCDECLAS U(0,42,6);    # DATA CLASS OF SUBJECT ITEM #
          ITEM SBDCRCDETYP B(0,59,1);     # FALSE = DATA NAME IS SPECIF#
                                          #         IED                #
                                          # TRUE = PROCEDURE NAME IS   #
                                          #        SPECIFIED           #
          ITEM SBDCRCDEITMO U(1,0,15);    # ORDINAL NUMBER OF SUBJECT  #
                                          # ITEM                       #
          ITEM SBDCRCDEPROC U(0,0,42);    # RECORD CODE PROCEDURE NAME #
          ITEM SBDCRCDEPRCO U(0,42,12);   # PROCEDURE ORDINAL          #
          ITEM SBDCRCDELITL U(0,0,9);     # LENGTH OF LITERAL IN CHAR- #
                                          # ACTERS                     #
          ITEM SBDCRCDELITP U(0,9,15);    # OFFSET POINTER FROM THE    #
                                          # HEADER WORD OF THE RECORD  #
                                          # CODE ENTRY TO THE LITERAL  #
          ITEM SBDCRCDERECO U(0,24,12);   # ORDINAL NUMBER OF RECORD   #
          ITEM SBDCRCDEINTV U(0,45,12);   # INTEGER VALUE ASSIGNED TO  #
                                          # SUBJECT RECORD             #
          ITEM SBDCRCDENEXT B(0,57,1);    # TRUE = ANOTHER RECORD CODE #
                                          # ENTRY FOLLOWS.             #
          ITEM SBDCRCCDELIT U(0,0,60);    # RECORD CODE LITERAL, 1-255 #
                                          # CHARACTERS LEFT JUSTIFIED  #
                                          # WITH ZERO FILL             #
          ITEM SBDCRCENTRYA U(0,0,18);    # WORD ADDRESS OF THE RECORD #
                                          # ENTRY THAT THIS ENTRY      #
                                          # PERTAINS TO                #
          ITEM SBDCKEYINFO1 U(0,21,39);   # KEY INFO                   #
          ITEM SBDCKEYTYPE U(0,21,2);     # O = SYMBLOLIC KEY          #
                                          # 1 = SIGNED BINARY          #
                                          # 2 = UNSIGNED BINARY        #
          ITEM SBDCKEYGRPSZ U(0,23,16);   # IF KEY IS A GROUP ITEM     #
                                          # THIS FIELD CONTAINS THE    #
                                          # SIZE OF ONE OCCURRENCE OF  #
                                          # THE GROUP                  #
          ITEM SBDCKEYMAXOC U(0,39,21);   # IF KEY IS A GROUP ITEM THIS#
                                          # FIELD CONTAINS THE MAXIMUM #
                                          # NUMBER OF OCCURRENCES      #
          ITEM SBDCKEYINFO2 U(1,0,42);    # KEY INFO                   #
          ITEM SBDCKEYBWP U(1,0,18);      # RELATIVE WORD POISTION OF  #
                                          # THE DATA ITEM IN THE RECORD#
          ITEM SBDCKEYBCP U(1,18,6);      # RELATIVE CHAR POSITION OF  #
                                          # DATA ITEM IN THE RECORD    #
          ITEM SBDCKEYSIZ U(1,24,18);     # SIZE IN CHARACTERS OF THE  #
                                          # DATA ITEM.                 #
          ITEM SBDCKEYNITM U(1,42,9);     # OFFSET POINTER TO THE NEXT #
                                          # KEY ENTRY FOR THE SUBJECT  #
                                          # AREA.                      #
          ITEM SBDCCONCTFG B(1,51,1);     # TRUE - SUBJECT KEY IS A    #
                                          #        CONCATENATED KEY.   #
          ITEM SBDCKEYSORT B(1,52,1);     # TRUE - SUBJECT KEY IS A    #
                                          #        SEQUENTIAL SORT KEY.#
          ITEM SBDCKEYIMBED B(1,53,1);    # TRUE = FORMAT-1 IS SPECIF- #
                                          #        IED                 #
                                          # FALSE = FORMAT-2 IS SPECIF-#
                                          #         IED                #
          ITEM SBDCKEYPRI B(1,54,1);      # TRUE = SUBJECT DATA-NAME IS#
                                          #        A PRIMARY KEY       #
          ITEM SBDCKEYDUPS B(1,55,1);     # TRUE = DUPLICATES ARE SPEC-#
                                          #        IFIED               #
          ITEM SBDCKEYINDEX B(1,56,1);    # TRUE = INDEXED IS SPECIFIED#
          ITEM SBDCKEYFIRST B(1,57,1);    # TRUE = FIRST IS SPECIFIED  #
          ITEM SBDCKEYNOT B(1,58,1);      # TRUE = NOT IS SPECIFIED    #
          ITEM SBDCKEYOMIT B(1,59,1);     # TRUE=KEY ITEM NOT PRESENT  #
                                          # IN SUBSCHEMA               #
          ITEM SBDCKEYNXT B(2,0,1);       # TRUE = QUALIFIER ENTRY     #
                                          #        FOLLOWS.            #
          ITEM SBDCKEYDNADR U(2,1,18);    # WORD ADDRESS OF THE SPECIF-#
                                          # IED DATA-NAME.             #
          ITEM SBDCRECORD U(2,19,12);     # ORDINAL NUMBER OF RECORD.  #
          ITEM SBDCKEYDNNXT B(2,0,1);     # TRUE = QUALIFIER ENTRY     #
                                          #        FOLLOWS.            #
          ITEM SBDCKEYDNLEN U(2,15,6);    # LENGTH OF DATA-NAME IN CHAR#
          ITEM SBDCKEYDNPTR U(2,21,9);    # OFFSET POINTER TO THE DATA-#
                                          # NAME.                      #
          ITEM SBDCKEYDNME  C(0,0,30);    # KEY DATA-NAME, 1 TO 30     #
                                          # CHARACTERS LEFT JUSTIFIED  #
                                          # WITH ZERO FILL             #
          ITEM SBDCCNNBRITM U(0,31,7);    # NUMBER OF DBIS IN THE CONC-#
                                          # ATENATED KEY DEFINITION.   #
          ITEM SBDCCNNMELW U(0,38,2);     # LENGTH IN WORDS OF THE     #
                                          # CONCATENATED KEY NAME.     #
          ITEM SBDCCNNMELC U(0,40,5);     # LENGTH IN CHARACTERS OF THE#
                                          # CONCATENATED KEY NAME.     #
          ITEM SBDCCNKEYORD U(0,45,15);   # SUB-SCHEMA ORDINAL OF KEY  #
                                          # (GROUP) ITEM.              #
          ITEM SBDCCNNME30 C(0,0,30);     # CONCATENATED KEY NAME, LEFT#
                                          # JUSTIFIED WITH ZERO FILL.  #
          ITEM SBDCCNDBIS U(0,0,21);      # SCHEMA WORD ADDRESS OF THE #
                                          # DBIS DEFINED AS CONCAT-    #
                                          # ENATED KEYS.               #
          ITEM SBDCCNDBIORD U(0,42,18);   # SCHEMA ORDINAL OF DBI.     #
         CONTROL FI;
  END 
END #DENTVARS#
CONTROL LIST; 
 CONTROL FI;
 CONTROL IFNQ CB5$CDCS,"NO";
CONTROL EJECT;
DEF BFS #66#;  #DDL INPUT BUFFER SIZE#
 CONTROL IFEQ CB5$CDCS,"CDCS1"; 
DEF DDLVERSION #"2."#;
 CONTROL FI;
 CONTROL IFEQ CB5$CDCS,"CDCS2"; 
DEF DDLVERSION #"3."#;
 CONTROL FI;
COMMON DARVARS; BEGIN 
  
#THE FOLLOWING DEFINITION IS FOR THE DIRECTORY INFORMATION
TABLE USED TO ACCESS THE DDL TABLES 
# 
ARRAY DIT [1:1] S(26);
  BEGIN 
#DEFINITION OF SUBSCHEMA CONTROL WORDS# 
  ITEM DITWD I(0,0,60) = [0]; 
        CONTROL IFEQ CB5$CDCS,"CDCS1";
          ITEM SBCWSCHEMANM U(0,0,60);    # SCHEMA NAME 1-30 CHARACTERS#
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBCWSCHNAM30 C(0,0,30);    #                            #
          ITEM SBCWNUMAREAS U(3,0,6);     # TOTAL NUMBER OF AREAS      #
                                          # SPECIFIED IN THE SUB-SCHEMA#
          ITEM SBCWNUMBERCS U(3,6,9);     # TOTAL NUMBER OF RECORDS    #
                                          # SPECIFIED IN THE SUB-SCHEMA#
          ITEM SBCWNUMITEMS U(3,15,12);   # TOTAL NUMBER OF ITEMS      #
                                          # SPECIFIED IN THE SUB-SCHEMA#
          ITEM SBCWNUMRELS U(3,27,9);     # TOTAL NUMBER OF RELATIONS  #
                                          # SPECIFIED IN THE SUB-SCHEMA#
          ITEM SBCWMAXRECS U(3,36,18);    # MAXIMUM RECORD SIZE        #
          ITEM SBCWNOMAP B(3,54,1);       # TRUE = NO RECORD MAPPING   #
                                          #       NEED FOR THIS        #
                                          #       SUB-SCHEMA           #
          ITEM SBCWNOLOG B(3,55,1);       # NO LOGGING SPECIFIED FOR   #
                                          # SUBJECT SUB-SCHEMA         #
          ITEM SBCWFRSTAREA U(3,56,4);    # WORD ADDRESS OF THE FIRST  #
                                          # AREA ENTRY                 #
          ITEM SBCWDBPLENG U(4,0,12);     # LENGTH IN WORDS OF THE DATA#
                                          # BASE PROCEDURE TABLE       #
          ITEM SBCWDBPADDR U(4,12,18);    # WORD ADDRESS OF THE DATA   #
                                          # BASE PROCEDURE TABLE       #
          ITEM SBCWOMITLENG U(4,30,12);   # LENGTH IN WORDS OF THE OMIT#
                                          # TABLE                      #
          ITEM SBCWOMITADDR U(4,42,18);   # WORD ADDRESS OF THE OMIT   #
                                          # TABLE                      #
          ITEM SBCWSBLENG U(5,0,14);      # LENGTH IN WORDS OF THE     #
                                          # SUB-SCHEMA                 #
          ITEM SBCWSBADDR U(5,14,18);     # FIRST WORD ADDRESS OF THE  #
                                          # SUB-SCHEMA                 #
          ITEM SBCWDCADDR U(5,32,14);     # WORD ADDRESS OF THE DATA   #
                                          # CONTROL ENTRY              #
          ITEM SBCWHASHADR U(5,46,14);    # WORD ADDRESS OF THE HASH   #
                                          # INDEX                      #
          ITEM SBCWRLMLSTAD U(5,46,14);   # NEW NAME FOR -SBCWHASHADR- #
          ITEM SBCWSCHTIME U(6,0,30);     # TIME OF SCHEMA CREATION    #
                                          #  HH.MM (DISPLAY CODE)      #
          ITEM SBCWSCHDATE U(6,30,30);    # DATA OF SCHEMA CREATION    #
                                          #  YYDDD (DISPLAY CODE)      #
          ITEM SBCWSBTMEDTE U(7,0,60);    # TIME A DATE OF SUB-SCHEMA  #
                                          # CREATION                   #
          ITEM SBCWSBSCHTME U(7,0,30);    # TIME OF SUB-SCHEMA CREATION#
                                          #  HH:MM (DISPLAY CODE)      #
          ITEM SBCWSBSCHDTE U(7,30,30);   # TIME OF SUB-SCHEMA CREATION#
                                          #  YYDDD  (DISPLAY CODE)     #
          ITEM SBCWFRSTRECA U(8,0,10);    # CONTAINS THE WORD ADDRESS # 
                                          # OF THE FIRST RECORD ENTRY.# 
          ITEM SBCWALTKEY B(8,49,1);      # TRUE IF NO ALTERNATE KEYS  #
                                          # EXIST IN SCHEMA            #
          ITEM SBCWVERSION C(9,12,2);     # 1ST 2 (DISPLAY) CHARACTERS #
                                          # OF DDL VERSION NUMBER      #
           ITEM DAENTAD U(11,0,60);                                     000121
           ITEM DASTATE U(12,0,60);                                     000131
           ITEM DANWRDS U(13,0,60);                                     000141
           ITEM DAPART U(14,0,60);                                      000151
        CONTROL FI; 
        CONTROL IFEQ CB5$CDCS,"CDCS2";
          ITEM SBCWSCHEMANM U(0,0,60);    # SCHEMA NAME 1-30 CHARACTERS#
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBCWSCHNAM30 C(0,0,30);    #                            #
          ITEM SBCWNUMAREAS U(3,0,12);    # TOTAL NUMBER OF AREAS      #
                                          # SPECIFIED IN THE SUB-SCHEMA#
          ITEM SBCWNUMBERCS U(3,12,12);   # TOTAL NUMBER OF RECORDS    #
                                          # SPECIFIED IN THE SUB-SCHEMA#
          ITEM SBCWNUMITEMS U(3,24,15);   # TOTAL NUMBER OF ITEMS      #
                                          # SPECIFIED IN THE SUB-SCHEMA#
          ITEM SBCWNUMRELS U(3,39,12);    # TOTAL NUMBER OF RELATIONS  #
                                          # SPECIFIED IN THE SUB-SCHEMA#
          ITEM SBCWDBPLENG U(4,0,12);     # LENGTH IN WORDS OF THE DATA#
                                          # BASE PROCEDURE TABLE       #
          ITEM SBCWDBPADDR U(4,12,18);    # WORD ADDRESS OF THE DATA   #
                                          # BASE PROCEDURE TABLE       #
          ITEM SBCWSBHDRPTR U(4,30,6);    # OFFSET POINTER TO SUBSCHEMA#
          ITEM SBCWFRSTAREA U(4,36,6);    # WORD ADDRESS OF THE FIRST  #
                                          # AREA ENTRY                 #
          ITEM SBCWSBLENG U(4,42,18);     # LENGTH IN WORDS OF THE     #
                                          # SUB-SCHEMA                 #
          ITEM SBCWDCADDR U(5,0,18);      # WORD ADDRESS OF THE DATA   #
                                          # CONTROL ENTRY              #
          ITEM SBCWRLMLSTAD U(5,18,18);   # WORD ADDRESS OF THE REALM  #
                                          # LIST.                      #
          ITEM SBCWSBADDR U(5,36,21);     # FIRST WORD ADDRESS OF THE  #
                                          # SUB-SCHEMA                 #
          ITEM SBCWALTKEY B(5,57,1);      # FALSE = (DEFAULT). ALTERNA-#
                                          #         TE KEYS MAY EXIST  #
                                          #         IN SCHEMA.         #
                                          # TRUE = NO ALT. KEYS IN SCH.#
          ITEM SBCWNOMAP B(5,58,1);       # TRUE = NO RECORD MAPPING   #
                                          #       NEED FOR THIS        #
                                          #       SUB-SCHEMA           #
          ITEM SBCWNOLOG B(5,59,1);       # NO LOGGING SPECIFIED FOR   #
                                          # SUBJECT SUB-SCHEMA         #
                                          # OF SCHEMA COMPILATION.     #
          ITEM SBCWSCTMEDTE U(6,0,60);    # CONTAINS THE TIME AND DATE #
                                          # OF SCHEMA COMPILATION.     #
          ITEM SBCWSCHTIME U(6,0,30);     # TIME OF SCHEMA CREATION    #
                                          #  HH.MM (DISPLAY CODE)      #
          ITEM SBCWSCHDATE U(6,30,30);    # DATE OF SCHEMA CREATION    #
                                          #  YYDDD (DISPLAY CODE)      #
          ITEM SBCWSBTMEDTE U(7,0,60);    # TIME AND DATE OF SUBSCHEMA #
                                          # CREATION                   #
          ITEM SBCWSBSCHTME U(7,0,30);    # TIME OF SUB-SCHEMA CREATION#
                                          #  HH:MM (DISPLAY CODE)      #
          ITEM SBCWSBSCHDTE U(7,30,30);   # DATE OF SUB-SCHEMA CREATION#
                                          #  YYDDD  (DISPLAY CODE)     #
          ITEM SBCWFRSTRELA U(8,0,18);    # WORD ADDRESS OF THE FIRST  #
                                          # RELATION ENTRY IN THE SUB- #
                                          # SCHEMA. ZERO IF NO RELATION#
                                          # ENTRIES .                  #
          ITEM SBCWLARGRQT U(8,18,12);    # SIZE IN WRDS OF THE LARGEST#
                                          # RQT  ENTRY.                #
          ITEM SBCWMAXJDBI3 U(8,30,6);    # LENGTH(WRDS) OF THE LARGEST#
                                          # ITEM (USE SIZE) IN THE RST #
                                          # TABLE WHOSE KEY INDICATOR  #
                                          # IS EQUAL OR LESS THAN 3.   #
          ITEM SBCWMAXRANK U(8,36,12);    # HIGHEST RANK VALUE IN THE  #
                                          # RELATION DIVISION.         #
          ITEM SBCWKEYIND3 U(8,48,12);    # TOTAL NUM. OF ITEMS(IN THE #
                                          # RST TABLE) WHERE THE KEY   #
                                          # INDICATOR IS LESS THAN OR  #
                                          # EQUAL TO 3(TOTAL NUMBER IN #
                                          # THE RELATION DIVISION).    #
          ITEM SBCWDNSBUFSZ U(9,0,12);    # SIZE IN WORDS OF ALL THE   #
                                          # DATA-NAME ENTRIES. THE SIZE#
                                          # IS THE SCHEMA DBI SIZE OF  #
                                          # THE DBI LEFT OF THE OPER-  #
                                          # ATOR(WHERE THE DATA-NAME   #
                                          # IS RIGHT OF THE  OPERATOR) #
          ITEM SBCWVERSION C(9,12,2);     # 1ST 2 (DISPLAY) CHARACTERS #
                                          # OF DDL VERSION NUMBER      #
          ITEM SBCWFRSTRECA U(9,30,15);   # WORD ADDRESS OF 1ST RECORD #
                                          # ENTRY                      #
          ITEM SBCWMAXSELEN U(9,45,15);   #MAXIMUM LENGTH OF AN AREA,  #
                                          # RECORD, ITEM, RELATION OR  #
                                          # DATA CONTROL SUB-ENTRY     #
          ITEM SBCWSSTYPE U(10,0,18);     # 3 CHARACTER DISPLAY CODE   #
                                          # SUB-SCHEMA TYPE ---        #
                                          # COB - COBOL SUBSCHEMA.     #
                                          # FTN - FORTRAN SUBSCHEMA.   #
          ITEM SBCWCKSUMWA U(10,18,21);   # CKSUM BLOCK WORD ADDRESS   #
          ITEM SBCWMAXRECS U(10,42,18);   # MAXIMUM RECORD SIZE        #
          ITEM SBCWFRSTCAPA U(11,0,18);   # WORD ADDRESS OF FIRST CODE #
                                          # CAPSULE FOR THIS SUB-SCHEMA#
          ITEM SBCWMAXCAPL U(11,18,18);   # MAXIMUM LENGTH OF A CAPSULE#
          ITEM SBCWBDATE U(12,0,30);      # DDL BUILD DATE (YYDDD)     #
          ITEM SBCWCRMVER U(12,42,18);    # CRM VERSION N.N            #
          ITEM SBCWCHECKSUM U(13,0,60);   # SUBSCHEMA CHECKSUM         #
          ITEM DAENTAD U(21,0,60);        # CONTAINS THE WORD ADDRESS  #
                                          # OF ENTRY ACCESSED.         #
          ITEM DASTATE U(22,0,60);        # 0 = ENTRY FOUND            #
                                          # 1 = ENTRY NOT FOUND - FAIL #
          ITEM DANWRDS U(23,0,60);        # NUMBER OF WORDS READ INTO  #
                                          # WSA.                       #
          ITEM DAPART U(24,0,60);         # 0 = ALL THE WORDS REQUESTED#
                                          #     IN DIR.ACCESS CALL READ#
                                          # 1 = ALL THE WORDS NOT READ-#
                                          #     NUMBER OF WORDS PASSED #
                                          #     IN CALL IS LESS THAN   #
                                          #     ENTRY LENGTH.          #
        CONTROL FI; 
  END 
#DEFINITIONS OF FIT#
       BASED ARRAY DDLFIT[1:1]  S(18);
            BEGIN         #(WD,BBP,LEN)    BBP IS L TO R  0 - 59 #
            ITEM FITWORD       U(0,0,60); 
      ITEM FITCMPLT  U(00,59,01); #FET COMPLETE BIT              #
      ITEM FITFCS    U(00,51,09); #FET CODE/STATUS (BITS 0-8)    #
      ITEM FITFCSE   U(00,46,14); #FET C/S+ERROR   (BITS 0-14)   #
      ITEM FITF18    U(00,42,18); #FET C/S,ERR,LEV (BITS 0-17)   #
      ITEM FITFEOF   U(00,55,02); #FET EOF BITS                  #
      ITEM FITFEOR   U(00,55,01); #FET EOR BIT                   #
      ITEM FITFEOI   U(00,50,01); #FET EOI BIT                   #
      ITEM FITFEC    U(00,46,05); #FET ERROR CODE  (BITS 9-13)   #
      ITEM FITLVL    U(00,42,04); #LEVEL NUMBER                  #
      ITEM FITFLEV   U(00,42,04); #FET LEVEL NUMBER(BITS 14-17)  #
      ITEM FITLFN    U(00,00,42); #LOGICAL FILE NAME             #
      ITEM FITFWB    U(01,42,18); #FWA CIRCULAR BUFFER           #
      ITEM FITRDR    U(01,13,01); #READ RELEASE                  #
      ITEM FITDVT    U(01,00,12); #FET DEVICE TYPE               #
      ITEM FITDV6    U(01,00,06); #UPPER 6 BITS OF DEVICE TYPE   #
      ITEM FITASCII  U(05,36,02); #ASCII CHAR SET BITS           #
      ITEM FITLA     U(10,42,18); #LABEL ADDRESS                 #
      ITEM FITLT     U(10,36,02); #LABEL TYPE                    #
      ITEM FITULP    U(10,33,03); #USER LABEL PROCESSING OPTION  #
      ITEM FITFP     U(10,26,07); #FILE POSITION                 #
      ITEM FITLCR    U(10,24,01); #LABEL ACTION ON PD=I-O TAPE   #
      ITEM FITLBL    U(10,00,24); #LABEL LENGTH                  #
      ITEM FITLX     U(11,42,18); #LABEL EXIT ADDRESS            #
      ITEM FITFO     U(11,39,03); #FILE ORGANIZATION             #
      ITEM FITBT     U(11,36,03); #BLOCK TYPE                    #
      ITEM FITRT     U(11,32,04); #RECORD TYPE                   #
      ITEM FITVF     U(11,30,02); #VOLUME FLAG                   #
      ITEM FITCF     U(11,27,03); #CLOSE FLAG                    #
      ITEM FITOF     U(11,25,02); #OPEN FLAG                     #
      ITEM FITCM     U(11,24,01); #CONVERSION MODE               #
      ITEM FITRL     U(11,00,24); #RECORD LENGTH                 #
      ITEM FITDX     U(12,42,18); #DATA EXIT ADDRESS             #
      ITEM FITFL     U(12,00,24); #LENGTH OF F/Z RECORDS         #
      ITEM FITMRL    U(12,00,24); #MAXIMUM RECORD LENGTH         #
      ITEM FITEX     U(13,42,18); #ERROR EXIT ADDRESS            #
      ITEM FITES     U(13,33,09); #ERROR STATUS                  #
      ITEM FITIRS    U(13,33,09); #ERROR STATUS                  #
      ITEM FITSES    U(13,29,04); #SYSTEM ERROR SEVERITY         #
      ITEM FITPEF    U(13,25,01); #PARITY ERROR FLAG             #
      ITEM FITERL    U(13,15,09); #TRIVIAL ERROR LIMIT           #
      ITEM FITECT    U(13,06,09); #TRIVIAL ERROR COUNT           #
      ITEM FITEXD    U(13,05,01); #EXTENDED DIAGNOSTIC FLAG      #
      ITEM FITEFC    U(13,04,02); #ERROR FILE CONTROL            #
      ITEM FITDFC    U(13,02,02); #DAYFILE CONTROL               #
      ITEM FITSDS    U(13,02,01); #ERROR MESSAGE DISPOSITION     #
      ITEM FITWSA    U(15,42,18); #USER WORKING STORAGE ADDRESS  #
      ITEM FITORG    U(15,37,01); #OLD/NEW FO FLAG               #
      ITEM FITSPR    U(15,35,01); #SUPPRESS READ AHEAD           #
      ITEM FITSBF    U(15,34,01); #SUPPRESS BUFFER I/O FLAG      #
      ITEM FITSTFT   U(15,32,01); #SETFIT FLAG                   #
      ITEM FITBAL    U(15,31,01); #BUFFER ALLOCATED BY CRM       #
      ITEM FITEO     U(15,27,03); #ERROR OPTION                  #
      ITEM FITHL     U(15,00,24); #HEADER LENGTH RT=T            #
      ITEM FITMNR    U(15,00,24); #MINIMUM RECORD LENGTH         #
      ITEM FITHRL    U(16,42,18); #HASHING ROUTINE ADDRESS       #
      ITEM FITDP     U(16,44,07); #DATA BLOCK PADDING FACTOR     #
      ITEM FITHB     U(16,43,01); #USER HEADER OPTION            #
      ITEM FITMUL    U(16,36,06); #PADDING MULTIPLE              #
      ITEM FITMKL    U(16,33,09); #MAJOR KEY LENGTH              #
      ITEM FITPC     U(16,30,06); #PADDING CHARACTER             #
      ITEM FITCL     U(16,24,06); #COUNT FIELD LENGTH RT=T       #
      ITEM FITLL     U(16,24,06); #LENGTH FIELD LENGTH RT=D      #
      ITEM FITRMK    U(16,24,06); #RECORD MARK CHARACTER         #
      ITEM FITTL     U(16,00,24); #TRAILER LENGTH RT=T           #
      ITEM FITBFS    U(17,42,18); #CIRCULAR BUFFER SIZE          #
      ITEM FITBBH    U(17,41,01); #BUFFER CAN BE BELOW HHA       #
      ITEM FITCNF    U(17,40,01); #CONNECT FLAG                  #
      ITEM FITLP     U(17,15,24); #BCP OF LENGTH FIELD RT=D      #
      ITEM FITCP     U(17,15,24); #BCP OF COUNT FIELD RT=T       #
      ITEM FITSB     U(17,14,01); #SIGN OVER PUNCH RT=D/T        #
      ITEM FITC1     U(17,13,01); #COMP-1 BIT RT=D/T             #
      ITEM FITPD     U(17,03,03); #PROCESSING DIRECTION          #
      ITEM FITOC     U(17,01,02); #OPEN/CLOSE FLAG               #
      ITEM FITFNF    U(17,00,01); #FATAL ERROR FLAG              #
      ITEM FITRC     U(18,30,30); #RECORD COUNT                  #
      ITEM FITLOP5   U(18,25,05); #LAST OPERATION (L.O. 5 BITS)  #
      ITEM FITLOP    U(18,24,06); #LAST OPERATION                #
      ITEM FITWPN    U(18,24,01); #WRITE BIT                     #
      ITEM FITHMB    U(18,00,24); #NUMBER OF HOME BLOCKS         #
      ITEM FITPTL    U(18,00,24); #PARTIAL TRANSFER LENGTH       #
      ITEM FITWA     U(19,30,30); #WORD ADDRESS                  #
      ITEM FITBN     U(19,30,30); #BLOCK NUMBER                  #
      ITEM FITVNO    U(19,24,06); #CURRENT VOLUME NUMBER         #
      ITEM FITNL     U(19,24,06); #NO. LEVELS OF INDEX BLOCKS    #
      ITEM FITMBL    U(19,00,24); #MAXIMUM BLOCK LENGTH          #
      ITEM FITPKA    U(20,42,18); #PRIMARY KEY ADDRESS           #
      ITEM FITRB     U(20,30,12); #RECORDS PER BLOCK BT=K        #
      ITEM FITDCT    U(20,12,18); #DISPLAY TO COLLATING TABLE    #
      ITEM FITPOS    U(20,02,06); #IS POSITIONAL PARAMETER       #
      ITEM FITPM     U(20,01,01); #PROCESSING MODE               #
      ITEM FITBCK    U(20,00,01); #CKSUM BIT                     #
      ITEM FITMNB    U(20,00,24); #MINIMUM BLOCK LENGTH          #
      ITEM FITKR     U(21,48,12); #KEY VALUE REPEAT COUNT        #
      ITEM FITPNO    U(21,36,24); #MULTI-FILE POSITION NUMBER    #
      ITEM FITDKI    U(21,44,01); #DUPLICATE KEY INDICATOR       #
      ITEM FITOVF    U(21,42,02); #OVERFLOW OPTION FLAGS         #
      ITEM FITXN     U(21,00,07); #INDEX LFN                     #
      ITEM FITMFN    U(21,00,06); #MULTI-FILE NAME               #
      ITEM FITKA     U(24,42,18); #KEY ADDRESS                   #
      ITEM FITEMK    U(24,36,01); #EMBEDDED KEY FLAG             #
      ITEM FITFLM    U(24,06,30); #FILE LIMIT                    #
      ITEM FITON     U(24,04,01); #OLD/NEW FLAG                  #
      ITEM FITFPB    U(24,03,01); #FILE POSITION BIT             #
      ITEM FITFWI    U(24,02,01); #FORCED WRITE INDICATOR        #
      ITEM FITKNE    U(24,01,01); #KEY NOT EQUAL                 #
      ITEM FITNDX    U(24,00,01); #RETRIEVAL OF MDX KEY LIST-DA  #
      ITEM FITCDT    U(26,12,18); #COLLATING TO DISPLAY TABLE    #
      ITEM FITEOIWA  U(30,36,24); #WA AT EOI FO=WA               #
      ITEM FITKL     U(31,20,09); #KEY LENFTH                    #
      ITEM FITKP     U(31,16,04); #BEGINNING CHAR POS OF KEY     #
      ITEM FITRKP    U(31,12,04); #RELATIVE KEY POSITION IN RKW  #
      ITEM FITRKW    U(31,00,12); #RELATIVE KEY WORD             #
      ITEM FITCPA    U(32,42,18); #COMPRESSION RTN ADDR          #
      ITEM FITTRC    U(32,36,06); #TRACE INDEX                   #
      ITEM FITREL    U(32,33,03); #RELATIONALS                   #
      ITEM FITKT     U(32,30,03); #KEY TYPE                      #
      ITEM FITIP     U(32,23,07); #INDEX BLOCK PADDING FACTOR    #
      ITEM FITIBL    U(32,00,24); #INDEX BLOCK LENGTH            #
      ITEM FITDCA    U(33,42,18); #DECOMPRESSION RTN ADDR        #
          END 
ARRAY FET [10] S(1);
  BEGIN 
  ITEM FETWD; 
  END 
#INPUT BUFFER#
ARRAY BUFFERX [1:1] S(BFS); 
  BEGIN 
  ITEM BUFWD; 
  END 
ITEM BUFPTR I=0;  #ACCESS POINTER#
END #DARVARS# 
 CONTROL IFEQ CB5$CDCS,"CDCS1"; 
XREF BEGIN PROC DA$ARSB; PROC DA$GTSB; PROC DA$OPSB; END
 CONTROL FI;
 CONTROL IFEQ CB5$CDCS,"CDCS2"; 
XREF BEGIN PROC DE$ARSB; PROC DE$GTSB; PROC DE$OPSB; END
DEF DA$ARSB  #DE$ARSB#; 
DEF DA$GTSB  #DE$GTSB#; 
DEF DA$OPSB  #DE$OPSB#; 
 CONTROL FI;
CONTROL LIST; 
 CONTROL FI;
CONTROL EJECT;
  
# 
DEFINED VALUES FOR USE WITH DDL FIELDS
# 
#ITEM TYPE# 
DEF $GRP #0#;  #GROUP#
DEF $ELEM #1#;  #ELEMENTARY#
DEF $RGRP #2#;  #REPEATING GROUP# 
DEF $RGRP2 #3#;  #REPEATING GRP WITHIN REP GRP# 
DEF $VECT #4#; #VECTOR (OCCURING ELEM ITEM)#
DEF $VECTRGRP #5#; #VECTOR WITHIN REP GRP#
DEF $RGRPV #6#; #REP GRP VARIABLE DIMENSION#
DEF $VECTV #7#; #VECTOR OF VARIABLE DIMENSION#
# 
LEVEL NUMBER
# 
DEF $LEVEL66 #O"62"#; 
DEF $LEVEL88 #O"64"#; 
DEF $RENAMELEVEL #$LEVEL88#;
# 
USAGE 
# 
DEF $UDISP #1#; 
DEF $UCOMP #2#; 
DEF $UCOMP1 #4#;
DEF $UCOMP2 #6#;
DEF $UINDX #5#; 
DEF $UMIXGRP #7#; 
# 
CLASS 
# 
DEF $ALPHA #1#; 
DEF $NUM #2#; 
DEF $ALPHANUM #3#;
# 
ATOM TYPE 
(IN WORD 11 OF SUB ENTRY DIAGRAM) 
# 
DEF $DEPON #0#;  #DEPENDING ON NAME#
DEF $INDX #1#;  #INDEX NAME#
DEF $AKEY #2#;  #ASCENDING KEY# 
DEF $DKEY #3#;  #DESCENDING KEY#
DEF $KIEND #-1#; #END OF CHAIN# 
CONTROL EJECT;
COMMON DDLVARS; BEGIN 
  
#THE FOLLOWING DEFINITONS ARE FOR THOSE FIELDS IN THE AREA
ENTRY WHICH ARE RELEVANT TO THE DATABASE TRANSLATOR.
THE APPROPRIATE VALUES ARE MAPPED INTO THESE ITEMS BY 
THE MODULE NXTAREA
# 
ITEM
AWADCE,   #WORD ADDRESS OF DATA CONTROL ENTRY#
AORDINAL,     #ORDINAL OF CURRENT AREA ENTRY# 
ADUMMY;   #DUMMY LAST ENTRY#
# 
* 
* 
# 
#THE FOLLOWING ARE DEFINITONS FOR THOSE FIELDS IN THE RECORD
ENTRY WHICH ARE RELEVANT. 
THE APPROPRIATE VALUES ARE MAPPED INTO THESE ITEMS BY THE 
MODULE NXTREC.
# 
ITEM
RORDINAL,  #ORDINAL OF THIS ENTRY#
RNOI,  #NUMBER OF ITEMS IN THE RECORD#
RKNOTINREC,  #KEY NOT EMBEDDED IN RECORD FLAG#
RLENGTH,  #RECORD LENGTH# 
RNXTITMWA,  #NEXT ITEM WORD ADDRESS#
RSOURCELINE,  #SOURCE LINE NUMBER#
RDUMMY;  #DUMMY LAST LINE#
  
#THE FOLLOWING ARE DEFINITIONS FOR THOSE FIELDS IN THE ITEM 
SUB-ENTRY THAT ARE RELEVANT.
THE APPROPRIATE VALUES ARE MAPPED INTO THESE FIELDS BY THE
MODULE NXTITM.
# 
ITEM
IWA,  #CURRENT ITEM WORD ADDRESS# 
ITYPE,  #ITEM TYPE# 
IORDINAL,  #ORDINAL#
ILEVEL, #LEVEL NUMBER#
IPRKEY,  #PRIMARY KEY FLAG# 
IARKEY,  #ALTERNATE KEY FLAG# 
IMRKEY,  #USABLE AS MAJOR PART OF KEY (START VERB)# 
IRNRD,  #RENAMES/REDEFINES FLAG#
IPRVITMPTR,  #PREVIOUS ITEM POINTER#
INXTITMPTR,  #NEXT ITEM POINTER#
IBWP,  #BEGINING WORD POSITION# 
IBBP,  #BEGINNIG BIT POSITION#
IUSESIZE,  #CHAR SIZE FOR CHAR OR PIC ITEMS#
IPICSIZE,  #PICTURE DEFINITION SIZE#
IDPLOC,  #DEC PT LOCN (-VE MEANS TO RIGHT)# 
ISIGN,  #ITEM SIGNED FLAG#
ISIGNSEP,  #SEPARATE CHARACTER FOR SIGN FLAG# 
IUSAGE,  #USAGE CODE# 
ICLASS,  #ITEM CLASS CODE#
ISUBOCC,  #ITEM IS SUBORDINATE TO AN OCCURS#
IOCCPTR,  #POINTER TO OCCURRENCE DATA#
IDOMPTR,  #DOMINANT POINTER (SET ONLY IF REPEATING GRP)#
IDOMWA,  #DOMINANT WORD ADR (SET FOR ALL GRPS)# 
ISOURCELINE,  #SOURCE LINE NUMBER#
IRDEF,  #REDEFINED OR SUBORDINATE TO REDEFINITION#
ISYNC,  #ITEM IS SYNC#
ISYNCL,  #ITEM IS SYNC LEFT#
IJUST,  #ITEM IS JUSTIFIED# 
IOCCRRFLG,  #1 IF -OCCURS- PACKET READ INTO CORE LAST, 2 IF -RENAMES/ 
             REDEFINES- PACKET READ INTO CORE LAST, 0 IF NEITHER READ 
             INTO CORE# 
IOCCWA,  #SS ADDRESS WITHIN ITEM ENTRY -OCCURS- PACKET# 
IRNRDWA,  #SS ADDRESS WITHIN ITEM ENTRY -RENAMES/REDEFINES- PACKET# 
# 
THE FOLLOWING GROUP OF FIELDS RELATE TO RENAMES 
# 
ISTRENAM,  #DNAT OF START RENAME ITEM#
IENRENAM,  #DNAT OF END RENAME ITEM#
IRNQUAL,  #INDICATES NEXT ATOM IS QUALIFIER#
# 
THE FOLLOWING FIELD RELATES TO REDEFINES
# 
IREDEF,  #DNAT OF REDEFINED ITEM# 
# 
THE FOLLOWING GROUP OF FIELDS RELATE TO OCCURS
# 
IDEP,  #OCCURS DEPENDING UPON FLAG# 
IDEPNAME,  #DNAT OF OBJECT OF DEPENDING UPON CLAUSE#
IMINOCC,  #MINIMUM NUMBER OF OCCURRENCES# 
IMAXOCC,  #MAXIMUM NUMBER OF OCCURRENCES# 
# 
THE FOLLOWING GROUP OF FIELDS RELATE TO AN INDEX OR KEY CLAUSE. 
THESE FIELDS WILL BE SET INITIALLY BY NXTKI (WHICH IS CALLED FROM 
WITHIN NXTITM). IF IKINEXT IS TRUE, FURTHER DIRECT CALLS TO 
NXTKI WILL SET THESE FIELDS TO THE NEXT KEY OR INDEX ATOM.
**** N.B. KEY ATOMS PRECEDE INDEX ATOMS 
# 
IKITYPE,   #ATOM TYPE, DEFS FOR VALUES ARE $INDX, $AKEY,$DKEY#
IKINXT,  #NZ IF MORE ATOMS# 
IKIPTR,  #INDEX NAME POINTER# 
IKWA,  #KEY WORD ADDRESS# 
IKIQUAL, #SHOWS IF NEXT ATOMS IS QUALIFIER# 
IDUMMY;  #DUMMY LAST ENTRY# 
  
#THE FOLLOWING ARE DEFINITIONS OF THOSE FIELDS IN THE 
DATA CONTROL ENTRY WHICH ARE RELEVANT.
THE APPROPRIATE VALUES ARE MAPPED INTO THESE FIELDS BY THE
MODULE NXTAREA. 
# 
ITEM
DKPTR,  #KEY POINTER# 
DFITMBL,  #FIT BLOCK CONTAINS MAX#
DFITMNB,  #FIT BLOCK CONTAINS MIN#
DFITLT,  #FIT LABEL RECORDS#
DFITFP,  #FIT MULTIFILE POSITION# 
DFITFO,  #FIT FILE ORGANISATION#
DFITPM,  #FIT PROCESSING MODE#
DFITMRL,  #FIT REC CONTAINS MAX#
DFITMNR,  #FIT REC CONTAINS MIN#
# 
THE FOLLOWING GROUP OF FIELDS RELATE TO RECORD KEYS.
THE FIELDS ARE SETUP INITIALLY BY NXTRKEY (WHICH IS CALLED
FROM WITHIN NXTAREA). IF DRKNXT IS SET THEN FURTHER DIRECT
CALLS  TO NXTRKEY WILL SET THESE FIELDS TO THE NXT KEY ATOM.
# 
DRKWA,  #RECORD KEY WORD ADDR#
DRKTYPE,  #KEY TYPE#
DRKSZRGRP,  #SIZE OF REPEATING GROUP# 
DRKMAXOCC,  #KEY MAX NO OF OCCURRENCES# 
DRKBWP,  #BEGINNING WORD POSITION#
DRKBCP,  #BEGINNING CHAR POSITION#
DRKSIZE,  #KEY SIZE#
DRKNXTPTR,  #NEXT RECORD KEY POINTER# 
DRKIMBED,  #IMBEDDED KEY FLAG#
DRKPRIMARY,  #PRIMARY KEY FLAG# 
DRKNXT,   #MORE KEY ATOMS FLAG# 
DRKNAMLEN,  #LENGTH IN CHARACTERS OF NON-IMBEDDED KEY NAME# 
DRKOMIT,      #ALTERNATE KEY OMIT FLAG# 
DDUMMY;  #DUMMY LAST ENTRY# 
END #DDLVARS# 
#TEMPORARY DEFS FOR SETFIELD AND GETFIELD#
ITEM T; #TEMPORARY VARIABLE FOR SETFIELD(GETFIELD)# 
DEF $S(P1,P2,P3,P4) #SETFIELD(P1,P2,P3,P4)#;
DEF $G(P1,P2,P3) #GETQUICK(P1,P2,P3)# ; 
CONTROL EJECT;
DEF END$STATUS #1#;  #VALUE USED WITH MODULE FLAGS# 
DEF DNTFIRST #15#;  #1ST DNT ENTRY FOLLOWING SPECIAL REGISTERS# 
COMMON GLOBVARS; BEGIN
  
  
# 
GLOBAL VARIABLES
# 
ITEM  DNAT$PTR;              #CURRENT DNAT PTR# 
ITEM  AUXT$PTR;              #CURRENT AUXTABLE POINTER# 
ITEM FNAT$PTR;  #POINTER TO CURRENT FNAT ITEM#
ITEM  CTXT$PTR;              #CTEXT POINTER#
ITEM SAT$PTR I;              #POINTER TO CURRENT SAT ENTRY# 
ITEM SSNUMAREAS I;           #NUMBER OF AREAS SELECTED# 
ITEM  STARTDNAT;             #AREA INITIAL DNAT POINTER#
ITEM  ENDDNAT;               #AREA FINAL DNAT POINTER#
ITEM  SELAPTR;               #WORD ADDR OF SEL AREA IN AREA LIST# 
# 
MODULE CONTROL FLAGS - USED WITH NXT*** PROCEDURES# 
ITEM  AREA$F;                #AREA# 
ITEM  REL$F;                 #RELATION# 
ITEM  REC$F;                 #RECORD# 
ITEM  ITM$F;                 #ITEM# 
END #GLOBVARS#
 CONTROL IFNQ CB5$CDCS,"NO";
CONTROL EJECT;
DEF ITMASIZE #25#;  #LENGTH OF ITEM ENTRY#
 CONTROL IFEQ CB5$CDCS,"CDCS1"; 
DEF ITMFIXSIZE #8#;          #SIZE OF FIXED PORTION OF ITEM ENTRY#
 CONTROL FI;
 CONTROL IFEQ CB5$CDCS,"CDCS2"; 
DEF ITMFIXSIZE #6#;          #SIZE OF FIXED PORTION OF ITEM ENTRY#
 CONTROL FI;
COMMON IENTVARS; BEGIN
ARRAY ITMA [1:1] S(ITMASIZE);  #FIXED PART OF ITEM ENTRY# 
  BEGIN 
         CONTROL IFEQ CB5$CDCS,"CDCS1"; 
          ITEM SBITMENTRY U(0,0,3);       # 3 = ITEM                   #
          ITEM SBITMTYPE U(0,3,3);        # 0= GROUP ITEM              #
                                          # 1 = ELEMENTRY ITEM         #
                                          # 2 = REPEATING GROUP        #
                                          # 3 = REPEATING GROUP WITHIN #
                                          #        A REPEATING GROUP   #
                                          # 4 = VECTOR                 #
                                          # 5 = VECTOR WITHIN A REPEAT-#
                                          #     ING GROUP              #
                                          # 6 = REPEATING GROUP OF     #
                                          #     VARIABLE DIMENSION     #
          ITEM SBITMORDINAL U(0,6,10);    # ITEM ORDINAL NUMBER        #
          ITEM SBITMLEVEL U(0,16,6);      # ITEM LEVEL NUMBER          #
                                          # 66 = 62 OCTAL              #
                                          # 88 = 64 OCTAL              #
          ITEM SBITMNELENW U(0,22,3);     # LENGTH OF ITEM NAME IN WRDS#
          ITEM SBITMNMELENC U(0,25,5);    # LENGTH OF ITEM NAME IN CHAR#
          ITEM SBITMALIASLW U(0,30,3);    # LENGTH OF ALIAS NAME IN WRD#
          ITEM SBITMALIASLC U(0,33,5);    # LENGTH OF ALIAS NAME IN    #
                                          # CHARACTERS                 #
          ITEM SBITMIDNTICL B(0,38,1);    # IDENTICAL SCHEMA/SUB-SCHEMA#
                                          # ITEM DESCRIPTION           #
          ITEM SBITMSAMLOC B(0,39,1);     # THE ITEM STARTS IN THE SAME#
                                          # LOCATION WITHIN THE RECORD #
                                          # IN BOTH THE SCHEMA AND     #
                                          # SUB-SCHEMA                 #
          ITEM SBITMKEYFLG B(0,40,1);     # ITEM IS DEFINED AS A PRIM- #
                                          # ARY KEY                    #
          ITEM SBITMALTKEYF B(0,41,1);    # ITEM IS DEFINED AS AN      #
                                          # ALTERNATE KEY FIELD        #
          ITEM SBITMRNRDPTR U(0,42,4);    # IF LEVEL 88 FIELD IS AN OFF#
                                          # SET POINTER TO THE RENAME  #
                                          # ENTRY ELSE ITS AN OFFSET   #
                                          # POINTER TO THE REDEFINE    #
                                          # ENTRY                      #
          ITEM SBITMPRIORP U(0,46,7);     # OFFSET POINTER TO PREVIOUS #
                                          # ITEM ENTRY                 #
          ITEM SBITMNEXTP  U(0,53,7);     # OFFSET POINTER TO THE NEXT #
                                          # ITEM ENTRY                 #
          ITEM SBITMDBCLASS U(1,0,4);     # TO BE DEFINED LATER        #
          ITEM SBITMBWP U(1,4,18);        # RELATIVE WORD POISTION OF  #
                                          # THE ITEM WITHIN THE RECORD #
          ITEM SBITMBBP U(1,22,6);        # RELATIVE BIT POSITION OF   #
                                          # THE ITEM WITHIN THE RECORD #
          ITEM SBITMUSESIZE U(1,28,18); #SIZE OF THE ITEM AS IT RE-#
                                          # SIDES IN THE DATA-BASE     #
          ITEM SBITMPICINFO U(1,46,14); #PICTURE INFORMATION# 
          ITEM SBITMPTINFO U(1,46,7);   #DECIMAL POINT INFORMATION# 
          ITEM SBITMPTLOC U(1,46,5);    #LOCATION OF DECIMAL POINT# 
          ITEM SBITMPTINFC U(1,52,2);   #DEC PT. INFORMATION# 
                                          # FOR CONDITION-NAME.        #
          ITEM SBITMACTLPT U(1,51,1);   #FALSE = ASSUMED DECIMAL PT#
                                          # TRUE = ACTUAL DECIMAL POINT#
          ITEM SBITMLFTPT U(1,52,1);    #FALSE = DECIMAL POINT IS TO# 
                                          #        THE RIGHT           #
                                          # TRUE = DECIMAL POINT IS TO #
                                          #        THE LEFT            #
          ITEM SBITMSGNINFO U(1,52,7);  #SIGN INFORMATION#
          ITEM SBITMSIGNLOC U(1,53,5);  #LOCATION OF SIGN, NUMBER OF# 
                                          # DIGITS FROM THE RIGHT      #
          ITEM SBITMSEPOP B(1,58,1);    #FALSE = OVERPUNCH SIGN#
                                          # TRUE = SEPARATE SIGN       #
          ITEM SBITMSIGNF U(1,59,1);    #TRUE = THE PRESENCE OF A#
                                          # SIGN                       #
          ITEM SBITMIPICSIZ U(2,0,15);    # PICTURE SIZE INCLUDING     #
                                          # INSERTS                    #
          ITEM SBITMXPICSIZ U(2,15,15);   # PICTURE SIZE EXCLUDING     #
                                          # INSERTS                    #
          ITEM SBITMNBINSRT U(2,30,6);    # NUMBER OF INSERT AND EDIT  #
                                          # CHARACTERS SPECIFIED IN THE#
                                          # PICTURE                    #
          ITEM SBITMUSAGE U(2,36,3);      # 0 = UNSPECIFIED            #
                                          # 1 = DISPLAY                #
                                          # 2 = COMPUTATIONAL          #
                                          # 3 = NOT USED               #
                                          # 4 = COMPUTATIONAL-1        #
                                          # 5 = INDEX                  #
                                          # 6 = COMPUTATIONAL-2        #
                                          # 7 = MIXED (GROUP)          #
          ITEM SBITMCLASS U(2,39,3);      # 0 = UNSPECIFIED            #
                                          # 1 = ALPHABETIC             #
                                          # 2 = NUMERIC                #
                                          # 3 = ALPHANUMERIC (AN)      #
                                          # 4 = ALPHANUMERIC (EDITING) #
                                          # 5 = PICTURE IS 5           #
                                          # 6 = NUMERIC EDITING        #
                                          # 7 = MIXED GROUP            #
          ITEM SBITMINOCCUR B(2,42,1);    # TRUE = SUBJECT ITEM IS A   #
                                          #        SUBORDINATE TO AN   #
                                          #        ENTRY CONTAIN OCCURS#
          ITEM SBITMOCCURP U(2,43,7);     # OFFSET POINTER TO THE      #
                                          # OCCURS ENTRY               #
          ITEM SBITMVALLITP U(2,53,7);    # OFFSET POINTER TO THE LITER#
                                          # ALS SPECIFIED IN THE LEVEL #
                                          # 88 VALUE CLAUSE            #
          ITEM SBITMSAMENME U(3,0,15);    # WORD ADDRESS OF AN ENTRY   #
                                          # WITH THE SAME NAME         #
          ITEM SBITMSYNADDR U(3,15,15);   # WORD ADDRESS OF AN ENTRY   #
                                          # WITH THE SAME HASH VALUE   #
          ITEM SBITMDOMPTR U(3,30,15);    # OFFSET POINTER TO THE      #
                                          # DOMINANT ITEM (QU V3 STAND #
                                          # ALONE SUB-SCHEMA. ORDINAL  #
                                          # NUMBER OF THE DOMINANT ITEM#
                                          # FOR DBMS                   #
          ITEM SBITMHIGHVAL B(3,45,1);    # TRUE = HIGH IS SPECIFIED   #
          ITEM SBITMLOWVAL B(3,46,1);     # TRUE = LOW IS SPECIFIED    #
          ITEM SBITMSPCEVAL B(3,47,1);    # TRUE = SPACE IS SPECIFIED  #
          ITEM SBITMZEROVAL B(3,48,1);    # TRUE = ZERO IS SPECIFIED   #
          ITEM SBITMNEGVAL B(3,49,1);     # TRUE = NEGATIVE IS SPECIFID#
          ITEM SBITMWRDADJ B(3,50,1);     # TRUE = DATA TYPE IS WORD   #
                                          #        ALIGNED             #
          ITEM SBITMEDITPTR U(3,51,7);    # OFFSET POINTER TO THE EDIT #
                                          # MURAL ENTRY                #
          ITEM SBITMEDITLEN U(3,58,2);    # NUMBER OF WORDS IN THE     #
                                          # EDIT MURAL                 #
          ITEM SBITMENTRYL  U(4,0,7);     # NUMBER OF WORDS OF THE ITEM#
                                          # ENTRY IN THE SUB-SCHEMA    #
          ITEM SBITMALIASP U(4,7,7);      # OFFSET POINTER TO THE ALIAS#
                                          # NAME                       #
          ITEM SBITMDOMADR U(4,14,15);    # WORD ADDRESS OF THE DOMIN- #
                                          # ANT ITEM                   #
          ITEM SBITMSRCLNEN U(4,29,12);   #CONTAINS SOURCE LINE#        000201
                                          # NUMBER OF THE ITEM DEFINIT-#
                                          # ION ( IN BINARY ).         #
          ITEM SBITMREDEFFG B(4,55,1);    # TRUE = REDEFINER OR SUBORD-#
                                          #        INATES TO THE       #
                                          #        REDEFINER           #
          ITEM SBITMBWZ B(4,56,1);        # TRUE = BWZ IS SPECIFIED    #
          ITEM SBITMSYNJINF U(4,57,3);    # SYNC,JUST INFORMATION      #
          ITEM SBITMSYNC B(4,57,1);       # TRUE = SYNCHRONIZED IS     #
                                          #        SPECIFIED           #
          ITEM SBITMSYNCLFT B(4,58,1);    # TRUE = SYNCRONIZED LEFT    #
          ITEM SBITMJUST B(4,59,1);       # TRUE = JUSTIFIED IS SPECIFI#
          ITEM SBITMNAME U(5,0,60);       # ITEM NAME, 1-30 CHARACTERS #
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBITMNAME30 C(5,0,30);     # 30 CHARACTER ITEM NAME     #
         CONTROL FI;
         CONTROL IFEQ CB5$CDCS,"CDCS2"; 
          ITEM SBITMENTRY U(0,0,3);       # 3 = ITEM                   #
          ITEM SBITMTYPE U(0,3,3);        # 0 = GROUP ITEM             #
                                          # 1 = ELEMENTRY ITEM         #
                                          # 2 = REPEATING GROUP        #
                                          # 3 = REPEATING GROUP WITHIN #
                                          #        A REPEATING GROUP   #
                                          # 4 = VECTOR                 #
                                          # 5 = VECTOR WITHIN A REPEAT-#
                                          #     ING GROUP              #
                                          # 6 = REPEATING GROUP OF     #
                                          #     VARIABLE DIMENSION     #
                                          # 7 = VECTOR OF VARIABLE DIM.#
          ITEM SBITMORDINAL U(0,6,15);    # ITEM ORDINAL NUMBER        #
          ITEM SBITMLEVEL U(0,21,6);      # ITEM LEVEL NUMBER          #
                                          # 66 = 62 OCTAL              #
                                          # 88 = 64 OCTAL              #
          ITEM SBITMNELENW U(0,27,3);     # LENGTH OF ITEM NAME IN WRDS#
          ITEM SBITMNMELENC U(0,30,6);    # LENGTH OF ITEM NAME IN CHAR#
          ITEM SBITMALIASLW U(0,36,3);    # LENGTH OF ALIAS NAME IN WRD#
          ITEM SBITMALIASLC U(0,39,6);    # LENGTH OF ALIAS NAME IN    #
                                          # CHARACTERS                 #
          ITEM SBITMDOMORD U(0,45,15);    # ORDINAL NUMBER OF DOMINANT #
                                          # ITEM.                      #
          ITEM SBITMDBCLASS U(1,0,6);     # 0 - ALPHANUMERIC           #
                                          # 1 - ALPHABETIC             #
                                          # 3 - DISPLAY NUMERIC        #
                                          # 4 - DISPLAY FIXED POINT    #
                                          # 10 - SIGNED BINARY INTEGER #
                                          # 12 - UNNORM. FLOATING PT.  #
                                          # 13 - NORM. FLOATING PT.    #
                                          # 14 - DOUBLE PRECISION      #
          ITEM SBITMBWP U(1,6,18);        # RELATIVE WORD POISTION OF  #
                                          # THE ITEM WITHIN THE RECORD #
          ITEM SBITMBBP U(1,24,6);        # RELATIVE BIT POSITION OF   #
                                          # THE ITEM WITHIN THE RECORD #
          ITEM SBITMPRIORP U(1,30,12);    # OFFSET POINTER TO PREVIOUS #
                                          # ITEM ENTRY                 #
          ITEM SBITMNEXTP  U(1,42,12);    # OFFSET POINTER TO THE NEXT #
                                          # ITEM ENTRY                 #
          ITEM SBITMIDNTICL B(1,54,1);    # IDENTICAL SCHEMA/SUB-SCHEMA#
                                          # ITEM DESCRIPTION           #
          ITEM SBITMSAMLOC B(1,55,1);     # THE ITEM STARTS IN THE SAME#
                                          # LOCATION WITHIN THE RECORD #
                                          # IN BOTH THE SCHEMA AND     #
                                          # SUB-SCHEMA                 #
          ITEM SBITMRLDNFLG B(1,56,1);   # TRUE - SUBJECT ITEM IS     # 
                                          #        TO BE COMPARED WITH #
                                          #        A DATA-NAME IN A    #
                                          #        RESTRICT ENTRY.     #
          ITEM SBITMKEYINFO U(1,57,3);    # KEY INFORMATION.           #
          ITEM SBITMKEYFLG B(1,57,1);     # ITEM IS DEFINED AS A PRIM- #
                                          # ARY KEY                    #
          ITEM SBITMALTKEYF B(1,58,1);    # TRUE = ITEM IS DEFINED AS  #
                                          #        AN ALTERNATE KEY.   #
          ITEM SBITMMAJKEYF B(1,59,1);    # TRUE= ITEM IS DEFINED AS A #
                                          #        MAJOR PART OF A KEY #
          ITEM SBITMNAMEPTR U(2,0,6);     # OFFSET POINTER TO THE ITEM #
                                          # NAME.                      #
          ITEM SBITMIPICSIZ U(2,6,15);    # PICTURE SIZE INCLUDING     #
                                          # INSERTS                    #
          ITEM SBITMPICINFO U(2,21,9);    # PICTURE INFORMATION        #
          ITEM SBITMPTLOC U(2,21,6);      # LOCATION OF DECIMAL POINT  #
                                          # FOR CONDITION-NAME.        #
          ITEM SBITMPTINFO U(2,21,8);     # DEC. PT. INFOMATION        #
          ITEM SBITMACTLPT U(2,27,1);     # FALSE = ASSUMED DECIMAL PT #
                                          # TRUE = ACTUAL DECIMAL POINT#
          ITEM SBITMLFTPT U(2,28,1);      # FALSE = DECIMAL POINT IS TO#
                                          #        THE RIGHT           #
                                          # TRUE = DECIMAL POINT IS TO #
                                          #        THE LEFT            #
          ITEM SBITMSIGNFO U(2,29,1);     # FIELD THAT ENCOMPASSES SIGN#
          ITEM SBITMSIGNF B(2,29,1);      # TRUE = THE PRESENCE OF A   #
                                          # SIGN                       #
          ITEM SBITMCLASS U(2,30,3);      # 0 = UNSPECIFIED            #
                                          # 1 = ALPHABETIC             #
                                          # 2 = NUMERIC                #
                                          # 3 = ALPHANUMERIC (AN)      #
                                          # 4 = ALPHANUMERIC (EDITING) #
                                          # 5 = PICTURE IS 5           #
                                          # 6 = NUMERIC EDITING        #
                                          # 7 = MIXED GROUP            #
          ITEM SBITMOCCURP U(2,33,9);     # OFFSET POINTER TO THE      #
                                          # OCCURS ENTRY               #
          ITEM SBITMVALLITP U(2,42,6);    # OFFSET POINTER TO THE LITER#
                                          # ALS SPECIFIED IN THE LEVEL #
                                          # 88 VALUE CLAUSE            #
          ITEM SBITMRNRDPTR U(2,48,6);    # IF LEVEL 66,FIELD IS AN OFF#
                                          # SET POINTER TO THE RENAME  #
                                          # ENTRY ELSE ITS AN OFFSET   #
                                          # POINTER TO THE REDEFINE    #
                                          # ENTRY                      #
          ITEM SBITMALIASP U(2,54,6);     # OFFSET POINTER TO THE ALIAS#
                                          # NAME                       #
          ITEM SBITMUSAGE U(3,0,3);       # 0 = UNSPECIFIED            #
                                          # 1 = DISPLAY                #
                                          # 2 = COMPUTATIONAL          #
                                          # 3 = NOT USED               #
                                          # 4 = COMPUTATIONAL-1        #
                                          # 5 = INDEX                  #
                                          # 6 = COMPUTATIONAL-2        #
                                          # 7 = MIXED (GROUP)          #
          ITEM SBITMUSESIZE U(3,3,15);    # SIZE OF THE ITEM AS IT RE- #
                                          # SIDES IN THE DATA-BASE     #
          ITEM SBITMENTRYL  U(3,18,12);   # NUMBER OF WORDS OF THE ITEM#
                                          # ENTRY IN THE SUB-SCHEMA    #
          ITEM SBITMPRIVPTR U(3,30,12);   # OFFSET POINTER TO THE ACC- #
                                          # -ESS-CONTROL LOCK LIST.    #
          ITEM SBITMDOMADR U(3,42,18);    # WORD ADDRESS OF THE DOMIN- #
                                          # ANT ITEM                   #
          ITEM SBITMSAMENME U(4,0,18);    # WORD ADDRESS OF AN ENTRY   #
                                          # WITH THE SAME NAME - FOR   #
                                          # INTERNAL PROCEESING ONLY.  #
          ITEM SBITMSCPTR U(4,0,18);      # WORD ADDRESS ,RELATIVE TO  #
                                          # START OF SCHEMA RECORD     #
                                          # ENTRY, OF SCHEMA ITEM ENTRY#
                                          # CORRESPONDING TO THIS ITEM #
          ITEM SBITMSYNADDR U(4,18,18);   # WORD ADDRESS OF AN ENTRY   #
                                          # WITH THE SAME HASH VALUE - #
                                          # FOR INTERNAL PROCESS. ONLY.#
          ITEM SBITMREDEFFG B(4,36,1);    # TRUE = REDEFINER OR SUBORD-#
                                          #        INATE TO THE        #
                                          #        REDEFINER           #
          ITEM SBITMSYNJINF U(4,37,3);    # SYNC,JUST INFORMATION      #
          ITEM SBITMSYNC B(4,37,1);       # TRUE = SYNCHRONIZED IS     #
                                          #        SPECIFIED           #
          ITEM SBITMSYNCLFT B(4,38,1);    # TRUE = SYNCRONIZED LEFT    #
          ITEM SBITMJUST B(4,39,1);       # TRUE = JUSTIFIED IS SPEC.  #
          ITEM SBITMNEWGRP B(4,40,1);     # TRUE = ITEM ENTRY IS A NEW #
                                          # GROUP (SUB-SCHEMA ONLY).   #
          ITEM SBITMSRCLNEN U(4,42,18);   # CONTAINS THE SOURCE LINE   #
                                          # NUMBER OF THE ITEM DEFINIT-#
                                          # ION ( IN BINARY ).         #
          ITEM SBITMBLOCKSZ U(5,0,18);    # BLOCK MAPPING SIZE IN CHARS#
          ITEM SBITMNXSSWA U(5,18,18);    # WORD ADDRESS OF NEXT SUB-  #
                                          # SCHEMA ITEM FOLLOWING THIS #
                                          # BLOCK.                     #
          ITEM SBITMSCWA U(5,36,18);      # SCHEMA WORD ADDRESS OF     #
                                          # THE SCHEMA ITEM THAT CORR- #
                                          # ESPONDS TO THIS SUBSCH ITEM#
          ITEM SBITMNXSCPTR U(5,42,18);   # WORD ADDRESS,RELATIVE TO   #
                                          # START OF SCHEMA RECORD     #
                                          # ENTRY,OF NEXT SCHEMA ITEM  #
                                          # FOLLOWING THIS BLOCK.      #
          ITEM SBITMBCKWORD U(5,0,60);    # BLOCK MAPPING WORD         #
         CONTROL FI;
  END 
BASED ARRAY ITMBA [1:1] S(1); #VARIABLE PART# 
  BEGIN 
         CONTROL IFEQ CB5$CDCS,"CDCS1"; 
          ITEM SBITMALIASNM U(0,0,60);    # ALIAS NAME, 1-30 CHARACTERS#
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBITMALIAS30 C(0,0,30);    # 30 CHARACTER ITEM ALIAS NME#
          ITEM SBITMRDRNI B(0,0,1);       # FALSE = REDFINE IS SPECIFD #
                                          # TRUE = RENAME IS SPECIFIED #
          ITEM SBITMLRNTHRU B(0,2,1);     # TRUE = THRU IS SPECIFIED   #
          ITEM SBITMRRNTHRU B(0,32,1);    #                            #
          ITEM SBITMLRNQALF B(0,3,1);     # TRUE = FOLLOWING ENTRY IS A#
          ITEM SBITMRRNQALF B(0,33,1);    #        DATA NAME QUALIFIER #
                                          #       (RENAMES AND REDEFNE)#
          ITEM SBITMLRNNXT B(0,4,1);      # TRUE = ANOTHER ENTRY FOLLOW#
          ITEM SBITMRRNNXT B(0,34,1);     #                            #
          ITEM SBITMLRNDNAD U(0,5,15);    # WORD ADDRESS OF THE DATA   #
          ITEM SBITMRRNDNAD U(0,35,15);   # NAME OR QUALIFIER ENTRY    #
          ITEM SBITMLRNOD U(0,20,10);     # ORDINAL NUMBER OF THE DATA #
          ITEM SBITMRRNOD U(0,50,10);     # NAME OR QUALIFIER ENTRY    #
          ITEM SBITMLITINFO U(0,0,60); # LITERAL INFORMATION--L88 ENT. #
          ITEM SBITMLLITTYP B(0,0,1);     # FALSE = NUMERIC LITERAL    #
          ITEM SBITMRLITTYP B(0,30,1);    # TRUE = NON-NUMERIC LITERAL #
          ITEM SBITMLNXTLIT B(0,1,1);     # TRUE = ANOTHER LITERAL FOLL#
                                          #       OWS IN THE SAME WORD #
          ITEM SBITMRNXTLIT B(0,31,1);    # TRUE = ANOTHER LITERAL FOLL#
                                          #       OS IN THE NEXT WORD  #
          ITEM SBITMLLITTHU B(0,2,1);     # TRUE = SUBJECT LITERAL IS  #
          ITEM SBITMRLITTHU B(0,32,1);    #       PART OF A THRU       #
          ITEM SBITMLLTWLEN U(0,3,5);     # WORD LENGTH OF LITERAL     #
          ITEM SBITMRLTWLEN U(0,33,5);    # L = LEFT     R = RIGHT     #
          ITEM SBITMLLITLEN U(0,8,8);     # CHARACTER LENGTH OF LITERAL#
          ITEM SBITMRLITLEN U(0,38,8);    # L = LEFT   R = RIGHT       #
          ITEM SBITMLLITSGN U(0,16,2);    # 0 = UNSIGNED LITERAL       #
          ITEM SBITMMLITSGN U(0,46,2);    # 1 = POSITIVE SIGNED LITERAL#
                                          # 2 = NEGATIVE SIGNED LITERAL#
          ITEM SBITMLPTLOC U(0,18,5);     # POINT LOCATION NUMBER OF   #
          ITEM SBITMRPTLOC U(0,48,5);     # CHARACTERS FROM RIGHT MOST #
                                          # POSITION                   #
          ITEM SBITMLLITPTR U(0,23,7);    # OFFSET POINTER TO THE      #
          ITEM SBITMRLITPTR U(0,53,7);    # LITERAL                    #
          ITEM SBITMLITERAL U(0,0,60);    # VALUE LITERAL, 1-255 CHAR- #
                                          # ACTERS, LEFT JUSTIFIED WITH#
                                          # ZERO FILL                  #
          ITEM SBITMDEPNDON B(0,0,1);     # TRUE = DEPENDING ON NAME IS#
                                          #        SPECIFIED           #
          ITEM SBITMLOWBNDS U(0,1,20);    # LOW INTEGER VALUE SPECIFIED#
                                          # IN THE OCCURS CLAUSE       #
          ITEM SBITMHIBNDS U(0,21,20);    # HIGH INTEGER VALUE SPECIFID#
                                          # IN THE OCCURS CLAUSE       #
          ITEM SBITMOCCKNXT B(0,59,1);    # TRUE = KEY NAME OR INDEX   #
                                          #        NAME ENTRY FOLLOWS  #
                                          #        IN THE NEXT WORD    #
          ITEM SBITMOCCWRD U(0,0,60);     # USED ALONG WITH THE BEAD   #
                                          # FUNCTION TO STORE THE 30   #
                                          # BIT KEY/INDEX ENTRIES.     #
          ITEM SBITMOCCLTYP U(0,1,2);     # O = DEPENDING ON NAME IS   #
                                          #     SPECIFIED              #
                                          # 1 = INDEX NAME IS SPECIFIED#
                                          # 2 = ASCENDING KEY IS       #
                                          #     SPECIFIED              #
                                          # 3 = DESCENDING KEY IS      #
                                          #     SPECIFIED              #
          ITEM SBITMOCCRTYP U(0,31,2);    #                            #
          ITEM SBITMOCCLQAL B(0,3,1);     # TRUE = QUALIFIER WORD      #
                                          # ADDRESS                    #
          ITEM SBITMOCCRQAL B(0,33,1);    #                            #
          ITEM SBITMOCCLNXT B(0,4,1);     # TRUE = ANOTHER ENTRY FOLLOW#
          ITEM SBITMOCCRNXT B(0,34,1);    #                            #
          ITEM SBITMOCCLDNA U(0,5,15);    # IF DEPENDING-ON NAME OR KEY#
                                          # NAME IS SPECIFIED THIS     #
                                          # FIELD CONTAINS THE WORD    #
                                          # ADDRESS OF WHERE THE THE   #
                                          # ITEM IS DEFINED            #
          ITEM SBITMOCCRDNA U(0,35,15);   #                            #
          ITEM SBITMOCCLINP U(0,5,10);    # OFFSET POINTER TO INDEX NME#
          ITEM SBITMOCCRINP U(0,35,10);   #                            #
          ITEM SBITMOCCLINL U(0,15,5);   # LENGTH IN CHARACTERS OF THE# 
                                          # INDEX NAME                 #
          ITEM SBITMOCCRINL U(0,45,5);    #                            #
          ITEM SBITMOCCLDNO U(0,20,10);   # ORDINAL OF DEPENDING ON    #
                                          # NAME OR KEY NAME SPECIFIED #
                                          # IN THE OCCURS CLAUSE       #
          ITEM SBITMOCCRDNO U(0,50,10);   #                            #
          ITEM SBITMINDEXNM U(0,0,60);    # INDEX NAME SPECIFIED IN THE#
                                          # OCCURS CLAUSE. 1-30 CHARS  #
                                          # LEFT JUSTIFIED WITH ZERO FI#
                                          # L                          #
          ITEM SBITMEDITMRL U(0,0,60);    # EDIT MURAL OF PICTURE      #
         CONTROL FI;
         CONTROL IFEQ CB5$CDCS,"CDCS2"; 
          ITEM SBITMNAME U(0,0,60);       # ITEM NAME, 1-30 CHARACTERS #
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBITMNAME30 C(0,0,30);     # 30 CHARACTER ITEM NAME     #
          ITEM SBITMALIASNM U(0,0,60);    # ALIAS NAME, 1-30 CHARACTERS#
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBITMALIAS30 C(0,0,30);    # 30 CHARACTER ITEM ALIAS NME#
          ITEM SBITMRDRNI B(0,0,1);       # FALSE = REDFINE IS SPECIFD #
                                          # TRUE = RENAME IS SPECIFIED #
          ITEM SBITMLRNTHRU B(0,3,1);     # TRUE = THRU IS SPECIFIED   #
          ITEM SBITMLRNNXT B(0,4,1);      # TRUE = ANOTHER ENTRY FOLLOW#
          ITEM SBITMLRNQALF B(0,5,1);     # TRUE = FOLLOWING ENTRY IS A#
                                          #        DATA NAME QUALIFIER #
          ITEM SBITMLRNDNAD U(0,6,18);    # WORD ADDRESS OF THE DATA   #
                                          # ITEM.                      #
          ITEM SBITMRRNTHRU B(0,33,1);    #                            #
          ITEM SBITMRRNNXT B(0,34,1);     #                            #
          ITEM SBITMRRNQALF B(0,35,1);    #                            #
          ITEM SBITMRRNDNAD U(0,36,18);   #                            #
          ITEM SBITMLITINFO U(0,0,60); # LITERAL INFORMATION--L88 ENT. #
          ITEM SBITMLLITTYP B(0,0,1);     # FALSE = NUMERIC LITERAL    #
          ITEM SBITMLNXTLIT B(0,1,1);     # TRUE = ANOTHER LITERAL FOLL#
                                          #       OWS IN THE SAME WORD #
          ITEM SBITMLLITTHU B(0,2,1);     # TRUE = SUBJECT LITERAL IS  #
          ITEM SBITMLLTWLEN U(0,3,6);     # WORD LENGTH OF LITERAL     #
          ITEM SBITMLLITLEN U(0,9,9);     # CHARACTER LENGTH OF LITERAL#
          ITEM SBITMLLITSGN U(0,18,3);    # 0 = UNSIGNED LITERAL       #
          ITEM SBITMLPTLOC U(0,21,6);     # POINT LOCATION NUMBER OF   #
          ITEM SBITMLLITPTR U(0,27,15);   # OFFSET POINTER TO THE      #
                                          # LITERAL.                   #
          ITEM SBITMLITERAL U(0,0,60);    # VALUE LITERAL, 1-255 CHAR- #
                                          # ACTERS, LEFT JUSTIFIED WITH#
                                          # BLANK FILL.                #
          ITEM SBITMDEPNDON B(0,0,1);     # TRUE = DEPENDING ON NAME IS#
                                          #        SPECIFIED           #
          ITEM SBITMLOWBNDS U(0,3,21);    # LOW INTEGER VALUE SPECIFIED#
                                          # IN THE OCCURS CLAUSE       #
          ITEM SBITMHIBNDS U(0,24,21);    # HIGH INTEGER VALUE SPECIFID#
                                          # IN THE OCCURS CLAUSE       #
          ITEM SBITMOCCKNXT B(0,59,1);    # TRUE = KEY NAME OR INDEX   #
                                          #        NAME ENTRY FOLLOWS  #
                                          #        IN THE NEXT WORD    #
          ITEM SBITMOCCWRD U(0,0,60);     # USED ALONG WITH THE BEAD   #
                                          # FUNCTION TO STORE THE 30   #
                                          # BIT KEY/INDEX ENTRIES.     #
          ITEM SBITMOCCLTYP U(0,0,3);     # O = DEPENDING ON NAME IS   #
                                          #     SPECIFIED              #
                                          # 1 = INDEX NAME IS SPECIFIED#
                                          # 2 = ASCENDING KEY IS       #
                                          #     SPECIFIED              #
                                          # 3 = DESCENDING KEY IS      #
                                          #     SPECIFIED              #
          ITEM SBITMOCCLQAL B(0,3,1);     # TRUE = QUALIFIER WORD      #
                                          # ADDRESS                    #
          ITEM SBITMOCCLNXT B(0,4,1);     # TRUE = ANOTHER ENTRY       #
                                          #        FOLLOWS.            #
          ITEM SBITMOCCLDNA U(0,6,18);    # IF DEPENDING-ON NAME OR KEY#
                                          # NAME IS SPECIFIED,THIS     #
                                          # FIELD CONTAINS THE WORD    #
                                          # ADDRESS OF WHERE THE       #
                                          # ITEM IS DEFINED            #
          ITEM SBITMOCCLINP U(0,6,12);    # OFFSET POINTER TO INDEX NME#
          ITEM SBITMOCCLINL U(0,18,6);    # LENGTH IN CHARACTERS OF THE#
                                          # INDEX NAME                 #
          ITEM SBITMOCCLDNO U(0,24,15);   # ORDINAL OF DEPENDING ON    #
                                          # NAME OR KEY NAME SPECIFIED #
                                          # IN THE OCCURS CLAUSE       #
          ITEM SBITMINDEXNM U(0,0,60);    # INDEX NAME SPECIFIED IN THE#
                                          # OCCURS CLAUSE. 1-30 CHARS  #
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL.                      #
         CONTROL FI;
  END 
#THE DEFINITIONS BELOW ARE GLOBAL SO THAT THEY MAY BE SET BY
NXTREC FOR USE IN NXTRNRD AND NXTKI 
# 
ITEM KEYINDEXBASE;  #BASE ADDR OF ITMA ENTRY CONTAINING KEY/INDEX#
ITEM KEYINDEXR;  #KEY/INDEX LEFT/RIGHT INDICATOR# 
ITEM RNRDBASE;  #BASE ADDR OF ITMS ENTRY CONTAINING RENAME/RDEF#
ITEM RNRDR;  #RENAME/REDEFINE LEFT/RIGHT INDICATOR# 
END #IENTVARS#
CONTROL LIST; 
 CONTROL FI;
CONTROL EJECT;
  
# 
MESSAGE SEVERITY DECLARATIONS 
# 
DEF D$ERROR #1#; #DATA DECLARATION ERROR# 
DEF A$ERROR #4#;
DEF T$ERROR #5#; #TRIVIAL ERROR#
DEF J$ERROR #6#;
# 
THE FOLLOWING DEF DECLARATIONS RELATE THE ERROR MESSAGE NUMBER SYMBOLS
USED IN THE CALL TO  IERR$ OR XERR$  TO THEIR APPROPRIATE VALUES. THE 
REASON FOR HAVING MESSAGE NUMBER SYMBOLS IS THAT, GIVEN A CROSS 
REFERENCE LISTING SOMEONE CAN FIND OUT WHERE A GIVEN MESSAGE
IS OUTPUT.
THE FOLLOWING M-TYPE MESSAGES ARE FOR EXTERNAL ERRORS (XERR$) 
# 
DEF M1 #1#; 
DEF M2 #2#; 
DEF M3 #3#; 
DEF M4 #4#; 
DEF M5 #5#; 
DEF M6 #6#; 
DEF M7 #7#; 
DEF M8 #8#; 
DEF M9 #9#; 
DEF M10 #10#; 
DEF M11 #11#; 
DEF M12 #12#; 
DEF M13 #13#; 
DEF M14 #14#; 
DEF M15 #15#; 
DEF M16 #16#; 
DEF M17 #17#; 
DEF M18 #18#; 
DEF M19 #19#; 
DEF M20 #20#; 
DEF M21 #21#; 
DEF M22 #22#; 
DEF M23 #23#; 
DEF M24 #24#; 
DEF M25 #25#; 
DEF M26 #26#; 
DEF M27 #27#; 
DEF M28 #28#; 
DEF M29 #29#; 
DEF M30 #30#; 
DEF M31 #31#; 
DEF M32 #32#; 
DEF M33 #33#; 
DEF M34 #34#; 
DEF M35 #35#; 
DEF M36 #36#; 
DEF M37 #37#; 
DEF M38 #38#; 
DEF M39 #39#; 
DEF M40 #40#; 
DEF M41 #41#; 
DEF M42 #42#; 
DEF M43 #43#; 
DEF M44 #44#; 
DEF M45 #45#; 
DEF M46 #46#; 
DEF M47 #47#; 
DEF M48 #48#; 
DEF M49 #49#; 
DEF M50 #50#; 
#THE ABOVE LINE IS THE LAST EXTERNAL ERROR NUMBER DEFINED.
  
THE FOLLOWING DEFINITIONS ARE FOR INTERNAL ERRORS.
# 
DEF L1 #1#; 
DEF L2 #2#; 
DEF L3 #3#; 
DEF L4 #4#; 
DEF L5 #5#; 
DEF L6 #6#; 
DEF L7 #7#; 
DEF L8 #8#; 
DEF L9 #9#; 
DEF L10 #10#; 
DEF L11 #11#; 
DEF L12 #12#; 
DEF L13 #13#; 
DEF L14 #14#; 
DEF L15 #15#; 
DEF L16 #16#; 
DEF L17 #17#; 
DEF L18 #18#; 
DEF L19 #19#; 
DEF L20 #20#; 
DEF L21 #21#; 
DEF L22 #22#; 
DEF L23 #23#; 
DEF L24 #24#; 
DEF L25 #25#; 
DEF L26 #26#; 
DEF L27 #27#; 
DEF L28 #28#; 
DEF L29 #29#; 
DEF L30 #30#; 
DEF L31 #31#; 
DEF L32 #32#; 
DEF L33 #33#; 
DEF L34 #34#; 
DEF L35 #35#; 
DEF L36 #36#; 
DEF L37 #37#; 
DEF L38 #38#; 
DEF L39 #39#; 
DEF L40 #40#; 
DEF L41 #41#; 
DEF L42 #42#; 
DEF L43 #43#; 
DEF L44 #44#; 
DEF L45 #45#; 
DEF L46 #46#; 
DEF L47 #47#; 
DEF L48 #48#; 
DEF L49 #49#; 
DEF L50 #50#; 
#XREFS# 
XREF BEGIN
PROC INTERCEPTOR; 
#XREF# END
#VALUES FOR USE WITH INTERNAL ERROR PROCESSOR#
DEF ABORT #1#;  #OUTPUT MESSAGE AND ABORT PHASE#
DEF CONT #0#;  #OUTPUT MESSAGE AND CONTINUE#
 CONTROL IFNQ CB5$CDCS,"NO";
CONTROL EJECT;
 CONTROL IFEQ CB5$CDCS,"CDCS1"; 
DEF RECASIZE #6#;  #MAX LENGTH OF PORTION OF INTEREST OF SS REC ENTRY#
 CONTROL FI;
 CONTROL IFEQ CB5$CDCS,"CDCS2"; 
DEF RECASIZE #8#;  #RECORD ENTRY BUFFER SIZE# 
 CONTROL FI;
COMMON RENTVARS; BEGIN
ARRAY RECA [1:1] S(RECASIZE); 
  BEGIN 
         CONTROL IFEQ CB5$CDCS,"CDCS1"; 
          ITEM SBRECTYPE U(0,0,3);        # 2 = RECORD                 #
          ITEM SBRECORDINAL U(0,3,10);    # RECORD ORDINAL             #
          ITEM SBRECAREAPTR U(0,13,7);    # OFFSET POINTER TO THE ENTRY#
                                          # THAT CONTAINS THE WORD ADDR#
                                          # OF VARIOUS AREAS WHICH THE #
                                          # SUBJECT RECORD IS DEFINED  #
                                          # IN                         #
          ITEM SBRECNMELENW U(0,20,3);    # RECORD NAME LENGTH IN WORDS#
          ITEM SBRECNMELENC U(0,23,5);    # RECORD NAME LENGTH IN CHARS#
          ITEM SBRECALIASLW U(0,28,3);    # ALIAS NAME LENGTH IN WORDS #
          ITEM SBRECALIASLC U(0,31,5);    # ALIAS NAME LENGTH IN CHARS #
          ITEM SBRECNBRITMS U(0,36,10);   # NUMBER ITEMS IN SUBJECT    #
                                          # RECORD                     #
          ITEM SBRECNXRECP U(0,46,12);  #OFFSET POINTER OF THE NEXT#
                                          # RECORD ENTRY               #
          ITEM SBRECIDNTICL B(0,58,1);  #TRUE = IDENTICAL SCHEMA/#
                                          #        SUB-SCHEMA DESCRIPT-#
                                          #        ORS (ENTIRE RECORD) #
          ITEM SBRECNOKEY B(0,59,1);    #TRUE = KEY IS SPECIFIED OUT# 
                                          #        SIDE OF THE SUBJECT #
                                          #        RECORD              #
          ITEM SBRECSYNADR U(1,0,15);     # WORD ADDRESS OF AN ENTRY   #
                                          # WITH THE SAME HASH VALUE   #
          ITEM SBRECSMENMEA U(1,15,15);   # WORD ADDRESS OF AN ENTRY   #
                                          # WITH THE SAME NAME         #
          ITEM SBRECLENGTH U(1,30,18);    # RECORD LENGTH (IN CHARACTER#
                                          # S) AS ITS STORED           #
          ITEM SBRECNULVAL U(1,55,5);     # THIS ITEM IS USED WITH THE #
                                          # BEAD FUNCTION TO LOR THE P1#
                                          # VALUE TO SET PROPER FLAGS  #
          ITEM SBRECHIVALUE B(1,55,1);    # TRUE = HIGH VALUE SPECIFIED#
          ITEM SBRECLOWVALU B(1,56,1);    # TRUE = LOW VALUE SPECIFIED #
          ITEM SBRECSPCEVAL B(1,57,1);    # TRUE = SPACE VALUE SPECIFID#
          ITEM SBRECZEROVAL B(1,58,1);    # TRUE = ZERO VALUE SPECIFIED#
          ITEM SBRECNEGVALU B(1,59,1);    # TRUE = NEGATIVE SPECIFIED  #
          ITEM SBRECALTKEYA U(2,0,15);    # WORD ADDRESS OF ALTERNATE  #
                                          # KEY ENTRY                  #
          ITEM SBRECNXITEMP U(2,15,7);    # OFFSET POINTER TO THE FIRST#
                                          # ITEM IN THE SUBJECT RECORD #
          ITEM SBRECALIASP U(2,22,7);     # OFFSET POINTER TO THE ALIAS#
                                          # NAME ENTRY                 #
          ITEM SBRECSRCLNEN U(2,29,10);   # CONTAINS THE SOURCE LINE   #
                                          # NUMBER OF THE RECORD DEFIN-#
                                          # ITION ( IN BINARY ).       #
          ITEM SBRECRLMADR U(2,45,15);    # WORD ADDRESS OF THE REALM  #
                                          # THAT THE SUBJECT RECORD    #
                                          # BELONGS TO.                #
          ITEM SBRECNAME U(3,0,60);       # RECORD NAME 1-30 CHARACTERS#
          ITEM SBRECNAME30 C(3,0,30);     # 30 CHARACTER RECORD NAME   #
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
         CONTROL FI;
         CONTROL IFEQ CB5$CDCS,"CDCS2"; 
          ITEM SBRECTYPE U(0,0,3);        # 2 = RECORD                 #
          ITEM SBRECORDINAL U(0,3,12);    # RECORD ORDINAL             #
          ITEM SBRECNMELENW U(0,15,3);    # RECORD NAME LENGTH IN WORDS#
          ITEM SBRECNMELENC U(0,18,6);    # RECORD NAME LENGTH IN CHARS#
          ITEM SBRECALIASLW U(0,24,3);    # ALIAS NAME LENGTH IN WORDS #
          ITEM SBRECALIASLC U(0,27,6);    # ALIAS NAME LENGTH IN CHARS #
          ITEM SBRECNXITEMP U(0,33,9);    # OFFSET POINTER TO THE FIRST#
                                          # ITEM IN THE SUBJECT RECORD #
          ITEM SBRECNBRITMS U(0,42,15);   # NUMBER OF ITEMS IN SUBJECT #
                                          # RECORD                     #
          ITEM SBRECIDNTICL B(0,58,1);    # TRUE = IDENTICAL SCHEMA/   #
                                          #        SUB-SCHEMA DESCRIPT-#
                                          #        ORS (ENTIRE RECORD) #
          ITEM SBRECNOMAP B(0,59,1);      # TRUE - NO MAPPING NEEDED   #
                                          #        FOR THIS RECORD.    #
          ITEM SBRECSYNADR U(1,0,18);     # WORD ADDRESS OF AN ENTRY   #
                                          # WITH THE SAME HASH VALUE - #
                                          # FOR INTERNAL PROCESS. ONLY.#
          ITEM SBRECSMENMEA U(1,18,18);   # WORD ADDRESS OF AN ENTRY   #
                                          # WITH THE SAME NAME -       #
                                          # FOR INTERNAL PROCESS. ONLY.#
          ITEM SBRECALIASP U(1,36,6);     # OFFSET POINTER TO THE ALIAS#
                                          # NAME ENTRY                 #
          ITEM SBRECLENGTH U(1,42,18);    # RECORD LENGTH (IN CHARS.)  #
          ITEM SBRECSRCLNEN U(2,0,18);    # CONTAINS THE SOURCE LINE   #
                                          # NUMBER OF THE RECORD DEFIN-#
                                          # ITION ( IN BINARY ).       #
          ITEM SBRECRLMADR U(2,18,15);    # WORD ADDRESS OF THE REALM  #
                                          # THAT THE SUBJECT RECORD    #
                                          # BELONGS TO.                #
          ITEM SBRECWITHINO U(2,33,12);   # ORDINAL OF OWNER REALM.    #
          ITEM SBRECNAMEPTR U(2,45,6);    # OFFSET POINTER TO THE      #
                                          # RECORD NAME.               #
          ITEM SBRECPRIVPTR U(2,51,9);    # OFFSET POINTER TO THE      #
                                          # ACCESS-CONTROL LOCK LIST.  #
          ITEM SBRECNXRECP U(3,0,18);     # OFFSET POINTER TO THE NEXT #
                                          # RECORD ENTRY               #
          ITEM SBRECRDCAPA U(3,24,18);    # WORD ADDRESS OF THE READ   #
                                          # RECORD MAPPING CODE CAPSULE#
                                          # FOR THIS RECORD TYPE.      #
          ITEM SBRECRDCAPL U(3,42,18);    # LENGTH IN WORDS OF THE     #
                                          # READ MAPPING CAPSULE FOR   #
                                          # THIS RECORD.               #
          ITEM SBRECWRCAPA U(4,24,18);    # WORD ADDRESS OF THE WRITE/ #
                                          # REWRITE MAPPING CAPSULE FOR#
                                          # THIS RECORD.               #
          ITEM SBRECWRCAPL U(4,42,18);    # LENGTH IN WORDS OF THE     #
                                          # WRITE/REWRITE MAPPING CAP- #
                                          # SULE FOR THIS RECORD TYPE. #
         CONTROL FI;
  END 
BASED ARRAY RECBA [1:1] S(1); #VARIABLE PART# 
  BEGIN 
         CONTROL IFEQ CB5$CDCS,"CDCS1"; 
          ITEM SBRECALIASNM U(0,0,60);    # ALIAS NAME, 1-30 CHARACTERS#
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBRECALIAS30 C(0,0,30);    # 30 CHARACTER RECORD ALAIS  #
                                          # NAME                       #
          ITEM SBRECWITHINA U(0,0,60);    # ADDRESS FIELD IS 19 BITS   #
          ITEM SBRECWITHINO U(0,0,19);    # FIRST WITHIN-AREA ORDINAL  #
                                          # WORD ADDRESS OF AREA THAT  #
                                          # THE SUBJECT RECORD BELONGS #
                                          # TO                         #
         CONTROL FI;
         CONTROL IFEQ CB5$CDCS,"CDCS2"; 
          ITEM SBRECNAME U(0,0,60);       # RECORD NAME 1-30 CHARACTERS#
          ITEM SBRECNAME30 C(0,0,30);     # 30 CHARACTER RECORD NAME   #
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBRECALIASNM U(0,0,60);    # ALIAS NAME, 1-30 CHARACTERS#
                                          # LEFT JUSTIFIED WITH ZERO   #
                                          # FILL                       #
          ITEM SBRECALIAS30 C(0,0,30);    # 30 CHARACTER RECORD ALIAS  #
                                          # NAME                       #
         CONTROL FI;
  END 
END #RENTVARS#
CONTROL LIST; 
 CONTROL FI;
CONTROL IFNQ CB5$CDCS,"NO"; 
 CONTROL EJECT; 
 DEF RSTASIZE #20#;          #RELATION SEARCH TABLE ENTRY BUFFER SIZE#
CONTROL IFEQ CB5$CDCS,"CDCS1";
 DEF RSTFIXSIZE #1#;         #SIZE OF FIXED PORTION OF ENTRY# 
CONTROL FI; 
CONTROL IFEQ CB5$CDCS,"CDCS2";
 DEF RSTFIXSIZE #2#;         #SIZE OF FIXED PORTION OF ENTRY# 
CONTROL FI; 
  
 COMMON RSNTVARS; BEGIN 
 ARRAY RSTA [1:1] S(RSTASIZE);
   BEGIN                     #FIXED PORTION FIELDS OF INTEREST# 
          ITEM RSTWORD0 U(0,0,60);       #RST ENTRY WORD 0# 
         CONTROL IFEQ CB5$CDCS,"CDCS1"; 
          ITEM RSTRELNMELW U(0,6,3);     #RELATION-NAME LENGTH IN WORDS#
          ITEM RSTRELNMELC U(0,9,16);    #RELATION-NAME LENGTH IN CHARS#
          ITEM RSTRELORD U(0,15,10);     #RELATION ORDINAL NUMBER#
          ITEM RSTHIGHRANK U(0,25,7);    #NUMBER OF AREAS TRAVERSED#
          ITEM RSTRQTPTR U(0,47,13);     #OFFSET POINTER FROM START OF
                                           RST ENTRY TO CORRESPONDING 
                                           RQT ENTRY# 
         CONTROL FI;
         CONTROL IFEQ CB5$CDCS,"CDCS2"; 
          ITEM RSTRELNMELW U(0,6,3);   # LENGTH IN WORDS OF THE RELAT- #
                                       # ION NAME. THIS FIELD CAN BE   #
                                       # USED TO DETERMINE THE OFFSET  #
                                       # POINTER (FROM WORD 0) TO THE  #
                                       # FIRST DBT ENTRY.              #
          ITEM RSTRELNMELC U(0,9,6);   # LENGTH IN CHARACTERS OF THE   #
                                       # RELATION NAME.                #
          ITEM RSTRELORD U(0,15,12);   # ORDINAL NUMBER ASSIGNED TO    #
                                       # RELATION ENTRY (ORDINAL NUMBR #
                                       # INITIALLY STARTS WITH 1)      #
          ITEM RSTHIGHRANK U(0,27,12); # NUMBER OF AREAS TRAVERSED     #
                                       # BY THIS RELATION.             #
          ITEM RSTRQTPTR U(1,45,15);   # OFFSET POINTER FROM THE FIRST #
                                       # WORD OF THE SUBJECT RST ENTRY #
                                       # TO THE FIRST WORD OF THE CORR-#
                                       # ESPONDING RQT ENTRY. IF THE   #
                                       # RESTRICT WAS NOT SPECIFIED FOR#
                                       # A RELATION ENTRY, THIS FIELD  #
                                       # WILL BE ZERO.                 #
         CONTROL FI;
   END
 BASED ARRAY RSTBA [1:1] S(2);
   BEGIN                     #VARIABLE PORTION FIELDS OF INTEREST#
         CONTROL IFEQ CB5$CDCS,"CDCS1"; 
          ITEM RSTAREAORD U(0,0,18);     #ORDINAL OF (TRAVERSED) AREA 
                                           ENTRY# 
          ITEM RSTAREAADR U(1,0,18);     # SS WORD ADDRESS OF (TRAVERSED
                                           AREA ENTRY#
         CONTROL FI;
         CONTROL IFEQ CB5$CDCS,"CDCS2"; 
          ITEM RSTAREAORD U(0,0,21);   # ASSIGNED ORDINAL OF THE AREA  #
                                       # ENTRY IN WHICH THE DBI THAT IS#
                                       # THE SUBJECT OF THIS ENTRY     #
                                       # RESIDES. WHEN THIS ENTRY IS   #
                                       # READ FROM THE SCHEMA, THIS    #
                                       # FIELD CONTAINED THE WORD ADDR #
                                       # OF THE AREA ENTRY IN THE SCHMA#
          ITEM RSTAREAADR U(1,0,18);   # WORD ADDRESS OF THE AREA      #
         CONTROL FI;
   END
 END #DBRSTENT# 
 CONTROL LIST;
CONTROL FI; 
CONTROL EJECT;
DEF URWASIZE #50#;  #UNRESOLVED WORD ADDR TABLE SIZE# 
DEF URWANE #URWASIZE#;  #NO OF ENTRIES = SIZE#
COMMON URWAT; BEGIN 
  
#THE FOLLOWING DEFINITION IS FOR THE UNRESOLVED WORD ADDRESSES
TABLE.
DURING THE PROCESSING OF THE DN1 OCCURS N TIMES KEY IS DN2 PHRASE 
THE CORRSPONDANCE TABLE WILL NOT YET HAVE AN ENTRY FOR DN2 (IT BEING
A FORWARD REFERENCE TO AN AS YET UNENCOUNTERED ITEM SUB ENTRY). 
THEREFORE, THE AUXTABLE ENTRY THAT HAS TO BE CONSTRUCTED WILL 
CONTAIN THE WORD ADDRESS RATHER THAN THE DNAT POINTER.
THIS TABLE IS USED TO RECORD THE AUXT$PTR OF THOSE ENTRIES
CONTAINING WORD ADDRESSES INSTEAD OF DNAT POINTERS. 
WHEN ALL OF THE ITEMS OF ALL OF THE RECORDS HAVE BEEN 
PROCESSED (WHEN THE CORRESPONDANCE TABLE WILL BE COMPLETE)
ROUTINE (BY WHEN THE CORRESPONDANCE TABLE WILL BE COMPLETE) 
THOSE UNRESOLVED WORD ADDRESSES CAN BE TRANSFORMED INTO DNAT
POINTERS. 
# 
ARRAY URWAA [1:URWASIZE]; 
  BEGIN 
  ITEM URWAAUXT; #AUXT$PTR TO ITEM WITH WORD ADDRESS# 
  END 
##
ITEM URWAPTR I=1;   #ACCESS POINTER#
END #URWAT# 
          END 
          TERM
