*DECK ANZS                                                               SYMPL
USETEXT   TSOURCE 
USETEXT   TSYMCNS 
USETEXT   TCEXECQ 
USETEXT   TSYMC5Q 
USETEXT   TCEXEC
USETEXT   TSYMC5
USETEXT   TSTABLE 
      PROC ANZS;                                                         SYMPL
      BEGIN  #ANZS#                                                      SYMPL
#----------------------------------------------------------------------# SYMPL
#                                                                      # SYMPL
#                                                                      # SYMPL
#     P R O C   A N Z S                                                # SYMPL
#                                                                      # SYMPL
#                                                                      # SYMPL
#                                                                      # SYMPL
#                                                                      # SYMPL
#                                                                      # SYMPL
#                                                                      # SYMPL
#                                                                      # SYMPL
#                                                                      # SYMPL
#                                                                      # SYMPL
#                                                                      # SYMPL
#                                                                      # SYMPL
#----------------------------------------------------------------------# SYMPL
                                                                         SYMPL
   #      ANZS - SYNTAX TABLE DRIVER                                   # SYMPL
                                                                         SYMPL
*CALL COMEX 
      CONTROL EJECT;                                                     SYMPL
      XREF PROC CODINT;                                                  SYMPL
      XREF PROC XRFINT;                                                  SYMPL
                                                                         SYMPL
      XREF PROC GTSRC;             # COMPASS ROUTINE TO GET NEXT CARD  #
      XREF PROC PF11;              # PRAGMATIC FUNCTIONS FOR SCAN 1    #
      XREF PROC PF12;              # PRAGMATIC FUNCTIONS FOR SCAN 2    #
      XREF PROC PF13;              # PRAGMATIC FUNCTIONS FOR SCAN 3    #
      XREF PROC PF14;              # PRAGMATIC FUNCTIONS FOR SCAN 4    #
      XREF PROC SPRECG;            # SYMPL PRECOGNITION                #
      XREF PROC SYMABT;            # CATASTROPHIC ERROR MESSAGE ISSUER #
                                                                         SYMPL
      $BEGIN                                                             SYMPL
      XREF PROC DMPCSNR;                                                 SYMPL
      $END                                                               SYMPL
  
      XREF ITEM PREREAD;           # DEFINED IN GTSRC (COMPASS)        #
      XREF ITEM SAFREE;            # DEFINED IN CONTROL (COMPASS)      #
  
#     DIAGNOSTIC DEFS                                                  #
  
      DEF J805 #805#;              # SYMABT DIAGNOSTIC 805             #
      DEF J866 #866#;              # SYMABT DIAGNOSTIC 866             #
                                                                         SYMPL
      ITEM I;                                                            SYMPL
      ITEM ZCSN;                                                         SYMPL
      ITEM ZLDR;                                                         SYMPL
      ITEM ZLMB;                                                         SYMPL
      ITEM ZSCC;                                                         SYMPL
      ITEM ANLTMP;                                                       SYMPL
                                                                         SYMPL
      ITEM ZVEC;                                                         SYMPL
      ITEM XVEC;                                                         SYMPL
      ITEM RNMN=0;                                                       SYMPL
      ITEM BOOL B=FALSE;                                                 SYMPL
                                                                         SYMPL
      ARRAY;                                                             SYMPL
        BEGIN                                                            SYMPL
        ITEM YVEC (00,00,27);                                            SYMPL
        ITEM WVEC = [0];                                                 SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      ITEM ZFTI;                                                         SYMPL
      ITEM ZRTX;                                                         SYMPL
      ITEM ZRBR;                                                         SYMPL
      ITEM ZEWH;                                                         SYMPL
      ITEM ZRTS;                                                         SYMPL
      ITEM ZRTL;                                                         SYMPL
      ITEM ZCNT;                                                         SYMPL
      ITEM ZDEF;                                                         SYMPL
      ITEM ZDTM;                                                         SYMPL
                                                                         SYMPL
      ITEM ZRCN;                                                         SYMPL
      ITEM ZRMB;                                                         SYMPL
      ITEM BLFC;                                                         SYMPL
      ITEM FLZP;                                                         SYMPL
      ITEM YPBV;                                                         SYMPL
                                                                         SYMPL
      ITEM TREX;                                                         SYMPL
      ITEM ZSTL;                                                         SYMPL
      ITEM ZSTI;                                                         SYMPL
      CONTROL EJECT;                                                     SYMPL
      SWITCH CHGSW  NOCHG,SKPCHG,IACHG,SCAN1,SCAN2,SCAN3,SCAN4,SCAN5;    SYMPL
      SWITCH DSW    NORM,RULE,FUNK,AIRE,NORMPF,RULEPF,FUNKPF,AIREPF;     SYMPL
  
      CONTROL IFEQ   1,0;          # THIS CONDITION WILL NEVER BE MET  #
