*DECK  TABCOL 
          IDENT  TABCOL 
          COMMENT  TAB TO COLUMN CONVERSION 
TABCOL    TITLE    TABCOL - TAB TO COLUMN CONVERSION
          TITLE     TAB-TO-COLUMN CONVERSION               (OVERLAY 1,1)
          ENTRY  TABCOL 
***  THIS COMPASS ROUTINE IS A FUNCTION WHICH RETURNS THE BINARY
***  COLUMN NUMBER CORRESPONDING TO THE TAB NUMBER WHICH IS 
***  PASSED AS A PARAMETER TO THE FUNCTION.  CALLING SEQUENCE - 
***        I = TABCOL (TABNUM)
***  THE TABS ARRAY IN THE COMMON AREA CREPORT IS USED TO 
***  DETERMINE WHERE TABS ARE SET.  IF THERE IS NO TAB SETTING
***  CORRESPONDING TO THE DESIRED TAB NUMBER, THE FUNCTION
***  VALUE -1 IS RETURNED.
          SPACE 2 
 TABCOL   BSS    1
          SA1    A1                PICK UP NUMBER OF TAB
          SA1    X1 
          SB1    1                 B1 CONTAINS VALUE 1
          SB3    B0                SHIFT COUNT IN B3
          SB4    B0                BIT COUNT IN B4
          SA2    TABS              PICK UP TAB WORD 
          SX3    B0                ZERO TAB COUNT IN X3 
          SB5    60 
          SB6    3*60 
 TABC100  NG   X2,TABC140          TEST FOR TAB BIT SET 
 TABC110  LX2    1
          SB3    B3+B1             IF NOT, INCR. SHIFT COUNT
          SB4    B4+B1                  AND BIT COUNT 
          LT    B4,B5,TABC100      LOOP IF NOT END OF WORD
          LT    B3,B6,TABC120      TEST IF END OF TAB WORDS 
          SX6    -1                IF SO, EXIT WITH FN VALUE = -1 
          EQ    TABCOL
          SPACE  1
 TABC120  SA2    A2+B1             IF NOT, LOAD NEW WORD
          SB4    B0                  SET BIT COUNT TO ZERO, 
          EQ    TABC100            AND LOOP 
          SPACE  1
 TABC140  SX3    X3+B1             IF TAB BIT SET : 
          IX4    X3-X1             INCR. TAB COUNT, SEE IF TO 
          NZ    X4,TABC110         DESIRED TAB NUMBER 
          SX6    B3                RETURN COLUMN NUMBER IF SO 
          EQ    TABCOL
          SPACE  3
***  THE ENTRY POINT NTABCOL IS AN INTEGER FUNCTION RTURNING THE COLUMN 
***  NUMBER CORRESPONDING TO THE TAB AFTER THE COLUMN NUMBER WHICH
***  IS PASSED AS A PARAMETER TO THE FUNCTION.  CALLING SEQUENCE -
***          I = NTABCOL(COLNUM)
***  THE VALUE -1 IS RETURNED IF THERE IS NO TAB AFTER THE GIVEN COLUMN 
          SPACE  3
          ENTRY  NTABCOL
          SPACE  1
 TABNUM   BSS    1
 NTABCOL  EQU    TABNUM 
          SA4    NTABCOL           SET UP RETURN THROUGH TABCOL 
          BX6    X4 
          SA6    TABCOL 
          RJ     CLR.INS           CLEAR INSTRUCTION STACK
 CLR.INS  DATA   0
          SA1    A1 
          SA3    X1                PICK UP COLUMN NUMBER
          SB1    1
          SB5    60 
          SB6    3*60 
          SA2    TABS              GET CORRECT TAB WORD 
          SB2    X3-60                 FOR THIS COLUMN
          LT   B2,TABN100 
          SA2    A2+B1
          SB2    X3-120 
          LT   B2,TABN100 
          SA2    A2+B1
          SB2    X3-180 
 TABN100  SB4    B2+B5             SET BIT COUNT
          LX2    B4,X2             SHIFT TAB WORD TO GET TO COLUMN
          SB3    X3                SET COLUMN COUNT TO COLUMN VALUE +1
          SX1    B1                SET -DESIRED TAB- TO 1 
          SX3    B0 
          EQ   TABC110               AND JUMP 
          SPACE  3
          LIST   -L          *CALL MACRO FOLLOWS
*CALL MACRO 
          LIST   L
          LIST   -L          *CALL NUMOPT FOLLOWS 
*CALL NUMOPT
          LIST   L
          LIST   -L          *CALL CREPCMP FOLLOWS
*CALL CREPCMP 
          LIST   L
          END 
