*DECK BASPOS
          IDENT  BASPOS1
          ENTRY  BASTPOS,BASXPOS
          TITLE  BASTPOS - POS(A$,B$,C) INTERFACE -A-.
          COMMENT BASIC 3 - POS(A$,B$,C) INTERFACE -A-. 
          SPACE  4
*CALL ERMNUM
          SPACE  4
          CON    10HBASTPOS 
  
 BASTPOS  PS                 ENTRY/EXIT 
          RJ     =XBASSBR=   SAVE REGISTERS 
          SX6    B6-3        CHECK THE NUMBER OF PARAMETERS PASSED
          ZR     X6,POS1A    BR, 3 PARAMETER PASSED 
          SX3    0           CLEAR X3 WHEN THE THIRD PARAMETER OMIITED
POS1A     SA1    =XBASANSI
          ZR     X1,NOTANS   IN ANSI MODE.
          BX6    X6-X6
          PX6    X6 
          RX3    X3+X6
 NOTANS   BSS    0
          UX6    X3,B7
          LX6    X6,B7
          SA6    POSE        STARTING POSITION FOR SEARCH/MATCH 
  
          SX7    X5          FWA
          SB7    B0 
          PL     X5,POS1     FWA IS ABSOLUTE
          SB7    B4+         FWA IS RELATIVE TO B4+ 
 POS1     SX7    X7+B7       FWA OF STRING 1
          AX5    18+18
          SA7    POSA 
          SX6    X5 
          LX5    18+18+3     CHECK FOR COLON-BLANK FLAG 
          PL     X5,POSCLN1  BR, COLON-BLANK FLAG NOT SET 
          SX6    X6-1        ADJUST THE STRING LENGTH 
 POSCLN1  SB7    B0 
          SA6    A7+B1       STRING 1 LENGTH
  
          SX7    X4 
          PL     X4,POS2
          SB7    B4+
 POS2     SX7    X7+B7       FWA OF STRING 2
          AX4    18+18
          SA7    A6+B1
          SX6    X4 
          LX4    18+18+3     CHECK FOR COLON-BLANK FLAG 
          PL     X4,POSCLN2  BR, COLON-BLANK FLAG NOT SET 
          SX6    X6-1        ADJUST THE STRING LENGTH 
 POSCLN2  SA6    A7+B1       LENGTH OF STRING 2 
          SA1    POSF        FTN/SYMPL CALL BLOCK 
  
          RJ     =XBASPOS    GO DO IT 
          SA5    POSE 
          RJ     =XBASRBR=         RESTORE REGISTERS
          PX5    X5 
          NX5    X5 
          JP     BASTPOS           RETURN 
          SPACE  4
 POSA     BSS    1           STRING 1 FWA 
 POSB     BSS    1           STRING 1 LENGTH
 POSC     BSS    1           STRING 2 FWA 
 POSD     BSS    1           STRING 2 LENGTH
 POSE     BSS    1           POSITION 
 POSF     CON    POSA        CALL BLOCK 
          CON    POSB 
          CON    POSC 
          CON    POSD 
          CON    POSE 
          CON    0
          SPACE  4
 BASXPOS  BSS    0                 LWA+1 OF PROCESSOR 
          END 
