OPEN


 [Features] To establish input/output, and to open file.

 [Format] OPEN "filename" FOR "mode" AS [#]n

 [Explanation]
    The location without access permission can't be accessed.
    mode (capital ok)
    -sequential file
      'input'  text input mode.
      'output'  text output mode.
      'append'  text output append mode.
    -random file
      'read'  1byte read mode.
      'write'  1byte write mode.
    #n
    A file number is assigned.
    Each mode can open only one. 
    c.f. [About text data delimiter of file input/output]
         item: FileAccess below.

 [e.g.] The example of file access.
   [smp_file.bas]
    100 open "file1.txt" for output as #1
    110 print #1,"File access."
    120 close #1
    130 open "file1.txt" for input as #2
    140 line input #2,a$
    150 close #2
    160 print a$
    170 open "file2.dat" for write as #1
    180 put #1,,65
    190 close #1
    200 open "file2.dat" for read as #2
    210 get #2,,d
    220 close #2
    230 print d



  CLOSE


 [Features] To close the file.

 [Format] CLOSE [[#]n][,[#]n]...

 [Explanation]
    #n: FileNumber
    When there is no specification of a number, all the files are closed.

 [e.g.]



  PRINT#


 [Features] To write data to a sequential text file.

 [Format] PRINT #n,data[|,or;|data]...

 [Explanation]
    #n: FileNumber Type:"output"or"append"
    Data is a numerical value type and a character type.
    It specify the file number opened by 'open' command.
    When the sentence end is ';', line feed code isn't outputted.
    c.f. [About text data delimiter of file input/output]
         item: FileAccess below.

 [e.g.]



  PRINT# USING


 [Features] Data is outputted to the file according to "Format-control-string".

 [Format] PRINT #n,USING "Format-control-string"; data[|,or;|data]...

 [Explanation]
    #n: FileNumber  Type:"output"or"append"
    Refer to the 'PRINT USING' command
     for the specification method of "Format-control-string".
    When the sentence end is ';', line feed code isn't outputted.

 [e.g.]
    print #1,using "P=###.## @"; 12.345,"Board"



  WRITE#


 [Features] To write data to a sequential text file.

 [Format] WRITE #n,data[|,or;|data]...

 [Explanation]
    #n: FileNumber  Type:"output"or"append"
    There is no useless blank output by pause.
    A character string is enclosed and outputted by double quotes"".
    c.f. [About text data delimiter of file input/output]
         item: FileAccess below.

 [e.g.]



  INPUT#


 [Features] To read data from a sequential text file and substitute them to 'variable'.

 [Format] INPUT #n,variable[$]

 [Explanation]
    #n: FileNumber  Type:"input"
    The type of a variable and data needs to correspond.
    c.f. [About text data delimiter of file input/output]
         item: FileAccess below.

 [e.g.]



  LINE INPUT#


 [Features] To read data from a sequential text file and substitute them to 'CharValue$'.

 [Format] LINE INPUT #n,CharValue$

 [Explanation]
    #n: FileNumber  Type:"input"
    It treat a comma as a series of letters not a pause.
    c.f. [About text data delimiter of file input/output]
         item: FileAccess below.

 [e.g.]



  GET


 [Features] To get 1byte data from a random file and substitute them to 'variable'.

 [Format] GET #n,[pos],variable

 [Explanation]
    #n: FileNumber  Type:"read"
    pos: The position of a random file.

 [e.g.]



  PUT


 [Features] To write 1byte data to a random file.

 [Format] PUT #n,[pos],data

 [Explanation]
    #n: FileNumber Type:"write"
    pos: The position of a random file.

 [e.g.]



  EOF


 [Features] If the file specified by 'n' have reached the end of the file, return true(-1).

 [Format] EOF(n)

 [Explanation]
    n : File number.

 [e.g.]




  About text data delimiter of file input/output.

  print#,write#,input#,line-input#: The respective difference and usage.

  Text file output/input are as follows: print#,(line)input#
   print #1,"data1"
   input #2,a$

  To explain the details about delimitation
   when exchanging multiple data in a statement.
  The specification have the same compatibility with the conventional 'Basic'.

  The delimiter of multiple data
  In case of numerical data:
  Comma[,] Enter[ret] and Space[ ] are identified as a delimiter.
  In case of string data:
  Comma[,] Enter[ret] and Double quotation["](back part)
   are identified as a delimiter.
  When a comma follows, it becomes up to the location of a comma.

  The string enclosed by Double quotation, and not one,
   both are available for string data.
  If read the enclosed data, in case of 'input#',
   it become string data excluding double quotation at both edges.
  Ex. [source data] "ab" -> ab [data after acquisition]

  In 'line input#',
  Double quotation, Comma, and Space become also string data as it is.

  Comparison of writing with 'write#'.

  write #1,"ab","cd","ef"
  print #1,"ab","cd","ef"

  In this write-in example, the results read with 'input#'
  In case of 'write#':
  ab
  cd
  ef
  It become 3 data divided by the comma.
  (internal write state: "ab","cd","ef")

  In case of 'print#':
  Comma is regarded to be format of Tab space as well as 'print' statement,
   ab            cd            ef (internal write state is also same as this)
  It become 1 data to be emptied at extra blank.

  For outputting comma as delimitation in 'print#',
   to write the comma as enclosed in double quotation like ",".
  print #1,"ab"+","+"cd"+","+"ef"
  print #1,"ab,cd,ef"
  print #1,"ab";",";"cd";",";"ef"
  These will be the same result - 3 data.

  And when outputting meaningful space at both edges in 'print#',
   to enclose by char-code 'chr$(34)' which mean a double quotation["].
  print #1,chr$(34)+" ab "+chr$(34)
  " ab ": [output result] (["] is excluded when reading)
  print #1," ab "
  ab: [output result]

  These are the cases which wrote data by 'print#',
   when describing by text editor and giving data, like as follows.
  Contents of text file:
  abc (same as: [print #1,"abc"])
  " abc " (same as: [print #1,chr$(34)+" abc "+chr$(34)] or [write #1 " abc "])

  When outputting Comma and Semicolon as a character, enclose it with 'chr$(34)'.
  For example
  print #1," ab , cd "
  This is output as 2 data of [ab, cd] as mentioned above,
  print #1,chr$(34)+" ab , cd "+chr$(34)  -(1)
  In this case, it is treated as 1 string data including the comma as " ab , cd ".

  Note:
  When using binding formula of including the description of 'chr$(34)' like as -(1),
   please execute in c-mode.
  By i-mode, may be unable to distinguish delimitation properly due to multiple["].

  * in 'write#' statement, even if having not to write 'chr$(34)',
   the string are automatically enclosed by "" and output.

  In order to do simple string input/output,
  output: by 'print#', data output one by one.
  input : input with 'line-input#' (divided by comma then 'input#')
  It is general usage.

  And this Basic, regarding the text data to be read,
   it can use not only [made with 'print#'] but [made with Text-editor],
   and [the one acquired by 'inet$()' and saved],
   so, please watch out about the above, and make reading part.

  In reading the text file,
  when linefeed are continuing at the end of file,
  it is deemed that data of 'null+linefeed' is left in 'eof()'.
  Please watch out for this point.