*COMDECK SETPSL 
CONTROL EJECT;
#----------------------------------------------------------------------#
#                                                                      #
#     S E T P S L                                                      #
#                                                                      #
# SETS *PROGSTACKLOC* TO THE LOCATION OF THE FIRST *IF* PROGRAM STACK. #
# IF THERE IS NO *IF*, *PROGSTACKLOC* IS SET TO ZERO.                  #
#----------------------------------------------------------------------#
  
      PROC SETPSL;                 # SET PROGRAM STACK LOCATION        #
        BEGIN 
        ITEM I I;                  # INDEX INTO BASICTABLE             #
        ITEM NEXTBLOCK I;          # NEXT BLOCK OF BASICTABLE TO SEARCH#
        XREF ITEM DUMMY I;         # DUMMY ITEM FOR A *FOR* LOOP       #
  
  
        PROGSTACKLOC = 0;          # INITIALIZE RESULT IN CASE NO *IF* #
        NEXTBLOCK = BASTABLOC;     # POS OF FIRST BLOCK OF BASICTABLE  #
        FOR DUMMY = DUMMY 
        WHILE NEXTBLOCK NQ 0
        DO
          BEGIN 
          P<BASICTABLE> = NEXTBLOCK;   # POSITION TO NEXT BLOCK        #
          NEXTBLOCK = 0;               # NO CONTINUATION BLOCK YET     #
          FOR I = 0 STEP 1             # FOR EACH OF THE ENTRIES       #
          UNTIL 7 
          DO
            BEGIN 
            IF BASCODE[I] EQ CONTCODE # IF CONTINUATION BLOCK ...      #
            THEN
              BEGIN 
              NEXTBLOCK = BASCLAST[I]; # GET PTR TO NEXT BLOCK         #
              TEST DUMMY;          # DONE WITH THIS BLOCK              #
              END 
  
            IF BASCODE[I] EQ ENDCODE  # END OF TABLE                   #
            THEN
              BEGIN 
              TEST DUMMY;          # DONE WITH THIS BLOCK              #
              END 
  
            IF BASCODE[I] EQ IFCODE  # IF THIS IS AN *IF*              #
            THEN
              BEGIN 
              PROGSTACKLOC = BASCADDR[I];  # ADDR OF THE *IF* PROG STK #
              TEST DUMMY;                  # DONE WITH THIS BLOCK      #
              END 
            END 
          END 
  
        RETURN; 
        END 
