*DECK PCLC$RT 
USETEXT DNTEXT
USETEXT RPTEXT
PROC PCLC$RT; 
          BEGIN 
  
          #PCLC$RT# 
          #X# 
          #THIS ROUTINE#
          #- CHECKS FD-RD-TABLE TO DETERMINE IF CURRENT RD WAS# 
          #INCLUDED IN A FILE DESCRIPTION#
          #--BUT NOT MORE THAN 1 FD. (SEE JOD 6.7.1)# 
          #- COMPLETES DNAT FOR PAGE-COUNTER# 
          #- COMPLETES DNAT FOR LINE-COUNTER# 
  
          ITEM   FDRDINDEX    I;
  
  
  
          ITEM   $TEMP$,
                $DUMMY$;
  
          XREF   PROC         INTERCEPT;
          XREF   FUNC         PLTCNVRT I; 
          XREF   PROC         RWSET    ;
          XREF   PROC         RWSET1   ;
          XREF   PROC         GETNEXT  ;
          XREF   FUNC         RP$AUXPTR;
          XREF   FUNC         RWGET    ;
          XREF   FUNC         RWGET1   ;
  
          DEF    GET          #GETFIELD#; 
          DEF    SET          #SETFIELD#; 
          DEF    GETQ         #GETQUICK#; 
  
*CALL RPCOMM
  
*CALL DNATVALS
*CALL FDRDT1
*CALL GETSET
*CALL TABLNAMES 
  
  
  
          CONTROL EJECT;
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EPTRACE("PCLC$RT")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          NOFDFLAG = 0; 
          #CLEAR/INITIALIZE THIS SWITCH#
          PAGECNTRDNAT = DNATPOINTER + 1; 
          LINECNTRDNAT = PAGECNTRDNAT + 1;
          FOR FDRDINDEX = 1 STEP 1 UNTIL LASTFDRDNTRY DO
              BEGIN 
              IF GETQ(FR$REPTNAME,FDRDT$,FDRDINDEX)  EQ DNATPOINTER 
              THEN
                  GOTO  RDOCURDINFD;
              END 
          #IF CURRENT RD IS NOT PRESENT IN THE FD-RD-TABLE# 
          #SET NOFDFLAG ON AND ISSUE DIAGNOSTIC, ALSO SET#
          #TYPE IN PC AND LC DNATS = ERROR.#
          CALLDDIAG(DNATPOINTER,003); 
          #DIAGNOSTIC#
          #REPORT NAMED IN REPORT SECTION DOES NOT APPEAR IN FD ENTRY#
  
FILE$ERR: 
          #P-PARSER CAN DETECT "PROPAGATED ERROR" ON THESE WITH # 
          #TYPE FIELD = ERROR.                                  # 
          SET(DN$TYPE,DNAT$,PAGECNTRDNAT,ERRTYPE);
          SET(DN$TYPE,DNAT$,LINECNTRDNAT,ERRTYPE);
          NOFDFLAG = 1; 
          GOTO ENDPCLCRT; 
RDOCURDINFD:  
          #IF RD IS FOUND IN FDRDTABLE SET CORRESPONDING RD-CHECK-BIT#
          #ON AND COMPLETE DNATS FOR PAGE COUNTER AND LINE COUNTER# 
          #(IF THE FILE WAS NOT DEFINED INCORRECTLY).#
  
          IF GETQ(FR$FILEERR,FDRDT$,FDRDINDEX) EQ 1 
              #FILE DEFINED INCORRECTLY#
          THEN
              BEGIN 
              CALLPDIAG(DNATPOINTER,001); 
              #DIAGNOSTIC  001 P# 
              #THIS REPORT IS ASSOCIATED WITH A FILE THAT HAS BEEN# 
              #DEFINED INCORRECTLY.#
              GOTO FILE$ERR;
              END 
          SET(FR$CHECKBIT,FDRDT$,FDRDINDEX,1);
          #PAGE-COUNTER HAS FIRST DNAT ENTRY AFTER RD DNAT ENTRY# 
          SET(DN$LEVEL,DNAT$,PAGECNTRDNAT,01);
          SET(DN$MAJMSEC,DNAT$,PAGECNTRDNAT,RDMSEC);
          RDLBYTOFFSET = ((RDLBYTOFFSET + 9 ) / 10 ) * 10;
          SET(DN$LONGOFF,DNAT$,PAGECNTRDNAT,RDLBYTOFFSET);
          SET(DN$ITMLEN,DNAT$,PAGECNTRDNAT,10); 
          RDLBYTOFFSET  = RDLBYTOFFSET + 10;
          SET(DN$TYPE,DNAT$,PAGECNTRDNAT,COMP1);
          SET(DN$POINT,DNAT$,PAGECNTRDNAT,0); 
         SET(DN$NUMLEN,DNAT$,PAGECNTRDNAT,6); 
         #PIC 999999# 
          #LINE-COUNTER HAS SECOND DNAT ENTRY AFTER RD DNAT ENTRY#
          SET(DN$LEVEL,DNAT$,LINECNTRDNAT,01);
          SET(DN$MAJMSEC,DNAT$,LINECNTRDNAT,RDMSEC);
          RDLBYTOFFSET = ((RDLBYTOFFSET + 9 ) / 10 ) * 10;
          SET(DN$LONGOFF,DNAT$,LINECNTRDNAT,RDLBYTOFFSET);
          SET(DN$ITMLEN,DNAT$,LINECNTRDNAT,10); 
          RDLBYTOFFSET = RDLBYTOFFSET  + 10;
          SET(DN$TYPE,DNAT$,LINECNTRDNAT,COMP1);
          SET(DN$POINT,DNAT$,LINECNTRDNAT,0); 
         SET(DN$NUMLEN,DNAT$,LINECNTRDNAT,6); 
         #PIC 999999# 
ENDPCLCRT:  
  
          #6.7.1 SAYS IN PART   EACH REPORT IN THE REPORT SECTION#
          #MUST BE NAMED IN ONE AND ONLY ONE FD ENTRY. THE FOLLOWING# 
          #WILL CHECK FOR THE  ONLY ONE . (OTHER PARTS OF 6.7.1 ARE#
          #TAKEN CARE OF IN AFALLREPORTS)#
  
          IF FDRDINDEX NQ LASTFDRDNTRY
          THEN
              FOR FDRDINDEX = (FDRDINDEX + 1) STEP 1 UNTIL LASTFDRDNTRY 
              DO
              BEGIN 
              IF GETQ(FR$REPTNAME,FDRDT$,FDRDINDEX) EQ DNATPOINTER
              THEN
                  BEGIN 
                  CALLTDIAG(DNATPOINTER,023); 
  
                  #DIAGNOSTIC#
                  #THIS REPORT IS NAMED IN MORE THAN ONE FD ENTRY.# 
                  END 
              END 
  
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EXTRACE("PCLC$RT")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          END #PCLC$RT# 
          TERM
