*DECK TEXPRES 
      PROC TEXPRES ;
      BEGIN 
      CONTROL STEXT;
#     THIS IS  C E X P R E S S                                         #
      STATUS TYPEOFTHING FIGURATVESUB,LITERAL,TEMPNAME,DATANAME,
                          CONDEXPR,AREANAME;
  
#     DEFINITIONS FOR DATA TYPE (ALIAS DATA CLASS, ALIAS USAGE) AS     #
#     SPECIFIED IN QU/CRM SUBSCHEMA                                    #
  
      DEF DT$CHAR       #O"0"#;    # CHARACTER                         #
      DEF DT$NUM        #O"1"#;    # NUMERIC                           #
      DEF DT$INTEGER    #O"2"#;    # INTEGER                           #
      DEF DT$FIXED      #O"3"#;    # FIXED, UNNORMALIZED FLOATING      #
                                   # POINT, COMP-1                     #
      DEF DT$FLOAT      #O"4"#;    # NORMALIZED FLOATING POINT, COMP-2 #
      DEF DT$DOUBLE     #O"5"#;    # DOUBLE PRECISION                  #
      DEF DT$COMPLEX    #O"6"#;    # COMPLEX                           #
      DEF DT$LOGICAL    #O"7"#;    # LOGICAL                           #
  
  
#     DEFINITIONS FOR ITEM ENTRY TYPE                                  #
  
      DEF ET$GROUP      #O"0"#;    # NON-REPEATING GROUP               #
      DEF ET$ITEM       #O"1"#;    # ELEMENTARY ITEM                   #
      DEF ET$RPTGROUP   #O"2"#;    # REPEATING GROUP                   #
      DEF ET$RPTRPTGRP  #O"3"#;    # REPEATING GROUP WITHIN A REPEATING#
                                   # GROUP                             #
      DEF ET$VECTOR     #O"4"#;    # VECTOR                            #
      DEF ET$RPTVECTOR  #O"5"#;    # VECTOR WITHIN A REPEATING GROUP   #
      DEF ET$VARGRP     #O"6"#;    # VARIABLE DEPENDING ON GROUP       #
      DEF ET$RECORD     #O"7"#;    # RECORD                            #
      DEF ET$AREA       #O"10"#;   # AREA                              #
      DEF ET$ENDOFAREA  #O"77"#;   # END OF AREA                       #
  
  
