*DECK BEFAFT
USETEXT TENVIRN 
USETEXT TOPTION 
USETEXT TREPORT 
USETEXT TXSTD 
      PROC BEFAFT;
  
#----------------------------------------------------------------------#
#                                                                      #
#  THE FOLLOWING PROCS ARE XDEF"D WITHIN THIS DECK:                    #
#                                                                      #
#     EVALAFT                      TEST FOR *BEFORE* AND *AFTER*       #
#     EVANO                        SET UP FOR THE *NO* OPTION          #
#     EVAPTR1                                                          #
#     EVAPTR2                                                          #
#     EVAPTR3                                                          #
#                                                                      #
#----------------------------------------------------------------------#
  
      BEGIN 
  
      XREF BASED ARRAY AA S(2); 
      ITEM EVBEF U(0,24,18),
           EVAFT U(0,42,18),
           MVBEF U(1,24,18),
           MVAFT U(1,42,18);
      XREF ITEM AANDX        I;    # INDEX INTO BASED ARRAY *AA*. USED #
                                   # BY *EVAL*.                        #
      XREF ITEM AFTER        B;    # FLAG FOR MOVE/EVAL *AFTER*        #
      XREF ITEM ALL          B;    # FLAG FOR *ALL* IN THE MOVE/EVAL   #
      XREF ITEM DIRPTR       I;    # POINTER TO THE DIRECTIVE ENTRY    #
      ITEM I            I;         # SCRATCH TEMPORARY                 #
      ITEM J            I;         # SCRATCH TEMPORARY                 #
      ITEM K            I;         # SCRATCH TEMPORARY                 #
      XREF ITEM NOSEL        B;    # FLAG FOR *NO SELECT*              #
       DEF DFTRPWD #O"40000000000001000000"#;  #DEFAULT VALUE FOR 
                                                REPORTLIST WORD 1,
                                                BEYOND IS ON, 
                                                LINE NB IS 1# 
         DEF DFTRPWD2 #O"04010000000000000000"#;
  
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
          XDEF PROC EVALAFT;
          PROC EVALAFT; 
     BEGIN
          IF ICW[0] EQ "AFTER" THEN AFTER = TRUE; 
          ELSE BEGIN IF ICW[0] EQ "BEFORE" THEN AFTER = FALSE;
                     ELSE STDNO;
               END
              STDYES; 
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
         XDEF PROC EVANO;                                               020800
         PROC EVANO;                                                    020810
         BEGIN NOSEL = TRUE;                                            020820
               STDNO;                                                   020830
         END                                                            020840
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
          PROC EVAPTRA; 
          BEGIN 
              SWITCH TYPE RPT,
                          DTL,
                          HDG,
                          FTG,
                          BRK,
                          SLT,
                          TTL,
                          RCP;
              GOTO TYPE[DIRPTR];
            RPT:  
           P<AA> = LOC(REPORT) + RPTCTR*2;
              RETURN; 
            DTL:  
              P<AA> = LOC(DTLEVAL); 
              RETURN; 
            HDG:  
          P<AA> = LOC(HEADEVAL) + 2;
              RETURN; 
            FTG:  
          P<AA> = LOC(FOOTEVAL) + 2;
              RETURN; 
            SLT:  
          P<AA> = LOC(SELEVAL) + 2; 
              RETURN; 
            BRK:  
          P<AA> = LOC(BRKEVAL) + 2; 
              RETURN; 
            TTL:  
          P<AA> = LOC(TITEVMV); 
              RETURN; 
            RCP:  
          P<AA> = LOC(RCPEVMV); 
              RETURN; 
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
          XDEF PROC EVAPTR1;
          PROC EVAPTR1; 
          BEGIN 
              I = CLXNUM[0];
              IF I EQ O"624" THEN DIRPTR = 0;  #REPORT# 
              ELSE
              IF I EQ 20 THEN DIRPTR = 1;   #DETAIL#
              ELSE
              IF I EQ 24 THEN DIRPTR = 2;   #HEADING# 
              ELSE
              IF I EQ 25 THEN DIRPTR = 3;   #FOOTING# 
              ELSE
              IF I EQ 22 THEN DIRPTR = 4;   #BREAK# 
              ELSE
              IF I EQ 18 THEN DIRPTR = 5;   #SELECT#
              ELSE
              IF I EQ 8 THEN DIRPTR = 6;   #TITLE#
           ELSE DIRPTR = 7;   #RECAP# 
          IF DIRPTR GR 0 AND DIRPTR LS 6 THEN STDYES; 
          I = 0;
         IF NOSEL AND DIRPTR NQ 5 THEN STDNO; STDYES;                   020900
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
          XDEF PROC EVAPTR2;
          PROC EVAPTR2; 
          BEGIN 
          ALL = TRUE; 
         STDYES;                                                        020880
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
          XDEF PROC EVAPTR3;
          PROC EVAPTR3; 
          BEGIN 
          IF DIRPTR GR 0 AND DIRPTR LS 6 THEN 
         BEGIN IF ALL OR NOSEL THEN BEGIN                               020970
         IF DIRPTR EQ 1 OR (DIRPTR EQ 5 AND NOT NOSEL) THEN I=0;        020990
            ELSE I = -1;
                         END
                ELSE I = ICWI[5]; 
          END 
          IF NOT FULLSYNTX THEN 
            BEGIN                                                        FEAT157
            B<48,12>KEYAREA[0] = 0;                                      FEAT157
            IF AFTER THEN B<48,1>KEYAREA[0] = 1;                         FEAT157
            B<49,3>KEYAREA[0] = DIRPTR;                                  FEAT157
            IF ALL THEN B<52,1>KEYAREA[0] = 1;                           FEAT157
            ELSE                                                         FEAT157
              IF NOSEL THEN B<53,1>KEYAREA[0] = 1;                       FEAT157
              ELSE                                                       FEAT157
                B<54,6>KEYAREA[0] = I;                                   FEAT157
                STDNO;
          END 
              BASED ARRAY B; ITEM BB I(0,3,9);
      IF I GR 0 THEN
              BEGIN 
                 IF DIRPTR GQ 2 AND DIRPTR LQ 4 THEN BEGIN
                     P<B> = LOC(BREAKHEAD); 
                     K = MAXBREAK;
                                                       END
                 ELSE BEGIN P<B> = LOC(SELDTLHEAD) - 1; 
                           K = MAXSELECT; 
                      END 
                 FOR J = 1 STEP 1 UNTIL K DO
                                   IF I EQ BB[J] THEN GOTO GETIT; 
           GETIT: I = J;
              END 
              EVAPTRA;
          AANDX = I;               # SAVE INDEX INTO *AA* FOR *EVAL*.  #
          STDNO;
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
      END 
      TERM