#     THIS CODE IS FOR SYNTACTIC FUNCTIONS, WHICH ARE NOT CURRENTLY    #
#     SUPPORTED BY JENNY.                                              #
      SWITCH PFA    PF1A,PF2A,PF3A,PF4A;                                 SYMPL
      CONTROL FI; 
  
      SWITCH PFB    PF1B,PF2B,PF3B,PF4B;                                 SYMPL
      SWITCH PFC    PF1C,PF2C,PF3C,PF4C;                                 SYMPL
      SWITCH PFD    PF1D,PF2D,PF3D,PF4D;                                 SYMPL
      CONTROL EJECT;                                                     ANZSC
      $BEGIN                                                             ANZSC
      PROC DUMPIT(DWHERE);                                               ANZSC
#----------------------------------------------------------------------# ANZSC
#                                                                      # ANZSC
#     P R O C    D U M P I T                                           # ANZSC
#                                                                      # ANZSC
#     DUMP INTERESTING THINGS                                          # ANZSC
#                                                                      # ANZSC
#     INPUT PARAMETER                                                  # ANZSC
#     DWHERE, A 6 CHARACTER ITEM CONTAINING CALLING LOCATION IN ANZS   # ANZSC
#                                                                      # ANZSC
#     DUMPIT PRINTS IN OCTAL FORMAT THE ENTITIES SHOWN IN THE LIST     # ANZSC
#     STATEMENTS. IT IS CALLED FROM 4 PLACES IN ANZS JUST PRIOR TO     # ANZSC
#     CALLING PF1I TO EXECUTE A PRAGMATIC FUNCTION.  THUS, WHEN ONE    # ANZSC
#     LOOKS AT A DUMPIT PRINT, ONE KNOWS THE VALUES AVAILABLE TO THE   # ANZSC
#     PRAGMATIC FUNCTIONS.                                             # ANZSC
#                                                                      # ANZSC
#----------------------------------------------------------------------# ANZSC
      BEGIN                                                              ANZSC
      ITEM DWHERE C(6);                                                  ANZSC
      IF DEBFLG EQ 1                                                     ANZSC
      THEN                                                               ANZSC
        BEGIN                                                            ANZSC
        PRINT("(3X,5HANZS(,A6,13H) DUMP(OCTAL),/,5X,5HPGIX=,O2,3X,       ANZSC
        5HEOFI=,O2,3X,5HPPTR=,O4,3X,5HFCON=,O4,3X,5HPOZN=,O4,3X,5HZPOS=  ANZSC
        ,O4,3X,5HDEFN=,O4,5X,5HRPLI=,O4,/,5X,11HCSRF[POZN]=,O6,3X,       ANZSC
        17HCSRF[FLNK[POZN]]=,O6)") ;                                     ANZSC
        LIST(DWHERE);                                                    ANZSC
        LIST(PGIX);                                                      ANZSC
        LIST(EOFI);                                                      ANZSC
        LIST(PPTR);                                                      ANZSC
        LIST(FCON);                                                      ANZSC
        LIST(POZN);                                                      ANZSC
        LIST(ZPOS);                                                      ANZSC
        LIST(DEFN);                                                      ANZSC
        LIST(RPLI);                                                      ANZSC
        LIST(CSRF[POZN]);                                                ANZSC
        LIST(CSRF[FLNK[POZN]]);                                          ANZSC
        ENDL;                                                            ANZSC
        PRINT("(1H+,50X,17HCSRF[BLNK[POZN]]=,O6,)");                     ANZSC
        PRINT("(1H+,50X,17HCSRF[BLNK[POZN]]= ,O6,12H CSDF[POZN]= ,O1)");
        LIST(CSRF[BLNK[POZN]]);                                          ANZSC
        LIST(CSDF[POZN]); 
        ENDL;                                                            ANZSC
        END                                                              ANZSC
      END                                                                ANZSC
      $END                                                               ANZSC
      CONTROL EJECT;                                                     SYMPL
      CODINT;                                                            SYMPL
      XRFINT;                                                            SYMPL
                                                                         SYMPL
      B<1>RNMN=1;                  #SET RULE VECTOR COMPARISON BIT     # SYMPL
      PPTR=0;                                                            SYMPL
      PGIX=0;                                                            SYMPL
      EOFI=0;                                                            SYMPL
      POZN=FLNK[FCON];                                                   SYMPL
      FOR I=1 STEP 1                                                     SYMPL
        UNTIL SKNCP                                                      SYMPL
      DO                                                                 SYMPL
        BEGIN                                                            SYMPL
        POSN[I]=POZN;                                                    SYMPL
        PBV[POZN]=PBV[POZN] LOR XBIT[I];                                 SYMPL
        END                                                              SYMPL
                                                                         SYMPL
