home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / jËzyki_programowania / amigae / e_v3.2a / src / guide / csv-estr.e < prev    next >
Text File  |  1977-12-31  |  2KB  |  51 lines

  1. /* A suitably large size for the record buffer */
  2. CONST BUFFERSIZE=512
  3.  
  4. PROC main()
  5.   DEF filehandle, status, buffer[BUFFERSIZE]:STRING, filename
  6.   filename:='datafile'
  7.   IF filehandle:=Open(filename, OLDFILE)
  8.     REPEAT
  9.       status:=ReadStr(filehandle, buffer)
  10.       /* This is the way to check ReadStr() actually read something */
  11.       IF buffer[] OR (status<>-1) THEN process_record(buffer)
  12.     UNTIL status=-1
  13.     /* If Open() succeeded then we must Close() the file */
  14.     Close(filehandle)
  15.   ELSE
  16.     WriteF('Error: Failed to open "\s"\n', filename)
  17.   ENDIF
  18. ENDPROC
  19.  
  20. PROC process_record(line)
  21.   DEF i=1, start=0, end, len, s
  22.   /* Show the whole line being processed */
  23.   WriteF('Processing record: "\s"\n', line)
  24.   REPEAT
  25.     /* Find the index of a comma after the start index */
  26.     end:=InStr(line, ',', start)
  27.     /* Length is end index minus start index */
  28.     len:=(IF end<>-1 THEN end ELSE EstrLen(line))-start
  29.     IF len>0
  30.       /* Allocate an E-string of the correct length */
  31.       IF s:=String(len)
  32.         /* Copy the portion of the line to the E-string s */
  33.         MidStr(s, line, start, len)
  34.         /* At this point we could do something useful... */
  35.         WriteF('\t\d) "\s"\n', i, s)
  36.         /* We've finished with the E-string so deallocate it */
  37.         DisposeLink(s)
  38.       ELSE
  39.         /* It's a non-fatal error if the String() call fails */
  40.         WriteF('\t\d) Memory exhausted! (len=\d)\n', len)
  41.       ENDIF
  42.     ELSE
  43.       WriteF('\t\d) Empty Field\n', i)
  44.     ENDIF
  45.     /* The new start is after the end we found */
  46.     start:=end+1
  47.     INC i
  48.   /* Once a comma is not found we've finished */
  49.   UNTIL end=-1
  50. ENDPROC
  51.