#     DEFINITIONS FOR SUBSCHEMA ENTRY                                  #
  
      DEF SE$RECORD     #O"2"#;    # RECORD ENTRY                      #
      DEF SE$ITEM       #O"3"#;    # ITEM ENTRY                        #
  
      COMMON CEXPRESS;
          BEGIN 
          ITEM PROGSTACKLOC;           # FWA OF PROGRAM STACK CREATED  #
                                       # BY EXPRESS.                   #
          ITEM PROGSTACKLEN;           # LENGTH OF PROGRAM STACK IN    #
                                       # ENTRIES.                      #
          ITEM RESULTSLOC;             # ADDRESS OF EXPRESSION RESULT. #
          ITEM RESULTUSAGE;            # USAGE OF RESULT (SAME CODE AS #
                                       # IN DATATYPE).                 #
          ITEM LOGICALRESLT B;         # TRUE = RESULT OF EXPRESSION   #
                                       # EVALUATION IS TYPE LOGICAL.   #
          ITEM RESULTSIZE;             # SIZE OF EXPRESSION RESULT IN  #
                                       # CHARACTERS.                   #
          ITEM FIGLITDATA S:TYPEOFTHING;#FLAG FOR ENTITY TYPE: 0 = FIG-#
                                       # URATIVELY SUBSCRIPTED DATA    #
                                       # ITEM, 1 = LITERAL CONSTANT,   #
                                       # 2 = DATA NAME ON DEFINE LIST, #
                                       # 3 = DATANAME ON DESCRIBE LIST #
                                  #4 = SPECIFIED# 
                                     # DATANAME = CONDITIONAL EXPRESS#
                                  #5 = AREA NAME# 
          ITEM DATANAMEUSE;            # CODED VALUE USING SAME CODES  #
                                       # AS FOR DATATYPE.              #
          ITEM DATATYPE;               # CODED VALUE: 0 = CHAR ITEM    #
                                       #              1 = NUMERIC      #
                                       #              2 = BIN INTEGER  #
                                       #              3 = UNNORMALIZED #
                                       #              4 = NORMALIZED   #
                                       #              5 = DOUBLE PREC  #
                                       #              6 = COMPLEX      #
                                       #              7 = LOGICAL      #
          ITEM DATAWORDADDR;           # WORD ADDRESS OF DATA.         #
          ITEM DATACHARPOS;            # CHAR OFFSET IN DATAWORDADDR.  #
          ITEM ABSADDRESS B;           # FLAGS DATANAMEWORD AS ABSOLUTE#
                                       # OR RELATIVE, TRUE = ABSOLUTE. #
          ITEM DATALENG;               # LENGTH OF DATA IN CHARACTERS. #
          ITEM DATANAMEEXPR;           # FWA OF EXPRESSION STACK WHICH #
                                       # DEFINES VALUE OF DATANAME.    #
          ITEM DATANAMEPIC B;          # FLAG FOR EDIT PICTURE, TRUE = #
                                       # PICTURE MURAL GIVEN.          #
          ITEM DATANAMEPTR;            # ADDRESS OF DEFDESC LIST ENTRY #
                                       # FOR DATANAME.                 #
          ITEM DATANAMEBASE;           # BASE OF REFERENCE WHEN DATA-  #
                                       # WORDADDR IS RELATIVE.         #
          ITEM AKEYITEM B;             # = TRUE WHEN DATANAME IS A KEY #
          ITEM INDICED B; 
          ITEM INDCTBLOC; 
          ITEM TYPEALOW; #COMBINATION OF ITEM TYPES THAT IS ALLOWED FOR#
                         #CERTAIN DIRECTIVES--# 
                         #     0  --         AREA                      #
                         #     1 --                   DESCRIBE         #
                         #     2  -- DEFINE                            #
                         #     3  -- DEFINE  AREA                      #
                         #     4  -- DEFINE  AREA               SPECIFY#
                         #     5  -- DEFINE  AREA     DESCRIBE  SPECIFY#
                         #     6  -- DEFINE (AREA XOR DESCRIBE) SPECIFY#
                         #     7  -- DEFINE           DESCRIBE  SPECIFY#
          ITEM DIRWORDADDR;  #THIS ITEM CONTAINS THE DIRECTORY WORD 
                              ADDRESS OF THE ITEM CURRENTLY IN THE
                              ARRAY DIRECTENTRY. #
          ITEM DOMRECORDWA;  #THIS ITEM ALWAYS CONTAINS THE DIRECTORY 
                              WORD ADDRESS OF THE RECORD ITEM TO WHICH
                              BELONGS THE ELEMENTARY OR GROUP ITEM
                              CURRENTLY IN THE ARRAY DIRECTENTRY.  #
          ITEM AREAITM B; 
  
  
          #---------- 
          THE FOLLOWING TWO ARRAYS ARE USED TO RECEIVE THE ATTRIBUTES OF
                 - AN ELEMENTARY OR GROUP ITEM
                 - A RECORD ITEM
                 - AN AREA ENTRY. 
           IT MAY BE FILLED IN BY ONE OF THE FOLLOWING ROUTINE
                 - NXTITEM (TO GET THE NEXT ELEMENTARY ITEM THAT FOLLOWS
                   THE ONE CURRENTLY IN DIRECTENTRY)
                                   ------#
          ARRAY DIRECTENTRY S(3) ; BEGIN
          ITEM RCTYPE      U(0, 0, 6); # TYPE OF ENTRY                 #
                                       #  0 - GROUP ITEM               #
                                       #  1 - ELEMENTARY ITEM          #
                                       #  2 - REPEATING GROUP          #
                                       #  3 - REP. GRP. WITHIN REP. GRP#
                                       #  4 - VECTOR                   #
                                       #  5 - VECTOR WITHIN REP. GROUP #
                                       #  7 - RECORD                   #
                                       # 10 - AREA ENTRY               #
                                       # 77 - END OF AREA DESCRIPTION  #
          ITEM NXTPTR      U(0,48,12); #NEXT ITEM POINTER#
          ITEM ITEMLEVEL   U(0, 6, 6); #LEVEL NUMBER# 
          ITEM DOMINANTPTR U(0,18,18); #DOMINANT ITEM POINTER          #
          ITEM PRIORPTR    U(0,36,12); #PRIOR ITEM POINTER# 
          ITEM NAMELGC     U(1, 0, 6); #LENGTH OF NAME IN CHARACTERS# 
          ITEM NAMELGW     U(1, 6, 6); #LENGTH OF NAME IN WORDS#
          ITEM CLASS       U(1,12, 6); #CLASS, ALIAS USAGE, ALIAS DATA
                                        TYPE, OF ITEM 
                                         0  CHARACTER 
                                         1  NUMERIC 
                                         2  INTEGER 
                                         3  UNNORMALIZED FLOATING POINT 
                                         4  NORMALIZED FLOATING POINT 
                                         5  DOUBLE PRECISION
                                         6  COMPLEX NUMBER
                                         7  LOGICAL          #
          ITEM BWP         U(1,18,18); #BEGINNING WORD POSITION OF ITEM#
          ITEM BBP         U(1,36, 6); #BEGINNING BIT POSITION OF 
                                        ITEM WITHIN BWP     # 
          ITEM USESIZE     U(1,42,18); #INTERNAL SIZE OF ITEM EXPRESSED 
                                        IN CHARACTERS.  ALWAYS 10 FOR 
                                        INTEGERS, FLOATING POINTS AND 
                                        NON-DISPLAY LOGICAL.  ALWAYS 20 
                                        FOR DOUBLE-PRECISION AND COMPLEX
                                        NUMBERS.  VARIABLE OTHERWISE. # 
          ITEM KEYFLAG     B(2, 0, 1); #TRUE IS ITEM IS A KEY (SIS KEY, 
                                        SDA KEY OR SORTED SEQ FILE KEY #