#     IF FIRST TOKEN ISN"T PROC/FUNC/PRGM, WE DONT HAVE A CHANCE.      # SMPA010
                                                                         SMPA010
      SPRECG;                #GET FIRST TOKEN- ITS PROBABLY PLTR       # SMPA010
                                                                         SMPA010
#     NOTE- THIS CODE WON"T CATCH THE CASE WHERE A COMMENT BEGINS THE  # SMPA010
#     BAD MODULE.                                                      # SMPA010
                                                                         SMPA010
      IF CSNR[POZN] NQ CLIST"QUOTE"                                      SMPA010
      THEN                                                               SMPA010
        BEGIN                                                            SMPA010
        IF NAMARR[0] NQ "PROC"                                           SMPA010
          AND NAMARR[0] NQ "FUNC"                                        SMPA010
          AND NAMARR[0] NQ "PRGM"                                        SMPA010
        THEN                                                             SMPA010
          BEGIN                                                          SMPA010
          PREREAD = 1;             # NOTIFY GTSRC TO LIST THE CARD     #
          GTSRC;                   # OUTPUT THE OFFENDING CARD         #
          SYMABT(J866,"MODULE MUST BEGIN WITH PROC/FUNC/PRGM(ANZS)",43); SMPA010
          END                                                            SMPA010
        END                                                              SMPA010
      GOTO RECG;             #PROCESS TOKEN NORMALLY#                    SMPA010
                                                                         SYMPL
TXIT:                                                                    SYMPL
      IF AFREE LS SAFREE                                                 SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        SAFREE=AFREE;                                                    SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      AFREE=SYMCP-NXTAV-1;         #RETURN ALL TRANSIENT SPACE         # SYMPL
      RETURN;                                                            SYMPL
                                                                         SYMPL
AIRE:                                                                    SYMPL
AIREPF:                                                                  SYMPL
      SYMABT(J805,"COND REPL OUTSIDE OF RULE BODY. BAD GENESIS TABLES  ( ANZS 
ANZS)",57);                                                              ANZS 
FUNKPF:                                                                  SYMPL
FUNK: # A DUMMY LABEL TO REPLACE THE ONE INSIDE THE CONTROL IFEQ       #
  
      CONTROL IFEQ   1,0;          # THIS CONDITION WILL NEVER BE MET  #
