Download text file
#if 1
#COMPILE EXE
#DIM ALL

DECLARE FUNCTION fParseInsert ALIAS "fParseInsert" (BYVAL M$,BYVAL D$,BYVAL P&,BYVAL N$) AS STRING
'
'------------------------------------------------------------------------------
'
FUNCTION PBmain ()

  DIM Del    AS LOCAL STRING
  DIM Disp   AS LOCAL STRING
  DIM NewStr AS LOCAL STRING
  DIM P      AS LOCAL LONG
  DIM Pass   AS LOCAL LONG
  DIM Txt    AS LOCAL STRING

  MSGBOX fParseInsert("",".",7,"Hello")
  FOR Pass = 1 TO 4 STEP 3
    Txt = READ$(Pass)
    Del = READ$(Pass+1)
    NewStr = READ$(Pass+2)
    Disp = Disp & Txt & $CRLF & $DQ & Del & $DQ & $CRLF & $DQ & NewStr & $DQ & $CRLF
    FOR P = 1 TO 7
      Disp = Disp & $CRLF & $DQ & fParseInsert(Txt,Del,P,NewStr) & $DQ
    NEXT
    IF Pass = 1 THEN
      Disp = Disp & $CRLF & $CRLF & STRING$(40,"-") & $CRLF & $CRLF
    END IF
  NEXT

  #IF %DEF(%PB_WIN32)
    MSGBOX Disp, 0, "fParseInsert()"
  #ELSE
    COLOR 0, 15
    PRINT " fParseInsert() " : PRINT
    COLOR 15, 0
    FOR P = 1 TO PARSECOUNT(Disp,$CRLF)
      PRINT PARSE$(Disp,$CRLF,P)
    NEXT
    MOUSE 7, UP
    MOUSE ON
    INPUT FLUSH
    WAITKEY$
  #ENDIF

  DATA "ONE| |TWO| |THREE| |FOUR| |FIVE", "| |", "x....x"
  DATA "ONE.TWO.THREE.FOUR.FIVE", ".", ""

END FUNCTION
#endif
'
'------------------------------------------------------------------------------
'
FUNCTION fParseInsert ALIAS "fParseInsert" (BYVAL MainStr AS STRING, _
                                            BYVAL Del     AS STRING, _
                                            BYVAL Pos     AS LONG  , _
                                            BYVAL NewStr  AS STRING  ) EXPORT AS STRING

  DIM Dl AS LOCAL LONG
  DIM P  AS LOCAL LONG
  DIM P1 AS LOCAL LONG
  DIM P2 AS LOCAL LONG

  Dl = LEN(Del)
  IF Dl = 0 THEN GOTO ExitFunction

  P1 = 1
  DO
    INCR P
    P2 = INSTR(P1,MainStr,Del)
    IF P = Pos THEN
        DECR P1
        MainStr = LEFT$(MainStr,P1) & NewStr & MID$(MainStr,P2)
        EXIT LOOP
      ELSEif P2 = 0 THEN
        P = Pos - P
        MainStr = MainStr & REPEAT$(P,Del) & NewStr
        EXIT LOOP
    END IF
    P1 = P2 + Dl
  LOOP

  ExitFunction:
    FUNCTION = MainStr

END FUNCTION