Wrseq

Wrseq writes string data on a binary file opened by Openo or Openio.

Syntax

   Wrseq  EXPR_LIST
   Wrseq  EXPR_LIST,
   Wrseq  EXPR_LIST Using [CLASS]
   Wrseq  EXPR_LIST, Using [CLASS]
  • EXPR_LIST is a list of expressions separated by commas.
  • [CLASS] is the abbreviation that is used to open the file.

Examples

  # First example: let's write strings in a file
  # The lines are written in ascii mode with CR+LF as separators
  # We stop at the first empty line
  Local Char TEXT_LINES(100)(1..1000)
  Gosub FILL_TEXT
  Openo "mytext",0                Using [TXT]
  Iomode adxium 50                Using [TXT] : # ascii
  Iomode adxirs chr$(13)+chr$(10) Using [TXT] : # CRLF
  For I=1 to dim(TEXT_LINES)
    Break TEXT_LINES(I)=""
    Wrseq TEXTLINES(I) Using [TXT]
  Next I
  Openo using [TXT]
  # Second example: let's write a clob in a file (in UTF8)
   adxium=0 : # UTF8
   Wrseq MYBLOB : # The exact size of the blob will be written
  # Third example: let's write the content of a multi-dimensional array of integers in a file
  # These long integer are written as strings representing numeric values
  # Every line contains the list of the element in the last dimension
  Local Integer ARRAY(1..5,1..10,1..5,1..4)
  Call FILL_ARRAY(ARRAY)
  Openo "dumpfile",0
  # Let's perform loops
  For I=1 to dim(ARRAY,1)
    For J=1 to dim(ARRAY,2)
      For K=1 to dim(ARRAY,3)
        For L=1 to dim(ARRAY,4)
          Wrseq ARRAY(I,J,K,L),
        Next L
        Wrseq
      Next K
    Next J
  Next I
  Seek 0
  # Now everything is flushed

Description

Wrseq allows creating text files with a format that can be ASCII or UTF8, depending on how adxium is set. UCS2 texts are not supported by Wrseq.

Wrseq writes every expression in a list separated by commas or semicolons. The expressions are written as a text representation of the data content (exactly like the num$ function).

When several expressions are given in a list, the separator set by adxifs is written between the elements. When the list ends with a comma or a semicolon, the same field separator is used.

When the list given by Wrseq does not end with a comma or a semicolon, a record separator defined by adxirs is written.

Both adxifs and adxirs can be set to an empty value. They are directly assigned if the file is opened without abbreviation; otherwise, they must be assigned with the Iomode instruction.

Comments

The function adxseek(1) or adxseek("CLASS"), if the file is opened with a class name, gives the position (in bytes, from the beginning of the file) where the next write operation is done. The return value is incremented every time a Wrseq is performed. Its value is -1 if no file is opened for writing.

As the write operation is buffered, the file can be completely updated only when the file is closed by [(Openo]] or Openio. It is therefore possible to flush the writing operation by using Seek 0 or Seek 0 Using [CLASS].

Associated errors

Error code Description
10 INTEGER_EXPR is not an integer expression.
24 Error during write execution.
44 No more space on device.
55 Too many unspecified dimension given on variables written.
65 File too large (writing limits exceeded).

See also

Getseq, Rdseq, Putseq, adxseek, Seek, Openi, Openo, Openio.