*DECK TPSTACK 
USETEXT TOPTION 
      PROC TPSTACK; 
      BEGIN 
      CONTROL STEXT;
                                                                         PROGSTA
      DEF STKSIZE    #4#;          # SIZE OF STACK ENTRY               #
      BASED ARRAY PROGRAMSTACK    S(STKSIZE); 
        BEGIN                                                            PROGSTA
                                                                         PROGSTA
                                         #REVERSE POLISH STACK         # PROGSTA
        ITEM ENTRYTYPE     U( 0, 0, 3);  #0 = ABSOLUTE MOVE            # PROGSTA
                                         #1 = RELATIVE MOVE            # PROGSTA
                                         #2 = ABSOLUTE CONVERT         # PROGSTA
                                         #3 = RELATIVE CONVERT         # PROGSTA
                                         #4 = ABS FIGURATIVE SUBSCRIPT # PROGSTA
                                         #5 = REL FIGURATIVE SUBSCRIPT # PROGSTA
                                         #6 = EXPRESSION STACK PTR     # PROGSTA
                                         #7 = OPERATOR                 # PROGSTA
        ITEM EDITFLAG      B( 0, 3, 1);  #EDITING REQUIRED FLAG        # PROGSTA
        ITEM FIGSUBSCRIPT  U( 0, 4, 4);  #CODED FIGURATIVE SUBSCRIPT   # PROGSTA
                                         #1 = ALL                      # PROGSTA
                                         #2 = ANY                      # PROGSTA
                                         #3 = LAST                     # PROGSTA
                                         #4 = NEXT                     # PROGSTA
        ITEM RELFROMCHAR   U( 0, 4, 4);  #RELATIVE CHAR PTR (0-9)      # PROGSTA
                                         #OF -FROM- FIELD              #
        ITEM RELTOCHAR     U( 0, 8, 4);  #RELATIVE CHAR PTR (0-9)      # PROGSTA
                                         #OF -TO- FIELD                #
        ITEM NBRCHARS      U( 0,12,12);  #SIZE OF FIELD IN CHARACTERS  # PROGSTA
        ITEM STACKLENGTH   U( 0,12,12);  #LENGTH OF EXPRESSION STACK   # PROGSTA
                                         #IN ENTRIES                   # PROGSTA
        ITEM FROMATTRIB    I( 0,24,18);  #PTR TO ATTRIB OF -FROM- FIELD# PROGSTA
        ITEM FROMWORDADDR  I( 0,24,18);  #RELATIVE ADDR OF -FROM- FIELD# PROGSTA
        ITEM RESULTLOC     I( 0,24,18);  #RECEIVING ADDRESS FOR RESULTS# PROGSTA
                                         #OF OPERATION                 # PROGSTA
        ITEM LITBITS       U( 0,24, 2);  #FLAGS FOR LITERAL OPERANDS   # PROGSTA
        ITEM LIT1          B( 0,24, 1);  #T IF OPERAND 1 IS A LITERAL  # PROGSTA
        ITEM LIT2          B( 0,25, 1);  #T IF OPERAND 2 IS A LITERAL  # PROGSTA
        ITEM OPCODE        I( 0,26,16);  #CODED OPERATOR               # PROGSTA
                                         #INT,SPRC,DPREC,CMPLX OPERATOR# PROGSTA
                                         #00,20,40,60   +              # PROGSTA
                                         #01,21,41,61   -              # PROGSTA
                                         #02,22,42,62   *              # PROGSTA
                                         #03,23,43,63   /              # PROGSTA
                                         #04,24,44,64   UNARY -        # PROGSTA
                                         #05,25,45,65   **             # PROGSTA
                                         #06,26,46,66   EQ             # PROGSTA
                                         #07,27,47,67   NE             # PROGSTA
                                         #10,30,50 -    LT             # PROGSTA
                                         #11,31,51 -    GT             # PROGSTA
                                         #12,32,52 -    LE             # PROGSTA
                                         #13,33,53 -    GE             # PROGSTA
                                         #                             # PROGSTA
                                         #ALPHANUMERIC  LOGICAL        # PROGSTA
                                         # 36 = EQ      14 = EQUIVALENT# PROGSTA
                                         # 37 = NE      15 = IMPLIES   # PROGSTA
                                         # 54 = LT      16 = AND       # PROGSTA
                                         # 55 = GT      17 = OR        # PROGSTA
                                         # 56 = LE      34 = XOR       # PROGSTA
                                         #                             # PROGSTA
                                         # 70 = END OF OPERATORS FLAG  # PROGSTA
        ITEM DIGIT1        U( 0,36, 3);  #DIGIT 1 OF OPCODE            # PROGSTA
        ITEM DIGIT2        U( 0,39, 3);  #DIGIT 2 OF OPCODE            # PROGSTA
        ITEM TOATTRIB      I( 0,42,18);  #PTR TO ATTRIB OF -TO- FIELD  # PROGSTA
        ITEM TOWORDADDR    I( 0,42,18);  #RELATIVE ADDR OF -TO- FIELD  # PROGSTA
        ITEM CONVERTCODE   U( 1, 0, 6);  #TYPE OF CONVERSION REQUIRED  # PROGSTA
        ITEM CVTCODE1      U( 1, 0, 3);  #UPPER 3 BITS OF CONVERTCODE  # QU3A072
        ITEM CVTCODE2      U( 1, 3, 3);  #LOWER 3 BITS OF CONVERTCODE  # QU3A072
        ITEM EXPRESSTACK   I( 1, 6,18);  #PTR TO EXPRESSION STACK      # PROGSTA
        ITEM FROMWORDBASE  I( 1,24,18);  #PTR TO ADDRESS OF RECORD     #
                                         #CONTAINING -FROM- FIELD      #
        ITEM WORDBASES     U( 1,25,35);  #                             # PROGSTA
        ITEM TOWORDBASE    I( 1,42,18);  #PTR TO ADDRESS OF RECORD     #
                                         #CONTAINING -TO- FIELD        #
        ITEM PRKEYENTRY    B( 2, 0, 1);  #PRIMARY KEY FLAG             # PROGSTA
        ITEM KEYEXCL       B( 2, 1, 1);  #TRUE IF EXCLUDED KEY         #
        ITEM ALKEYENTRY    B( 2, 2, 1);  #ALTERNATE KEY FLAG           # PROGSTA
        ITEM OVERSIGN      B( 2, 3, 1);  #TRUE IF OVERPUNCH            # PROGSTA
        ITEM KEYBITRANK    U( 2,27, 6);  #RANK IN BIT MAP              #
        ITEM KEYID         U( 2,33,12);  #ORDINAL OF IMF ACCESS PATH   #
        ITEM PRMAJKEY      B( 2, 4, 1);  #TRUE IF MAJOR PRIMARY KEY    #
        ITEM ALTMAJKEY     B( 2, 5, 1);  #TRUE IF MAJOR ALTERNATE KEY  #
        ITEM KEYTYPE       U( 2, 6, 3);  #ORIGINAL TYPE OF KEY         #
        ITEM ALTKEYSIZE    U( 2, 9, 9);  #SIZE OF ALTERNATE KEY OF     #
                                         #WHICH THIS IS MAJOR          #
        ITEM RELORDINAL    U( 2,18, 9);  #RELATION ORDINAL             #
        ITEM RECDORDINAL   U( 2,27,12);  #RECORD ORDINAL IF CDCS DBI   #
                                         # 1 IF CRM DBI, ELSE 0        #
        ITEM ITEMORDINAL   U( 2,39,15);  #ITEM ORDINAL IF CDCS, ELSE 0 #
                                         #IF MAJOR KEY, ITEM ORDINAL   #
                                         #OF FULL KEY OF WHICH THIS KEY#
                                         #IS A MAJOR PART              #
        ITEM AREAORD       U( 2,54, 6);  #ORDINAL OF AREA TO USE       # PROGSTA
                                         #POSITION OF AREA TABLE WITHIN#
                                         #AREA TABLE CHAIN             #
                                         # IF IMF DATABASE MODE, RECORD#
                                         # ID OF ITEM BEGING USED      #
        ITEM SKIPT         B( 3, 0, 1);  #SKIP ON TRUE                 #
        ITEM SKIPF         B( 3, 1, 1);  #SKIP ON FALSE                #
        ITEM SKIPADDR      U( 3, 6,18);  #NEXT ENTRY TO PROCESS        #
        ITEM BACKLINK      U( 3,24,18);  #BACK POINTER FOR LOCAL STACK #
        ITEM FORWDLINK     U( 3,42,18);  #FORWARD POINTER              #
        ITEM PSTKWORD      U( 0, 0,60);  #FULL PROGRAM STACK ACCESS    # PROGSTA
        ITEM PSTKWORD1     U( 1, 0,60);  #WHOLE WORD OVERLAY           # PROGSTA
        ITEM PSTKWORD2     U( 2, 0,60);  #WHOLE WORD OVERLAY           # PROGSTA
        ITEM PSTKWORD3     U( 3, 0,60);  # WHOLE WORD OVERLAY          #
                                                                         PROGSTA
        END                                                              PROGSTA
                                                                         PROGSTA
      END 
      TERM
