*DECK JUSTCL
USETEXT DNTEXT
USETEXT RPTEXT
PROC JUSTCL;  #CYR22# 
          BEGIN 
  
          #JUSTIFIED  ROUTINE#
          #*# 
          #THIS ROUTINE#
          #- PERFORMS ANALYSIS ON THE DNAT ENTRIES FOR ONE REPORT#
          #GROUP WITH RESPECT TO  THE  SYNTAX RULES IN SECTION# 
          #6.23.3 FOR THE JUSTIFIED CLAUSE   WHICH# 
          #DECREE THAT# 
          #THE JUSTIFIED CLAUSE CAN BE SPECIFIED ONLY AT THE# 
          #ELEMENTARY ITEM LEVEL, AND THAT IT CANNOT BE#
          #SPECIFIED  FOR A NUMERIC EDITED ITEM  OR FOR AN# 
          #ITEM DESCRIBED AS NUMERIC.#
  
          ITEM   RGDNATPTR, 
                 AUXINDEX ; 
  
  
          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 GETSET
*CALL TABLNAMES 
          CONTROL EJECT;
  
  
  # * * * * * * * * * * * * * * * * * * * * * * * # 
          EPTRACE("JUSTCL") 
  
  
          IF FIRSTF3OR4DE EQ 0 THEN 
              GOTO TERMJCL; 
          FOR RGDNATPTR = FIRSTF3OR4DE STEP 1 UNTIL LASTRGDNAT DO 
  
  
  
  
              BEGIN 
              AUXINDEX = RP$AUXPTR(RGDNATPTR);
              $TEMP$ =GETQ(DN$LEVEL,DNAT$,RGDNATPTR); 
  
              IF  $TEMP$ GR 1 
                  AND 
                  RWGET(RAFORMAT4BIT,AUXINDEX) EQ 1 
                  #IE.- A FORMAT-4  ENTRY#
  
                  AND 
                  RWGET(RAJUSTFIDBIT,AUXINDEX) EQ 1 
              THEN
                  BEGIN 
                  IF RWGET(RAELEMITEMBT,AUXINDEX) EQ 1
                      #ELEMENTARY-ITEM CHARACTERISTIC IS# 
                      #DETERMINED IN SECTION 4D OF FORMATS$ANAL RT.#
                  THEN
                      GOTO JCHCKNUMERIC;
  
                  #ELSE   ERROR -#
  
                  #DIAGNOSTIC#
                  #JUSTIFIED CLAUSE CAN BE SPECIFIED ONLY AT ELEMENTARY#
                  #ITEM LEVEL#
  
                  CALLTDIAG(RGDNATPTR,43);
                  GOTO ENDJ1STDO; 
JCHCKNUMERIC: 
                  $TEMP$ = GETQ(DN$TYPE,DNAT$,RGDNATPTR); 
  
                  IF $TEMP$ NQ NUMERIC
                      AND 
                      $TEMP$ NQ NUMERICEDIT 
                  THEN
                      GOTO SETJUSTBIT;
  
                  #ELSE   ERROR#
  
  
                  #DIAGNOSTIC#
                  #JUSTIFIED CLAUSE CANNOT BE SPECIFIED FOR A NUMERIC # 
                  # NOR FOR # 
                  #A NUMERIC-EDITED DATA ITEM#
  
                  CALLTDIAG(RGDNATPTR,44);
                  GOTO ENDJ1STDO; 
SETJUSTBIT: 
  
                  #UNLESS A VALUE CLAUSE IS ASSOC. WITH THIS ITEM # 
                  # RULE 6.43.4C #
                  #SET JUSTIFIED BIT IN DNAT ENTRY SO#
                  #C-GEN PHASE WILL GEN NECESSARY CODE# 
                  #FOR JUSTIFYING#
  
                  IF RWGET(RAVALUEBIT,AUXINDEX) EQ 0
                  THEN
                      SET(DN$JUST,DNAT$,RGDNATPTR,1); 
                  END 
ENDJ1STDO:  
              END 
TERMJCL:  
 # * * * * * * * * * * * * * * * * * * * * * #
          EXTRACE("JUSTCL") 
  
          END #JUSTCL#
          TERM