#     THIS CODE IS FOR SYNTACTIC FUNCTIONS, WHICH ARE NOT CURRENTLY    #
#     SUPPORTED BY JENNY.                                              #
      $BEGIN                                                             ANZSC
      DUMPIT("FUNKPF");            #DEBUG PRINT                        # ANZSC
      $END                                                               ANZSC
      GOTO PFA[PPTR];                                                    SYMPL
                                                                         SYMPL
PF2A:                                                                    SYMPL
      PF12;                                                              SYMPL
      GOTO PFENDA;                                                       SYMPL
                                                                         SYMPL
PF3A:                                                                    SYMPL
      PF13;                                                              SYMPL
      GOTO PFENDA;                                                       SYMPL
                                                                         SYMPL
PF4A:                                                                    SYMPL
      PF14;                                                              SYMPL
      GOTO PFENDA;                                                       SYMPL
                                                                         SYMPL
PF1A:                                                                    SYMPL
      PF11;                                                              SYMPL
                                                                         SYMPL
PFENDA:                                                                  SYMPL
FUNK:                                                                    SYMPL
      ZFTI=FTIX[DEFN];                                                   SYMPL
TF10:                                                                    SYMPL
      IF FVLE[ZFTI] LS 0                                                 SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        GOTO TF20;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      IF FVLE[ZFTI] GQ FTEST                                             SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        GOTO TF20;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      ZFTI=ZFTI+1;                                                       SYMPL
      GOTO TF10;                                                         SYMPL
                                                                         SYMPL
TF20:                                                                    SYMPL
      DEFN=FIMP[ZFTI];                                                   SYMPL
      GOTO TREPL;                                                        SYMPL
                                                                         SYMPL
      CONTROL FI; 
  
RULEPF:                                                                  SYMPL
      $BEGIN                                                             ANZSC
      DUMPIT("RULEPF");            #DEBPUT PRINT                       # ANZSC
      $END                                                               ANZSC
      GOTO PFB[PPTR];                                                    SYMPL
                                                                         SYMPL
PF2B:                                                                    SYMPL
      PF12;                                                              SYMPL
      GOTO PFENDB;                                                       SYMPL
                                                                         SYMPL
PF3B:                                                                    SYMPL
      PF13;                                                              SYMPL
      GOTO PFENDB;                                                       SYMPL
                                                                         SYMPL
PF4B:                                                                    SYMPL
      PF14;                                                              SYMPL
      GOTO PFENDB;                                                       SYMPL
                                                                         SYMPL
PF1B:                                                                    SYMPL
      PF11;                                                              SYMPL
                                                                         SYMPL
PFENDB:                                                                  SYMPL
RULE:                                                                    SYMPL
      ANLTMP=DEFN;                                                       SYMPL
RULE1:                                                                   SYMPL
      ZRTX=RTIX[DEFN];                                                   SYMPL
      ZRBR=DEFN+1;                                                       SYMPL
RU00:                                                                    SYMPL
      ZEWH=0;                                                            SYMPL
      IF RTRI[ZRTX] NQ 0                                                 SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        ZVEC=VECT[ZRTX];                                                 SYMPL
        GOTO RU30;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      ZPOS=POZN;                                                         SYMPL
      ZRTL=RTLE[ZRTX];                                                   SYMPL
      ZRTS=RTSX[ZRTX];                                                   SYMPL
RU10:                                                                    SYMPL
      ZPOS=FLNK[ZPOS];                                                   SYMPL
