home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l180 / 2.ddi / PARSE.BAS < prev    next >
Encoding:
BASIC Source File  |  1989-02-07  |  4.5 KB  |  141 lines

  1.   ' ************************************************
  2.   ' **  Name:          PARSE                      **
  3.   ' **  Type:          Toolbox                    **
  4.   ' **  Module:        PARSE.BAS                  **
  5.   ' **  Language:      Microsoft QuickBASIC 4.00  **
  6.   ' ************************************************
  7.   '
  8.   ' USAGE:           No command line parameters
  9.   ' .MAK FILE:       (none)
  10.   ' PARAMETERS:      (none)
  11.   ' VARIABLES:       a$()       Array of words parsed from x$
  12.   '                  x$         String to be parsed
  13.   '                  sep$       Characters defining word separation
  14.   '                  word$      Each word from the string
  15.   '                  n%         Index to each word in array
  16.   
  17.     DECLARE SUB ParseLine (x$, sep$, a$())
  18.     DECLARE SUB ParseWord (a$, sep$, word$)
  19.   
  20.   ' Initialization
  21.     CLS
  22.     DIM a$(1 TO 99)
  23.   
  24.   ' Demonstrate ParseWord
  25.     x$ = "This is a test line. A,B,C, etc."
  26.     sep$ = " ,"
  27.     PRINT "x$:", x$
  28.     PRINT "sep$:", CHR$(34); sep$; CHR$(34)
  29.     ParseWord x$, sep$, word$
  30.     PRINT "ParseWord x$, sep$, word$"
  31.     PRINT "x$:", x$
  32.     PRINT "word$:", word$
  33.   
  34.   ' Demonstrate ParseLine
  35.     PRINT
  36.     x$ = "This is a test line. A,B,C, etc."
  37.     sep$ = " ,"
  38.     PRINT "x$:", x$
  39.     PRINT "sep$:", CHR$(34); sep$; CHR$(34)
  40.     ParseLine x$, sep$, a$()
  41.     PRINT "ParseLine x$, sep$, a$()"
  42.     PRINT "a$()..."
  43.     DO
  44.         n% = n% + 1
  45.         PRINT n%, a$(n%)
  46.     LOOP UNTIL a$(n% + 1) = ""
  47.   
  48.   ' All done
  49.     END
  50.   
  51.  
  52.   ' ************************************************
  53.   ' **  Name:          ParseLine                  **
  54.   ' **  Type:          Subprogram                 **
  55.   ' **  Module:        PARSE.BAS                  **
  56.   ' **  Language:      Microsoft QuickBASIC 4.00  **
  57.   ' ************************************************
  58.   '
  59.   ' Breaks a string into an array of words, as defined
  60.   ' by any characters listed in sep$.
  61.   '
  62.   ' EXAMPLE OF USE:  ParseLine x$, sep$, a$()
  63.   ' PARAMETERS:      x$      String to be parsed
  64.   '                  sep$    List of characters defined as word separators
  65.   '                  a$()    Returned array of words
  66.   ' VARIABLES:       t$      Temporary work string
  67.   '                  i%      Index to array entries
  68.   ' MODULE LEVEL
  69.   '   DECLARATIONS:  DECLARE SUB ParseLine (x$, sep$, a$())
  70.   '
  71.     SUB ParseLine (x$, sep$, a$()) STATIC
  72.         t$ = x$
  73.         FOR i% = LBOUND(a$) TO UBOUND(a$)
  74.             ParseWord t$, sep$, a$(i%)
  75.             IF a$(i%) = "" THEN
  76.                 EXIT FOR
  77.             END IF
  78.         NEXT i%
  79.         t$ = ""
  80.     END SUB
  81.  
  82.   ' ************************************************
  83.   ' **  Name:          ParseWord                  **
  84.   ' **  Type:          Subprogram                 **
  85.   ' **  Module:        PARSE.BAS                  **
  86.   ' **  Language:      Microsoft QuickBASIC 4.00  **
  87.   ' ************************************************
  88.   '
  89.   ' Breaks off the first word in a$, as delimited by
  90.   ' any characters listed in sep$.
  91.   '
  92.   ' EXAMPLE OF USE:  ParseWord a$, sep$, word$
  93.   ' PARAMETERS:      a$         String to be parsed
  94.   '                  sep$       List of characters defined as word separators
  95.   '                  word$      Returned first word parsed from a$
  96.   ' VARIABLES:       lena%      Length of a$
  97.   '                  i%         Looping index
  98.   '                  j%         Looping index
  99.   '                  k%         Looping index
  100.   ' MODULE LEVEL
  101.   '   DECLARATIONS:  DECLARE SUB ParseWord (a$, sep$, word$)
  102.   '
  103.     SUB ParseWord (a$, sep$, word$) STATIC
  104.         word$ = ""
  105.         lena% = LEN(a$)
  106.         IF a$ = "" THEN
  107.             EXIT SUB
  108.         END IF
  109.         FOR i% = 1 TO lena%
  110.             IF INSTR(sep$, MID$(a$, i%, 1)) = 0 THEN
  111.                 EXIT FOR
  112.             END IF
  113.         NEXT i%
  114.         FOR j% = i% TO lena%
  115.             IF INSTR(sep$, MID$(a$, j%, 1)) THEN
  116.                 EXIT FOR
  117.             END IF
  118.         NEXT j%
  119.         FOR k% = j% TO lena%
  120.             IF INSTR(sep$, MID$(a$, k%, 1)) = 0 THEN
  121.                 EXIT FOR
  122.             END IF
  123.         NEXT k%
  124.         IF i% > lena% THEN
  125.             a$ = ""
  126.             EXIT SUB
  127.         END IF
  128.         IF j% > lena% THEN
  129.             word$ = MID$(a$, i%)
  130.             a$ = ""
  131.             EXIT SUB
  132.         END IF
  133.         word$ = MID$(a$, i%, j% - i%)
  134.         IF k% > lena% THEN
  135.             a$ = ""
  136.         ELSE
  137.             a$ = MID$(a$, k%)
  138.         END IF
  139.     END SUB
  140.  
  141.