*DECK ISEXPR
USETEXT TCMMDEF 
USETEXT TENVIRN 
USETEXT TEXPRES 
USETEXT TREPORT 
USETEXT TRPTLST 
USETEXT TXSTD 
      PROC ISEXPR;
  
#----------------------------------------------------------------------#
#                                                                      #
#  THE FOLLOWING PROCS ARE XDEF"D WITHIN THIS DECK:                    #
#                                                                      #
#     LASTPTR                      SET *LAST* POINTER IN HEADER        #
#     STOATTR                      STORE ATTRIBUTES                    #
#                                                                      #
#----------------------------------------------------------------------#
  
  
      BEGIN 
  
          BASED ARRAY A;
            ITEM AMRPT I(0,42,18),
                 ACLASS I(0,12,6),
              ADISPSIZ U(0,4,11), 
          ALLFG B(0,4,1), 
          UPBND I(0,30,12), 
          ADECPT  I(0,21,6),
                 AWPOS I(0,18,18),
         ABPOS  U(0,36,6),
                 ALG I(0,42,18),
                 AMURAL U(0,0,60),
         APICSZ I(0,27,15), 
                 AMLG I(0,0,3); 
      ITEM CNCD C(10) = O"01112027364554550000"; # CONVERT CODE TABLE  #
      XREF ITEM CTR          I; 
      XREF ITEM HEADADDR     I; 
*CALL DEFMURL 
       DEF DFTRPWD #O"40000000000001000000"#;  #DEFAULT VALUE FOR 
                                                REPORTLIST WORD 1,
                                                BEYOND IS ON, 
                                                LINE NB IS 1# 
         DEF DFTRPWD2 #O"04010000000000000000"#;
  
      XREF ITEM SM$GROUPID   I;    # GROUP ID FOR CURRENT SYNTAX STUFF #
  
      XREF PROC SETPOS; 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
         PROC FROMATTR;                                                 020130
          BEGIN 
         ITEM I I;
         ITEM K I;
                 BASED ARRAY B; 
                     ITEM BB U(0,0,60); 
                 IF TOATTRLEFT[TOATTPTR] LS 6 THEN
                 BEGIN
                             TOATTPTR = TOATTPTR + 1; 
                             TOATTRIADD[TOATTPTR] = 
                                   CMM$ALF(127, 0, SM$GROUPID); 
                             TOATTRLEFT[TOATTPTR] = 127;
                             INCREMN = 0; 
                 END
                 P<A> = TOATTRIADD[TOATTPTR] + INCREMN; 
                 AMURAL[0] = 0; 
                 AMURAL[1] = 0; 
              ALG[0] = RESULTSIZE;
          APICSZ[1] = PICSIZ[DATATYPE];                                 002790
          ADISPSIZ[1] = DISPSIZ[DATATYPE];                              002800
          ADECPT[1] = DECPT[DATATYPE];                                  002810
          CHARLENGTH[REPORTINDEX] = APICSZ[1];                          002820
          IF DEFMURAL[DATATYPE] NQ 0  # IF MURAL REQUIRED              #
          THEN
            BEGIN 
            INCREMN = INCREMN + 1;
            AMRPT[1] = 3;          # REL PTR TO MURAL                  #
            AMURAL[2] = DEFMURAL[DATATYPE];  # STORE DEFAULT MURAL     #
            END 
         ACLASS[0] = RESULTUSAGE;                                       020170
         AWPOS[0] = DATAWORDADDR;                                       020180
          FROMADDRESS[REPORTINDEX] = P<A> - 1;                          020190
         INCREMN = INCREMN + 2; 
         TOATTRLEFT[TOATTPTR] = 127 - INCREMN;
         RETURN;                                                        020220
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
       XDEF PROC LASTPTR;              #PROC TO SET THE LAST POINTER IN#
       PROC LASTPTR;                   #THE HEADER# 
       BEGIN
           BASED ARRAY A; 
               ITEM AA I(0,36,12);
          IF NOT FULLSYNTX THEN STDYES; 
           P<A> = HEADADDR; 
           AA[0] = REPORTINDEX - 1; 
          IF CTR NQ 0 THEN
          BEGIN 
              REPORTINDEX = REPORTINDEX - 1;
              CTR = CTR - 1;
              SETPOS; 
          END 
           STDYES;
       END
  
  
  
  