RU20:                                                                    SYMPL
      ZCSN=CSNR[ZPOS];                                                   SYMPL
      IF ZCSN EQ 0                                                       SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        IF EOFI EQ 0                                                     SYMPL
        THEN                                                             SYMPL
          BEGIN                                                          SYMPL
          IF PPTR NQ 0                                                   SYMPL
          THEN                                                           SYMPL
            BEGIN                                                        SYMPL
            ZSCC=PPTR + 2;                                               SYMPL
            GOTO CHGSW[ZSCC];                                            SYMPL
            END                                                          SYMPL
                                                                         SYMPL
          SPRECG;                                                        SYMPL
          GOTO RU20;                                                     SYMPL
          END                                                            SYMPL
                                                                         SYMPL
        ZEWH=1;                                                          SYMPL
        ZVEC=VECT[ZRTS];                                                 SYMPL
        GOTO RU30;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
                                                                         SYMPL
      FOR I=1 STEP 1                                                     SYMPL
        UNTIL ZRTL                                                       SYMPL
      DO                                                                 SYMPL
        BEGIN                                                            SYMPL
        IF ZCSN EQ RCNS[ZRTS+I]                                          SYMPL
        THEN                                                             SYMPL
          BEGIN                                                          SYMPL
          ZRTS=ZRTS + I;                                                 SYMPL
          IF RTRI[ZRTS] EQ 0                                             SYMPL
          THEN                                                           SYMPL
            BEGIN                                                        SYMPL
            ZRTL=RTLE[ZRTS];                                             SYMPL
            ZRTS=RTSX[ZRTS];                                             SYMPL
            GOTO RU10;                                                   SYMPL
            END                                                          SYMPL
                                                                         SYMPL
          ZVEC=VECT[ZRTS];                                               SYMPL
          GOTO RU30;                                                     SYMPL
          END                                                            SYMPL
                                                                         SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      ZVEC=VECT[ZRTS];                                                   SYMPL
                                                                         SYMPL
RU30:                                                                    SYMPL
      ZRTX=ZRTX + 1;                                                     SYMPL
      IF RTRI[ZRTX] NQ 0                                                 SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        XVEC=VECT[ZRTX];                                                 SYMPL
        GOTO RU50;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      ZPOS=POZN;                                                         SYMPL
      ZRTL=RTLE[ZRTX];                                                   SYMPL
      ZRTS=RTSX[ZRTX];                                                   SYMPL
RU40:                                                                    SYMPL
      ZPOS=BLNK[ZPOS];                                                   SYMPL
      ZCSN=CSNR[ZPOS];                                                   SYMPL
      IF ZCSN EQ 0                                                       SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        ZEWH=1;                                                          SYMPL
        XVEC=VECT[ZRTS];                                                 SYMPL
        GOTO RU50;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      FOR I=1 STEP 1                                                     SYMPL
        UNTIL ZRTL                                                       SYMPL
      DO                                                                 SYMPL
          BEGIN                                                          SYMPL
          IF ZCSN EQ RCNS[ZRTS + I]                                      SYMPL
          THEN                                                           SYMPL
            BEGIN                                                        SYMPL
            ZRTS=ZRTS + I;                                               SYMPL
            IF RTRI[ZRTS] EQ 0                                           SYMPL
            THEN                                                         SYMPL
              BEGIN                                                      SYMPL
              ZRTL=RTLE[ZRTS];                                           SYMPL
              ZRTS=RTSX[ZRTS];                                           SYMPL
              GOTO RU40;                                                 SYMPL
              END                                                        SYMPL
                                                                         SYMPL
            XVEC=VECT[ZRTS];                                             SYMPL
            GOTO RU50;                                                   SYMPL
            END                                                          SYMPL
                                                                         SYMPL
          END                                                            SYMPL
                                                                         SYMPL
      XVEC=VECT[ZRTS];                                                   SYMPL
RU50:                                                                    SYMPL
      ZCNT=0;                                                            SYMPL
      YVEC[0]=ZVEC LAN XVEC;                                             SYMPL
RU60:                                                                    SYMPL
      IF WVEC[0] EQ 0                                                    SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        ZRTX=ZRTX + 1;                                                   SYMPL
        ZRBR=ZRBR + VLEN;                                                SYMPL
        GOTO RU00;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
