*DECK DBSLNXDCE 
USETEXT DBTEXT
PROC NXTDCE;
*CALL DEBUGVARS 
*CALL FNAT1 
*CALL GETSET
*CALL TABLNAMES 
START("NXTDCE") 
CONTROL IFNQ CB5$CDCS,"NO"; 
XREF BEGIN
PROC IERR$; 
PROC NXTRKEY; 
END 
# 
THIS PROCEDURE PERFORMS THE FOLLOWING FUNCTIONS :-
  A. READS THE DATA CONTROL ENTRY ASSOCIATED WITH THE 
     CURRENT AREA INTO THE DATA CONTROL W.S.A. AND
     UNPACKS THE FIXED PART.
  B. CALLS THE PROCEDURE NXTRKEY TO UNPACK THE FIRST
     RECORD KEY ENTRY.
* 
ON ENTRY IT IS ASSUMED THAT AWADCE CONTAINS THE WORD ADDRESS
OF THE DATA CONTROL ENTRY 
# 
DA$GTSB(DCA,DCASIZE,AWADCE); #READ DATA CONTROL ENTRY#
 #  BASE FIT ARRAY TO  FIT IN DATA CONTROL ARRAY #
SETO("P<DDLFIT>",P<DDLFIT>,LOC(DCA)+DCFITWA); 
IF DASTATE EQ 1 
  THENB ("ATTEMPT TO READ OUTSIDE FILE")
  $S(FN$ABORT,FNAT$,FNAT$PTR,1);
  IERR$(L2,ABORT);
ENDIF 
#UNPACK FIXED PART# 
SETO("DKPTR",DKPTR,SBDCALTRKYPT[1])  #POINTER TO FIRST KEY ENTRY# 
SETI("DFITMBL",DFITMBL,FITMBL[1])  #BLOCK CONTAINS MAX# 
SETI("DFITMNB",DFITMNB,FITMNB[1])  #BLK CONTAINS MIN# 
SETI("DFITLT",DFITLT,FITLT[1])  #LABELRECORDS#
SETI("DFITFP",DFITFP,FITFP[1])  #MULTIPLE FILE POSN#
SETI("DFITFO",DFITFO,FITFO[1])  #FILE ORG#
SETI("DFITPM",DFITPM,FITPM[1])  #PROC MODE# 
SETI("DFITMRL",DFITMRL,FITMRL[1])  #REC CONT MAX# 
SETI("DFITMNR",DFITMNR,FITMNR[1])  #REC CONT MIN# 
SETO("DRKNXTPTR",DRKNXTPTR,0) #SET TO NXTRKEY GETS FIRST KEY# 
IF DKPTR NQ 0 
  THENB("AT LEAST 1 KEY PRESENT") 
  NXTRKEY; #READ FIRST KEY# 
ENDIF 
CONTROL FI; 
FINIS("SELNEXTDCE") 
TERM