#----------------------------------------------------------------------#
  
  
  
  
          XDEF PROC STOATTR;
          PROC STOATTR; 
          BEGIN 
                 ITEM I;
          IF NOT FULLSYNTX THEN BEGIN 
              STDNO;            END 
                 IF PROGSTACKLEN GR 0 THEN GOTO EXPR; 
          CHARLENGTH[REPORTINDEX] = RESULTSIZE; 
                 FROMCHAR[REPORTINDEX] = DATACHARPOS; 
          IF INDICED THEN I = 4;
                 ELSE BEGIN IF DATATYPE EQ 0 AND NOT DATANAMEPIC
                             THEN I = 1;
                             ELSE I = 2;
                     END
                 TYPENTRY[REPORTINDEX] = I; 
                 CNVTCODE[REPORTINDEX] = C<DATATYPE,1>CNCD; 
                 IF ABSADDRESS THEN 
                             ADDRFROM[REPORTINDEX] = 0; 
                 ELSE 
                             ADDRFROM[REPORTINDEX] = DATANAMEBASE;
          IF I EQ 4 THEN BEGIN
              STACKADD[REPORTINDEX] = INDCTBLOC;
              FROMADDRESS[REPORTINDEX] = DATANAMEPTR; END 
          ELSE
          IF I EQ 2 THEN BEGIN                                          020030
         IF FIGLITDATA EQ 2 OR FIGLITDATA EQ 3 THEN                     020040
          BEGIN P<A> = DATANAMEPTR + 1; 
                I = DATACHARPOS * 6;
         BASED ARRAY B; ITEM BB U(,,60);
                IF NOT INDICED AND (I NQ ABPOS[0] OR DATAWORDADDR 
                      NQ AWPOS[0] ) THEN
                BEGIN P<B> =P<A> - 1; 
                      P<A> = CMM$ALF(7, 0, SM$GROUPID); 
                      FOR I = 0 STEP 1 UNTIL 6 DO 
                         AMURAL[I] = BB[I]; 
                AWPOS[1] = DATAWORDADDR;
          ABPOS[1] = DATACHARPOS * 6; 
                DATANAMEPTR = P<A>; 
          END 
           FROMADDRESS[REPORTINDEX] = DATANAMEPTR;                      020050
          END 
         ELSE FROMATTR;                                                 020060
                         END                                            020070
          ELSE FROMADDRESS[REPORTINDEX] = DATAWORDADDR;                 020080
                 STDNO; 
            EXPR: 
                 TYPENTRY[REPORTINDEX] = 3; 
                 FROMCHAR[REPORTINDEX] = DATACHARPOS; 
              CHARLENGTH[REPORTINDEX] = RESULTSIZE; 
                 CNVTCODE[REPORTINDEX] = C<RESULTUSAGE,1>CNCD;
                 STACKADD[REPORTINDEX] = PROGSTACKLOC;
                 ADDRFROM[REPORTINDEX] = RESULTSLOC;
         DATAWORDADDR = 0;                                              020100
          DATATYPE = RESULTUSAGE;                                       002840
         FROMATTR;                                                      020110
         IF DATATYPE EQ 0 THEN     # CHARACTER ITEM # 
           BEGIN
           IF RESULTSIZE NQ PICSIZ[DATATYPE]
           THEN 
             BEGIN
             CHARLENGTH[REPORTINDEX] = RESULTSIZE;
             APICSZ[1] = RESULTSIZE;  # RESET THE PICTURE SIZE         #
             ADISPSIZ[1] = RESULTSIZE;
             END
           END
                 STDNO; 
          END 
  
  
  
  
#----------------------------------------------------------------------#
  
  
      END 
      TERM