RU70:                                                                    SYMPL
      IF WVEC[0] LS RNMN                                                 SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        ZCNT=ZCNT + 1;                                                   SYMPL
        WVEC[0]=WVEC[0] + WVEC[0];                                       SYMPL
        GOTO RU70;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      WVEC[0]=WVEC[0] LXR RNMN;    #REMOVE TOP BIT                     # SYMPL
                                                                         SYMPL
      ZDEF=ZRBR + ZCNT;                                                  SYMPL
      ZLDR=DLRX[ZDEF];                                                   SYMPL
      ZDTM=DTMP[ZLDR];                                                   SYMPL
      ZPOS=POZN;                                                         SYMPL
      IF ZEWH NQ 0                                                       SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        ZLMB=LOMB[ZLDR] - ZDTM - 1;                                      SYMPL
        FOR I=1 STEP 1                                                   SYMPL
          UNTIL ZLMB                                                     SYMPL
        DO                                                               SYMPL
          BEGIN                                                          SYMPL
          ZPOS=BLNK[ZPOS];                                               SYMPL
          IF CSNR[ZPOS] EQ 0                                             SYMPL
          THEN                                                           SYMPL
            BEGIN                                                        SYMPL
            GOTO RU60;                                                   SYMPL
            END                                                          SYMPL
                                                                         SYMPL
          END                                                            SYMPL
                                                                         SYMPL
        ZPOS=POZN;                                                       SYMPL
        FOR I=1 STEP 1                                                   SYMPL
          UNTIL ZDTM                                                     SYMPL
        DO                                                               SYMPL
          BEGIN                                                          SYMPL
          ZPOS=FLNK[ZPOS];                                               SYMPL
          IF CSNR[ZPOS] EQ 0                                             SYMPL
          THEN                                                           SYMPL
            BEGIN                                                        SYMPL
            GOTO RU60;                                                   SYMPL
            END                                                          SYMPL
                                                                         SYMPL
          END                                                            SYMPL
                                                                         SYMPL
        ZPOS==POZN;                                                      SYMPL
        GOTO RU80;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      FOR I=1 STEP 1                                                     SYMPL
        UNTIL ZDTM                                                       SYMPL
      DO                                                                 SYMPL
        BEGIN                                                            SYMPL
        POZN=FLNK[POZN];                                                 SYMPL
        END                                                              SYMPL
                                                                         SYMPL
RU80:                                                                    SYMPL
      DEFN=ZDEF;                                                         SYMPL
      IF RTYP[ZDEF] NQ 0                                                 SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        RPLI=0;                                                          SYMPL
      $BEGIN                                                             ANZSC
      DUMPIT("RU80+ ");            #DEBUG PRINT                        # ANZSC
      $END                                                               ANZSC
        GOTO PFD[PPTR];                                                  SYMPL
                                                                         SYMPL
PF2D:                                                                    SYMPL
        PF12;                                                            SYMPL
        GOTO PFENDD;                                                     SYMPL
                                                                         SYMPL
PF3D:                                                                    SYMPL
        PF13;                                                            SYMPL
        GOTO PFENDD;                                                     SYMPL
                                                                         SYMPL
PF4D:                                                                    SYMPL
        PF14;                                                            SYMPL
        GOTO PFENDD;                                                     SYMPL
                                                                         SYMPL
PF1D:                                                                    SYMPL
        PF11;                                                            SYMPL
PFENDD:                                                                  SYMPL
        IF RPLI NQ 0                                                     SYMPL
        THEN                                                             SYMPL
          BEGIN                                                          SYMPL
          GOTO NORM;                                                     SYMPL
                                                                         SYMPL
          END                                                            SYMPL
                                                                         SYMPL
        POZN=ZPOS;                                                       SYMPL
        GOTO RU60;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
TREPL:                                                                   SYMPL
      IF DHIF[DEFN] NQ 0                                                 SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
NORMPF:                                                                  SYMPL
      $BEGIN                                                             ANZSC
      DUMPIT("NORMPF");            #DEBUG PRINT                        # ANZSC
      $END                                                               ANZSC
        GOTO PFC[PPTR];                                                  SYMPL
                                                                         SYMPL
PF2C:                                                                    SYMPL
        PF12;                                                            SYMPL
        GOTO PFENDC;                                                     SYMPL
                                                                         SYMPL
                                                                         SYMPL