ITEM OCCWITH B(2,1,1);
           ITEM OCCURS B(2,2,1);    # TRUE IF ITEM IS OCCURING #        002660
          ITEM JUSTRGHT B(2,3,1);  # TRUE IF RIGHT JUSTIFIED           #
          ITEM EXPICSIZE U(2,4,11);   #PICTURE SIZE OF ITEM,EXCLUDING 
                                        INSERTION CHARACTERS  # 
          ITEM SIGN B(2,15,1);                                           XXXX 
          ITEM ALTERKEYFLG B(2,16,1);  # TRUE IF ALTERNATE KEY         #
          ITEM ALTERFIRST B(2,17,1);                                     XXXX 
          ITEM ALTERDUP B(2,18,1); # IF ALTERNATE KEY (IF ALTERKEYFLG),#
                                   # TRUE IF DUPLICATE ALTERNATE KEYS  #
          ITEM MAJORKEYFLG B(2,18,1);  # IF NOT ALTERNATE KEY (NOT     #
                                   # ALTERKEYFLG), TRUE IF MAJOR KEY   #
          ITEM UNIQUENAME  B(2,19,1);  # TRUE--THIS NAME IS UNIQUE IN  #
                                       # THE SUBSCHEMA.                #
          ITEM DPTPRES B(2,20,1);  # TRUE IF DEC PT ACTUALLY PRESENT,  #
                                   # FALSE IF ASSUMED DEC PT           #
          ITEM CDPTLOC I(2,21,6);  # CHAR POS OF POINT RELATIVE        #
                                   # TO THE END OF THE FIELD           #
                                   # > 0= POINT TO LEFT                #
                                   # <0 = POINT TO RIGHT               #
          ITEM INCPICSIZE U(2,27,15);  #PICTURE SIZE OF ITEM INCLUDING
                                        INSERTION CHARACTERS  # 
          ITEM PTRMURAL I(2,42,18); 
          ITEM RECORDPTR U(1,42,18);
                                      #POINTER TO RECORD ENTRY# 
                                   END
          ARRAY DIRECTENTRY2 [0:5];  BEGIN
          ITEM OCCURWORD   U(0, 0,60); #OCCURRING DATA# 
          ITEM ITEMNAME    C(0, 0,10); #NAME OF ITEM, 1 TO 32 CHARACTER#
          ITEM DEPENDING   B(0, 1, 1); #DEPENDING ON FLAG#
          ITEM OCCURCOUNT U(0,6,18);  #NUMBER OF OCCURENCES#
          ITEM DEPENDNAME   U(00,42,18);  # IF *DEPENDING* IS TRUE,    #
                                          # THIS IS A BACKWARD RELATIVE#
                                          # PTR TO THE DEPENDING-ON    #
                                          # ITEM ENTRY (RELATIVE TO THE#
                                          # WA OF THIS ENTRY).         #
                                          # IE - SUBTRACT THIS VALUE   #
                                          # FROM THE WA OF THIS ITEM   #
                                          # ENTRY TO GET THE WA OF THE #
                                          # ITEM ENTRY OF THE          #
                                          # DEPENDING-ON ITEM.         #
          ITEM SYNONYMPTR  U(0, 0,18); #PTR TO NEXT ITEM ENTRY WITH    #
                                       #SAME HASH ID                   #
          ITEM SAMENAME U(0,18,18);  #SAME NAME POINTER#
                 #WORDS 0 TO 5 OF DIRECTENTRY2 VARY IN CONTENT
                  0 CONTAINS FIRST 10 CHAR OF NAME IF ITEM IS NOT OCCUR-
                    RING, OCCURRING DATA OTHERWISE. 
                  1-3 CONTAIN THE NAME OR PART OF IT, WITH TRAILING 
                      ZEROS, DEPENDING ON THE NAME LENGTH AND THE 
                      OCCURRING FLAG. 
                 IN THE DIRECTORY, WORD 0 IS ACTUALLY FILLED WITH 
                 POINTERS RELEVANT ONLY TO THE DIRECTORY ACCESS ROUTINES
                 WHEREAS THE OCCURRING DATA FOLLOWS THE DATA NAME.
                 THE ACCESS ROUTINES DISCARD THE USELESS WORD AND MOVE
                 UP THE OCCURRING DATA (IF PRESENT) AND THE NAME.  #
                                     END
          ITEM CONDIT B;                                                000710
          ITEM FANY B;                                                  000720
          ITEM FALL B;                                                  000730
          ITEM FNEXT B;                                                 000740
          ITEM FLAST B;                                                 000750
           ITEM DESITM B; 
          ITEM COLEFFECT; 
      ITEM SIGNATERKEY B; 
          ITEM ALTKEYITEM B;  #ON IF ITEM IS ALTERNATE KEY-FIELD.      # XXXX 
          ITEM AMAJKEYITEM B;      # TRUE IF ALTERNATE MAJOR KEY ITEM  #
          ITEM PMAJKEYITEM B;      # TRUE IF PRIMARY MAJOR KEY ITEM    #
          ITEM SIZEALTKEY I;       # SIZE OF ALTERNATE KEY OF WHICH    #
                                   # THIS ITEM IS A MAJOR KEY          #
      ITEM EXCLKEYITEM B;          # TRUE IF PART/ALL OF EXCLUDED KEY  #
      ITEM DATAITEMORD I;          # ITEM ORDINAL AS READ FROM SUB-    #
                                   # SCHEMA IF CDCS, ELSE 0            #
      ITEM DATARECDORD I;          # RECORD ORDINAL IF CDCS DATA NAME  #
                                   # 1 IF CRM DATA NAME, ELSE 0        #
          END 
      END 
      TERM
