*DECK PAGECOM 
USETEXT DNTEXT
USETEXT RPTEXT
PROC PAGECOM; 
          BEGIN 
  
          #P CLAUSE COMBINATIONS ROUTINE# 
          #*# 
          #THIS ROUTINE#
          #- DOES ANALYSIS ON ONE REPORT GROUP WITH RESPECT#
          #TO SECTION  6.13.3., RULE 11- WHICH DESCRIBES# 
          #ALL PERMISSIBLE CLAUSE COMBINATIONS FOR A# 
          #FORMAT-4 ENTRY#
  
          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("PAGECOM")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          IF FIRSTF3OR4DE EQ 0 THEN 
              GOTO ENDPAGEC;     # NO FORMAT 4J#
          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#
              THEN
                  BEGIN 
                  IF RWGET(RASUMBIT,AUXINDEX) EQ 1
                  THEN
                      GOTO CCSUMCLAUSE; 
                  IF RWGET(RASOURCEBIT,AUXINDEX) EQ 1 
                  THEN
                      GOTO CCSOURCECLUS;
                  IF RWGET(RAVALUEBIT,AUXINDEX) EQ 1
                  THEN
                      GOTO CCVALUECLAUS;
  
                  #ELSE  IS AN ERROR# 
  
  
                  #DIAGNOSTIC#
                  #SOURCE, SUM, OR VALUE CLAUSE REQUIRED IN A FORMAT 4# 
                  #ENTRY# 
  
                  ANALONLYRGRP = 1; 
                  CALLDDIAG(RGDNATPTR,38);
                  GOTO CCEND1STDO;
CCSUMCLAUSE:  
                  IF RWGET(RAPICBIT,AUXINDEX) EQ 1
                  THEN
                      GOTO CC1COL;
  
                  #ELSE   ERROR#
  
  
                  #ENSURE THAT# 
                  SET(DN$TYPE,DNAT$,RGDNATPTR,ERRTYPE); 
  
                  #DIAGNOSTIC#
                  #VALID PICTURE CLAUSE REQUIRED IN FORMAT-4 ENTRY# 
  
                  CALLDDIAG(RGDNATPTR,39);
CC1COL: 
                  IF RWGET(RACOLNUMPLT,AUXINDEX) EQ 0 
                  THEN
                      BEGIN 
                      IF
                          RWGET(RASOURCEBIT,AUXINDEX) EQ 0
                          AND 
                          RWGET(RAVALUEBIT,AUXINDEX) EQ 0 
                          AND 
                          RWGET(RAJUSTFIDBIT,AUXINDEX) EQ 0 
                          AND 
                          RWGET(RABLANKBIT,AUXINDEX) EQ 0 
                          AND 
                          RWGET(RAGROUPBIT,AUXINDEX) EQ 0 
                          AND 
                          RWGET(RAUSAGEBIT,AUXINDEX) EQ 0 
                      THEN
                          GOTO  CCEND1STDO; 
  
                      #ELSE   ERROR#
CCSUMERROR: 
  
                      #DIAGNOSTIC#
                      #ILLEGAL CLAUSE COMBINATION FOR SUM CLAUSE# 
  
                      ANALONLYRGRP = 1; 
                      CALLDDIAG(RGDNATPTR,40);
                      GOTO  CCEND1STDO; 
                      END 
  
                  #ELSE - IF WAS A COLUMN CLAUSE# 
  
                  IF
                      RWGET(RASOURCEBIT,AUXINDEX) EQ  0 
                      AND 
                      RWGET(RAVALUEBIT,AUXINDEX) EQ 0 
                      AND 
                      RWGET(RAGROUPBIT,AUXINDEX) EQ 0 
                  THEN
                      GOTO CCEND1STDO;
                  ELSE
                      GOTO CCSUMERROR;
CCSOURCECLUS: 
                  IF RWGET(RAPICBIT,AUXINDEX) EQ  1 
                  THEN
                      GOTO CC2JUST; 
  
                  #ELSE   ERROR#
  
  
                  #ENSURE THAT# 
                  SET(DN$TYPE,DNAT$,RGDNATPTR,ERRTYPE); 
  
                  #DIAGNOSTIC#
                  #VALID PICTURE CLAUSE REQUIRED IN FORMAT-4 ENTRY# 
  
                  CALLDDIAG(RGDNATPTR,39);
CC2JUST:  
                  IF RWGET(RAJUSTFIDBIT,AUXINDEX) EQ 0
                  THEN
                      BEGIN 
                      IF RWGET(RASUMBIT,AUXINDEX) EQ 0
                          AND 
                          RWGET(RAVALUEBIT,AUXINDEX) EQ 0 
                      THEN
                          GOTO CCEND1STDO;
                      ELSE
                          GOTO  CCSRCEERROR;
                      END 
  
                  #ELSE-  IF HAVE JUSTIFID CLAUSE, -# 
  
                  IF RWGET(RASUMBIT,AUXINDEX) EQ 0
                      AND 
                      RWGET(RAVALUEBIT,AUXINDEX) EQ 0 
                      AND 
                      RWGET(RABLANKBIT,AUXINDEX) EQ 0 
                  THEN
                      GOTO  CCEND1STDO; 
  
                  #ELSE -#
  
CCSRCEERROR:  
  
                  #DIAGNOSTIC#
                  #ILLEGAL CLAUSE COMBINATION FOR SOURCE CLAUSE#
  
                  ANALONLYRGRP = 1; 
                  CALLDDIAG(RGDNATPTR,41);
                  GOTO  CCEND1STDO; 
CCVALUECLAUS: 
                  IF RWGET(RAPICBIT,AUXINDEX) EQ 1
                  THEN
                      GOTO CC3SRCE; 
  
                  #ELSE    ERROR# 
  
  
                  #ENSURE THAT# 
                  SET(DN$TYPE,DNAT$,RGDNATPTR,ERRTYPE); 
  
                  #DIAGNOSTIC#
                  #VALID PICTURE CLAUSE REQUIRED IN FORMAT 4 ENTRY# 
  
                  CALLDDIAG(RGDNATPTR,39);
CC3SRCE:  
                  IF
                      RWGET(RASOURCEBIT,AUXINDEX) EQ 0
                      AND 
                      RWGET(RASUMBIT,AUXINDEX) EQ 0 
                      AND 
                      RWGET(RABLANKBIT,AUXINDEX) EQ 0 
                  THEN
                      GOTO CCEND1STDO;
  
                  #ELSE    ERROR# 
  
  
                  #DIAGNOSTIC#
                  #ILLEGAL CLAUSE COMBINATION FOR VALUE CLAUSE# 
  
                  ANALONLYRGRP = 1; 
                  CALLDDIAG(RGDNATPTR,42);
                  END 
CCEND1STDO: 
              END 
  
ENDPAGEC: 
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  # * #   EXTRACE("PAGECOM")                                       # * #
  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *#
  
          END #PAGECOM# 
          TERM