PF3C:                                                                    SYMPL
        PF13;                                                            SYMPL
        GOTO PFENDC;                                                     SYMPL
                                                                         SYMPL
PF4C:                                                                    SYMPL
        PF14;                                                            SYMPL
        GOTO PFENDC;                                                     SYMPL
                                                                         SYMPL
PF1C:                                                                    SYMPL
        PF11;                                                            SYMPL
PFENDC:                                                                  SYMPL
        END                                                              SYMPL
                                                                         SYMPL
NORM:                                                                    SYMPL
      ZSCC=SCCI[DEFN];                                                   SYMPL
      ZLDR=DLRX[DEFN];                                                   SYMPL
      ZRCN=RCON[DEFN];                                                   SYMPL
      IF ZRCN EQ NUMANY                                                  SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        ZRCN=RPLI;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      ZRMB=ROMB[ZLDR];                                                   SYMPL
      ZLMB=LOMB[ZLDR] - ZRMB;                                            SYMPL
TL00:                                                                    SYMPL
      IF ZRMB GR 1                                                       SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        ZRMB=ZRMB - 1;                                                   SYMPL
        POZN=BLNK[POZN];                                                 SYMPL
        GOTO TL00;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      CSNR[POZN]=ZRCN;                                                   SYMPL
      IF ZRCN EQ NUMNUL                                                  SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        POZN=FLNK[POZN];                                                 SYMPL
        ZLMB=ZLMB + 1;                                                   SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      ELSE                                                               SYMPL
        BEGIN                                                            SYMPL
        IF ZLMB EQ 0                                                     SYMPL
        THEN                                                             SYMPL
          BEGIN                                                          SYMPL
      $BEGIN                                                             ANZSC
      DMPCSNR("ANZS.1....");       # IF *=0 DUMP THE CONSTRUCT STRING  # ANZSC
      $END                                                               ANZSC
          GOTO CHGSW[ZSCC];                                              SYMPL
          END                                                            SYMPL
                                                                         SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      ZPOS=BLNK[POZN];                                                   SYMPL
      BLFC=BLNK[FCON];                                                   SYMPL
      BLNK[FCON]=ZPOS;                                                   SYMPL
      FLNK[ZPOS]=FCON;                                                   SYMPL
TL10:                                                                    SYMPL
      IF PBV[ZPOS] NQ 0                                                  SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        YPBV=PBV[ZPOS];                                                  SYMPL
        PBV[POZN]=PBV[POZN] LOR YPBV;                                    SYMPL
        FOR I=0 STEP 1                                                   SYMPL
          UNTIL SKNCP                                                    SYMPL
        DO                                                               SYMPL
          BEGIN                                                          SYMPL
          IF (YPBV LAN XBIT[I] ) NQ 0                                    SYMPL
          THEN                                                           SYMPL
            BEGIN                                                        SYMPL
            POSN[I]=POZN;                                                SYMPL
            END                                                          SYMPL
                                                                         SYMPL
          ELSE                                                           SYMPL
            BEGIN                                                        SYMPL
            IF YPBV LS XBIT[I]                                           SYMPL
            THEN                                                         SYMPL
              BEGIN                                                      SYMPL
              GOTO TL20;                                                 SYMPL
              END                                                        SYMPL
                                                                         SYMPL
            END                                                          SYMPL
                                                                         SYMPL
          END                                                            SYMPL
                                                                         SYMPL
        END                                                              SYMPL
                                                                         SYMPL
TL20:                                                                    SYMPL
      CST0[ZPOS]=0;                                                      SYMPL
      ZPOS=BLNK[ZPOS];                                                   SYMPL
      ZLMB=ZLMB - 1;                                                     SYMPL
      IF ZLMB GR 0                                                       SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        GOTO TL10;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      FLZP=FLNK[ZPOS];                                                   SYMPL
      BLNK[FLZP]=BLFC;                                                   SYMPL
      FLNK[BLFC]=FLZP;                                                   SYMPL
      BLNK[POZN]=ZPOS;                                                   SYMPL
      FLNK[ZPOS]=POZN;                                                   SYMPL
      $BEGIN                                                             ANZSC
      DMPCSNR("ANZS.2....");       # IF *=0 DUMP THE CONSTRUCT STRING  # ANZSC
      $END                                                               ANZSC
      GOTO CHGSW[ZSCC];                                                  SYMPL
                                                                         SYMPL
IACHG:                                                                   SYMPL
      DEFN=ANLTMP;                                                       SYMPL
      GOTO RULE1;                                                        SYMPL
                                                                         SYMPL
SCAN1:                                                                   SYMPL
SCAN2:                                                                   SYMPL
SCAN3:                                                                   SYMPL
SCAN4:                                                                   SYMPL
SCAN5:                                                                   SYMPL
      POSN[PPTR]=POZN;                                                   SYMPL
      PBV[POZN]=PBV[POZN] LOR XBIT[PPTR];                                SYMPL
      PPTR=ZSCC - 3;                                                     SYMPL
      POZN=POSN[PPTR];                                                   SYMPL
      PBV[POZN]= PBV[POZN] LAN YBIT[PPTR];                               SYMPL
      GOTO ANLZR;                                                        SYMPL
                                                                         SYMPL
SKPCHG:                                                                  SYMPL
RECGA:                                                                   SYMPL
      POZN=FLNK[POZN];                                                   SYMPL
ANLZR:                                                                   SYMPL
NOCHG:                                                                   SYMPL
RECG:                                                                    SYMPL
      ZCSN=CSNR[POZN];                                                   SYMPL
      IF ZCSN EQ 0                                                       SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        IF EOFI NQ 0                                                     SYMPL
        THEN                                                             SYMPL
          BEGIN                                                          SYMPL
          GOTO TXIT;                                                     SYMPL
          END                                                            SYMPL
                                                                         SYMPL
        IF PPTR NQ 0                                                     SYMPL
        THEN                                                             SYMPL
          BEGIN                                                          SYMPL
          ZSCC=PPTR + 2;                                                 SYMPL
          GOTO CHGSW[ZSCC];                                              SYMPL
          END                                                            SYMPL
                                                                         SYMPL
        SPRECG;                                                          SYMPL
        GOTO RECG;                                                       SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      TREX=ZCSN + PPTR;                                                  SYMPL
      IF (INUS[TREX] LAN XBIT[PPTR] ) EQ 0                               SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        GOTO RECGA;                                                      SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      ZPOS=POZN;                                                         SYMPL
RE10:                                                                    SYMPL
      ZSTL=STLE[TREX];                                                   SYMPL
      IF ZSTL NQ 0                                                       SYMPL
      THEN                                                               SYMPL
        BEGIN                                                            SYMPL
        ZSTI=STIX[TREX];                                                 SYMPL
        ZPOS=BLNK[ZPOS];                                                 SYMPL
        ZCSN=CSNR[ZPOS];                                                 SYMPL
        IF ZCSN EQ 0                                                     SYMPL
        THEN                                                             SYMPL
          BEGIN                                                          SYMPL
          GOTO RECGA;                                                    SYMPL
          END                                                            SYMPL
                                                                         SYMPL
        FOR I=1 STEP 1                                                   SYMPL
          UNTIL ZSTL                                                     SYMPL
        DO                                                               SYMPL
          BEGIN                                                          SYMPL
          IF ZCSN EQ CNST[ZSTI + I - 1]                                  SYMPL
          THEN                                                           SYMPL
            BEGIN                                                        SYMPL
            TREX=ZSTI + I - 1;                                           SYMPL
            GOTO RE10;                                                   SYMPL
            END                                                          SYMPL
                                                                         SYMPL
          END                                                            SYMPL
                                                                         SYMPL
        GOTO RECGA;                                                      SYMPL
        END                                                              SYMPL
                                                                         SYMPL
      DEFN=IMPL[TREX];                                                   SYMPL
      GOTO DSW[DTPE[DEFN]];                                              SYMPL
      END                                                                SYMPL
TERM                                                                     SYMPL
